Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElina Pulke <elina.pulke@zabbix.com>2022-11-09 15:12:58 +0300
committerElina Pulke <elina.pulke@zabbix.com>2022-11-09 15:18:33 +0300
commit3d1d62c351685c93715707a13db37643e2153f27 (patch)
tree4a8cbee2e4015c621c46dbeeb5443b262c0b8297
parentbbd68b4e7311f3007d450760b969046d7fc7b111 (diff)
parent689a5591eb20a54bf5c1114a9147bc8e6451d43c (diff)
..F....... [ZBX-20320] updated to master; resolved conflicts in CWidgetHelper.php, screen.scss
-rw-r--r--.gitignore6
-rw-r--r--ChangeLog72
-rw-r--r--ChangeLog.d/bugfix/ZBX-217861
-rw-r--r--ChangeLog.d/bugfix/ZBX-218231
-rw-r--r--ChangeLog.d/bugfix/ZBX-218691
-rw-r--r--ChangeLog.d/feature/ZBX-204781
-rw-r--r--ChangeLog.d/feature/ZBXNEXT-79031
-rw-r--r--ChangeLog.d/feature/ZBXNEXT-79491
-rw-r--r--build/mingw/Makefile8
-rw-r--r--build/win32/project/Makefile_agent4
-rw-r--r--build/win32/project/Makefile_get2
-rw-r--r--build/win32/project/Makefile_sender2
-rw-r--r--build/win32/project/Makefile_sender_dll2
-rw-r--r--build/win32/project/Makefile_targets.inc3
-rw-r--r--configure.ac7
-rw-r--r--create/src/dashboards.tmpl3256
-rw-r--r--create/src/data.tmpl27
-rw-r--r--create/src/schema.tmpl4
-rw-r--r--create/src/templates.tmpl8928
-rw-r--r--include/audit/zbxaudit_item.h2
-rw-r--r--include/cfg.h4
-rw-r--r--include/log.h17
-rw-r--r--include/preproc.h2
-rw-r--r--include/proxy.h79
-rw-r--r--include/version.h4
-rw-r--r--include/zbxcacheconfig.h (renamed from include/dbcache.h)169
-rw-r--r--include/zbxcachehistory.h136
-rw-r--r--include/zbxcachevalue.h (renamed from src/libs/zbxdbcache/valuecache.h)6
-rw-r--r--include/zbxcommon.h1
-rw-r--r--include/zbxdbhigh.h107
-rw-r--r--include/zbxdbwrap.h123
-rw-r--r--include/zbxhistory.h14
-rw-r--r--include/zbxjson.h46
-rw-r--r--include/zbxnix.h3
-rw-r--r--include/zbxserver.h2
-rw-r--r--include/zbxtrends.h2
-rw-r--r--include/zbxwin32.h (renamed from include/perfmon.h)37
-rw-r--r--include/zbxwinservice.h7
-rw-r--r--sass/stylesheets/sass/components/_columns-wrapper.scss79
-rw-r--r--sass/stylesheets/sass/components/_section.scss72
-rw-r--r--sass/stylesheets/sass/components/dashboard/_dashboard.scss4
-rw-r--r--sass/stylesheets/sass/components/dashboard/_widget-clock.scss55
-rw-r--r--sass/stylesheets/sass/components/dashboard/_widget-inaccessible.scss8
-rw-r--r--sass/stylesheets/sass/components/dashboard/_widget-item.scss112
-rw-r--r--sass/stylesheets/sass/components/dashboard/_widget-svggraph.scss187
-rw-r--r--sass/stylesheets/sass/hc-dark.scss40
-rw-r--r--sass/stylesheets/sass/hc-light.scss35
-rw-r--r--sass/stylesheets/sass/layout/_form-grid.scss6
-rw-r--r--sass/stylesheets/sass/screen.scss172
-rw-r--r--sass/stylesheets/sass/utils/_sortable.scss8
-rw-r--r--src/go/pkg/version/version.go4
-rw-r--r--src/go/pkg/zbxlib/globals_windows.go8
-rw-r--r--src/go/plugins/vfs/fs/fs_nix.go34
-rw-r--r--src/libs/Makefile.am18
-rw-r--r--src/libs/zbxaudit/audit.c2
-rw-r--r--src/libs/zbxcacheconfig/Makefile.am (renamed from src/libs/zbxdbcache/Makefile.am)10
-rw-r--r--src/libs/zbxcacheconfig/dbconfig.c (renamed from src/libs/zbxdbcache/dbconfig.c)10
-rw-r--r--src/libs/zbxcacheconfig/dbconfig.h (renamed from src/libs/zbxdbcache/dbconfig.h)7
-rw-r--r--src/libs/zbxcacheconfig/dbconfig_dump.c (renamed from src/libs/zbxdbcache/dbconfig_dump.c)3
-rw-r--r--src/libs/zbxcacheconfig/dbconfig_maintenance.c (renamed from src/libs/zbxdbcache/dbconfig_maintenance.c)3
-rw-r--r--src/libs/zbxcacheconfig/dbsync.c (renamed from src/libs/zbxdbcache/dbsync.c)5
-rw-r--r--src/libs/zbxcacheconfig/dbsync.h (renamed from src/libs/zbxdbcache/dbsync.h)1
-rw-r--r--src/libs/zbxcacheconfig/lld_macro.c (renamed from src/libs/zbxdbhigh/lld_macro.c)4
-rw-r--r--src/libs/zbxcacheconfig/user_macro.c (renamed from src/libs/zbxdbcache/user_macro.c)0
-rw-r--r--src/libs/zbxcacheconfig/user_macro.h (renamed from src/libs/zbxdbcache/user_macro.h)1
-rw-r--r--src/libs/zbxcachehistory/Makefile.am11
-rw-r--r--src/libs/zbxcachehistory/dbcache.c (renamed from src/libs/zbxdbcache/dbcache.c)167
-rw-r--r--src/libs/zbxcachevalue/Makefile.am10
-rw-r--r--src/libs/zbxcachevalue/valuecache.c (renamed from src/libs/zbxdbcache/valuecache.c)3
-rw-r--r--src/libs/zbxconf/cfg.c4
-rw-r--r--src/libs/zbxdbhigh/Makefile.am11
-rw-r--r--src/libs/zbxdbhigh/db.c94
-rw-r--r--src/libs/zbxdbhigh/proxy.c3321
-rw-r--r--src/libs/zbxdbhigh/trigger.c892
-rw-r--r--src/libs/zbxdbupgrade/dbupgrade_5010.c3
-rw-r--r--src/libs/zbxdbupgrade/dbupgrade_6030.c88
-rw-r--r--src/libs/zbxdbwrap/Makefile.am21
-rw-r--r--src/libs/zbxdbwrap/event.c (renamed from src/libs/zbxdbhigh/event.c)2
-rw-r--r--src/libs/zbxdbwrap/graph_linking.c (renamed from src/libs/zbxdbhigh/graph_linking.c)0
-rw-r--r--src/libs/zbxdbwrap/graph_linking.h (renamed from src/libs/zbxdbhigh/graph_linking.h)0
-rw-r--r--src/libs/zbxdbwrap/host.c (renamed from src/libs/zbxdbhigh/host.c)9
-rw-r--r--src/libs/zbxdbwrap/proxy.c3334
-rw-r--r--src/libs/zbxdbwrap/template.h (renamed from src/libs/zbxdbhigh/template.h)0
-rw-r--r--src/libs/zbxdbwrap/template_item.c (renamed from src/libs/zbxdbhigh/template_item.c)2
-rw-r--r--src/libs/zbxdbwrap/trigger.c754
-rw-r--r--src/libs/zbxdbwrap/trigger_dep_linking.c (renamed from src/libs/zbxdbhigh/trigger_dep_linking.c)2
-rw-r--r--src/libs/zbxdbwrap/trigger_dep_linking.h (renamed from src/libs/zbxdbhigh/trigger_dep_linking.h)0
-rw-r--r--src/libs/zbxdbwrap/trigger_linking.c (renamed from src/libs/zbxdbhigh/trigger_linking.c)2
-rw-r--r--src/libs/zbxdbwrap/trigger_linking.h (renamed from src/libs/zbxdbhigh/trigger_linking.h)0
-rw-r--r--src/libs/zbxdiag/diag.c2
-rw-r--r--src/libs/zbxhistory/history_elastic.c3
-rw-r--r--src/libs/zbxhistory/history_sql.c1
-rw-r--r--src/libs/zbxjson/Makefile.am4
-rw-r--r--src/libs/zbxjson/json.c14
-rw-r--r--src/libs/zbxjson/json.h2
-rw-r--r--src/libs/zbxjson/json_parser.c127
-rw-r--r--src/libs/zbxjson/json_parser.h8
-rw-r--r--src/libs/zbxjson/jsonobj.c366
-rw-r--r--src/libs/zbxjson/jsonobj.h56
-rw-r--r--src/libs/zbxjson/jsonpath.c1297
-rw-r--r--src/libs/zbxjson/jsonpath.h21
-rw-r--r--src/libs/zbxlog/log.c36
-rw-r--r--src/libs/zbxnix/daemon.c7
-rw-r--r--src/libs/zbxnum/num.c2
-rw-r--r--src/libs/zbxserver/Makefile.am2
-rw-r--r--src/libs/zbxserver/calc_checks_eval.c2
-rw-r--r--src/libs/zbxserver/evalfunc.c2
-rw-r--r--src/libs/zbxserver/evalfunc.h2
-rw-r--r--src/libs/zbxserver/expression.c3
-rw-r--r--src/libs/zbxserver/get_host_from_event.h2
-rw-r--r--src/libs/zbxserver/zabbix_stats.c2
-rw-r--r--src/libs/zbxsysinfo/aix/inodes.c4
-rw-r--r--src/libs/zbxsysinfo/common/dir.c4
-rw-r--r--src/libs/zbxsysinfo/common/system.c6
-rw-r--r--src/libs/zbxsysinfo/freebsd/inodes.c4
-rw-r--r--src/libs/zbxsysinfo/hpux/inodes.c4
-rw-r--r--src/libs/zbxsysinfo/linux/diskio.c2
-rw-r--r--src/libs/zbxsysinfo/linux/hardware.c7
-rw-r--r--src/libs/zbxsysinfo/linux/inodes.c5
-rw-r--r--src/libs/zbxsysinfo/linux/proc.c5
-rw-r--r--src/libs/zbxsysinfo/netbsd/inodes.c4
-rw-r--r--src/libs/zbxsysinfo/openbsd/inodes.c4
-rw-r--r--src/libs/zbxsysinfo/osf/inodes.c18
-rw-r--r--src/libs/zbxsysinfo/osx/inodes.c4
-rw-r--r--src/libs/zbxsysinfo/solaris/inodes.c4
-rw-r--r--src/libs/zbxsysinfo/sysinfo.h8
-rw-r--r--src/libs/zbxsysinfo/win32/pdhmon.c2
-rw-r--r--src/libs/zbxsysinfo/win32/proc.c5
-rw-r--r--src/libs/zbxsysinfo/win32/services.c27
-rw-r--r--src/libs/zbxsysinfo/win32/system.c2
-rw-r--r--src/libs/zbxsysinfo/win32/uptime.c6
-rw-r--r--src/libs/zbxsysinfo/win32/win32.c8
-rw-r--r--src/libs/zbxwin32/disk.c4
-rw-r--r--src/libs/zbxwin32/fatal.c65
-rw-r--r--src/libs/zbxwin32/perfmon.c29
-rw-r--r--src/libs/zbxwinservice/service.c (renamed from src/libs/zbxwin32/service.c)8
-rw-r--r--src/zabbix_agent/Makefile.am2
-rw-r--r--src/zabbix_agent/cpustat.c12
-rw-r--r--src/zabbix_agent/cpustat.h2
-rw-r--r--src/zabbix_agent/perfstat.c10
-rw-r--r--src/zabbix_agent/perfstat.h2
-rw-r--r--src/zabbix_agent/zabbix_agentd.c40
-rw-r--r--src/zabbix_agent/zbxconf.c2
-rw-r--r--src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java4
-rw-r--r--src/zabbix_js/zabbix_js.c13
-rw-r--r--src/zabbix_proxy/Makefile.am5
-rw-r--r--src/zabbix_proxy/datasender/datasender.c4
-rw-r--r--src/zabbix_proxy/housekeeper/housekeeper.c2
-rw-r--r--src/zabbix_proxy/proxy.c26
-rw-r--r--src/zabbix_proxy/proxyconfig/proxyconfig.c2
-rw-r--r--src/zabbix_proxy/proxyconfigwrite/proxyconfig_write.c2
-rw-r--r--src/zabbix_proxy/rtc/rtc_proxy.c2
-rw-r--r--src/zabbix_proxy/stats/zabbix_stats_proxy.c2
-rw-r--r--src/zabbix_proxy/taskmanager/taskmanager.c4
-rw-r--r--src/zabbix_sender/zabbix_sender.c3
-rw-r--r--src/zabbix_server/Makefile.am14
-rw-r--r--src/zabbix_server/actions.c1
-rw-r--r--src/zabbix_server/alerter/alert_syncer.c2
-rw-r--r--src/zabbix_server/alerter/alerter.c2
-rw-r--r--src/zabbix_server/dbconfig/Makefile.am5
-rw-r--r--src/zabbix_server/dbconfig/dbconfig.c4
-rw-r--r--src/zabbix_server/dbsyncer/dbsyncer.c2
-rw-r--r--src/zabbix_server/diag/diag_server.c2
-rw-r--r--src/zabbix_server/escalator/escalator.c1
-rw-r--r--src/zabbix_server/events.c1
-rw-r--r--src/zabbix_server/housekeeper/history_compress.h2
-rw-r--r--src/zabbix_server/ipmi/checks_ipmi.h2
-rw-r--r--src/zabbix_server/ipmi/ipmi.h2
-rw-r--r--src/zabbix_server/lld/lld.c2
-rw-r--r--src/zabbix_server/lld/lld.h2
-rw-r--r--src/zabbix_server/lld/lld_graph.c1
-rw-r--r--src/zabbix_server/lld/lld_host.c1
-rw-r--r--src/zabbix_server/lld/lld_item.c1
-rw-r--r--src/zabbix_server/lld/lld_trigger.c1
-rw-r--r--src/zabbix_server/lld/lld_worker.c3
-rw-r--r--src/zabbix_server/lld/lld_worker.h4
-rw-r--r--src/zabbix_server/operations.c1
-rw-r--r--src/zabbix_server/operations.h2
-rw-r--r--src/zabbix_server/poller/Makefile.am9
-rw-r--r--src/zabbix_server/poller/checks_agent.h2
-rw-r--r--src/zabbix_server/poller/checks_calculated.h2
-rw-r--r--src/zabbix_server/poller/checks_db.h2
-rw-r--r--src/zabbix_server/poller/checks_external.h2
-rw-r--r--src/zabbix_server/poller/checks_http.c2
-rw-r--r--src/zabbix_server/poller/checks_http.h2
-rw-r--r--src/zabbix_server/poller/checks_internal.h2
-rw-r--r--src/zabbix_server/poller/checks_internal_proxy.c2
-rw-r--r--src/zabbix_server/poller/checks_internal_server.c4
-rw-r--r--src/zabbix_server/poller/checks_java.h2
-rw-r--r--src/zabbix_server/poller/checks_script.h2
-rw-r--r--src/zabbix_server/poller/checks_simple.h2
-rw-r--r--src/zabbix_server/poller/checks_simple_vmware.c4
-rw-r--r--src/zabbix_server/poller/checks_simple_vmware.h2
-rw-r--r--src/zabbix_server/poller/checks_snmp.h2
-rw-r--r--src/zabbix_server/poller/checks_ssh.h2
-rw-r--r--src/zabbix_server/poller/checks_telnet.h2
-rw-r--r--src/zabbix_server/poller/poller.h2
-rw-r--r--src/zabbix_server/poller/ssh_run.h2
-rw-r--r--src/zabbix_server/poller/telnet_run.h2
-rw-r--r--src/zabbix_server/postinit.c3
-rw-r--r--src/zabbix_server/preprocessor/item_preproc.c73
-rw-r--r--src/zabbix_server/preprocessor/item_preproc.h2
-rw-r--r--src/zabbix_server/preprocessor/preproc_cache.c5
-rw-r--r--src/zabbix_server/preprocessor/preproc_worker.c82
-rw-r--r--src/zabbix_server/proxyconfigread/proxyconfig_read.c2
-rw-r--r--src/zabbix_server/proxyconfigread/proxyconfig_read.h2
-rw-r--r--src/zabbix_server/proxypoller/proxypoller.c2
-rw-r--r--src/zabbix_server/scripts/scripts.h2
-rw-r--r--src/zabbix_server/server.c32
-rw-r--r--src/zabbix_server/snmptrapper/snmptrapper.c2
-rw-r--r--src/zabbix_server/stats/Makefile.am5
-rw-r--r--src/zabbix_server/stats/zabbix_stats_server.c4
-rw-r--r--src/zabbix_server/taskmanager/taskmanager.c3
-rw-r--r--src/zabbix_server/timer/timer.c2
-rw-r--r--src/zabbix_server/trapper/nodecommand.c1
-rw-r--r--src/zabbix_server/trapper/proxydata.c4
-rw-r--r--src/zabbix_server/trapper/proxydata.h2
-rw-r--r--src/zabbix_server/trapper/trapper.c9
-rw-r--r--src/zabbix_server/trapper/trapper_expressions_evaluate.c2
-rw-r--r--src/zabbix_server/vmware/vmware.c683
-rw-r--r--src/zabbix_server/vmware/vmware.h1
-rw-r--r--src/zabbix_server/vmware/vmware_rest.c4
-rw-r--r--templates/app/kubernetes_http/kubernetes_kubelet_http/README.md12
-rw-r--r--templates/app/kubernetes_http/kubernetes_kubelet_http/template_kubernetes_kubelet.yaml10
-rw-r--r--templates/app/kubernetes_http/kubernetes_state_http/README.md4
-rw-r--r--templates/app/kubernetes_http/kubernetes_state_http/template_kubernetes_state.yaml20
-rw-r--r--templates/app/opnsense_snmp/README.md32
-rw-r--r--templates/app/opnsense_snmp/template_app_opnsense_snmp.yaml128
-rw-r--r--templates/app/pfsense_snmp/README.md34
-rw-r--r--templates/app/pfsense_snmp/template_app_pfsense_snmp.yaml130
-rw-r--r--templates/app/rabbitmq_agent/template_app_rabbitmq_agent.yaml25
-rw-r--r--templates/app/squid_snmp/README.md28
-rw-r--r--templates/app/squid_snmp/template_app_squid_snmp.yaml84
-rw-r--r--templates/app/truenas_snmp/README.md56
-rw-r--r--templates/app/truenas_snmp/template_app_truenas_snmp.yaml198
-rw-r--r--templates/app/wildfly_server_jmx/README.md14
-rw-r--r--templates/app/wildfly_server_jmx/template_app_wildfly_server_jmx.yaml31
-rw-r--r--templates/cloud/azure_http/README.md274
-rw-r--r--templates/cloud/azure_http/template_cloud_azure_http.yaml2066
-rw-r--r--templates/db/gridgain_jmx/README.md14
-rw-r--r--templates/db/gridgain_jmx/template_db_gridgain_jmx.yaml14
-rw-r--r--templates/module/brocade_snmp/README.md10
-rw-r--r--templates/module/brocade_snmp/template_module_brocade_snmp.yaml14
-rw-r--r--templates/module/cisco_snmp/README.md64
-rw-r--r--templates/module/cisco_snmp/template_module_cisco_snmp.yaml164
-rw-r--r--templates/module/ether_like_snmp/README.md8
-rw-r--r--templates/module/ether_like_snmp/template_module_ether_like_snmp.yaml12
-rw-r--r--templates/module/generic_snmp_snmp/README.md18
-rw-r--r--templates/module/generic_snmp_snmp/template_module_generic_snmp_snmp.yaml28
-rw-r--r--templates/module/host_resources_snmp/README.md40
-rw-r--r--templates/module/host_resources_snmp/template_module_host_resources_snmp.yaml468
-rw-r--r--templates/module/interfaces_simple_snmp/README.md14
-rw-r--r--templates/module/interfaces_simple_snmp/template_module_interfaces_simple_snmp.yaml78
-rw-r--r--templates/module/interfaces_snmp/README.md14
-rw-r--r--templates/module/interfaces_snmp/template_module_interfaces_snmp.yaml78
-rw-r--r--templates/module/interfaces_win_snmp/README.md14
-rw-r--r--templates/module/interfaces_win_snmp/template_module_interfaces_win_snmp.yaml78
-rw-r--r--templates/module/linux_snmp_snmp/README.md42
-rw-r--r--templates/module/linux_snmp_snmp/template_module_linux_snmp_snmp.yaml116
-rw-r--r--templates/module/process/README.md77
-rw-r--r--templates/module/process/template_module_process.yaml332
-rw-r--r--templates/net/alcatel_timetra_snmp/README.md48
-rw-r--r--templates/net/alcatel_timetra_snmp/template_net_alcatel_timetra_snmp.yaml138
-rw-r--r--templates/net/arista_snmp/README.md72
-rw-r--r--templates/net/arista_snmp/template_net_arista_snmp.yaml190
-rw-r--r--templates/net/brocade_fc_sw_snmp/README.md52
-rw-r--r--templates/net/brocade_fc_sw_snmp/template_net_brocade_fc_sw_snmp.yaml144
-rw-r--r--templates/net/brocade_foundry_sw_snmp/README.md102
-rw-r--r--templates/net/brocade_foundry_sw_snmp/template_net_brocade_foundry_sw_snmp.yaml286
-rw-r--r--templates/net/cisco/cisco_asav_snmp/README.md24
-rw-r--r--templates/net/cisco/cisco_asav_snmp/template_net_cisco_asav_snmp.yaml57
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_24fs_snmp/README.md62
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_24fs_snmp/template_net_cisco_catalyst_3750_24fs_snmp.yaml140
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_24ps_snmp/README.md62
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_24ps_snmp/template_net_cisco_catalyst_3750_24ps_snmp.yaml140
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_24ts_snmp/README.md62
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_24ts_snmp/template_net_cisco_catalyst_3750_24ts_snmp.yaml140
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_48ps_snmp/README.md62
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_48ps_snmp/template_net_cisco_catalyst_3750_48ps_snmp.yaml140
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_48ts_snmp/README.md62
-rw-r--r--templates/net/cisco/cisco_catalyst_3750_48ts_snmp/template_net_cisco_catalyst_3750_48ts_snmp.yaml140
-rw-r--r--templates/net/cisco/cisco_snmp/README.md144
-rw-r--r--templates/net/cisco/cisco_snmp/template_net_cisco_snmp.yaml2244
-rw-r--r--templates/net/dell_force_s_series_snmp/README.md50
-rw-r--r--templates/net/dell_force_s_series_snmp/template_net_dell_force_s_series_snmp.yaml140
-rw-r--r--templates/net/dlink_des7200_snmp/README.md44
-rw-r--r--templates/net/dlink_des7200_snmp/template_net_dlink_des7200_snmp.yaml130
-rw-r--r--templates/net/dlink_des_snmp/README.md46
-rw-r--r--templates/net/dlink_des_snmp/template_net_dlink_des_snmp.yaml130
-rw-r--r--templates/net/extreme_snmp/README.md48
-rw-r--r--templates/net/extreme_snmp/template_net_extreme_snmp.yaml142
-rw-r--r--templates/net/f5_bigip_snmp/README.md46
-rw-r--r--templates/net/f5_bigip_snmp/template_net_f5_bigip_snmp.yaml186
-rw-r--r--templates/net/generic_snmp/README.md28
-rw-r--r--templates/net/generic_snmp/template_net_generic_snmp.yaml98
-rw-r--r--templates/net/hp_hh3c_snmp/README.md48
-rw-r--r--templates/net/hp_hh3c_snmp/template_net_hp_hh3c_snmp.yaml134
-rw-r--r--templates/net/hp_hpn_snmp/README.md50
-rw-r--r--templates/net/hp_hpn_snmp/template_net_hp_hpn_snmp.yaml142
-rw-r--r--templates/net/huawei_snmp/README.md44
-rw-r--r--templates/net/huawei_snmp/template_net_huawei_snmp.yaml130
-rw-r--r--templates/net/intel_qlogic_infiniband_snmp/README.md42
-rw-r--r--templates/net/intel_qlogic_infiniband_snmp/template_net_intel_qlogic_infiniband_snmp.yaml130
-rw-r--r--templates/net/juniper_snmp/README.md48
-rw-r--r--templates/net/juniper_snmp/template_net_juniper_snmp.yaml134
-rw-r--r--templates/net/mellanox_snmp/README.md46
-rw-r--r--templates/net/mellanox_snmp/template_net_mellanox_snmp.yaml150
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+PC_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/template_net_mikrotik_CCR1009-7G-1C-PC_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/template_net_mikrotik_CCR1016-12G_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/template_net_mikrotik_CCR1016-12S-1S+_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/template_net_mikrotik_CCR1036-12G-4S-EM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/template_net_mikrotik_CCR1036-12G-4S_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/template_net_mikrotik_CCR1036-8G-2S+EM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/template_net_mikrotik_CCR1036-8G-2S+_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/template_net_mikrotik_CCR1072-1G-8S+_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/template_net_mikrotik_CCR2004-16G-2S+_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/template_net_mikrotik_CCR2004-1G-12S+2XS_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/template_net_mikrotik_CRS106-1C-5S_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS109-8G-1S-2HnD-IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/template_net_mikrotik_CRS112-8G-4S-IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/template_net_mikrotik_CRS112-8P-4S-IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS125-24G-1S-2HnD-IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/template_net_mikrotik_CRS212-1G-10S-1S+IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/template_net_mikrotik_CRS305-1G-4S+IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/template_net_mikrotik_CRS309-1G-8S+IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/template_net_mikrotik_CRS312-4C+8XG-RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/template_net_mikrotik_CRS317-1G-16S+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/template_net_mikrotik_CRS326-24G-2S+IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/template_net_mikrotik_CRS326-24G-2S+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/template_net_mikrotik_CRS326-24S+2Q+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/template_net_mikrotik_CRS328-24P-4S+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/template_net_mikrotik_CRS328-4C-20S-4S+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48G-4S+2Q+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48P-4S+2Q+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/template_net_mikrotik_CSS326-24G-2S+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/template_net_mikrotik_CSS610-8G-2S+IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_FiberBox_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_FiberBox_snmp/template_net_mikrotik_FiberBox_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/template_net_mikrotik_PowerBox_Pro_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_PowerBox_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_PowerBox_snmp/template_net_mikrotik_PowerBox_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/template_net_mikrotik_RB1100AHx4_Dude_Edition_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/template_net_mikrotik_RB1100AHx4_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/template_net_mikrotik_RB2011UiAS-IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/template_net_mikrotik_RB2011UiAS-RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/template_net_mikrotik_RB2011iL-IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/template_net_mikrotik_RB2011iL-RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/template_net_mikrotik_RB2011iLS-IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB260GSP_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB260GSP_snmp/template_net_mikrotik_RB260GSP_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB260GS_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB260GS_snmp/template_net_mikrotik_RB260GS_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/template_net_mikrotik_RB3011UiAS-RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/template_net_mikrotik_RB4011iGS+RM_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/template_net_mikrotik_RB5009UG+S+IN_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/template_net_mikrotik_hEX_PoE_lite_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_PoE_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_PoE_snmp/template_net_mikrotik_hEX_PoE_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_S_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_S_snmp/template_net_mikrotik_hEX_S_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_lite_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_lite_snmp/template_net_mikrotik_hEX_lite_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_hEX_snmp/template_net_mikrotik_hEX_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_netPower_15FR_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_netPower_15FR_snmp/template_net_mikrotik_netPower_15FR_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_netPower_16P_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_netPower_16P_snmp/template_net_mikrotik_netPower_16P_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/template_net_mikrotik_netPower_Lite_7R_snmp.yaml178
-rw-r--r--templates/net/mikrotik/mikrotik_snmp/README.md62
-rw-r--r--templates/net/mikrotik/mikrotik_snmp/template_net_mikrotik_snmp.yaml178
-rw-r--r--templates/net/morningstar/morningstar_prostar_mppt_snmp/README.md124
-rw-r--r--templates/net/morningstar/morningstar_prostar_mppt_snmp/template_net_morningstar_prostar_mppt_snmp.yaml156
-rw-r--r--templates/net/morningstar/morningstar_prostar_pwm_snmp/README.md122
-rw-r--r--templates/net/morningstar/morningstar_prostar_pwm_snmp/template_net_morningstar_prostar_pwm_snmp.yaml150
-rw-r--r--templates/net/morningstar/morningstar_sunsaver_mppt_snmp/README.md94
-rw-r--r--templates/net/morningstar/morningstar_sunsaver_mppt_snmp/template_net_morningstar_sunsaver_mppt_snmp.yaml126
-rw-r--r--templates/net/morningstar/morningstar_suresine_snmp/README.md46
-rw-r--r--templates/net/morningstar/morningstar_suresine_snmp/template_net_morningstar_suresine_snmp.yaml58
-rw-r--r--templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/README.md144
-rw-r--r--templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/template_net_morningstar_tristar_mppt_600V_snmp.yaml170
-rw-r--r--templates/net/morningstar/morningstar_tristar_mppt_snmp/README.md88
-rw-r--r--templates/net/morningstar/morningstar_tristar_mppt_snmp/template_net_morningstar_tristar_mppt_snmp.yaml114
-rw-r--r--templates/net/morningstar/morningstar_tristar_pwm_snmp/README.md92
-rw-r--r--templates/net/morningstar/morningstar_tristar_pwm_snmp/template_net_morningstar_tristar_pwm_snmp.yaml118
-rw-r--r--templates/net/netgear_snmp/README.md44
-rw-r--r--templates/net/netgear_snmp/template_net_netgear_snmp.yaml140
-rw-r--r--templates/net/qtech_snmp/README.md48
-rw-r--r--templates/net/qtech_snmp/template_net_qtech_snmp.yaml134
-rw-r--r--templates/net/tplink_snmp/README.md34
-rw-r--r--templates/net/tplink_snmp/template_net_tplink_snmp.yaml108
-rw-r--r--templates/net/ubiquiti_airos_snmp/README.md32
-rw-r--r--templates/net/ubiquiti_airos_snmp/template_net_ubiquiti_airos_snmp.yaml106
-rw-r--r--templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/README.md40
-rw-r--r--templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/template_net_zyxel_aam1212-51_snmp.yaml52
-rw-r--r--templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/README.md36
-rw-r--r--templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/template_net_zyxel_es3500-8pd_snmp.yaml63
-rw-r--r--templates/net/zyxel_snmp/zyxel_gs4012f_snmp/README.md30
-rw-r--r--templates/net/zyxel_snmp/zyxel_gs4012f_snmp/template_net_zyxel_gs4012f_snmp.yaml57
-rw-r--r--templates/net/zyxel_snmp/zyxel_ies-500x_snmp/README.md56
-rw-r--r--templates/net/zyxel_snmp/zyxel_ies-500x_snmp/template_net_zyxel_ies-500x_snmp.yaml104
-rw-r--r--templates/net/zyxel_snmp/zyxel_ies-6000_snmp/README.md56
-rw-r--r--templates/net/zyxel_snmp/zyxel_ies-6000_snmp/template_net_zyxel_ies-6000_snmp.yaml104
-rw-r--r--templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/README.md42
-rw-r--r--templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/template_net_zyxel_ies1248-51_snmp.yaml57
-rw-r--r--templates/net/zyxel_snmp/zyxel_mes-3528_snmp/README.md30
-rw-r--r--templates/net/zyxel_snmp/zyxel_mes-3528_snmp/template_net_zyxel_mes-3528_snmp.yaml53
-rw-r--r--templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/README.md36
-rw-r--r--templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/template_net_zyxel_mes3500-10_snmp.yaml63
-rw-r--r--templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/README.md36
-rw-r--r--templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/template_net_zyxel_mes3500-24_snmp.yaml63
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/README.md36
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/template_net_zyxel_mgs-3712_snmp.yaml65
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/README.md36
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/template_net_zyxel_mgs-3712f_snmp.yaml65
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/README.md38
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/template_net_zyxel_mgs3500-24s_snmp.yaml67
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/README.md38
-rw-r--r--templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/template_net_zyxel_mgs3520-28x_snmp.yaml67
-rw-r--r--templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/README.md38
-rw-r--r--templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/template_net_zyxel_xgs-4728f_snmp.yaml67
-rw-r--r--templates/os/linux_snmp_snmp/README.md48
-rw-r--r--templates/os/linux_snmp_snmp/template_os_linux_snmp_snmp.yaml202
-rw-r--r--templates/os/windows_snmp/README.md34
-rw-r--r--templates/os/windows_snmp/template_os_windows_snmp.yaml126
-rw-r--r--templates/power/apc/apc_ups_galaxy_3500_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_galaxy_3500_snmp/template_power_apc_ups_galaxy_3500_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_smart_2200_rm_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_smart_2200_rm_snmp/template_power_apc_ups_smart_2200_rm_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_smart_3000_xlm_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_smart_3000_xlm_snmp/template_power_apc_ups_smart_3000_xlm_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/template_power_apc_ups_smart_rt_1000_rm_xl_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/template_power_apc_ups_smart_rt_1000_xl_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_smart_srt_5000_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_smart_srt_5000_snmp/template_power_apc_ups_smart_srt_5000_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_smart_srt_8000_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_smart_srt_8000_snmp/template_power_apc_ups_smart_srt_8000_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_snmp/template_power_apc_ups_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_symmetra_lx_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_symmetra_lx_snmp/template_power_apc_ups_symmetra_lx_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_symmetra_rm_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_symmetra_rm_snmp/template_power_apc_ups_symmetra_rm_snmp.yaml216
-rw-r--r--templates/power/apc/apc_ups_symmetra_rx_snmp/README.md78
-rw-r--r--templates/power/apc/apc_ups_symmetra_rx_snmp/template_power_apc_ups_symmetra_rx_snmp.yaml216
-rw-r--r--templates/san/huawei_5300v5_snmp/README.md66
-rw-r--r--templates/san/huawei_5300v5_snmp/template_san_huawei_5300v5_snmp.yaml118
-rw-r--r--templates/san/netapp_fas3220_snmp/README.md54
-rw-r--r--templates/san/netapp_fas3220_snmp/template_san_netapp_fas3220_snmp.yaml87
-rw-r--r--templates/server/cisco_ucs_manager_snmp/README.md70
-rw-r--r--templates/server/cisco_ucs_manager_snmp/template_server_cisco_ucs_manager_snmp.yaml148
-rw-r--r--templates/server/cisco_ucs_snmp/README.md78
-rw-r--r--templates/server/cisco_ucs_snmp/template_server_cisco_ucs_snmp.yaml154
-rw-r--r--templates/server/dell/dell_r720_snmp/README.md64
-rw-r--r--templates/server/dell/dell_r720_snmp/template_server_dell_r720_snmp.yaml92
-rw-r--r--templates/server/dell/dell_r740_snmp/README.md64
-rw-r--r--templates/server/dell/dell_r740_snmp/template_server_dell_r740_snmp.yaml92
-rw-r--r--templates/server/dell/dell_r820_snmp/README.md64
-rw-r--r--templates/server/dell/dell_r820_snmp/template_server_dell_r820_snmp.yaml92
-rw-r--r--templates/server/dell/dell_r840_snmp/README.md64
-rw-r--r--templates/server/dell/dell_r840_snmp/template_server_dell_r840_snmp.yaml92
-rw-r--r--templates/server/dell_idrac_snmp/README.md74
-rw-r--r--templates/server/dell_idrac_snmp/template_server_dell_idrac_snmp.yaml154
-rw-r--r--templates/server/hp/hp_bl460_snmp/README.md98
-rw-r--r--templates/server/hp/hp_bl460_snmp/template_server_hp_bl460_snmp.yaml122
-rw-r--r--templates/server/hp/hp_bl920_snmp/README.md98
-rw-r--r--templates/server/hp/hp_bl920_snmp/template_server_hp_bl920_snmp.yaml122
-rw-r--r--templates/server/hp/hp_dl360_snmp/README.md98
-rw-r--r--templates/server/hp/hp_dl360_snmp/template_server_hp_dl360_snmp.yaml122
-rw-r--r--templates/server/hp/hp_dl380_snmp/README.md98
-rw-r--r--templates/server/hp/hp_dl380_snmp/template_server_hp_dl380_snmp.yaml122
-rw-r--r--templates/server/hp_ilo_snmp/README.md100
-rw-r--r--templates/server/hp_ilo_snmp/template_server_hp_ilo_snmp.yaml132
-rw-r--r--templates/server/ibm_imm_snmp/README.md50
-rw-r--r--templates/server/ibm_imm_snmp/template_server_ibm_imm_snmp.yaml96
-rw-r--r--templates/server/supermicro_aten_snmp/README.md24
-rw-r--r--templates/server/supermicro_aten_snmp/template_server_supermicro_aten_snmp.yaml44
-rw-r--r--tests/libs/zbxalgo/Makefile.am5
-rw-r--r--tests/libs/zbxcommon/Makefile.am6
-rw-r--r--tests/libs/zbxconf/Makefile.am5
-rw-r--r--tests/libs/zbxdbcache/Makefile.am42
-rw-r--r--tests/libs/zbxdbcache/dc_check_maintenance_period.c2
-rw-r--r--tests/libs/zbxdbcache/dc_expand_user_macros_in_func_params.c2
-rw-r--r--tests/libs/zbxdbcache/dc_function_calculate_nextcheck.c2
-rw-r--r--tests/libs/zbxdbcache/dc_item_poller_type_update.c2
-rw-r--r--tests/libs/zbxdbcache/dc_maintenance_match_tags.c2
-rw-r--r--tests/libs/zbxdbcache/is_item_processed_by_server.c2
-rw-r--r--tests/libs/zbxdbcache/um_cache_mock.c3
-rw-r--r--tests/libs/zbxdbcache/um_cache_mock.h4
-rw-r--r--tests/libs/zbxdbcache/um_cache_resolve.c2
-rw-r--r--tests/libs/zbxdbcache/um_cache_resolve_cont.c2
-rw-r--r--tests/libs/zbxdbcache/um_cache_sync.c2
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_add_values.c2
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_common.c2
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_get_value.c2
-rw-r--r--tests/libs/zbxdbcache/zbx_vc_get_values.c2
-rw-r--r--tests/libs/zbxdbhigh/Makefile.am17
-rwxr-xr-xtests/libs/zbxeval/Makefile.am5
-rw-r--r--tests/libs/zbxhistory/Makefile.am1
-rw-r--r--tests/libs/zbxjson/Makefile.am20
-rw-r--r--tests/libs/zbxjson/zbx_jsonobj_query.c (renamed from tests/libs/zbxjson/zbx_jsonpath_query.c)46
-rw-r--r--tests/libs/zbxjson/zbx_jsonobj_query.inc.yaml (renamed from tests/libs/zbxjson/zbx_jsonpath_query.inc.yaml)0
-rw-r--r--tests/libs/zbxjson/zbx_jsonobj_query.yaml (renamed from tests/libs/zbxjson/zbx_jsonpath_query.yaml)182
-rw-r--r--tests/libs/zbxjson/zbx_jsonpath_compile.c2
-rwxr-xr-xtests/libs/zbxserver/Makefile.am38
-rw-r--r--tests/libs/zbxserver/evaluate_function.c2
-rw-r--r--tests/libs/zbxserver/evaluate_percentage_deviations_in_remainder.c2
-rw-r--r--tests/libs/zbxserver/evaluate_stl.c2
-rw-r--r--tests/libs/zbxserver/macro_fmttime.c2
-rw-r--r--tests/libs/zbxsysinfo/Makefile.am8
-rw-r--r--tests/libs/zbxtime/Makefile.am1
-rw-r--r--tests/libs/zbxtrends/Makefile.am1
-rw-r--r--tests/mocks/configcache/Makefile.am4
-rw-r--r--tests/mocks/configcache/hosts.c2
-rw-r--r--tests/mocks/valuecache/Makefile.am4
-rw-r--r--tests/mocks/valuecache/valuecache_mock.c4
-rw-r--r--tests/zabbix_server/pinger/Makefile.am8
-rw-r--r--tests/zabbix_server/poller/Makefile.am2
-rw-r--r--tests/zabbix_server/poller/test_get_value_ssh.h2
-rw-r--r--tests/zabbix_server/poller/test_get_value_telnet.h2
-rw-r--r--tests/zabbix_server/preprocessor/zbx_item_preproc.c2
-rw-r--r--tests/zabbix_server/preprocessor/zbx_item_preproc.yaml6
-rw-r--r--tests/zabbix_server/service/Makefile.am5
-rw-r--r--ui/app/controllers/CControllerDashboardConfigHash.php103
-rw-r--r--ui/app/controllers/CControllerDashboardPrint.php2
-rw-r--r--ui/app/controllers/CControllerDashboardUpdate.php194
-rw-r--r--ui/app/controllers/CControllerDashboardView.php55
-rw-r--r--ui/app/controllers/CControllerDashboardWidgetCheck.php34
-rw-r--r--ui/app/controllers/CControllerDashboardWidgetConfigure.php87
-rw-r--r--ui/app/controllers/CControllerDashboardWidgetEdit.php174
-rw-r--r--ui/app/controllers/CControllerDashboardWidgetRfRate.php2
-rw-r--r--ui/app/controllers/CControllerDashboardWidgetView.php116
-rw-r--r--ui/app/controllers/CControllerDashboardWidgetsSanitize.php69
-rw-r--r--ui/app/controllers/CControllerFavoriteCreate.php (renamed from ui/app/controllers/CControllerFavouriteCreate.php)2
-rw-r--r--ui/app/controllers/CControllerFavoriteDelete.php (renamed from ui/app/controllers/CControllerFavouriteDelete.php)18
-rw-r--r--ui/app/controllers/CControllerHintboxEventlist.php2
-rw-r--r--ui/app/controllers/CControllerHostCreate.php3
-rw-r--r--ui/app/controllers/CControllerHostDashboardView.php10
-rw-r--r--ui/app/controllers/CControllerLatestView.php1
-rw-r--r--ui/app/controllers/CControllerModuleEdit.php26
-rw-r--r--ui/app/controllers/CControllerModuleList.php15
-rw-r--r--ui/app/controllers/CControllerModuleScan.php56
-rw-r--r--ui/app/controllers/CControllerModuleUpdate.php16
-rw-r--r--ui/app/controllers/CControllerPopupItemTest.php32
-rw-r--r--ui/app/controllers/CControllerPopupItemTestEdit.php36
-rw-r--r--ui/app/controllers/CControllerPopupItemTestGetValue.php2
-rw-r--r--ui/app/controllers/CControllerPopupItemTestSend.php31
-rw-r--r--ui/app/controllers/CControllerPopupMassupdateItem.php480
-rw-r--r--ui/app/controllers/CControllerProblem.php2
-rw-r--r--ui/app/controllers/CControllerProblemView.php2
-rw-r--r--ui/app/controllers/CControllerProblemViewRefresh.php4
-rw-r--r--ui/app/controllers/CControllerProfileUpdate.php21
-rw-r--r--ui/app/controllers/CControllerTemplateDashboardEdit.php18
-rw-r--r--ui/app/controllers/CControllerTemplateDashboardUpdate.php158
-rw-r--r--ui/app/controllers/CControllerUserEdit.php37
-rw-r--r--ui/app/controllers/CControllerUserroleEdit.php43
-rw-r--r--ui/app/controllers/CControllerUserroleEditGeneral.php8
-rw-r--r--ui/app/controllers/CControllerWidget.php148
-rw-r--r--ui/app/controllers/CControllerWidgetIterator.php46
-rw-r--r--ui/app/controllers/CControllerWidgetProblemsBySvView.php74
-rw-r--r--ui/app/controllers/CControllerWidgetSvgGraphView.php183
-rw-r--r--ui/app/controllers/CControllerWidgetTrigOverView.php73
-rw-r--r--ui/app/partials/configuration.hostgroup.edit.html.php2
-rw-r--r--ui/app/partials/configuration.templategroup.edit.html.php2
-rw-r--r--ui/app/partials/layout.htmlpage.header.php67
-rw-r--r--ui/app/partials/monitoring.host.filter.php4
-rw-r--r--ui/app/partials/monitoring.latest.filter.php4
-rw-r--r--ui/app/partials/monitoring.problem.filter.php8
-rw-r--r--ui/app/views/administration.audit.settings.edit.php6
-rw-r--r--ui/app/views/administration.authentication.edit.php6
-rw-r--r--ui/app/views/administration.autoreg.edit.php6
-rw-r--r--ui/app/views/administration.geomaps.edit.php6
-rw-r--r--ui/app/views/administration.gui.edit.php6
-rw-r--r--ui/app/views/administration.housekeeping.edit.php6
-rw-r--r--ui/app/views/administration.iconmap.edit.php6
-rw-r--r--ui/app/views/administration.iconmap.list.php4
-rw-r--r--ui/app/views/administration.image.edit.php6
-rw-r--r--ui/app/views/administration.image.list.php8
-rw-r--r--ui/app/views/administration.macros.edit.php6
-rw-r--r--ui/app/views/administration.mediatype.edit.php8
-rw-r--r--ui/app/views/administration.mediatype.list.php6
-rw-r--r--ui/app/views/administration.miscconfig.edit.php6
-rw-r--r--ui/app/views/administration.module.edit.php13
-rw-r--r--ui/app/views/administration.module.list.php11
-rw-r--r--ui/app/views/administration.queue.details.php4
-rw-r--r--ui/app/views/administration.queue.overview.php4
-rw-r--r--ui/app/views/administration.queue.overview.proxy.php4
-rw-r--r--ui/app/views/administration.regex.edit.php6
-rw-r--r--ui/app/views/administration.regex.list.php4
-rw-r--r--ui/app/views/administration.script.edit.php8
-rw-r--r--ui/app/views/administration.script.list.php4
-rw-r--r--ui/app/views/administration.token.list.php4
-rw-r--r--ui/app/views/administration.trigdisplay.edit.php6
-rw-r--r--ui/app/views/administration.user.edit.php22
-rw-r--r--ui/app/views/administration.user.list.php4
-rw-r--r--ui/app/views/administration.user.token.list.php4
-rw-r--r--ui/app/views/administration.usergroup.edit.php10
-rw-r--r--ui/app/views/administration.usergroup.list.php7
-rw-r--r--ui/app/views/administration.userrole.edit.php39
-rw-r--r--ui/app/views/administration.userrole.list.php7
-rw-r--r--ui/app/views/configuration.correlation.edit.php10
-rw-r--r--ui/app/views/configuration.correlation.list.php8
-rw-r--r--ui/app/views/configuration.dashboard.edit.php16
-rw-r--r--ui/app/views/configuration.dashboard.list.php2
-rw-r--r--ui/app/views/configuration.discovery.edit.php10
-rw-r--r--ui/app/views/configuration.discovery.list.php9
-rw-r--r--ui/app/views/configuration.host.edit.php2
-rw-r--r--ui/app/views/configuration.host.list.php6
-rw-r--r--ui/app/views/configuration.hostgroup.edit.php2
-rw-r--r--ui/app/views/configuration.hostgroup.list.php4
-rw-r--r--ui/app/views/configuration.templategroup.edit.php2
-rw-r--r--ui/app/views/configuration.templategroup.list.php4
-rw-r--r--ui/app/views/js/configuration.dashboard.edit.js.php10
-rw-r--r--ui/app/views/js/monitoring.dashboard.print.js.php1
-rw-r--r--ui/app/views/js/monitoring.dashboard.view.js.php48
-rw-r--r--ui/app/views/js/monitoring.host.dashboard.view.js.php12
-rw-r--r--ui/app/views/js/monitoring.latest.view.js.php2
-rw-r--r--ui/app/views/js/monitoring.problem.view.js.php2
-rw-r--r--ui/app/views/js/popup.massupdate.item.js.php74
-rw-r--r--ui/app/views/js/popup.massupdate.tmpl.js.php2
-rw-r--r--ui/app/views/monitoring.charts.view.php12
-rw-r--r--ui/app/views/monitoring.dashboard.list.php9
-rw-r--r--ui/app/views/monitoring.dashboard.print.php14
-rw-r--r--ui/app/views/monitoring.dashboard.view.php31
-rw-r--r--ui/app/views/monitoring.dashboard.widget.edit.php84
-rw-r--r--ui/app/views/monitoring.discovery.view.php4
-rw-r--r--ui/app/views/monitoring.host.dashboard.view.php22
-rw-r--r--ui/app/views/monitoring.host.view.php17
-rw-r--r--ui/app/views/monitoring.latest.view.php22
-rw-r--r--ui/app/views/monitoring.map.view.php4
-rw-r--r--ui/app/views/monitoring.problem.view.php6
-rw-r--r--ui/app/views/monitoring.web.view.php2
-rw-r--r--ui/app/views/monitoring.widget.dataover.view.php47
-rw-r--r--ui/app/views/monitoring.widget.graph.view.php55
-rw-r--r--ui/app/views/monitoring.widget.map.view.php43
-rw-r--r--ui/app/views/monitoring.widget.svggraph.view.php52
-rw-r--r--ui/app/views/monitoring.widget.trigover.view.php47
-rw-r--r--ui/app/views/popup.itemtestedit.view.php2
-rw-r--r--ui/app/views/popup.massupdate.item.php2
-rw-r--r--ui/app/views/popup.massupdate.service.php2
-rw-r--r--ui/app/views/popup.service.edit.php4
-rw-r--r--ui/app/views/popup.sla.edit.php2
-rw-r--r--ui/app/views/popup.view.php2
-rw-r--r--ui/app/views/proxy.list.php2
-rw-r--r--ui/app/views/report.status.php2
-rw-r--r--ui/app/views/reports.auditlog.list.php4
-rw-r--r--ui/app/views/reports.scheduledreport.edit.php6
-rw-r--r--ui/app/views/reports.scheduledreport.list.php4
-rw-r--r--ui/app/views/search.php58
-rw-r--r--ui/app/views/service.list.edit.php2
-rw-r--r--ui/app/views/service.list.php2
-rw-r--r--ui/app/views/sla.list.php2
-rw-r--r--ui/app/views/slareport.list.php4
-rw-r--r--ui/app/views/system.warning.php10
-rw-r--r--ui/app/views/widget.edit.php29
-rw-r--r--ui/app/views/widget.view.php29
-rw-r--r--ui/assets/styles/blue-theme.css633
-rw-r--r--ui/assets/styles/dark-theme.css633
-rw-r--r--ui/assets/styles/hc-dark.css647
-rw-r--r--ui/assets/styles/hc-light.css646
-rw-r--r--ui/auditacts.php1
-rw-r--r--ui/disc_prototypes.php387
-rw-r--r--ui/host_discovery.php61
-rw-r--r--ui/hostinventoriesoverview.php2
-rw-r--r--ui/httpdetails.php2
-rw-r--r--ui/include/audit.inc.php43
-rw-r--r--ui/include/classes/api/CAudit.php163
-rw-r--r--ui/include/classes/api/CItemTypeFactory.php97
-rw-r--r--ui/include/classes/api/item_types/CItemType.php470
-rw-r--r--ui/include/classes/api/item_types/CItemTypeCalculated.php72
-rw-r--r--ui/include/classes/api/item_types/CItemTypeDbMonitor.php80
-rw-r--r--ui/include/classes/api/item_types/CItemTypeDependent.php68
-rw-r--r--ui/include/classes/api/item_types/CItemTypeExternal.php72
-rw-r--r--ui/include/classes/api/item_types/CItemTypeHttpAgent.php187
-rw-r--r--ui/include/classes/api/item_types/CItemTypeInternal.php68
-rw-r--r--ui/include/classes/api/item_types/CItemTypeIpmi.php82
-rw-r--r--ui/include/classes/api/item_types/CItemTypeJmx.php84
-rw-r--r--ui/include/classes/api/item_types/CItemTypeScript.php86
-rw-r--r--ui/include/classes/api/item_types/CItemTypeSimple.php80
-rw-r--r--ui/include/classes/api/item_types/CItemTypeSnmp.php76
-rw-r--r--ui/include/classes/api/item_types/CItemTypeSnmpTrap.php68
-rw-r--r--ui/include/classes/api/item_types/CItemTypeSsh.php116
-rw-r--r--ui/include/classes/api/item_types/CItemTypeTelnet.php84
-rw-r--r--ui/include/classes/api/item_types/CItemTypeTrapper.php68
-rw-r--r--ui/include/classes/api/item_types/CItemTypeZabbix.php72
-rw-r--r--ui/include/classes/api/item_types/CItemTypeZabbixActive.php68
-rw-r--r--ui/include/classes/api/managers/CDiscoveryRuleManager.php25
-rw-r--r--ui/include/classes/api/managers/CHttpTestManager.php2183
-rw-r--r--ui/include/classes/api/managers/CItemManager.php262
-rw-r--r--ui/include/classes/api/managers/CItemPrototypeManager.php154
-rw-r--r--ui/include/classes/api/services/CConfiguration.php4
-rw-r--r--ui/include/classes/api/services/CDiscoveryRule.php439
-rw-r--r--ui/include/classes/api/services/CHost.php33
-rw-r--r--ui/include/classes/api/services/CHostGeneral.php419
-rw-r--r--ui/include/classes/api/services/CHostPrototype.php58
-rw-r--r--ui/include/classes/api/services/CHttpTest.php226
-rw-r--r--ui/include/classes/api/services/CItem.php1545
-rw-r--r--ui/include/classes/api/services/CItemGeneral.php4034
-rw-r--r--ui/include/classes/api/services/CItemGeneralOld.php2973
-rw-r--r--ui/include/classes/api/services/CItemPrototype.php1298
-rw-r--r--ui/include/classes/api/services/CModule.php8
-rw-r--r--ui/include/classes/api/services/CRole.php15
-rw-r--r--ui/include/classes/api/services/CTemplate.php31
-rw-r--r--ui/include/classes/core/CModule.php138
-rw-r--r--ui/include/classes/core/CModuleManager.php396
-rw-r--r--ui/include/classes/core/CWidget.php165
-rw-r--r--ui/include/classes/core/ZBase.php296
-rw-r--r--ui/include/classes/helpers/CDashboardHelper.php216
-rw-r--r--ui/include/classes/helpers/CDocHelper.php6
-rw-r--r--ui/include/classes/helpers/CMessageHelper.php7
-rw-r--r--ui/include/classes/helpers/CSvgGraphHelper.php8
-rw-r--r--ui/include/classes/html/CBarGauge.php3
-rw-r--r--ui/include/classes/html/CCollapsibleUiWidget.php103
-rw-r--r--ui/include/classes/html/CColor.php6
-rw-r--r--ui/include/classes/html/CHtmlPage.php (renamed from ui/include/classes/html/widget/CWidget.php)94
-rw-r--r--ui/include/classes/html/CHtmlPageHeader.php181
-rw-r--r--ui/include/classes/html/CLabel.php12
-rw-r--r--ui/include/classes/html/CRadioButtonList.php2
-rw-r--r--ui/include/classes/html/CSection.php68
-rw-r--r--ui/include/classes/html/CSectionCollapsible.php59
-rw-r--r--ui/include/classes/html/CTemplateTag.php34
-rw-r--r--ui/include/classes/html/CUiWidget.php136
-rw-r--r--ui/include/classes/html/pageheader/CPageHeader.php190
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldCheckBoxListView.php59
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldCheckBoxView.php40
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldColorView.php (renamed from ui/include/classes/html/CScriptTemplate.php)39
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldColumnsListView.php91
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldDatePickerView.php62
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldGraphDataSetView.php440
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldGraphOverrideView.php348
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldHostPatternSelectView.php65
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldIntegerBoxView.php37
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldLatLngView.php72
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphPrototypeView.php42
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphView.php42
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectGroupView.php42
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectHostView.php (renamed from ui/app/views/js/monitoring.dashboard.widget.edit.js.php)29
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemPrototypeView.php40
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemView.php40
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectServiceView.php (renamed from ui/include/classes/widgets/views/js/widget.problems.form.view.js.php)20
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectSlaView.php40
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldMultiSelectView.php106
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldNumericBoxView.php58
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldRadioButtonListView.php43
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldRangeControlView.php52
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldSelectResourceView.php54
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldSelectView.php55
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldSeveritiesView.php39
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldTagsView.php118
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldTextAreaView.php59
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldTextBoxView.php71
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldThresholdsView.php100
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldTimeZoneView.php47
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldUrlView.php35
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldView.php91
-rw-r--r--ui/include/classes/html/widgets/CWidgetFieldWidgetSelectView.php72
-rw-r--r--ui/include/classes/html/widgets/CWidgetFormView.php281
-rw-r--r--ui/include/classes/html/widgets/CWidgetView.php69
-rw-r--r--ui/include/classes/import/CConfigurationImport.php80
-rw-r--r--ui/include/classes/import/CImportReferencer.php4
-rw-r--r--ui/include/classes/import/converters/C10ImportConverter.php26
-rw-r--r--ui/include/classes/import/converters/C62ImportConverter.php123
-rw-r--r--ui/include/classes/import/converters/CImportConverterFactory.php38
-rw-r--r--ui/include/classes/import/validators/C64XmlValidator.php13
-rw-r--r--ui/include/classes/mvc/CControllerResponse.php2
-rw-r--r--ui/include/classes/mvc/CRouter.php85
-rw-r--r--ui/include/classes/mvc/CView.php128
-rw-r--r--ui/include/classes/parsers/CPrometheusOutputParser.php9
-rw-r--r--ui/include/classes/parsers/CPrometheusPatternParser.php18
-rw-r--r--ui/include/classes/parsers/CUpdateIntervalParser.php31
-rw-r--r--ui/include/classes/setup/CSetupWizard.php4
-rw-r--r--ui/include/classes/user/CWebUser.php6
-rw-r--r--ui/include/classes/validators/CApiInputValidator.php966
-rw-r--r--ui/include/classes/widgets/CWidgetConfig.php501
-rw-r--r--ui/include/classes/widgets/CWidgetField.php (renamed from ui/include/classes/widgets/fields/CWidgetField.php)274
-rw-r--r--ui/include/classes/widgets/CWidgetForm.php (renamed from ui/include/classes/widgets/forms/CWidgetForm.php)181
-rw-r--r--ui/include/classes/widgets/CWidgetHelper.php1614
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldCheckBox.php29
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldCheckBoxList.php31
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldColor.php38
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldColumnsList.php132
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldDatePicker.php54
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldGraphDataSet.php160
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldGraphOverride.php119
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldHidden.php35
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldHostPatternSelect.php51
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldIntegerBox.php48
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldLatLng.php36
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMsHost.php52
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelect.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMs.php)86
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGraph.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMsGraph.php)16
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGraphPrototype.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMsGraphPrototype.php)16
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGroup.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMsGroup.php)8
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectHost.php31
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectItem.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMsItem.php)16
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectItemPrototype.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMsItemPrototype.php)16
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectService.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMsService.php)14
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldMultiSelectSla.php (renamed from ui/include/classes/widgets/fields/CWidgetFieldMsSla.php)14
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldNavTree.php78
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldNumericBox.php48
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldRadioButtonList.php37
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldRangeControl.php57
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldReference.php24
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldSelect.php33
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldSelectResource.php98
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldSeverities.php6
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldTags.php70
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldTextArea.php43
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldTextBox.php50
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldThresholds.php57
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldTimeZone.php71
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldUrl.php36
-rw-r--r--ui/include/classes/widgets/fields/CWidgetFieldWidgetSelect.php73
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormActionLog.php60
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormClock.php255
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormDataOver.php97
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormGeoMap.php83
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormGraph.php95
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormGraphPrototype.php95
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormHostAvail.php71
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormItem.php461
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormMap.php80
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormNavTree.php60
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormPlainText.php87
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormProblemHosts.php136
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormProblems.php243
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormProblemsBySv.php202
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormSlaReport.php145
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php635
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormSystemInfo.php43
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormTopHosts.php171
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormTrigOver.php113
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormUrl.php51
-rw-r--r--ui/include/classes/widgets/forms/CWidgetFormWeb.php93
-rw-r--r--ui/include/classes/widgets/views/js/widget.clock.form.view.js.php102
-rw-r--r--ui/include/classes/widgets/views/widget.clock.form.view.php179
-rw-r--r--ui/include/classes/widgets/views/widget.dataover.form.view.php90
-rw-r--r--ui/include/classes/widgets/views/widget.geomap.form.view.php96
-rw-r--r--ui/include/classes/widgets/views/widget.graph.form.view.php89
-rw-r--r--ui/include/classes/widgets/views/widget.graphprototype.form.view.php101
-rw-r--r--ui/include/classes/widgets/views/widget.hostavail.form.view.php80
-rw-r--r--ui/include/classes/widgets/views/widget.item.form.view.php262
-rw-r--r--ui/include/classes/widgets/views/widget.map.form.view.php85
-rw-r--r--ui/include/classes/widgets/views/widget.navtree.form.view.php72
-rw-r--r--ui/include/classes/widgets/views/widget.plaintext.form.view.php81
-rw-r--r--ui/include/classes/widgets/views/widget.problemhosts.form.view.php118
-rw-r--r--ui/include/classes/widgets/views/widget.problems.form.view.php178
-rw-r--r--ui/include/classes/widgets/views/widget.problemsbysv.form.view.php142
-rw-r--r--ui/include/classes/widgets/views/widget.slareport.form.view.php98
-rw-r--r--ui/include/classes/widgets/views/widget.svggraph.form.view.php328
-rw-r--r--ui/include/classes/widgets/views/widget.tophosts.form.view.php118
-rw-r--r--ui/include/classes/widgets/views/widget.trigover.form.view.php96
-rw-r--r--ui/include/classes/widgets/views/widget.url.form.view.php56
-rw-r--r--ui/include/classes/widgets/views/widget.web.form.view.php94
-rw-r--r--ui/include/defines.inc.php137
-rw-r--r--ui/include/func.inc.php16
-rw-r--r--ui/include/html.inc.php10
-rw-r--r--ui/include/items.inc.php909
-rw-r--r--ui/include/page_header.php83
-rw-r--r--ui/include/validate.inc.php2
-rw-r--r--ui/include/views/administration.auditacts.list.php11
-rw-r--r--ui/include/views/configuration.action.edit.php11
-rw-r--r--ui/include/views/configuration.action.list.php9
-rw-r--r--ui/include/views/configuration.copy.elements.php10
-rw-r--r--ui/include/views/configuration.graph.edit.php15
-rw-r--r--ui/include/views/configuration.graph.list.php15
-rw-r--r--ui/include/views/configuration.host.discovery.edit.php8
-rw-r--r--ui/include/views/configuration.host.discovery.list.php13
-rw-r--r--ui/include/views/configuration.host.prototype.edit.php9
-rw-r--r--ui/include/views/configuration.host.prototype.list.php9
-rw-r--r--ui/include/views/configuration.httpconf.edit.php10
-rw-r--r--ui/include/views/configuration.httpconf.list.php13
-rw-r--r--ui/include/views/configuration.item.edit.php12
-rw-r--r--ui/include/views/configuration.item.list.php13
-rw-r--r--ui/include/views/configuration.item.prototype.edit.php18
-rw-r--r--ui/include/views/configuration.item.prototype.list.php9
-rw-r--r--ui/include/views/configuration.maintenance.edit.php10
-rw-r--r--ui/include/views/configuration.maintenance.list.php9
-rw-r--r--ui/include/views/configuration.template.edit.php11
-rw-r--r--ui/include/views/configuration.template.list.php8
-rw-r--r--ui/include/views/configuration.trigger.prototype.edit.php10
-rw-r--r--ui/include/views/configuration.trigger.prototype.list.php9
-rw-r--r--ui/include/views/configuration.triggers.edit.php12
-rw-r--r--ui/include/views/configuration.triggers.list.php13
-rw-r--r--ui/include/views/general.warning.php10
-rw-r--r--ui/include/views/inventory.host.list.php10
-rw-r--r--ui/include/views/inventory.host.view.php9
-rw-r--r--ui/include/views/monitoring.history.php28
-rw-r--r--ui/include/views/monitoring.sysmap.constructor.php2
-rw-r--r--ui/include/views/monitoring.sysmap.edit.php9
-rw-r--r--ui/include/views/monitoring.sysmap.list.php9
-rw-r--r--ui/include/views/reports.toptriggers.php2
-rw-r--r--ui/items.php526
-rw-r--r--ui/js/class.dashboard.js371
-rw-r--r--ui/js/class.dashboard.page.js64
-rw-r--r--ui/js/class.dashboard.widget.placeholder.js6
-rw-r--r--ui/js/class.sortable.js9
-rw-r--r--ui/js/class.tabfilter.js2
-rw-r--r--ui/js/class.widget.inaccessible.js78
-rw-r--r--ui/js/class.widget.iterator.js (renamed from ui/js/widgets/class.widget.iterator.js)1
-rw-r--r--ui/js/class.widget.js (renamed from ui/js/widgets/class.widget.js)69
-rw-r--r--ui/js/class.widget.paste-placeholder.js (renamed from ui/js/widgets/class.widget.paste-placeholder.js)0
-rw-r--r--ui/js/common.js42
-rw-r--r--ui/js/main.js40
-rw-r--r--ui/js/menupopup.js3
-rw-r--r--ui/js/pages/items.js4
-rw-r--r--ui/jsLoader.php71
-rw-r--r--ui/locale/bg/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/ca/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/cs/LC_MESSAGES/frontend.po442
-rw-r--r--ui/locale/da/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/de/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/el/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/en/LC_MESSAGES/frontend.pot414
-rw-r--r--ui/locale/en_GB/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/es/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/fa/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/fi/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/fr/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/he/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/hu/LC_MESSAGES/frontend.po500
-rw-r--r--ui/locale/id/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/it/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/ja/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/ka/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/ko/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/lt/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/lv/LC_MESSAGES/frontend.po3084
-rw-r--r--ui/locale/nb_NO/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/nl/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/pl/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/pt_BR/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/pt_PT/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/ro/LC_MESSAGES/frontend.po486
-rw-r--r--ui/locale/ru/LC_MESSAGES/frontend.po422
-rw-r--r--ui/locale/sk/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/sv_SE/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/tr/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/uk/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/vi/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/zh_CN/LC_MESSAGES/frontend.po414
-rw-r--r--ui/locale/zh_TW/LC_MESSAGES/frontend.po414
-rw-r--r--ui/report2.php12
-rw-r--r--ui/report4.php6
-rw-r--r--ui/setup.php9
-rw-r--r--ui/templates.php2
-rw-r--r--ui/tests/api_json/ApiJsonTests.php4
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/common/testAuditlogCommon.php0
-rw-r--r--ui/tests/api_json/data/data_test.sql18
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogAction.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogAutoregistration.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogDashboard.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogEventCorrelation.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogIconMap.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogMaintenance.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogMediaType.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogProxy.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogScheduledReport.php2
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogSettings.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogToken.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogUser.php0
-rw-r--r--[-rwxr-xr-x]ui/tests/api_json/testAuditlogUserGroups.php0
-rw-r--r--ui/tests/api_json/testDependentItems.php435
-rw-r--r--ui/tests/api_json/testIconMap.php20
-rw-r--r--ui/tests/api_json/testItem.php113
-rw-r--r--ui/tests/api_json/testItemPrototype.php115
-rw-r--r--ui/tests/api_json/testWebScenario.php6
-rw-r--r--ui/tests/api_json/xml/testDiscoveredHostGroupsAfterImportParentHost.xml14
-rw-r--r--ui/tests/include/helpers/CDataHelper.php5
-rw-r--r--ui/tests/include/web/CPage.php1
-rw-r--r--ui/tests/include/web/elements/CWidgetElement.php8
-rw-r--r--ui/tests/integration/data/confsync_hosts.xml5
-rw-r--r--ui/tests/integration/data/confsync_hosts_updated.xml113
-rw-r--r--ui/tests/integration/data/confsync_tmpl.xml13
-rw-r--r--ui/tests/integration/data/confsync_tmpl_updated.xml87
-rw-r--r--ui/tests/integration/testActiveAvailability.php2
-rw-r--r--ui/tests/integration/testAgentItems.php37
-rw-r--r--ui/tests/integration/testGoAgentDataCollection.php46
-rw-r--r--ui/tests/integration/testInitialConfSync.php6
-rw-r--r--ui/tests/integration/testItemState.php10
-rw-r--r--ui/tests/selenium/SeleniumTests.php548
-rw-r--r--ui/tests/selenium/actions/testFormAction.php (renamed from ui/tests/selenium/testFormAction.php)6
-rw-r--r--ui/tests/selenium/actions/testPageActions.php (renamed from ui/tests/selenium/testPageActions.php)2
-rw-r--r--ui/tests/selenium/common/testCalculatedFormula.php2
-rw-r--r--ui/tests/selenium/common/testFormGraphs.php1066
-rw-r--r--ui/tests/selenium/common/testFormHost.php4
-rw-r--r--ui/tests/selenium/common/testFormPreprocessing.php520
-rw-r--r--ui/tests/selenium/common/testFormTags.php4
-rw-r--r--ui/tests/selenium/common/testItemTest.php34
-rw-r--r--ui/tests/selenium/common/testMassUpdateItems.php141
-rw-r--r--ui/tests/selenium/dashboard/testDashboardItemValueWidget.php5
-rw-r--r--ui/tests/selenium/dashboard/testDashboardPages.php1
-rw-r--r--ui/tests/selenium/dashboard/testDashboardSlaReportWidget.php12
-rw-r--r--ui/tests/selenium/dashboard/testDashboardTopHostsWidget.php51
-rw-r--r--ui/tests/selenium/dashboard/testDashboardTriggerOverviewWidget.php16
-rw-r--r--ui/tests/selenium/dashboard/testPageDashboardList.php (renamed from ui/tests/selenium/testPageDashboardList.php)6
-rw-r--r--ui/tests/selenium/dashboard/testPageDashboardWidgets.php (renamed from ui/tests/selenium/testPageDashboardWidgets.php)16
-rw-r--r--ui/tests/selenium/data/data_test.sql174
-rw-r--r--ui/tests/selenium/data/sources/CopyWidgetsDashboards.php4
-rw-r--r--ui/tests/selenium/data/sources/DiscoveredHosts.php14
-rw-r--r--ui/tests/selenium/data/sources/TopHostsWidget.php20
-rw-r--r--ui/tests/selenium/graphs/testFormGraph.php572
-rw-r--r--ui/tests/selenium/graphs/testFormGraphPrototype.php727
-rw-r--r--ui/tests/selenium/graphs/testGraphAxis.php (renamed from ui/tests/selenium/testGraphAxis.php)3
-rw-r--r--ui/tests/selenium/graphs/testInheritanceGraph.php (renamed from ui/tests/selenium/testInheritanceGraph.php)3
-rw-r--r--ui/tests/selenium/graphs/testInheritanceGraphPrototype.php (renamed from ui/tests/selenium/testInheritanceGraphPrototype.php)3
-rw-r--r--ui/tests/selenium/graphs/testPageGraphPrototypes.php (renamed from ui/tests/selenium/testPageGraphPrototypes.php)5
-rw-r--r--ui/tests/selenium/graphs/testPageHostGraph.php (renamed from ui/tests/selenium/testPageHostGraph.php)3
-rw-r--r--ui/tests/selenium/hosts/testFormHostFromConfiguration.php (renamed from ui/tests/selenium/hosts/testFormHostConfiguration.php)22
-rw-r--r--ui/tests/selenium/hosts/testFormHostFromMonitoring.php (renamed from ui/tests/selenium/hosts/testFormHostMonitoring.php)22
-rw-r--r--ui/tests/selenium/hosts/testFormHostFromStandalone.php (renamed from ui/tests/selenium/hosts/testFormHostStandalone.php)24
-rw-r--r--ui/tests/selenium/hosts/testFormHostLinkTemplates.php (renamed from ui/tests/selenium/testFormHostLinkTemplates.php)2
-rw-r--r--ui/tests/selenium/hosts/testFormHostPrototype.php (renamed from ui/tests/selenium/testFormHostPrototype.php)6
-rw-r--r--ui/tests/selenium/hosts/testPageHostInterfaces.php (renamed from ui/tests/selenium/testPageHostInterfaces.php)4
-rw-r--r--ui/tests/selenium/hosts/testPageHostPrototypes.php (renamed from ui/tests/selenium/testPageHostPrototypes.php)4
-rw-r--r--ui/tests/selenium/hosts/testPageHosts.php (renamed from ui/tests/selenium/testPageHosts.php)7
-rw-r--r--ui/tests/selenium/hosts/testPageMonitoringHosts.php (renamed from ui/tests/selenium/testPageMonitoringHosts.php)8
-rw-r--r--ui/tests/selenium/items/testFormItem.php41
-rw-r--r--ui/tests/selenium/items/testFormItemHttpAgent.php50
-rw-r--r--ui/tests/selenium/items/testFormItemPrototype.php323
-rw-r--r--ui/tests/selenium/items/testFormTestItem.php2
-rw-r--r--ui/tests/selenium/items/testFormTestItemPrototype.php8
-rw-r--r--ui/tests/selenium/items/testInheritanceItem.php3
-rw-r--r--ui/tests/selenium/items/testInheritanceItemPrototype.php8
-rw-r--r--ui/tests/selenium/items/testItemTypeSelection.php18
-rw-r--r--ui/tests/selenium/lld/testPageLowLevelDiscovery.php7
-rw-r--r--ui/tests/selenium/modules/module_number_1/Module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_1/manifest.json2
-rw-r--r--ui/tests/selenium/modules/module_number_1/views/first.module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_2/Module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_2/manifest.json2
-rw-r--r--ui/tests/selenium/modules/module_number_2/views/second.module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_3/Module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_3/manifest.json2
-rw-r--r--ui/tests/selenium/modules/module_number_3/views/third.module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_4/Module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_4/manifest.json2
-rw-r--r--ui/tests/selenium/modules/module_number_4/views/forth.module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_5/Module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_5/manifest.json2
-rw-r--r--ui/tests/selenium/modules/module_number_5/views/fifth.module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_6/Module.php2
-rw-r--r--ui/tests/selenium/modules/module_number_6/manifest.json2
-rw-r--r--ui/tests/selenium/monitoring/testPageMonitoringLatestData.php (renamed from ui/tests/selenium/testPageLatestData.php)25
-rw-r--r--ui/tests/selenium/preprocessing/testFormPreprocessingItem.php6
-rw-r--r--ui/tests/selenium/preprocessing/testFormPreprocessingItemPrototype.php8
-rw-r--r--ui/tests/selenium/preprocessing/testFormPreprocessingLowLevelDiscovery.php3
-rw-r--r--ui/tests/selenium/preprocessing/testFormPreprocessingTest.php50
-rw-r--r--ui/tests/selenium/problems/testFormUpdateProblem.php4
-rw-r--r--ui/tests/selenium/reports/testPageAvailabilityReport.php (renamed from ui/tests/selenium/testPageAvailabilityReport.php)2
-rw-r--r--[-rwxr-xr-x]ui/tests/selenium/reports/testPageReportsAudit.php0
-rw-r--r--ui/tests/selenium/reports/testPageReportsTriggerTop.php123
-rw-r--r--ui/tests/selenium/reports/testScheduledReportPermissions.php1
-rw-r--r--ui/tests/selenium/roles/testFormUserRoles.php17
-rw-r--r--ui/tests/selenium/roles/testPageUserRoles.php7
-rw-r--r--ui/tests/selenium/services/testFormServicesServices.php9
-rw-r--r--ui/tests/selenium/services/testPageServicesServices.php12
-rw-r--r--ui/tests/selenium/sla/testFormServicesSla.php12
-rw-r--r--ui/tests/selenium/templates/testFormTemplate.php (renamed from ui/tests/selenium/testFormTemplate.php)3
-rw-r--r--ui/tests/selenium/templates/testPageTemplates.php (renamed from ui/tests/selenium/testPageTemplates.php)32
-rw-r--r--ui/tests/selenium/testDocumentationLinks.php4
-rw-r--r--ui/tests/selenium/testFormAdministrationAuthenticationHttp.php2
-rw-r--r--ui/tests/selenium/testFormAdministrationGeneralAutoregistration.php11
-rw-r--r--ui/tests/selenium/testFormGraph.php1007
-rw-r--r--ui/tests/selenium/testFormGraphPrototype.php1232
-rw-r--r--ui/tests/selenium/testFormTabIndicators.php4
-rw-r--r--ui/tests/selenium/testFormTriggerPrototype.php30
-rw-r--r--ui/tests/selenium/testInheritanceHostPrototype.php2
-rw-r--r--ui/tests/selenium/testInheritanceTriggerPrototype.php2
-rw-r--r--ui/tests/selenium/testPageAdministrationGeneralModules.php70
-rw-r--r--ui/tests/selenium/testPageMassUpdateItemPrototypes.php27
-rw-r--r--ui/tests/selenium/testPageMassUpdateItems.php27
-rw-r--r--ui/tests/selenium/testSID.php21
-rw-r--r--ui/tests/selenium/testTemplateInheritance.php12
-rw-r--r--ui/tests/selenium/users/testFormUserPermissions.php23
-rw-r--r--ui/tests/unit/bootstrap.php3
-rw-r--r--ui/tests/unit/include/classes/import/CImportDataAdapterTest.php16
-rw-r--r--ui/tests/unit/include/classes/parsers/CPrometheusOutputParserTest.php42
-rw-r--r--ui/tests/unit/include/classes/parsers/CPrometheusPatternParserTest.php169
-rw-r--r--ui/tests/unit/include/classes/validators/CApiInputValidatorTest.php2604
-rw-r--r--ui/tr_events.php47
-rw-r--r--ui/widgets/actionlog/Widget.php31
-rw-r--r--ui/widgets/actionlog/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetActionLogView.php)60
-rw-r--r--ui/widgets/actionlog/includes/WidgetForm.php59
-rw-r--r--ui/widgets/actionlog/manifest.json14
-rw-r--r--ui/widgets/actionlog/views/widget.edit.php36
-rw-r--r--ui/widgets/actionlog/views/widget.view.php (renamed from ui/app/views/monitoring.widget.actionlog.view.php)27
-rw-r--r--ui/widgets/clock/Widget.php48
-rw-r--r--ui/widgets/clock/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetClockView.php)218
-rw-r--r--ui/widgets/clock/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.clock.js)4
-rw-r--r--ui/widgets/clock/includes/WidgetForm.php142
-rw-r--r--ui/widgets/clock/manifest.json26
-rw-r--r--ui/widgets/clock/views/widget.edit.js.php105
-rw-r--r--ui/widgets/clock/views/widget.edit.php130
-rw-r--r--ui/widgets/clock/views/widget.view.php (renamed from ui/app/views/monitoring.widget.clock.view.php)48
-rw-r--r--ui/widgets/dataover/Widget.php35
-rw-r--r--ui/widgets/dataover/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetDataOverView.php)33
-rw-r--r--ui/widgets/dataover/includes/WidgetForm.php66
-rw-r--r--ui/widgets/dataover/manifest.json14
-rw-r--r--ui/widgets/dataover/views/widget.edit.php51
-rw-r--r--ui/widgets/dataover/views/widget.view.php34
-rw-r--r--ui/widgets/discovery/Widget.php31
-rw-r--r--ui/widgets/discovery/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetDiscoveryView.php)25
-rw-r--r--ui/widgets/discovery/manifest.json20
-rw-r--r--ui/widgets/discovery/views/widget.view.php (renamed from ui/app/views/monitoring.widget.discovery.view.php)26
-rw-r--r--ui/widgets/favgraphs/Widget.php31
-rw-r--r--ui/widgets/favgraphs/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetFavGraphsView.php)29
-rw-r--r--ui/widgets/favgraphs/manifest.json21
-rw-r--r--ui/widgets/favgraphs/views/widget.view.php (renamed from ui/app/views/monitoring.widget.favgraphs.view.php)23
-rw-r--r--ui/widgets/favmaps/Widget.php31
-rw-r--r--ui/widgets/favmaps/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetFavMapsView.php)29
-rw-r--r--ui/widgets/favmaps/manifest.json21
-rw-r--r--ui/widgets/favmaps/views/widget.view.php (renamed from ui/app/views/monitoring.widget.favmaps.view.php)23
-rw-r--r--ui/widgets/geomap/Widget.php57
-rw-r--r--ui/widgets/geomap/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetGeoMapView.php)145
-rw-r--r--ui/widgets/geomap/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.geomap.js)43
-rw-r--r--ui/widgets/geomap/includes/WidgetForm.php60
-rw-r--r--ui/widgets/geomap/manifest.json20
-rw-r--r--ui/widgets/geomap/views/widget.edit.php48
-rw-r--r--ui/widgets/geomap/views/widget.view.php34
-rw-r--r--ui/widgets/graph/Widget.php40
-rw-r--r--ui/widgets/graph/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetGraphView.php)83
-rw-r--r--ui/widgets/graph/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.graph.js)8
-rw-r--r--ui/widgets/graph/includes/WidgetForm.php84
-rw-r--r--ui/widgets/graph/manifest.json22
-rw-r--r--ui/widgets/graph/views/widget.edit.php (renamed from ui/include/classes/widgets/views/widget.actionlog.form.view.php)48
-rw-r--r--ui/widgets/graph/views/widget.view.php49
-rw-r--r--ui/widgets/graphprototype/Widget.php31
-rw-r--r--ui/widgets/graphprototype/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetIteratorGraphPrototypeView.php)141
-rw-r--r--ui/widgets/graphprototype/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.graph-prototype.js)4
-rw-r--r--ui/widgets/graphprototype/includes/WidgetForm.php102
-rw-r--r--ui/widgets/graphprototype/manifest.json28
-rw-r--r--ui/widgets/graphprototype/views/widget.edit.php58
-rw-r--r--ui/widgets/hostavail/Widget.php31
-rw-r--r--ui/widgets/hostavail/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetHostAvailView.php)38
-rw-r--r--ui/widgets/hostavail/assets/js/class.widget.js27
-rw-r--r--ui/widgets/hostavail/includes/WidgetForm.php61
-rw-r--r--ui/widgets/hostavail/manifest.json25
-rw-r--r--ui/widgets/hostavail/views/widget.edit.php (renamed from ui/include/classes/widgets/views/widget.discovery.form.view.php)30
-rw-r--r--ui/widgets/hostavail/views/widget.view.php (renamed from ui/app/views/monitoring.widget.hostavail.view.php)22
-rw-r--r--ui/widgets/item/Widget.php55
-rw-r--r--ui/widgets/item/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetItemView.php)281
-rw-r--r--ui/widgets/item/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.item.js)4
-rw-r--r--ui/widgets/item/includes/WidgetForm.php247
-rw-r--r--ui/widgets/item/manifest.json25
-rw-r--r--ui/widgets/item/views/widget.edit.js.php (renamed from ui/include/classes/widgets/views/js/widget.item.form.view.js.php)127
-rw-r--r--ui/widgets/item/views/widget.edit.php237
-rw-r--r--ui/widgets/item/views/widget.view.php (renamed from ui/app/views/monitoring.widget.item.view.php)57
-rw-r--r--ui/widgets/map/Widget.php34
-rw-r--r--ui/widgets/map/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetMapView.php)41
-rw-r--r--ui/widgets/map/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.map.js)44
-rw-r--r--ui/widgets/map/includes/WidgetForm.php70
-rw-r--r--ui/widgets/map/includes/WidgetMap.php (renamed from ui/include/classes/html/CDashboardWidgetMap.php)130
-rw-r--r--ui/widgets/map/manifest.json25
-rw-r--r--ui/widgets/map/views/widget.edit.php (renamed from ui/app/views/monitoring.widget.geomap.view.php)34
-rw-r--r--ui/widgets/map/views/widget.view.php36
-rw-r--r--ui/widgets/navtree/Widget.php49
-rw-r--r--ui/widgets/navtree/actions/NavTreeItemEdit.php (renamed from ui/app/controllers/CControllerWidgetNavTreeItemEdit.php)26
-rw-r--r--ui/widgets/navtree/actions/NavTreeItemUpdate.php (renamed from ui/app/controllers/CControllerWidgetNavTreeItemUpdate.php)31
-rw-r--r--ui/widgets/navtree/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetNavTreeView.php)227
-rw-r--r--ui/widgets/navtree/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.navtree.js)24
-rw-r--r--ui/widgets/navtree/includes/NavigationTree.php (renamed from ui/include/classes/html/CNavigationTree.php)40
-rw-r--r--ui/widgets/navtree/includes/WidgetForm.php49
-rw-r--r--ui/widgets/navtree/manifest.json34
-rw-r--r--ui/widgets/navtree/views/navtreeitem.edit.js.php (renamed from ui/app/views/js/monitoring.widget.navtreeitem.edit.js.php)6
-rw-r--r--ui/widgets/navtree/views/navtreeitem.edit.php (renamed from ui/app/views/monitoring.widget.navtreeitem.edit.php)58
-rw-r--r--ui/widgets/navtree/views/widget.edit.php53
-rw-r--r--ui/widgets/navtree/views/widget.view.php (renamed from ui/app/views/monitoring.widget.navtree.view.php)33
-rw-r--r--ui/widgets/plaintext/Widget.php31
-rw-r--r--ui/widgets/plaintext/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetPlainTextView.php)53
-rw-r--r--ui/widgets/plaintext/includes/WidgetForm.php68
-rw-r--r--ui/widgets/plaintext/manifest.json21
-rw-r--r--ui/widgets/plaintext/views/widget.edit.php (renamed from ui/include/classes/widgets/views/widget.systeminfo.form.view.php)40
-rw-r--r--ui/widgets/plaintext/views/widget.view.php (renamed from ui/app/views/monitoring.widget.plaintext.view.php)29
-rw-r--r--ui/widgets/problemhosts/Widget.php31
-rw-r--r--ui/widgets/problemhosts/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetProblemHostsView.php)62
-rw-r--r--ui/widgets/problemhosts/includes/WidgetForm.php86
-rw-r--r--ui/widgets/problemhosts/manifest.json14
-rw-r--r--ui/widgets/problemhosts/views/widget.edit.php65
-rw-r--r--ui/widgets/problemhosts/views/widget.view.php (renamed from ui/app/views/monitoring.widget.problemhosts.view.php)28
-rw-r--r--ui/widgets/problems/Widget.php31
-rw-r--r--ui/widgets/problems/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetProblemsView.php)97
-rw-r--r--ui/widgets/problems/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.problems.js)0
-rw-r--r--ui/widgets/problems/includes/WidgetForm.php159
-rw-r--r--ui/widgets/problems/manifest.json20
-rw-r--r--ui/widgets/problems/views/widget.edit.js.php59
-rw-r--r--ui/widgets/problems/views/widget.edit.php93
-rw-r--r--ui/widgets/problems/views/widget.view.php (renamed from ui/app/views/monitoring.widget.problems.view.php)34
-rw-r--r--ui/widgets/problemsbysv/Widget.php (renamed from include/disk.h)19
-rw-r--r--ui/widgets/problemsbysv/actions/WidgetView.php77
-rw-r--r--ui/widgets/problemsbysv/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.problemsbysv.js)8
-rw-r--r--ui/widgets/problemsbysv/includes/WidgetForm.php123
-rw-r--r--ui/widgets/problemsbysv/manifest.json20
-rw-r--r--ui/widgets/problemsbysv/views/widget.edit.js.php44
-rw-r--r--ui/widgets/problemsbysv/views/widget.edit.php79
-rw-r--r--ui/widgets/problemsbysv/views/widget.view.php (renamed from ui/app/views/monitoring.widget.problemsbysv.view.php)36
-rw-r--r--ui/widgets/slareport/Widget.php31
-rw-r--r--ui/widgets/slareport/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetSlaReportView.php)52
-rw-r--r--ui/widgets/slareport/includes/WidgetForm.php127
-rw-r--r--ui/widgets/slareport/manifest.json17
-rw-r--r--ui/widgets/slareport/views/widget.edit.js.php (renamed from ui/include/classes/widgets/views/js/widget.slareport.form.view.js.php)8
-rw-r--r--ui/widgets/slareport/views/widget.edit.php55
-rw-r--r--ui/widgets/slareport/views/widget.view.php (renamed from ui/app/views/monitoring.widget.slareport.view.php)22
-rw-r--r--ui/widgets/svggraph/Widget.php46
-rw-r--r--ui/widgets/svggraph/actions/WidgetView.php195
-rw-r--r--ui/widgets/svggraph/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.svggraph.js)4
-rw-r--r--ui/widgets/svggraph/includes/WidgetForm.php470
-rw-r--r--ui/widgets/svggraph/manifest.json20
-rw-r--r--ui/widgets/svggraph/views/widget.edit.js.php (renamed from ui/include/classes/widgets/views/js/widget.svggraph.form.view.js.php)39
-rw-r--r--ui/widgets/svggraph/views/widget.edit.php289
-rw-r--r--ui/widgets/svggraph/views/widget.view.php (renamed from ui/include/classes/widgets/views/widget.favmaps.form.view.php)21
-rw-r--r--ui/widgets/systeminfo/Widget.php31
-rw-r--r--ui/widgets/systeminfo/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetSystemInfoView.php)27
-rw-r--r--ui/widgets/systeminfo/includes/WidgetForm.php42
-rw-r--r--ui/widgets/systeminfo/manifest.json17
-rw-r--r--ui/widgets/systeminfo/views/widget.edit.php33
-rw-r--r--ui/widgets/systeminfo/views/widget.view.php (renamed from ui/app/views/monitoring.widget.systeminfo.view.php)22
-rw-r--r--ui/widgets/tophosts/Widget.php36
-rw-r--r--ui/widgets/tophosts/actions/ColumnEdit.php (renamed from ui/app/controllers/CControllerPopupTopHostsColumnEdit.php)102
-rw-r--r--ui/widgets/tophosts/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetTopHostsView.php)89
-rw-r--r--ui/widgets/tophosts/includes/WidgetForm.php139
-rw-r--r--ui/widgets/tophosts/manifest.json19
-rw-r--r--ui/widgets/tophosts/views/column.edit.js.php (renamed from ui/app/views/js/popup.tophosts.column.edit.js.php)5
-rw-r--r--ui/widgets/tophosts/views/column.edit.php (renamed from ui/app/views/popup.tophosts.column.edit.php)28
-rw-r--r--ui/widgets/tophosts/views/widget.edit.js.php (renamed from ui/include/classes/widgets/views/js/widget.tophosts.form.view.js.php)11
-rw-r--r--ui/widgets/tophosts/views/widget.edit.php85
-rw-r--r--ui/widgets/tophosts/views/widget.view.php (renamed from ui/app/views/monitoring.widget.tophosts.view.php)30
-rw-r--r--ui/widgets/trigover/Widget.php31
-rw-r--r--ui/widgets/trigover/actions/WidgetView.php78
-rw-r--r--ui/widgets/trigover/assets/js/class.widget.js (renamed from ui/js/widgets/class.widget.trigerover.js)0
-rw-r--r--ui/widgets/trigover/includes/WidgetForm.php73
-rw-r--r--ui/widgets/trigover/manifest.json20
-rw-r--r--ui/widgets/trigover/partials/table.left.php (renamed from ui/app/partials/trigoverview.table.left.php)0
-rw-r--r--ui/widgets/trigover/partials/table.top.php (renamed from ui/app/partials/trigoverview.table.top.php)0
-rw-r--r--ui/widgets/trigover/views/widget.edit.php54
-rw-r--r--ui/widgets/trigover/views/widget.view.php34
-rw-r--r--ui/widgets/url/Widget.php31
-rw-r--r--ui/widgets/url/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetUrlView.php)44
-rw-r--r--ui/widgets/url/assets/js/class.widget.js26
-rw-r--r--ui/widgets/url/includes/WidgetForm.php50
-rw-r--r--ui/widgets/url/manifest.json22
-rw-r--r--ui/widgets/url/views/widget.edit.php (renamed from ui/include/classes/widgets/views/widget.favgraphs.form.view.php)25
-rw-r--r--ui/widgets/url/views/widget.view.php (renamed from ui/app/views/monitoring.widget.url.view.php)23
-rw-r--r--ui/widgets/web/Widget.php31
-rw-r--r--ui/widgets/web/actions/WidgetView.php (renamed from ui/app/controllers/CControllerWidgetWebView.php)47
-rw-r--r--ui/widgets/web/includes/WidgetForm.php63
-rw-r--r--ui/widgets/web/manifest.json20
-rw-r--r--ui/widgets/web/views/widget.edit.php53
-rw-r--r--ui/widgets/web/views/widget.view.php (renamed from ui/app/views/monitoring.widget.web.view.php)28
1297 files changed, 86225 insertions, 55204 deletions
diff --git a/.gitignore b/.gitignore
index a7b68a17a62..1f5a959de20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -144,6 +144,7 @@ tests/libs/zbxcommon/zbx_function_find
tests/libs/zbxcommon/zbx_function_get_param_dyn
tests/libs/zbxcommon/zbx_get_week_number
tests/libs/zbxcommon/zbx_interval_preproc
+tests/libs/zbxcommon/zbx_iso8601_utc
tests/libs/zbxcommon/zbx_json_to_xml
tests/libs/zbxcommon/zbx_ltrim_utf8
tests/libs/zbxcommon/zbx_rtrim_utf8
@@ -190,8 +191,8 @@ tests/libs/zbxhistory/zbx_history_get_values
tests/libs/zbxjson/zbx_json_decodevalue
tests/libs/zbxjson/zbx_json_decodevalue_dyn
tests/libs/zbxjson/zbx_json_open_path
+tests/libs/zbxjson/zbx_jsonobj_query
tests/libs/zbxjson/zbx_jsonpath_compile
-tests/libs/zbxjson/zbx_jsonpath_query
tests/libs/zbxprometheus/prometheus_filter_init
tests/libs/zbxprometheus/prometheus_parse_row
tests/libs/zbxprometheus/zbx_prometheus_pattern
@@ -205,6 +206,8 @@ tests/libs/zbxserver/macro_fmttime
tests/libs/zbxserver/substitute_lld_macros
tests/libs/zbxserver/valuemaps
tests/libs/zbxsysinfo/check_key_access_rules
+tests/libs/zbxsysinfo/zbx_execute_agent_check
+tests/libs/zbxsysinfo/zbx_execute_agent_check_http
tests/libs/zbxsysinfo/common/system_localtime
tests/libs/zbxsysinfo/common/vfs_file_exists
tests/libs/zbxsysinfo/common/web_page_get
@@ -226,6 +229,7 @@ tests/libs/zbxcommon/zbx_tm_add
tests/libs/zbxcommon/zbx_tm_sub
tests/libs/zbxcommon/zbx_tm_round_up
tests/libs/zbxcommon/zbx_tm_round_down
+tests/libs/zbxtime/zbx_iso8601_utc
tests/libs/zbxtrends/zbx_baseline_get_data
tests/libs/zbxtrends/zbx_trends_parse_range
tests/libs/zbxsysinfo/process_http
diff --git a/ChangeLog b/ChangeLog
index 90b2caf2e91..9560c9f105d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,23 @@
+Changes for 6.4.0beta4
+
+New features:
+
+Bug fixes:
+
+--------------------------------------------------------------------------------
Changes for 6.4.0beta3
New features:
+..F....... [ZBXNEXT-7469] simplified creation of dashboard widgets; moved widgets to modules; updated modules framework (ashubin, averza)
+A.F......T [ZBXNEXT-6470,ZBXNEXT-6980] implemented audit logging of item and item prototype API objects (abiba, agriscenko, dgoloscapov, jfreibergs, vmaksimovs)
+.......PS. [ZBXNEXT-8040] added object based JSON parsing and JSONPath optimizations (wiper)
+.........T [ZBXNEXT-7940] added template OS processes by Zabbix agent (egordymov)
Bug fixes:
+.......PS. [ZBX-21655] fixed VMware datastore discovery to not return the same datastore multiple times (asestakovs)
+..F....... [ZBX-21677] fixed checkbox resetting in Monitoring->Latest data and Monitoring->Problems (rdetlavs)
+..F....... [ZBX-21687] fixed persistent preloader icons over dashboard widgets on Safari 16 (averza)
+...G...... [ZBX-21689] fixed proc.num to not crash the agent on Windows when 'user' parameter is set (asestakovs)
........S. [ZBX-21463] fixed Zabbix server to not attach interface to script items during linking (arimdjonoks)
--------------------------------------------------------------------------------
@@ -91,6 +106,29 @@ A.F.....S. [ZBXNEXT-3496] added ability to add own links to Host and Event conte
..F....PS. [ZBXNEXT-6406] removed requirement of host interface for server-originated checks (agavriluks, gcalenko, kprutkovs)
--------------------------------------------------------------------------------
+Changes for 6.2.5rc1
+
+New features:
+.........T [ZBXNEXT-6844] added Cisco Meraki template (abiba, vkhaliev)
+.......PS. [ZBXNEXT-8009] added jsonpath optimizations (wiper)
+.........T [ZBXNEXT-7940] added template OS processes by Zabbix agent (egordymov)
+
+Bug fixes:
+..F....... [ZBX-21785] updated Actions checkboxes in Audit log form filter for User directory and Autoregistration (kkuzmina)
+........S. [ZBX-21765] removed HTTP header "Accept-Encoding" from defaults in a web scenario step request (dimir)
+.......... [ZBX-21715] fixed Zabbix JS (zabbix_js) crash when parsing short version of "timeout" option -t (dimir)
+.......PS. [ZBX-21655] fixed VMware datastore discovery to not return same datastore multiple times (asestakovs)
+.......P.. [ZBX-21468] fixed synchronization of the "hstgrp" configuration table (jxl)
+..F....... [ZBX-21677] fixed checkbox resetting in Monitoring->Latest data and Monitoring->Problems (rdetlavs)
+..F....... [ZBX-21687] fixed persistent preloader icons over dashboard widgets on Safari 16 (averza)
+...G...... [ZBX-21689] fixed proc.num to not crash agent on Windows when 'user' parameter is set (asestakovs)
+
+--------------------------------------------------------------------------------
+Changes for 6.2.4
+
+6.2.4rc1 was released as 6.2.4 without any changes
+
+--------------------------------------------------------------------------------
Changes for 6.2.4rc1
New features:
@@ -522,6 +560,25 @@ A.F....PS. [ZBXNEXT-7402,ZBXNEXT-7413] added support for CyberArk Vault (acikuns
..F....... [ZBXNEXT-7138] added modal form for API tokens in User settings->API tokens and Administration->General->API tokens (epulke)
--------------------------------------------------------------------------------
+Changes for 6.0.11rc1
+
+New features:
+.........T [ZBXNEXT-6844] added Cisco Meraki template (abiba, vkhaliev)
+.......PS. [ZBXNEXT-8009] added jsonpath optimizations (wiper)
+
+Bug fixes:
+........S. [ZBX-21765] removed HTTP header "Accept-Encoding" from defaults in a web scenario step request (dimir)
+.......... [ZBX-21715] fixed Zabbix JS (zabbix_js) crash when parsing short version of "timeout" option -t (dimir)
+........S. [ZBX-21655] fixed VMware datastore discovery to not return same datastore multiple times (asestakovs)
+..F....... [ZBX-21677] fixed checkbox resetting in Monitoring->Latest data and Monitoring->Problems (rdetlavs)
+..F....... [ZBX-21687] fixed persistent preloader icons over dashboard widgets on Safari 16 (averza)
+
+--------------------------------------------------------------------------------
+Changes for 6.0.10
+
+6.0.10rc2 was released as 6.0.10 without any changes
+
+--------------------------------------------------------------------------------
Changes for 6.0.10rc2
6.0.10rc2 was released as 6.0.10rc1 including missing templates
@@ -2707,6 +2764,21 @@ A......... [ZBX-17955] fixed "medias" parameter named inconsistency in user.crea
.......PS. [ZBX-17548] don't store text items with history 0 in proxy history (wiper)
--------------------------------------------------------------------------------
+Changes for 5.0.30rc1
+
+New features:
+.......PS. [ZBXNEXT-8009] added jsonpath optimizations (wiper)
+
+Bug fixes:
+.......... [ZBX-21715] fixed Zabbix JS (zabbix_js) crash when parsing short version of "timeout" option -t (dimir)
+.........T [ZBX-21844] fixed script in OPSgenie media (atocko)
+
+--------------------------------------------------------------------------------
+Changes for 5.0.29
+
+5.0.29rc2 was released as 5.0.29 without any changes
+
+--------------------------------------------------------------------------------
Changes for 5.0.29rc2
5.0.29rc2 was released as 5.0.29rc1 including missing templates
diff --git a/ChangeLog.d/bugfix/ZBX-21786 b/ChangeLog.d/bugfix/ZBX-21786
new file mode 100644
index 00000000000..b49e12c1d14
--- /dev/null
+++ b/ChangeLog.d/bugfix/ZBX-21786
@@ -0,0 +1 @@
+.......PS. [ZBX-21786] fixed 'invalid timeout' error occurring after script item parameters removal (asestakovs)
diff --git a/ChangeLog.d/bugfix/ZBX-21823 b/ChangeLog.d/bugfix/ZBX-21823
new file mode 100644
index 00000000000..d62c47a2281
--- /dev/null
+++ b/ChangeLog.d/bugfix/ZBX-21823
@@ -0,0 +1 @@
+...G...... [ZBX-21823] fixed vfs.fs.inode and vfs.fs.get to handle file systems with zero total inodes count (asestakovs)
diff --git a/ChangeLog.d/bugfix/ZBX-21869 b/ChangeLog.d/bugfix/ZBX-21869
new file mode 100644
index 00000000000..3591d2cbc09
--- /dev/null
+++ b/ChangeLog.d/bugfix/ZBX-21869
@@ -0,0 +1 @@
+.......... [ZBX-21869] fixed database upgrade from 5.0 on setups requiring primary keys for tables (wiper)
diff --git a/ChangeLog.d/feature/ZBX-20478 b/ChangeLog.d/feature/ZBX-20478
new file mode 100644
index 00000000000..eb007242743
--- /dev/null
+++ b/ChangeLog.d/feature/ZBX-20478
@@ -0,0 +1 @@
+.........T [ZBX-20478] fixed script k8s cluster state (egordymov)
diff --git a/ChangeLog.d/feature/ZBXNEXT-7903 b/ChangeLog.d/feature/ZBXNEXT-7903
new file mode 100644
index 00000000000..48f0ec949d0
--- /dev/null
+++ b/ChangeLog.d/feature/ZBXNEXT-7903
@@ -0,0 +1 @@
+.........T [ZBXNEXT-7903] added templates for Azure PostgreSQL servers (vkhaliev)
diff --git a/ChangeLog.d/feature/ZBXNEXT-7949 b/ChangeLog.d/feature/ZBXNEXT-7949
new file mode 100644
index 00000000000..05200cba95b
--- /dev/null
+++ b/ChangeLog.d/feature/ZBXNEXT-7949
@@ -0,0 +1 @@
+.........T [ZBXNEXT-7949] added a suffix "by" of template names (egordymov)
diff --git a/build/mingw/Makefile b/build/mingw/Makefile
index 66dabc2c9e6..dd7c35a73b1 100644
--- a/build/mingw/Makefile
+++ b/build/mingw/Makefile
@@ -34,6 +34,7 @@ OBJS = \
$(OUTPUTDIR)\md5.o \
$(OUTPUTDIR)\sysinfo.o \
$(OUTPUTDIR)\vector.o \
+ $(OUTPUTDIR)\hashset.o \
$(OUTPUTDIR)\zbxregexp.o \
$(OUTPUTDIR)\persistent_state.o \
$(OUTPUTDIR)\logfiles.o \
@@ -42,6 +43,7 @@ OBJS = \
$(OUTPUTDIR)\json.o \
$(OUTPUTDIR)\json_parser.o \
$(OUTPUTDIR)\jsonpath.o \
+ $(OUTPUTDIR)\jsonobj.o \
$(OUTPUTDIR)\sha256crypt.o \
$(OUTPUTDIR)\variant.o \
$(OUTPUTDIR)\sysinfo_system.o \
@@ -179,6 +181,9 @@ $(OUTPUTDIR)\json_parser.o: $(TOPDIR)\src\libs\zbxjson\json_parser.c
$(OUTPUTDIR)\jsonpath.o: $(TOPDIR)\src\libs\zbxjson\jsonpath.c
$(CC) $(CFLAGS) -DUNICODE -DWITH_COMMON_METRICS -c $^ -o $@
+$(OUTPUTDIR)\jsonobj.o: $(TOPDIR)\src\libs\zbxjson\jsonobj.c
+ $(CC) $(CFLAGS) -DUNICODE -DWITH_COMMON_METRICS -c $^ -o $@
+
$(OUTPUTDIR)\sha256crypt.o: $(TOPDIR)\src\libs\zbxhash\sha256crypt.c
$(CC) $(CFLAGS) -DUNICODE -DWITH_COMMON_METRICS -c $^ -o $@
@@ -209,6 +214,9 @@ $(OUTPUTDIR)\sysinfo_alias.o: $(TOPDIR)\src\libs\zbxsysinfo\alias\alias.c
$(OUTPUTDIR)\vector.o: $(TOPDIR)\src\libs\zbxalgo\vector.c
$(CC) $(CFLAGS) -DUNICODE -c $^ -o $@
+$(OUTPUTDIR)\hashset.o: $(TOPDIR)\src\libs\zbxalgo\hashset.c
+ $(CC) $(CFLAGS) -DUNICODE -c $^ -o $@
+
$(OUTPUTDIR)\version.o: $(TOPDIR)\src\libs\zbxversion\version.c
$(CC) $(CFLAGS) -DUNICODE -c $^ -o $@
diff --git a/build/win32/project/Makefile_agent b/build/win32/project/Makefile_agent
index da692ac420a..8b37be7e784 100644
--- a/build/win32/project/Makefile_agent
+++ b/build/win32/project/Makefile_agent
@@ -37,6 +37,7 @@ ADD_RFLAGS = /d "ZABBIX_AGENT"
OBJS = \
..\..\..\src\libs\zbxalgo\algodefs.o \
..\..\..\src\libs\zbxalgo\vector.o \
+ ..\..\..\src\libs\zbxalgo\hashset.o \
..\..\..\src\libs\zbxcommon\comms.o \
..\..\..\src\libs\zbxip\ip.o \
..\..\..\src\libs\zbxip\iprange.o \
@@ -66,6 +67,7 @@ OBJS = \
..\..\..\src\libs\zbxjson\json.o \
..\..\..\src\libs\zbxjson\json_parser.o \
..\..\..\src\libs\zbxjson\jsonpath.o \
+ ..\..\..\src\libs\zbxjson\jsonobj.o \
..\..\..\src\libs\zbxlog\log.o \
..\..\..\src\libs\zbxmutexs\mutexs.o \
..\..\..\src\libs\zbxsymbols\symbols.o \
@@ -110,7 +112,7 @@ OBJS = \
..\..\..\src\libs\zbxvariant\variant.o \
..\..\..\src\libs\zbxversion\version.o \
..\..\..\src\libs\zbxwin32\perfmon.o \
- ..\..\..\src\libs\zbxwin32\service.o \
+ ..\..\..\src\libs\zbxwinservice\service.o \
..\..\..\src\zabbix_agent\active.o \
..\..\..\src\zabbix_agent\cpustat.o \
..\..\..\src\zabbix_agent\eventlog.o \
diff --git a/build/win32/project/Makefile_get b/build/win32/project/Makefile_get
index d10b275b2d4..8fe19a2417a 100644
--- a/build/win32/project/Makefile_get
+++ b/build/win32/project/Makefile_get
@@ -29,6 +29,7 @@ ADD_RFLAGS = /d "ZABBIX_GET"
OBJS = \
..\..\..\src\libs\zbxalgo\algodefs.o \
..\..\..\src\libs\zbxalgo\vector.o \
+ ..\..\..\src\libs\zbxalgo\hashset.o \
..\..\..\src\libs\zbxcommon\comms.o \
..\..\..\src\libs\zbxip\ip.o \
..\..\..\src\libs\zbxip\iprange.o \
@@ -56,6 +57,7 @@ OBJS = \
..\..\..\src\libs\zbxjson\json.o \
..\..\..\src\libs\zbxjson\json_parser.o \
..\..\..\src\libs\zbxjson\jsonpath.o \
+ ..\..\..\src\libs\zbxjson\jsonobj.o \
..\..\..\src\libs\zbxlog\log.o \
..\..\..\src\libs\zbxmutexs\mutexs.o \
..\..\..\src\libs\zbxsymbols\symbols.o \
diff --git a/build/win32/project/Makefile_sender b/build/win32/project/Makefile_sender
index d7443a2560e..e22e8ce79df 100644
--- a/build/win32/project/Makefile_sender
+++ b/build/win32/project/Makefile_sender
@@ -56,6 +56,7 @@ OBJS = \
..\..\..\src\libs\zbxjson\json.o \
..\..\..\src\libs\zbxjson\json_parser.o \
..\..\..\src\libs\zbxjson\jsonpath.o \
+ ..\..\..\src\libs\zbxjson\jsonobj.o \
..\..\..\src\libs\zbxlog\log.o \
..\..\..\src\libs\zbxmutexs\mutexs.o \
..\..\..\src\libs\zbxsymbols\symbols.o \
@@ -64,6 +65,7 @@ OBJS = \
..\..\..\src\libs\zbxwin32\fatal.o \
..\..\..\src\libs\zbxalgo\algodefs.o \
..\..\..\src\libs\zbxalgo\vector.o \
+ ..\..\..\src\libs\zbxalgo\hashset.o \
..\..\..\src\libs\zbxregexp\zbxregexp.o \
..\..\..\src\libs\zbxversion\version.o \
..\..\..\src\libs\zbxxml\xml.o \
diff --git a/build/win32/project/Makefile_sender_dll b/build/win32/project/Makefile_sender_dll
index eb8275cba64..0a5d1c05fd8 100644
--- a/build/win32/project/Makefile_sender_dll
+++ b/build/win32/project/Makefile_sender_dll
@@ -60,6 +60,7 @@ OBJS = \
..\..\..\src\libs\zbxjson\json.o \
..\..\..\src\libs\zbxjson\json_parser.o \
..\..\..\src\libs\zbxjson\jsonpath.o \
+ ..\..\..\src\libs\zbxjson\jsonobj.o \
..\..\..\src\libs\zbxlog\log.o \
..\..\..\src\libs\zbxmutexs\mutexs.o \
..\..\..\src\libs\zbxsymbols\symbols.o \
@@ -68,6 +69,7 @@ OBJS = \
..\..\..\src\libs\zbxwin32\fatal.o \
..\..\..\src\libs\zbxalgo\algodefs.o \
..\..\..\src\libs\zbxalgo\vector.o \
+ ..\..\..\src\libs\zbxalgo\hashset.o \
..\..\..\src\libs\zbxregexp\zbxregexp.o \
..\..\..\src\libs\zbxversion\version.o \
..\..\..\src\libs\zbxxml\xml.o \
diff --git a/build/win32/project/Makefile_targets.inc b/build/win32/project/Makefile_targets.inc
index 94184647751..aa5a3a6d468 100644
--- a/build/win32/project/Makefile_targets.inc
+++ b/build/win32/project/Makefile_targets.inc
@@ -118,6 +118,9 @@ $(RESOURCE_RES): $(RESOURCE_RC) $(RESOURCE_H) $(DESC_H)
{..\..\..\src\libs\zbxwin32}.c{..\..\..\src\libs\zbxwin32}.o:
$(CC) $? /Fo"$@" $(CFLAGS)
+{..\..\..\src\libs\zbxwinservice}.c{..\..\..\src\libs\zbxwinservice}.o:
+ $(CC) $? /Fo"$@" $(CFLAGS)
+
{..\..\..\src\zabbix_agent\logfiles}.c{..\..\..\src\zabbix_agent\logfiles}.o:
$(CC) $? /Fo"$@" $(CFLAGS)
diff --git a/configure.ac b/configure.ac
index 4bd1c443aa8..1a13a5d0365 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,7 +19,7 @@ dnl
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([Zabbix],[6.4.0beta3])
+AC_INIT([Zabbix],[6.4.0beta4])
AC_CONFIG_SRCDIR(src/zabbix_server/server.c)
AM_INIT_AUTOMAKE([subdir-objects tar-pax])
@@ -1953,8 +1953,11 @@ AC_CONFIG_FILES([
src/libs/zbxcrypto/Makefile
src/libs/zbxcyberark/Makefile
src/libs/zbxdb/Makefile
- src/libs/zbxdbcache/Makefile
+ src/libs/zbxcacheconfig/Makefile
+ src/libs/zbxcachehistory/Makefile
+ src/libs/zbxcachevalue/Makefile
src/libs/zbxdbhigh/Makefile
+ src/libs/zbxdbwrap/Makefile
src/libs/zbxdbschema/Makefile
src/libs/zbxdbupgrade/Makefile
src/libs/zbxdiag/Makefile
diff --git a/create/src/dashboards.tmpl b/create/src/dashboards.tmpl
index 3e760ea80dd..ff173c9508b 100644
--- a/create/src/dashboards.tmpl
+++ b/create/src/dashboards.tmpl
@@ -176,540 +176,540 @@ FIELDS|dashboard_pageid|dashboardid|name|display_period|sortorder|
ROW |1 |1 | |0 |0 |
ROW |2 |2 | |0 |0 |
ROW |57 |57 | |0 |0 |
-ROW |2289 |4 | |0 |0 |
-ROW |2290 |3 | |0 |0 |
-ROW |2291 |58 | |0 |0 |
-ROW |2292 |5 | |0 |0 |
-ROW |2293 |43 | |0 |0 |
-ROW |2294 |44 | |0 |0 |
-ROW |2295 |45 | |0 |0 |
-ROW |2296 |40 | |0 |0 |
-ROW |2297 |41 | |0 |0 |
-ROW |2298 |42 | |0 |0 |
-ROW |2299 |28 | |0 |0 |
-ROW |2300 |30 | |0 |0 |
-ROW |2301 |8 | |0 |0 |
-ROW |2302 |9 | |0 |0 |
-ROW |2303 |12 | |0 |0 |
-ROW |2304 |13 | |0 |0 |
-ROW |2305 |37 | |0 |0 |
-ROW |2306 |39 | |0 |0 |
-ROW |2307 |36 | |0 |0 |
-ROW |2308 |59 | |0 |0 |
-ROW |2309 |38 | |0 |0 |
-ROW |2310 |60 | |0 |0 |
-ROW |2311 |159 | |0 |0 |
-ROW |2312 |160 | |0 |0 |
-ROW |2313 |161 | |0 |0 |
-ROW |2314 |162 | |0 |0 |
-ROW |2315 |163 | |0 |0 |
-ROW |2316 |164 | |0 |0 |
-ROW |2317 |23 | |0 |0 |
-ROW |2318 |24 | |0 |0 |
-ROW |2319 |53 | |0 |0 |
-ROW |2320 |48 | |0 |0 |
-ROW |2321 |49 | |0 |0 |
-ROW |2322 |18 | |0 |0 |
-ROW |2323 |56 | |0 |0 |
-ROW |2324 |7 | |0 |0 |
-ROW |2325 |29 | |0 |0 |
-ROW |2326 |54 | |0 |0 |
-ROW |2327 |27 | |0 |0 |
-ROW |2328 |26 | |0 |0 |
-ROW |2329 |16 | |0 |0 |
-ROW |2330 |14 | |0 |0 |
-ROW |2331 |21 | |0 |0 |
-ROW |2332 |19 | |0 |0 |
-ROW |2333 |61 | |0 |0 |
-ROW |2334 |62 | |0 |0 |
-ROW |2335 |63 | |0 |0 |
-ROW |2336 |64 | |0 |0 |
-ROW |2337 |65 | |0 |0 |
-ROW |2338 |66 | |0 |0 |
-ROW |2339 |67 | |0 |0 |
-ROW |2340 |68 | |0 |0 |
-ROW |2341 |69 | |0 |0 |
-ROW |2342 |70 | |0 |0 |
-ROW |2343 |71 | |0 |0 |
-ROW |2344 |72 | |0 |0 |
-ROW |2345 |73 | |0 |0 |
-ROW |2346 |74 | |0 |0 |
-ROW |2347 |75 | |0 |0 |
-ROW |2348 |76 | |0 |0 |
-ROW |2349 |77 | |0 |0 |
-ROW |2350 |78 | |0 |0 |
-ROW |2351 |79 | |0 |0 |
-ROW |2352 |80 | |0 |0 |
-ROW |2353 |81 | |0 |0 |
-ROW |2354 |82 | |0 |0 |
-ROW |2355 |83 | |0 |0 |
-ROW |2356 |84 | |0 |0 |
-ROW |2357 |85 | |0 |0 |
-ROW |2358 |86 | |0 |0 |
-ROW |2359 |87 | |0 |0 |
-ROW |2360 |88 | |0 |0 |
-ROW |2361 |89 | |0 |0 |
-ROW |2362 |90 | |0 |0 |
-ROW |2363 |91 | |0 |0 |
-ROW |2364 |92 | |0 |0 |
-ROW |2365 |93 | |0 |0 |
-ROW |2366 |94 | |0 |0 |
-ROW |2367 |95 | |0 |0 |
-ROW |2368 |96 | |0 |0 |
-ROW |2369 |97 | |0 |0 |
-ROW |2370 |98 | |0 |0 |
-ROW |2371 |99 | |0 |0 |
-ROW |2372 |100 | |0 |0 |
-ROW |2373 |101 | |0 |0 |
-ROW |2374 |102 | |0 |0 |
-ROW |2375 |103 | |0 |0 |
-ROW |2376 |104 | |0 |0 |
-ROW |2377 |105 | |0 |0 |
-ROW |2378 |106 | |0 |0 |
-ROW |2379 |107 | |0 |0 |
-ROW |2380 |108 | |0 |0 |
-ROW |2381 |109 | |0 |0 |
-ROW |2382 |110 | |0 |0 |
-ROW |2383 |111 | |0 |0 |
-ROW |2384 |112 | |0 |0 |
-ROW |2385 |113 | |0 |0 |
-ROW |2386 |114 | |0 |0 |
-ROW |2387 |115 | |0 |0 |
-ROW |2388 |116 | |0 |0 |
-ROW |2389 |117 | |0 |0 |
-ROW |2390 |118 | |0 |0 |
-ROW |2391 |119 | |0 |0 |
-ROW |2392 |120 | |0 |0 |
-ROW |2393 |121 | |0 |0 |
-ROW |2394 |122 | |0 |0 |
-ROW |2395 |123 | |0 |0 |
-ROW |2396 |124 | |0 |0 |
-ROW |2397 |125 | |0 |0 |
-ROW |2398 |126 | |0 |0 |
-ROW |2399 |127 | |0 |0 |
-ROW |2400 |128 | |0 |0 |
-ROW |2401 |129 | |0 |0 |
-ROW |2402 |130 | |0 |0 |
-ROW |2403 |131 | |0 |0 |
-ROW |2404 |132 | |0 |0 |
-ROW |2405 |133 | |0 |0 |
-ROW |2406 |134 | |0 |0 |
-ROW |2407 |135 | |0 |0 |
-ROW |2408 |136 | |0 |0 |
-ROW |2409 |137 | |0 |0 |
-ROW |2410 |138 | |0 |0 |
-ROW |2411 |139 | |0 |0 |
-ROW |2412 |50 | |0 |0 |
-ROW |2413 |51 | |0 |0 |
-ROW |2414 |52 | |0 |0 |
-ROW |2415 |140 | |0 |0 |
-ROW |2416 |17 | |0 |0 |
-ROW |2417 |141 | |0 |0 |
-ROW |2418 |15 | |0 |0 |
-ROW |2419 |10 | |0 |0 |
-ROW |2420 |11 | |0 |0 |
-ROW |2421 |142 | |0 |0 |
-ROW |2422 |55 | |0 |0 |
-ROW |2423 |31 | |0 |0 |
-ROW |2424 |32 | |0 |0 |
-ROW |2425 |33 | |0 |0 |
-ROW |2426 |143 | |0 |0 |
-ROW |2427 |22 | |0 |0 |
-ROW |2428 |144 | |0 |0 |
-ROW |2429 |20 | |0 |0 |
-ROW |2430 |145 | |0 |0 |
-ROW |2431 |146 | |0 |0 |
-ROW |2432 |158 | |0 |0 |
+ROW |2433 |4 | |0 |0 |
+ROW |2434 |3 | |0 |0 |
+ROW |2435 |58 | |0 |0 |
+ROW |2436 |5 | |0 |0 |
+ROW |2437 |43 | |0 |0 |
+ROW |2438 |44 | |0 |0 |
+ROW |2439 |45 | |0 |0 |
+ROW |2440 |40 | |0 |0 |
+ROW |2441 |41 | |0 |0 |
+ROW |2442 |42 | |0 |0 |
+ROW |2443 |28 | |0 |0 |
+ROW |2444 |30 | |0 |0 |
+ROW |2445 |8 | |0 |0 |
+ROW |2446 |9 | |0 |0 |
+ROW |2447 |12 | |0 |0 |
+ROW |2448 |13 | |0 |0 |
+ROW |2449 |37 | |0 |0 |
+ROW |2450 |39 | |0 |0 |
+ROW |2451 |36 | |0 |0 |
+ROW |2452 |59 | |0 |0 |
+ROW |2453 |38 | |0 |0 |
+ROW |2454 |60 | |0 |0 |
+ROW |2455 |159 | |0 |0 |
+ROW |2456 |160 | |0 |0 |
+ROW |2457 |161 | |0 |0 |
+ROW |2458 |162 | |0 |0 |
+ROW |2459 |163 | |0 |0 |
+ROW |2460 |164 | |0 |0 |
+ROW |2461 |23 | |0 |0 |
+ROW |2462 |24 | |0 |0 |
+ROW |2463 |53 | |0 |0 |
+ROW |2464 |48 | |0 |0 |
+ROW |2465 |49 | |0 |0 |
+ROW |2466 |18 | |0 |0 |
+ROW |2467 |56 | |0 |0 |
+ROW |2468 |7 | |0 |0 |
+ROW |2469 |29 | |0 |0 |
+ROW |2470 |54 | |0 |0 |
+ROW |2471 |27 | |0 |0 |
+ROW |2472 |26 | |0 |0 |
+ROW |2473 |16 | |0 |0 |
+ROW |2474 |14 | |0 |0 |
+ROW |2475 |21 | |0 |0 |
+ROW |2476 |19 | |0 |0 |
+ROW |2477 |61 | |0 |0 |
+ROW |2478 |62 | |0 |0 |
+ROW |2479 |63 | |0 |0 |
+ROW |2480 |64 | |0 |0 |
+ROW |2481 |65 | |0 |0 |
+ROW |2482 |66 | |0 |0 |
+ROW |2483 |67 | |0 |0 |
+ROW |2484 |68 | |0 |0 |
+ROW |2485 |69 | |0 |0 |
+ROW |2486 |70 | |0 |0 |
+ROW |2487 |71 | |0 |0 |
+ROW |2488 |72 | |0 |0 |
+ROW |2489 |73 | |0 |0 |
+ROW |2490 |74 | |0 |0 |
+ROW |2491 |75 | |0 |0 |
+ROW |2492 |76 | |0 |0 |
+ROW |2493 |77 | |0 |0 |
+ROW |2494 |78 | |0 |0 |
+ROW |2495 |79 | |0 |0 |
+ROW |2496 |80 | |0 |0 |
+ROW |2497 |81 | |0 |0 |
+ROW |2498 |82 | |0 |0 |
+ROW |2499 |83 | |0 |0 |
+ROW |2500 |84 | |0 |0 |
+ROW |2501 |85 | |0 |0 |
+ROW |2502 |86 | |0 |0 |
+ROW |2503 |87 | |0 |0 |
+ROW |2504 |88 | |0 |0 |
+ROW |2505 |89 | |0 |0 |
+ROW |2506 |90 | |0 |0 |
+ROW |2507 |91 | |0 |0 |
+ROW |2508 |92 | |0 |0 |
+ROW |2509 |93 | |0 |0 |
+ROW |2510 |94 | |0 |0 |
+ROW |2511 |95 | |0 |0 |
+ROW |2512 |96 | |0 |0 |
+ROW |2513 |97 | |0 |0 |
+ROW |2514 |98 | |0 |0 |
+ROW |2515 |99 | |0 |0 |
+ROW |2516 |100 | |0 |0 |
+ROW |2517 |101 | |0 |0 |
+ROW |2518 |102 | |0 |0 |
+ROW |2519 |103 | |0 |0 |
+ROW |2520 |104 | |0 |0 |
+ROW |2521 |105 | |0 |0 |
+ROW |2522 |106 | |0 |0 |
+ROW |2523 |107 | |0 |0 |
+ROW |2524 |108 | |0 |0 |
+ROW |2525 |109 | |0 |0 |
+ROW |2526 |110 | |0 |0 |
+ROW |2527 |111 | |0 |0 |
+ROW |2528 |112 | |0 |0 |
+ROW |2529 |113 | |0 |0 |
+ROW |2530 |114 | |0 |0 |
+ROW |2531 |115 | |0 |0 |
+ROW |2532 |116 | |0 |0 |
+ROW |2533 |117 | |0 |0 |
+ROW |2534 |118 | |0 |0 |
+ROW |2535 |119 | |0 |0 |
+ROW |2536 |120 | |0 |0 |
+ROW |2537 |121 | |0 |0 |
+ROW |2538 |122 | |0 |0 |
+ROW |2539 |123 | |0 |0 |
+ROW |2540 |124 | |0 |0 |
+ROW |2541 |125 | |0 |0 |
+ROW |2542 |126 | |0 |0 |
+ROW |2543 |127 | |0 |0 |
+ROW |2544 |128 | |0 |0 |
+ROW |2545 |129 | |0 |0 |
+ROW |2546 |130 | |0 |0 |
+ROW |2547 |131 | |0 |0 |
+ROW |2548 |132 | |0 |0 |
+ROW |2549 |133 | |0 |0 |
+ROW |2550 |134 | |0 |0 |
+ROW |2551 |135 | |0 |0 |
+ROW |2552 |136 | |0 |0 |
+ROW |2553 |137 | |0 |0 |
+ROW |2554 |138 | |0 |0 |
+ROW |2555 |139 | |0 |0 |
+ROW |2556 |50 | |0 |0 |
+ROW |2557 |51 | |0 |0 |
+ROW |2558 |52 | |0 |0 |
+ROW |2559 |140 | |0 |0 |
+ROW |2560 |17 | |0 |0 |
+ROW |2561 |141 | |0 |0 |
+ROW |2562 |15 | |0 |0 |
+ROW |2563 |10 | |0 |0 |
+ROW |2564 |11 | |0 |0 |
+ROW |2565 |142 | |0 |0 |
+ROW |2566 |55 | |0 |0 |
+ROW |2567 |31 | |0 |0 |
+ROW |2568 |32 | |0 |0 |
+ROW |2569 |33 | |0 |0 |
+ROW |2570 |143 | |0 |0 |
+ROW |2571 |22 | |0 |0 |
+ROW |2572 |144 | |0 |0 |
+ROW |2573 |20 | |0 |0 |
+ROW |2574 |145 | |0 |0 |
+ROW |2575 |146 | |0 |0 |
+ROW |2576 |158 | |0 |0 |
TABLE |widget
-FIELDS|widgetid|type |name |x |y |width|height|view_mode|dashboard_pageid|
-ROW |1 |tophosts |Top hosts by CPU utilization |0 |0 |8 |4 |0 |1 |
-ROW |2 |item |Performance |8 |0 |3 |2 |1 |1 |
-ROW |3 |systeminfo | |11 |0 |9 |4 |0 |1 |
-ROW |4 |clock |Local time |20 |0 |4 |4 |1 |1 |
-ROW |5 |svggraph | |8 |2 |3 |2 |1 |1 |
-ROW |6 |hostavail | |0 |4 |7 |2 |0 |1 |
-ROW |7 |problemsbysv |Problems by severity |7 |4 |10 |2 |0 |1 |
-ROW |8 |geomap | |17 |4 |7 |7 |0 |1 |
-ROW |9 |problems |Current problems |0 |6 |17 |5 |0 |1 |
-ROW |10 |problems |Zabbix server problems |0 |0 |20 |4 |0 |2 |
-ROW |11 |clock |Local time |20 |0 |4 |4 |1 |2 |
-ROW |12 |svggraph |Values processed per second |0 |4 |8 |5 |0 |2 |
-ROW |13 |svggraph |Utilization of data collectors |8 |4 |8 |5 |0 |2 |
-ROW |14 |svggraph |Utilization of internal processes|16 |4 |8 |5 |0 |2 |
-ROW |15 |svggraph |Cache usage |0 |9 |8 |5 |0 |2 |
-ROW |16 |svggraph |Value cache effectiveness |8 |9 |8 |5 |0 |2 |
-ROW |17 |svggraph |Queue size |16 |9 |8 |5 |0 |2 |
-ROW |400 |map | |0 |0 |24 |4 |0 |57 |
-ROW |6629 |graph | |0 |0 |12 |5 |0 |2289 |
-ROW |6630 |graph | |12 |0 |12 |5 |0 |2289 |
-ROW |6631 |graphprototype| |0 |5 |12 |5 |0 |2289 |
-ROW |6632 |graphprototype| |12 |5 |12 |5 |0 |2289 |
-ROW |6633 |graph | |0 |10 |12 |5 |0 |2289 |
-ROW |6634 |graph | |0 |0 |12 |5 |0 |2290 |
-ROW |6635 |graph | |12 |0 |12 |5 |0 |2290 |
-ROW |6636 |graphprototype| |0 |5 |12 |5 |0 |2290 |
-ROW |6637 |graphprototype| |12 |5 |12 |5 |0 |2290 |
-ROW |6638 |graph | |0 |10 |12 |5 |0 |2290 |
-ROW |6639 |graph | |0 |0 |12 |5 |0 |2291 |
-ROW |6640 |graph | |12 |0 |12 |5 |0 |2291 |
-ROW |6641 |graph | |0 |5 |12 |5 |0 |2291 |
-ROW |6642 |graph | |12 |5 |12 |5 |0 |2291 |
-ROW |6643 |graph | |0 |10 |12 |5 |0 |2291 |
-ROW |6644 |graph | |12 |10 |12 |5 |0 |2291 |
-ROW |6645 |graph | |0 |15 |12 |5 |0 |2291 |
-ROW |6646 |graph | |0 |0 |12 |5 |0 |2292 |
-ROW |6647 |graph | |12 |0 |12 |5 |0 |2292 |
-ROW |6648 |graph | |0 |5 |12 |5 |0 |2292 |
-ROW |6649 |graph | |12 |5 |12 |5 |0 |2292 |
-ROW |6650 |graph | |0 |10 |12 |5 |0 |2292 |
-ROW |6651 |graphprototype| |0 |0 |24 |5 |0 |2293 |
-ROW |6652 |graphprototype| |0 |5 |24 |5 |0 |2293 |
-ROW |6653 |graphprototype| |0 |10 |24 |5 |0 |2293 |
-ROW |6654 |graphprototype| |0 |0 |24 |5 |0 |2294 |
-ROW |6655 |graphprototype| |0 |5 |24 |5 |0 |2294 |
-ROW |6656 |graphprototype| |0 |10 |24 |5 |0 |2294 |
-ROW |6657 |graphprototype| |0 |15 |24 |5 |0 |2294 |
-ROW |6658 |graphprototype| |0 |0 |24 |5 |0 |2295 |
-ROW |6659 |graphprototype| |0 |5 |24 |5 |0 |2295 |
-ROW |6660 |graphprototype| |0 |10 |24 |5 |0 |2295 |
-ROW |6661 |graphprototype| |0 |0 |24 |5 |0 |2296 |
-ROW |6662 |graphprototype| |0 |5 |24 |5 |0 |2296 |
-ROW |6663 |graphprototype| |0 |10 |24 |5 |0 |2296 |
-ROW |6664 |graphprototype| |0 |0 |24 |5 |0 |2297 |
-ROW |6665 |graphprototype| |0 |5 |24 |5 |0 |2297 |
-ROW |6666 |graphprototype| |0 |10 |24 |5 |0 |2297 |
-ROW |6667 |graphprototype| |0 |15 |24 |5 |0 |2297 |
-ROW |6668 |graphprototype| |0 |0 |24 |5 |0 |2298 |
-ROW |6669 |graphprototype| |0 |5 |24 |5 |0 |2298 |
-ROW |6670 |graphprototype| |0 |10 |24 |5 |0 |2298 |
-ROW |6671 |graph | |0 |0 |12 |5 |0 |2299 |
-ROW |6672 |graph | |12 |0 |12 |5 |0 |2299 |
-ROW |6673 |graph | |0 |5 |12 |5 |0 |2299 |
-ROW |6674 |graph | |0 |0 |12 |5 |0 |2300 |
-ROW |6675 |graph | |12 |0 |12 |5 |0 |2300 |
-ROW |6676 |graph | |0 |5 |12 |5 |0 |2300 |
-ROW |6677 |graph | |0 |0 |12 |5 |0 |2301 |
-ROW |6678 |graph | |12 |0 |12 |5 |0 |2301 |
-ROW |6679 |graph | |0 |5 |12 |5 |0 |2301 |
-ROW |6680 |graph | |12 |5 |12 |5 |0 |2301 |
-ROW |6681 |graph | |0 |10 |12 |5 |0 |2301 |
-ROW |6682 |graph | |0 |0 |12 |5 |0 |2302 |
-ROW |6683 |graph | |12 |0 |12 |5 |0 |2302 |
-ROW |6684 |graph | |0 |5 |12 |5 |0 |2302 |
-ROW |6685 |graph | |12 |5 |12 |5 |0 |2302 |
-ROW |6686 |graph | |0 |10 |12 |5 |0 |2302 |
-ROW |6687 |graph | |12 |10 |12 |5 |0 |2302 |
-ROW |6688 |graph | |0 |0 |12 |5 |0 |2303 |
-ROW |6689 |graph | |12 |0 |12 |5 |0 |2303 |
-ROW |6690 |graph | |0 |5 |12 |5 |0 |2303 |
-ROW |6691 |graph | |12 |5 |12 |5 |0 |2303 |
-ROW |6692 |graph | |0 |10 |12 |5 |0 |2303 |
-ROW |6693 |graph | |0 |0 |12 |5 |0 |2304 |
-ROW |6694 |graph | |12 |0 |12 |5 |0 |2304 |
-ROW |6695 |graph | |0 |5 |12 |5 |0 |2304 |
-ROW |6696 |graph | |12 |5 |12 |5 |0 |2304 |
-ROW |6697 |graph | |0 |10 |12 |5 |0 |2304 |
-ROW |6698 |graph | |12 |10 |12 |5 |0 |2304 |
-ROW |6699 |graph | |0 |0 |12 |5 |0 |2305 |
-ROW |6700 |graph | |12 |0 |12 |5 |0 |2305 |
-ROW |6701 |graph | |0 |5 |12 |5 |0 |2305 |
-ROW |6702 |graph | |12 |5 |12 |5 |0 |2305 |
-ROW |6703 |graph | |0 |0 |12 |5 |0 |2306 |
-ROW |6704 |graph | |12 |0 |12 |5 |0 |2306 |
-ROW |6705 |graph | |0 |5 |12 |5 |0 |2306 |
-ROW |6706 |graph | |12 |5 |12 |5 |0 |2306 |
-ROW |6707 |graph | |0 |0 |12 |5 |0 |2307 |
-ROW |6708 |graph | |12 |0 |12 |5 |0 |2307 |
-ROW |6709 |graph | |0 |5 |12 |5 |0 |2307 |
-ROW |6710 |graph | |12 |5 |12 |5 |0 |2307 |
-ROW |6711 |graph | |0 |10 |12 |5 |0 |2307 |
-ROW |6712 |graph | |12 |10 |12 |5 |0 |2307 |
-ROW |6713 |graph | |0 |0 |12 |5 |0 |2308 |
-ROW |6714 |graph | |12 |0 |12 |5 |0 |2308 |
-ROW |6715 |graph | |0 |5 |12 |5 |0 |2308 |
-ROW |6716 |graph | |12 |5 |12 |5 |0 |2308 |
-ROW |6717 |graph | |0 |0 |12 |5 |0 |2309 |
-ROW |6718 |graph | |12 |0 |12 |5 |0 |2309 |
-ROW |6719 |graph | |0 |5 |12 |5 |0 |2309 |
-ROW |6720 |graph | |12 |5 |12 |5 |0 |2309 |
-ROW |6721 |graph | |0 |10 |12 |5 |0 |2309 |
-ROW |6722 |graph | |12 |10 |12 |5 |0 |2309 |
-ROW |6723 |graph | |0 |0 |12 |5 |0 |2310 |
-ROW |6724 |graph | |12 |0 |12 |5 |0 |2310 |
-ROW |6725 |graph | |0 |5 |12 |5 |0 |2310 |
-ROW |6726 |graph | |12 |5 |12 |5 |0 |2310 |
-ROW |6727 |graph | |0 |0 |24 |5 |0 |2311 |
-ROW |6728 |graph | |0 |5 |24 |5 |0 |2311 |
-ROW |6729 |graphprototype| |0 |10 |24 |5 |0 |2311 |
-ROW |6730 |graph | |0 |15 |24 |5 |0 |2311 |
-ROW |6731 |graph | |0 |20 |24 |5 |0 |2311 |
-ROW |6732 |graph | |0 |25 |24 |5 |0 |2311 |
-ROW |6733 |graph | |0 |30 |24 |5 |0 |2311 |
-ROW |6734 |graphprototype| |0 |0 |24 |5 |0 |2312 |
-ROW |6735 |graphprototype| |0 |5 |24 |5 |0 |2312 |
-ROW |6736 |graphprototype| |0 |10 |24 |5 |0 |2312 |
-ROW |6737 |graphprototype| |0 |15 |24 |5 |0 |2312 |
-ROW |6738 |graph | |0 |0 |24 |5 |0 |2313 |
-ROW |6739 |graph | |0 |5 |24 |5 |0 |2313 |
-ROW |6740 |graph | |0 |10 |24 |5 |0 |2313 |
-ROW |6741 |graph | |0 |15 |24 |5 |0 |2313 |
-ROW |6742 |graph | |0 |20 |24 |5 |0 |2313 |
-ROW |6743 |graph | |0 |25 |24 |5 |0 |2313 |
-ROW |6744 |graph | |0 |30 |24 |5 |0 |2313 |
-ROW |6745 |graphprototype| |0 |0 |24 |5 |0 |2314 |
-ROW |6746 |graph | |0 |5 |24 |5 |0 |2314 |
-ROW |6747 |graphprototype| |0 |10 |24 |5 |0 |2314 |
-ROW |6748 |graphprototype| |0 |15 |24 |5 |0 |2314 |
-ROW |6749 |graph | |0 |0 |12 |5 |0 |2315 |
-ROW |6750 |graph | |12 |0 |12 |5 |0 |2315 |
-ROW |6751 |graph | |0 |5 |12 |5 |0 |2315 |
-ROW |6752 |graph | |12 |5 |12 |5 |0 |2315 |
-ROW |6753 |graph | |0 |10 |12 |5 |0 |2315 |
-ROW |6754 |graph | |12 |10 |12 |5 |0 |2315 |
-ROW |6755 |graph | |0 |15 |12 |5 |0 |2315 |
-ROW |6756 |graph | |12 |15 |12 |5 |0 |2315 |
-ROW |6757 |graph | |0 |20 |24 |5 |0 |2315 |
-ROW |6758 |graph | |0 |25 |12 |5 |0 |2315 |
-ROW |6759 |graph | |12 |25 |12 |5 |0 |2315 |
-ROW |6760 |graph | |0 |30 |24 |5 |0 |2315 |
-ROW |6761 |graphprototype| |0 |0 |12 |5 |0 |2316 |
-ROW |6762 |graphprototype| |12 |0 |12 |5 |0 |2316 |
-ROW |6763 |graphprototype| |0 |5 |12 |5 |0 |2316 |
-ROW |6764 |graphprototype| |12 |5 |12 |5 |0 |2316 |
-ROW |6765 |graph | |0 |10 |12 |5 |0 |2316 |
-ROW |6766 |graph | |12 |10 |12 |5 |0 |2316 |
-ROW |6767 |graph | |0 |0 |12 |5 |0 |2317 |
-ROW |6768 |graph | |12 |0 |12 |5 |0 |2317 |
-ROW |6769 |graph | |0 |5 |12 |5 |0 |2317 |
-ROW |6770 |graph | |12 |5 |12 |5 |0 |2317 |
-ROW |6771 |graph | |0 |10 |12 |5 |0 |2317 |
-ROW |6772 |graph | |12 |10 |12 |5 |0 |2317 |
-ROW |6773 |graph | |0 |0 |12 |5 |0 |2318 |
-ROW |6774 |graph | |12 |0 |12 |5 |0 |2318 |
-ROW |6775 |graph | |0 |5 |12 |5 |0 |2318 |
-ROW |6776 |graph | |12 |5 |12 |5 |0 |2318 |
-ROW |6777 |graph | |0 |10 |12 |5 |0 |2318 |
-ROW |6778 |graph | |12 |10 |12 |5 |0 |2318 |
-ROW |6779 |graph | |0 |0 |12 |5 |0 |2319 |
-ROW |6780 |graph | |12 |0 |12 |5 |0 |2319 |
-ROW |6781 |graph | |0 |5 |12 |5 |0 |2319 |
-ROW |6782 |graph | |12 |5 |12 |5 |0 |2319 |
-ROW |6783 |graph | |0 |10 |12 |5 |0 |2319 |
-ROW |6784 |graph | |12 |10 |12 |5 |0 |2319 |
-ROW |6785 |graphprototype| |0 |0 |12 |5 |0 |2320 |
-ROW |6786 |graphprototype| |12 |0 |12 |5 |0 |2320 |
-ROW |6787 |graphprototype| |0 |5 |12 |5 |0 |2320 |
-ROW |6788 |graphprototype| |12 |5 |12 |5 |0 |2320 |
-ROW |6789 |graphprototype| |0 |10 |12 |5 |0 |2320 |
-ROW |6790 |graphprototype| |12 |10 |12 |5 |0 |2320 |
-ROW |6791 |graphprototype| |0 |15 |12 |5 |0 |2320 |
-ROW |6792 |graphprototype| |12 |15 |12 |5 |0 |2320 |
-ROW |6793 |graph | |0 |0 |12 |5 |0 |2321 |
-ROW |6794 |graph | |12 |0 |12 |5 |0 |2321 |
-ROW |6795 |graph | |0 |5 |12 |5 |0 |2321 |
-ROW |6796 |graph | |12 |5 |12 |5 |0 |2321 |
-ROW |6797 |graph | |0 |10 |12 |5 |0 |2321 |
-ROW |6798 |graph | |12 |10 |12 |5 |0 |2321 |
-ROW |6799 |graph | |0 |15 |12 |5 |0 |2321 |
-ROW |6800 |graph | |12 |15 |12 |5 |0 |2321 |
-ROW |6801 |graphprototype| |0 |0 |12 |5 |0 |2322 |
-ROW |6802 |graphprototype| |12 |0 |12 |5 |0 |2322 |
-ROW |6803 |graphprototype| |0 |5 |12 |5 |0 |2322 |
-ROW |6804 |graphprototype| |12 |5 |12 |5 |0 |2322 |
-ROW |6805 |graphprototype| |0 |10 |12 |5 |0 |2322 |
-ROW |6806 |graphprototype| |12 |10 |12 |5 |0 |2322 |
-ROW |6807 |graph | |0 |0 |12 |5 |0 |2323 |
-ROW |6808 |graph | |12 |0 |12 |5 |0 |2323 |
-ROW |6809 |graph | |0 |5 |12 |5 |0 |2323 |
-ROW |6810 |graph | |12 |5 |12 |5 |0 |2323 |
-ROW |6811 |graph | |0 |10 |12 |5 |0 |2323 |
-ROW |6812 |graph | |12 |10 |12 |5 |0 |2323 |
-ROW |6813 |graph | |0 |15 |12 |5 |0 |2323 |
-ROW |6814 |graph | |12 |15 |12 |5 |0 |2323 |
-ROW |6815 |graphprototype| |0 |20 |12 |5 |0 |2323 |
-ROW |6816 |graph | |0 |0 |12 |5 |0 |2324 |
-ROW |6817 |graph | |12 |0 |12 |5 |0 |2324 |
-ROW |6818 |graph | |0 |5 |12 |5 |0 |2324 |
-ROW |6819 |graph | |12 |5 |12 |5 |0 |2324 |
-ROW |6820 |graph | |0 |0 |12 |5 |0 |2325 |
-ROW |6821 |graphprototype| |0 |5 |12 |5 |0 |2325 |
-ROW |6822 |graphprototype| |0 |10 |12 |5 |0 |2325 |
-ROW |6823 |graphprototype| |0 |0 |24 |5 |0 |2326 |
-ROW |6824 |graphprototype| |0 |0 |24 |5 |0 |2327 |
-ROW |6825 |graphprototype| |0 |0 |24 |5 |0 |2328 |
-ROW |6826 |graphprototype| |0 |0 |24 |5 |0 |2329 |
-ROW |6827 |graphprototype| |0 |0 |24 |5 |0 |2330 |
-ROW |6828 |graphprototype| |0 |0 |24 |5 |0 |2331 |
-ROW |6829 |graphprototype| |0 |0 |24 |5 |0 |2332 |
-ROW |6830 |graphprototype| |0 |0 |24 |5 |0 |2333 |
-ROW |6831 |graphprototype| |0 |0 |24 |5 |0 |2334 |
-ROW |6832 |graph | |0 |0 |12 |5 |0 |2335 |
-ROW |6833 |graphprototype| |0 |5 |12 |5 |0 |2335 |
-ROW |6834 |graphprototype| |0 |10 |12 |5 |0 |2335 |
-ROW |6835 |graphprototype| |0 |0 |24 |5 |0 |2336 |
-ROW |6836 |graphprototype| |0 |0 |24 |5 |0 |2337 |
-ROW |6837 |graphprototype| |0 |0 |24 |5 |0 |2338 |
-ROW |6838 |graphprototype| |0 |0 |24 |5 |0 |2339 |
-ROW |6839 |graphprototype| |0 |0 |24 |5 |0 |2340 |
-ROW |6840 |graphprototype| |0 |0 |24 |5 |0 |2341 |
-ROW |6841 |graphprototype| |0 |0 |24 |5 |0 |2342 |
-ROW |6842 |graphprototype| |0 |0 |24 |5 |0 |2343 |
-ROW |6843 |graphprototype| |0 |0 |24 |5 |0 |2344 |
-ROW |6844 |graphprototype| |0 |0 |24 |5 |0 |2345 |
-ROW |6845 |graphprototype| |0 |0 |24 |5 |0 |2346 |
-ROW |6846 |graphprototype| |0 |0 |24 |5 |0 |2347 |
-ROW |6847 |graphprototype| |0 |0 |24 |5 |0 |2348 |
-ROW |6848 |graphprototype| |0 |0 |24 |5 |0 |2349 |
-ROW |6849 |graphprototype| |0 |0 |24 |5 |0 |2350 |
-ROW |6850 |graphprototype| |0 |0 |24 |5 |0 |2351 |
-ROW |6851 |graph | |0 |0 |12 |5 |0 |2352 |
-ROW |6852 |graphprototype| |0 |5 |12 |5 |0 |2352 |
-ROW |6853 |graphprototype| |0 |10 |12 |5 |0 |2352 |
-ROW |6854 |graphprototype| |0 |0 |24 |5 |0 |2353 |
-ROW |6855 |graphprototype| |0 |0 |24 |5 |0 |2354 |
-ROW |6856 |graphprototype| |0 |0 |24 |5 |0 |2355 |
-ROW |6857 |graphprototype| |0 |0 |24 |5 |0 |2356 |
-ROW |6858 |graphprototype| |0 |0 |24 |5 |0 |2357 |
-ROW |6859 |graphprototype| |0 |0 |24 |5 |0 |2358 |
-ROW |6860 |graphprototype| |0 |0 |24 |5 |0 |2359 |
-ROW |6861 |graphprototype| |0 |0 |24 |5 |0 |2360 |
-ROW |6862 |graphprototype| |0 |0 |24 |5 |0 |2361 |
-ROW |6863 |graphprototype| |0 |0 |24 |5 |0 |2362 |
-ROW |6864 |graphprototype| |0 |0 |24 |5 |0 |2363 |
-ROW |6865 |graphprototype| |0 |0 |24 |5 |0 |2364 |
-ROW |6866 |graphprototype| |0 |0 |24 |5 |0 |2365 |
-ROW |6867 |graphprototype| |0 |0 |24 |5 |0 |2366 |
-ROW |6868 |graphprototype| |0 |0 |24 |5 |0 |2367 |
-ROW |6869 |graphprototype| |0 |0 |24 |5 |0 |2368 |
-ROW |6870 |graphprototype| |0 |0 |24 |5 |0 |2369 |
-ROW |6871 |graphprototype| |0 |0 |24 |5 |0 |2370 |
-ROW |6872 |graphprototype| |0 |0 |24 |5 |0 |2371 |
-ROW |6873 |graphprototype| |0 |0 |24 |5 |0 |2372 |
-ROW |6874 |graphprototype| |0 |0 |24 |5 |0 |2373 |
-ROW |6875 |graphprototype| |0 |0 |24 |5 |0 |2374 |
-ROW |6876 |graphprototype| |0 |0 |24 |5 |0 |2375 |
-ROW |6877 |graphprototype| |0 |0 |24 |5 |0 |2376 |
-ROW |6878 |graphprototype| |0 |0 |24 |5 |0 |2377 |
-ROW |6879 |graphprototype| |0 |0 |24 |5 |0 |2378 |
-ROW |6880 |graphprototype| |0 |0 |24 |5 |0 |2379 |
-ROW |6881 |graphprototype| |0 |0 |24 |5 |0 |2380 |
-ROW |6882 |graphprototype| |0 |0 |24 |5 |0 |2381 |
-ROW |6883 |graphprototype| |0 |0 |24 |5 |0 |2382 |
-ROW |6884 |graphprototype| |0 |0 |24 |5 |0 |2383 |
-ROW |6885 |graphprototype| |0 |0 |24 |5 |0 |2384 |
-ROW |6886 |graphprototype| |0 |0 |24 |5 |0 |2385 |
-ROW |6887 |graphprototype| |0 |0 |24 |5 |0 |2386 |
-ROW |6888 |graphprototype| |0 |0 |24 |5 |0 |2387 |
-ROW |6889 |graphprototype| |0 |0 |24 |5 |0 |2388 |
-ROW |6890 |graphprototype| |0 |0 |24 |5 |0 |2389 |
-ROW |6891 |graphprototype| |0 |0 |24 |5 |0 |2390 |
-ROW |6892 |graphprototype| |0 |0 |24 |5 |0 |2391 |
-ROW |6893 |graphprototype| |0 |0 |24 |5 |0 |2392 |
-ROW |6894 |graphprototype| |0 |0 |24 |5 |0 |2393 |
-ROW |6895 |graphprototype| |0 |0 |24 |5 |0 |2394 |
-ROW |6896 |graphprototype| |0 |0 |24 |5 |0 |2395 |
-ROW |6897 |graphprototype| |0 |0 |24 |5 |0 |2396 |
-ROW |6898 |graphprototype| |0 |0 |24 |5 |0 |2397 |
-ROW |6899 |graphprototype| |0 |0 |24 |5 |0 |2398 |
-ROW |6900 |graphprototype| |0 |0 |24 |5 |0 |2399 |
-ROW |6901 |graphprototype| |0 |0 |24 |5 |0 |2400 |
-ROW |6902 |graphprototype| |0 |0 |24 |5 |0 |2401 |
-ROW |6903 |graphprototype| |0 |0 |24 |5 |0 |2402 |
-ROW |6904 |graphprototype| |0 |0 |24 |5 |0 |2403 |
-ROW |6905 |graphprototype| |0 |0 |24 |5 |0 |2404 |
-ROW |6906 |graphprototype| |0 |0 |24 |5 |0 |2405 |
-ROW |6907 |graphprototype| |0 |0 |24 |5 |0 |2406 |
-ROW |6908 |graphprototype| |0 |0 |24 |5 |0 |2407 |
-ROW |6909 |graphprototype| |0 |0 |24 |5 |0 |2408 |
-ROW |6910 |graphprototype| |0 |0 |24 |5 |0 |2409 |
-ROW |6911 |graphprototype| |0 |0 |24 |5 |0 |2410 |
-ROW |6912 |graphprototype| |0 |0 |24 |5 |0 |2411 |
-ROW |6913 |graph | |0 |0 |12 |5 |0 |2412 |
-ROW |6914 |graph | |12 |0 |12 |5 |0 |2412 |
-ROW |6915 |graph | |0 |5 |12 |5 |0 |2412 |
-ROW |6916 |graph | |12 |5 |12 |5 |0 |2412 |
-ROW |6917 |graph | |0 |0 |12 |5 |0 |2413 |
-ROW |6918 |graph | |12 |0 |12 |5 |0 |2413 |
-ROW |6919 |graph | |0 |5 |12 |5 |0 |2413 |
-ROW |6920 |graph | |12 |5 |12 |5 |0 |2413 |
-ROW |6921 |graph | |0 |0 |12 |5 |0 |2414 |
-ROW |6922 |graph | |12 |0 |12 |5 |0 |2414 |
-ROW |6923 |graph | |0 |5 |12 |5 |0 |2414 |
-ROW |6924 |graphprototype| |0 |0 |24 |5 |0 |2415 |
-ROW |6925 |graph | |0 |0 |12 |5 |0 |2416 |
-ROW |6926 |graph | |12 |0 |12 |5 |0 |2416 |
-ROW |6927 |graph | |0 |5 |12 |5 |0 |2416 |
-ROW |6928 |graph | |12 |5 |12 |5 |0 |2416 |
-ROW |6929 |graphprototype| |0 |10 |24 |5 |0 |2416 |
-ROW |6930 |graphprototype| |0 |15 |24 |5 |0 |2416 |
-ROW |6931 |graphprototype| |0 |20 |24 |5 |0 |2416 |
-ROW |6932 |graphprototype| |0 |25 |24 |5 |0 |2416 |
-ROW |6933 |graphprototype| |0 |30 |24 |5 |0 |2416 |
-ROW |6934 |graphprototype| |0 |0 |24 |5 |0 |2417 |
-ROW |6935 |graph | |0 |0 |12 |5 |0 |2418 |
-ROW |6936 |graph | |12 |0 |12 |5 |0 |2418 |
-ROW |6937 |graph | |0 |5 |12 |5 |0 |2418 |
-ROW |6938 |graph | |12 |5 |12 |5 |0 |2418 |
-ROW |6939 |graphprototype| |0 |10 |24 |5 |0 |2418 |
-ROW |6940 |graphprototype| |0 |15 |24 |5 |0 |2418 |
-ROW |6941 |graphprototype| |0 |20 |24 |5 |0 |2418 |
-ROW |6942 |graphprototype| |0 |25 |24 |5 |0 |2418 |
-ROW |6943 |graphprototype| |0 |30 |24 |5 |0 |2418 |
-ROW |6944 |graphprototype| |0 |0 |24 |5 |0 |2419 |
-ROW |6945 |graph | |0 |0 |12 |5 |0 |2420 |
-ROW |6946 |graph | |12 |0 |12 |5 |0 |2420 |
-ROW |6947 |graph | |0 |5 |12 |5 |0 |2420 |
-ROW |6948 |graph | |12 |5 |12 |5 |0 |2420 |
-ROW |6949 |graphprototype| |0 |10 |24 |5 |0 |2420 |
-ROW |6950 |graphprototype| |0 |15 |24 |5 |0 |2420 |
-ROW |6951 |graphprototype| |0 |20 |24 |5 |0 |2420 |
-ROW |6952 |graphprototype| |0 |25 |24 |5 |0 |2420 |
-ROW |6953 |graphprototype| |0 |30 |24 |5 |0 |2420 |
-ROW |6954 |graphprototype| |0 |0 |24 |5 |0 |2421 |
-ROW |6955 |graph | |0 |0 |12 |5 |0 |2422 |
-ROW |6956 |graphprototype| |12 |0 |12 |5 |0 |2422 |
-ROW |6957 |graph | |0 |5 |12 |5 |0 |2422 |
-ROW |6958 |graph | |12 |5 |12 |5 |0 |2422 |
-ROW |6959 |graphprototype| |0 |10 |24 |5 |0 |2422 |
-ROW |6960 |graphprototype| |0 |15 |24 |5 |0 |2422 |
-ROW |6961 |graphprototype| |0 |20 |24 |5 |0 |2422 |
-ROW |6962 |graphprototype| |0 |25 |24 |5 |0 |2422 |
-ROW |6963 |graph | |0 |0 |24 |5 |0 |2423 |
-ROW |6964 |graph | |0 |5 |24 |5 |0 |2423 |
-ROW |6965 |graph | |0 |0 |12 |5 |0 |2424 |
-ROW |6966 |graph | |12 |0 |12 |5 |0 |2424 |
-ROW |6967 |graph | |0 |5 |12 |5 |0 |2424 |
-ROW |6968 |graph | |12 |5 |12 |5 |0 |2424 |
-ROW |6969 |graph | |0 |0 |12 |5 |0 |2425 |
-ROW |6970 |graph | |12 |0 |12 |5 |0 |2425 |
-ROW |6971 |graph | |0 |5 |12 |5 |0 |2425 |
-ROW |6972 |graph | |12 |5 |12 |5 |0 |2425 |
-ROW |6973 |graph | |0 |10 |12 |5 |0 |2425 |
-ROW |6974 |graph | |12 |10 |12 |5 |0 |2425 |
-ROW |6975 |graphprototype| |0 |0 |24 |5 |0 |2426 |
-ROW |6976 |graph | |0 |0 |12 |5 |0 |2427 |
-ROW |6977 |graph | |12 |0 |12 |5 |0 |2427 |
-ROW |6978 |graph | |0 |5 |12 |5 |0 |2427 |
-ROW |6979 |graph | |12 |5 |12 |5 |0 |2427 |
-ROW |6980 |graphprototype| |0 |10 |24 |5 |0 |2427 |
-ROW |6981 |graphprototype| |0 |15 |24 |5 |0 |2427 |
-ROW |6982 |graphprototype| |0 |20 |24 |5 |0 |2427 |
-ROW |6983 |graphprototype| |0 |25 |24 |5 |0 |2427 |
-ROW |6984 |graphprototype| |0 |0 |24 |5 |0 |2428 |
-ROW |6985 |graph | |0 |0 |12 |5 |0 |2429 |
-ROW |6986 |graph | |12 |0 |12 |5 |0 |2429 |
-ROW |6987 |graph | |0 |5 |12 |5 |0 |2429 |
-ROW |6988 |graph | |12 |5 |12 |5 |0 |2429 |
-ROW |6989 |graphprototype| |0 |10 |24 |5 |0 |2429 |
-ROW |6990 |graphprototype| |0 |15 |24 |5 |0 |2429 |
-ROW |6991 |graphprototype| |0 |20 |24 |5 |0 |2429 |
-ROW |6992 |graphprototype| |0 |25 |24 |5 |0 |2429 |
-ROW |6993 |graphprototype| |0 |0 |24 |5 |0 |2430 |
-ROW |6994 |graph | |0 |0 |12 |5 |0 |2431 |
-ROW |6995 |graphprototype| |0 |5 |12 |5 |0 |2431 |
-ROW |6996 |graphprototype| |0 |10 |12 |5 |0 |2431 |
-ROW |6997 |graphprototype| |0 |0 |24 |5 |0 |2432 |
+FIELDS|widgetid|type |name |x |y |width|height|view_mode|dashboard_pageid|
+ROW |1 |tophosts |Top hosts by CPU utilization |0 |0 |8 |4 |0 |1 |
+ROW |2 |item |Performance |8 |0 |3 |2 |1 |1 |
+ROW |3 |systeminfo | |11 |0 |9 |4 |0 |1 |
+ROW |4 |clock |Local time |20 |0 |4 |4 |1 |1 |
+ROW |5 |svggraph | |8 |2 |3 |2 |1 |1 |
+ROW |6 |hostavail | |0 |4 |7 |2 |0 |1 |
+ROW |7 |problemsbysv |Problems by severity |7 |4 |10 |2 |0 |1 |
+ROW |8 |geomap | |17 |4 |7 |7 |0 |1 |
+ROW |9 |problems |Current problems |0 |6 |17 |5 |0 |1 |
+ROW |10 |problems |Zabbix server problems |0 |0 |20 |4 |0 |2 |
+ROW |11 |clock |Local time |20 |0 |4 |4 |1 |2 |
+ROW |12 |svggraph |Values processed per second |0 |4 |8 |5 |0 |2 |
+ROW |13 |svggraph |Utilization of data collectors |8 |4 |8 |5 |0 |2 |
+ROW |14 |svggraph |Utilization of internal processes|16 |4 |8 |5 |0 |2 |
+ROW |15 |svggraph |Cache usage |0 |9 |8 |5 |0 |2 |
+ROW |16 |svggraph |Value cache effectiveness |8 |9 |8 |5 |0 |2 |
+ROW |17 |svggraph |Queue size |16 |9 |8 |5 |0 |2 |
+ROW |400 |map | |0 |0 |24 |4 |0 |57 |
+ROW |6998 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2433 |
+ROW |6999 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2433 |
+ROW |7000 |GRAPH_PROTOTYPE| |0 |5 |12 |5 |0 |2433 |
+ROW |7001 |GRAPH_PROTOTYPE| |12 |5 |12 |5 |0 |2433 |
+ROW |7002 |GRAPH_CLASSIC | |0 |10 |12 |5 |0 |2433 |
+ROW |7003 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2434 |
+ROW |7004 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2434 |
+ROW |7005 |GRAPH_PROTOTYPE| |0 |5 |12 |5 |0 |2434 |
+ROW |7006 |GRAPH_PROTOTYPE| |12 |5 |12 |5 |0 |2434 |
+ROW |7007 |GRAPH_CLASSIC | |0 |10 |12 |5 |0 |2434 |
+ROW |7008 |graph | |0 |0 |12 |5 |0 |2435 |
+ROW |7009 |graph | |12 |0 |12 |5 |0 |2435 |
+ROW |7010 |graph | |0 |5 |12 |5 |0 |2435 |
+ROW |7011 |graph | |12 |5 |12 |5 |0 |2435 |
+ROW |7012 |graph | |0 |10 |12 |5 |0 |2435 |
+ROW |7013 |graph | |12 |10 |12 |5 |0 |2435 |
+ROW |7014 |graph | |0 |15 |12 |5 |0 |2435 |
+ROW |7015 |graph | |0 |0 |12 |5 |0 |2436 |
+ROW |7016 |graph | |12 |0 |12 |5 |0 |2436 |
+ROW |7017 |graph | |0 |5 |12 |5 |0 |2436 |
+ROW |7018 |graph | |12 |5 |12 |5 |0 |2436 |
+ROW |7019 |graph | |0 |10 |12 |5 |0 |2436 |
+ROW |7020 |graphprototype | |0 |0 |24 |5 |0 |2437 |
+ROW |7021 |graphprototype | |0 |5 |24 |5 |0 |2437 |
+ROW |7022 |graphprototype | |0 |10 |24 |5 |0 |2437 |
+ROW |7023 |graphprototype | |0 |0 |24 |5 |0 |2438 |
+ROW |7024 |graphprototype | |0 |5 |24 |5 |0 |2438 |
+ROW |7025 |graphprototype | |0 |10 |24 |5 |0 |2438 |
+ROW |7026 |graphprototype | |0 |15 |24 |5 |0 |2438 |
+ROW |7027 |graphprototype | |0 |0 |24 |5 |0 |2439 |
+ROW |7028 |graphprototype | |0 |5 |24 |5 |0 |2439 |
+ROW |7029 |graphprototype | |0 |10 |24 |5 |0 |2439 |
+ROW |7030 |graphprototype | |0 |0 |24 |5 |0 |2440 |
+ROW |7031 |graphprototype | |0 |5 |24 |5 |0 |2440 |
+ROW |7032 |graphprototype | |0 |10 |24 |5 |0 |2440 |
+ROW |7033 |graphprototype | |0 |0 |24 |5 |0 |2441 |
+ROW |7034 |graphprototype | |0 |5 |24 |5 |0 |2441 |
+ROW |7035 |graphprototype | |0 |10 |24 |5 |0 |2441 |
+ROW |7036 |graphprototype | |0 |15 |24 |5 |0 |2441 |
+ROW |7037 |graphprototype | |0 |0 |24 |5 |0 |2442 |
+ROW |7038 |graphprototype | |0 |5 |24 |5 |0 |2442 |
+ROW |7039 |graphprototype | |0 |10 |24 |5 |0 |2442 |
+ROW |7040 |graph | |0 |0 |12 |5 |0 |2443 |
+ROW |7041 |graph | |12 |0 |12 |5 |0 |2443 |
+ROW |7042 |graph | |0 |5 |12 |5 |0 |2443 |
+ROW |7043 |graph | |0 |0 |12 |5 |0 |2444 |
+ROW |7044 |graph | |12 |0 |12 |5 |0 |2444 |
+ROW |7045 |graph | |0 |5 |12 |5 |0 |2444 |
+ROW |7046 |graph | |0 |0 |12 |5 |0 |2445 |
+ROW |7047 |graph | |12 |0 |12 |5 |0 |2445 |
+ROW |7048 |graph | |0 |5 |12 |5 |0 |2445 |
+ROW |7049 |graph | |12 |5 |12 |5 |0 |2445 |
+ROW |7050 |graph | |0 |10 |12 |5 |0 |2445 |
+ROW |7051 |graph | |0 |0 |12 |5 |0 |2446 |
+ROW |7052 |graph | |12 |0 |12 |5 |0 |2446 |
+ROW |7053 |graph | |0 |5 |12 |5 |0 |2446 |
+ROW |7054 |graph | |12 |5 |12 |5 |0 |2446 |
+ROW |7055 |graph | |0 |10 |12 |5 |0 |2446 |
+ROW |7056 |graph | |12 |10 |12 |5 |0 |2446 |
+ROW |7057 |graph | |0 |0 |12 |5 |0 |2447 |
+ROW |7058 |graph | |12 |0 |12 |5 |0 |2447 |
+ROW |7059 |graph | |0 |5 |12 |5 |0 |2447 |
+ROW |7060 |graph | |12 |5 |12 |5 |0 |2447 |
+ROW |7061 |graph | |0 |10 |12 |5 |0 |2447 |
+ROW |7062 |graph | |0 |0 |12 |5 |0 |2448 |
+ROW |7063 |graph | |12 |0 |12 |5 |0 |2448 |
+ROW |7064 |graph | |0 |5 |12 |5 |0 |2448 |
+ROW |7065 |graph | |12 |5 |12 |5 |0 |2448 |
+ROW |7066 |graph | |0 |10 |12 |5 |0 |2448 |
+ROW |7067 |graph | |12 |10 |12 |5 |0 |2448 |
+ROW |7068 |graph | |0 |0 |12 |5 |0 |2449 |
+ROW |7069 |graph | |12 |0 |12 |5 |0 |2449 |
+ROW |7070 |graph | |0 |5 |12 |5 |0 |2449 |
+ROW |7071 |graph | |12 |5 |12 |5 |0 |2449 |
+ROW |7072 |graph | |0 |0 |12 |5 |0 |2450 |
+ROW |7073 |graph | |12 |0 |12 |5 |0 |2450 |
+ROW |7074 |graph | |0 |5 |12 |5 |0 |2450 |
+ROW |7075 |graph | |12 |5 |12 |5 |0 |2450 |
+ROW |7076 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2451 |
+ROW |7077 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2451 |
+ROW |7078 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2451 |
+ROW |7079 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2451 |
+ROW |7080 |GRAPH_CLASSIC | |0 |10 |12 |5 |0 |2451 |
+ROW |7081 |GRAPH_CLASSIC | |12 |10 |12 |5 |0 |2451 |
+ROW |7082 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2452 |
+ROW |7083 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2452 |
+ROW |7084 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2452 |
+ROW |7085 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2452 |
+ROW |7086 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2453 |
+ROW |7087 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2453 |
+ROW |7088 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2453 |
+ROW |7089 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2453 |
+ROW |7090 |GRAPH_CLASSIC | |0 |10 |12 |5 |0 |2453 |
+ROW |7091 |GRAPH_CLASSIC | |12 |10 |12 |5 |0 |2453 |
+ROW |7092 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2454 |
+ROW |7093 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2454 |
+ROW |7094 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2454 |
+ROW |7095 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2454 |
+ROW |7096 |graph | |0 |0 |24 |5 |0 |2455 |
+ROW |7097 |graph | |0 |5 |24 |5 |0 |2455 |
+ROW |7098 |graphprototype | |0 |10 |24 |5 |0 |2455 |
+ROW |7099 |graph | |0 |15 |24 |5 |0 |2455 |
+ROW |7100 |graph | |0 |20 |24 |5 |0 |2455 |
+ROW |7101 |graph | |0 |25 |24 |5 |0 |2455 |
+ROW |7102 |graph | |0 |30 |24 |5 |0 |2455 |
+ROW |7103 |graphprototype | |0 |0 |24 |5 |0 |2456 |
+ROW |7104 |graphprototype | |0 |5 |24 |5 |0 |2456 |
+ROW |7105 |graphprototype | |0 |10 |24 |5 |0 |2456 |
+ROW |7106 |graphprototype | |0 |15 |24 |5 |0 |2456 |
+ROW |7107 |graph | |0 |0 |24 |5 |0 |2457 |
+ROW |7108 |graph | |0 |5 |24 |5 |0 |2457 |
+ROW |7109 |graph | |0 |10 |24 |5 |0 |2457 |
+ROW |7110 |graph | |0 |15 |24 |5 |0 |2457 |
+ROW |7111 |graph | |0 |20 |24 |5 |0 |2457 |
+ROW |7112 |graph | |0 |25 |24 |5 |0 |2457 |
+ROW |7113 |graph | |0 |30 |24 |5 |0 |2457 |
+ROW |7114 |graphprototype | |0 |0 |24 |5 |0 |2458 |
+ROW |7115 |graph | |0 |5 |24 |5 |0 |2458 |
+ROW |7116 |graphprototype | |0 |10 |24 |5 |0 |2458 |
+ROW |7117 |graphprototype | |0 |15 |24 |5 |0 |2458 |
+ROW |7118 |graph | |0 |0 |12 |5 |0 |2459 |
+ROW |7119 |graph | |12 |0 |12 |5 |0 |2459 |
+ROW |7120 |graph | |0 |5 |12 |5 |0 |2459 |
+ROW |7121 |graph | |12 |5 |12 |5 |0 |2459 |
+ROW |7122 |graph | |0 |10 |12 |5 |0 |2459 |
+ROW |7123 |graph | |12 |10 |12 |5 |0 |2459 |
+ROW |7124 |graph | |0 |15 |12 |5 |0 |2459 |
+ROW |7125 |graph | |12 |15 |12 |5 |0 |2459 |
+ROW |7126 |graph | |0 |20 |24 |5 |0 |2459 |
+ROW |7127 |graph | |0 |25 |12 |5 |0 |2459 |
+ROW |7128 |graph | |12 |25 |12 |5 |0 |2459 |
+ROW |7129 |graph | |0 |30 |24 |5 |0 |2459 |
+ROW |7130 |graphprototype | |0 |0 |12 |5 |0 |2460 |
+ROW |7131 |graphprototype | |12 |0 |12 |5 |0 |2460 |
+ROW |7132 |graphprototype | |0 |5 |12 |5 |0 |2460 |
+ROW |7133 |graphprototype | |12 |5 |12 |5 |0 |2460 |
+ROW |7134 |graph | |0 |10 |12 |5 |0 |2460 |
+ROW |7135 |graph | |12 |10 |12 |5 |0 |2460 |
+ROW |7136 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2461 |
+ROW |7137 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2461 |
+ROW |7138 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2461 |
+ROW |7139 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2461 |
+ROW |7140 |GRAPH_CLASSIC | |0 |10 |12 |5 |0 |2461 |
+ROW |7141 |GRAPH_CLASSIC | |12 |10 |12 |5 |0 |2461 |
+ROW |7142 |graph | |0 |0 |12 |5 |0 |2462 |
+ROW |7143 |graph | |12 |0 |12 |5 |0 |2462 |
+ROW |7144 |graph | |0 |5 |12 |5 |0 |2462 |
+ROW |7145 |graph | |12 |5 |12 |5 |0 |2462 |
+ROW |7146 |graph | |0 |10 |12 |5 |0 |2462 |
+ROW |7147 |graph | |12 |10 |12 |5 |0 |2462 |
+ROW |7148 |graph | |0 |0 |12 |5 |0 |2463 |
+ROW |7149 |graph | |12 |0 |12 |5 |0 |2463 |
+ROW |7150 |graph | |0 |5 |12 |5 |0 |2463 |
+ROW |7151 |graph | |12 |5 |12 |5 |0 |2463 |
+ROW |7152 |graph | |0 |10 |12 |5 |0 |2463 |
+ROW |7153 |graph | |12 |10 |12 |5 |0 |2463 |
+ROW |7154 |graphprototype | |0 |0 |12 |5 |0 |2464 |
+ROW |7155 |graphprototype | |12 |0 |12 |5 |0 |2464 |
+ROW |7156 |graphprototype | |0 |5 |12 |5 |0 |2464 |
+ROW |7157 |graphprototype | |12 |5 |12 |5 |0 |2464 |
+ROW |7158 |graphprototype | |0 |10 |12 |5 |0 |2464 |
+ROW |7159 |graphprototype | |12 |10 |12 |5 |0 |2464 |
+ROW |7160 |graphprototype | |0 |15 |12 |5 |0 |2464 |
+ROW |7161 |graphprototype | |12 |15 |12 |5 |0 |2464 |
+ROW |7162 |graph | |0 |0 |12 |5 |0 |2465 |
+ROW |7163 |graph | |12 |0 |12 |5 |0 |2465 |
+ROW |7164 |graph | |0 |5 |12 |5 |0 |2465 |
+ROW |7165 |graph | |12 |5 |12 |5 |0 |2465 |
+ROW |7166 |graph | |0 |10 |12 |5 |0 |2465 |
+ROW |7167 |graph | |12 |10 |12 |5 |0 |2465 |
+ROW |7168 |graph | |0 |15 |12 |5 |0 |2465 |
+ROW |7169 |graph | |12 |15 |12 |5 |0 |2465 |
+ROW |7170 |GRAPH_PROTOTYPE| |0 |0 |12 |5 |0 |2466 |
+ROW |7171 |GRAPH_PROTOTYPE| |12 |0 |12 |5 |0 |2466 |
+ROW |7172 |GRAPH_PROTOTYPE| |0 |5 |12 |5 |0 |2466 |
+ROW |7173 |GRAPH_PROTOTYPE| |12 |5 |12 |5 |0 |2466 |
+ROW |7174 |GRAPH_PROTOTYPE| |0 |10 |12 |5 |0 |2466 |
+ROW |7175 |GRAPH_PROTOTYPE| |12 |10 |12 |5 |0 |2466 |
+ROW |7176 |graph | |0 |0 |12 |5 |0 |2467 |
+ROW |7177 |graph | |12 |0 |12 |5 |0 |2467 |
+ROW |7178 |graph | |0 |5 |12 |5 |0 |2467 |
+ROW |7179 |graph | |12 |5 |12 |5 |0 |2467 |
+ROW |7180 |graph | |0 |10 |12 |5 |0 |2467 |
+ROW |7181 |graph | |12 |10 |12 |5 |0 |2467 |
+ROW |7182 |graph | |0 |15 |12 |5 |0 |2467 |
+ROW |7183 |graph | |12 |15 |12 |5 |0 |2467 |
+ROW |7184 |graphprototype | |0 |20 |12 |5 |0 |2467 |
+ROW |7185 |graph | |0 |0 |12 |5 |0 |2468 |
+ROW |7186 |graph | |12 |0 |12 |5 |0 |2468 |
+ROW |7187 |graph | |0 |5 |12 |5 |0 |2468 |
+ROW |7188 |graph | |12 |5 |12 |5 |0 |2468 |
+ROW |7189 |graph | |0 |0 |12 |5 |0 |2469 |
+ROW |7190 |graphprototype | |0 |5 |12 |5 |0 |2469 |
+ROW |7191 |graphprototype | |0 |10 |12 |5 |0 |2469 |
+ROW |7192 |graphprototype | |0 |0 |24 |5 |0 |2470 |
+ROW |7193 |graphprototype | |0 |0 |24 |5 |0 |2471 |
+ROW |7194 |graphprototype | |0 |0 |24 |5 |0 |2472 |
+ROW |7195 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2473 |
+ROW |7196 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2474 |
+ROW |7197 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2475 |
+ROW |7198 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2476 |
+ROW |7199 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2477 |
+ROW |7200 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2478 |
+ROW |7201 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2479 |
+ROW |7202 |GRAPH_PROTOTYPE| |0 |5 |12 |5 |0 |2479 |
+ROW |7203 |GRAPH_PROTOTYPE| |0 |10 |12 |5 |0 |2479 |
+ROW |7204 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2480 |
+ROW |7205 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2481 |
+ROW |7206 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2482 |
+ROW |7207 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2483 |
+ROW |7208 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2484 |
+ROW |7209 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2485 |
+ROW |7210 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2486 |
+ROW |7211 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2487 |
+ROW |7212 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2488 |
+ROW |7213 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2489 |
+ROW |7214 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2490 |
+ROW |7215 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2491 |
+ROW |7216 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2492 |
+ROW |7217 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2493 |
+ROW |7218 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2494 |
+ROW |7219 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2495 |
+ROW |7220 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2496 |
+ROW |7221 |GRAPH_PROTOTYPE| |0 |5 |12 |5 |0 |2496 |
+ROW |7222 |GRAPH_PROTOTYPE| |0 |10 |12 |5 |0 |2496 |
+ROW |7223 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2497 |
+ROW |7224 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2498 |
+ROW |7225 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2499 |
+ROW |7226 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2500 |
+ROW |7227 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2501 |
+ROW |7228 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2502 |
+ROW |7229 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2503 |
+ROW |7230 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2504 |
+ROW |7231 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2505 |
+ROW |7232 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2506 |
+ROW |7233 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2507 |
+ROW |7234 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2508 |
+ROW |7235 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2509 |
+ROW |7236 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2510 |
+ROW |7237 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2511 |
+ROW |7238 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2512 |
+ROW |7239 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2513 |
+ROW |7240 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2514 |
+ROW |7241 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2515 |
+ROW |7242 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2516 |
+ROW |7243 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2517 |
+ROW |7244 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2518 |
+ROW |7245 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2519 |
+ROW |7246 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2520 |
+ROW |7247 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2521 |
+ROW |7248 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2522 |
+ROW |7249 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2523 |
+ROW |7250 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2524 |
+ROW |7251 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2525 |
+ROW |7252 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2526 |
+ROW |7253 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2527 |
+ROW |7254 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2528 |
+ROW |7255 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2529 |
+ROW |7256 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2530 |
+ROW |7257 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2531 |
+ROW |7258 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2532 |
+ROW |7259 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2533 |
+ROW |7260 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2534 |
+ROW |7261 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2535 |
+ROW |7262 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2536 |
+ROW |7263 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2537 |
+ROW |7264 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2538 |
+ROW |7265 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2539 |
+ROW |7266 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2540 |
+ROW |7267 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2541 |
+ROW |7268 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2542 |
+ROW |7269 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2543 |
+ROW |7270 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2544 |
+ROW |7271 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2545 |
+ROW |7272 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2546 |
+ROW |7273 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2547 |
+ROW |7274 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2548 |
+ROW |7275 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2549 |
+ROW |7276 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2550 |
+ROW |7277 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2551 |
+ROW |7278 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2552 |
+ROW |7279 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2553 |
+ROW |7280 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2554 |
+ROW |7281 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2555 |
+ROW |7282 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2556 |
+ROW |7283 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2556 |
+ROW |7284 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2556 |
+ROW |7285 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2556 |
+ROW |7286 |graph | |0 |0 |12 |5 |0 |2557 |
+ROW |7287 |graph | |12 |0 |12 |5 |0 |2557 |
+ROW |7288 |graph | |0 |5 |12 |5 |0 |2557 |
+ROW |7289 |graph | |12 |5 |12 |5 |0 |2557 |
+ROW |7290 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2558 |
+ROW |7291 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2558 |
+ROW |7292 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2558 |
+ROW |7293 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2559 |
+ROW |7294 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2560 |
+ROW |7295 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2560 |
+ROW |7296 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2560 |
+ROW |7297 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2560 |
+ROW |7298 |GRAPH_PROTOTYPE| |0 |10 |24 |5 |0 |2560 |
+ROW |7299 |GRAPH_PROTOTYPE| |0 |15 |24 |5 |0 |2560 |
+ROW |7300 |GRAPH_PROTOTYPE| |0 |20 |24 |5 |0 |2560 |
+ROW |7301 |GRAPH_PROTOTYPE| |0 |25 |24 |5 |0 |2560 |
+ROW |7302 |GRAPH_PROTOTYPE| |0 |30 |24 |5 |0 |2560 |
+ROW |7303 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2561 |
+ROW |7304 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2562 |
+ROW |7305 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2562 |
+ROW |7306 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2562 |
+ROW |7307 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2562 |
+ROW |7308 |GRAPH_PROTOTYPE| |0 |10 |24 |5 |0 |2562 |
+ROW |7309 |GRAPH_PROTOTYPE| |0 |15 |24 |5 |0 |2562 |
+ROW |7310 |GRAPH_PROTOTYPE| |0 |20 |24 |5 |0 |2562 |
+ROW |7311 |GRAPH_PROTOTYPE| |0 |25 |24 |5 |0 |2562 |
+ROW |7312 |GRAPH_PROTOTYPE| |0 |30 |24 |5 |0 |2562 |
+ROW |7313 |graphprototype | |0 |0 |24 |5 |0 |2563 |
+ROW |7314 |graph | |0 |0 |12 |5 |0 |2564 |
+ROW |7315 |graph | |12 |0 |12 |5 |0 |2564 |
+ROW |7316 |graph | |0 |5 |12 |5 |0 |2564 |
+ROW |7317 |graph | |12 |5 |12 |5 |0 |2564 |
+ROW |7318 |graphprototype | |0 |10 |24 |5 |0 |2564 |
+ROW |7319 |graphprototype | |0 |15 |24 |5 |0 |2564 |
+ROW |7320 |graphprototype | |0 |20 |24 |5 |0 |2564 |
+ROW |7321 |graphprototype | |0 |25 |24 |5 |0 |2564 |
+ROW |7322 |graphprototype | |0 |30 |24 |5 |0 |2564 |
+ROW |7323 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2565 |
+ROW |7324 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2566 |
+ROW |7325 |GRAPH_PROTOTYPE| |12 |0 |12 |5 |0 |2566 |
+ROW |7326 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2566 |
+ROW |7327 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2566 |
+ROW |7328 |GRAPH_PROTOTYPE| |0 |10 |24 |5 |0 |2566 |
+ROW |7329 |GRAPH_PROTOTYPE| |0 |15 |24 |5 |0 |2566 |
+ROW |7330 |GRAPH_PROTOTYPE| |0 |20 |24 |5 |0 |2566 |
+ROW |7331 |GRAPH_PROTOTYPE| |0 |25 |24 |5 |0 |2566 |
+ROW |7332 |GRAPH_CLASSIC | |0 |0 |24 |5 |0 |2567 |
+ROW |7333 |GRAPH_CLASSIC | |0 |5 |24 |5 |0 |2567 |
+ROW |7334 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2568 |
+ROW |7335 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2568 |
+ROW |7336 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2568 |
+ROW |7337 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2568 |
+ROW |7338 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2569 |
+ROW |7339 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2569 |
+ROW |7340 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2569 |
+ROW |7341 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2569 |
+ROW |7342 |GRAPH_CLASSIC | |0 |10 |12 |5 |0 |2569 |
+ROW |7343 |GRAPH_CLASSIC | |12 |10 |12 |5 |0 |2569 |
+ROW |7344 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2570 |
+ROW |7345 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2571 |
+ROW |7346 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2571 |
+ROW |7347 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2571 |
+ROW |7348 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2571 |
+ROW |7349 |GRAPH_PROTOTYPE| |0 |10 |24 |5 |0 |2571 |
+ROW |7350 |GRAPH_PROTOTYPE| |0 |15 |24 |5 |0 |2571 |
+ROW |7351 |GRAPH_PROTOTYPE| |0 |20 |24 |5 |0 |2571 |
+ROW |7352 |GRAPH_PROTOTYPE| |0 |25 |24 |5 |0 |2571 |
+ROW |7353 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2572 |
+ROW |7354 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2573 |
+ROW |7355 |GRAPH_CLASSIC | |12 |0 |12 |5 |0 |2573 |
+ROW |7356 |GRAPH_CLASSIC | |0 |5 |12 |5 |0 |2573 |
+ROW |7357 |GRAPH_CLASSIC | |12 |5 |12 |5 |0 |2573 |
+ROW |7358 |GRAPH_PROTOTYPE| |0 |10 |24 |5 |0 |2573 |
+ROW |7359 |GRAPH_PROTOTYPE| |0 |15 |24 |5 |0 |2573 |
+ROW |7360 |GRAPH_PROTOTYPE| |0 |20 |24 |5 |0 |2573 |
+ROW |7361 |GRAPH_PROTOTYPE| |0 |25 |24 |5 |0 |2573 |
+ROW |7362 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2574 |
+ROW |7363 |GRAPH_CLASSIC | |0 |0 |12 |5 |0 |2575 |
+ROW |7364 |GRAPH_PROTOTYPE| |0 |5 |12 |5 |0 |2575 |
+ROW |7365 |GRAPH_PROTOTYPE| |0 |10 |12 |5 |0 |2575 |
+ROW |7366 |GRAPH_PROTOTYPE| |0 |0 |24 |5 |0 |2576 |
TABLE |widget_field
FIELDS|widget_fieldid|widgetid|type|name |value_int|value_str |value_groupid|value_hostid|value_itemid|value_graphid|value_sysmapid|value_serviceid|value_slaid|
@@ -882,1100 +882,1100 @@ ROW |1176 |400 |1 |reference |0 |NW
ROW |1177 |17 |1 |ds.hosts.3.0 |0 |Zabbix server |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
ROW |1178 |17 |1 |ds.items.3.0 |0 |Zabbix server: LLD queue |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
ROW |1179 |17 |1 |ds.color.3 |0 |524BBC |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19468 |6629 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19469 |6629 |6 |graphid |0 | |NULL |NULL |NULL |1174 |NULL |NULL |NULL |
-ROW |19470 |6630 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19471 |6630 |6 |graphid |0 | |NULL |NULL |NULL |1176 |NULL |NULL |NULL |
-ROW |19472 |6631 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19473 |6631 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19474 |6631 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19475 |6631 |7 |graphid |0 | |NULL |NULL |NULL |1172 |NULL |NULL |NULL |
-ROW |19476 |6632 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19477 |6632 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19478 |6632 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19479 |6632 |7 |graphid |0 | |NULL |NULL |NULL |1173 |NULL |NULL |NULL |
-ROW |19480 |6633 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19481 |6633 |6 |graphid |0 | |NULL |NULL |NULL |1175 |NULL |NULL |NULL |
-ROW |19482 |6634 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19483 |6634 |6 |graphid |0 | |NULL |NULL |NULL |838 |NULL |NULL |NULL |
-ROW |19484 |6635 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19485 |6635 |6 |graphid |0 | |NULL |NULL |NULL |839 |NULL |NULL |NULL |
-ROW |19486 |6636 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19487 |6636 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19488 |6636 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19489 |6636 |7 |graphid |0 | |NULL |NULL |NULL |836 |NULL |NULL |NULL |
-ROW |19490 |6637 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19491 |6637 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19492 |6637 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19493 |6637 |7 |graphid |0 | |NULL |NULL |NULL |837 |NULL |NULL |NULL |
-ROW |19494 |6638 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19495 |6638 |6 |graphid |0 | |NULL |NULL |NULL |840 |NULL |NULL |NULL |
-ROW |19496 |6639 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19497 |6639 |6 |graphid |0 | |NULL |NULL |NULL |1622 |NULL |NULL |NULL |
-ROW |19498 |6640 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19499 |6640 |6 |graphid |0 | |NULL |NULL |NULL |1628 |NULL |NULL |NULL |
-ROW |19500 |6641 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19501 |6641 |6 |graphid |0 | |NULL |NULL |NULL |1624 |NULL |NULL |NULL |
-ROW |19502 |6642 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19503 |6642 |6 |graphid |0 | |NULL |NULL |NULL |1623 |NULL |NULL |NULL |
-ROW |19504 |6643 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19505 |6643 |6 |graphid |0 | |NULL |NULL |NULL |1626 |NULL |NULL |NULL |
-ROW |19506 |6644 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19507 |6644 |6 |graphid |0 | |NULL |NULL |NULL |1627 |NULL |NULL |NULL |
-ROW |19508 |6645 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19509 |6645 |6 |graphid |0 | |NULL |NULL |NULL |1625 |NULL |NULL |NULL |
-ROW |19510 |6646 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19511 |6646 |6 |graphid |0 | |NULL |NULL |NULL |1125 |NULL |NULL |NULL |
-ROW |19512 |6647 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19513 |6647 |6 |graphid |0 | |NULL |NULL |NULL |1129 |NULL |NULL |NULL |
-ROW |19514 |6648 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19515 |6648 |6 |graphid |0 | |NULL |NULL |NULL |1128 |NULL |NULL |NULL |
-ROW |19516 |6649 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19517 |6649 |6 |graphid |0 | |NULL |NULL |NULL |1126 |NULL |NULL |NULL |
-ROW |19518 |6650 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19519 |6650 |6 |graphid |0 | |NULL |NULL |NULL |1127 |NULL |NULL |NULL |
-ROW |19520 |6651 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19521 |6651 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19522 |6651 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19523 |6651 |7 |graphid |0 | |NULL |NULL |NULL |1075 |NULL |NULL |NULL |
-ROW |19524 |6652 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19525 |6652 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19526 |6652 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19527 |6652 |7 |graphid |0 | |NULL |NULL |NULL |1630 |NULL |NULL |NULL |
-ROW |19528 |6653 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19529 |6653 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19530 |6653 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19531 |6653 |7 |graphid |0 | |NULL |NULL |NULL |1629 |NULL |NULL |NULL |
-ROW |19532 |6654 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19533 |6654 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19534 |6654 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19535 |6654 |7 |graphid |0 | |NULL |NULL |NULL |1078 |NULL |NULL |NULL |
-ROW |19536 |6655 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19537 |6655 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19538 |6655 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19539 |6655 |7 |graphid |0 | |NULL |NULL |NULL |1076 |NULL |NULL |NULL |
-ROW |19540 |6656 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19541 |6656 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19542 |6656 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19543 |6656 |7 |graphid |0 | |NULL |NULL |NULL |1079 |NULL |NULL |NULL |
-ROW |19544 |6657 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19545 |6657 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19546 |6657 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19547 |6657 |7 |graphid |0 | |NULL |NULL |NULL |1077 |NULL |NULL |NULL |
-ROW |19548 |6658 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19549 |6658 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19550 |6658 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19551 |6658 |7 |graphid |0 | |NULL |NULL |NULL |1080 |NULL |NULL |NULL |
-ROW |19552 |6659 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19553 |6659 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19554 |6659 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19555 |6659 |7 |graphid |0 | |NULL |NULL |NULL |1632 |NULL |NULL |NULL |
-ROW |19556 |6660 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19557 |6660 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19558 |6660 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19559 |6660 |7 |graphid |0 | |NULL |NULL |NULL |1631 |NULL |NULL |NULL |
-ROW |19560 |6661 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19561 |6661 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19562 |6661 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19563 |6661 |7 |graphid |0 | |NULL |NULL |NULL |1081 |NULL |NULL |NULL |
-ROW |19564 |6662 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19565 |6662 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19566 |6662 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19567 |6662 |7 |graphid |0 | |NULL |NULL |NULL |1634 |NULL |NULL |NULL |
-ROW |19568 |6663 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19569 |6663 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19570 |6663 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19571 |6663 |7 |graphid |0 | |NULL |NULL |NULL |1633 |NULL |NULL |NULL |
-ROW |19572 |6664 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19573 |6664 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19574 |6664 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19575 |6664 |7 |graphid |0 | |NULL |NULL |NULL |1084 |NULL |NULL |NULL |
-ROW |19576 |6665 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19577 |6665 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19578 |6665 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19579 |6665 |7 |graphid |0 | |NULL |NULL |NULL |1082 |NULL |NULL |NULL |
-ROW |19580 |6666 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19581 |6666 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19582 |6666 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19583 |6666 |7 |graphid |0 | |NULL |NULL |NULL |1085 |NULL |NULL |NULL |
-ROW |19584 |6667 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19585 |6667 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19586 |6667 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19587 |6667 |7 |graphid |0 | |NULL |NULL |NULL |1083 |NULL |NULL |NULL |
-ROW |19588 |6668 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19589 |6668 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19590 |6668 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19591 |6668 |7 |graphid |0 | |NULL |NULL |NULL |1086 |NULL |NULL |NULL |
-ROW |19592 |6669 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19593 |6669 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19594 |6669 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19595 |6669 |7 |graphid |0 | |NULL |NULL |NULL |1636 |NULL |NULL |NULL |
-ROW |19596 |6670 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19597 |6670 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19598 |6670 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19599 |6670 |7 |graphid |0 | |NULL |NULL |NULL |1635 |NULL |NULL |NULL |
-ROW |19600 |6671 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19601 |6671 |6 |graphid |0 | |NULL |NULL |NULL |841 |NULL |NULL |NULL |
-ROW |19602 |6672 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19603 |6672 |6 |graphid |0 | |NULL |NULL |NULL |843 |NULL |NULL |NULL |
-ROW |19604 |6673 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19605 |6673 |6 |graphid |0 | |NULL |NULL |NULL |842 |NULL |NULL |NULL |
-ROW |19606 |6674 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19607 |6674 |6 |graphid |0 | |NULL |NULL |NULL |845 |NULL |NULL |NULL |
-ROW |19608 |6675 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19609 |6675 |6 |graphid |0 | |NULL |NULL |NULL |847 |NULL |NULL |NULL |
-ROW |19610 |6676 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19611 |6676 |6 |graphid |0 | |NULL |NULL |NULL |846 |NULL |NULL |NULL |
-ROW |19612 |6677 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19613 |6677 |6 |graphid |0 | |NULL |NULL |NULL |1029 |NULL |NULL |NULL |
-ROW |19614 |6678 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19615 |6678 |6 |graphid |0 | |NULL |NULL |NULL |1027 |NULL |NULL |NULL |
-ROW |19616 |6679 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19617 |6679 |6 |graphid |0 | |NULL |NULL |NULL |1030 |NULL |NULL |NULL |
-ROW |19618 |6680 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19619 |6680 |6 |graphid |0 | |NULL |NULL |NULL |1028 |NULL |NULL |NULL |
-ROW |19620 |6681 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19621 |6681 |6 |graphid |0 | |NULL |NULL |NULL |1031 |NULL |NULL |NULL |
-ROW |19622 |6682 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19623 |6682 |6 |graphid |0 | |NULL |NULL |NULL |1011 |NULL |NULL |NULL |
-ROW |19624 |6683 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19625 |6683 |6 |graphid |0 | |NULL |NULL |NULL |1012 |NULL |NULL |NULL |
-ROW |19626 |6684 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19627 |6684 |6 |graphid |0 | |NULL |NULL |NULL |1008 |NULL |NULL |NULL |
-ROW |19628 |6685 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19629 |6685 |6 |graphid |0 | |NULL |NULL |NULL |1009 |NULL |NULL |NULL |
-ROW |19630 |6686 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19631 |6686 |6 |graphid |0 | |NULL |NULL |NULL |1007 |NULL |NULL |NULL |
-ROW |19632 |6687 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19633 |6687 |6 |graphid |0 | |NULL |NULL |NULL |1010 |NULL |NULL |NULL |
-ROW |19634 |6688 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19635 |6688 |6 |graphid |0 | |NULL |NULL |NULL |1018 |NULL |NULL |NULL |
-ROW |19636 |6689 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19637 |6689 |6 |graphid |0 | |NULL |NULL |NULL |1016 |NULL |NULL |NULL |
-ROW |19638 |6690 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19639 |6690 |6 |graphid |0 | |NULL |NULL |NULL |1019 |NULL |NULL |NULL |
-ROW |19640 |6691 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19641 |6691 |6 |graphid |0 | |NULL |NULL |NULL |1017 |NULL |NULL |NULL |
-ROW |19642 |6692 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19643 |6692 |6 |graphid |0 | |NULL |NULL |NULL |1020 |NULL |NULL |NULL |
-ROW |19644 |6693 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19645 |6693 |6 |graphid |0 | |NULL |NULL |NULL |1025 |NULL |NULL |NULL |
-ROW |19646 |6694 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19647 |6694 |6 |graphid |0 | |NULL |NULL |NULL |1026 |NULL |NULL |NULL |
-ROW |19648 |6695 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19649 |6695 |6 |graphid |0 | |NULL |NULL |NULL |1022 |NULL |NULL |NULL |
-ROW |19650 |6696 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19651 |6696 |6 |graphid |0 | |NULL |NULL |NULL |1023 |NULL |NULL |NULL |
-ROW |19652 |6697 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19653 |6697 |6 |graphid |0 | |NULL |NULL |NULL |1021 |NULL |NULL |NULL |
-ROW |19654 |6698 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19655 |6698 |6 |graphid |0 | |NULL |NULL |NULL |1024 |NULL |NULL |NULL |
-ROW |19656 |6699 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19657 |6699 |6 |graphid |0 | |NULL |NULL |NULL |532 |NULL |NULL |NULL |
-ROW |19658 |6700 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19659 |6700 |6 |graphid |0 | |NULL |NULL |NULL |530 |NULL |NULL |NULL |
-ROW |19660 |6701 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19661 |6701 |6 |graphid |0 | |NULL |NULL |NULL |531 |NULL |NULL |NULL |
-ROW |19662 |6702 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19663 |6702 |6 |graphid |0 | |NULL |NULL |NULL |529 |NULL |NULL |NULL |
-ROW |19664 |6703 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19665 |6703 |6 |graphid |0 | |NULL |NULL |NULL |806 |NULL |NULL |NULL |
-ROW |19666 |6704 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19667 |6704 |6 |graphid |0 | |NULL |NULL |NULL |804 |NULL |NULL |NULL |
-ROW |19668 |6705 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19669 |6705 |6 |graphid |0 | |NULL |NULL |NULL |805 |NULL |NULL |NULL |
-ROW |19670 |6706 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19671 |6706 |6 |graphid |0 | |NULL |NULL |NULL |803 |NULL |NULL |NULL |
-ROW |19672 |6707 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19673 |6707 |6 |graphid |0 | |NULL |NULL |NULL |392 |NULL |NULL |NULL |
-ROW |19674 |6708 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19675 |6708 |6 |graphid |0 | |NULL |NULL |NULL |404 |NULL |NULL |NULL |
-ROW |19676 |6709 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19677 |6709 |6 |graphid |0 | |NULL |NULL |NULL |406 |NULL |NULL |NULL |
-ROW |19678 |6710 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19679 |6710 |6 |graphid |0 | |NULL |NULL |NULL |410 |NULL |NULL |NULL |
-ROW |19680 |6711 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19681 |6711 |6 |graphid |0 | |NULL |NULL |NULL |527 |NULL |NULL |NULL |
-ROW |19682 |6712 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19683 |6712 |6 |graphid |0 | |NULL |NULL |NULL |788 |NULL |NULL |NULL |
-ROW |19684 |6713 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19685 |6713 |6 |graphid |0 | |NULL |NULL |NULL |1651 |NULL |NULL |NULL |
-ROW |19686 |6714 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19687 |6714 |6 |graphid |0 | |NULL |NULL |NULL |1653 |NULL |NULL |NULL |
-ROW |19688 |6715 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19689 |6715 |6 |graphid |0 | |NULL |NULL |NULL |1652 |NULL |NULL |NULL |
-ROW |19690 |6716 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19691 |6716 |6 |graphid |0 | |NULL |NULL |NULL |1445 |NULL |NULL |NULL |
-ROW |19692 |6717 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19693 |6717 |6 |graphid |0 | |NULL |NULL |NULL |802 |NULL |NULL |NULL |
-ROW |19694 |6718 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19695 |6718 |6 |graphid |0 | |NULL |NULL |NULL |799 |NULL |NULL |NULL |
-ROW |19696 |6719 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19697 |6719 |6 |graphid |0 | |NULL |NULL |NULL |800 |NULL |NULL |NULL |
-ROW |19698 |6720 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19699 |6720 |6 |graphid |0 | |NULL |NULL |NULL |798 |NULL |NULL |NULL |
-ROW |19700 |6721 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19701 |6721 |6 |graphid |0 | |NULL |NULL |NULL |797 |NULL |NULL |NULL |
-ROW |19702 |6722 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19703 |6722 |6 |graphid |0 | |NULL |NULL |NULL |801 |NULL |NULL |NULL |
-ROW |19704 |6723 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19705 |6723 |6 |graphid |0 | |NULL |NULL |NULL |1659 |NULL |NULL |NULL |
-ROW |19706 |6724 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19707 |6724 |6 |graphid |0 | |NULL |NULL |NULL |1661 |NULL |NULL |NULL |
-ROW |19708 |6725 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19709 |6725 |6 |graphid |0 | |NULL |NULL |NULL |1660 |NULL |NULL |NULL |
-ROW |19710 |6726 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19711 |6726 |6 |graphid |0 | |NULL |NULL |NULL |1444 |NULL |NULL |NULL |
-ROW |19712 |6727 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19713 |6727 |4 |itemid |0 | |NULL |NULL |42965 |NULL |NULL |NULL |NULL |
-ROW |19714 |6728 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19715 |6728 |6 |graphid |0 | |NULL |NULL |NULL |2335 |NULL |NULL |NULL |
-ROW |19716 |6729 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19717 |6729 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19718 |6729 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19719 |6729 |7 |graphid |0 | |NULL |NULL |NULL |2326 |NULL |NULL |NULL |
-ROW |19720 |6730 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19721 |6730 |6 |graphid |0 | |NULL |NULL |NULL |2331 |NULL |NULL |NULL |
-ROW |19722 |6731 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19723 |6731 |6 |graphid |0 | |NULL |NULL |NULL |2332 |NULL |NULL |NULL |
-ROW |19724 |6732 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19725 |6732 |4 |itemid |0 | |NULL |NULL |42968 |NULL |NULL |NULL |NULL |
-ROW |19726 |6733 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19727 |6733 |6 |graphid |0 | |NULL |NULL |NULL |2336 |NULL |NULL |NULL |
-ROW |19728 |6734 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19729 |6734 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19730 |6734 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19731 |6734 |7 |graphid |0 | |NULL |NULL |NULL |2328 |NULL |NULL |NULL |
-ROW |19732 |6735 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19733 |6735 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19734 |6735 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19735 |6735 |5 |itemid |0 | |NULL |NULL |43002 |NULL |NULL |NULL |NULL |
-ROW |19736 |6736 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19737 |6736 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19738 |6736 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19739 |6736 |5 |itemid |0 | |NULL |NULL |43007 |NULL |NULL |NULL |NULL |
-ROW |19740 |6737 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19741 |6737 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19742 |6737 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19743 |6737 |7 |graphid |0 | |NULL |NULL |NULL |2329 |NULL |NULL |NULL |
-ROW |19744 |6738 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19745 |6738 |4 |itemid |0 | |NULL |NULL |42979 |NULL |NULL |NULL |NULL |
-ROW |19746 |6739 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19747 |6739 |6 |graphid |0 | |NULL |NULL |NULL |2335 |NULL |NULL |NULL |
-ROW |19748 |6740 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19749 |6740 |4 |itemid |0 | |NULL |NULL |42975 |NULL |NULL |NULL |NULL |
-ROW |19750 |6741 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19751 |6741 |4 |itemid |0 | |NULL |NULL |42974 |NULL |NULL |NULL |NULL |
-ROW |19752 |6742 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19753 |6742 |4 |itemid |0 | |NULL |NULL |42972 |NULL |NULL |NULL |NULL |
-ROW |19754 |6743 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19755 |6743 |6 |graphid |0 | |NULL |NULL |NULL |2330 |NULL |NULL |NULL |
-ROW |19756 |6744 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19757 |6744 |4 |itemid |0 | |NULL |NULL |42962 |NULL |NULL |NULL |NULL |
-ROW |19758 |6745 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19759 |6745 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19760 |6745 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19761 |6745 |5 |itemid |0 | |NULL |NULL |42996 |NULL |NULL |NULL |NULL |
-ROW |19762 |6746 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19763 |6746 |4 |itemid |0 | |NULL |NULL |42958 |NULL |NULL |NULL |NULL |
-ROW |19764 |6747 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19765 |6747 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19766 |6747 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19767 |6747 |5 |itemid |0 | |NULL |NULL |42997 |NULL |NULL |NULL |NULL |
-ROW |19768 |6748 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19769 |6748 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19770 |6748 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19771 |6748 |5 |itemid |0 | |NULL |NULL |42998 |NULL |NULL |NULL |NULL |
-ROW |19772 |6749 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19773 |6749 |4 |itemid |0 | |NULL |NULL |42937 |NULL |NULL |NULL |NULL |
-ROW |19774 |6750 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19775 |6750 |4 |itemid |0 | |NULL |NULL |42952 |NULL |NULL |NULL |NULL |
-ROW |19776 |6751 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19777 |6751 |4 |itemid |0 | |NULL |NULL |42938 |NULL |NULL |NULL |NULL |
-ROW |19778 |6752 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19779 |6752 |6 |graphid |0 | |NULL |NULL |NULL |2337 |NULL |NULL |NULL |
-ROW |19780 |6753 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19781 |6753 |6 |graphid |0 | |NULL |NULL |NULL |2338 |NULL |NULL |NULL |
-ROW |19782 |6754 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19783 |6754 |4 |itemid |0 | |NULL |NULL |42942 |NULL |NULL |NULL |NULL |
-ROW |19784 |6755 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19785 |6755 |4 |itemid |0 | |NULL |NULL |42939 |NULL |NULL |NULL |NULL |
-ROW |19786 |6756 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19787 |6756 |4 |itemid |0 | |NULL |NULL |42944 |NULL |NULL |NULL |NULL |
-ROW |19788 |6757 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19789 |6757 |6 |graphid |0 | |NULL |NULL |NULL |2339 |NULL |NULL |NULL |
-ROW |19790 |6758 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19791 |6758 |4 |itemid |0 | |NULL |NULL |42984 |NULL |NULL |NULL |NULL |
-ROW |19792 |6759 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19793 |6759 |4 |itemid |0 | |NULL |NULL |42936 |NULL |NULL |NULL |NULL |
-ROW |19794 |6760 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19795 |6760 |4 |itemid |0 | |NULL |NULL |42941 |NULL |NULL |NULL |NULL |
-ROW |19796 |6761 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19797 |6761 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19798 |6761 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19799 |6761 |7 |graphid |0 | |NULL |NULL |NULL |2326 |NULL |NULL |NULL |
-ROW |19800 |6762 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19801 |6762 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19802 |6762 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19803 |6762 |7 |graphid |0 | |NULL |NULL |NULL |2325 |NULL |NULL |NULL |
-ROW |19804 |6763 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19805 |6763 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19806 |6763 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19807 |6763 |5 |itemid |0 | |NULL |NULL |43000 |NULL |NULL |NULL |NULL |
-ROW |19808 |6764 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19809 |6764 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19810 |6764 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19811 |6764 |5 |itemid |0 | |NULL |NULL |42999 |NULL |NULL |NULL |NULL |
-ROW |19812 |6765 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19813 |6765 |6 |graphid |0 | |NULL |NULL |NULL |2333 |NULL |NULL |NULL |
-ROW |19814 |6766 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19815 |6766 |6 |graphid |0 | |NULL |NULL |NULL |2340 |NULL |NULL |NULL |
-ROW |19816 |6767 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19817 |6767 |6 |graphid |0 | |NULL |NULL |NULL |1112 |NULL |NULL |NULL |
-ROW |19818 |6768 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19819 |6768 |6 |graphid |0 | |NULL |NULL |NULL |1113 |NULL |NULL |NULL |
-ROW |19820 |6769 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19821 |6769 |6 |graphid |0 | |NULL |NULL |NULL |1110 |NULL |NULL |NULL |
-ROW |19822 |6770 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19823 |6770 |6 |graphid |0 | |NULL |NULL |NULL |1109 |NULL |NULL |NULL |
-ROW |19824 |6771 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19825 |6771 |6 |graphid |0 | |NULL |NULL |NULL |1111 |NULL |NULL |NULL |
-ROW |19826 |6772 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19827 |6772 |6 |graphid |0 | |NULL |NULL |NULL |1114 |NULL |NULL |NULL |
-ROW |19828 |6773 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19829 |6773 |6 |graphid |0 | |NULL |NULL |NULL |1139 |NULL |NULL |NULL |
-ROW |19830 |6774 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19831 |6774 |6 |graphid |0 | |NULL |NULL |NULL |1140 |NULL |NULL |NULL |
-ROW |19832 |6775 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19833 |6775 |6 |graphid |0 | |NULL |NULL |NULL |1137 |NULL |NULL |NULL |
-ROW |19834 |6776 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19835 |6776 |6 |graphid |0 | |NULL |NULL |NULL |1136 |NULL |NULL |NULL |
-ROW |19836 |6777 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19837 |6777 |6 |graphid |0 | |NULL |NULL |NULL |1138 |NULL |NULL |NULL |
-ROW |19838 |6778 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19839 |6778 |6 |graphid |0 | |NULL |NULL |NULL |1141 |NULL |NULL |NULL |
-ROW |19840 |6779 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19841 |6779 |6 |graphid |0 | |NULL |NULL |NULL |1118 |NULL |NULL |NULL |
-ROW |19842 |6780 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19843 |6780 |6 |graphid |0 | |NULL |NULL |NULL |1119 |NULL |NULL |NULL |
-ROW |19844 |6781 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19845 |6781 |6 |graphid |0 | |NULL |NULL |NULL |1116 |NULL |NULL |NULL |
-ROW |19846 |6782 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19847 |6782 |6 |graphid |0 | |NULL |NULL |NULL |1115 |NULL |NULL |NULL |
-ROW |19848 |6783 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19849 |6783 |6 |graphid |0 | |NULL |NULL |NULL |1117 |NULL |NULL |NULL |
-ROW |19850 |6784 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19851 |6784 |6 |graphid |0 | |NULL |NULL |NULL |1120 |NULL |NULL |NULL |
-ROW |19852 |6785 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19853 |6785 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19854 |6785 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19855 |6785 |7 |graphid |0 | |NULL |NULL |NULL |1387 |NULL |NULL |NULL |
-ROW |19856 |6786 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19857 |6786 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19858 |6786 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19859 |6786 |7 |graphid |0 | |NULL |NULL |NULL |1382 |NULL |NULL |NULL |
-ROW |19860 |6787 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19861 |6787 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19862 |6787 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19863 |6787 |7 |graphid |0 | |NULL |NULL |NULL |1380 |NULL |NULL |NULL |
-ROW |19864 |6788 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19865 |6788 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19866 |6788 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19867 |6788 |7 |graphid |0 | |NULL |NULL |NULL |1386 |NULL |NULL |NULL |
-ROW |19868 |6789 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19869 |6789 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19870 |6789 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19871 |6789 |7 |graphid |0 | |NULL |NULL |NULL |1383 |NULL |NULL |NULL |
-ROW |19872 |6790 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19873 |6790 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19874 |6790 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19875 |6790 |7 |graphid |0 | |NULL |NULL |NULL |1381 |NULL |NULL |NULL |
-ROW |19876 |6791 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19877 |6791 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19878 |6791 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19879 |6791 |7 |graphid |0 | |NULL |NULL |NULL |1384 |NULL |NULL |NULL |
-ROW |19880 |6792 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19881 |6792 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19882 |6792 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19883 |6792 |7 |graphid |0 | |NULL |NULL |NULL |1385 |NULL |NULL |NULL |
-ROW |19884 |6793 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19885 |6793 |6 |graphid |0 | |NULL |NULL |NULL |1390 |NULL |NULL |NULL |
-ROW |19886 |6794 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19887 |6794 |6 |graphid |0 | |NULL |NULL |NULL |1393 |NULL |NULL |NULL |
-ROW |19888 |6795 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19889 |6795 |6 |graphid |0 | |NULL |NULL |NULL |1391 |NULL |NULL |NULL |
-ROW |19890 |6796 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19891 |6796 |6 |graphid |0 | |NULL |NULL |NULL |1394 |NULL |NULL |NULL |
-ROW |19892 |6797 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19893 |6797 |6 |graphid |0 | |NULL |NULL |NULL |1392 |NULL |NULL |NULL |
-ROW |19894 |6798 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19895 |6798 |6 |graphid |0 | |NULL |NULL |NULL |1395 |NULL |NULL |NULL |
-ROW |19896 |6799 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19897 |6799 |6 |graphid |0 | |NULL |NULL |NULL |1388 |NULL |NULL |NULL |
-ROW |19898 |6800 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19899 |6800 |6 |graphid |0 | |NULL |NULL |NULL |1389 |NULL |NULL |NULL |
-ROW |19900 |6801 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19901 |6801 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19902 |6801 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19903 |6801 |7 |graphid |0 | |NULL |NULL |NULL |1221 |NULL |NULL |NULL |
-ROW |19904 |6802 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19905 |6802 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19906 |6802 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19907 |6802 |7 |graphid |0 | |NULL |NULL |NULL |1219 |NULL |NULL |NULL |
-ROW |19908 |6803 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19909 |6803 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19910 |6803 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19911 |6803 |7 |graphid |0 | |NULL |NULL |NULL |1222 |NULL |NULL |NULL |
-ROW |19912 |6804 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19913 |6804 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19914 |6804 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19915 |6804 |7 |graphid |0 | |NULL |NULL |NULL |1220 |NULL |NULL |NULL |
-ROW |19916 |6805 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19917 |6805 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19918 |6805 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19919 |6805 |7 |graphid |0 | |NULL |NULL |NULL |2323 |NULL |NULL |NULL |
-ROW |19920 |6806 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19921 |6806 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19922 |6806 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19923 |6806 |7 |graphid |0 | |NULL |NULL |NULL |2324 |NULL |NULL |NULL |
-ROW |19924 |6807 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19925 |6807 |6 |graphid |0 | |NULL |NULL |NULL |1091 |NULL |NULL |NULL |
-ROW |19926 |6808 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19927 |6808 |6 |graphid |0 | |NULL |NULL |NULL |1095 |NULL |NULL |NULL |
-ROW |19928 |6809 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19929 |6809 |6 |graphid |0 | |NULL |NULL |NULL |1092 |NULL |NULL |NULL |
-ROW |19930 |6810 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19931 |6810 |6 |graphid |0 | |NULL |NULL |NULL |1094 |NULL |NULL |NULL |
-ROW |19932 |6811 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19933 |6811 |6 |graphid |0 | |NULL |NULL |NULL |1099 |NULL |NULL |NULL |
-ROW |19934 |6812 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19935 |6812 |6 |graphid |0 | |NULL |NULL |NULL |1100 |NULL |NULL |NULL |
-ROW |19936 |6813 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19937 |6813 |6 |graphid |0 | |NULL |NULL |NULL |1101 |NULL |NULL |NULL |
-ROW |19938 |6814 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19939 |6814 |6 |graphid |0 | |NULL |NULL |NULL |1102 |NULL |NULL |NULL |
-ROW |19940 |6815 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19941 |6815 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19942 |6815 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19943 |6815 |7 |graphid |0 | |NULL |NULL |NULL |1090 |NULL |NULL |NULL |
-ROW |19944 |6816 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19945 |6816 |6 |graphid |0 | |NULL |NULL |NULL |1093 |NULL |NULL |NULL |
-ROW |19946 |6817 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19947 |6817 |6 |graphid |0 | |NULL |NULL |NULL |1098 |NULL |NULL |NULL |
-ROW |19948 |6818 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19949 |6818 |6 |graphid |0 | |NULL |NULL |NULL |1096 |NULL |NULL |NULL |
-ROW |19950 |6819 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19951 |6819 |6 |graphid |0 | |NULL |NULL |NULL |1097 |NULL |NULL |NULL |
-ROW |19952 |6820 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19953 |6820 |6 |graphid |0 | |NULL |NULL |NULL |2120 |NULL |NULL |NULL |
-ROW |19954 |6821 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19955 |6821 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19956 |6821 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19957 |6821 |7 |graphid |0 | |NULL |NULL |NULL |2115 |NULL |NULL |NULL |
-ROW |19958 |6822 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19959 |6822 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19960 |6822 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19961 |6822 |7 |graphid |0 | |NULL |NULL |NULL |2114 |NULL |NULL |NULL |
-ROW |19962 |6823 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19963 |6823 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19964 |6823 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19965 |6823 |7 |graphid |0 | |NULL |NULL |NULL |741 |NULL |NULL |NULL |
-ROW |19966 |6824 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19967 |6824 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19968 |6824 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19969 |6824 |7 |graphid |0 | |NULL |NULL |NULL |745 |NULL |NULL |NULL |
-ROW |19970 |6825 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19971 |6825 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19972 |6825 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19973 |6825 |7 |graphid |0 | |NULL |NULL |NULL |766 |NULL |NULL |NULL |
-ROW |19974 |6826 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19975 |6826 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19976 |6826 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19977 |6826 |7 |graphid |0 | |NULL |NULL |NULL |899 |NULL |NULL |NULL |
-ROW |19978 |6827 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19979 |6827 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19980 |6827 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19981 |6827 |7 |graphid |0 | |NULL |NULL |NULL |1287 |NULL |NULL |NULL |
-ROW |19982 |6828 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19983 |6828 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19984 |6828 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19985 |6828 |7 |graphid |0 | |NULL |NULL |NULL |1238 |NULL |NULL |NULL |
-ROW |19986 |6829 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19987 |6829 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19988 |6829 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19989 |6829 |7 |graphid |0 | |NULL |NULL |NULL |1307 |NULL |NULL |NULL |
-ROW |19990 |6830 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19991 |6830 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19992 |6830 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19993 |6830 |7 |graphid |0 | |NULL |NULL |NULL |2123 |NULL |NULL |NULL |
-ROW |19994 |6831 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19995 |6831 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19996 |6831 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19997 |6831 |7 |graphid |0 | |NULL |NULL |NULL |2124 |NULL |NULL |NULL |
-ROW |19998 |6832 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |19999 |6832 |6 |graphid |0 | |NULL |NULL |NULL |2127 |NULL |NULL |NULL |
-ROW |20000 |6833 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20001 |6833 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20002 |6833 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20003 |6833 |7 |graphid |0 | |NULL |NULL |NULL |2126 |NULL |NULL |NULL |
-ROW |20004 |6834 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20005 |6834 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20006 |6834 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20007 |6834 |7 |graphid |0 | |NULL |NULL |NULL |2125 |NULL |NULL |NULL |
-ROW |20008 |6835 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20009 |6835 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20010 |6835 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20011 |6835 |7 |graphid |0 | |NULL |NULL |NULL |2128 |NULL |NULL |NULL |
-ROW |20012 |6836 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20013 |6836 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20014 |6836 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20015 |6836 |7 |graphid |0 | |NULL |NULL |NULL |2129 |NULL |NULL |NULL |
-ROW |20016 |6837 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20017 |6837 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20018 |6837 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20019 |6837 |7 |graphid |0 | |NULL |NULL |NULL |2130 |NULL |NULL |NULL |
-ROW |20020 |6838 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20021 |6838 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20022 |6838 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20023 |6838 |7 |graphid |0 | |NULL |NULL |NULL |2138 |NULL |NULL |NULL |
-ROW |20024 |6839 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20025 |6839 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20026 |6839 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20027 |6839 |7 |graphid |0 | |NULL |NULL |NULL |2141 |NULL |NULL |NULL |
-ROW |20028 |6840 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20029 |6840 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20030 |6840 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20031 |6840 |7 |graphid |0 | |NULL |NULL |NULL |2143 |NULL |NULL |NULL |
-ROW |20032 |6841 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20033 |6841 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20034 |6841 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20035 |6841 |7 |graphid |0 | |NULL |NULL |NULL |2144 |NULL |NULL |NULL |
-ROW |20036 |6842 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20037 |6842 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20038 |6842 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20039 |6842 |7 |graphid |0 | |NULL |NULL |NULL |2145 |NULL |NULL |NULL |
-ROW |20040 |6843 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20041 |6843 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20042 |6843 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20043 |6843 |7 |graphid |0 | |NULL |NULL |NULL |2146 |NULL |NULL |NULL |
-ROW |20044 |6844 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20045 |6844 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20046 |6844 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20047 |6844 |7 |graphid |0 | |NULL |NULL |NULL |2147 |NULL |NULL |NULL |
-ROW |20048 |6845 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20049 |6845 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20050 |6845 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20051 |6845 |7 |graphid |0 | |NULL |NULL |NULL |2148 |NULL |NULL |NULL |
-ROW |20052 |6846 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20053 |6846 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20054 |6846 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20055 |6846 |7 |graphid |0 | |NULL |NULL |NULL |2149 |NULL |NULL |NULL |
-ROW |20056 |6847 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20057 |6847 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20058 |6847 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20059 |6847 |7 |graphid |0 | |NULL |NULL |NULL |2150 |NULL |NULL |NULL |
-ROW |20060 |6848 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20061 |6848 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20062 |6848 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20063 |6848 |7 |graphid |0 | |NULL |NULL |NULL |2151 |NULL |NULL |NULL |
-ROW |20064 |6849 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20065 |6849 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20066 |6849 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20067 |6849 |7 |graphid |0 | |NULL |NULL |NULL |2152 |NULL |NULL |NULL |
-ROW |20068 |6850 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20069 |6850 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20070 |6850 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20071 |6850 |7 |graphid |0 | |NULL |NULL |NULL |1564 |NULL |NULL |NULL |
-ROW |20072 |6851 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20073 |6851 |6 |graphid |0 | |NULL |NULL |NULL |1567 |NULL |NULL |NULL |
-ROW |20074 |6852 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20075 |6852 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20076 |6852 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20077 |6852 |7 |graphid |0 | |NULL |NULL |NULL |1566 |NULL |NULL |NULL |
-ROW |20078 |6853 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20079 |6853 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20080 |6853 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20081 |6853 |7 |graphid |0 | |NULL |NULL |NULL |1565 |NULL |NULL |NULL |
-ROW |20082 |6854 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20083 |6854 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20084 |6854 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20085 |6854 |7 |graphid |0 | |NULL |NULL |NULL |2153 |NULL |NULL |NULL |
-ROW |20086 |6855 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20087 |6855 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20088 |6855 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20089 |6855 |7 |graphid |0 | |NULL |NULL |NULL |2154 |NULL |NULL |NULL |
-ROW |20090 |6856 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20091 |6856 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20092 |6856 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20093 |6856 |7 |graphid |0 | |NULL |NULL |NULL |2155 |NULL |NULL |NULL |
-ROW |20094 |6857 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20095 |6857 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20096 |6857 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20097 |6857 |7 |graphid |0 | |NULL |NULL |NULL |2156 |NULL |NULL |NULL |
-ROW |20098 |6858 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20099 |6858 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20100 |6858 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20101 |6858 |7 |graphid |0 | |NULL |NULL |NULL |2157 |NULL |NULL |NULL |
-ROW |20102 |6859 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20103 |6859 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20104 |6859 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20105 |6859 |7 |graphid |0 | |NULL |NULL |NULL |2158 |NULL |NULL |NULL |
-ROW |20106 |6860 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20107 |6860 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20108 |6860 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20109 |6860 |7 |graphid |0 | |NULL |NULL |NULL |2159 |NULL |NULL |NULL |
-ROW |20110 |6861 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20111 |6861 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20112 |6861 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20113 |6861 |7 |graphid |0 | |NULL |NULL |NULL |2160 |NULL |NULL |NULL |
-ROW |20114 |6862 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20115 |6862 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20116 |6862 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20117 |6862 |7 |graphid |0 | |NULL |NULL |NULL |2161 |NULL |NULL |NULL |
-ROW |20118 |6863 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20119 |6863 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20120 |6863 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20121 |6863 |7 |graphid |0 | |NULL |NULL |NULL |2162 |NULL |NULL |NULL |
-ROW |20122 |6864 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20123 |6864 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20124 |6864 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20125 |6864 |7 |graphid |0 | |NULL |NULL |NULL |2163 |NULL |NULL |NULL |
-ROW |20126 |6865 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20127 |6865 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20128 |6865 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20129 |6865 |7 |graphid |0 | |NULL |NULL |NULL |2164 |NULL |NULL |NULL |
-ROW |20130 |6866 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20131 |6866 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20132 |6866 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20133 |6866 |7 |graphid |0 | |NULL |NULL |NULL |2165 |NULL |NULL |NULL |
-ROW |20134 |6867 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20135 |6867 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20136 |6867 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20137 |6867 |7 |graphid |0 | |NULL |NULL |NULL |2166 |NULL |NULL |NULL |
-ROW |20138 |6868 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20139 |6868 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20140 |6868 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20141 |6868 |7 |graphid |0 | |NULL |NULL |NULL |2167 |NULL |NULL |NULL |
-ROW |20142 |6869 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20143 |6869 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20144 |6869 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20145 |6869 |7 |graphid |0 | |NULL |NULL |NULL |2168 |NULL |NULL |NULL |
-ROW |20146 |6870 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20147 |6870 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20148 |6870 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20149 |6870 |7 |graphid |0 | |NULL |NULL |NULL |2169 |NULL |NULL |NULL |
-ROW |20150 |6871 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20151 |6871 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20152 |6871 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20153 |6871 |7 |graphid |0 | |NULL |NULL |NULL |2170 |NULL |NULL |NULL |
-ROW |20154 |6872 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20155 |6872 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20156 |6872 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20157 |6872 |7 |graphid |0 | |NULL |NULL |NULL |2171 |NULL |NULL |NULL |
-ROW |20158 |6873 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20159 |6873 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20160 |6873 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20161 |6873 |7 |graphid |0 | |NULL |NULL |NULL |2172 |NULL |NULL |NULL |
-ROW |20162 |6874 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20163 |6874 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20164 |6874 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20165 |6874 |7 |graphid |0 | |NULL |NULL |NULL |2173 |NULL |NULL |NULL |
-ROW |20166 |6875 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20167 |6875 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20168 |6875 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20169 |6875 |7 |graphid |0 | |NULL |NULL |NULL |2174 |NULL |NULL |NULL |
-ROW |20170 |6876 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20171 |6876 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20172 |6876 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20173 |6876 |7 |graphid |0 | |NULL |NULL |NULL |2175 |NULL |NULL |NULL |
-ROW |20174 |6877 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20175 |6877 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20176 |6877 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20177 |6877 |7 |graphid |0 | |NULL |NULL |NULL |2176 |NULL |NULL |NULL |
-ROW |20178 |6878 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20179 |6878 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20180 |6878 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20181 |6878 |7 |graphid |0 | |NULL |NULL |NULL |2177 |NULL |NULL |NULL |
-ROW |20182 |6879 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20183 |6879 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20184 |6879 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20185 |6879 |7 |graphid |0 | |NULL |NULL |NULL |2178 |NULL |NULL |NULL |
-ROW |20186 |6880 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20187 |6880 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20188 |6880 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20189 |6880 |7 |graphid |0 | |NULL |NULL |NULL |2179 |NULL |NULL |NULL |
-ROW |20190 |6881 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20191 |6881 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20192 |6881 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20193 |6881 |7 |graphid |0 | |NULL |NULL |NULL |2180 |NULL |NULL |NULL |
-ROW |20194 |6882 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20195 |6882 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20196 |6882 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20197 |6882 |7 |graphid |0 | |NULL |NULL |NULL |2181 |NULL |NULL |NULL |
-ROW |20198 |6883 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20199 |6883 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20200 |6883 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20201 |6883 |7 |graphid |0 | |NULL |NULL |NULL |2182 |NULL |NULL |NULL |
-ROW |20202 |6884 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20203 |6884 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20204 |6884 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20205 |6884 |7 |graphid |0 | |NULL |NULL |NULL |2183 |NULL |NULL |NULL |
-ROW |20206 |6885 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20207 |6885 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20208 |6885 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20209 |6885 |7 |graphid |0 | |NULL |NULL |NULL |2184 |NULL |NULL |NULL |
-ROW |20210 |6886 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20211 |6886 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20212 |6886 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20213 |6886 |7 |graphid |0 | |NULL |NULL |NULL |2185 |NULL |NULL |NULL |
-ROW |20214 |6887 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20215 |6887 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20216 |6887 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20217 |6887 |7 |graphid |0 | |NULL |NULL |NULL |2186 |NULL |NULL |NULL |
-ROW |20218 |6888 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20219 |6888 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20220 |6888 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20221 |6888 |7 |graphid |0 | |NULL |NULL |NULL |2187 |NULL |NULL |NULL |
-ROW |20222 |6889 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20223 |6889 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20224 |6889 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20225 |6889 |7 |graphid |0 | |NULL |NULL |NULL |2188 |NULL |NULL |NULL |
-ROW |20226 |6890 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20227 |6890 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20228 |6890 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20229 |6890 |7 |graphid |0 | |NULL |NULL |NULL |2189 |NULL |NULL |NULL |
-ROW |20230 |6891 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20231 |6891 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20232 |6891 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20233 |6891 |7 |graphid |0 | |NULL |NULL |NULL |2190 |NULL |NULL |NULL |
-ROW |20234 |6892 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20235 |6892 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20236 |6892 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20237 |6892 |7 |graphid |0 | |NULL |NULL |NULL |2191 |NULL |NULL |NULL |
-ROW |20238 |6893 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20239 |6893 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20240 |6893 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20241 |6893 |7 |graphid |0 | |NULL |NULL |NULL |2192 |NULL |NULL |NULL |
-ROW |20242 |6894 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20243 |6894 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20244 |6894 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20245 |6894 |7 |graphid |0 | |NULL |NULL |NULL |2193 |NULL |NULL |NULL |
-ROW |20246 |6895 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20247 |6895 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20248 |6895 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20249 |6895 |7 |graphid |0 | |NULL |NULL |NULL |2194 |NULL |NULL |NULL |
-ROW |20250 |6896 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20251 |6896 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20252 |6896 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20253 |6896 |7 |graphid |0 | |NULL |NULL |NULL |2195 |NULL |NULL |NULL |
-ROW |20254 |6897 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20255 |6897 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20256 |6897 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20257 |6897 |7 |graphid |0 | |NULL |NULL |NULL |2196 |NULL |NULL |NULL |
-ROW |20258 |6898 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20259 |6898 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20260 |6898 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20261 |6898 |7 |graphid |0 | |NULL |NULL |NULL |2197 |NULL |NULL |NULL |
-ROW |20262 |6899 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20263 |6899 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20264 |6899 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20265 |6899 |7 |graphid |0 | |NULL |NULL |NULL |2198 |NULL |NULL |NULL |
-ROW |20266 |6900 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20267 |6900 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20268 |6900 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20269 |6900 |7 |graphid |0 | |NULL |NULL |NULL |2199 |NULL |NULL |NULL |
-ROW |20270 |6901 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20271 |6901 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20272 |6901 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20273 |6901 |7 |graphid |0 | |NULL |NULL |NULL |2200 |NULL |NULL |NULL |
-ROW |20274 |6902 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20275 |6902 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20276 |6902 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20277 |6902 |7 |graphid |0 | |NULL |NULL |NULL |2201 |NULL |NULL |NULL |
-ROW |20278 |6903 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20279 |6903 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20280 |6903 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20281 |6903 |7 |graphid |0 | |NULL |NULL |NULL |2202 |NULL |NULL |NULL |
-ROW |20282 |6904 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20283 |6904 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20284 |6904 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20285 |6904 |7 |graphid |0 | |NULL |NULL |NULL |2203 |NULL |NULL |NULL |
-ROW |20286 |6905 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20287 |6905 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20288 |6905 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20289 |6905 |7 |graphid |0 | |NULL |NULL |NULL |2204 |NULL |NULL |NULL |
-ROW |20290 |6906 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20291 |6906 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20292 |6906 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20293 |6906 |7 |graphid |0 | |NULL |NULL |NULL |2205 |NULL |NULL |NULL |
-ROW |20294 |6907 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20295 |6907 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20296 |6907 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20297 |6907 |7 |graphid |0 | |NULL |NULL |NULL |2206 |NULL |NULL |NULL |
-ROW |20298 |6908 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20299 |6908 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20300 |6908 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20301 |6908 |7 |graphid |0 | |NULL |NULL |NULL |2207 |NULL |NULL |NULL |
-ROW |20302 |6909 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20303 |6909 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20304 |6909 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20305 |6909 |7 |graphid |0 | |NULL |NULL |NULL |2208 |NULL |NULL |NULL |
-ROW |20306 |6910 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20307 |6910 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20308 |6910 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20309 |6910 |7 |graphid |0 | |NULL |NULL |NULL |2209 |NULL |NULL |NULL |
-ROW |20310 |6911 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20311 |6911 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20312 |6911 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20313 |6911 |7 |graphid |0 | |NULL |NULL |NULL |2210 |NULL |NULL |NULL |
-ROW |20314 |6912 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20315 |6912 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20316 |6912 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20317 |6912 |7 |graphid |0 | |NULL |NULL |NULL |2211 |NULL |NULL |NULL |
-ROW |20318 |6913 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20319 |6913 |6 |graphid |0 | |NULL |NULL |NULL |469 |NULL |NULL |NULL |
-ROW |20320 |6914 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20321 |6914 |6 |graphid |0 | |NULL |NULL |NULL |471 |NULL |NULL |NULL |
-ROW |20322 |6915 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20323 |6915 |6 |graphid |0 | |NULL |NULL |NULL |498 |NULL |NULL |NULL |
-ROW |20324 |6916 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20325 |6916 |6 |graphid |0 | |NULL |NULL |NULL |540 |NULL |NULL |NULL |
-ROW |20326 |6917 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20327 |6917 |6 |graphid |0 | |NULL |NULL |NULL |463 |NULL |NULL |NULL |
-ROW |20328 |6918 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20329 |6918 |6 |graphid |0 | |NULL |NULL |NULL |462 |NULL |NULL |NULL |
-ROW |20330 |6919 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20331 |6919 |6 |graphid |0 | |NULL |NULL |NULL |541 |NULL |NULL |NULL |
-ROW |20332 |6920 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20333 |6920 |6 |graphid |0 | |NULL |NULL |NULL |464 |NULL |NULL |NULL |
-ROW |20334 |6921 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20335 |6921 |6 |graphid |0 | |NULL |NULL |NULL |475 |NULL |NULL |NULL |
-ROW |20336 |6922 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20337 |6922 |6 |graphid |0 | |NULL |NULL |NULL |474 |NULL |NULL |NULL |
-ROW |20338 |6923 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20339 |6923 |6 |graphid |0 | |NULL |NULL |NULL |542 |NULL |NULL |NULL |
-ROW |20340 |6924 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20341 |6924 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20342 |6924 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20343 |6924 |7 |graphid |0 | |NULL |NULL |NULL |2212 |NULL |NULL |NULL |
-ROW |20344 |6925 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20345 |6925 |6 |graphid |0 | |NULL |NULL |NULL |2229 |NULL |NULL |NULL |
-ROW |20346 |6926 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20347 |6926 |6 |graphid |0 | |NULL |NULL |NULL |2223 |NULL |NULL |NULL |
-ROW |20348 |6927 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20349 |6927 |6 |graphid |0 | |NULL |NULL |NULL |2225 |NULL |NULL |NULL |
-ROW |20350 |6928 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20351 |6928 |6 |graphid |0 | |NULL |NULL |NULL |2228 |NULL |NULL |NULL |
-ROW |20352 |6929 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20353 |6929 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20354 |6929 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20355 |6929 |7 |graphid |0 | |NULL |NULL |NULL |2216 |NULL |NULL |NULL |
-ROW |20356 |6930 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20357 |6930 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20358 |6930 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20359 |6930 |7 |graphid |0 | |NULL |NULL |NULL |2214 |NULL |NULL |NULL |
-ROW |20360 |6931 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20361 |6931 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20362 |6931 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20363 |6931 |7 |graphid |0 | |NULL |NULL |NULL |2213 |NULL |NULL |NULL |
-ROW |20364 |6932 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20365 |6932 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20366 |6932 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20367 |6932 |7 |graphid |0 | |NULL |NULL |NULL |2215 |NULL |NULL |NULL |
-ROW |20368 |6933 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20369 |6933 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20370 |6933 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20371 |6933 |7 |graphid |0 | |NULL |NULL |NULL |2212 |NULL |NULL |NULL |
-ROW |20372 |6934 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20373 |6934 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20374 |6934 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20375 |6934 |7 |graphid |0 | |NULL |NULL |NULL |2238 |NULL |NULL |NULL |
-ROW |20376 |6935 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20377 |6935 |6 |graphid |0 | |NULL |NULL |NULL |2250 |NULL |NULL |NULL |
-ROW |20378 |6936 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20379 |6936 |6 |graphid |0 | |NULL |NULL |NULL |2244 |NULL |NULL |NULL |
-ROW |20380 |6937 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20381 |6937 |6 |graphid |0 | |NULL |NULL |NULL |2246 |NULL |NULL |NULL |
-ROW |20382 |6938 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20383 |6938 |6 |graphid |0 | |NULL |NULL |NULL |2249 |NULL |NULL |NULL |
-ROW |20384 |6939 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20385 |6939 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20386 |6939 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20387 |6939 |7 |graphid |0 | |NULL |NULL |NULL |2242 |NULL |NULL |NULL |
-ROW |20388 |6940 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20389 |6940 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20390 |6940 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20391 |6940 |7 |graphid |0 | |NULL |NULL |NULL |2240 |NULL |NULL |NULL |
-ROW |20392 |6941 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20393 |6941 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20394 |6941 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20395 |6941 |7 |graphid |0 | |NULL |NULL |NULL |2239 |NULL |NULL |NULL |
-ROW |20396 |6942 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20397 |6942 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20398 |6942 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20399 |6942 |7 |graphid |0 | |NULL |NULL |NULL |2241 |NULL |NULL |NULL |
-ROW |20400 |6943 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20401 |6943 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20402 |6943 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20403 |6943 |7 |graphid |0 | |NULL |NULL |NULL |2238 |NULL |NULL |NULL |
-ROW |20404 |6944 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20405 |6944 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20406 |6944 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20407 |6944 |7 |graphid |0 | |NULL |NULL |NULL |952 |NULL |NULL |NULL |
-ROW |20408 |6945 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20409 |6945 |6 |graphid |0 | |NULL |NULL |NULL |957 |NULL |NULL |NULL |
-ROW |20410 |6946 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20411 |6946 |6 |graphid |0 | |NULL |NULL |NULL |959 |NULL |NULL |NULL |
-ROW |20412 |6947 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20413 |6947 |6 |graphid |0 | |NULL |NULL |NULL |962 |NULL |NULL |NULL |
-ROW |20414 |6948 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20415 |6948 |6 |graphid |0 | |NULL |NULL |NULL |963 |NULL |NULL |NULL |
-ROW |20416 |6949 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20417 |6949 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20418 |6949 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20419 |6949 |7 |graphid |0 | |NULL |NULL |NULL |953 |NULL |NULL |NULL |
-ROW |20420 |6950 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20421 |6950 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20422 |6950 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20423 |6950 |7 |graphid |0 | |NULL |NULL |NULL |954 |NULL |NULL |NULL |
-ROW |20424 |6951 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20425 |6951 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20426 |6951 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20427 |6951 |7 |graphid |0 | |NULL |NULL |NULL |955 |NULL |NULL |NULL |
-ROW |20428 |6952 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20429 |6952 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20430 |6952 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20431 |6952 |7 |graphid |0 | |NULL |NULL |NULL |956 |NULL |NULL |NULL |
-ROW |20432 |6953 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20433 |6953 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20434 |6953 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20435 |6953 |7 |graphid |0 | |NULL |NULL |NULL |952 |NULL |NULL |NULL |
-ROW |20436 |6954 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20437 |6954 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20438 |6954 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20439 |6954 |7 |graphid |0 | |NULL |NULL |NULL |2253 |NULL |NULL |NULL |
-ROW |20440 |6955 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20441 |6955 |6 |graphid |0 | |NULL |NULL |NULL |2260 |NULL |NULL |NULL |
-ROW |20442 |6956 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20443 |6956 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20444 |6956 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20445 |6956 |7 |graphid |0 | |NULL |NULL |NULL |2251 |NULL |NULL |NULL |
-ROW |20446 |6957 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20447 |6957 |6 |graphid |0 | |NULL |NULL |NULL |2257 |NULL |NULL |NULL |
-ROW |20448 |6958 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20449 |6958 |6 |graphid |0 | |NULL |NULL |NULL |2259 |NULL |NULL |NULL |
-ROW |20450 |6959 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20451 |6959 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20452 |6959 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20453 |6959 |7 |graphid |0 | |NULL |NULL |NULL |2255 |NULL |NULL |NULL |
-ROW |20454 |6960 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20455 |6960 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20456 |6960 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20457 |6960 |7 |graphid |0 | |NULL |NULL |NULL |2254 |NULL |NULL |NULL |
-ROW |20458 |6961 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20459 |6961 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20460 |6961 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20461 |6961 |5 |itemid |0 | |NULL |NULL |42436 |NULL |NULL |NULL |NULL |
-ROW |20462 |6962 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20463 |6962 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20464 |6962 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20465 |6962 |7 |graphid |0 | |NULL |NULL |NULL |2253 |NULL |NULL |NULL |
-ROW |20466 |6963 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20467 |6963 |6 |graphid |0 | |NULL |NULL |NULL |487 |NULL |NULL |NULL |
-ROW |20468 |6964 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20469 |6964 |6 |graphid |0 | |NULL |NULL |NULL |543 |NULL |NULL |NULL |
-ROW |20470 |6965 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20471 |6965 |6 |graphid |0 | |NULL |NULL |NULL |457 |NULL |NULL |NULL |
-ROW |20472 |6966 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20473 |6966 |6 |graphid |0 | |NULL |NULL |NULL |456 |NULL |NULL |NULL |
-ROW |20474 |6967 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20475 |6967 |6 |graphid |0 | |NULL |NULL |NULL |544 |NULL |NULL |NULL |
-ROW |20476 |6968 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20477 |6968 |6 |graphid |0 | |NULL |NULL |NULL |458 |NULL |NULL |NULL |
-ROW |20478 |6969 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20479 |6969 |6 |graphid |0 | |NULL |NULL |NULL |481 |NULL |NULL |NULL |
-ROW |20480 |6970 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20481 |6970 |6 |graphid |0 | |NULL |NULL |NULL |480 |NULL |NULL |NULL |
-ROW |20482 |6971 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20483 |6971 |6 |graphid |0 | |NULL |NULL |NULL |545 |NULL |NULL |NULL |
-ROW |20484 |6972 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20485 |6972 |6 |graphid |0 | |NULL |NULL |NULL |482 |NULL |NULL |NULL |
-ROW |20486 |6973 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20487 |6973 |4 |itemid |0 | |NULL |NULL |22998 |NULL |NULL |NULL |NULL |
-ROW |20488 |6974 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20489 |6974 |4 |itemid |0 | |NULL |NULL |22997 |NULL |NULL |NULL |NULL |
-ROW |20490 |6975 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20491 |6975 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20492 |6975 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20493 |6975 |7 |graphid |0 | |NULL |NULL |NULL |2261 |NULL |NULL |NULL |
-ROW |20494 |6976 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20495 |6976 |6 |graphid |0 | |NULL |NULL |NULL |2268 |NULL |NULL |NULL |
-ROW |20496 |6977 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20497 |6977 |4 |itemid |0 | |NULL |NULL |42472 |NULL |NULL |NULL |NULL |
-ROW |20498 |6978 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20499 |6978 |6 |graphid |0 | |NULL |NULL |NULL |2270 |NULL |NULL |NULL |
-ROW |20500 |6979 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20501 |6979 |6 |graphid |0 | |NULL |NULL |NULL |2271 |NULL |NULL |NULL |
-ROW |20502 |6980 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20503 |6980 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20504 |6980 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20505 |6980 |7 |graphid |0 | |NULL |NULL |NULL |2266 |NULL |NULL |NULL |
-ROW |20506 |6981 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20507 |6981 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20508 |6981 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20509 |6981 |7 |graphid |0 | |NULL |NULL |NULL |2264 |NULL |NULL |NULL |
-ROW |20510 |6982 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20511 |6982 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20512 |6982 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20513 |6982 |7 |graphid |0 | |NULL |NULL |NULL |2265 |NULL |NULL |NULL |
-ROW |20514 |6983 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20515 |6983 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20516 |6983 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20517 |6983 |7 |graphid |0 | |NULL |NULL |NULL |2261 |NULL |NULL |NULL |
-ROW |20518 |6984 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20519 |6984 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20520 |6984 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20521 |6984 |7 |graphid |0 | |NULL |NULL |NULL |2272 |NULL |NULL |NULL |
-ROW |20522 |6985 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20523 |6985 |6 |graphid |0 | |NULL |NULL |NULL |2279 |NULL |NULL |NULL |
-ROW |20524 |6986 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20525 |6986 |4 |itemid |0 | |NULL |NULL |42528 |NULL |NULL |NULL |NULL |
-ROW |20526 |6987 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20527 |6987 |6 |graphid |0 | |NULL |NULL |NULL |2281 |NULL |NULL |NULL |
-ROW |20528 |6988 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20529 |6988 |6 |graphid |0 | |NULL |NULL |NULL |2282 |NULL |NULL |NULL |
-ROW |20530 |6989 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20531 |6989 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20532 |6989 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20533 |6989 |7 |graphid |0 | |NULL |NULL |NULL |2277 |NULL |NULL |NULL |
-ROW |20534 |6990 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20535 |6990 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20536 |6990 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20537 |6990 |7 |graphid |0 | |NULL |NULL |NULL |2275 |NULL |NULL |NULL |
-ROW |20538 |6991 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20539 |6991 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20540 |6991 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20541 |6991 |7 |graphid |0 | |NULL |NULL |NULL |2276 |NULL |NULL |NULL |
-ROW |20542 |6992 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20543 |6992 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20544 |6992 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20545 |6992 |7 |graphid |0 | |NULL |NULL |NULL |2272 |NULL |NULL |NULL |
-ROW |20546 |6993 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20547 |6993 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20548 |6993 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20549 |6993 |7 |graphid |0 | |NULL |NULL |NULL |2283 |NULL |NULL |NULL |
-ROW |20550 |6994 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20551 |6994 |6 |graphid |0 | |NULL |NULL |NULL |2286 |NULL |NULL |NULL |
-ROW |20552 |6995 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20553 |6995 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20554 |6995 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20555 |6995 |7 |graphid |0 | |NULL |NULL |NULL |2285 |NULL |NULL |NULL |
-ROW |20556 |6996 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20557 |6996 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20558 |6996 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20559 |6996 |7 |graphid |0 | |NULL |NULL |NULL |2284 |NULL |NULL |NULL |
-ROW |20560 |6997 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20561 |6997 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20562 |6997 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
-ROW |20563 |6997 |7 |graphid |0 | |NULL |NULL |NULL |1805 |NULL |NULL |NULL |
+ROW |20564 |6998 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20565 |6998 |6 |graphid |0 | |NULL |NULL |NULL |1174 |NULL |NULL |NULL |
+ROW |20566 |6999 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20567 |6999 |6 |graphid |0 | |NULL |NULL |NULL |1176 |NULL |NULL |NULL |
+ROW |20568 |7000 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20569 |7000 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20570 |7000 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20571 |7000 |7 |graphid |0 | |NULL |NULL |NULL |1172 |NULL |NULL |NULL |
+ROW |20572 |7001 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20573 |7001 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20574 |7001 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20575 |7001 |7 |graphid |0 | |NULL |NULL |NULL |1173 |NULL |NULL |NULL |
+ROW |20576 |7002 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20577 |7002 |6 |graphid |0 | |NULL |NULL |NULL |1175 |NULL |NULL |NULL |
+ROW |20578 |7003 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20579 |7003 |6 |graphid |0 | |NULL |NULL |NULL |838 |NULL |NULL |NULL |
+ROW |20580 |7004 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20581 |7004 |6 |graphid |0 | |NULL |NULL |NULL |839 |NULL |NULL |NULL |
+ROW |20582 |7005 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20583 |7005 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20584 |7005 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20585 |7005 |7 |graphid |0 | |NULL |NULL |NULL |836 |NULL |NULL |NULL |
+ROW |20586 |7006 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20587 |7006 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20588 |7006 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20589 |7006 |7 |graphid |0 | |NULL |NULL |NULL |837 |NULL |NULL |NULL |
+ROW |20590 |7007 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20591 |7007 |6 |graphid |0 | |NULL |NULL |NULL |840 |NULL |NULL |NULL |
+ROW |20592 |7008 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20593 |7008 |6 |graphid |0 | |NULL |NULL |NULL |1622 |NULL |NULL |NULL |
+ROW |20594 |7009 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20595 |7009 |6 |graphid |0 | |NULL |NULL |NULL |1628 |NULL |NULL |NULL |
+ROW |20596 |7010 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20597 |7010 |6 |graphid |0 | |NULL |NULL |NULL |1624 |NULL |NULL |NULL |
+ROW |20598 |7011 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20599 |7011 |6 |graphid |0 | |NULL |NULL |NULL |1623 |NULL |NULL |NULL |
+ROW |20600 |7012 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20601 |7012 |6 |graphid |0 | |NULL |NULL |NULL |1626 |NULL |NULL |NULL |
+ROW |20602 |7013 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20603 |7013 |6 |graphid |0 | |NULL |NULL |NULL |1627 |NULL |NULL |NULL |
+ROW |20604 |7014 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20605 |7014 |6 |graphid |0 | |NULL |NULL |NULL |1625 |NULL |NULL |NULL |
+ROW |20606 |7015 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20607 |7015 |6 |graphid |0 | |NULL |NULL |NULL |1125 |NULL |NULL |NULL |
+ROW |20608 |7016 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20609 |7016 |6 |graphid |0 | |NULL |NULL |NULL |1129 |NULL |NULL |NULL |
+ROW |20610 |7017 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20611 |7017 |6 |graphid |0 | |NULL |NULL |NULL |1128 |NULL |NULL |NULL |
+ROW |20612 |7018 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20613 |7018 |6 |graphid |0 | |NULL |NULL |NULL |1126 |NULL |NULL |NULL |
+ROW |20614 |7019 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20615 |7019 |6 |graphid |0 | |NULL |NULL |NULL |1127 |NULL |NULL |NULL |
+ROW |20616 |7020 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20617 |7020 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20618 |7020 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20619 |7020 |7 |graphid |0 | |NULL |NULL |NULL |1075 |NULL |NULL |NULL |
+ROW |20620 |7021 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20621 |7021 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20622 |7021 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20623 |7021 |7 |graphid |0 | |NULL |NULL |NULL |1630 |NULL |NULL |NULL |
+ROW |20624 |7022 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20625 |7022 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20626 |7022 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20627 |7022 |7 |graphid |0 | |NULL |NULL |NULL |1629 |NULL |NULL |NULL |
+ROW |20628 |7023 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20629 |7023 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20630 |7023 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20631 |7023 |7 |graphid |0 | |NULL |NULL |NULL |1078 |NULL |NULL |NULL |
+ROW |20632 |7024 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20633 |7024 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20634 |7024 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20635 |7024 |7 |graphid |0 | |NULL |NULL |NULL |1076 |NULL |NULL |NULL |
+ROW |20636 |7025 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20637 |7025 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20638 |7025 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20639 |7025 |7 |graphid |0 | |NULL |NULL |NULL |1079 |NULL |NULL |NULL |
+ROW |20640 |7026 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20641 |7026 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20642 |7026 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20643 |7026 |7 |graphid |0 | |NULL |NULL |NULL |1077 |NULL |NULL |NULL |
+ROW |20644 |7027 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20645 |7027 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20646 |7027 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20647 |7027 |7 |graphid |0 | |NULL |NULL |NULL |1080 |NULL |NULL |NULL |
+ROW |20648 |7028 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20649 |7028 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20650 |7028 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20651 |7028 |7 |graphid |0 | |NULL |NULL |NULL |1632 |NULL |NULL |NULL |
+ROW |20652 |7029 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20653 |7029 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20654 |7029 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20655 |7029 |7 |graphid |0 | |NULL |NULL |NULL |1631 |NULL |NULL |NULL |
+ROW |20656 |7030 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20657 |7030 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20658 |7030 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20659 |7030 |7 |graphid |0 | |NULL |NULL |NULL |1081 |NULL |NULL |NULL |
+ROW |20660 |7031 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20661 |7031 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20662 |7031 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20663 |7031 |7 |graphid |0 | |NULL |NULL |NULL |1634 |NULL |NULL |NULL |
+ROW |20664 |7032 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20665 |7032 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20666 |7032 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20667 |7032 |7 |graphid |0 | |NULL |NULL |NULL |1633 |NULL |NULL |NULL |
+ROW |20668 |7033 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20669 |7033 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20670 |7033 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20671 |7033 |7 |graphid |0 | |NULL |NULL |NULL |1084 |NULL |NULL |NULL |
+ROW |20672 |7034 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20673 |7034 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20674 |7034 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20675 |7034 |7 |graphid |0 | |NULL |NULL |NULL |1082 |NULL |NULL |NULL |
+ROW |20676 |7035 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20677 |7035 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20678 |7035 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20679 |7035 |7 |graphid |0 | |NULL |NULL |NULL |1085 |NULL |NULL |NULL |
+ROW |20680 |7036 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20681 |7036 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20682 |7036 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20683 |7036 |7 |graphid |0 | |NULL |NULL |NULL |1083 |NULL |NULL |NULL |
+ROW |20684 |7037 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20685 |7037 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20686 |7037 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20687 |7037 |7 |graphid |0 | |NULL |NULL |NULL |1086 |NULL |NULL |NULL |
+ROW |20688 |7038 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20689 |7038 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20690 |7038 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20691 |7038 |7 |graphid |0 | |NULL |NULL |NULL |1636 |NULL |NULL |NULL |
+ROW |20692 |7039 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20693 |7039 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20694 |7039 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20695 |7039 |7 |graphid |0 | |NULL |NULL |NULL |1635 |NULL |NULL |NULL |
+ROW |20696 |7040 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20697 |7040 |6 |graphid |0 | |NULL |NULL |NULL |841 |NULL |NULL |NULL |
+ROW |20698 |7041 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20699 |7041 |6 |graphid |0 | |NULL |NULL |NULL |843 |NULL |NULL |NULL |
+ROW |20700 |7042 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20701 |7042 |6 |graphid |0 | |NULL |NULL |NULL |842 |NULL |NULL |NULL |
+ROW |20702 |7043 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20703 |7043 |6 |graphid |0 | |NULL |NULL |NULL |845 |NULL |NULL |NULL |
+ROW |20704 |7044 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20705 |7044 |6 |graphid |0 | |NULL |NULL |NULL |847 |NULL |NULL |NULL |
+ROW |20706 |7045 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20707 |7045 |6 |graphid |0 | |NULL |NULL |NULL |846 |NULL |NULL |NULL |
+ROW |20708 |7046 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20709 |7046 |6 |graphid |0 | |NULL |NULL |NULL |1029 |NULL |NULL |NULL |
+ROW |20710 |7047 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20711 |7047 |6 |graphid |0 | |NULL |NULL |NULL |1027 |NULL |NULL |NULL |
+ROW |20712 |7048 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20713 |7048 |6 |graphid |0 | |NULL |NULL |NULL |1030 |NULL |NULL |NULL |
+ROW |20714 |7049 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20715 |7049 |6 |graphid |0 | |NULL |NULL |NULL |1028 |NULL |NULL |NULL |
+ROW |20716 |7050 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20717 |7050 |6 |graphid |0 | |NULL |NULL |NULL |1031 |NULL |NULL |NULL |
+ROW |20718 |7051 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20719 |7051 |6 |graphid |0 | |NULL |NULL |NULL |1011 |NULL |NULL |NULL |
+ROW |20720 |7052 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20721 |7052 |6 |graphid |0 | |NULL |NULL |NULL |1012 |NULL |NULL |NULL |
+ROW |20722 |7053 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20723 |7053 |6 |graphid |0 | |NULL |NULL |NULL |1008 |NULL |NULL |NULL |
+ROW |20724 |7054 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20725 |7054 |6 |graphid |0 | |NULL |NULL |NULL |1009 |NULL |NULL |NULL |
+ROW |20726 |7055 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20727 |7055 |6 |graphid |0 | |NULL |NULL |NULL |1007 |NULL |NULL |NULL |
+ROW |20728 |7056 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20729 |7056 |6 |graphid |0 | |NULL |NULL |NULL |1010 |NULL |NULL |NULL |
+ROW |20730 |7057 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20731 |7057 |6 |graphid |0 | |NULL |NULL |NULL |1018 |NULL |NULL |NULL |
+ROW |20732 |7058 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20733 |7058 |6 |graphid |0 | |NULL |NULL |NULL |1016 |NULL |NULL |NULL |
+ROW |20734 |7059 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20735 |7059 |6 |graphid |0 | |NULL |NULL |NULL |1019 |NULL |NULL |NULL |
+ROW |20736 |7060 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20737 |7060 |6 |graphid |0 | |NULL |NULL |NULL |1017 |NULL |NULL |NULL |
+ROW |20738 |7061 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20739 |7061 |6 |graphid |0 | |NULL |NULL |NULL |1020 |NULL |NULL |NULL |
+ROW |20740 |7062 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20741 |7062 |6 |graphid |0 | |NULL |NULL |NULL |1025 |NULL |NULL |NULL |
+ROW |20742 |7063 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20743 |7063 |6 |graphid |0 | |NULL |NULL |NULL |1026 |NULL |NULL |NULL |
+ROW |20744 |7064 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20745 |7064 |6 |graphid |0 | |NULL |NULL |NULL |1022 |NULL |NULL |NULL |
+ROW |20746 |7065 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20747 |7065 |6 |graphid |0 | |NULL |NULL |NULL |1023 |NULL |NULL |NULL |
+ROW |20748 |7066 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20749 |7066 |6 |graphid |0 | |NULL |NULL |NULL |1021 |NULL |NULL |NULL |
+ROW |20750 |7067 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20751 |7067 |6 |graphid |0 | |NULL |NULL |NULL |1024 |NULL |NULL |NULL |
+ROW |20752 |7068 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20753 |7068 |6 |graphid |0 | |NULL |NULL |NULL |532 |NULL |NULL |NULL |
+ROW |20754 |7069 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20755 |7069 |6 |graphid |0 | |NULL |NULL |NULL |530 |NULL |NULL |NULL |
+ROW |20756 |7070 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20757 |7070 |6 |graphid |0 | |NULL |NULL |NULL |531 |NULL |NULL |NULL |
+ROW |20758 |7071 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20759 |7071 |6 |graphid |0 | |NULL |NULL |NULL |529 |NULL |NULL |NULL |
+ROW |20760 |7072 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20761 |7072 |6 |graphid |0 | |NULL |NULL |NULL |806 |NULL |NULL |NULL |
+ROW |20762 |7073 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20763 |7073 |6 |graphid |0 | |NULL |NULL |NULL |804 |NULL |NULL |NULL |
+ROW |20764 |7074 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20765 |7074 |6 |graphid |0 | |NULL |NULL |NULL |805 |NULL |NULL |NULL |
+ROW |20766 |7075 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20767 |7075 |6 |graphid |0 | |NULL |NULL |NULL |803 |NULL |NULL |NULL |
+ROW |20768 |7076 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20769 |7076 |6 |graphid |0 | |NULL |NULL |NULL |392 |NULL |NULL |NULL |
+ROW |20770 |7077 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20771 |7077 |6 |graphid |0 | |NULL |NULL |NULL |404 |NULL |NULL |NULL |
+ROW |20772 |7078 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20773 |7078 |6 |graphid |0 | |NULL |NULL |NULL |406 |NULL |NULL |NULL |
+ROW |20774 |7079 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20775 |7079 |6 |graphid |0 | |NULL |NULL |NULL |410 |NULL |NULL |NULL |
+ROW |20776 |7080 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20777 |7080 |6 |graphid |0 | |NULL |NULL |NULL |527 |NULL |NULL |NULL |
+ROW |20778 |7081 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20779 |7081 |6 |graphid |0 | |NULL |NULL |NULL |788 |NULL |NULL |NULL |
+ROW |20780 |7082 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20781 |7082 |6 |graphid |0 | |NULL |NULL |NULL |1651 |NULL |NULL |NULL |
+ROW |20782 |7083 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20783 |7083 |6 |graphid |0 | |NULL |NULL |NULL |1653 |NULL |NULL |NULL |
+ROW |20784 |7084 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20785 |7084 |6 |graphid |0 | |NULL |NULL |NULL |1652 |NULL |NULL |NULL |
+ROW |20786 |7085 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20787 |7085 |6 |graphid |0 | |NULL |NULL |NULL |1445 |NULL |NULL |NULL |
+ROW |20788 |7086 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20789 |7086 |6 |graphid |0 | |NULL |NULL |NULL |802 |NULL |NULL |NULL |
+ROW |20790 |7087 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20791 |7087 |6 |graphid |0 | |NULL |NULL |NULL |799 |NULL |NULL |NULL |
+ROW |20792 |7088 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20793 |7088 |6 |graphid |0 | |NULL |NULL |NULL |800 |NULL |NULL |NULL |
+ROW |20794 |7089 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20795 |7089 |6 |graphid |0 | |NULL |NULL |NULL |798 |NULL |NULL |NULL |
+ROW |20796 |7090 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20797 |7090 |6 |graphid |0 | |NULL |NULL |NULL |797 |NULL |NULL |NULL |
+ROW |20798 |7091 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20799 |7091 |6 |graphid |0 | |NULL |NULL |NULL |801 |NULL |NULL |NULL |
+ROW |20800 |7092 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20801 |7092 |6 |graphid |0 | |NULL |NULL |NULL |1659 |NULL |NULL |NULL |
+ROW |20802 |7093 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20803 |7093 |6 |graphid |0 | |NULL |NULL |NULL |1661 |NULL |NULL |NULL |
+ROW |20804 |7094 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20805 |7094 |6 |graphid |0 | |NULL |NULL |NULL |1660 |NULL |NULL |NULL |
+ROW |20806 |7095 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20807 |7095 |6 |graphid |0 | |NULL |NULL |NULL |1444 |NULL |NULL |NULL |
+ROW |20808 |7096 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20809 |7096 |4 |itemid |0 | |NULL |NULL |42965 |NULL |NULL |NULL |NULL |
+ROW |20810 |7097 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20811 |7097 |6 |graphid |0 | |NULL |NULL |NULL |2335 |NULL |NULL |NULL |
+ROW |20812 |7098 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20813 |7098 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20814 |7098 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20815 |7098 |7 |graphid |0 | |NULL |NULL |NULL |2326 |NULL |NULL |NULL |
+ROW |20816 |7099 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20817 |7099 |6 |graphid |0 | |NULL |NULL |NULL |2331 |NULL |NULL |NULL |
+ROW |20818 |7100 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20819 |7100 |6 |graphid |0 | |NULL |NULL |NULL |2332 |NULL |NULL |NULL |
+ROW |20820 |7101 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20821 |7101 |4 |itemid |0 | |NULL |NULL |42968 |NULL |NULL |NULL |NULL |
+ROW |20822 |7102 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20823 |7102 |6 |graphid |0 | |NULL |NULL |NULL |2336 |NULL |NULL |NULL |
+ROW |20824 |7103 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20825 |7103 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20826 |7103 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20827 |7103 |7 |graphid |0 | |NULL |NULL |NULL |2328 |NULL |NULL |NULL |
+ROW |20828 |7104 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20829 |7104 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20830 |7104 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20831 |7104 |5 |itemid |0 | |NULL |NULL |43002 |NULL |NULL |NULL |NULL |
+ROW |20832 |7105 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20833 |7105 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20834 |7105 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20835 |7105 |5 |itemid |0 | |NULL |NULL |43007 |NULL |NULL |NULL |NULL |
+ROW |20836 |7106 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20837 |7106 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20838 |7106 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20839 |7106 |7 |graphid |0 | |NULL |NULL |NULL |2329 |NULL |NULL |NULL |
+ROW |20840 |7107 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20841 |7107 |4 |itemid |0 | |NULL |NULL |42979 |NULL |NULL |NULL |NULL |
+ROW |20842 |7108 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20843 |7108 |6 |graphid |0 | |NULL |NULL |NULL |2335 |NULL |NULL |NULL |
+ROW |20844 |7109 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20845 |7109 |4 |itemid |0 | |NULL |NULL |42975 |NULL |NULL |NULL |NULL |
+ROW |20846 |7110 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20847 |7110 |4 |itemid |0 | |NULL |NULL |42974 |NULL |NULL |NULL |NULL |
+ROW |20848 |7111 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20849 |7111 |4 |itemid |0 | |NULL |NULL |42972 |NULL |NULL |NULL |NULL |
+ROW |20850 |7112 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20851 |7112 |6 |graphid |0 | |NULL |NULL |NULL |2330 |NULL |NULL |NULL |
+ROW |20852 |7113 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20853 |7113 |4 |itemid |0 | |NULL |NULL |42962 |NULL |NULL |NULL |NULL |
+ROW |20854 |7114 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20855 |7114 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20856 |7114 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20857 |7114 |5 |itemid |0 | |NULL |NULL |42996 |NULL |NULL |NULL |NULL |
+ROW |20858 |7115 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20859 |7115 |4 |itemid |0 | |NULL |NULL |42958 |NULL |NULL |NULL |NULL |
+ROW |20860 |7116 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20861 |7116 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20862 |7116 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20863 |7116 |5 |itemid |0 | |NULL |NULL |42997 |NULL |NULL |NULL |NULL |
+ROW |20864 |7117 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20865 |7117 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20866 |7117 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20867 |7117 |5 |itemid |0 | |NULL |NULL |42998 |NULL |NULL |NULL |NULL |
+ROW |20868 |7118 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20869 |7118 |4 |itemid |0 | |NULL |NULL |42937 |NULL |NULL |NULL |NULL |
+ROW |20870 |7119 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20871 |7119 |4 |itemid |0 | |NULL |NULL |42952 |NULL |NULL |NULL |NULL |
+ROW |20872 |7120 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20873 |7120 |4 |itemid |0 | |NULL |NULL |42938 |NULL |NULL |NULL |NULL |
+ROW |20874 |7121 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20875 |7121 |6 |graphid |0 | |NULL |NULL |NULL |2337 |NULL |NULL |NULL |
+ROW |20876 |7122 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20877 |7122 |6 |graphid |0 | |NULL |NULL |NULL |2338 |NULL |NULL |NULL |
+ROW |20878 |7123 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20879 |7123 |4 |itemid |0 | |NULL |NULL |42942 |NULL |NULL |NULL |NULL |
+ROW |20880 |7124 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20881 |7124 |4 |itemid |0 | |NULL |NULL |42939 |NULL |NULL |NULL |NULL |
+ROW |20882 |7125 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20883 |7125 |4 |itemid |0 | |NULL |NULL |42944 |NULL |NULL |NULL |NULL |
+ROW |20884 |7126 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20885 |7126 |6 |graphid |0 | |NULL |NULL |NULL |2339 |NULL |NULL |NULL |
+ROW |20886 |7127 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20887 |7127 |4 |itemid |0 | |NULL |NULL |42984 |NULL |NULL |NULL |NULL |
+ROW |20888 |7128 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20889 |7128 |4 |itemid |0 | |NULL |NULL |42936 |NULL |NULL |NULL |NULL |
+ROW |20890 |7129 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20891 |7129 |4 |itemid |0 | |NULL |NULL |42941 |NULL |NULL |NULL |NULL |
+ROW |20892 |7130 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20893 |7130 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20894 |7130 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20895 |7130 |7 |graphid |0 | |NULL |NULL |NULL |2326 |NULL |NULL |NULL |
+ROW |20896 |7131 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20897 |7131 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20898 |7131 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20899 |7131 |7 |graphid |0 | |NULL |NULL |NULL |2325 |NULL |NULL |NULL |
+ROW |20900 |7132 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20901 |7132 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20902 |7132 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20903 |7132 |5 |itemid |0 | |NULL |NULL |43000 |NULL |NULL |NULL |NULL |
+ROW |20904 |7133 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20905 |7133 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20906 |7133 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20907 |7133 |5 |itemid |0 | |NULL |NULL |42999 |NULL |NULL |NULL |NULL |
+ROW |20908 |7134 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20909 |7134 |6 |graphid |0 | |NULL |NULL |NULL |2333 |NULL |NULL |NULL |
+ROW |20910 |7135 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20911 |7135 |6 |graphid |0 | |NULL |NULL |NULL |2340 |NULL |NULL |NULL |
+ROW |20912 |7136 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20913 |7136 |6 |graphid |0 | |NULL |NULL |NULL |1112 |NULL |NULL |NULL |
+ROW |20914 |7137 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20915 |7137 |6 |graphid |0 | |NULL |NULL |NULL |1113 |NULL |NULL |NULL |
+ROW |20916 |7138 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20917 |7138 |6 |graphid |0 | |NULL |NULL |NULL |1110 |NULL |NULL |NULL |
+ROW |20918 |7139 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20919 |7139 |6 |graphid |0 | |NULL |NULL |NULL |1109 |NULL |NULL |NULL |
+ROW |20920 |7140 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20921 |7140 |6 |graphid |0 | |NULL |NULL |NULL |1111 |NULL |NULL |NULL |
+ROW |20922 |7141 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20923 |7141 |6 |graphid |0 | |NULL |NULL |NULL |1114 |NULL |NULL |NULL |
+ROW |20924 |7142 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20925 |7142 |6 |graphid |0 | |NULL |NULL |NULL |1139 |NULL |NULL |NULL |
+ROW |20926 |7143 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20927 |7143 |6 |graphid |0 | |NULL |NULL |NULL |1140 |NULL |NULL |NULL |
+ROW |20928 |7144 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20929 |7144 |6 |graphid |0 | |NULL |NULL |NULL |1137 |NULL |NULL |NULL |
+ROW |20930 |7145 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20931 |7145 |6 |graphid |0 | |NULL |NULL |NULL |1136 |NULL |NULL |NULL |
+ROW |20932 |7146 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20933 |7146 |6 |graphid |0 | |NULL |NULL |NULL |1138 |NULL |NULL |NULL |
+ROW |20934 |7147 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20935 |7147 |6 |graphid |0 | |NULL |NULL |NULL |1141 |NULL |NULL |NULL |
+ROW |20936 |7148 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20937 |7148 |6 |graphid |0 | |NULL |NULL |NULL |1118 |NULL |NULL |NULL |
+ROW |20938 |7149 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20939 |7149 |6 |graphid |0 | |NULL |NULL |NULL |1119 |NULL |NULL |NULL |
+ROW |20940 |7150 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20941 |7150 |6 |graphid |0 | |NULL |NULL |NULL |1116 |NULL |NULL |NULL |
+ROW |20942 |7151 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20943 |7151 |6 |graphid |0 | |NULL |NULL |NULL |1115 |NULL |NULL |NULL |
+ROW |20944 |7152 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20945 |7152 |6 |graphid |0 | |NULL |NULL |NULL |1117 |NULL |NULL |NULL |
+ROW |20946 |7153 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20947 |7153 |6 |graphid |0 | |NULL |NULL |NULL |1120 |NULL |NULL |NULL |
+ROW |20948 |7154 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20949 |7154 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20950 |7154 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20951 |7154 |7 |graphid |0 | |NULL |NULL |NULL |1387 |NULL |NULL |NULL |
+ROW |20952 |7155 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20953 |7155 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20954 |7155 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20955 |7155 |7 |graphid |0 | |NULL |NULL |NULL |1382 |NULL |NULL |NULL |
+ROW |20956 |7156 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20957 |7156 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20958 |7156 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20959 |7156 |7 |graphid |0 | |NULL |NULL |NULL |1380 |NULL |NULL |NULL |
+ROW |20960 |7157 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20961 |7157 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20962 |7157 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20963 |7157 |7 |graphid |0 | |NULL |NULL |NULL |1386 |NULL |NULL |NULL |
+ROW |20964 |7158 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20965 |7158 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20966 |7158 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20967 |7158 |7 |graphid |0 | |NULL |NULL |NULL |1383 |NULL |NULL |NULL |
+ROW |20968 |7159 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20969 |7159 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20970 |7159 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20971 |7159 |7 |graphid |0 | |NULL |NULL |NULL |1381 |NULL |NULL |NULL |
+ROW |20972 |7160 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20973 |7160 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20974 |7160 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20975 |7160 |7 |graphid |0 | |NULL |NULL |NULL |1384 |NULL |NULL |NULL |
+ROW |20976 |7161 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20977 |7161 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20978 |7161 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20979 |7161 |7 |graphid |0 | |NULL |NULL |NULL |1385 |NULL |NULL |NULL |
+ROW |20980 |7162 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20981 |7162 |6 |graphid |0 | |NULL |NULL |NULL |1390 |NULL |NULL |NULL |
+ROW |20982 |7163 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20983 |7163 |6 |graphid |0 | |NULL |NULL |NULL |1393 |NULL |NULL |NULL |
+ROW |20984 |7164 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20985 |7164 |6 |graphid |0 | |NULL |NULL |NULL |1391 |NULL |NULL |NULL |
+ROW |20986 |7165 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20987 |7165 |6 |graphid |0 | |NULL |NULL |NULL |1394 |NULL |NULL |NULL |
+ROW |20988 |7166 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20989 |7166 |6 |graphid |0 | |NULL |NULL |NULL |1392 |NULL |NULL |NULL |
+ROW |20990 |7167 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20991 |7167 |6 |graphid |0 | |NULL |NULL |NULL |1395 |NULL |NULL |NULL |
+ROW |20992 |7168 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20993 |7168 |6 |graphid |0 | |NULL |NULL |NULL |1388 |NULL |NULL |NULL |
+ROW |20994 |7169 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20995 |7169 |6 |graphid |0 | |NULL |NULL |NULL |1389 |NULL |NULL |NULL |
+ROW |20996 |7170 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20997 |7170 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20998 |7170 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |20999 |7170 |7 |graphid |0 | |NULL |NULL |NULL |1221 |NULL |NULL |NULL |
+ROW |21000 |7171 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21001 |7171 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21002 |7171 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21003 |7171 |7 |graphid |0 | |NULL |NULL |NULL |1219 |NULL |NULL |NULL |
+ROW |21004 |7172 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21005 |7172 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21006 |7172 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21007 |7172 |7 |graphid |0 | |NULL |NULL |NULL |1222 |NULL |NULL |NULL |
+ROW |21008 |7173 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21009 |7173 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21010 |7173 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21011 |7173 |7 |graphid |0 | |NULL |NULL |NULL |1220 |NULL |NULL |NULL |
+ROW |21012 |7174 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21013 |7174 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21014 |7174 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21015 |7174 |7 |graphid |0 | |NULL |NULL |NULL |2323 |NULL |NULL |NULL |
+ROW |21016 |7175 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21017 |7175 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21018 |7175 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21019 |7175 |7 |graphid |0 | |NULL |NULL |NULL |2324 |NULL |NULL |NULL |
+ROW |21020 |7176 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21021 |7176 |6 |graphid |0 | |NULL |NULL |NULL |1091 |NULL |NULL |NULL |
+ROW |21022 |7177 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21023 |7177 |6 |graphid |0 | |NULL |NULL |NULL |1095 |NULL |NULL |NULL |
+ROW |21024 |7178 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21025 |7178 |6 |graphid |0 | |NULL |NULL |NULL |1092 |NULL |NULL |NULL |
+ROW |21026 |7179 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21027 |7179 |6 |graphid |0 | |NULL |NULL |NULL |1094 |NULL |NULL |NULL |
+ROW |21028 |7180 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21029 |7180 |6 |graphid |0 | |NULL |NULL |NULL |1099 |NULL |NULL |NULL |
+ROW |21030 |7181 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21031 |7181 |6 |graphid |0 | |NULL |NULL |NULL |1100 |NULL |NULL |NULL |
+ROW |21032 |7182 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21033 |7182 |6 |graphid |0 | |NULL |NULL |NULL |1101 |NULL |NULL |NULL |
+ROW |21034 |7183 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21035 |7183 |6 |graphid |0 | |NULL |NULL |NULL |1102 |NULL |NULL |NULL |
+ROW |21036 |7184 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21037 |7184 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21038 |7184 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21039 |7184 |7 |graphid |0 | |NULL |NULL |NULL |1090 |NULL |NULL |NULL |
+ROW |21040 |7185 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21041 |7185 |6 |graphid |0 | |NULL |NULL |NULL |1093 |NULL |NULL |NULL |
+ROW |21042 |7186 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21043 |7186 |6 |graphid |0 | |NULL |NULL |NULL |1098 |NULL |NULL |NULL |
+ROW |21044 |7187 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21045 |7187 |6 |graphid |0 | |NULL |NULL |NULL |1096 |NULL |NULL |NULL |
+ROW |21046 |7188 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21047 |7188 |6 |graphid |0 | |NULL |NULL |NULL |1097 |NULL |NULL |NULL |
+ROW |21048 |7189 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21049 |7189 |6 |graphid |0 | |NULL |NULL |NULL |2120 |NULL |NULL |NULL |
+ROW |21050 |7190 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21051 |7190 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21052 |7190 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21053 |7190 |7 |graphid |0 | |NULL |NULL |NULL |2115 |NULL |NULL |NULL |
+ROW |21054 |7191 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21055 |7191 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21056 |7191 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21057 |7191 |7 |graphid |0 | |NULL |NULL |NULL |2114 |NULL |NULL |NULL |
+ROW |21058 |7192 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21059 |7192 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21060 |7192 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21061 |7192 |7 |graphid |0 | |NULL |NULL |NULL |741 |NULL |NULL |NULL |
+ROW |21062 |7193 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21063 |7193 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21064 |7193 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21065 |7193 |7 |graphid |0 | |NULL |NULL |NULL |745 |NULL |NULL |NULL |
+ROW |21066 |7194 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21067 |7194 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21068 |7194 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21069 |7194 |7 |graphid |0 | |NULL |NULL |NULL |766 |NULL |NULL |NULL |
+ROW |21070 |7195 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21071 |7195 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21072 |7195 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21073 |7195 |7 |graphid |0 | |NULL |NULL |NULL |899 |NULL |NULL |NULL |
+ROW |21074 |7196 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21075 |7196 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21076 |7196 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21077 |7196 |7 |graphid |0 | |NULL |NULL |NULL |1287 |NULL |NULL |NULL |
+ROW |21078 |7197 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21079 |7197 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21080 |7197 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21081 |7197 |7 |graphid |0 | |NULL |NULL |NULL |1238 |NULL |NULL |NULL |
+ROW |21082 |7198 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21083 |7198 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21084 |7198 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21085 |7198 |7 |graphid |0 | |NULL |NULL |NULL |1307 |NULL |NULL |NULL |
+ROW |21086 |7199 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21087 |7199 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21088 |7199 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21089 |7199 |7 |graphid |0 | |NULL |NULL |NULL |2123 |NULL |NULL |NULL |
+ROW |21090 |7200 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21091 |7200 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21092 |7200 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21093 |7200 |7 |graphid |0 | |NULL |NULL |NULL |2124 |NULL |NULL |NULL |
+ROW |21094 |7201 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21095 |7201 |6 |graphid |0 | |NULL |NULL |NULL |2127 |NULL |NULL |NULL |
+ROW |21096 |7202 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21097 |7202 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21098 |7202 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21099 |7202 |7 |graphid |0 | |NULL |NULL |NULL |2126 |NULL |NULL |NULL |
+ROW |21100 |7203 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21101 |7203 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21102 |7203 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21103 |7203 |7 |graphid |0 | |NULL |NULL |NULL |2125 |NULL |NULL |NULL |
+ROW |21104 |7204 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21105 |7204 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21106 |7204 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21107 |7204 |7 |graphid |0 | |NULL |NULL |NULL |2128 |NULL |NULL |NULL |
+ROW |21108 |7205 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21109 |7205 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21110 |7205 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21111 |7205 |7 |graphid |0 | |NULL |NULL |NULL |2129 |NULL |NULL |NULL |
+ROW |21112 |7206 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21113 |7206 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21114 |7206 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21115 |7206 |7 |graphid |0 | |NULL |NULL |NULL |2130 |NULL |NULL |NULL |
+ROW |21116 |7207 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21117 |7207 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21118 |7207 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21119 |7207 |7 |graphid |0 | |NULL |NULL |NULL |2138 |NULL |NULL |NULL |
+ROW |21120 |7208 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21121 |7208 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21122 |7208 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21123 |7208 |7 |graphid |0 | |NULL |NULL |NULL |2141 |NULL |NULL |NULL |
+ROW |21124 |7209 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21125 |7209 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21126 |7209 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21127 |7209 |7 |graphid |0 | |NULL |NULL |NULL |2143 |NULL |NULL |NULL |
+ROW |21128 |7210 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21129 |7210 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21130 |7210 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21131 |7210 |7 |graphid |0 | |NULL |NULL |NULL |2144 |NULL |NULL |NULL |
+ROW |21132 |7211 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21133 |7211 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21134 |7211 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21135 |7211 |7 |graphid |0 | |NULL |NULL |NULL |2145 |NULL |NULL |NULL |
+ROW |21136 |7212 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21137 |7212 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21138 |7212 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21139 |7212 |7 |graphid |0 | |NULL |NULL |NULL |2146 |NULL |NULL |NULL |
+ROW |21140 |7213 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21141 |7213 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21142 |7213 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21143 |7213 |7 |graphid |0 | |NULL |NULL |NULL |2147 |NULL |NULL |NULL |
+ROW |21144 |7214 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21145 |7214 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21146 |7214 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21147 |7214 |7 |graphid |0 | |NULL |NULL |NULL |2148 |NULL |NULL |NULL |
+ROW |21148 |7215 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21149 |7215 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21150 |7215 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21151 |7215 |7 |graphid |0 | |NULL |NULL |NULL |2149 |NULL |NULL |NULL |
+ROW |21152 |7216 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21153 |7216 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21154 |7216 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21155 |7216 |7 |graphid |0 | |NULL |NULL |NULL |2150 |NULL |NULL |NULL |
+ROW |21156 |7217 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21157 |7217 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21158 |7217 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21159 |7217 |7 |graphid |0 | |NULL |NULL |NULL |2151 |NULL |NULL |NULL |
+ROW |21160 |7218 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21161 |7218 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21162 |7218 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21163 |7218 |7 |graphid |0 | |NULL |NULL |NULL |2152 |NULL |NULL |NULL |
+ROW |21164 |7219 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21165 |7219 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21166 |7219 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21167 |7219 |7 |graphid |0 | |NULL |NULL |NULL |1564 |NULL |NULL |NULL |
+ROW |21168 |7220 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21169 |7220 |6 |graphid |0 | |NULL |NULL |NULL |1567 |NULL |NULL |NULL |
+ROW |21170 |7221 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21171 |7221 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21172 |7221 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21173 |7221 |7 |graphid |0 | |NULL |NULL |NULL |1566 |NULL |NULL |NULL |
+ROW |21174 |7222 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21175 |7222 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21176 |7222 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21177 |7222 |7 |graphid |0 | |NULL |NULL |NULL |1565 |NULL |NULL |NULL |
+ROW |21178 |7223 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21179 |7223 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21180 |7223 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21181 |7223 |7 |graphid |0 | |NULL |NULL |NULL |2153 |NULL |NULL |NULL |
+ROW |21182 |7224 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21183 |7224 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21184 |7224 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21185 |7224 |7 |graphid |0 | |NULL |NULL |NULL |2154 |NULL |NULL |NULL |
+ROW |21186 |7225 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21187 |7225 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21188 |7225 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21189 |7225 |7 |graphid |0 | |NULL |NULL |NULL |2155 |NULL |NULL |NULL |
+ROW |21190 |7226 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21191 |7226 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21192 |7226 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21193 |7226 |7 |graphid |0 | |NULL |NULL |NULL |2156 |NULL |NULL |NULL |
+ROW |21194 |7227 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21195 |7227 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21196 |7227 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21197 |7227 |7 |graphid |0 | |NULL |NULL |NULL |2157 |NULL |NULL |NULL |
+ROW |21198 |7228 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21199 |7228 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21200 |7228 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21201 |7228 |7 |graphid |0 | |NULL |NULL |NULL |2158 |NULL |NULL |NULL |
+ROW |21202 |7229 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21203 |7229 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21204 |7229 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21205 |7229 |7 |graphid |0 | |NULL |NULL |NULL |2159 |NULL |NULL |NULL |
+ROW |21206 |7230 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21207 |7230 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21208 |7230 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21209 |7230 |7 |graphid |0 | |NULL |NULL |NULL |2160 |NULL |NULL |NULL |
+ROW |21210 |7231 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21211 |7231 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21212 |7231 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21213 |7231 |7 |graphid |0 | |NULL |NULL |NULL |2161 |NULL |NULL |NULL |
+ROW |21214 |7232 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21215 |7232 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21216 |7232 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21217 |7232 |7 |graphid |0 | |NULL |NULL |NULL |2162 |NULL |NULL |NULL |
+ROW |21218 |7233 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21219 |7233 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21220 |7233 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21221 |7233 |7 |graphid |0 | |NULL |NULL |NULL |2163 |NULL |NULL |NULL |
+ROW |21222 |7234 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21223 |7234 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21224 |7234 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21225 |7234 |7 |graphid |0 | |NULL |NULL |NULL |2164 |NULL |NULL |NULL |
+ROW |21226 |7235 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21227 |7235 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21228 |7235 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21229 |7235 |7 |graphid |0 | |NULL |NULL |NULL |2165 |NULL |NULL |NULL |
+ROW |21230 |7236 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21231 |7236 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21232 |7236 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21233 |7236 |7 |graphid |0 | |NULL |NULL |NULL |2166 |NULL |NULL |NULL |
+ROW |21234 |7237 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21235 |7237 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21236 |7237 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21237 |7237 |7 |graphid |0 | |NULL |NULL |NULL |2167 |NULL |NULL |NULL |
+ROW |21238 |7238 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21239 |7238 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21240 |7238 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21241 |7238 |7 |graphid |0 | |NULL |NULL |NULL |2168 |NULL |NULL |NULL |
+ROW |21242 |7239 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21243 |7239 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21244 |7239 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21245 |7239 |7 |graphid |0 | |NULL |NULL |NULL |2169 |NULL |NULL |NULL |
+ROW |21246 |7240 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21247 |7240 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21248 |7240 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21249 |7240 |7 |graphid |0 | |NULL |NULL |NULL |2170 |NULL |NULL |NULL |
+ROW |21250 |7241 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21251 |7241 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21252 |7241 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21253 |7241 |7 |graphid |0 | |NULL |NULL |NULL |2171 |NULL |NULL |NULL |
+ROW |21254 |7242 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21255 |7242 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21256 |7242 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21257 |7242 |7 |graphid |0 | |NULL |NULL |NULL |2172 |NULL |NULL |NULL |
+ROW |21258 |7243 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21259 |7243 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21260 |7243 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21261 |7243 |7 |graphid |0 | |NULL |NULL |NULL |2173 |NULL |NULL |NULL |
+ROW |21262 |7244 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21263 |7244 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21264 |7244 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21265 |7244 |7 |graphid |0 | |NULL |NULL |NULL |2174 |NULL |NULL |NULL |
+ROW |21266 |7245 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21267 |7245 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21268 |7245 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21269 |7245 |7 |graphid |0 | |NULL |NULL |NULL |2175 |NULL |NULL |NULL |
+ROW |21270 |7246 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21271 |7246 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21272 |7246 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21273 |7246 |7 |graphid |0 | |NULL |NULL |NULL |2176 |NULL |NULL |NULL |
+ROW |21274 |7247 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21275 |7247 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21276 |7247 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21277 |7247 |7 |graphid |0 | |NULL |NULL |NULL |2177 |NULL |NULL |NULL |
+ROW |21278 |7248 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21279 |7248 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21280 |7248 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21281 |7248 |7 |graphid |0 | |NULL |NULL |NULL |2178 |NULL |NULL |NULL |
+ROW |21282 |7249 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21283 |7249 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21284 |7249 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21285 |7249 |7 |graphid |0 | |NULL |NULL |NULL |2179 |NULL |NULL |NULL |
+ROW |21286 |7250 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21287 |7250 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21288 |7250 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21289 |7250 |7 |graphid |0 | |NULL |NULL |NULL |2180 |NULL |NULL |NULL |
+ROW |21290 |7251 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21291 |7251 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21292 |7251 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21293 |7251 |7 |graphid |0 | |NULL |NULL |NULL |2181 |NULL |NULL |NULL |
+ROW |21294 |7252 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21295 |7252 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21296 |7252 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21297 |7252 |7 |graphid |0 | |NULL |NULL |NULL |2182 |NULL |NULL |NULL |
+ROW |21298 |7253 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21299 |7253 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21300 |7253 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21301 |7253 |7 |graphid |0 | |NULL |NULL |NULL |2183 |NULL |NULL |NULL |
+ROW |21302 |7254 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21303 |7254 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21304 |7254 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21305 |7254 |7 |graphid |0 | |NULL |NULL |NULL |2184 |NULL |NULL |NULL |
+ROW |21306 |7255 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21307 |7255 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21308 |7255 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21309 |7255 |7 |graphid |0 | |NULL |NULL |NULL |2185 |NULL |NULL |NULL |
+ROW |21310 |7256 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21311 |7256 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21312 |7256 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21313 |7256 |7 |graphid |0 | |NULL |NULL |NULL |2186 |NULL |NULL |NULL |
+ROW |21314 |7257 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21315 |7257 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21316 |7257 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21317 |7257 |7 |graphid |0 | |NULL |NULL |NULL |2187 |NULL |NULL |NULL |
+ROW |21318 |7258 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21319 |7258 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21320 |7258 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21321 |7258 |7 |graphid |0 | |NULL |NULL |NULL |2188 |NULL |NULL |NULL |
+ROW |21322 |7259 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21323 |7259 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21324 |7259 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21325 |7259 |7 |graphid |0 | |NULL |NULL |NULL |2189 |NULL |NULL |NULL |
+ROW |21326 |7260 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21327 |7260 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21328 |7260 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21329 |7260 |7 |graphid |0 | |NULL |NULL |NULL |2190 |NULL |NULL |NULL |
+ROW |21330 |7261 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21331 |7261 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21332 |7261 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21333 |7261 |7 |graphid |0 | |NULL |NULL |NULL |2191 |NULL |NULL |NULL |
+ROW |21334 |7262 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21335 |7262 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21336 |7262 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21337 |7262 |7 |graphid |0 | |NULL |NULL |NULL |2192 |NULL |NULL |NULL |
+ROW |21338 |7263 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21339 |7263 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21340 |7263 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21341 |7263 |7 |graphid |0 | |NULL |NULL |NULL |2193 |NULL |NULL |NULL |
+ROW |21342 |7264 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21343 |7264 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21344 |7264 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21345 |7264 |7 |graphid |0 | |NULL |NULL |NULL |2194 |NULL |NULL |NULL |
+ROW |21346 |7265 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21347 |7265 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21348 |7265 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21349 |7265 |7 |graphid |0 | |NULL |NULL |NULL |2195 |NULL |NULL |NULL |
+ROW |21350 |7266 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21351 |7266 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21352 |7266 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21353 |7266 |7 |graphid |0 | |NULL |NULL |NULL |2196 |NULL |NULL |NULL |
+ROW |21354 |7267 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21355 |7267 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21356 |7267 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21357 |7267 |7 |graphid |0 | |NULL |NULL |NULL |2197 |NULL |NULL |NULL |
+ROW |21358 |7268 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21359 |7268 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21360 |7268 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21361 |7268 |7 |graphid |0 | |NULL |NULL |NULL |2198 |NULL |NULL |NULL |
+ROW |21362 |7269 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21363 |7269 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21364 |7269 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21365 |7269 |7 |graphid |0 | |NULL |NULL |NULL |2199 |NULL |NULL |NULL |
+ROW |21366 |7270 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21367 |7270 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21368 |7270 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21369 |7270 |7 |graphid |0 | |NULL |NULL |NULL |2200 |NULL |NULL |NULL |
+ROW |21370 |7271 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21371 |7271 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21372 |7271 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21373 |7271 |7 |graphid |0 | |NULL |NULL |NULL |2201 |NULL |NULL |NULL |
+ROW |21374 |7272 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21375 |7272 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21376 |7272 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21377 |7272 |7 |graphid |0 | |NULL |NULL |NULL |2202 |NULL |NULL |NULL |
+ROW |21378 |7273 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21379 |7273 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21380 |7273 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21381 |7273 |7 |graphid |0 | |NULL |NULL |NULL |2203 |NULL |NULL |NULL |
+ROW |21382 |7274 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21383 |7274 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21384 |7274 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21385 |7274 |7 |graphid |0 | |NULL |NULL |NULL |2204 |NULL |NULL |NULL |
+ROW |21386 |7275 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21387 |7275 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21388 |7275 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21389 |7275 |7 |graphid |0 | |NULL |NULL |NULL |2205 |NULL |NULL |NULL |
+ROW |21390 |7276 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21391 |7276 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21392 |7276 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21393 |7276 |7 |graphid |0 | |NULL |NULL |NULL |2206 |NULL |NULL |NULL |
+ROW |21394 |7277 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21395 |7277 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21396 |7277 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21397 |7277 |7 |graphid |0 | |NULL |NULL |NULL |2207 |NULL |NULL |NULL |
+ROW |21398 |7278 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21399 |7278 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21400 |7278 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21401 |7278 |7 |graphid |0 | |NULL |NULL |NULL |2208 |NULL |NULL |NULL |
+ROW |21402 |7279 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21403 |7279 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21404 |7279 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21405 |7279 |7 |graphid |0 | |NULL |NULL |NULL |2209 |NULL |NULL |NULL |
+ROW |21406 |7280 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21407 |7280 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21408 |7280 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21409 |7280 |7 |graphid |0 | |NULL |NULL |NULL |2210 |NULL |NULL |NULL |
+ROW |21410 |7281 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21411 |7281 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21412 |7281 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21413 |7281 |7 |graphid |0 | |NULL |NULL |NULL |2211 |NULL |NULL |NULL |
+ROW |21414 |7282 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21415 |7282 |6 |graphid |0 | |NULL |NULL |NULL |469 |NULL |NULL |NULL |
+ROW |21416 |7283 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21417 |7283 |6 |graphid |0 | |NULL |NULL |NULL |471 |NULL |NULL |NULL |
+ROW |21418 |7284 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21419 |7284 |6 |graphid |0 | |NULL |NULL |NULL |498 |NULL |NULL |NULL |
+ROW |21420 |7285 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21421 |7285 |6 |graphid |0 | |NULL |NULL |NULL |540 |NULL |NULL |NULL |
+ROW |21422 |7286 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21423 |7286 |6 |graphid |0 | |NULL |NULL |NULL |463 |NULL |NULL |NULL |
+ROW |21424 |7287 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21425 |7287 |6 |graphid |0 | |NULL |NULL |NULL |462 |NULL |NULL |NULL |
+ROW |21426 |7288 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21427 |7288 |6 |graphid |0 | |NULL |NULL |NULL |541 |NULL |NULL |NULL |
+ROW |21428 |7289 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21429 |7289 |6 |graphid |0 | |NULL |NULL |NULL |464 |NULL |NULL |NULL |
+ROW |21430 |7290 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21431 |7290 |6 |graphid |0 | |NULL |NULL |NULL |475 |NULL |NULL |NULL |
+ROW |21432 |7291 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21433 |7291 |6 |graphid |0 | |NULL |NULL |NULL |474 |NULL |NULL |NULL |
+ROW |21434 |7292 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21435 |7292 |6 |graphid |0 | |NULL |NULL |NULL |542 |NULL |NULL |NULL |
+ROW |21436 |7293 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21437 |7293 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21438 |7293 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21439 |7293 |7 |graphid |0 | |NULL |NULL |NULL |2212 |NULL |NULL |NULL |
+ROW |21440 |7294 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21441 |7294 |6 |graphid |0 | |NULL |NULL |NULL |2229 |NULL |NULL |NULL |
+ROW |21442 |7295 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21443 |7295 |6 |graphid |0 | |NULL |NULL |NULL |2223 |NULL |NULL |NULL |
+ROW |21444 |7296 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21445 |7296 |6 |graphid |0 | |NULL |NULL |NULL |2225 |NULL |NULL |NULL |
+ROW |21446 |7297 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21447 |7297 |6 |graphid |0 | |NULL |NULL |NULL |2228 |NULL |NULL |NULL |
+ROW |21448 |7298 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21449 |7298 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21450 |7298 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21451 |7298 |7 |graphid |0 | |NULL |NULL |NULL |2216 |NULL |NULL |NULL |
+ROW |21452 |7299 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21453 |7299 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21454 |7299 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21455 |7299 |7 |graphid |0 | |NULL |NULL |NULL |2214 |NULL |NULL |NULL |
+ROW |21456 |7300 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21457 |7300 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21458 |7300 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21459 |7300 |7 |graphid |0 | |NULL |NULL |NULL |2213 |NULL |NULL |NULL |
+ROW |21460 |7301 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21461 |7301 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21462 |7301 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21463 |7301 |7 |graphid |0 | |NULL |NULL |NULL |2215 |NULL |NULL |NULL |
+ROW |21464 |7302 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21465 |7302 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21466 |7302 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21467 |7302 |7 |graphid |0 | |NULL |NULL |NULL |2212 |NULL |NULL |NULL |
+ROW |21468 |7303 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21469 |7303 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21470 |7303 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21471 |7303 |7 |graphid |0 | |NULL |NULL |NULL |2238 |NULL |NULL |NULL |
+ROW |21472 |7304 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21473 |7304 |6 |graphid |0 | |NULL |NULL |NULL |2250 |NULL |NULL |NULL |
+ROW |21474 |7305 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21475 |7305 |6 |graphid |0 | |NULL |NULL |NULL |2244 |NULL |NULL |NULL |
+ROW |21476 |7306 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21477 |7306 |6 |graphid |0 | |NULL |NULL |NULL |2246 |NULL |NULL |NULL |
+ROW |21478 |7307 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21479 |7307 |6 |graphid |0 | |NULL |NULL |NULL |2249 |NULL |NULL |NULL |
+ROW |21480 |7308 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21481 |7308 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21482 |7308 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21483 |7308 |7 |graphid |0 | |NULL |NULL |NULL |2242 |NULL |NULL |NULL |
+ROW |21484 |7309 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21485 |7309 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21486 |7309 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21487 |7309 |7 |graphid |0 | |NULL |NULL |NULL |2240 |NULL |NULL |NULL |
+ROW |21488 |7310 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21489 |7310 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21490 |7310 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21491 |7310 |7 |graphid |0 | |NULL |NULL |NULL |2239 |NULL |NULL |NULL |
+ROW |21492 |7311 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21493 |7311 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21494 |7311 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21495 |7311 |7 |graphid |0 | |NULL |NULL |NULL |2241 |NULL |NULL |NULL |
+ROW |21496 |7312 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21497 |7312 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21498 |7312 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21499 |7312 |7 |graphid |0 | |NULL |NULL |NULL |2238 |NULL |NULL |NULL |
+ROW |21500 |7313 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21501 |7313 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21502 |7313 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21503 |7313 |7 |graphid |0 | |NULL |NULL |NULL |952 |NULL |NULL |NULL |
+ROW |21504 |7314 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21505 |7314 |6 |graphid |0 | |NULL |NULL |NULL |957 |NULL |NULL |NULL |
+ROW |21506 |7315 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21507 |7315 |6 |graphid |0 | |NULL |NULL |NULL |959 |NULL |NULL |NULL |
+ROW |21508 |7316 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21509 |7316 |6 |graphid |0 | |NULL |NULL |NULL |962 |NULL |NULL |NULL |
+ROW |21510 |7317 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21511 |7317 |6 |graphid |0 | |NULL |NULL |NULL |963 |NULL |NULL |NULL |
+ROW |21512 |7318 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21513 |7318 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21514 |7318 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21515 |7318 |7 |graphid |0 | |NULL |NULL |NULL |953 |NULL |NULL |NULL |
+ROW |21516 |7319 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21517 |7319 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21518 |7319 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21519 |7319 |7 |graphid |0 | |NULL |NULL |NULL |954 |NULL |NULL |NULL |
+ROW |21520 |7320 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21521 |7320 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21522 |7320 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21523 |7320 |7 |graphid |0 | |NULL |NULL |NULL |955 |NULL |NULL |NULL |
+ROW |21524 |7321 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21525 |7321 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21526 |7321 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21527 |7321 |7 |graphid |0 | |NULL |NULL |NULL |956 |NULL |NULL |NULL |
+ROW |21528 |7322 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21529 |7322 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21530 |7322 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21531 |7322 |7 |graphid |0 | |NULL |NULL |NULL |952 |NULL |NULL |NULL |
+ROW |21532 |7323 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21533 |7323 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21534 |7323 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21535 |7323 |7 |graphid |0 | |NULL |NULL |NULL |2253 |NULL |NULL |NULL |
+ROW |21536 |7324 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21537 |7324 |6 |graphid |0 | |NULL |NULL |NULL |2260 |NULL |NULL |NULL |
+ROW |21538 |7325 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21539 |7325 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21540 |7325 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21541 |7325 |7 |graphid |0 | |NULL |NULL |NULL |2251 |NULL |NULL |NULL |
+ROW |21542 |7326 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21543 |7326 |6 |graphid |0 | |NULL |NULL |NULL |2257 |NULL |NULL |NULL |
+ROW |21544 |7327 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21545 |7327 |6 |graphid |0 | |NULL |NULL |NULL |2259 |NULL |NULL |NULL |
+ROW |21546 |7328 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21547 |7328 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21548 |7328 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21549 |7328 |7 |graphid |0 | |NULL |NULL |NULL |2255 |NULL |NULL |NULL |
+ROW |21550 |7329 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21551 |7329 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21552 |7329 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21553 |7329 |7 |graphid |0 | |NULL |NULL |NULL |2254 |NULL |NULL |NULL |
+ROW |21554 |7330 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21555 |7330 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21556 |7330 |0 |source_type |3 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21557 |7330 |5 |itemid |0 | |NULL |NULL |42436 |NULL |NULL |NULL |NULL |
+ROW |21558 |7331 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21559 |7331 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21560 |7331 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21561 |7331 |7 |graphid |0 | |NULL |NULL |NULL |2253 |NULL |NULL |NULL |
+ROW |21562 |7332 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21563 |7332 |6 |graphid |0 | |NULL |NULL |NULL |487 |NULL |NULL |NULL |
+ROW |21564 |7333 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21565 |7333 |6 |graphid |0 | |NULL |NULL |NULL |543 |NULL |NULL |NULL |
+ROW |21566 |7334 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21567 |7334 |6 |graphid |0 | |NULL |NULL |NULL |457 |NULL |NULL |NULL |
+ROW |21568 |7335 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21569 |7335 |6 |graphid |0 | |NULL |NULL |NULL |456 |NULL |NULL |NULL |
+ROW |21570 |7336 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21571 |7336 |6 |graphid |0 | |NULL |NULL |NULL |544 |NULL |NULL |NULL |
+ROW |21572 |7337 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21573 |7337 |6 |graphid |0 | |NULL |NULL |NULL |458 |NULL |NULL |NULL |
+ROW |21574 |7338 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21575 |7338 |6 |graphid |0 | |NULL |NULL |NULL |481 |NULL |NULL |NULL |
+ROW |21576 |7339 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21577 |7339 |6 |graphid |0 | |NULL |NULL |NULL |480 |NULL |NULL |NULL |
+ROW |21578 |7340 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21579 |7340 |6 |graphid |0 | |NULL |NULL |NULL |545 |NULL |NULL |NULL |
+ROW |21580 |7341 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21581 |7341 |6 |graphid |0 | |NULL |NULL |NULL |482 |NULL |NULL |NULL |
+ROW |21582 |7342 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21583 |7342 |4 |itemid |0 | |NULL |NULL |22998 |NULL |NULL |NULL |NULL |
+ROW |21584 |7343 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21585 |7343 |4 |itemid |0 | |NULL |NULL |22997 |NULL |NULL |NULL |NULL |
+ROW |21586 |7344 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21587 |7344 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21588 |7344 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21589 |7344 |7 |graphid |0 | |NULL |NULL |NULL |2261 |NULL |NULL |NULL |
+ROW |21590 |7345 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21591 |7345 |6 |graphid |0 | |NULL |NULL |NULL |2268 |NULL |NULL |NULL |
+ROW |21592 |7346 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21593 |7346 |4 |itemid |0 | |NULL |NULL |42472 |NULL |NULL |NULL |NULL |
+ROW |21594 |7347 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21595 |7347 |6 |graphid |0 | |NULL |NULL |NULL |2270 |NULL |NULL |NULL |
+ROW |21596 |7348 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21597 |7348 |6 |graphid |0 | |NULL |NULL |NULL |2271 |NULL |NULL |NULL |
+ROW |21598 |7349 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21599 |7349 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21600 |7349 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21601 |7349 |7 |graphid |0 | |NULL |NULL |NULL |2266 |NULL |NULL |NULL |
+ROW |21602 |7350 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21603 |7350 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21604 |7350 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21605 |7350 |7 |graphid |0 | |NULL |NULL |NULL |2264 |NULL |NULL |NULL |
+ROW |21606 |7351 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21607 |7351 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21608 |7351 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21609 |7351 |7 |graphid |0 | |NULL |NULL |NULL |2265 |NULL |NULL |NULL |
+ROW |21610 |7352 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21611 |7352 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21612 |7352 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21613 |7352 |7 |graphid |0 | |NULL |NULL |NULL |2261 |NULL |NULL |NULL |
+ROW |21614 |7353 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21615 |7353 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21616 |7353 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21617 |7353 |7 |graphid |0 | |NULL |NULL |NULL |2272 |NULL |NULL |NULL |
+ROW |21618 |7354 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21619 |7354 |6 |graphid |0 | |NULL |NULL |NULL |2279 |NULL |NULL |NULL |
+ROW |21620 |7355 |0 |source_type |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21621 |7355 |4 |itemid |0 | |NULL |NULL |42528 |NULL |NULL |NULL |NULL |
+ROW |21622 |7356 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21623 |7356 |6 |graphid |0 | |NULL |NULL |NULL |2281 |NULL |NULL |NULL |
+ROW |21624 |7357 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21625 |7357 |6 |graphid |0 | |NULL |NULL |NULL |2282 |NULL |NULL |NULL |
+ROW |21626 |7358 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21627 |7358 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21628 |7358 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21629 |7358 |7 |graphid |0 | |NULL |NULL |NULL |2277 |NULL |NULL |NULL |
+ROW |21630 |7359 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21631 |7359 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21632 |7359 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21633 |7359 |7 |graphid |0 | |NULL |NULL |NULL |2275 |NULL |NULL |NULL |
+ROW |21634 |7360 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21635 |7360 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21636 |7360 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21637 |7360 |7 |graphid |0 | |NULL |NULL |NULL |2276 |NULL |NULL |NULL |
+ROW |21638 |7361 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21639 |7361 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21640 |7361 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21641 |7361 |7 |graphid |0 | |NULL |NULL |NULL |2272 |NULL |NULL |NULL |
+ROW |21642 |7362 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21643 |7362 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21644 |7362 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21645 |7362 |7 |graphid |0 | |NULL |NULL |NULL |2283 |NULL |NULL |NULL |
+ROW |21646 |7363 |0 |source_type |0 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21647 |7363 |6 |graphid |0 | |NULL |NULL |NULL |2286 |NULL |NULL |NULL |
+ROW |21648 |7364 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21649 |7364 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21650 |7364 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21651 |7364 |7 |graphid |0 | |NULL |NULL |NULL |2285 |NULL |NULL |NULL |
+ROW |21652 |7365 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21653 |7365 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21654 |7365 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21655 |7365 |7 |graphid |0 | |NULL |NULL |NULL |2284 |NULL |NULL |NULL |
+ROW |21656 |7366 |0 |source_type |2 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21657 |7366 |0 |columns |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21658 |7366 |0 |rows |1 | |NULL |NULL |NULL |NULL |NULL |NULL |NULL |
+ROW |21659 |7366 |7 |graphid |0 | |NULL |NULL |NULL |1805 |NULL |NULL |NULL |
diff --git a/create/src/data.tmpl b/create/src/data.tmpl
index 28ae0e9ed47..eb045fb9212 100644
--- a/create/src/data.tmpl
+++ b/create/src/data.tmpl
@@ -972,6 +972,33 @@ TABLE |config_autoreg_tls
FIELDS|autoreg_tlsid|tls_psk_identity|tls_psk|
ROW |1 | | |
+TABLE |module
+FIELDS|moduleid|id |relative_path |status|config|
+ROW |1 |actionlog |widgets/actionlog |1 |[] |
+ROW |2 |clock |widgets/clock |1 |[] |
+ROW |3 |dataover |widgets/dataover |1 |[] |
+ROW |4 |discovery |widgets/discovery |1 |[] |
+ROW |5 |favgraphs |widgets/favgraphs |1 |[] |
+ROW |6 |favmaps |widgets/favmaps |1 |[] |
+ROW |7 |geomap |widgets/geomap |1 |[] |
+ROW |8 |graph |widgets/graph |1 |[] |
+ROW |9 |graphprototype|widgets/graphprototype|1 |[] |
+ROW |10 |hostavail |widgets/hostavail |1 |[] |
+ROW |11 |item |widgets/item |1 |[] |
+ROW |12 |map |widgets/map |1 |[] |
+ROW |13 |navtree |widgets/navtree |1 |[] |
+ROW |14 |plaintext |widgets/plaintext |1 |[] |
+ROW |15 |problemhosts |widgets/problemhosts |1 |[] |
+ROW |16 |problems |widgets/problems |1 |[] |
+ROW |17 |problemsbysv |widgets/problemsbysv |1 |[] |
+ROW |18 |slareport |widgets/slareport |1 |[] |
+ROW |19 |svggraph |widgets/svggraph |1 |[] |
+ROW |20 |systeminfo |widgets/systeminfo |1 |[] |
+ROW |21 |tophosts |widgets/tophosts |1 |[] |
+ROW |22 |trigover |widgets/trigover |1 |[] |
+ROW |23 |url |widgets/url |1 |[] |
+ROW |24 |web |widgets/web |1 |[] |
+
TABLE |role_rule
FIELDS|role_ruleid|roleid|type|name |value_int|value_str|value_moduleid|value_serviceid|
ROW |1 |1 |0 |ui.default_access |1 | |NULL |NULL |
diff --git a/create/src/schema.tmpl b/create/src/schema.tmpl
index 3151cedbaca..24a1eefee6f 100644
--- a/create/src/schema.tmpl
+++ b/create/src/schema.tmpl
@@ -1683,7 +1683,7 @@ FIELD |tls_psk_identity|t_varchar(128)|'' |NOT NULL |ZBX_PROXY
FIELD |tls_psk |t_varchar(512) |'' |NOT NULL |ZBX_PROXY
UNIQUE |1 |tls_psk_identity
-TABLE|module|moduleid|
+TABLE|module|moduleid|ZBX_DATA
FIELD |moduleid |t_id | |NOT NULL |0
FIELD |id |t_varchar(255) |'' |NOT NULL |0
FIELD |relative_path |t_varchar(255) |'' |NOT NULL |0
@@ -1987,4 +1987,4 @@ TABLE|dbversion|dbversionid|
FIELD |dbversionid |t_id | |NOT NULL |0
FIELD |mandatory |t_integer |'0' |NOT NULL |
FIELD |optional |t_integer |'0' |NOT NULL |
-ROW |1 |6030061 |6030061
+ROW |1 |6030063 |6030063
diff --git a/create/src/templates.tmpl b/create/src/templates.tmpl
index 9f357169de3..9ad91d013bf 100644
--- a/create/src/templates.tmpl
+++ b/create/src/templates.tmpl
@@ -219,13 +219,13 @@ ROW |10407 |NULL |APC UPS Symmetra LX SNMP
ROW |10408 |NULL |APC UPS Symmetra RM SNMP |3 |-1 |2 | | |APC UPS Symmetra RM SNMP |0 |NULL |Template Power APC UPS Symmetra RM&eol;&eol;MIBs used:&eol;HOST-RESOURCES-MIB&eol;PowerNet-MIB&eol;SNMPv2-MIB&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |1dac0a88c3774315b90622a48031e369|
ROW |10409 |NULL |APC UPS Symmetra RX SNMP |3 |-1 |2 | | |APC UPS Symmetra RX SNMP |0 |NULL |Template Power APC UPS Symmetra RX&eol;&eol;MIBs used:&eol;HOST-RESOURCES-MIB&eol;PowerNet-MIB&eol;SNMPv2-MIB&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |4ffb0f9103084384a98379ed533865e9|
ROW |10410 |NULL |WildFly Domain by JMX |3 |-1 |2 | | |WildFly Domain by JMX |0 |NULL |Official JMX Template for WildFly.&eol;The metrics are collected by JMX. This template works with Domain Controller.&eol;You can set {$WILDFLY.USER} and {$WILDFLY.PASSWORD} macros in the template for using on the host level.&eol;&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback&eol;&eol;Template tooling version used: 0.41 |1 |1 | | | | | |1 |0 |0 |4b27e636b6ad4ce68511d344d5604999|
-ROW |10411 |NULL |WildFly Server by JMX |3 |-1 |2 | | |WildFly Server by JMX |0 |NULL |Official JMX Template for WildFly.&eol;The metrics are collected by JMX. This template works with standalone and domain instances.&eol;You can set {$WILDFLY.USER} and {$WILDFLY.PASSWORD} macros in the template for using on the host level.&eol;&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback&eol;&eol;Template tooling version used: 0.41 |1 |1 | | | | | |1 |0 |0 |2bf5827343f0420792ad953f290baa05|
+ROW |10411 |NULL |WildFly Server by JMX |3 |-1 |2 | | |WildFly Server by JMX |0 |NULL |Official JMX Template for WildFly.&eol;The metrics are collected by JMX. This template works with standalone and domain instances.&eol;You can set {$WILDFLY.USER} and {$WILDFLY.PASSWORD} macros in the template for using on the host level.&eol;&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |2bf5827343f0420792ad953f290baa05|
ROW |10412 |NULL |APC Smart-UPS SRT 5000 SNMP |3 |-1 |2 | | |APC Smart-UPS SRT 5000 SNMP |0 |NULL |Template Power APC Smart-UPS SRT 5000&eol;&eol;MIBs used:&eol;HOST-RESOURCES-MIB&eol;PowerNet-MIB&eol;SNMPv2-MIB&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |8ec76aeb703747a5affdf435bc12f572|
ROW |10413 |NULL |Website certificate by Zabbix agent 2 |3 |-1 |2 | | |Website certificate by Zabbix agent 2 |0 |NULL |The template to monitor TLS/SSL certificate on the website by Zabbix agent 2 that works without any external scripts.&eol;Zabbix agent 2 with the WebCertificate plugin requests certificate using the web.certificate.get key and returns JSON with certificate attributes.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/428309-discussion-thread-for-official-zabbix-template-tls-ssl-certificates-monitoring&eol;&eol;Template tooling version used: 0.41 |1 |1 | | | | | |1 |0 |0 |5630ec1b1baf449abe1bc5521f85fe6c|
ROW |10414 |NULL |Cloudflare by HTTP |3 |-1 |2 | | |Cloudflare by HTTP |0 |NULL |The template to monitor Cloudflare to see your web traffic and DNS metrics. It works without any external scripts and uses Script item.&eol;&eol;Template tooling version used: 0.41 |1 |1 | | | | | |1 |0 |0 |08ef3d687d754b0aba17e1dcbd77d4bd|
ROW |10415 |NULL |Nginx Plus by HTTP |3 |-1 |2 | | |Nginx Plus by HTTP |0 |NULL |Get Nginx Plus metrics by HTTP agent.&eol;Metrics are collected by requests to Nginx Plus API.&eol;Don't forget to change macros {$NGINX.API.ENDPOINT}.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |8cad0f2564694416b60bd8a414948641|
ROW |10416 |NULL |Systemd by Zabbix agent 2 |3 |-1 |2 | | |Systemd by Zabbix agent 2 |0 |NULL |Get systemd units metrics from plugin for the zabbix-agent2.&eol; 1. Setup and configure zabbix-agent2 compiled with the Systemd monitoring plugin.&eol; 2. Set filters with macros if you want to override default filter parameters.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/&eol;&eol;Template tooling version used: 0.41 |1 |1 | | | | | |1 |0 |0 |90ac276995294a6aa88462c032d2ddaf|
-ROW |10417 |NULL |GridGain by JMX |3 |-1 |2 | | |GridGain by JMX |0 |NULL |The template to monitor GridGain In-Memory Computing Platform by Zabbix that work without any external scripts.&eol; It works with both standalone and cluster instances.&eol; The metrics are discoverable and collected by JMX.&eol; Current JMX tree hierarchy contains classloader by default. Add the following jvm option `-DIGNITE_MBEAN_APPEND_CLASS_LOADER_ID=false`to will exclude one level with Classloader name.&eol; You can set {$GRIDGAIN.USER} and {$GRIDGAIN.PASSWORD} macros in the template for using on the host level.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/&eol;&eol;Template tooling version used: 0.41 |1 |1 | | | | | |1 |0 |0 |47d87c39c121429b98a18f641aa443ea|
+ROW |10417 |NULL |GridGain by JMX |3 |-1 |2 | | |GridGain by JMX |0 |NULL |The template to monitor GridGain In-Memory Computing Platform by Zabbix that work without any external scripts.&eol; It works with both standalone and cluster instances.&eol; The metrics are discoverable and collected by JMX.&eol; Current JMX tree hierarchy contains classloader by default. Add the following jvm option `-DIGNITE_MBEAN_APPEND_CLASS_LOADER_ID=false`to will exclude one level with Classloader name.&eol; You can set {$GRIDGAIN.USER} and {$GRIDGAIN.PASSWORD} macros in the template for using on the host level.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |47d87c39c121429b98a18f641aa443ea|
ROW |10418 |NULL |Cisco ASAv SNMP |3 |-1 |2 | | |Cisco ASAv SNMP |0 |NULL |Template Net Cisco ASAv&eol;&eol;MIBs used:&eol;CISCO-PORT-MIB&eol;CISCO-MEMORY-POOL-MIB&eol;CISCO-REMOTE-ACCESS-MONITOR-MIB&eol;IF-MIB&eol;RFC1213-MIB&eol;CISCO-PROCESS-MIB&eol;ENTITY-MIB&eol; CISCO-REMOTE-ACCESS-MONITOR-MIB&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco&eol;&eol;Template tooling version used: 0.41 |1 |1 | | | | | |1 |0 |0 |75d009cd4dc84ee7a8fc479fa2fbaeee|
ROW |10419 |NULL |F5 Big-IP SNMP |3 |-1 |2 | | |F5 Big-IP SNMP |0 |NULL |MIBs used:&eol;RFC1213-MIB&eol;F5-BIGIP-LOCAL-MIB&eol;F5-BIGIP-SYSTEM-MIB&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |44c2c2d94a4447c6a924386640e4854a|
ROW |10420 |NULL |ZYXEL AAM1212-51 IES-612 SNMP |3 |-1 |2 | | |ZYXEL AAM1212-51 IES-612 SNMP |0 |NULL |ZYXEL AAM1212-51 / IES-612&eol;&eol;MIBs used:&eol;RFC1213-MIB&eol;HOST-RESOURCES-MIB&eol;ADSL-LINE-MIB&eol;ZYXEL-IESCOMMON-MIB&eol;IF-MIB&eol;&eol;Known Issues:&eol;&eol; Description: Incorrect handling of SNMP bulk requests. Disable the use of bulk requests in the SNMP interface settings.&eol; Version: all versions firmware&eol; Device: ZYXEL AAM1212-51 / IES-612&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |3a71dcdcfe0b4a0e8284d8939d335cce|
@@ -350,6 +350,7 @@ ROW |10538 |NULL |{#AWS.S3.NAME}
ROW |10539 |NULL |Azure MySQL flexible server by HTTP |3 |-1 |2 | | |Azure MySQL flexible server by HTTP |0 |NULL |This template is designed to monitor Microsoft Azure MySQL flexible servers by HTTP.&eol;It works without any external scripts and uses the script item.&eol;&eol;Setup:&eol; 1. Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.&eol; `az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`&eol; See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.&eol; 2. Link the template to a host.&eol; 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |ec92c7b0b1d14946b6ac61de89357199|
ROW |10540 |NULL |Azure MySQL single server by HTTP |3 |-1 |2 | | |Azure MySQL single server by HTTP |0 |NULL |This template is designed to monitor Microsoft Azure MySQL single servers by HTTP.&eol;It works without any external scripts and uses the script item.&eol;&eol;Setup:&eol; 1. Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.&eol; `az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`&eol; See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.&eol; 2. Link the template to a host.&eol; 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |c1396bf1e8cf46f6a407e88ddceef0b8|
ROW |10541 |NULL |Azure MySQL server {#NAME} |0 |-1 |2 | | |Azure MySQL server {#NAME} |2 |NULL | |1 |1 | | | | | |1 |0 |0 |55b87078c14c4561b53e64af5ed77d61|
+ROW |10542 |NULL |OS processes by Zabbix agent |3 |-1 |2 | | |OS processes by Zabbix agent |0 |NULL |Get processes metrics using item proc.get by Zabbix agent.&eol;&eol;You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback&eol;&eol;Template tooling version used: 0.42 |1 |1 | | | | | |1 |0 |0 |0f6889282f6048e2b1370e569e578985|
TABLE |group_prototype
FIELDS|group_prototypeid|hostid|name |groupid|templateid|
@@ -3622,13 +3623,13 @@ ROW |33740 |20 |1.3.6.1.4.1.34774.4.1.23.4.2.1.5.{#SNMPINDEX}
ROW |33741 |20 |1.3.6.1.4.1.34774.4.1.23.4.2.1.6.{#SNMPINDEX} |10385 |Pool {#NAME}: Running status |huawei.5300.v5[hwInfoStoragePoolRunningStatus, "{#NAME}"] |1m |7d |365d |0 |3 | | | | |NULL |222 | | |0 | | | | |2 |NULL |Operating status of a storage pool. For details, see definition of Enum Values (RUNNING_STATUS_E).&eol;https://support.huawei.com/enterprise/en/centralized-storage/oceanstor-5300-v5-pid-22462029?category=reference-guides&subcategory=mib-reference |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |a5e886744b82456e8a028f01d458307a|
ROW |33742 |20 |1.3.6.1.4.1.34774.4.1.23.4.2.1.8.{#SNMPINDEX} |10385 |Pool {#NAME}: Capacity used |huawei.5300.v5[hwInfoStoragePoolSubscribedCapacity, "{#NAME}"] |1m |7d |365d |0 |3 | |B | | |NULL |NULL | | |0 | | | | |2 |NULL |Used capacity of a storage pool. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |8e59b01ae52b403a8e0da860c909faa1|
ROW |33743 |20 |1.3.6.1.4.1.34774.4.1.23.4.2.1.7.{#SNMPINDEX} |10385 |Pool {#NAME}: Capacity total |huawei.5300.v5[hwInfoStoragePoolTotalCapacity, "{#NAME}"] |1m |7d |365d |0 |3 | |B | | |NULL |NULL | | |0 | | | | |2 |NULL |Total capacity of a storage pool. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |e82a9a0946814522a517694df270a400|
-ROW |33747 |0 | |10300 |RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |223 | | |0 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Responds a 200 OK if there are no alarms in effect in the cluster, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s |{$RABBITMQ.API.SCHEME}://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/health/checks/alarms | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |4c93b04164d24eb8b9dbdab652afc7bc|
+ROW |33747 |0 | |10300 |RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |223 | | |0 | | | | |2 |NULL |Responds a 200 OK if there are no alarms in effect in the cluster, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |4c93b04164d24eb8b9dbdab652afc7bc|
ROW |33748 |0 | |10301 |RabbitMQ: Healthcheck{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"] |1m |7h |365d |0 |3 | | | | |NULL |134 | | |0 | | | | |2 |NULL |Runs basic healthchecks in the current node. Checks that the rabbit application is running, channels and queues can be listed successfully, and that no alarms are in effect. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |8b959a9d03dc4ae8bed7292973f4fcc4|
-ROW |33749 |0 | |10301 |RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/certificate-expiration/1/months{#SINGLETON}"]|1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Checks the expiration date on the certificates for every listener configured to use TLS. Responds a 200 OK if all certificates are valid (have not expired), otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |0f1cd729d8f4447db25e0af19eae595d|
-ROW |33750 |0 | |10301 |RabbitMQ: Healthcheck: local alarms in effect on this node{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/local-alarms{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Responds a 200 OK if there are no local alarms in effect on the target node, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |701449b128cb42cdb971fc608ba9f29b|
-ROW |33751 |0 | |10301 |RabbitMQ: Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-mirror-sync-critical{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Checks if there are classic mirrored queues without synchronized mirrors online (queues that would potentially lose data if the target node is shut down). Responds a 200 OK if there are no such classic mirrored queues, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |7a07966d8dde4f2caa9ff95693b86974|
-ROW |33752 |0 | |10301 |RabbitMQ: Healthcheck: queues with minimum online quorum{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-quorum-critical{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Checks if there are quorum queues with minimum online quorum (queues that would lose their quorum and availability if the target node is shut down). Responds a 200 OK if there are no such quorum queues, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |f6ec1bb1cc4741be852136fac2c63333|
-ROW |33753 |0 | |10301 |RabbitMQ: Healthcheck: virtual hosts on this node{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/virtual-hosts{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Responds a 200 OK if all virtual hosts and running on the target node, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |0d1ad3daf2bb46dba2c9913c1684a0d4|
+ROW |33749 |0 | |10301 |RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/certificate-expiration/1/months{#SINGLETON}"]|1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 | | | | |2 |NULL |Checks the expiration date on the certificates for every listener configured to use TLS. Responds a 200 OK if all certificates are valid (have not expired), otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |0f1cd729d8f4447db25e0af19eae595d|
+ROW |33750 |0 | |10301 |RabbitMQ: Healthcheck: local alarms in effect on this node{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/local-alarms{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 | | | | |2 |NULL |Responds a 200 OK if there are no local alarms in effect on the target node, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |701449b128cb42cdb971fc608ba9f29b|
+ROW |33751 |0 | |10301 |RabbitMQ: Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-mirror-sync-critical{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 | | | | |2 |NULL |Checks if there are classic mirrored queues without synchronized mirrors online (queues that would potentially lose data if the target node is shut down). Responds a 200 OK if there are no such classic mirrored queues, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |7a07966d8dde4f2caa9ff95693b86974|
+ROW |33752 |0 | |10301 |RabbitMQ: Healthcheck: queues with minimum online quorum{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-quorum-critical{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 | | | | |2 |NULL |Checks if there are quorum queues with minimum online quorum (queues that would lose their quorum and availability if the target node is shut down). Responds a 200 OK if there are no such quorum queues, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |f6ec1bb1cc4741be852136fac2c63333|
+ROW |33753 |0 | |10301 |RabbitMQ: Healthcheck: virtual hosts on this node{#SINGLETON} |web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/virtual-hosts{#SINGLETON}"] |1m |7d |365d |0 |3 | | | | |NULL |134 | | |0 | | | | |2 |NULL |Responds a 200 OK if all virtual hosts and running on the target node, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |0d1ad3daf2bb46dba2c9913c1684a0d4|
ROW |33757 |19 | |10302 |RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON} |rabbitmq.healthcheck.alarms[{#SINGLETON}] |1m |7d |365d |0 |3 | | | | |NULL |224 | | |1 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Responds a 200 OK if there are no alarms in effect in the cluster, otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s |{$RABBITMQ.API.SCHEME}://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/health/checks/alarms | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |90db70de99454f7b924d84174a5951fb|
ROW |33758 |19 | |10303 |RabbitMQ: Healthcheck{#SINGLETON} |rabbitmq.healthcheck[{#SINGLETON}] |1m |7h |365d |0 |3 | | | | |NULL |135 | | |1 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Runs basic healthchecks in the current node. Checks that the rabbit application is running, channels and queues can be listed successfully, and that no alarms are in effect. |0 |30d |0 | |NULL |3s |{$RABBITMQ.API.SCHEME}://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/healthchecks/node | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |22f9a51fd0ea41148846ecde7dbf4d99|
ROW |33759 |19 | |10303 |RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON} |rabbitmq.healthcheck.certificate_expiration[{#SINGLETON}] |1m |7d |365d |0 |3 | | | | |NULL |135 | | |1 |{$RABBITMQ.API.USER} |{$RABBITMQ.API.PASSWORD} | | |2 |NULL |Checks the expiration date on the certificates for every listener configured to use TLS. Responds a 200 OK if all certificates are valid (have not expired), otherwise responds with a 503 Service Unavailable. |0 |30d |0 | |NULL |3s |{$RABBITMQ.API.SCHEME}://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/health/checks/certificate-expiration/1/months | | |200,503,404 |1 |0 | |1 |0 |0 |0 |0 |0 |0 |d18cd1fd8cd749e4a00b8186fd93345f|
@@ -4451,7 +4452,7 @@ ROW |34977 |16 |
ROW |34978 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: Cache delete, rate |jmx["{#JMXOBJ}",PreparedStatementCacheDeleteCount] |1m |7d |365d |0 |0 | | | | |NULL |NULL | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |The number of statements discarded from the cache per second. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |9c08f05299774a538a52be2c11e62cda|
ROW |34979 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: Cache hit, rate |jmx["{#JMXOBJ}",PreparedStatementCacheHitCount] |1m |7d |365d |0 |0 | | | | |NULL |NULL | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |The number of times that statements from the cache were used per second. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |dbe7bc3d9a8a46c6a84b956f0a9e33be|
ROW |34980 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: Cache miss, rate |jmx["{#JMXOBJ}",PreparedStatementCacheMissCount] |1m |7d |365d |0 |0 | | | | |NULL |NULL | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |The number of times that a statement request could not be satisfied with a statement from the cache per second. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |0e81a30b802941c4bc0e34a10a8d0573|
-ROW |34981 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: Statistics enabled |jmx["{#JMXOBJ}",statisticsEnabled] |1m |7d |365d |0 |3 | | | | |NULL |335 | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |Define whether runtime statistics are enabled or not. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |81dbce02ad4d492ebebd1a205bea1b43|
+ROW |34981 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: Statistics enabled |jmx["{#JMXOBJ}",statisticsEnabled, "JDBC"] |1m |7d |365d |0 |3 | | | | |NULL |335 | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |Define whether runtime statistics are enabled or not. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |81dbce02ad4d492ebebd1a205bea1b43|
ROW |34982 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: Connections: Active |jmx["{#JMXOBJ}",ActiveCount] |1m |7d |365d |0 |0 | | | | |NULL |NULL | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |The number of open connections. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |06d61e390b0e403e81b1eaa77815cde2|
ROW |34983 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: XA: Commit time, avg |jmx["{#JMXOBJ}",XACommitAverageTime] |1m |7d |365d |0 |0 | |s | | |NULL |NULL | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |The average time for a XAResource commit invocation. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |c22389aa983a4cdca504e3cc41126f03|
ROW |34984 |16 | |10411 |WildFly {#JMX_DATA_SOURCE}: XA: Start time, avg |jmx["{#JMXOBJ}",XAStartAverageTime] |1m |7d |365d |0 |0 | |s | | |NULL |NULL | | |0 |{$WILDFLY.USER} |{$WILDFLY.PASSWORD} | | |2 |NULL |The average time for a XAResource start invocation. |0 |30d |0 |service:jmx:{$WILDFLY.JMX.PROTOCOL}://{HOST.CONN}:{HOST.PORT}|NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |ab9c32db31d84a46967c1f601f11f610|
@@ -4594,7 +4595,7 @@ ROW |35317 |16 |
ROW |35318 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Uptime |jmx["{#JMXOBJ}",UpTime] |1m |7d |365d |0 |3 | |uptime | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |Uptime of GridGain instance. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |4b3c99a88fbf4485a3dbf5efa2723ca7|
ROW |35319 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication outbound messages queue |jmx["{#JMXOBJ}",OutboundMessagesQueueSize] |1m |7d |365d |0 |3 | | | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |Outbound messages queue size. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |904f0c843b1b434986043a63cb0890e7|
ROW |35320 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication messages received, rate |jmx["{#JMXOBJ}",ReceivedMessagesCount] |1m |7d |365d |0 |0 | |!msg/s | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |The number of messages received per second. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |2a01c4dc23b34df6801be0901bf10ab0|
-ROW |35321 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication reconnect rate |jmx["{#JMXOBJ}",ReconnectCount] |1m |7d |365d |0 |0 | | | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |Gets maximum number of reconnect attempts used when establishing connection with remote nodes per second. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |613114b7abb94bd5bbabc2d1d19975b7|
+ROW |35321 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication reconnect rate |jmx["{#JMXOBJ}",ReconnectCount, "maxNumbers"] |1m |7d |365d |0 |0 | | | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |Gets maximum number of reconnect attempts used when establishing connection with remote nodes per second. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |613114b7abb94bd5bbabc2d1d19975b7|
ROW |35322 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication messages sent, rate |jmx["{#JMXOBJ}",SentMessagesCount] |1m |7d |365d |0 |0 | |!msg/s | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |The number of messages sent per second. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |e015293ddbb540e4b6b59ba6e28ed91e|
ROW |35323 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Coordinator |jmx["{#JMXOBJ}",Coordinator] |1m |7d |0 |0 |1 | | | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |Current coordinator UUID. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |3e1086638d954e939907fd2009408048|
ROW |35324 |16 | |10417 |GridGain [{#JMXIGNITEINSTANCENAME}]: Discovery message worker queue |jmx["{#JMXOBJ}",MessageWorkerQueueSize] |1m |7d |365d |0 |3 | | | | |NULL |NULL | | |0 |{$GRIDGAIN.USER} |{$GRIDGAIN.PASSWORD} | | |2 |NULL |Message worker queue current size. |0 |30d |0 |service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |29d85d09951346c1a7c30acc83f404fc|
@@ -10299,6 +10300,7 @@ ROW |44054 |21 |
ROW |44055 |5 | |10047 |Zabbix stats proxy |zabbix[proxy,discovery] |1m |0 |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |0 |NULL |Zabbix proxy statistics master item. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |6fb9d6a8d3f84c679e7af4b9ef437239|
ROW |44161 |21 | |10539 |Azure MySQL: Get data |azure.db.mysql.data.get |1m |0d |0 |0 |4 | | | | |NULL |NULL |var AzureDB = {&eol; params: {},&eol; token: null,&eol;&eol; setParams: function (params) {&eol; ['app_id', 'password', 'tenant_id', 'subscription_id', 'resource_id'].forEach(function (field) {&eol; if (typeof params !== 'object' &pipe;&pipe; typeof params[field] === 'undefined' &pipe;&pipe; params[field] === '') {&eol; throw 'Required param is not set: ' + field + '.';&eol; }&eol; });&eol;&eol; AzureDB.params = params;&eol; },&eol;&eol;&eol; request: function (url, data) {&eol; if (typeof data === 'undefined' &pipe;&pipe; data === null) {&eol; data = '';&eol; }&eol;&eol; var response, request = new HttpRequest();&eol; if (AzureDB.token) {&eol; request.addHeader('Accept: application/json');&eol; request.addHeader('Authorization: Bearer ' + AzureDB.token);&eol; }&eol; &eol; Zabbix.log(4, '[ Azure ] Sending request: ' + url);&eol;&eol; if (data !== '') {&eol; request.addHeader('Content-Type: application/x-www-form-urlencoded');&eol; response = request.post(url, data);&eol; }&eol; else {&eol; response = request.get(url);&eol; }&eol;&eol; Zabbix.log(4, '[ Azure ] Received response with status code ' + request.getStatus() + ': ' + response);&eol;&eol; if (request.getStatus() !== 200 &pipe;&pipe; response === null) {&eol; throw 'Request failed with status code ' + request.getStatus() + ': ' + response;&eol; }&eol;&eol; try {&eol; return JSON.parse(response);&eol; }&eol; catch (error) {&eol; throw 'Failed to parse response received from API.';&eol; }&eol;}&eol;&eol;};&eol;&eol;var metrics = [&eol; 'cpu_percent',&eol; 'memory_percent',&eol; 'network_bytes_egress',&eol; 'network_bytes_ingress',&eol; 'active_connections',&eol; 'total_connections',&eol; 'aborted_connections',&eol; 'Queries',&eol; 'io_consumption_percent',&eol; 'storage_percent',&eol; 'storage_used',&eol; 'storage_limit',&eol; 'backup_storage_used',&eol; 'replication_lag',&eol; 'cpu_credits_remaining',&eol; 'cpu_credits_consumed'&eol;],&eol; prepared_metrics = [],&eol; data = {};&eol; data['errors'] = {};&eol; data['metrics'] = {};&eol;&eol;try {&eol; AzureDB.setParams(JSON.parse(value));&eol;&eol; try {&eol; result = AzureDB.request(&eol; 'https://login.microsoftonline.com/' + encodeURIComponent(AzureDB.params.tenant_id) + '/oauth2/token',&eol; 'grant_type=client_credentials&resource=' + encodeURIComponent('https://management.azure.com/') + '&client_id=' + encodeURIComponent(AzureDB.params.app_id) + '&client_secret=' + encodeURIComponent(AzureDB.params.password)&eol; );&eol;&eol; if ('access_token' in result) {&eol; AzureDB.token = result['access_token'];&eol; } else {&eol; throw 'Auth response does not contain access token.';&eol; }&eol; }&eol; catch (error) {&eol; data.errors.auth = error.toString();&eol; }&eol;&eol; if (!('auth' in data.errors)) {&eol; try {&eol; health = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2020-05-01');&eol; data.health = health.value[0].properties;&eol; }&eol; catch (error) {&eol; data.errors.health = error.toString();&eol; }&eol;&eol; for (var i = 0; i < metrics.length; i += 20) {&eol; var chunk = metrics.slice(i, i + 20);&eol;&eol; prepared_metrics.push(&eol; chunk.map(function(element) {&eol; return encodeURIComponent(element);&eol; }).join(',')&eol; );&eol; }&eol;&eol; start_date = new Date((new Date().getTime()) - 300000).toISOString().replace(/\.\d+/, '');&eol; end_date = new Date().toISOString().replace(/\.\d+/, '');&eol; &eol; for (var j in prepared_metrics) {&eol; try {&eol; metrics_data = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.Insights/metrics?metricnames=' + prepared_metrics[j] + '&timespan=' + encodeURIComponent(start_date) + '/' + encodeURIComponent(end_date) + '&api-version=2021-05-01');&eol; for (k in metrics_data.value) {&eol; data.metrics[metrics_data.value[k].name.value.replace(/(\s&pipe;\/)+/g, '')] = metrics_data.value[k].timeseries[0].data[metrics_data.value[k].timeseries[0].data.length - 1];&eol; }&eol; }&eol; catch (error) {&eol; data.errors[prepared_metrics[j]] = error.toString();&eol; }&eol; } &eol; }&eol;}&eol;catch (error) {&eol; data.errors.params = error.toString();&eol;}&eol;&eol;if (Object.keys(data.errors).length !== 0) {&eol; errors = 'Failed to receive data:';&eol; for (var error in data.errors) {&eol; errors += '\n' + error + ' : ' + data.errors[error];&eol; }&eol; data.errors = errors;&eol;}&eol;else {&eol; data.errors = '';&eol;}&eol;&eol;return JSON.stringify(data);| |0 | | | | |0 |NULL |The result of API requests is in the JSON. |0 |30d |0 | |NULL |{$AZURE.DATA.TIMEOUT} | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |de712334db1440309fa68f9252d4f9bc|
ROW |44162 |21 | |10540 |Azure MySQL: Get data |azure.db.mysql.data.get |1m |0d |0 |0 |4 | | | | |NULL |NULL |var AzureDB = {&eol; params: {},&eol; token: null,&eol;&eol; setParams: function (params) {&eol; ['app_id', 'password', 'tenant_id', 'subscription_id', 'resource_id'].forEach(function (field) {&eol; if (typeof params !== 'object' &pipe;&pipe; typeof params[field] === 'undefined' &pipe;&pipe; params[field] === '') {&eol; throw 'Required param is not set: ' + field + '.';&eol; }&eol; });&eol;&eol; AzureDB.params = params;&eol; },&eol;&eol;&eol; request: function (url, data) {&eol; if (typeof data === 'undefined' &pipe;&pipe; data === null) {&eol; data = '';&eol; }&eol;&eol; var response, request = new HttpRequest();&eol; if (AzureDB.token) {&eol; request.addHeader('Accept: application/json');&eol; request.addHeader('Authorization: Bearer ' + AzureDB.token);&eol; }&eol; &eol; Zabbix.log(4, '[ Azure ] Sending request: ' + url);&eol;&eol; if (data !== '') {&eol; request.addHeader('Content-Type: application/x-www-form-urlencoded');&eol; response = request.post(url, data);&eol; }&eol; else {&eol; response = request.get(url);&eol; }&eol;&eol; Zabbix.log(4, '[ Azure ] Received response with status code ' + request.getStatus() + ': ' + response);&eol;&eol; if (request.getStatus() !== 200 &pipe;&pipe; response === null) {&eol; throw 'Request failed with status code ' + request.getStatus() + ': ' + response;&eol; }&eol;&eol; try {&eol; return JSON.parse(response);&eol; }&eol; catch (error) {&eol; throw 'Failed to parse response received from API.';&eol; }&eol;}&eol;&eol;};&eol;&eol;var metrics = [&eol; 'cpu_percent',&eol; 'memory_percent',&eol; 'io_consumption_percent',&eol; 'storage_percent',&eol; 'storage_used',&eol; 'storage_limit',&eol; 'serverlog_storage_percent',&eol; 'serverlog_storage_usage',&eol; 'serverlog_storage_limit',&eol; 'active_connections',&eol; 'connections_failed',&eol; 'seconds_behind_master',&eol; 'backup_storage_used',&eol; 'network_bytes_egress',&eol; 'network_bytes_ingress'&eol;],&eol; prepared_metrics = [],&eol; data = {};&eol; data['errors'] = {};&eol; data['metrics'] = {};&eol;&eol;try {&eol; AzureDB.setParams(JSON.parse(value));&eol;&eol; try {&eol; result = AzureDB.request(&eol; 'https://login.microsoftonline.com/' + encodeURIComponent(AzureDB.params.tenant_id) + '/oauth2/token',&eol; 'grant_type=client_credentials&resource=' + encodeURIComponent('https://management.azure.com/') + '&client_id=' + encodeURIComponent(AzureDB.params.app_id) + '&client_secret=' + encodeURIComponent(AzureDB.params.password)&eol; );&eol;&eol; if ('access_token' in result) {&eol; AzureDB.token = result['access_token'];&eol; } else {&eol; throw 'Auth response does not contain access token.';&eol; }&eol; }&eol; catch (error) {&eol; data.errors.auth = error.toString();&eol; }&eol;&eol; if (!('auth' in data.errors)) {&eol; try {&eol; health = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2020-05-01');&eol; data.health = health.value[0].properties;&eol; }&eol; catch (error) {&eol; data.errors.health = error.toString();&eol; }&eol;&eol; for (var i = 0; i < metrics.length; i += 20) {&eol; var chunk = metrics.slice(i, i + 20);&eol;&eol; prepared_metrics.push(&eol; chunk.map(function(element) {&eol; return encodeURIComponent(element);&eol; }).join(',')&eol; );&eol; }&eol;&eol; start_date = new Date((new Date().getTime()) - 300000).toISOString().replace(/\.\d+/, '');&eol; end_date = new Date().toISOString().replace(/\.\d+/, '');&eol; &eol; for (var j in prepared_metrics) {&eol; try {&eol; metrics_data = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.Insights/metrics?metricnames=' + prepared_metrics[j] + '&timespan=' + encodeURIComponent(start_date) + '/' + encodeURIComponent(end_date) + '&api-version=2021-05-01');&eol; for (k in metrics_data.value) {&eol; data.metrics[metrics_data.value[k].name.value.replace(/(\s&pipe;\/)+/g, '')] = metrics_data.value[k].timeseries[0].data[metrics_data.value[k].timeseries[0].data.length - 1];&eol; }&eol; }&eol; catch (error) {&eol; data.errors[prepared_metrics[j]] = error.toString();&eol; }&eol; } &eol; }&eol;}&eol;catch (error) {&eol; data.errors.params = error.toString();&eol;}&eol;&eol;if (Object.keys(data.errors).length !== 0) {&eol; errors = 'Failed to receive data:';&eol; for (var error in data.errors) {&eol; errors += '\n' + error + ' : ' + data.errors[error];&eol; }&eol; data.errors = errors;&eol;}&eol;else {&eol; data.errors = '';&eol;}&eol;&eol;return JSON.stringify(data);| |0 | | | | |0 |NULL |The result of API requests is in the JSON. |0 |30d |0 | |NULL |{$AZURE.DATA.TIMEOUT} | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |cd62d92ef0384ea9acf0cae71c88ebc6|
+ROW |44235 |0 | |10542 |OS: Get process summary |proc.get[,,,summary] |1m |0 |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |0 |NULL |The summary of data metrics for all processes. |0 |30d |0 | |NULL |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |803390429cf949d3b8439dd5dd71c706|
TABLE |items
FIELDS|itemid|type|snmp_oid|hostid|name |key_ |delay|history|trends|status|value_type|trapper_hosts|units |formula|logtimefmt|templateid|valuemapid|params|ipmi_sensor|authtype|username|password|publickey|privatekey|flags|interfaceid|description |inventory_link|lifetime|evaltype|jmx_endpoint|master_itemid|timeout|url |query_fields|posts|status_codes|follow_redirects|post_type|headers|retrieve_mode|request_method|output_format|verify_peer|verify_host|allow_traps|discover|uuid |
@@ -13765,6 +13767,8 @@ ROW |44210 |18 | |10534 |HPE Synergy: Get storage systems data
ROW |44211 |18 | |10534 |HPE Synergy: Get storage volumes data |hpe.synergy.get.storage_volumes |0 |0d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |0 |NULL |Data of the storage volumes. |0 |30d |0 | |43901 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |f232ebaf34eb474d9596cfe573e7b3fb|
ROW |44212 |18 | |10534 |HPE Synergy: Get uplink sets data |hpe.synergy.get.uplink_sets |0 |0d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |0 |NULL |Data of the uplink sets. |0 |30d |0 | |43901 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |d8e6a2b490ab472cb15814c19ed71e16|
ROW |44213 |18 | |10534 |HPE Synergy: Get interconnects data |hpe.synergy.get.interconnects |0 |0d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |0 |NULL |Data of the interconnects. |0 |30d |0 | |43901 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |9724a596f61241f297f5fa8fbd538ea0|
+ROW |44236 |18 | |10542 |Processes discovery |custom.proc.discovery |0 |90d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |1 |NULL |Discovery of OS summary processes. |0 |30d |1 | |44235 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |7c0e8b719d0e464f92ee42a3da75b682|
+ROW |44237 |18 | |10542 |Process [{#NAME}]: Get data |custom.proc.get[{#NAME}] |0 |0d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |2 |NULL |Summary metrics collected during the process {#NAME}. |0 |30d |0 | |44235 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |2e9b31e2b47741f4b35c5d15f33378ea|
TABLE |items
FIELDS|itemid|type|snmp_oid|hostid|name |key_ |delay|history|trends|status|value_type|trapper_hosts|units |formula|logtimefmt|templateid|valuemapid|params|ipmi_sensor|authtype|username|password|publickey|privatekey|flags|interfaceid|description |inventory_link|lifetime|evaltype|jmx_endpoint|master_itemid|timeout|url |query_fields|posts|status_codes|follow_redirects|post_type|headers|retrieve_mode|request_method|output_format|verify_peer|verify_host|allow_traps|discover|uuid |
@@ -14088,6 +14092,14 @@ ROW |44231 |18 | |10534 |Storage pool [{#NAME}]: Get data
ROW |44232 |18 | |10534 |Storage system [{#NAME}]: Get data |hpe.synergy.storage.system["{#NAME}",data] |0 |0d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |2 |NULL |Data of the storage system [{#NAME}]. |0 |30d |0 | |44210 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |2f9bf8f7699945488201922c76f51675|
ROW |44233 |18 | |10534 |Storage volume [{#NAME}]: Get data |hpe.synergy.storage.volumes["{#NAME}",data] |0 |0d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |2 |NULL |Data of the storage volume [{#NAME}]. |0 |30d |0 | |44211 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |e02b8e2f502b4bfb8fa9fd17d2d4e416|
ROW |44234 |18 | |10534 |Uplink set [{#NAME}]: Get data |hpe.synergy.uplink_set["{#NAME}",data] |0 |0d |0 |0 |4 | | | | |NULL |NULL | | |0 | | | | |2 |NULL |Data of the uplink set [{#NAME}]. |0 |30d |0 | |44212 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |1469992463264badb3a80839414e9f2e|
+ROW |44238 |18 | |10542 |Process [{#NAME}]: Size of locked memory |custom.proc.mem.locked[{#NAME}] |0 |7d |365d |0 |0 | |B | | |NULL |NULL | | |0 | | | | |2 |NULL |The size of locked memory {#NAME}. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |822ffda22eb042b89fc50b212aab133f|
+ROW |44239 |18 | |10542 |Process [{#NAME}]: Number of running processes |custom.proc.num[{#NAME}] |0 |7d |365d |0 |3 | | | | |NULL |NULL | | |0 | | | | |2 |NULL |The number of running processes {#NAME}. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |0bb7d924b8814c42a494d8a3baf48a59|
+ROW |44240 |18 | |10542 |Process [{#NAME}]: Number of page faults |custom.proc.page[{#NAME}] |0 |7d |365d |0 |3 | | | | |NULL |NULL | | |0 | | | | |2 |NULL |The number of page faults {#NAME}. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |abccdac17c7e4b549fcfe70ceeedeb9b|
+ROW |44241 |18 | |10542 |Process [{#NAME}]: Memory usage, % |custom.proc.pmem[{#NAME}] |0 |7d |365d |0 |0 | |% | | |NULL |NULL | | |0 | | | | |2 |NULL |The percentage of real memory used by the process {#NAME}. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |4ffd202fb6044b819f6f28dc866ca8f1|
+ROW |44242 |18 | |10542 |Process [{#NAME}]: Memory usage (rss) |custom.proc.rss[{#NAME}] |0 |7d |365d |0 |0 | |B | | |NULL |NULL | | |0 | | | | |2 |NULL |The summary of Resident Set Size (RSS) memory used by the process {#NAME} in bytes. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |7e573e38bce04167bc37712c0a3e2194|
+ROW |44243 |18 | |10542 |Process [{#NAME}]: Swap space used |custom.proc.swap[{#NAME}] |0 |7d |365d |0 |0 | |B | | |NULL |NULL | | |0 | | | | |2 |NULL |The swap space used by {#NAME}. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |12370d3b25024d2189cddba8d3b23938|
+ROW |44244 |18 | |10542 |Process [{#NAME}]: Number of threads |custom.proc.thread[{#NAME}] |0 |7d |365d |0 |3 | | | | |NULL |NULL | | |0 | | | | |2 |NULL |The number of threads {#NAME}. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |a7265ca1b1d2463294e26d80fe075639|
+ROW |44245 |18 | |10542 |Process [{#NAME}]: Memory usage (vsize) |custom.proc.vmem[{#NAME}] |0 |7d |365d |0 |0 | |B | | |NULL |NULL | | |0 | | | | |2 |NULL |The summary of virtual memory used by process {#NAME} in bytes. |0 |30d |0 | |44237 |3s | | | |200 |1 |0 | |0 |0 |0 |0 |0 |0 |0 |c1b9b1d8f28947589e46041690899100|
TABLE |items
FIELDS|itemid|type|snmp_oid|hostid|name |key_ |delay|history|trends|status|value_type|trapper_hosts|units |formula|logtimefmt|templateid|valuemapid|params|ipmi_sensor|authtype|username|password|publickey|privatekey|flags|interfaceid|description |inventory_link|lifetime|evaltype|jmx_endpoint|master_itemid|timeout|url |query_fields|posts|status_codes|follow_redirects|post_type|headers|retrieve_mode|request_method|output_format|verify_peer|verify_host|allow_traps|discover|uuid |
@@ -16854,8 +16866,8 @@ ROW |18911 |{23284}<>{23285} and length({23286})>0
ROW |18912 |{23287}<>{23288} and length({23289})>0 |WildFly domain: Server {#SERVER}: Server group has changed | |0 |1 |Server group has changed. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |WildFly domain: Server {#SERVER}: Server group has changed (new group: {ITEM.VALUE}) |da5368f2eec040bbb05f13faa6375052| |
ROW |18913 |{23290}<>{23291} and length({23292})>0 |WildFly domain: Server {#SERVER}: Server status has changed | |0 |2 |Server status has changed. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |WildFly domain: Server {#SERVER}: Server status has changed (new status: {ITEM.VALUE}) |79409a9fae6442c9ad655655a752365d| |
ROW |18914 |{23116}=1 |WildFly: Failed to fetch info data | |0 |2 |Zabbix has not received data for items for the last 15 minutes |NULL |0 |0 |0 | |0 | |0 | |0 |WildFly: Failed to fetch info data (or no data for 15m) |8a4fab49eb1e4ebbb1459d9b0f848771| |
-ROW |18915 |{23117}<10m |WildFly: has been restarted | |0 |1 |Uptime is less than 10 minutes. |NULL |0 |0 |0 | |0 | |1 | |0 |WildFly: has been restarted (uptime < 10m) |71db189440ec4355aa06262e3200d47e| |
-ROW |18916 |{23293}<>{23294} and length({23295})>0 |WildFly: Version has changed | |0 |1 |WildFly version has changed. Ack to close. |NULL |0 |0 |0 | |0 | |1 | |0 |WildFly: Version has changed (new version: {ITEM.VALUE}) |2923ab6f81d64579b6ba778bc0467042| |
+ROW |18915 |{23117}<10m |WildFly: Host has been restarted | |0 |1 |Uptime is less than 10 minutes. |NULL |0 |0 |0 | |0 | |1 | |0 |WildFly: {HOST.NAME} has been restarted (uptime < 10m) |71db189440ec4355aa06262e3200d47e| |
+ROW |18916 |{23293}<>{23294} and length({23295})>0 |WildFly: Version has changed | |0 |1 |The WildFly version has changed. Perform Ack to close. |NULL |0 |0 |0 | |0 | |1 | |0 |WildFly: Version has changed (new version: {ITEM.VALUE}) |2923ab6f81d64579b6ba778bc0467042| |
ROW |18917 |{23121}=0 |WildFly: Server needs to restart for configuration change. | |0 |2 | |NULL |0 |0 |0 | |0 | |0 | |0 | |c5702304641748e4bb04be89f3a38326| |
ROW |18918 |{23122}=0 |WildFly: Server controller is not in RUNNING state | |0 |2 | |NULL |0 |0 |0 | |0 | |0 | |0 | |81de7058e3b64f73a14e03728dcf1c9b| |
ROW |18919 |{23296}<>{23297} and length({23298})>0 |WildFly deployment [{#DEPLOYMENT}]: Deployment status has changed | |0 |2 |Deployment status has changed. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |WildFly deployment [{#DEPLOYMENT}]: Deployment status has changed (new status: {ITEM.VALUE}) |6b432b25debe4277a971bc8a906e07b1| |
@@ -16935,10 +16947,10 @@ ROW |18995 |{23408} > {$GRIDGAIN.JOBS.QUEUE.MAX.WARN}
ROW |18996 |{23409}>{23410} |GridGain [{#JMXIGNITEINSTANCENAME}]: There are nodes is not in topology | |0 |1 |One or more server node left the topology. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 | |ea93cb34b6434f2e94095c28087fc18e| |
ROW |18997 |{23411}>0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Server node added to the topology | |0 |1 |One or more server node added to the topology. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 | |bf1fbe1ea3754da59bd8a510fbcc6f54| |
ROW |18998 |{23412}<0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Server node left the topology | |0 |2 |One or more server node left the topology. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 | |db4cd7173ead4e878b79d55067d81300| |
-ROW |18999 |{23413}<>{23414} and length({23415})>0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed | |0 |1 |GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed (new version: {ITEM.VALUE}) |4cc201fb67664fc49d36bbec95b574ce| |
+ROW |18999 |{23413}<>{23414} and length({23415})>0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed | |0 |1 |The GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Perform Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed (new version: {ITEM.VALUE}) |4cc201fb67664fc49d36bbec95b574ce| |
ROW |19000 |{23416}=1 |GridGain [{#JMXIGNITEINSTANCENAME}]: Failed to fetch info data | |0 |2 |Zabbix has not received data for items for the last 10 minutes. |NULL |0 |2 |0 | |0 | |1 | |0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Failed to fetch info data (or no data for 10m) |d7b2be3a707f49d2897e7cce356cafa5| |
-ROW |19001 |{23417}<10m |GridGain [{#JMXIGNITEINSTANCENAME}]: has been restarted | |0 |1 |Uptime is less than 10 minutes. |NULL |0 |2 |0 | |0 | |1 | |0 |GridGain [{#JMXIGNITEINSTANCENAME}]: has been restarted (uptime < 10m) |23cd9dbb498f4bb095ec8be1693fccf0| |
-ROW |19002 |{23418}<>{23419} and length({23420})>0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Coordinator has changed | |0 |2 |GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed (new version: {ITEM.VALUE}) |40641263a3d840e89e46ba6f57076a0a| |
+ROW |19001 |{23417}<10m |GridGain [{#JMXIGNITEINSTANCENAME}]: Host has been restarted | |0 |1 |Uptime is less than 10 minutes. |NULL |0 |2 |0 | |0 | |1 | |0 |GridGain [{#JMXIGNITEINSTANCENAME}]: {HOST.NAME} has been restarted (uptime < 10m) |23cd9dbb498f4bb095ec8be1693fccf0| |
+ROW |19002 |{23418}<>{23419} and length({23420})>0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Coordinator has changed | |0 |2 |The GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Perform Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed (new version: {ITEM.VALUE}) |40641263a3d840e89e46ba6f57076a0a| |
ROW |19003 |{23421}>={23422} |Cache group [{#JMXNAME}]: One or more backups are unavailable | |0 |2 | |NULL |0 |2 |0 | |0 | |0 | |0 | |3ded54fcdad74c83b47543410a7d9b3c| |
ROW |19004 |{23423}<>{23424} and length({23425})>0 |Cache group [{#JMXNAME}]: List of caches has changed | |0 |1 |List of caches has changed. Significant changes have occurred in the cluster. Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 |Cache group [{#JMXNAME}]: Version has changed (new version: {ITEM.VALUE}) |94d82f9db4f449e491782e14f6973f9b| |
ROW |19005 |{23426}>0 |Cache group [{#JMXNAME}]: Rebalance in progress | |0 |1 |Ack to close. |NULL |0 |2 |0 | |0 | |1 | |0 | |84e1402b3ae64960ad997d2610137927| |
@@ -20095,6 +20107,7 @@ ROW |23007 |length({32547})>0
ROW |23008 |{32548}>{$AZURE.DB.MEMORY.UTIL.CRIT} |Azure MySQL: High memory utilization | |0 |3 |The system is running out of free memory. |NULL |0 |0 |0 | |0 | |0 |Current utilization: {ITEM.LASTVALUE1} |0 | |a67b35f1ac674d6692b0b2bcd6f89bd8| |
ROW |23009 |{32549}>{$AZURE.DB.STORAGE.PUSED.CRIT} |Azure MySQL: Storage space is critically low | |0 |3 |Critical utilization of the storage space. |NULL |0 |0 |0 | |0 | |0 |Current utilization: {ITEM.LASTVALUE1} |0 | |3afcb840e8004822a2dada2a89971f69| |
ROW |23010 |{32550}>{$AZURE.DB.STORAGE.PUSED.WARN} |Azure MySQL: Storage space is low | |0 |2 |High utilization of the storage space. |NULL |0 |0 |0 | |0 | |0 |Current utilization: {ITEM.LASTVALUE1} |0 | |2e605f906b284f769e7c880d4e642b43| |
+ROW |23011 |{32559}=0 |Process [{#NAME}]: is not running | |0 |4 | |NULL |0 |2 |0 | |0 | |1 | |0 | |66294f983a134a1e81165878f30d3ebc| |
TABLE |triggers
FIELDS|triggerid|expression |description |url |status|priority|comments |templateid|type|flags|recovery_mode|recovery_expression |correlation_mode|correlation_tag|manual_close|opdata |discover|event_name |uuid|url_name|
@@ -24089,7 +24102,7 @@ ROW |23122 |34960 |18918 |find |$,,"like","running"
ROW |23126 |35001 |18920 |min |$,5m |
ROW |23127 |34997 |18920 |last |$ |
ROW |23128 |34982 |18921 |max |$,5m |
-ROW |23129 |34999 |18922 |last |$ |
+ROW |23129 |34981 |18922 |last |$ |
ROW |23130 |34999 |18923 |last |$ |
ROW |23131 |34998 |18924 |last |$ |
ROW |23132 |34996 |18925 |min |$,5m |
@@ -31028,6 +31041,7 @@ ROW |32555 |42486 |22468 |max |$,5m
ROW |32556 |42464 |22468 |last |$ |
ROW |32557 |42542 |22490 |max |$,5m |
ROW |32558 |42520 |22490 |last |$ |
+ROW |32559 |44239 |23011 |last |$ |
TABLE |graphs
FIELDS|graphid|name |width|height|yaxismin|yaxismax|templateid|show_work_period|show_triggers|graphtype|show_legend|show_3d|percent_left|percent_right|ymin_type|ymax_type|ymin_itemid|ymax_itemid|flags|discover|uuid |
@@ -32376,6 +32390,7 @@ ROW |2440 |Azure MySQL: Network traffic
ROW |2441 |Azure MySQL: Server log storage utilization |900 |200 |0 |100 |NULL |1 |1 |0 |1 |0 |0 |0 |0 |0 |NULL |NULL |0 |0 |3fcf43fd338e4902874d940fc0bec8b9|
ROW |2442 |Azure MySQL: Storage utilization |900 |200 |0 |100 |NULL |1 |1 |0 |1 |0 |0 |0 |0 |0 |NULL |NULL |0 |0 |bdc178e6faaa4850badc0c60c7c80d40|
ROW |2443 |Azure MySQL: Storage utilization |900 |200 |0 |100 |NULL |1 |1 |0 |1 |0 |0 |0 |0 |0 |NULL |NULL |0 |0 |4210e6b4ed8744589dce88217e961a56|
+ROW |2444 |Process [{#NAME}]: Memory usage[{#NAME}] |900 |200 |0 |100 |NULL |1 |1 |0 |1 |0 |0 |0 |0 |0 |NULL |NULL |2 |0 |b8f5b539152445fdbadbfba92adad1bf|
TABLE |graphs
FIELDS|graphid|name |width|height|yaxismin|yaxismax|templateid|show_work_period|show_triggers|graphtype|show_legend|show_3d|percent_left|percent_right|ymin_type|ymax_type|ymin_itemid|ymax_itemid|flags|discover|uuid|
@@ -32522,3817 +32537,3819 @@ ROW |86694 |2237 |42249 |0 |0 |1A7C11|0 |2 |0 |
ROW |86695 |2237 |42257 |0 |1 |2774A4|0 |2 |0 |
ROW |86696 |2237 |42259 |0 |2 |F63100|0 |2 |0 |
ROW |86697 |2237 |42260 |0 |3 |A54F10|1 |2 |0 |
-ROW |138205 |1397 |32451 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138206 |1397 |32450 |5 |1 |2774A4|0 |2 |0 |
-ROW |138207 |1398 |32452 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138208 |1398 |32449 |5 |1 |2774A4|0 |2 |0 |
-ROW |138209 |1399 |32444 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138210 |1399 |32446 |5 |1 |2774A4|0 |2 |0 |
-ROW |138211 |1399 |32448 |5 |2 |F63100|0 |2 |0 |
-ROW |138212 |1400 |32460 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138213 |1401 |32458 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138214 |1401 |32457 |5 |1 |2774A4|0 |2 |0 |
-ROW |138215 |1402 |32461 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138216 |1402 |32456 |5 |1 |2774A4|0 |2 |0 |
-ROW |138217 |1172 |30918 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138218 |1172 |30919 |0 |1 |2774A4|0 |2 |0 |
-ROW |138219 |1172 |30920 |0 |2 |F63100|0 |2 |0 |
-ROW |138220 |1172 |30921 |2 |3 |A54F10|0 |2 |0 |
-ROW |138221 |1173 |30922 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138222 |835 |28744 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138223 |835 |28745 |0 |1 |2774A4|0 |2 |0 |
-ROW |138224 |1174 |30913 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138225 |1175 |30906 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138226 |1175 |30908 |0 |1 |2774A4|0 |2 |0 |
-ROW |138227 |1175 |30915 |0 |2 |F63100|0 |2 |0 |
-ROW |138228 |1175 |30897 |0 |3 |A54F10|0 |2 |0 |
-ROW |138229 |1175 |30901 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138230 |1175 |30899 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138231 |1175 |30907 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138232 |1175 |30905 |0 |7 |611F27|0 |2 |0 |
-ROW |138233 |1175 |30904 |0 |8 |F230E0|0 |2 |0 |
-ROW |138234 |1175 |30900 |0 |9 |FFAD40|0 |2 |0 |
-ROW |138235 |1175 |30898 |0 |10 |40CDFF|0 |2 |0 |
-ROW |138236 |1176 |30910 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138237 |1176 |30909 |0 |1 |2774A4|0 |2 |0 |
-ROW |138238 |836 |28798 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138239 |836 |28799 |0 |1 |2774A4|0 |2 |0 |
-ROW |138240 |836 |28800 |0 |2 |F63100|0 |2 |0 |
-ROW |138241 |836 |28801 |2 |3 |A54F10|0 |2 |0 |
-ROW |138242 |837 |28803 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138243 |838 |28793 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138244 |840 |28787 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138245 |840 |28784 |0 |1 |2774A4|0 |2 |0 |
-ROW |138246 |840 |28782 |0 |2 |F63100|0 |2 |0 |
-ROW |138247 |840 |28781 |0 |3 |A54F10|0 |2 |0 |
-ROW |138248 |840 |28780 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138249 |840 |28778 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138250 |840 |28786 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138251 |840 |28785 |0 |7 |611F27|0 |2 |0 |
-ROW |138252 |840 |28783 |0 |8 |F230E0|0 |2 |0 |
-ROW |138253 |840 |28779 |0 |9 |FFAD40|0 |2 |0 |
-ROW |138254 |840 |28796 |0 |10 |40CDFF|0 |2 |0 |
-ROW |138255 |839 |28789 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138256 |839 |28788 |0 |1 |2774A4|0 |2 |0 |
-ROW |138257 |1339 |32172 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138258 |1339 |32173 |0 |1 |2774A4|0 |2 |0 |
-ROW |138259 |1403 |32511 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138260 |1403 |32514 |0 |1 |2774A4|0 |2 |0 |
-ROW |138261 |1404 |32512 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138262 |1404 |32515 |0 |1 |2774A4|0 |2 |0 |
-ROW |138263 |1405 |32507 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138264 |1405 |32508 |0 |1 |2774A4|0 |2 |0 |
-ROW |138265 |1405 |32513 |0 |2 |F63100|0 |2 |0 |
-ROW |138266 |1343 |32135 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138267 |1343 |32142 |0 |1 |2774A4|0 |2 |0 |
-ROW |138268 |1344 |32167 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138269 |1344 |32136 |0 |1 |2774A4|0 |2 |0 |
-ROW |138270 |1345 |32141 |1 |0 |1A7C11|0 |2 |0 |
-ROW |138271 |1345 |32138 |1 |1 |2774A4|0 |2 |0 |
-ROW |138272 |1346 |32156 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138273 |1346 |32158 |0 |1 |2774A4|0 |2 |0 |
-ROW |138274 |1346 |32159 |0 |2 |F63100|0 |2 |0 |
-ROW |138275 |1346 |32154 |2 |3 |A54F10|0 |2 |0 |
-ROW |138276 |1346 |32155 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138277 |1346 |32146 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138278 |1347 |32150 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138279 |1347 |32151 |0 |1 |2774A4|0 |2 |0 |
-ROW |138280 |1347 |32152 |0 |2 |F63100|0 |2 |0 |
-ROW |138281 |1622 |35078 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138282 |1622 |35091 |0 |1 |2774A4|0 |2 |0 |
-ROW |138283 |1622 |35098 |0 |2 |F63100|0 |2 |0 |
-ROW |138284 |1622 |35100 |0 |3 |A54F10|0 |2 |0 |
-ROW |138285 |1622 |35099 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138286 |1623 |35090 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138287 |1623 |35101 |0 |1 |2774A4|0 |2 |0 |
-ROW |138288 |1624 |35097 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138289 |1624 |35096 |0 |1 |2774A4|0 |2 |0 |
-ROW |138290 |1624 |35095 |0 |2 |F63100|0 |2 |0 |
-ROW |138291 |1625 |35089 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138292 |1625 |35088 |0 |1 |2774A4|0 |2 |0 |
-ROW |138293 |1625 |35087 |0 |2 |F63100|0 |2 |0 |
-ROW |138294 |1625 |35086 |0 |3 |A54F10|0 |2 |0 |
-ROW |138295 |1625 |35085 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138296 |1626 |35079 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138297 |1626 |35082 |0 |1 |2774A4|0 |2 |0 |
-ROW |138298 |1627 |35080 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138299 |1627 |35102 |0 |1 |2774A4|0 |2 |0 |
-ROW |138300 |1628 |35093 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138301 |1628 |35092 |0 |1 |2774A4|0 |2 |0 |
-ROW |138302 |1628 |35081 |0 |2 |F63100|0 |2 |0 |
-ROW |138303 |1628 |35084 |0 |3 |A54F10|0 |2 |0 |
-ROW |138304 |1628 |35083 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138305 |2351 |43111 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138306 |2351 |43121 |0 |1 |2774A4|0 |2 |0 |
-ROW |138307 |2352 |43090 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138308 |2352 |43089 |2 |1 |2774A4|0 |2 |0 |
-ROW |138309 |2353 |43132 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138310 |2353 |43091 |0 |1 |2774A4|0 |2 |0 |
-ROW |138311 |2354 |43098 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138312 |2354 |43096 |0 |1 |2774A4|0 |2 |0 |
-ROW |138313 |2354 |43084 |0 |2 |F63100|0 |2 |0 |
-ROW |138314 |2354 |43093 |0 |3 |A54F10|0 |2 |0 |
-ROW |138315 |2354 |43094 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138316 |1121 |30606 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138317 |1121 |30590 |5 |1 |2774A4|0 |2 |0 |
-ROW |138318 |1121 |30582 |5 |2 |F63100|0 |2 |0 |
-ROW |138319 |1122 |30580 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138320 |1122 |30578 |5 |1 |2774A4|0 |2 |0 |
-ROW |138321 |1123 |30586 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138322 |1123 |30608 |2 |1 |2774A4|0 |2 |0 |
-ROW |138323 |1123 |30585 |2 |2 |F63100|0 |2 |0 |
-ROW |138324 |1123 |30589 |2 |3 |A54F10|0 |2 |0 |
-ROW |138325 |1123 |30584 |2 |4 |FC6EA3|0 |2 |0 |
-ROW |138326 |1123 |30588 |2 |5 |6C59DC|0 |2 |0 |
-ROW |138327 |1124 |30583 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138328 |1124 |30587 |2 |1 |2774A4|0 |2 |0 |
-ROW |138329 |1125 |30555 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138330 |1125 |30554 |2 |1 |2774A4|0 |2 |0 |
-ROW |138331 |1125 |30556 |2 |2 |F63100|0 |2 |0 |
-ROW |138332 |1125 |30557 |2 |3 |A54F10|0 |2 |0 |
-ROW |138333 |1126 |30565 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138334 |1127 |30567 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138335 |1127 |30568 |2 |1 |2774A4|0 |2 |0 |
-ROW |138336 |1128 |30536 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138337 |1129 |30566 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138338 |1129 |30549 |2 |1 |2774A4|0 |2 |0 |
-ROW |138339 |1129 |30553 |2 |2 |F63100|0 |2 |0 |
-ROW |138340 |1129 |30570 |2 |3 |A54F10|0 |2 |0 |
-ROW |138341 |1143 |30714 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138342 |1143 |30716 |0 |1 |2774A4|0 |2 |0 |
-ROW |138343 |1143 |30717 |0 |2 |F63100|0 |2 |0 |
-ROW |138344 |1143 |30715 |0 |3 |A54F10|0 |2 |0 |
-ROW |138345 |1144 |30753 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138346 |1144 |30738 |0 |1 |2774A4|0 |2 |0 |
-ROW |138347 |1145 |30718 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138348 |1145 |30737 |0 |1 |2774A4|0 |2 |0 |
-ROW |138349 |1145 |30727 |0 |2 |F63100|0 |2 |0 |
-ROW |138350 |1145 |30729 |0 |3 |A54F10|0 |2 |0 |
-ROW |138351 |1146 |30730 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138352 |1146 |30732 |0 |1 |2774A4|0 |2 |0 |
-ROW |138353 |1146 |30731 |0 |2 |F63100|0 |2 |0 |
-ROW |138354 |1146 |30733 |0 |3 |A54F10|0 |2 |0 |
-ROW |138355 |1147 |30734 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138356 |1147 |30736 |0 |1 |2774A4|0 |2 |0 |
-ROW |138357 |1147 |30735 |0 |2 |F63100|0 |2 |0 |
-ROW |138358 |1147 |30758 |0 |3 |A54F10|0 |2 |0 |
-ROW |138359 |1148 |30711 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138360 |1148 |30706 |0 |1 |2774A4|0 |2 |0 |
-ROW |138361 |1148 |30710 |0 |2 |F63100|0 |2 |0 |
-ROW |138362 |1148 |30712 |0 |3 |A54F10|0 |2 |0 |
-ROW |138363 |1148 |30702 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138364 |1148 |30707 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138365 |1148 |30704 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138366 |2341 |43058 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138367 |2341 |43059 |0 |1 |2774A4|0 |2 |0 |
-ROW |138368 |2341 |43052 |0 |2 |F63100|0 |2 |0 |
-ROW |138369 |2341 |43057 |0 |3 |A54F10|0 |2 |0 |
-ROW |138370 |2341 |43066 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138371 |2342 |43063 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138372 |2342 |43061 |0 |1 |2774A4|0 |2 |0 |
-ROW |138373 |2343 |43068 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138374 |2343 |43070 |0 |1 |2774A4|0 |2 |0 |
-ROW |138375 |2344 |43019 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138376 |2344 |43042 |0 |1 |2774A4|0 |2 |0 |
-ROW |138377 |2345 |43044 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138378 |2345 |43043 |0 |1 |2774A4|0 |2 |0 |
-ROW |138379 |2345 |43045 |0 |2 |F63100|0 |2 |0 |
-ROW |138380 |2345 |43034 |0 |3 |A54F10|0 |2 |0 |
-ROW |138381 |2346 |43023 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138382 |2346 |43025 |0 |1 |2774A4|0 |2 |0 |
-ROW |138383 |2347 |43040 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138384 |2347 |43041 |0 |1 |2774A4|0 |2 |0 |
-ROW |138385 |2347 |43039 |0 |2 |F63100|0 |2 |0 |
-ROW |138386 |2347 |43038 |0 |3 |A54F10|0 |2 |0 |
-ROW |138387 |2348 |43031 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138388 |2348 |43020 |0 |1 |2774A4|0 |2 |0 |
-ROW |138389 |2348 |43033 |0 |2 |F63100|0 |2 |0 |
-ROW |138390 |2349 |43036 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138391 |2349 |43035 |0 |1 |2774A4|0 |2 |0 |
-ROW |138392 |2349 |43037 |0 |2 |F63100|0 |2 |0 |
-ROW |138393 |2349 |43032 |0 |3 |A54F10|0 |2 |0 |
-ROW |138394 |2350 |43024 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138395 |2350 |43025 |0 |1 |2774A4|0 |2 |0 |
-ROW |138396 |2350 |43026 |0 |2 |F63100|0 |2 |0 |
-ROW |138397 |1177 |30927 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138398 |1177 |30944 |2 |1 |2774A4|0 |2 |0 |
-ROW |138399 |1178 |30935 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138400 |1178 |30942 |0 |1 |2774A4|0 |2 |0 |
-ROW |138401 |1179 |30949 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138402 |1179 |30950 |0 |1 |2774A4|0 |2 |0 |
-ROW |138403 |1179 |30951 |0 |2 |F63100|0 |2 |0 |
-ROW |138404 |1180 |30952 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138405 |1180 |30954 |0 |1 |2774A4|0 |2 |0 |
-ROW |138406 |1180 |30955 |0 |2 |F63100|0 |2 |0 |
-ROW |138407 |1181 |30936 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138408 |1181 |30940 |5 |1 |2774A4|0 |2 |0 |
-ROW |138409 |1182 |30930 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138410 |1182 |30929 |0 |1 |2774A4|0 |2 |0 |
-ROW |138411 |1182 |30928 |0 |2 |F63100|0 |2 |0 |
-ROW |138412 |1182 |30931 |2 |3 |A54F10|1 |2 |0 |
-ROW |138413 |1183 |30934 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138414 |1183 |30941 |0 |1 |2774A4|0 |2 |0 |
-ROW |138415 |1406 |32532 |0 |0 |1A7C11|1 |2 |0 |
-ROW |138416 |1406 |32535 |0 |1 |2774A4|1 |2 |0 |
-ROW |138417 |1406 |32533 |0 |2 |F63100|0 |2 |0 |
-ROW |138418 |1406 |32534 |0 |3 |A54F10|0 |2 |0 |
-ROW |138419 |1406 |32536 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138420 |1406 |32537 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138421 |1407 |32543 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138422 |1407 |32544 |0 |1 |2774A4|0 |2 |0 |
-ROW |138423 |1408 |32518 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138424 |1408 |32521 |0 |1 |2774A4|0 |2 |0 |
-ROW |138425 |1408 |32523 |0 |2 |F63100|0 |2 |0 |
-ROW |138426 |1408 |32524 |0 |3 |A54F10|0 |2 |0 |
-ROW |138427 |1409 |32562 |0 |0 |1A7C11|1 |2 |0 |
-ROW |138428 |1409 |32565 |0 |1 |2774A4|1 |2 |0 |
-ROW |138429 |1409 |32563 |0 |2 |F63100|0 |2 |0 |
-ROW |138430 |1409 |32564 |0 |3 |A54F10|0 |2 |0 |
-ROW |138431 |1409 |32566 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138432 |1409 |32567 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138433 |1410 |32573 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138434 |1410 |32574 |0 |1 |2774A4|0 |2 |0 |
-ROW |138435 |1411 |32548 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138436 |1411 |32551 |0 |1 |2774A4|0 |2 |0 |
-ROW |138437 |1411 |32553 |0 |2 |F63100|0 |2 |0 |
-ROW |138438 |1411 |32554 |0 |3 |A54F10|0 |2 |0 |
-ROW |138439 |2287 |42686 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138440 |2288 |42689 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138441 |2288 |42688 |0 |1 |2774A4|0 |2 |0 |
-ROW |138442 |2288 |42690 |0 |2 |F63100|0 |2 |0 |
-ROW |138443 |1250 |31527 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138444 |1250 |31529 |0 |1 |2774A4|0 |2 |0 |
-ROW |138445 |1250 |31499 |0 |2 |F63100|0 |2 |0 |
-ROW |138446 |1259 |31516 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138447 |1259 |31517 |0 |1 |2774A4|0 |2 |0 |
-ROW |138448 |1260 |31523 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138449 |1260 |31522 |0 |1 |2774A4|0 |2 |0 |
-ROW |138450 |1260 |31524 |0 |2 |F63100|0 |2 |0 |
-ROW |138451 |1412 |32601 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138452 |1412 |32602 |0 |1 |2774A4|0 |2 |0 |
-ROW |138453 |1412 |32603 |0 |2 |F63100|0 |2 |0 |
-ROW |138454 |1412 |32604 |0 |3 |A54F10|0 |2 |0 |
-ROW |138455 |1412 |32606 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138456 |1412 |32606 |2 |5 |6C59DC|0 |2 |0 |
-ROW |138457 |1413 |32608 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138458 |1413 |32610 |0 |1 |2774A4|0 |2 |0 |
-ROW |138459 |1413 |32611 |0 |2 |F63100|0 |2 |0 |
-ROW |138460 |1414 |32582 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138461 |1414 |32580 |2 |1 |2774A4|0 |2 |0 |
-ROW |138462 |1414 |32581 |2 |2 |F63100|0 |2 |0 |
-ROW |138463 |1414 |32597 |0 |3 |A54F10|1 |2 |0 |
-ROW |138464 |1414 |32599 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |138465 |1414 |32588 |0 |5 |6C59DC|1 |2 |0 |
-ROW |138466 |1415 |32583 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138467 |1415 |32584 |0 |1 |2774A4|0 |2 |0 |
-ROW |138468 |1415 |32585 |0 |2 |F63100|0 |2 |0 |
-ROW |138469 |1415 |32579 |2 |3 |A54F10|0 |2 |0 |
-ROW |138470 |1416 |32587 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138471 |1416 |32590 |0 |1 |2774A4|0 |2 |0 |
-ROW |138472 |1416 |32589 |0 |2 |F63100|0 |2 |0 |
-ROW |138473 |1417 |32673 |1 |0 |1A7C11|0 |2 |0 |
-ROW |138474 |1417 |32679 |1 |1 |2774A4|0 |2 |0 |
-ROW |138475 |1629 |35114 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138476 |1629 |35113 |5 |1 |2774A4|0 |2 |0 |
-ROW |138477 |1075 |30204 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138478 |1075 |30205 |0 |1 |2774A4|0 |2 |0 |
-ROW |138479 |1630 |35112 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138480 |1630 |35111 |0 |1 |2774A4|0 |2 |0 |
-ROW |138481 |1630 |35110 |0 |2 |F63100|0 |2 |0 |
-ROW |138482 |1630 |35108 |0 |3 |A54F10|0 |2 |0 |
-ROW |138483 |1630 |35105 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138484 |1076 |30209 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138485 |1076 |30208 |0 |1 |2774A4|0 |2 |0 |
-ROW |138486 |1077 |30206 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138487 |1077 |30207 |5 |1 |2774A4|0 |2 |0 |
-ROW |138488 |1078 |30216 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138489 |1078 |30215 |0 |1 |2774A4|0 |2 |0 |
-ROW |138490 |1079 |30210 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138491 |1079 |30211 |0 |1 |2774A4|0 |2 |0 |
-ROW |138492 |1079 |30212 |0 |2 |F63100|0 |2 |0 |
-ROW |138493 |1079 |30213 |0 |3 |A54F10|0 |2 |0 |
-ROW |138494 |1079 |30214 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138495 |1631 |35127 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138496 |1631 |35126 |5 |1 |2774A4|0 |2 |0 |
-ROW |138497 |1632 |35124 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138498 |1632 |35123 |0 |1 |2774A4|0 |2 |0 |
-ROW |138499 |1632 |35122 |0 |2 |F63100|0 |2 |0 |
-ROW |138500 |1632 |30222 |0 |3 |A54F10|0 |2 |0 |
-ROW |138501 |1632 |30223 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138502 |1080 |30226 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138503 |1080 |30225 |0 |1 |2774A4|0 |2 |0 |
-ROW |138504 |1633 |35139 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138505 |1633 |35138 |5 |1 |2774A4|0 |2 |0 |
-ROW |138506 |1081 |30247 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138507 |1081 |30248 |0 |1 |2774A4|0 |2 |0 |
-ROW |138508 |1634 |35137 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138509 |1634 |35136 |0 |1 |2774A4|0 |2 |0 |
-ROW |138510 |1634 |35135 |0 |2 |F63100|0 |2 |0 |
-ROW |138511 |1634 |35133 |0 |3 |A54F10|0 |2 |0 |
-ROW |138512 |1634 |35130 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138513 |1082 |30252 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138514 |1082 |30251 |0 |1 |2774A4|0 |2 |0 |
-ROW |138515 |1083 |30249 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138516 |1083 |30250 |5 |1 |2774A4|0 |2 |0 |
-ROW |138517 |1084 |30259 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138518 |1084 |30258 |0 |1 |2774A4|0 |2 |0 |
-ROW |138519 |1085 |30253 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138520 |1085 |30254 |0 |1 |2774A4|0 |2 |0 |
-ROW |138521 |1085 |30255 |0 |2 |F63100|0 |2 |0 |
-ROW |138522 |1085 |30256 |0 |3 |A54F10|0 |2 |0 |
-ROW |138523 |1085 |30257 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138524 |1635 |35152 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138525 |1635 |35151 |5 |1 |2774A4|0 |2 |0 |
-ROW |138526 |1636 |35149 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138527 |1636 |35148 |0 |1 |2774A4|0 |2 |0 |
-ROW |138528 |1636 |35147 |0 |2 |F63100|0 |2 |0 |
-ROW |138529 |1636 |30265 |0 |3 |A54F10|0 |2 |0 |
-ROW |138530 |1636 |30266 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138531 |1086 |30269 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138532 |1086 |30268 |0 |1 |2774A4|0 |2 |0 |
-ROW |138533 |1184 |30982 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138534 |1184 |30980 |5 |1 |2774A4|0 |2 |0 |
-ROW |138535 |1185 |30983 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138536 |1185 |30981 |0 |1 |2774A4|0 |2 |0 |
-ROW |138537 |1186 |30976 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138538 |1186 |30985 |0 |1 |2774A4|0 |2 |0 |
-ROW |138539 |1186 |30997 |0 |2 |F63100|0 |2 |0 |
-ROW |138540 |1186 |30970 |0 |3 |A54F10|0 |2 |0 |
-ROW |138541 |1186 |30973 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138542 |1186 |30995 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138543 |1186 |30998 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138544 |1186 |30978 |0 |7 |611F27|0 |2 |0 |
-ROW |138545 |1187 |31024 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138546 |1187 |31022 |5 |1 |2774A4|0 |2 |0 |
-ROW |138547 |1188 |31025 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138548 |1188 |31023 |0 |1 |2774A4|0 |2 |0 |
-ROW |138549 |1189 |31018 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138550 |1189 |31027 |0 |1 |2774A4|0 |2 |0 |
-ROW |138551 |1189 |31039 |0 |2 |F63100|0 |2 |0 |
-ROW |138552 |1189 |31012 |0 |3 |A54F10|0 |2 |0 |
-ROW |138553 |1189 |31015 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138554 |1189 |31037 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138555 |1189 |31040 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138556 |1189 |31020 |0 |7 |611F27|0 |2 |0 |
-ROW |138557 |1499 |33478 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138558 |1499 |33467 |0 |1 |2774A4|0 |2 |0 |
-ROW |138559 |1500 |33468 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138560 |1500 |33479 |0 |1 |2774A4|0 |2 |0 |
-ROW |138561 |1501 |33442 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138562 |1501 |33441 |0 |1 |2774A4|0 |2 |0 |
-ROW |138563 |1501 |33440 |0 |2 |F63100|0 |2 |0 |
-ROW |138564 |1502 |33423 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138565 |1502 |33419 |0 |1 |2774A4|0 |2 |0 |
-ROW |138566 |1502 |33422 |0 |2 |F63100|0 |2 |0 |
-ROW |138567 |1502 |33421 |0 |3 |A54F10|0 |2 |0 |
-ROW |138568 |1502 |33412 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138569 |1418 |32700 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138570 |1418 |32699 |0 |1 |2774A4|0 |2 |0 |
-ROW |138571 |1419 |32710 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138572 |1419 |32709 |0 |1 |2774A4|0 |2 |0 |
-ROW |138573 |1420 |32693 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138574 |1420 |32724 |0 |1 |2774A4|0 |2 |0 |
-ROW |138575 |1421 |32730 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138576 |1421 |32731 |0 |1 |2774A4|0 |2 |0 |
-ROW |138577 |1421 |32728 |0 |2 |F63100|0 |2 |0 |
-ROW |138578 |1421 |32729 |0 |3 |A54F10|0 |2 |0 |
-ROW |138579 |1422 |32705 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138580 |1422 |32706 |0 |1 |2774A4|0 |2 |0 |
-ROW |138581 |1423 |32702 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138582 |1423 |32703 |0 |1 |2774A4|0 |2 |0 |
-ROW |138583 |1424 |32708 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138584 |1424 |32722 |2 |1 |2774A4|0 |2 |0 |
-ROW |138585 |1424 |32695 |0 |2 |F63100|0 |2 |0 |
-ROW |138586 |1424 |32753 |0 |3 |A54F10|0 |2 |0 |
-ROW |138587 |1424 |32740 |2 |4 |FC6EA3|0 |2 |0 |
-ROW |138588 |1424 |32723 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138589 |1424 |32747 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138590 |1424 |32748 |2 |7 |611F27|0 |2 |0 |
-ROW |138591 |1424 |32749 |0 |8 |F230E0|0 |2 |0 |
-ROW |138592 |1424 |32750 |0 |9 |FFAD40|0 |2 |0 |
-ROW |138593 |1424 |32751 |2 |10 |40CDFF|0 |2 |0 |
-ROW |138594 |1424 |32752 |0 |11 |40FFA0|0 |2 |0 |
-ROW |138595 |1425 |32746 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138596 |1425 |32745 |2 |1 |2774A4|0 |2 |0 |
-ROW |138597 |1425 |32744 |0 |2 |F63100|0 |2 |0 |
-ROW |138598 |1425 |32743 |0 |3 |A54F10|0 |2 |0 |
-ROW |138599 |1425 |32742 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138600 |1426 |32720 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138601 |1426 |32721 |0 |1 |2774A4|0 |2 |0 |
-ROW |138602 |1426 |32719 |0 |2 |F63100|0 |2 |0 |
-ROW |138603 |1426 |32718 |0 |3 |A54F10|0 |2 |0 |
-ROW |138604 |2085 |39861 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138605 |2085 |39863 |0 |1 |2774A4|0 |2 |0 |
-ROW |138606 |2085 |39864 |0 |2 |F63100|0 |2 |0 |
-ROW |138607 |2085 |39862 |0 |3 |A54F10|0 |2 |0 |
-ROW |138608 |2086 |39849 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138609 |2086 |39833 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138610 |2086 |39848 |0 |1 |2774A4|0 |2 |0 |
-ROW |138611 |2086 |39832 |0 |1 |2774A4|0 |2 |0 |
-ROW |138612 |2086 |39847 |0 |2 |F63100|0 |2 |0 |
-ROW |138613 |2086 |39831 |0 |2 |F63100|0 |2 |0 |
-ROW |138614 |2086 |39846 |0 |3 |A54F10|0 |2 |0 |
-ROW |138615 |2086 |39850 |0 |3 |A54F10|0 |2 |0 |
-ROW |138616 |2086 |39841 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138617 |2087 |39900 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138618 |2088 |39901 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138619 |2089 |39892 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138620 |2089 |39893 |0 |1 |2774A4|0 |2 |0 |
-ROW |138621 |2089 |39890 |0 |2 |F63100|0 |2 |0 |
-ROW |138622 |2089 |39891 |0 |3 |A54F10|0 |2 |0 |
-ROW |138623 |2089 |39896 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138624 |2089 |39897 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138625 |2089 |39895 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138626 |2089 |39894 |0 |7 |611F27|0 |2 |0 |
-ROW |138627 |2090 |39888 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138628 |2090 |39887 |0 |1 |2774A4|0 |2 |0 |
-ROW |138629 |2091 |39880 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138630 |2091 |39879 |0 |1 |2774A4|0 |2 |0 |
-ROW |138631 |2091 |39878 |0 |2 |F63100|0 |2 |0 |
-ROW |138632 |2091 |39877 |0 |3 |A54F10|0 |2 |0 |
-ROW |138633 |2092 |39922 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138634 |2092 |39923 |0 |1 |2774A4|0 |2 |0 |
-ROW |138635 |2092 |39924 |0 |2 |F63100|0 |2 |0 |
-ROW |138636 |2092 |39921 |0 |3 |A54F10|0 |2 |0 |
-ROW |138637 |2093 |39966 |2 |0 |4CAF50|0 |2 |0 |
-ROW |138638 |2093 |39963 |2 |1 |AB47BC|0 |2 |0 |
-ROW |138639 |2093 |39969 |5 |2 |1E88E5|0 |4 |0 |
-ROW |138640 |2094 |40004 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138641 |2094 |40003 |0 |1 |2774A4|0 |2 |0 |
-ROW |138642 |2094 |40005 |0 |2 |F63100|0 |2 |0 |
-ROW |138643 |2094 |40006 |0 |3 |A54F10|0 |2 |0 |
-ROW |138644 |2289 |42693 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138645 |2289 |42692 |0 |1 |2774A4|0 |2 |0 |
-ROW |138646 |2289 |42694 |0 |2 |F63100|0 |2 |0 |
-ROW |138647 |2289 |42695 |0 |3 |A54F10|0 |2 |0 |
-ROW |138648 |2290 |42697 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138649 |2290 |42696 |0 |1 |2774A4|0 |2 |0 |
-ROW |138650 |2290 |42698 |0 |2 |F63100|0 |2 |0 |
-ROW |138651 |2290 |42699 |0 |3 |A54F10|0 |2 |0 |
-ROW |138652 |2096 |39994 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138653 |2096 |39993 |0 |1 |2774A4|0 |2 |0 |
-ROW |138654 |2097 |39986 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138655 |2097 |39988 |0 |1 |2774A4|0 |2 |0 |
-ROW |138656 |2097 |39990 |0 |2 |F63100|0 |2 |0 |
-ROW |138657 |2097 |39998 |0 |3 |A54F10|0 |2 |0 |
-ROW |138658 |2099 |39996 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138659 |2099 |39997 |0 |1 |2774A4|0 |2 |0 |
-ROW |138660 |2099 |39995 |0 |2 |F63100|0 |2 |0 |
-ROW |138661 |1130 |30613 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138662 |1130 |30635 |0 |1 |2774A4|0 |2 |0 |
-ROW |138663 |1130 |30625 |0 |2 |F63100|0 |2 |0 |
-ROW |138664 |1131 |30632 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138665 |1131 |30633 |5 |1 |2774A4|0 |2 |0 |
-ROW |138666 |1131 |30629 |5 |2 |F63100|0 |2 |0 |
-ROW |138667 |1132 |30630 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138668 |1132 |30628 |2 |1 |2774A4|0 |2 |0 |
-ROW |138669 |1132 |30631 |2 |2 |F63100|0 |2 |0 |
-ROW |138670 |1133 |30619 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138671 |1133 |30618 |0 |1 |2774A4|0 |2 |0 |
-ROW |138672 |1134 |30623 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138673 |1134 |30622 |5 |1 |2774A4|0 |2 |0 |
-ROW |138674 |1135 |30615 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138675 |841 |28813 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138676 |841 |28811 |0 |1 |2774A4|0 |2 |0 |
-ROW |138677 |841 |28812 |0 |2 |F63100|0 |2 |0 |
-ROW |138678 |841 |28814 |0 |3 |A54F10|0 |2 |0 |
-ROW |138679 |842 |28817 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138680 |842 |28815 |0 |1 |2774A4|0 |2 |0 |
-ROW |138681 |842 |28816 |0 |2 |F63100|0 |2 |0 |
-ROW |138682 |844 |28808 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138683 |844 |28807 |0 |1 |2774A4|0 |2 |0 |
-ROW |138684 |843 |28818 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138685 |845 |28829 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138686 |845 |28831 |0 |1 |2774A4|0 |2 |0 |
-ROW |138687 |845 |28832 |0 |2 |F63100|0 |2 |0 |
-ROW |138688 |845 |28830 |0 |3 |A54F10|0 |2 |0 |
-ROW |138689 |846 |28826 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138690 |846 |28828 |0 |1 |2774A4|0 |2 |0 |
-ROW |138691 |846 |28827 |0 |2 |F63100|0 |2 |0 |
-ROW |138692 |847 |28825 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138693 |1637 |35187 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138694 |1638 |35189 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138695 |1638 |35188 |5 |1 |2774A4|0 |2 |0 |
-ROW |138696 |1638 |35190 |5 |2 |F63100|0 |2 |0 |
-ROW |138697 |1638 |35191 |5 |3 |A54F10|0 |2 |0 |
-ROW |138698 |1638 |35192 |5 |4 |FC6EA3|0 |2 |0 |
-ROW |138699 |1639 |35198 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138700 |1640 |35200 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138701 |1640 |35199 |5 |1 |2774A4|0 |2 |0 |
-ROW |138702 |1640 |35201 |5 |2 |F63100|0 |2 |0 |
-ROW |138703 |1640 |35202 |5 |3 |A54F10|0 |2 |0 |
-ROW |138704 |1640 |35203 |5 |4 |FC6EA3|0 |2 |0 |
-ROW |138705 |1641 |35221 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138706 |1641 |35220 |5 |1 |2774A4|0 |2 |0 |
-ROW |138707 |1641 |35219 |5 |2 |F63100|0 |2 |0 |
-ROW |138708 |1642 |35214 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138709 |1642 |35216 |5 |1 |2774A4|0 |2 |0 |
-ROW |138710 |1642 |35207 |5 |2 |F63100|0 |2 |0 |
-ROW |138711 |1642 |35213 |5 |3 |A54F10|0 |2 |0 |
-ROW |138712 |1642 |35212 |5 |4 |FC6EA3|0 |2 |0 |
-ROW |138713 |1643 |35228 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138714 |1643 |35229 |5 |1 |2774A4|0 |2 |0 |
-ROW |138715 |1643 |35227 |5 |2 |F63100|0 |2 |0 |
-ROW |138716 |1644 |35231 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138717 |1644 |35230 |5 |1 |2774A4|0 |2 |0 |
-ROW |138718 |1644 |35235 |5 |2 |F63100|0 |2 |0 |
-ROW |138719 |1644 |35233 |5 |3 |A54F10|0 |2 |0 |
-ROW |138720 |1644 |35232 |5 |4 |FC6EA3|0 |2 |0 |
-ROW |138721 |1644 |35234 |5 |5 |6C59DC|0 |2 |0 |
-ROW |138722 |1644 |35236 |5 |6 |AC8C14|0 |2 |0 |
-ROW |138723 |1644 |35237 |5 |7 |611F27|0 |2 |0 |
-ROW |138724 |1645 |35243 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138725 |1645 |35244 |5 |1 |2774A4|0 |2 |0 |
-ROW |138726 |1645 |35245 |5 |2 |F63100|0 |2 |0 |
-ROW |138727 |1646 |35252 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138728 |1646 |35253 |5 |1 |2774A4|0 |2 |0 |
-ROW |138729 |1646 |35254 |5 |2 |F63100|0 |2 |0 |
-ROW |138730 |1647 |35172 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138731 |1647 |35168 |5 |1 |2774A4|0 |2 |0 |
-ROW |138732 |1647 |35164 |5 |2 |F63100|0 |2 |0 |
-ROW |138733 |1647 |35163 |5 |3 |A54F10|0 |2 |0 |
-ROW |138734 |1648 |35170 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138735 |1649 |35167 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138736 |1649 |35166 |5 |1 |2774A4|0 |2 |0 |
-ROW |138737 |1649 |35165 |5 |2 |F63100|0 |2 |0 |
-ROW |138738 |1650 |35176 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138739 |2291 |42731 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138740 |2292 |42732 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138741 |2293 |42733 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138742 |2294 |42734 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138743 |2406 |43586 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138744 |2406 |43566 |0 |1 |F63100|0 |2 |0 |
-ROW |138745 |2406 |43584 |0 |2 |2774A4|0 |2 |0 |
-ROW |138746 |2406 |43590 |0 |3 |A54F10|0 |2 |0 |
-ROW |138747 |2406 |43585 |0 |4 |6C59DC|1 |2 |0 |
-ROW |138748 |2406 |43579 |0 |5 |FC6EA3|1 |2 |0 |
-ROW |138749 |2406 |43583 |0 |6 |AC8C14|1 |2 |0 |
-ROW |138750 |2406 |43589 |0 |7 |611F27|1 |2 |0 |
-ROW |138751 |2407 |43582 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138752 |2407 |43571 |2 |1 |2774A4|0 |2 |0 |
-ROW |138753 |2407 |43576 |0 |2 |F63100|1 |2 |0 |
-ROW |138754 |2407 |43587 |0 |3 |A54F10|1 |2 |0 |
-ROW |138755 |2407 |43577 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |138756 |2407 |43588 |0 |5 |6C59DC|1 |2 |0 |
-ROW |138757 |2408 |43575 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138758 |2408 |43581 |0 |1 |F63100|0 |2 |0 |
-ROW |138759 |2408 |43573 |0 |2 |2774A4|0 |2 |0 |
-ROW |138760 |2408 |43578 |0 |3 |A54F10|0 |2 |0 |
-ROW |138761 |2408 |43574 |0 |4 |6C59DC|1 |2 |0 |
-ROW |138762 |2408 |43580 |0 |5 |FC6EA3|1 |2 |0 |
-ROW |138763 |2408 |43572 |0 |6 |AC8C14|1 |2 |0 |
-ROW |138764 |2408 |43567 |0 |7 |611F27|1 |2 |0 |
-ROW |138765 |2409 |43560 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138766 |2409 |43562 |0 |1 |2774A4|0 |2 |0 |
-ROW |138767 |2409 |43561 |0 |2 |F63100|0 |2 |0 |
-ROW |138768 |2409 |43557 |0 |3 |A54F10|0 |2 |0 |
-ROW |138769 |2409 |43558 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138770 |2409 |43559 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138771 |2102 |40167 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138772 |2102 |40147 |0 |1 |F63100|0 |2 |0 |
-ROW |138773 |2102 |40165 |0 |2 |2774A4|0 |2 |0 |
-ROW |138774 |2102 |40171 |0 |3 |A54F10|0 |2 |0 |
-ROW |138775 |2102 |40166 |0 |4 |6C59DC|1 |2 |0 |
-ROW |138776 |2102 |40160 |0 |5 |FC6EA3|1 |2 |0 |
-ROW |138777 |2102 |40164 |0 |6 |AC8C14|1 |2 |0 |
-ROW |138778 |2102 |40170 |0 |7 |611F27|1 |2 |0 |
-ROW |138779 |2103 |40163 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138780 |2103 |40152 |2 |1 |2774A4|0 |2 |0 |
-ROW |138781 |2103 |40157 |0 |2 |F63100|1 |2 |0 |
-ROW |138782 |2103 |40168 |0 |3 |A54F10|1 |2 |0 |
-ROW |138783 |2103 |40158 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |138784 |2103 |40169 |0 |5 |6C59DC|1 |2 |0 |
-ROW |138785 |2104 |40156 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138786 |2104 |40162 |0 |1 |F63100|0 |2 |0 |
-ROW |138787 |2104 |40154 |0 |2 |2774A4|0 |2 |0 |
-ROW |138788 |2104 |40159 |0 |3 |A54F10|0 |2 |0 |
-ROW |138789 |2104 |40155 |0 |4 |6C59DC|1 |2 |0 |
-ROW |138790 |2104 |40161 |0 |5 |FC6EA3|1 |2 |0 |
-ROW |138791 |2104 |40153 |0 |6 |AC8C14|1 |2 |0 |
-ROW |138792 |2104 |40148 |0 |7 |611F27|1 |2 |0 |
-ROW |138793 |2110 |40124 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138794 |2110 |40122 |0 |1 |2774A4|0 |2 |0 |
-ROW |138795 |2110 |40123 |0 |2 |F63100|0 |2 |0 |
-ROW |138796 |2110 |40126 |0 |3 |A54F10|0 |2 |0 |
-ROW |138797 |2110 |40117 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138798 |2110 |40125 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138799 |1262 |31592 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138800 |1262 |31584 |0 |1 |2774A4|0 |2 |0 |
-ROW |138801 |1262 |31582 |0 |2 |F63100|0 |2 |0 |
-ROW |138802 |1262 |31585 |0 |3 |A54F10|0 |2 |0 |
-ROW |138803 |1263 |31591 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138804 |1263 |31583 |0 |1 |2774A4|0 |2 |0 |
-ROW |138805 |1263 |31590 |0 |2 |F63100|0 |2 |0 |
-ROW |138806 |1264 |31602 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138807 |1264 |31597 |0 |1 |2774A4|0 |2 |0 |
-ROW |138808 |1264 |31601 |0 |2 |F63100|0 |2 |0 |
-ROW |138809 |1264 |31604 |0 |3 |A54F10|0 |2 |0 |
-ROW |138810 |1265 |31609 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138811 |1265 |31610 |0 |1 |2774A4|0 |2 |0 |
-ROW |138812 |1265 |31608 |0 |2 |F63100|0 |2 |0 |
-ROW |138813 |2295 |42752 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138814 |2296 |42754 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138815 |2296 |42753 |5 |1 |2774A4|0 |2 |0 |
-ROW |138816 |2297 |42756 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138817 |2297 |42755 |5 |1 |2774A4|0 |2 |0 |
-ROW |138818 |2298 |42757 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138819 |2298 |42758 |5 |1 |2774A4|0 |2 |0 |
-ROW |138820 |2299 |42761 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138821 |2299 |42769 |5 |1 |2774A4|0 |2 |0 |
-ROW |138822 |2299 |42776 |5 |2 |F63100|0 |2 |0 |
-ROW |138823 |2300 |42773 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138824 |2300 |42774 |5 |1 |2774A4|0 |2 |0 |
-ROW |138825 |2301 |42772 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138826 |2301 |42771 |5 |1 |2774A4|0 |2 |0 |
-ROW |138827 |2302 |42767 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138828 |2302 |42762 |5 |1 |2774A4|0 |2 |0 |
-ROW |138829 |2303 |42765 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138830 |2303 |42766 |5 |1 |2774A4|0 |2 |0 |
-ROW |138831 |2304 |42779 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138832 |2305 |42781 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138833 |2305 |42780 |5 |1 |2774A4|0 |2 |0 |
-ROW |138834 |2306 |42783 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138835 |2306 |42782 |5 |1 |2774A4|0 |2 |0 |
-ROW |138836 |2355 |42784 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138837 |2355 |42785 |5 |1 |2774A4|0 |2 |0 |
-ROW |138838 |2308 |42789 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138839 |2308 |42790 |5 |1 |2774A4|0 |2 |0 |
-ROW |138840 |1001 |29729 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138841 |1001 |29728 |0 |1 |2774A4|0 |2 |0 |
-ROW |138842 |1001 |29727 |0 |2 |F63100|0 |2 |0 |
-ROW |138843 |1001 |29725 |0 |3 |A54F10|0 |2 |0 |
-ROW |138844 |1001 |29723 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138845 |1001 |29733 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138846 |1001 |29737 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138847 |1001 |29731 |0 |7 |611F27|0 |2 |0 |
-ROW |138848 |1000 |29720 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138849 |1000 |29730 |0 |1 |2774A4|0 |2 |0 |
-ROW |138850 |1000 |29721 |0 |2 |F63100|0 |2 |0 |
-ROW |138851 |1000 |29726 |0 |3 |A54F10|0 |2 |0 |
-ROW |138852 |1000 |29724 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138853 |1000 |29734 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138854 |1000 |29722 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138855 |1000 |29732 |0 |7 |611F27|0 |2 |0 |
-ROW |138856 |1027 |30022 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138857 |1027 |30021 |0 |1 |2774A4|0 |2 |0 |
-ROW |138858 |1027 |30019 |0 |2 |F63100|0 |2 |0 |
-ROW |138859 |1008 |29698 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138860 |1008 |29700 |2 |1 |FF0000|0 |2 |0 |
-ROW |138861 |1007 |29691 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138862 |1013 |29657 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138863 |1013 |29658 |0 |1 |2774A4|0 |2 |0 |
-ROW |138864 |1009 |29687 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138865 |1009 |29694 |2 |1 |FF0000|0 |2 |0 |
-ROW |138866 |1029 |30017 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138867 |1029 |30016 |0 |1 |2774A4|0 |2 |0 |
-ROW |138868 |1029 |30015 |0 |2 |F63100|0 |2 |0 |
-ROW |138869 |1031 |30007 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138870 |1031 |30013 |0 |1 |2774A4|0 |2 |0 |
-ROW |138871 |1031 |30011 |0 |2 |F63100|0 |2 |0 |
-ROW |138872 |1031 |30009 |0 |3 |A54F10|0 |2 |0 |
-ROW |138873 |1031 |30005 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138874 |1031 |30003 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138875 |1031 |30023 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138876 |1031 |30001 |0 |7 |611F27|0 |2 |0 |
-ROW |138877 |1030 |30008 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138878 |1030 |30014 |0 |1 |2774A4|0 |2 |0 |
-ROW |138879 |1030 |30012 |0 |2 |F63100|0 |2 |0 |
-ROW |138880 |1030 |30010 |0 |3 |A54F10|0 |2 |0 |
-ROW |138881 |1030 |30006 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138882 |1030 |30004 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138883 |1030 |30000 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138884 |1030 |30002 |0 |7 |611F27|0 |2 |0 |
-ROW |138885 |1011 |29695 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138886 |1028 |30020 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138887 |1010 |29701 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138888 |1010 |29697 |0 |1 |2774A4|0 |2 |0 |
-ROW |138889 |1012 |29692 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138890 |1015 |29812 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138891 |1015 |29811 |0 |1 |2774A4|0 |2 |0 |
-ROW |138892 |1015 |29810 |0 |2 |F63100|0 |2 |0 |
-ROW |138893 |1015 |29808 |0 |3 |A54F10|0 |2 |0 |
-ROW |138894 |1015 |29806 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138895 |1015 |29816 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138896 |1015 |29820 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138897 |1015 |29814 |0 |7 |611F27|0 |2 |0 |
-ROW |138898 |1014 |29803 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138899 |1014 |29813 |0 |1 |2774A4|0 |2 |0 |
-ROW |138900 |1014 |29804 |0 |2 |F63100|0 |2 |0 |
-ROW |138901 |1014 |29809 |0 |3 |A54F10|0 |2 |0 |
-ROW |138902 |1014 |29807 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138903 |1014 |29817 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138904 |1014 |29805 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138905 |1014 |29815 |0 |7 |611F27|0 |2 |0 |
-ROW |138906 |1016 |29768 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138907 |1016 |29767 |0 |1 |2774A4|0 |2 |0 |
-ROW |138908 |1016 |29765 |0 |2 |F63100|0 |2 |0 |
-ROW |138909 |1022 |29782 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138910 |1022 |29781 |2 |1 |FF0000|0 |2 |0 |
-ROW |138911 |1021 |29783 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138912 |1023 |29780 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138913 |1023 |29784 |2 |1 |FF0000|0 |2 |0 |
-ROW |138914 |1018 |29763 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138915 |1018 |29762 |0 |1 |2774A4|0 |2 |0 |
-ROW |138916 |1018 |29761 |0 |2 |F63100|0 |2 |0 |
-ROW |138917 |1020 |29753 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138918 |1020 |29759 |0 |1 |2774A4|0 |2 |0 |
-ROW |138919 |1020 |29757 |0 |2 |F63100|0 |2 |0 |
-ROW |138920 |1020 |29755 |0 |3 |A54F10|0 |2 |0 |
-ROW |138921 |1020 |29751 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138922 |1020 |29749 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138923 |1020 |29769 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138924 |1020 |29747 |0 |7 |611F27|0 |2 |0 |
-ROW |138925 |1019 |29754 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138926 |1019 |29760 |0 |1 |2774A4|0 |2 |0 |
-ROW |138927 |1019 |29758 |0 |2 |F63100|0 |2 |0 |
-ROW |138928 |1019 |29756 |0 |3 |A54F10|0 |2 |0 |
-ROW |138929 |1019 |29752 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138930 |1019 |29750 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138931 |1019 |29746 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138932 |1019 |29748 |0 |7 |611F27|0 |2 |0 |
-ROW |138933 |1025 |29775 |2 |0 |1A7C11|0 |2 |0 |
-ROW |138934 |1017 |29766 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138935 |1024 |29776 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138936 |1024 |29777 |0 |1 |2774A4|0 |2 |0 |
-ROW |138937 |1026 |29772 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138938 |1356 |32276 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138939 |1356 |32275 |0 |1 |2774A4|0 |2 |0 |
-ROW |138940 |1357 |32281 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138941 |1357 |32267 |0 |1 |2774A4|0 |2 |0 |
-ROW |138942 |1357 |32279 |0 |2 |F63100|0 |2 |0 |
-ROW |138943 |1358 |32268 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138944 |1358 |32274 |0 |1 |2774A4|0 |2 |0 |
-ROW |138945 |1358 |32271 |0 |2 |F63100|0 |2 |0 |
-ROW |138946 |1359 |32288 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138947 |1359 |32291 |0 |1 |2774A4|0 |2 |0 |
-ROW |138948 |1360 |32247 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138949 |1360 |32245 |0 |1 |2774A4|0 |2 |0 |
-ROW |138950 |1360 |32246 |0 |2 |F63100|0 |2 |0 |
-ROW |138951 |1361 |32248 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138952 |1361 |32249 |0 |1 |2774A4|0 |2 |0 |
-ROW |138953 |1361 |32250 |0 |2 |F63100|0 |2 |0 |
-ROW |138954 |1362 |32240 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138955 |1362 |32273 |0 |1 |2774A4|0 |2 |0 |
-ROW |138956 |1363 |32282 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138957 |1363 |32283 |0 |1 |2774A4|0 |2 |0 |
-ROW |138958 |1363 |32289 |0 |2 |F63100|0 |2 |0 |
-ROW |138959 |1363 |32290 |0 |3 |A54F10|0 |2 |0 |
-ROW |138960 |1363 |32286 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138961 |1363 |32287 |0 |5 |6C59DC|0 |2 |0 |
-ROW |138962 |1363 |32241 |0 |6 |AC8C14|0 |2 |0 |
-ROW |138963 |1363 |32242 |0 |7 |611F27|0 |2 |0 |
-ROW |138964 |1363 |32243 |0 |8 |F230E0|0 |2 |0 |
-ROW |138965 |1363 |32244 |0 |9 |FFAD40|0 |2 |0 |
-ROW |138966 |1363 |32277 |0 |10 |40CDFF|0 |2 |0 |
-ROW |138967 |1363 |32278 |0 |11 |40FFA0|0 |2 |0 |
-ROW |138968 |1427 |32768 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138969 |1427 |32767 |5 |1 |2774A4|0 |2 |0 |
-ROW |138970 |1428 |32774 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138971 |1428 |32772 |5 |1 |2774A4|0 |2 |0 |
-ROW |138972 |1428 |32775 |5 |2 |F63100|0 |2 |0 |
-ROW |138973 |1428 |32773 |5 |3 |A54F10|0 |2 |0 |
-ROW |138974 |1429 |32779 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138975 |1429 |32777 |5 |1 |2774A4|0 |2 |0 |
-ROW |138976 |1429 |32778 |5 |2 |F63100|0 |2 |0 |
-ROW |138977 |1806 |36785 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138978 |1806 |36786 |0 |1 |2774A4|0 |2 |0 |
-ROW |138979 |1806 |36787 |0 |2 |F63100|0 |2 |0 |
-ROW |138980 |2309 |42845 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138981 |2309 |42846 |0 |1 |2774A4|0 |2 |0 |
-ROW |138982 |2309 |42844 |0 |2 |F63100|0 |2 |0 |
-ROW |138983 |2309 |42843 |0 |3 |A54F10|0 |2 |0 |
-ROW |138984 |2309 |42842 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |138985 |2310 |42876 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138986 |2311 |42849 |5 |0 |1A7C11|0 |2 |0 |
-ROW |138987 |2311 |42852 |2 |1 |2774A4|0 |2 |0 |
-ROW |138988 |2311 |42851 |0 |2 |F63100|1 |2 |0 |
-ROW |138989 |2311 |42848 |0 |3 |A54F10|1 |2 |0 |
-ROW |138990 |2311 |42850 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |138991 |2311 |42847 |0 |5 |6C59DC|1 |2 |0 |
-ROW |138992 |2312 |42859 |0 |0 |969696|0 |9 |2 |
-ROW |138993 |2312 |42860 |0 |1 |C80000|0 |9 |0 |
-ROW |138994 |2313 |42864 |0 |0 |1A7C11|0 |2 |0 |
-ROW |138995 |2313 |42868 |5 |1 |2774A4|0 |2 |0 |
-ROW |138996 |2314 |42866 |0 |0 |969696|0 |9 |2 |
-ROW |138997 |2314 |42867 |0 |1 |C80000|0 |9 |0 |
-ROW |138998 |2315 |42871 |0 |0 |969696|0 |9 |2 |
-ROW |138999 |2315 |42872 |0 |1 |C80000|0 |9 |0 |
-ROW |139000 |2316 |42873 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139001 |2316 |42875 |5 |1 |2774A4|0 |2 |0 |
-ROW |139002 |2317 |42824 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139003 |2317 |42811 |0 |1 |2774A4|0 |2 |0 |
-ROW |139004 |2318 |42822 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139005 |2318 |42817 |0 |1 |2774A4|0 |2 |0 |
-ROW |139006 |2319 |42809 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139007 |2319 |42805 |5 |1 |2774A4|0 |2 |0 |
-ROW |139008 |2320 |42810 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139009 |2321 |42827 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139010 |2321 |42829 |0 |1 |2774A4|0 |2 |0 |
-ROW |139011 |2322 |42818 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139012 |2322 |42819 |0 |1 |2774A4|0 |2 |0 |
-ROW |139013 |2322 |42820 |0 |2 |F63100|0 |2 |0 |
-ROW |139014 |2322 |42821 |0 |3 |A54F10|1 |2 |0 |
-ROW |139015 |1430 |32837 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139016 |1430 |32836 |2 |1 |2774A4|0 |2 |0 |
-ROW |139017 |1430 |32835 |2 |2 |F63100|0 |2 |0 |
-ROW |139018 |1431 |32856 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139019 |1432 |32828 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139020 |1433 |32847 |5 |0 |34bdeb|0 |2 |0 |
-ROW |139021 |1434 |32797 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139022 |1434 |32796 |5 |1 |2774A4|0 |2 |0 |
-ROW |139023 |1434 |32801 |2 |2 |F63100|0 |2 |0 |
-ROW |139024 |1435 |32834 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139025 |1436 |32819 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139026 |1437 |32826 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139027 |1614 |34976 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139028 |1614 |34975 |0 |1 |2774A4|0 |2 |0 |
-ROW |139029 |1614 |34978 |0 |2 |F63100|0 |2 |0 |
-ROW |139030 |1614 |34979 |0 |3 |A54F10|0 |2 |0 |
-ROW |139031 |1614 |34980 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139032 |1615 |34982 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139033 |1615 |34997 |0 |1 |2774A4|0 |2 |0 |
-ROW |139034 |1615 |35001 |0 |2 |F63100|0 |2 |0 |
-ROW |139035 |1615 |35000 |0 |3 |A54F10|0 |2 |0 |
-ROW |139036 |1615 |34998 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139037 |1615 |34996 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139038 |1616 |35015 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139039 |1616 |35014 |0 |1 |2774A4|0 |2 |0 |
-ROW |139040 |1617 |35012 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139041 |1617 |35013 |0 |1 |2774A4|0 |2 |0 |
-ROW |139042 |1618 |34951 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139043 |1618 |34952 |0 |1 |2774A4|0 |2 |0 |
-ROW |139044 |1618 |34953 |0 |2 |F63100|0 |2 |0 |
-ROW |139045 |1618 |34954 |0 |3 |A54F10|0 |2 |0 |
-ROW |139046 |1618 |34956 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139047 |1618 |34950 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139048 |1618 |34957 |0 |6 |AC8C14|0 |2 |0 |
-ROW |139049 |1618 |34959 |0 |7 |611F27|0 |2 |0 |
-ROW |139050 |1618 |34965 |0 |8 |F230E0|0 |2 |0 |
-ROW |139051 |529 |23357 |0 |0 |DD0000|0 |2 |0 |
-ROW |139052 |529 |23341 |0 |1 |00DDDD|0 |2 |0 |
-ROW |139053 |529 |23342 |0 |2 |3333FF|0 |2 |0 |
-ROW |139054 |529 |28251 |0 |3 |00FF00|0 |2 |0 |
-ROW |139055 |530 |23345 |0 |0 |990099|0 |2 |0 |
-ROW |139056 |530 |23348 |0 |1 |990000|0 |2 |0 |
-ROW |139057 |530 |23355 |0 |2 |0000EE|0 |2 |0 |
-ROW |139058 |530 |23352 |0 |3 |FF33FF|0 |2 |0 |
-ROW |139059 |530 |23356 |0 |4 |007700|0 |2 |0 |
-ROW |139060 |530 |23354 |0 |5 |003300|0 |2 |0 |
-ROW |139061 |530 |23346 |0 |6 |33FFFF|0 |2 |0 |
-ROW |139062 |530 |23349 |0 |7 |DD0000|0 |2 |0 |
-ROW |139063 |530 |23344 |0 |8 |000099|0 |2 |0 |
-ROW |139064 |530 |28250 |0 |9 |00FF00|0 |2 |0 |
-ROW |139065 |530 |33019 |0 |10 |5A2B57|0 |2 |0 |
-ROW |139066 |530 |39826 |0 |11 |9FA8DA|0 |2 |0 |
-ROW |139067 |531 |23353 |0 |0 |FFAA00|0 |2 |0 |
-ROW |139068 |531 |23347 |0 |1 |990099|0 |2 |0 |
-ROW |139069 |531 |23350 |0 |2 |EE0000|0 |2 |0 |
-ROW |139070 |531 |23343 |0 |3 |FF66FF|0 |2 |0 |
-ROW |139071 |531 |23360 |0 |4 |00EE00|0 |2 |0 |
-ROW |139072 |531 |25369 |0 |5 |009999|0 |2 |0 |
-ROW |139073 |531 |25368 |0 |6 |BBBB00|0 |2 |0 |
-ROW |139074 |531 |28618 |0 |7 |990000|0 |2 |0 |
-ROW |139075 |531 |28619 |0 |8 |008800|0 |2 |0 |
-ROW |139076 |531 |33018 |0 |9 |2B5429|0 |2 |0 |
-ROW |139077 |807 |28617 |0 |0 |008800|0 |2 |0 |
-ROW |139078 |532 |23340 |5 |0 |00C800|0 |2 |0 |
-ROW |139079 |532 |23358 |0 |1 |C80000|0 |2 |0 |
-ROW |139080 |803 |28599 |0 |0 |DD0000|0 |2 |0 |
-ROW |139081 |803 |28596 |0 |1 |00DDDD|0 |2 |0 |
-ROW |139082 |803 |28597 |0 |2 |3333FF|0 |2 |0 |
-ROW |139083 |803 |28598 |0 |3 |00FF00|0 |2 |0 |
-ROW |139084 |804 |28602 |0 |0 |990099|0 |2 |0 |
-ROW |139085 |804 |28606 |0 |1 |990000|0 |2 |0 |
-ROW |139086 |804 |28608 |0 |2 |0000EE|0 |2 |0 |
-ROW |139087 |804 |28615 |0 |3 |FF33FF|0 |2 |0 |
-ROW |139088 |804 |28610 |0 |4 |007700|0 |2 |0 |
-ROW |139089 |804 |28611 |0 |5 |003300|0 |2 |0 |
-ROW |139090 |804 |28616 |0 |6 |33FFFF|0 |2 |0 |
-ROW |139091 |804 |28607 |0 |7 |DD0000|0 |2 |0 |
-ROW |139092 |804 |28604 |0 |8 |000099|0 |2 |0 |
-ROW |139093 |804 |28588 |0 |9 |00FF00|0 |2 |0 |
-ROW |139094 |804 |33013 |0 |10 |5A2B57|0 |2 |0 |
-ROW |139095 |804 |39825 |0 |11 |9FA8DA|0 |2 |0 |
-ROW |139096 |805 |28612 |0 |0 |FFAA00|0 |2 |0 |
-ROW |139097 |805 |28600 |0 |1 |990099|0 |2 |0 |
-ROW |139098 |805 |28613 |0 |2 |EE0000|0 |2 |0 |
-ROW |139099 |805 |28605 |0 |3 |FF66FF|0 |2 |0 |
-ROW |139100 |805 |28601 |0 |4 |00EE00|0 |2 |0 |
-ROW |139101 |805 |28603 |0 |5 |009999|0 |2 |0 |
-ROW |139102 |805 |28609 |0 |6 |BBBB00|0 |2 |0 |
-ROW |139103 |805 |40188 |0 |7 |990000|0 |2 |0 |
-ROW |139104 |805 |40189 |0 |8 |008800|0 |2 |0 |
-ROW |139105 |805 |33012 |0 |9 |2B5429|0 |2 |0 |
-ROW |139106 |2113 |40187 |0 |0 |008800|0 |2 |0 |
-ROW |139107 |806 |28595 |5 |0 |00C800|0 |2 |0 |
-ROW |139108 |806 |28586 |0 |1 |C80000|0 |2 |0 |
-ROW |139109 |1445 |22404 |0 |0 |990099|0 |2 |0 |
-ROW |139110 |1445 |22399 |0 |1 |990000|0 |2 |0 |
-ROW |139111 |1445 |22416 |0 |2 |0000EE|0 |2 |0 |
-ROW |139112 |1445 |25366 |0 |3 |FF33FF|0 |2 |0 |
-ROW |139113 |1445 |22418 |0 |4 |009600|0 |2 |0 |
-ROW |139114 |1445 |22402 |0 |5 |003300|0 |2 |0 |
-ROW |139115 |1445 |22400 |0 |6 |33FFFF|0 |2 |0 |
-ROW |139116 |1445 |22689 |0 |7 |DD0000|0 |2 |0 |
-ROW |139117 |1445 |23171 |0 |8 |000099|0 |2 |0 |
-ROW |139118 |1445 |22401 |0 |9 |00FF00|0 |2 |0 |
-ROW |139119 |1445 |33023 |0 |10 |5A2B57|0 |2 |0 |
-ROW |139120 |1445 |39822 |0 |11 |9FA8DA|0 |2 |0 |
-ROW |139121 |1651 |22406 |0 |0 |00EE00|0 |2 |0 |
-ROW |139122 |1651 |25665 |0 |1 |0000EE|0 |2 |0 |
-ROW |139123 |1651 |25666 |0 |2 |FFAA00|0 |2 |0 |
-ROW |139124 |1651 |28537 |0 |3 |00EEEE|0 |2 |0 |
-ROW |139125 |1651 |28535 |0 |4 |990099|0 |2 |0 |
-ROW |139126 |1652 |22426 |0 |0 |00EE00|0 |2 |0 |
-ROW |139127 |1652 |22408 |0 |1 |FFAA00|0 |2 |0 |
-ROW |139128 |1652 |22412 |0 |2 |990099|0 |2 |0 |
-ROW |139129 |1652 |22414 |0 |3 |FF66FF|0 |2 |0 |
-ROW |139130 |1652 |23663 |0 |4 |009999|0 |2 |0 |
-ROW |139131 |1652 |33022 |0 |5 |2B5429|0 |2 |0 |
-ROW |139132 |1652 |22430 |0 |6 |8048B4|0 |2 |0 |
-ROW |139133 |1652 |22420 |0 |7 |FD5434|0 |2 |0 |
-ROW |139134 |1653 |22422 |0 |0 |00EE00|0 |2 |0 |
-ROW |139135 |1653 |22424 |0 |1 |0000EE|0 |2 |0 |
-ROW |139136 |1653 |25370 |0 |2 |FFAA00|0 |2 |0 |
-ROW |139137 |1653 |29822 |0 |3 |00EEEE|0 |2 |0 |
-ROW |139138 |1653 |34317 |0 |4 |990099|0 |2 |0 |
-ROW |139139 |1653 |34316 |0 |5 |EE0000|0 |2 |0 |
-ROW |139140 |1654 |33021 |0 |0 |C80000|0 |2 |0 |
-ROW |139141 |1654 |33020 |0 |1 |00C800|0 |2 |0 |
-ROW |139142 |527 |22199 |0 |0 |C80000|0 |2 |0 |
-ROW |139143 |527 |22196 |0 |1 |00C800|0 |2 |0 |
-ROW |139144 |410 |22185 |0 |0 |009900|0 |2 |0 |
-ROW |139145 |410 |22189 |0 |1 |DD0000|0 |2 |0 |
-ROW |139146 |410 |22396 |0 |2 |00DDDD|0 |2 |0 |
-ROW |139147 |410 |22183 |0 |3 |3333FF|0 |2 |0 |
-ROW |139148 |410 |22191 |0 |4 |999900|0 |2 |0 |
-ROW |139149 |410 |23634 |0 |5 |00FF00|0 |2 |0 |
-ROW |139150 |404 |22404 |0 |0 |990099|0 |2 |0 |
-ROW |139151 |404 |22399 |0 |1 |990000|0 |2 |0 |
-ROW |139152 |404 |22416 |0 |2 |0000EE|0 |2 |0 |
-ROW |139153 |404 |22430 |0 |3 |FF33FF|0 |2 |0 |
-ROW |139154 |404 |22418 |0 |4 |009600|0 |2 |0 |
-ROW |139155 |404 |22402 |0 |5 |003300|0 |2 |0 |
-ROW |139156 |404 |22420 |0 |6 |CCCC00|0 |2 |0 |
-ROW |139157 |404 |22400 |0 |7 |33FFFF|0 |2 |0 |
-ROW |139158 |404 |22689 |0 |8 |DD0000|0 |2 |0 |
-ROW |139159 |404 |23171 |0 |9 |000099|0 |2 |0 |
-ROW |139160 |404 |22401 |0 |10 |00FF00|0 |2 |0 |
-ROW |139161 |404 |33023 |0 |11 |5A2B57|0 |2 |0 |
-ROW |139162 |404 |39822 |0 |12 |9FA8DA|0 |2 |0 |
-ROW |139163 |406 |22426 |0 |0 |00EE00|0 |2 |0 |
-ROW |139164 |406 |22422 |0 |1 |0000EE|0 |2 |0 |
-ROW |139165 |406 |22408 |0 |2 |FFAA00|0 |2 |0 |
-ROW |139166 |406 |22424 |0 |3 |00EEEE|0 |2 |0 |
-ROW |139167 |406 |22412 |0 |4 |990099|0 |2 |0 |
-ROW |139168 |406 |22406 |0 |5 |EE0000|0 |2 |0 |
-ROW |139169 |406 |22414 |0 |6 |FF66FF|0 |2 |0 |
-ROW |139170 |406 |23663 |0 |7 |009999|0 |2 |0 |
-ROW |139171 |406 |25366 |0 |8 |BBBB00|0 |2 |0 |
-ROW |139172 |406 |25370 |0 |9 |AA0000|0 |2 |0 |
-ROW |139173 |406 |25665 |0 |10 |990000|0 |2 |0 |
-ROW |139174 |406 |25666 |0 |11 |008800|0 |2 |0 |
-ROW |139175 |406 |28535 |0 |12 |80B0E0|0 |2 |0 |
-ROW |139176 |406 |28537 |0 |13 |4080B0|0 |2 |0 |
-ROW |139177 |406 |29822 |0 |14 |8000FF|0 |2 |0 |
-ROW |139178 |406 |33022 |0 |15 |2B5429|0 |2 |0 |
-ROW |139179 |406 |34317 |0 |16 |8048B4|0 |2 |0 |
-ROW |139180 |406 |34316 |0 |17 |FD5434|0 |2 |0 |
-ROW |139181 |406 |35274 |0 |18 |790E1F|0 |2 |0 |
-ROW |139182 |406 |35272 |0 |19 |87AC4D|0 |2 |0 |
-ROW |139183 |788 |28248 |0 |0 |008800|0 |2 |0 |
-ROW |139184 |788 |28533 |0 |1 |EE0000|0 |2 |0 |
-ROW |139185 |392 |22187 |5 |0 |00C800|0 |2 |0 |
-ROW |139186 |392 |23251 |0 |1 |F63100|0 |2 |0 |
-ROW |139187 |1444 |28581 |0 |0 |990099|0 |2 |0 |
-ROW |139188 |1444 |28574 |0 |1 |990000|0 |2 |0 |
-ROW |139189 |1444 |28571 |0 |2 |0000EE|0 |2 |0 |
-ROW |139190 |1444 |28562 |0 |3 |FF33FF|0 |2 |0 |
-ROW |139191 |1444 |28570 |0 |4 |009600|0 |2 |0 |
-ROW |139192 |1444 |28569 |0 |5 |003300|0 |2 |0 |
-ROW |139193 |1444 |28552 |0 |6 |33FFFF|0 |2 |0 |
-ROW |139194 |1444 |28573 |0 |7 |DD0000|0 |2 |0 |
-ROW |139195 |1444 |28579 |0 |8 |000099|0 |2 |0 |
-ROW |139196 |1444 |28559 |0 |9 |00FF00|0 |2 |0 |
-ROW |139197 |1444 |33017 |0 |10 |5A2B57|0 |2 |0 |
-ROW |139198 |1444 |39824 |0 |11 |9FA8DA|0 |2 |0 |
-ROW |139199 |1659 |28567 |0 |0 |00EE00|0 |2 |0 |
-ROW |139200 |1659 |28575 |0 |1 |0000EE|0 |2 |0 |
-ROW |139201 |1659 |28576 |0 |2 |FFAA00|0 |2 |0 |
-ROW |139202 |1659 |28583 |0 |3 |00EEEE|0 |2 |0 |
-ROW |139203 |1659 |28582 |0 |4 |990099|0 |2 |0 |
-ROW |139204 |1660 |28572 |0 |0 |00EE00|0 |2 |0 |
-ROW |139205 |1660 |28568 |0 |1 |FFAA00|0 |2 |0 |
-ROW |139206 |1660 |28564 |0 |2 |990099|0 |2 |0 |
-ROW |139207 |1660 |28578 |0 |3 |FF66FF|0 |2 |0 |
-ROW |139208 |1660 |28580 |0 |4 |009999|0 |2 |0 |
-ROW |139209 |1660 |33016 |0 |5 |2B5429|0 |2 |0 |
-ROW |139210 |1660 |28565 |0 |6 |8048B4|0 |2 |0 |
-ROW |139211 |1660 |28577 |0 |7 |FD5434|0 |2 |0 |
-ROW |139212 |1661 |28566 |0 |0 |00EE00|0 |2 |0 |
-ROW |139213 |1661 |28561 |0 |1 |0000EE|0 |2 |0 |
-ROW |139214 |1661 |28563 |0 |2 |FFAA00|0 |2 |0 |
-ROW |139215 |1661 |29821 |0 |3 |00EEEE|0 |2 |0 |
-ROW |139216 |1661 |34314 |0 |4 |990099|0 |2 |0 |
-ROW |139217 |1661 |34315 |0 |5 |EE0000|0 |2 |0 |
-ROW |139218 |1662 |33015 |0 |0 |C80000|0 |2 |0 |
-ROW |139219 |1662 |33014 |0 |1 |00C800|0 |2 |0 |
-ROW |139220 |797 |28546 |0 |0 |C80000|0 |2 |0 |
-ROW |139221 |797 |28545 |0 |1 |00C800|0 |2 |0 |
-ROW |139222 |798 |28551 |0 |0 |009900|0 |2 |0 |
-ROW |139223 |798 |28543 |0 |1 |DD0000|0 |2 |0 |
-ROW |139224 |798 |28542 |0 |2 |00DDDD|0 |2 |0 |
-ROW |139225 |798 |28549 |0 |3 |3333FF|0 |2 |0 |
-ROW |139226 |798 |28544 |0 |4 |999900|0 |2 |0 |
-ROW |139227 |798 |28548 |0 |5 |00FF00|0 |2 |0 |
-ROW |139228 |799 |28581 |0 |0 |990099|0 |2 |0 |
-ROW |139229 |799 |28574 |0 |1 |990000|0 |2 |0 |
-ROW |139230 |799 |28571 |0 |2 |0000EE|0 |2 |0 |
-ROW |139231 |799 |28565 |0 |3 |FF33FF|0 |2 |0 |
-ROW |139232 |799 |28570 |0 |4 |009600|0 |2 |0 |
-ROW |139233 |799 |28569 |0 |5 |003300|0 |2 |0 |
-ROW |139234 |799 |28577 |0 |6 |CCCC00|0 |2 |0 |
-ROW |139235 |799 |28552 |0 |7 |33FFFF|0 |2 |0 |
-ROW |139236 |799 |28573 |0 |8 |DD0000|0 |2 |0 |
-ROW |139237 |799 |28579 |0 |9 |000099|0 |2 |0 |
-ROW |139238 |799 |28559 |0 |10 |00FF00|0 |2 |0 |
-ROW |139239 |799 |33017 |0 |11 |5A2B57|0 |2 |0 |
-ROW |139240 |799 |39824 |0 |12 |9FA8DA|0 |2 |0 |
-ROW |139241 |800 |28572 |0 |0 |00EE00|0 |2 |0 |
-ROW |139242 |800 |28566 |0 |1 |0000EE|0 |2 |0 |
-ROW |139243 |800 |28568 |0 |2 |FFAA00|0 |2 |0 |
-ROW |139244 |800 |28561 |0 |3 |00EEEE|0 |2 |0 |
-ROW |139245 |800 |28564 |0 |4 |990099|0 |2 |0 |
-ROW |139246 |800 |28567 |0 |5 |EE0000|0 |2 |0 |
-ROW |139247 |800 |28578 |0 |6 |FF66FF|0 |2 |0 |
-ROW |139248 |800 |28580 |0 |7 |009999|0 |2 |0 |
-ROW |139249 |800 |28562 |0 |8 |BBBB00|0 |2 |0 |
-ROW |139250 |800 |28563 |0 |9 |AA0000|0 |2 |0 |
-ROW |139251 |800 |28575 |0 |10 |990000|0 |2 |0 |
-ROW |139252 |800 |28576 |0 |11 |008800|0 |2 |0 |
-ROW |139253 |800 |28582 |0 |12 |80B0E0|0 |2 |0 |
-ROW |139254 |800 |28583 |0 |13 |4080B0|0 |2 |0 |
-ROW |139255 |800 |29821 |0 |14 |8000FF|0 |2 |0 |
-ROW |139256 |800 |33016 |0 |15 |2B5429|0 |2 |0 |
-ROW |139257 |800 |34314 |0 |16 |8048B4|0 |2 |0 |
-ROW |139258 |800 |34315 |0 |17 |FD5434|0 |2 |0 |
-ROW |139259 |800 |35279 |0 |18 |790E1F|0 |2 |0 |
-ROW |139260 |800 |35278 |0 |19 |87AC4D|0 |2 |0 |
-ROW |139261 |801 |28560 |0 |0 |008800|0 |2 |0 |
-ROW |139262 |801 |28584 |0 |1 |EE0000|0 |2 |0 |
-ROW |139263 |802 |28550 |5 |0 |00C800|0 |2 |0 |
-ROW |139264 |802 |28540 |0 |1 |F63100|0 |2 |0 |
-ROW |139265 |1438 |33001 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139266 |1438 |33002 |0 |1 |2774A4|0 |2 |0 |
-ROW |139267 |1438 |33000 |2 |2 |F63100|0 |2 |0 |
-ROW |139268 |1439 |33005 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139269 |1439 |33004 |0 |1 |2774A4|0 |2 |0 |
-ROW |139270 |1440 |32980 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139271 |1440 |32970 |0 |1 |2774A4|0 |2 |0 |
-ROW |139272 |1441 |32967 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139273 |1441 |32968 |0 |1 |2774A4|0 |2 |0 |
-ROW |139274 |1441 |32995 |2 |2 |F63100|0 |2 |0 |
-ROW |139275 |1442 |32997 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139276 |1442 |32984 |0 |1 |2774A4|0 |2 |0 |
-ROW |139277 |1443 |32973 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139278 |1443 |32971 |0 |1 |2774A4|0 |2 |0 |
-ROW |139279 |1503 |33518 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139280 |1504 |33501 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139281 |2399 |43533 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139282 |2399 |43531 |0 |1 |2774A4|0 |2 |0 |
-ROW |139283 |2400 |43532 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139284 |2400 |43537 |0 |1 |2774A4|0 |2 |0 |
-ROW |139285 |2401 |43534 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139286 |2401 |43535 |0 |1 |2774A4|0 |2 |0 |
-ROW |139287 |2402 |43520 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139288 |2402 |43518 |0 |1 |2774A4|0 |2 |0 |
-ROW |139289 |2403 |43519 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139290 |2403 |43517 |0 |1 |2774A4|0 |2 |0 |
-ROW |139291 |2404 |43506 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139292 |2404 |43505 |0 |1 |2774A4|0 |2 |0 |
-ROW |139293 |2405 |43508 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139294 |2405 |43507 |0 |1 |2774A4|0 |2 |0 |
-ROW |139295 |2410 |43652 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139296 |2410 |43658 |0 |1 |2774A4|0 |2 |0 |
-ROW |139297 |2411 |43653 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139298 |2411 |43659 |0 |1 |2774A4|0 |2 |0 |
-ROW |139299 |2412 |43678 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139300 |2412 |43673 |0 |1 |2774A4|0 |2 |0 |
-ROW |139301 |2413 |43677 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139302 |2413 |43664 |0 |1 |2774A4|0 |2 |0 |
-ROW |139303 |2414 |43672 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139304 |2414 |43676 |0 |1 |2774A4|0 |2 |0 |
-ROW |139305 |2414 |43665 |0 |2 |F63100|0 |2 |0 |
-ROW |139306 |2415 |43671 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139307 |2415 |43675 |0 |1 |2774A4|0 |2 |0 |
-ROW |139308 |2415 |43683 |0 |2 |F63100|0 |2 |0 |
-ROW |139309 |2416 |43605 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139310 |2416 |43612 |0 |1 |2774A4|0 |2 |0 |
-ROW |139311 |2417 |43598 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139312 |2417 |43614 |0 |1 |2774A4|0 |2 |0 |
-ROW |139313 |2418 |43602 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139314 |2418 |43616 |0 |1 |2774A4|0 |2 |0 |
-ROW |139315 |2419 |43613 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139316 |2419 |43617 |0 |1 |2774A4|0 |2 |0 |
-ROW |139317 |2420 |43599 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139318 |2420 |43615 |0 |1 |2774A4|0 |2 |0 |
-ROW |139319 |2421 |43603 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139320 |2421 |43641 |0 |1 |2774A4|0 |2 |0 |
-ROW |139321 |2422 |43618 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139322 |2422 |43619 |0 |1 |2774A4|0 |2 |0 |
-ROW |139323 |2422 |43631 |0 |2 |F63100|0 |2 |0 |
-ROW |139324 |2423 |43744 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139325 |2423 |43761 |0 |1 |2774A4|0 |2 |0 |
-ROW |139326 |2424 |43755 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139327 |2424 |43762 |0 |1 |2774A4|0 |2 |0 |
-ROW |139328 |2425 |43764 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139329 |2425 |43766 |0 |1 |2774A4|0 |2 |0 |
-ROW |139330 |2426 |43765 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139331 |2426 |43756 |0 |1 |2774A4|0 |2 |0 |
-ROW |139332 |2427 |43742 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139333 |2427 |43741 |0 |1 |2774A4|0 |2 |0 |
-ROW |139334 |2427 |43729 |0 |2 |F63100|0 |2 |0 |
-ROW |139335 |2427 |43719 |0 |3 |A54F10|0 |2 |0 |
-ROW |139336 |2428 |43721 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139337 |2428 |43722 |0 |1 |2774A4|0 |2 |0 |
-ROW |139338 |2429 |43718 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139339 |2429 |43734 |0 |1 |2774A4|0 |2 |0 |
-ROW |139340 |2430 |43728 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139341 |2430 |43735 |0 |1 |2774A4|0 |2 |0 |
-ROW |139342 |2431 |43736 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139343 |2431 |43737 |0 |1 |2774A4|0 |2 |0 |
-ROW |139344 |2432 |43738 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139345 |2432 |43739 |0 |1 |2774A4|0 |2 |0 |
-ROW |139346 |2437 |44179 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139347 |2437 |44178 |0 |1 |2774A4|0 |2 |0 |
-ROW |139348 |2437 |44180 |0 |2 |F63100|0 |2 |0 |
-ROW |139349 |2438 |44198 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139350 |2438 |44197 |0 |1 |2774A4|0 |2 |0 |
-ROW |139351 |2439 |44171 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139352 |2439 |44170 |0 |1 |2774A4|0 |2 |0 |
-ROW |139353 |2440 |44190 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139354 |2440 |44191 |0 |1 |2774A4|0 |2 |0 |
-ROW |139355 |2441 |44184 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139356 |2441 |44186 |0 |1 |2774A4|0 |2 |0 |
-ROW |139357 |2442 |44199 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139358 |2442 |44188 |0 |1 |2774A4|0 |2 |0 |
-ROW |139359 |2443 |44181 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139360 |2443 |44166 |0 |1 |2774A4|0 |2 |0 |
-ROW |139361 |1447 |33113 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139362 |1447 |33112 |0 |1 |2774A4|0 |2 |0 |
-ROW |139363 |1447 |33099 |0 |2 |F63100|0 |2 |0 |
-ROW |139364 |1447 |33098 |0 |3 |A54F10|0 |2 |0 |
-ROW |139365 |1448 |33125 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139366 |1448 |33110 |0 |1 |2774A4|0 |2 |0 |
-ROW |139367 |1449 |33080 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139368 |1449 |33081 |2 |1 |2774A4|0 |2 |0 |
-ROW |139369 |1450 |33089 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139370 |1450 |33085 |2 |1 |2774A4|0 |2 |0 |
-ROW |139371 |1451 |33082 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139372 |1451 |33086 |2 |1 |2774A4|0 |2 |0 |
-ROW |139373 |1451 |33083 |0 |2 |F63100|0 |2 |0 |
-ROW |139374 |1451 |33084 |0 |3 |A54F10|0 |2 |0 |
-ROW |139375 |1451 |33087 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139376 |1451 |33088 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139377 |1452 |33093 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139378 |1452 |33092 |2 |1 |2774A4|0 |2 |0 |
-ROW |139379 |1453 |33077 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139380 |1453 |33063 |2 |1 |2774A4|0 |2 |0 |
-ROW |139381 |1454 |33094 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139382 |1454 |33059 |0 |1 |2774A4|0 |2 |0 |
-ROW |139383 |1455 |33066 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139384 |1455 |33071 |2 |1 |2774A4|0 |2 |0 |
-ROW |139385 |1455 |33067 |0 |2 |F63100|0 |2 |0 |
-ROW |139386 |1455 |33068 |0 |3 |A54F10|0 |2 |0 |
-ROW |139387 |1455 |33072 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139388 |1455 |33073 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139389 |1159 |30886 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139390 |1159 |30887 |0 |1 |2774A4|0 |2 |0 |
-ROW |139391 |1160 |30888 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139392 |1160 |30882 |0 |1 |2774A4|0 |2 |0 |
-ROW |139393 |1160 |30890 |0 |2 |F63100|0 |2 |0 |
-ROW |139394 |1160 |30881 |0 |3 |A54F10|0 |2 |0 |
-ROW |139395 |1160 |30889 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139396 |1161 |30847 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139397 |1161 |30872 |2 |1 |2774A4|0 |2 |0 |
-ROW |139398 |1162 |30853 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139399 |1162 |30849 |2 |1 |2774A4|0 |2 |0 |
-ROW |139400 |1162 |30852 |2 |2 |F63100|0 |2 |0 |
-ROW |139401 |1162 |30851 |2 |3 |A54F10|0 |2 |0 |
-ROW |139402 |1162 |30848 |2 |4 |FC6EA3|0 |2 |0 |
-ROW |139403 |1163 |30856 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139404 |1163 |30855 |0 |1 |2774A4|0 |2 |0 |
-ROW |139405 |1163 |30854 |2 |2 |F63100|1 |2 |0 |
-ROW |139406 |1164 |30859 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139407 |1164 |30870 |2 |1 |2774A4|0 |2 |0 |
-ROW |139408 |1165 |30860 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139409 |1165 |30871 |2 |1 |2774A4|0 |2 |0 |
-ROW |139410 |1166 |30868 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139411 |1166 |30869 |0 |1 |2774A4|0 |2 |0 |
-ROW |139412 |1166 |30867 |0 |2 |F63100|0 |2 |0 |
-ROW |139413 |1166 |30866 |0 |3 |A54F10|0 |2 |0 |
-ROW |139414 |1166 |30865 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139415 |1167 |30850 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139416 |1167 |30863 |5 |1 |2774A4|0 |2 |0 |
-ROW |139417 |1167 |30861 |5 |2 |F63100|0 |2 |0 |
-ROW |139418 |1168 |30833 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139419 |1168 |30841 |2 |1 |2774A4|0 |2 |0 |
-ROW |139420 |1168 |30857 |2 |2 |F63100|0 |2 |0 |
-ROW |139421 |1169 |30834 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139422 |1169 |30831 |2 |1 |2774A4|0 |2 |0 |
-ROW |139423 |1170 |30846 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139424 |1576 |34320 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139425 |1576 |30845 |0 |1 |2774A4|0 |2 |0 |
-ROW |139426 |1576 |30842 |0 |2 |F63100|0 |2 |0 |
-ROW |139427 |1576 |30873 |2 |3 |A54F10|1 |2 |0 |
-ROW |139428 |2325 |42995 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139429 |2325 |42993 |0 |1 |2774A4|0 |2 |0 |
-ROW |139430 |2326 |42991 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139431 |2326 |42992 |0 |1 |2774A4|0 |2 |0 |
-ROW |139432 |2326 |43017 |0 |2 |F63100|0 |2 |0 |
-ROW |139433 |2327 |42989 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139434 |2327 |43003 |0 |1 |2774A4|0 |2 |0 |
-ROW |139435 |2327 |43015 |0 |2 |F63100|0 |2 |0 |
-ROW |139436 |2327 |43014 |0 |3 |A54F10|0 |2 |0 |
-ROW |139437 |2327 |43016 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139438 |2327 |43013 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139439 |2327 |43012 |0 |6 |AC8C14|0 |2 |0 |
-ROW |139440 |2327 |43011 |0 |7 |611F27|0 |2 |0 |
-ROW |139441 |2328 |43010 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139442 |2328 |43002 |0 |1 |2774A4|0 |2 |0 |
-ROW |139443 |2328 |43009 |0 |2 |F63100|0 |2 |0 |
-ROW |139444 |2328 |43008 |0 |3 |A54F10|0 |2 |0 |
-ROW |139445 |2329 |43005 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139446 |2329 |43004 |0 |1 |2774A4|0 |2 |0 |
-ROW |139447 |2330 |42964 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139448 |2330 |42963 |0 |1 |2774A4|0 |2 |0 |
-ROW |139449 |2331 |42971 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139450 |2331 |42961 |0 |1 |2774A4|0 |2 |0 |
-ROW |139451 |2332 |42969 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139452 |2332 |42970 |0 |1 |2774A4|0 |2 |0 |
-ROW |139453 |2333 |42966 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139454 |2333 |42967 |0 |1 |2774A4|0 |2 |0 |
-ROW |139455 |2334 |42978 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139456 |2334 |42977 |0 |1 |2774A4|0 |2 |0 |
-ROW |139457 |2335 |42985 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139458 |2335 |42982 |0 |1 |2774A4|0 |2 |0 |
-ROW |139459 |2335 |42983 |0 |2 |F63100|0 |2 |0 |
-ROW |139460 |2335 |42980 |0 |3 |A54F10|0 |2 |0 |
-ROW |139461 |2335 |42981 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139462 |2336 |42960 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139463 |2336 |42945 |0 |1 |2774A4|0 |2 |0 |
-ROW |139464 |2337 |42934 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139465 |2337 |42935 |0 |1 |2774A4|0 |2 |0 |
-ROW |139466 |2338 |42948 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139467 |2338 |42947 |0 |1 |2774A4|0 |2 |0 |
-ROW |139468 |2338 |42946 |0 |2 |F63100|0 |2 |0 |
-ROW |139469 |2338 |42940 |0 |3 |A54F10|0 |2 |0 |
-ROW |139470 |2339 |42951 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139471 |2339 |42950 |0 |1 |2774A4|0 |2 |0 |
-ROW |139472 |2339 |42953 |0 |2 |F63100|0 |2 |0 |
-ROW |139473 |2339 |42949 |0 |3 |A54F10|0 |2 |0 |
-ROW |139474 |2340 |42955 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139475 |2340 |42954 |0 |1 |2774A4|0 |2 |0 |
-ROW |139476 |1663 |35291 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139477 |1663 |35300 |0 |1 |2774A4|0 |2 |0 |
-ROW |139478 |1664 |35295 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139479 |1664 |35296 |0 |1 |2774A4|0 |2 |0 |
-ROW |139480 |1665 |35301 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139481 |1665 |35306 |0 |1 |2774A4|0 |2 |0 |
-ROW |139482 |1665 |35304 |0 |2 |F63100|0 |2 |0 |
-ROW |139483 |1665 |35302 |0 |3 |A54F10|0 |2 |0 |
-ROW |139484 |1666 |35308 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139485 |1666 |35310 |0 |1 |2774A4|0 |2 |0 |
-ROW |139486 |1666 |35309 |0 |2 |F63100|0 |2 |0 |
-ROW |139487 |1667 |35322 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139488 |1667 |35320 |0 |1 |2774A4|0 |2 |0 |
-ROW |139489 |1668 |35329 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139490 |1668 |35330 |0 |1 |2774A4|0 |2 |0 |
-ROW |139491 |1669 |35332 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139492 |1669 |35334 |0 |1 |2774A4|0 |2 |0 |
-ROW |139493 |1670 |35335 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139494 |1670 |35333 |0 |1 |2774A4|0 |2 |0 |
-ROW |139495 |1671 |35338 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139496 |1671 |35341 |0 |1 |2774A4|0 |2 |0 |
-ROW |139497 |1671 |35339 |0 |2 |F63100|0 |2 |0 |
-ROW |139498 |1671 |35340 |0 |3 |A54F10|0 |2 |0 |
-ROW |139499 |1672 |35347 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139500 |1672 |35346 |0 |1 |2774A4|0 |2 |0 |
-ROW |139501 |1672 |35345 |0 |2 |F63100|0 |2 |0 |
-ROW |139502 |1673 |35350 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139503 |1673 |35351 |0 |1 |2774A4|0 |2 |0 |
-ROW |139504 |1674 |35349 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139505 |1674 |35352 |0 |1 |2774A4|0 |2 |0 |
-ROW |139506 |1674 |35353 |0 |2 |F63100|0 |2 |0 |
-ROW |139507 |1675 |35355 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139508 |1675 |35356 |0 |1 |2774A4|0 |2 |0 |
-ROW |139509 |1505 |33553 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139510 |1505 |33562 |0 |1 |2774A4|0 |2 |0 |
-ROW |139511 |1506 |33557 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139512 |1506 |33558 |0 |1 |2774A4|0 |2 |0 |
-ROW |139513 |1507 |33563 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139514 |1507 |33568 |0 |1 |2774A4|0 |2 |0 |
-ROW |139515 |1507 |33566 |0 |2 |F63100|0 |2 |0 |
-ROW |139516 |1507 |33564 |0 |3 |A54F10|0 |2 |0 |
-ROW |139517 |1508 |33570 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139518 |1508 |33572 |0 |1 |2774A4|0 |2 |0 |
-ROW |139519 |1508 |33571 |0 |2 |F63100|0 |2 |0 |
-ROW |139520 |1509 |33584 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139521 |1509 |33582 |0 |1 |2774A4|0 |2 |0 |
-ROW |139522 |1510 |33591 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139523 |1510 |33592 |0 |1 |2774A4|0 |2 |0 |
-ROW |139524 |1511 |33594 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139525 |1511 |33596 |0 |1 |2774A4|0 |2 |0 |
-ROW |139526 |1512 |33597 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139527 |1512 |33595 |0 |1 |2774A4|0 |2 |0 |
-ROW |139528 |1513 |33600 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139529 |1513 |33603 |0 |1 |2774A4|0 |2 |0 |
-ROW |139530 |1513 |33601 |0 |2 |F63100|0 |2 |0 |
-ROW |139531 |1513 |33602 |0 |3 |A54F10|0 |2 |0 |
-ROW |139532 |1514 |33609 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139533 |1514 |33608 |0 |1 |2774A4|0 |2 |0 |
-ROW |139534 |1514 |33607 |0 |2 |F63100|0 |2 |0 |
-ROW |139535 |1515 |33612 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139536 |1515 |33613 |0 |1 |2774A4|0 |2 |0 |
-ROW |139537 |1516 |33611 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139538 |1516 |33614 |0 |1 |2774A4|0 |2 |0 |
-ROW |139539 |1516 |33615 |0 |2 |F63100|0 |2 |0 |
-ROW |139540 |1517 |33617 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139541 |1517 |33618 |0 |1 |2774A4|0 |2 |0 |
-ROW |139542 |1807 |36817 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139543 |1807 |36816 |0 |1 |2774A4|0 |2 |0 |
-ROW |139544 |1808 |36815 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139545 |1808 |36814 |0 |1 |2774A4|0 |2 |0 |
-ROW |139546 |1808 |36818 |0 |2 |F63100|0 |2 |0 |
-ROW |139547 |1808 |36819 |0 |3 |A54F10|0 |2 |0 |
-ROW |139548 |1809 |36805 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139549 |1809 |36804 |0 |1 |2774A4|0 |2 |0 |
-ROW |139550 |1527 |33819 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139551 |1527 |33839 |0 |1 |2774A4|0 |2 |0 |
-ROW |139552 |1528 |33820 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139553 |1528 |33816 |0 |1 |2774A4|0 |2 |0 |
-ROW |139554 |1529 |33826 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139555 |1529 |33831 |0 |1 |2774A4|0 |2 |0 |
-ROW |139556 |1529 |33829 |0 |2 |F63100|0 |2 |0 |
-ROW |139557 |1529 |33821 |0 |3 |A54F10|0 |2 |0 |
-ROW |139558 |1529 |33825 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139559 |1529 |33833 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139560 |1529 |33823 |2 |6 |AC8C14|0 |2 |0 |
-ROW |139561 |1530 |33828 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139562 |1530 |33832 |0 |1 |2774A4|0 |2 |0 |
-ROW |139563 |1530 |33830 |0 |2 |F63100|0 |2 |0 |
-ROW |139564 |1530 |33822 |0 |3 |A54F10|0 |2 |0 |
-ROW |139565 |1530 |33815 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139566 |1530 |33834 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139567 |1530 |33824 |2 |6 |AC8C14|0 |2 |0 |
-ROW |139568 |1531 |33840 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139569 |1531 |33845 |0 |1 |2774A4|0 |2 |0 |
-ROW |139570 |1532 |33844 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139571 |1532 |33847 |0 |1 |2774A4|0 |2 |0 |
-ROW |139572 |1532 |33843 |0 |2 |F63100|0 |2 |0 |
-ROW |139573 |1532 |33841 |0 |3 |A54F10|0 |2 |0 |
-ROW |139574 |1533 |33863 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139575 |1534 |33792 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139576 |1534 |33791 |0 |1 |2774A4|0 |2 |0 |
-ROW |139577 |1534 |33793 |0 |2 |F63100|0 |2 |0 |
-ROW |139578 |1535 |33802 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139579 |1535 |33770 |0 |1 |2774A4|0 |2 |0 |
-ROW |139580 |1536 |33800 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139581 |1536 |33799 |0 |1 |2774A4|0 |2 |0 |
-ROW |139582 |1536 |33801 |0 |2 |F63100|0 |2 |0 |
-ROW |139583 |1537 |33798 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139584 |1537 |33806 |0 |1 |2774A4|0 |2 |0 |
-ROW |139585 |1537 |33774 |0 |2 |F63100|0 |2 |0 |
-ROW |139586 |1538 |33769 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139587 |1538 |33787 |0 |1 |2774A4|0 |2 |0 |
-ROW |139588 |1538 |33789 |0 |2 |F63100|0 |2 |0 |
-ROW |139589 |1538 |33790 |0 |3 |A54F10|0 |2 |0 |
-ROW |139590 |1539 |33785 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139591 |1539 |33772 |0 |1 |2774A4|0 |2 |0 |
-ROW |139592 |1539 |33773 |0 |2 |F63100|0 |2 |0 |
-ROW |139593 |1539 |33771 |0 |3 |A54F10|0 |2 |0 |
-ROW |139594 |1540 |33776 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139595 |1540 |33775 |0 |1 |2774A4|0 |2 |0 |
-ROW |139596 |1541 |33782 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139597 |1541 |33781 |0 |1 |2774A4|0 |2 |0 |
-ROW |139598 |1541 |33780 |0 |2 |F63100|0 |2 |0 |
-ROW |139599 |1541 |33783 |0 |3 |A54F10|0 |2 |0 |
-ROW |139600 |1541 |33777 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139601 |1541 |33778 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139602 |1542 |33804 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139603 |1542 |33803 |2 |1 |2774A4|0 |2 |0 |
-ROW |139604 |1542 |33805 |2 |2 |F63100|0 |2 |0 |
-ROW |139605 |1543 |33937 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139606 |1543 |33940 |0 |1 |2774A4|0 |2 |0 |
-ROW |139607 |1543 |33936 |0 |2 |F63100|0 |2 |0 |
-ROW |139608 |1543 |33934 |0 |3 |A54F10|0 |2 |0 |
-ROW |139609 |1544 |33915 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139610 |1544 |33911 |0 |1 |2774A4|0 |2 |0 |
-ROW |139611 |1544 |33912 |0 |2 |F63100|0 |2 |0 |
-ROW |139612 |1544 |33910 |0 |3 |A54F10|0 |2 |0 |
-ROW |139613 |1544 |33914 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139614 |1545 |33918 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139615 |1545 |33905 |0 |1 |2774A4|0 |2 |0 |
-ROW |139616 |1545 |33917 |0 |2 |F63100|0 |2 |0 |
-ROW |139617 |1545 |33916 |2 |3 |A54F10|1 |2 |0 |
-ROW |139618 |1546 |33908 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139619 |1546 |33909 |0 |1 |2774A4|0 |2 |0 |
-ROW |139620 |1546 |33902 |0 |2 |F63100|0 |2 |0 |
-ROW |139621 |1547 |33893 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139622 |1547 |33892 |0 |1 |2774A4|0 |2 |0 |
-ROW |139623 |1548 |33899 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139624 |1548 |33898 |2 |1 |2774A4|0 |2 |0 |
-ROW |139625 |1548 |33895 |2 |2 |F63100|0 |2 |0 |
-ROW |139626 |1548 |33900 |2 |3 |A54F10|0 |2 |0 |
-ROW |139627 |1548 |33896 |2 |4 |FC6EA3|0 |2 |0 |
-ROW |139628 |1548 |33891 |2 |5 |6C59DC|0 |2 |0 |
-ROW |139629 |1190 |31140 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139630 |1190 |31141 |0 |1 |2774A4|0 |2 |0 |
-ROW |139631 |1261 |31145 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139632 |1261 |31146 |0 |1 |2774A4|0 |2 |0 |
-ROW |139633 |1261 |31147 |0 |2 |F63100|0 |2 |0 |
-ROW |139634 |1191 |31138 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139635 |1192 |31157 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139636 |1192 |31158 |0 |1 |2774A4|0 |2 |0 |
-ROW |139637 |1193 |31092 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139638 |1193 |31108 |0 |1 |2774A4|0 |2 |0 |
-ROW |139639 |1193 |31110 |0 |2 |F63100|0 |2 |0 |
-ROW |139640 |1193 |31067 |0 |3 |A54F10|0 |2 |0 |
-ROW |139641 |1193 |31086 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139642 |1193 |31087 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139643 |1194 |31120 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139644 |1194 |31105 |0 |1 |2774A4|0 |2 |0 |
-ROW |139645 |1194 |31071 |0 |2 |F63100|0 |2 |0 |
-ROW |139646 |1194 |31081 |0 |3 |A54F10|0 |2 |0 |
-ROW |139647 |1195 |31098 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139648 |1195 |31099 |0 |1 |2774A4|0 |2 |0 |
-ROW |139649 |1196 |31072 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139650 |1196 |31072 |0 |1 |2774A4|0 |2 |0 |
-ROW |139651 |1197 |31103 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139652 |1197 |31074 |0 |1 |2774A4|0 |2 |0 |
-ROW |139653 |1198 |31104 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139654 |1198 |31063 |0 |1 |2774A4|0 |2 |0 |
-ROW |139655 |1198 |31111 |0 |2 |F63100|0 |2 |0 |
-ROW |139656 |1198 |31112 |0 |3 |A54F10|0 |2 |0 |
-ROW |139657 |1198 |31084 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139658 |1199 |31115 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139659 |1199 |31116 |0 |1 |2774A4|0 |2 |0 |
-ROW |139660 |1199 |31062 |0 |2 |F63100|0 |2 |0 |
-ROW |139661 |1199 |31118 |0 |3 |A54F10|0 |2 |0 |
-ROW |139662 |1199 |31056 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139663 |1200 |31107 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139664 |1200 |31090 |0 |1 |2774A4|0 |2 |0 |
-ROW |139665 |1201 |31097 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139666 |1201 |31096 |0 |1 |2774A4|0 |2 |0 |
-ROW |139667 |1202 |31089 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139668 |1202 |31061 |0 |1 |2774A4|0 |2 |0 |
-ROW |139669 |1203 |31064 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139670 |1204 |31065 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139671 |1204 |31066 |0 |1 |2774A4|0 |2 |0 |
-ROW |139672 |1204 |31068 |0 |2 |F63100|0 |2 |0 |
-ROW |139673 |1204 |31070 |0 |3 |A54F10|0 |2 |0 |
-ROW |139674 |1204 |31101 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139675 |1204 |31106 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139676 |1204 |31114 |0 |6 |AC8C14|0 |2 |0 |
-ROW |139677 |1205 |31069 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139678 |1206 |31076 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139679 |1206 |31078 |0 |1 |2774A4|0 |2 |0 |
-ROW |139680 |1206 |31109 |0 |2 |F63100|0 |2 |0 |
-ROW |139681 |1206 |31075 |0 |3 |A54F10|0 |2 |0 |
-ROW |139682 |1207 |31080 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139683 |1207 |31095 |0 |1 |2774A4|0 |2 |0 |
-ROW |139684 |1208 |31113 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139685 |1208 |31118 |0 |1 |2774A4|0 |2 |0 |
-ROW |139686 |1209 |31058 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139687 |1209 |31077 |0 |1 |2774A4|0 |2 |0 |
-ROW |139688 |1209 |31056 |0 |2 |F63100|0 |2 |0 |
-ROW |139689 |1209 |31117 |0 |3 |A54F10|0 |2 |0 |
-ROW |139690 |1109 |30453 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139691 |1109 |30455 |5 |1 |2774A4|0 |2 |0 |
-ROW |139692 |1110 |30471 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139693 |1110 |30470 |0 |1 |2774A4|0 |2 |0 |
-ROW |139694 |1110 |30466 |0 |2 |F63100|0 |2 |0 |
-ROW |139695 |1110 |30441 |0 |3 |A54F10|0 |2 |0 |
-ROW |139696 |1111 |30463 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139697 |1111 |30452 |0 |1 |2774A4|0 |2 |0 |
-ROW |139698 |1111 |30451 |0 |2 |F63100|0 |2 |0 |
-ROW |139699 |1111 |30437 |0 |3 |A54F10|0 |2 |0 |
-ROW |139700 |1112 |30456 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139701 |1112 |30457 |0 |1 |2774A4|0 |2 |0 |
-ROW |139702 |1112 |30458 |0 |2 |F63100|0 |2 |0 |
-ROW |139703 |1112 |30459 |0 |3 |A54F10|0 |2 |0 |
-ROW |139704 |1113 |30442 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139705 |1113 |30444 |0 |1 |2774A4|0 |2 |0 |
-ROW |139706 |1113 |30445 |0 |2 |F63100|0 |2 |0 |
-ROW |139707 |1114 |30446 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139708 |1114 |30447 |0 |1 |2774A4|0 |2 |0 |
-ROW |139709 |1114 |31168 |0 |2 |F63100|0 |2 |0 |
-ROW |139710 |1114 |30449 |0 |3 |A54F10|0 |2 |0 |
-ROW |139711 |1136 |30659 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139712 |1136 |30661 |5 |1 |2774A4|0 |2 |0 |
-ROW |139713 |1137 |30677 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139714 |1137 |30676 |0 |1 |2774A4|0 |2 |0 |
-ROW |139715 |1137 |30672 |0 |2 |F63100|0 |2 |0 |
-ROW |139716 |1137 |30647 |0 |3 |A54F10|0 |2 |0 |
-ROW |139717 |1138 |30669 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139718 |1138 |30658 |0 |1 |2774A4|0 |2 |0 |
-ROW |139719 |1138 |30657 |0 |2 |F63100|0 |2 |0 |
-ROW |139720 |1138 |30643 |0 |3 |A54F10|0 |2 |0 |
-ROW |139721 |1139 |30662 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139722 |1139 |30663 |0 |1 |2774A4|0 |2 |0 |
-ROW |139723 |1139 |30664 |0 |2 |F63100|0 |2 |0 |
-ROW |139724 |1139 |30665 |0 |3 |A54F10|0 |2 |0 |
-ROW |139725 |1140 |30648 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139726 |1140 |30650 |0 |1 |2774A4|0 |2 |0 |
-ROW |139727 |1140 |30651 |0 |2 |F63100|0 |2 |0 |
-ROW |139728 |1141 |30652 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139729 |1141 |30653 |0 |1 |2774A4|0 |2 |0 |
-ROW |139730 |1141 |31172 |0 |2 |F63100|0 |2 |0 |
-ROW |139731 |1141 |30655 |0 |3 |A54F10|0 |2 |0 |
-ROW |139732 |1115 |30506 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139733 |1115 |30507 |5 |1 |2774A4|0 |2 |0 |
-ROW |139734 |1116 |30504 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139735 |1116 |30505 |0 |1 |2774A4|0 |2 |0 |
-ROW |139736 |1116 |30518 |0 |2 |F63100|0 |2 |0 |
-ROW |139737 |1116 |30492 |0 |3 |A54F10|0 |2 |0 |
-ROW |139738 |1117 |30493 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139739 |1117 |30500 |0 |1 |2774A4|0 |2 |0 |
-ROW |139740 |1117 |30486 |0 |2 |F63100|0 |2 |0 |
-ROW |139741 |1117 |30488 |0 |3 |A54F10|0 |2 |0 |
-ROW |139742 |1118 |30508 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139743 |1118 |30509 |0 |1 |2774A4|0 |2 |0 |
-ROW |139744 |1118 |30503 |0 |2 |F63100|0 |2 |0 |
-ROW |139745 |1118 |30510 |0 |3 |A54F10|0 |2 |0 |
-ROW |139746 |1119 |30491 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139747 |1119 |30494 |0 |1 |2774A4|0 |2 |0 |
-ROW |139748 |1119 |30495 |0 |2 |F63100|0 |2 |0 |
-ROW |139749 |1120 |30496 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139750 |1120 |30497 |0 |1 |2774A4|0 |2 |0 |
-ROW |139751 |1120 |31176 |0 |2 |F63100|0 |2 |0 |
-ROW |139752 |1120 |30499 |0 |3 |A54F10|0 |2 |0 |
-ROW |139753 |1266 |31773 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139754 |1266 |31774 |0 |1 |2774A4|0 |2 |0 |
-ROW |139755 |1267 |31777 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139756 |1267 |31779 |0 |1 |2774A4|0 |2 |0 |
-ROW |139757 |1267 |33168 |0 |2 |F63100|0 |2 |0 |
-ROW |139758 |1268 |31685 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139759 |1268 |31738 |0 |1 |2774A4|0 |2 |0 |
-ROW |139760 |1269 |31723 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139761 |1269 |31757 |0 |1 |2774A4|0 |2 |0 |
-ROW |139762 |1269 |31721 |0 |2 |F63100|0 |2 |0 |
-ROW |139763 |1270 |31728 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139764 |1270 |31759 |0 |1 |2774A4|0 |2 |0 |
-ROW |139765 |1271 |31745 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139766 |1271 |31727 |0 |1 |2774A4|0 |2 |0 |
-ROW |139767 |1272 |31687 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139768 |1272 |31710 |0 |1 |2774A4|0 |2 |0 |
-ROW |139769 |1273 |31705 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139770 |1273 |31703 |0 |1 |2774A4|0 |2 |0 |
-ROW |139771 |1273 |31706 |0 |2 |F63100|0 |2 |0 |
-ROW |139772 |1273 |31701 |0 |3 |A54F10|0 |2 |0 |
-ROW |139773 |1273 |31708 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139774 |1274 |31715 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139775 |1274 |31726 |0 |1 |2774A4|0 |2 |0 |
-ROW |139776 |1274 |31717 |0 |2 |F63100|0 |2 |0 |
-ROW |139777 |1274 |31716 |0 |3 |A54F10|0 |2 |0 |
-ROW |139778 |1274 |31714 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139779 |1274 |31713 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139780 |1210 |31261 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139781 |1210 |31262 |0 |1 |2774A4|0 |2 |0 |
-ROW |139782 |1211 |31269 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139783 |1211 |31271 |0 |1 |2774A4|0 |2 |0 |
-ROW |139784 |1211 |33170 |0 |2 |F63100|0 |2 |0 |
-ROW |139785 |1212 |31233 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139786 |1212 |31234 |0 |1 |2774A4|0 |2 |0 |
-ROW |139787 |1213 |31216 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139788 |1213 |31237 |0 |1 |2774A4|0 |2 |0 |
-ROW |139789 |1213 |31214 |0 |2 |F63100|0 |2 |0 |
-ROW |139790 |1214 |31191 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139791 |1214 |31221 |0 |1 |2774A4|0 |2 |0 |
-ROW |139792 |1215 |31206 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139793 |1215 |31220 |0 |1 |2774A4|0 |2 |0 |
-ROW |139794 |1216 |31192 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139795 |1216 |31193 |0 |1 |2774A4|0 |2 |0 |
-ROW |139796 |1217 |31200 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139797 |1217 |31197 |0 |1 |2774A4|0 |2 |0 |
-ROW |139798 |1217 |31201 |0 |2 |F63100|0 |2 |0 |
-ROW |139799 |1217 |31198 |0 |3 |A54F10|0 |2 |0 |
-ROW |139800 |1217 |31202 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139801 |1218 |31207 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139802 |1218 |31208 |0 |1 |2774A4|0 |2 |0 |
-ROW |139803 |1218 |31210 |0 |2 |F63100|0 |2 |0 |
-ROW |139804 |1218 |31209 |0 |3 |A54F10|0 |2 |0 |
-ROW |139805 |1218 |31219 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139806 |1218 |31205 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139807 |1380 |32423 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139808 |1380 |32421 |0 |1 |2774A4|0 |2 |0 |
-ROW |139809 |1381 |32405 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139810 |1382 |32426 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139811 |1382 |32408 |0 |1 |2774A4|0 |2 |0 |
-ROW |139812 |1382 |32422 |0 |2 |F63100|0 |2 |0 |
-ROW |139813 |1382 |32425 |0 |3 |A54F10|0 |2 |0 |
-ROW |139814 |1383 |32409 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139815 |1384 |32419 |0 |0 |1A7C11|1 |2 |0 |
-ROW |139816 |1384 |32416 |0 |1 |2774A4|1 |2 |0 |
-ROW |139817 |1384 |32413 |0 |2 |F63100|1 |2 |0 |
-ROW |139818 |1384 |32418 |5 |3 |A54F10|0 |2 |0 |
-ROW |139819 |1384 |32415 |5 |4 |FC6EA3|0 |2 |0 |
-ROW |139820 |1384 |32412 |5 |5 |6C59DC|0 |2 |0 |
-ROW |139821 |1385 |32420 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139822 |1385 |32417 |0 |1 |2774A4|0 |2 |0 |
-ROW |139823 |1385 |32414 |0 |2 |F63100|0 |2 |0 |
-ROW |139824 |1386 |32433 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139825 |1386 |32432 |0 |1 |2774A4|1 |2 |0 |
-ROW |139826 |1387 |32431 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139827 |1387 |32430 |0 |1 |2774A4|0 |2 |0 |
-ROW |139828 |1387 |32429 |0 |2 |F63100|0 |2 |0 |
-ROW |139829 |1387 |32428 |0 |3 |A54F10|0 |2 |0 |
-ROW |139830 |1387 |32427 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139831 |1388 |32386 |0 |0 |1A7C11|1 |2 |0 |
-ROW |139832 |1388 |32391 |0 |1 |2774A4|1 |2 |0 |
-ROW |139833 |1388 |32387 |0 |2 |F63100|1 |2 |0 |
-ROW |139834 |1388 |32390 |0 |3 |A54F10|1 |2 |0 |
-ROW |139835 |1388 |32395 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139836 |1388 |32389 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139837 |1389 |32393 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139838 |1389 |32392 |0 |1 |2774A4|0 |2 |0 |
-ROW |139839 |1389 |32394 |0 |2 |F63100|1 |2 |0 |
-ROW |139840 |1389 |32388 |0 |3 |A54F10|1 |2 |0 |
-ROW |139841 |1390 |32401 |5 |0 |1A7C11|1 |2 |0 |
-ROW |139842 |1390 |32402 |0 |1 |2774A4|0 |2 |0 |
-ROW |139843 |1390 |32397 |0 |2 |F63100|1 |2 |0 |
-ROW |139844 |1390 |32398 |0 |3 |A54F10|1 |2 |0 |
-ROW |139845 |1390 |32399 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |139846 |1390 |32400 |0 |5 |6C59DC|1 |2 |0 |
-ROW |139847 |1390 |32396 |0 |6 |AC8C14|1 |2 |0 |
-ROW |139848 |1391 |32367 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139849 |1391 |32366 |0 |1 |2774A4|1 |2 |0 |
-ROW |139850 |1392 |32370 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139851 |1393 |32382 |0 |0 |1A7C11|1 |2 |0 |
-ROW |139852 |1393 |32381 |0 |1 |2774A4|1 |2 |0 |
-ROW |139853 |1393 |32383 |0 |2 |F63100|1 |2 |0 |
-ROW |139854 |1393 |32384 |0 |3 |A54F10|1 |2 |0 |
-ROW |139855 |1394 |32377 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139856 |1394 |32374 |0 |1 |2774A4|1 |2 |0 |
-ROW |139857 |1395 |32403 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139858 |1395 |32385 |0 |1 |2774A4|1 |2 |0 |
-ROW |139859 |1219 |31363 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139860 |1219 |31346 |0 |1 |2774A4|0 |2 |0 |
-ROW |139861 |1219 |31345 |0 |2 |F63100|0 |2 |0 |
-ROW |139862 |1219 |31344 |0 |3 |A54F10|0 |2 |0 |
-ROW |139863 |1219 |31343 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139864 |1219 |31342 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139865 |1219 |31340 |0 |6 |AC8C14|0 |2 |0 |
-ROW |139866 |1219 |31339 |0 |7 |611F27|0 |2 |0 |
-ROW |139867 |1219 |31341 |0 |8 |F230E0|0 |2 |0 |
-ROW |139868 |1219 |31341 |0 |9 |FFAD40|0 |2 |0 |
-ROW |139869 |1220 |31337 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139870 |1221 |31360 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139871 |1221 |31359 |0 |1 |2774A4|0 |2 |0 |
-ROW |139872 |1221 |31357 |0 |2 |F63100|0 |2 |0 |
-ROW |139873 |1221 |31356 |0 |3 |A54F10|0 |2 |0 |
-ROW |139874 |1221 |31354 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139875 |1221 |31353 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139876 |1221 |31352 |0 |6 |AC8C14|0 |2 |0 |
-ROW |139877 |1221 |31350 |0 |7 |611F27|0 |2 |0 |
-ROW |139878 |1221 |31351 |0 |8 |F230E0|0 |2 |0 |
-ROW |139879 |1221 |31338 |0 |9 |FFAD40|0 |2 |0 |
-ROW |139880 |1221 |31349 |0 |10 |40CDFF|0 |2 |0 |
-ROW |139881 |1221 |31348 |0 |11 |40FFA0|0 |2 |0 |
-ROW |139882 |1221 |31347 |0 |12 |AE4500|0 |2 |0 |
-ROW |139883 |2323 |42881 |0 |0 |1A7C11|1 |2 |0 |
-ROW |139884 |2323 |42885 |0 |1 |2774A4|1 |2 |0 |
-ROW |139885 |2323 |42888 |0 |2 |F63100|1 |2 |0 |
-ROW |139886 |2323 |42883 |5 |3 |A54F10|0 |2 |0 |
-ROW |139887 |2323 |42886 |5 |4 |FC6EA3|0 |2 |0 |
-ROW |139888 |2323 |42889 |5 |5 |6C59DC|0 |2 |0 |
-ROW |139889 |1222 |31336 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139890 |2324 |42882 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139891 |2324 |42884 |0 |1 |2774A4|0 |2 |0 |
-ROW |139892 |2324 |42887 |0 |2 |F63100|0 |2 |0 |
-ROW |139893 |1456 |33178 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139894 |1456 |33179 |0 |1 |2774A4|0 |2 |0 |
-ROW |139895 |1456 |33180 |0 |2 |F63100|0 |2 |0 |
-ROW |139896 |1087 |30346 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139897 |1087 |30345 |0 |1 |2774A4|0 |2 |0 |
-ROW |139898 |1088 |30350 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139899 |1088 |30349 |5 |1 |2774A4|0 |2 |0 |
-ROW |139900 |1089 |30396 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139901 |1090 |30398 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139902 |1091 |30322 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139903 |1091 |30277 |5 |1 |2774A4|0 |2 |0 |
-ROW |139904 |1092 |30284 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139905 |1093 |30313 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139906 |1093 |30314 |0 |1 |2774A4|0 |2 |0 |
-ROW |139907 |1093 |30315 |5 |2 |F63100|0 |2 |0 |
-ROW |139908 |1093 |30316 |0 |3 |A54F10|0 |2 |0 |
-ROW |139909 |1094 |30279 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139910 |1094 |30280 |2 |1 |2774A4|0 |2 |0 |
-ROW |139911 |1095 |30290 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139912 |1095 |30293 |0 |1 |2774A4|0 |2 |0 |
-ROW |139913 |1096 |30318 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139914 |1096 |30308 |2 |1 |2774A4|0 |2 |0 |
-ROW |139915 |1096 |30320 |2 |2 |F63100|0 |2 |0 |
-ROW |139916 |1097 |30317 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139917 |1098 |30289 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139918 |1098 |30291 |5 |1 |2774A4|0 |2 |0 |
-ROW |139919 |1099 |30334 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139920 |1099 |30325 |2 |1 |2774A4|0 |2 |0 |
-ROW |139921 |1100 |30306 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139922 |1101 |30274 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139923 |1102 |30281 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139924 |1577 |34351 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139925 |1577 |34350 |0 |1 |2774A4|0 |2 |0 |
-ROW |139926 |1578 |34387 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139927 |1578 |34388 |2 |1 |2774A4|0 |2 |0 |
-ROW |139928 |1579 |34393 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139929 |1579 |34386 |0 |1 |2774A4|0 |2 |0 |
-ROW |139930 |1580 |34370 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139931 |1580 |34384 |0 |1 |2774A4|0 |2 |0 |
-ROW |139932 |1580 |34383 |0 |2 |F63100|0 |2 |0 |
-ROW |139933 |1581 |34438 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139934 |1581 |34413 |0 |1 |2774A4|0 |2 |0 |
-ROW |139935 |1581 |34427 |0 |2 |F63100|0 |2 |0 |
-ROW |139936 |1582 |34420 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139937 |1582 |34419 |0 |1 |2774A4|0 |2 |0 |
-ROW |139938 |1582 |34418 |0 |2 |F63100|0 |2 |0 |
-ROW |139939 |675 |27294 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139940 |1035 |30094 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139941 |1038 |30101 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139942 |786 |28246 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139943 |687 |27417 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139944 |691 |27376 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139945 |1060 |30159 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139946 |2114 |40461 |0 |0 |969696|0 |9 |2 |
-ROW |139947 |2114 |40462 |0 |1 |C80000|0 |9 |0 |
-ROW |139948 |2115 |40465 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139949 |1065 |30161 |0 |0 |969696|0 |9 |2 |
-ROW |139950 |1065 |30162 |0 |1 |C80000|0 |9 |0 |
-ROW |139951 |2120 |40451 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139952 |1070 |30142 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139953 |741 |27084 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139954 |741 |27085 |2 |1 |2774A4|0 |2 |0 |
-ROW |139955 |741 |27083 |0 |2 |F63100|1 |2 |0 |
-ROW |139956 |741 |27086 |0 |3 |A54F10|1 |2 |0 |
-ROW |139957 |741 |27082 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |139958 |741 |27079 |0 |5 |6C59DC|1 |2 |0 |
-ROW |139959 |745 |27104 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139960 |745 |27105 |2 |1 |2774A4|0 |2 |0 |
-ROW |139961 |745 |27103 |0 |2 |F63100|1 |2 |0 |
-ROW |139962 |745 |27106 |0 |3 |A54F10|1 |2 |0 |
-ROW |139963 |745 |27102 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |139964 |745 |27099 |0 |5 |6C59DC|1 |2 |0 |
-ROW |139965 |766 |27124 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139966 |766 |27125 |2 |1 |2774A4|0 |2 |0 |
-ROW |139967 |766 |27123 |0 |2 |F63100|1 |2 |0 |
-ROW |139968 |766 |27126 |0 |3 |A54F10|1 |2 |0 |
-ROW |139969 |766 |27122 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |139970 |766 |27119 |0 |5 |6C59DC|1 |2 |0 |
-ROW |139971 |1223 |31370 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139972 |1223 |31371 |5 |1 |2774A4|0 |2 |0 |
-ROW |139973 |1226 |31380 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139974 |1226 |31383 |5 |1 |2774A4|0 |2 |0 |
-ROW |139975 |1229 |31379 |0 |0 |1A7C11|1 |2 |0 |
-ROW |139976 |1229 |31382 |5 |1 |2774A4|0 |2 |0 |
-ROW |139977 |887 |29211 |0 |0 |969696|0 |9 |2 |
-ROW |139978 |887 |29210 |0 |1 |C80000|0 |9 |0 |
-ROW |139979 |899 |29216 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139980 |899 |29217 |2 |1 |2774A4|0 |2 |0 |
-ROW |139981 |899 |29218 |0 |2 |F63100|1 |2 |0 |
-ROW |139982 |899 |29219 |0 |3 |A54F10|1 |2 |0 |
-ROW |139983 |899 |29220 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |139984 |899 |29221 |0 |5 |6C59DC|1 |2 |0 |
-ROW |139985 |911 |29089 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139986 |911 |29102 |0 |1 |2774A4|0 |2 |0 |
-ROW |139987 |908 |29098 |0 |0 |1A7C11|0 |2 |0 |
-ROW |139988 |908 |29097 |0 |1 |2774A4|0 |2 |0 |
-ROW |139989 |908 |29095 |0 |2 |F63100|0 |2 |0 |
-ROW |139990 |908 |29088 |0 |3 |A54F10|0 |2 |0 |
-ROW |139991 |908 |29094 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |139992 |908 |29093 |0 |5 |6C59DC|0 |2 |0 |
-ROW |139993 |908 |29092 |0 |6 |AC8C14|0 |2 |0 |
-ROW |139994 |908 |29091 |0 |7 |611F27|0 |2 |0 |
-ROW |139995 |908 |29090 |0 |8 |F230E0|0 |2 |0 |
-ROW |139996 |905 |29198 |5 |0 |1A7C11|0 |2 |0 |
-ROW |139997 |917 |29104 |2 |0 |1A7C11|0 |2 |0 |
-ROW |139998 |917 |29105 |5 |1 |2774A4|0 |2 |0 |
-ROW |139999 |914 |31364 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140000 |923 |29118 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140001 |923 |29119 |0 |1 |2774A4|0 |2 |0 |
-ROW |140002 |923 |29117 |0 |2 |F63100|0 |2 |0 |
-ROW |140003 |920 |29107 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140004 |920 |29106 |0 |1 |2774A4|0 |2 |0 |
-ROW |140005 |902 |29096 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140006 |902 |29101 |0 |1 |2774A4|0 |2 |0 |
-ROW |140007 |902 |29100 |0 |2 |F63100|0 |2 |0 |
-ROW |140008 |902 |29087 |0 |3 |A54F10|1 |2 |0 |
-ROW |140009 |1279 |31902 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140010 |1279 |31903 |5 |1 |2774A4|0 |2 |0 |
-ROW |140011 |1281 |31933 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140012 |1281 |31936 |5 |1 |2774A4|0 |2 |0 |
-ROW |140013 |1283 |31932 |0 |0 |1A7C11|1 |2 |0 |
-ROW |140014 |1283 |31935 |5 |1 |2774A4|0 |2 |0 |
-ROW |140015 |1285 |31907 |0 |0 |969696|0 |9 |2 |
-ROW |140016 |1285 |31908 |0 |1 |C80000|0 |9 |0 |
-ROW |140017 |1287 |31911 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140018 |1287 |31914 |2 |1 |2774A4|0 |2 |0 |
-ROW |140019 |1287 |31913 |0 |2 |F63100|1 |2 |0 |
-ROW |140020 |1287 |31910 |0 |3 |A54F10|1 |2 |0 |
-ROW |140021 |1287 |31912 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140022 |1287 |31909 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140023 |1289 |31831 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140024 |1289 |31820 |0 |1 |2774A4|0 |2 |0 |
-ROW |140025 |1291 |31822 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140026 |1291 |31835 |0 |1 |2774A4|0 |2 |0 |
-ROW |140027 |1291 |31825 |0 |2 |F63100|0 |2 |0 |
-ROW |140028 |1291 |31826 |0 |3 |A54F10|0 |2 |0 |
-ROW |140029 |1291 |31823 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140030 |1291 |31827 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140031 |1291 |31824 |0 |6 |AC8C14|0 |2 |0 |
-ROW |140032 |1291 |31828 |0 |7 |611F27|0 |2 |0 |
-ROW |140033 |1291 |31830 |0 |8 |F230E0|0 |2 |0 |
-ROW |140034 |1293 |31892 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140035 |1295 |31855 |2 |0 |1A7C11|0 |2 |0 |
-ROW |140036 |1295 |31853 |5 |1 |2774A4|0 |2 |0 |
-ROW |140037 |1297 |31893 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140038 |1299 |31838 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140039 |1299 |31839 |0 |1 |2774A4|0 |2 |0 |
-ROW |140040 |1299 |31837 |0 |2 |F63100|0 |2 |0 |
-ROW |140041 |1301 |31850 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140042 |1301 |31852 |0 |1 |2774A4|0 |2 |0 |
-ROW |140043 |1303 |31829 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140044 |1303 |31833 |0 |1 |2774A4|0 |2 |0 |
-ROW |140045 |1303 |31834 |0 |2 |F63100|0 |2 |0 |
-ROW |140046 |1303 |31832 |0 |3 |A54F10|1 |2 |0 |
-ROW |140047 |866 |29014 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140048 |866 |29015 |5 |1 |2774A4|0 |2 |0 |
-ROW |140049 |868 |29018 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140050 |868 |29019 |0 |1 |2774A4|0 |2 |0 |
-ROW |140051 |868 |29022 |0 |2 |F63100|0 |2 |0 |
-ROW |140052 |868 |29023 |0 |3 |A54F10|0 |2 |0 |
-ROW |140053 |868 |29020 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140054 |868 |29024 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140055 |868 |29021 |0 |6 |AC8C14|0 |2 |0 |
-ROW |140056 |868 |29025 |0 |7 |611F27|0 |2 |0 |
-ROW |140057 |868 |29026 |0 |8 |F230E0|0 |2 |0 |
-ROW |140058 |870 |29048 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140059 |872 |29028 |0 |0 |969696|0 |9 |2 |
-ROW |140060 |872 |29027 |0 |1 |C80000|0 |9 |0 |
-ROW |140061 |882 |28992 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140062 |882 |28991 |0 |1 |2774A4|0 |2 |0 |
-ROW |140063 |876 |28982 |2 |0 |1A7C11|0 |2 |0 |
-ROW |140064 |876 |28983 |5 |1 |2774A4|0 |2 |0 |
-ROW |140065 |874 |28978 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140066 |878 |28985 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140067 |878 |28984 |0 |1 |2774A4|0 |2 |0 |
-ROW |140068 |880 |28987 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140069 |880 |28988 |0 |1 |2774A4|0 |2 |0 |
-ROW |140070 |880 |28989 |0 |2 |F63100|0 |2 |0 |
-ROW |140071 |880 |28990 |0 |3 |A54F10|1 |2 |0 |
-ROW |140072 |964 |29513 |0 |0 |969696|0 |9 |2 |
-ROW |140073 |964 |29512 |0 |1 |C80000|0 |9 |0 |
-ROW |140074 |1238 |31435 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140075 |1238 |31438 |2 |1 |2774A4|0 |2 |0 |
-ROW |140076 |1238 |31437 |0 |2 |F63100|1 |2 |0 |
-ROW |140077 |1238 |31434 |0 |3 |A54F10|1 |2 |0 |
-ROW |140078 |1238 |31436 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140079 |1238 |31433 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140080 |1488 |33321 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140081 |1488 |33324 |0 |1 |2774A4|0 |2 |0 |
-ROW |140082 |1490 |33322 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140083 |1490 |33323 |5 |1 |2774A4|0 |2 |0 |
-ROW |140084 |1240 |31441 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140085 |1240 |31442 |5 |1 |2774A4|0 |2 |0 |
-ROW |140086 |1242 |31440 |0 |0 |1A7C11|1 |2 |0 |
-ROW |140087 |1242 |31439 |5 |1 |2774A4|0 |2 |0 |
-ROW |140088 |974 |29456 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140089 |974 |29455 |0 |1 |2774A4|0 |2 |0 |
-ROW |140090 |976 |29458 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140091 |976 |29457 |0 |1 |2774A4|0 |2 |0 |
-ROW |140092 |972 |29454 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140093 |978 |29462 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140094 |980 |31421 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140095 |980 |29466 |0 |1 |2774A4|0 |2 |0 |
-ROW |140096 |1305 |32013 |0 |0 |969696|0 |9 |2 |
-ROW |140097 |1305 |32014 |0 |1 |C80000|0 |9 |0 |
-ROW |140098 |1307 |32017 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140099 |1307 |32020 |2 |1 |2774A4|0 |2 |0 |
-ROW |140100 |1307 |32019 |0 |2 |F63100|1 |2 |0 |
-ROW |140101 |1307 |32016 |0 |3 |A54F10|1 |2 |0 |
-ROW |140102 |1307 |32018 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140103 |1307 |32015 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140104 |1492 |33329 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140105 |1492 |33332 |0 |1 |2774A4|0 |2 |0 |
-ROW |140106 |1494 |33330 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140107 |1494 |33331 |5 |1 |2774A4|0 |2 |0 |
-ROW |140108 |1309 |32023 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140109 |1309 |32024 |5 |1 |2774A4|0 |2 |0 |
-ROW |140110 |1311 |32022 |0 |0 |1A7C11|1 |2 |0 |
-ROW |140111 |1311 |32021 |5 |1 |2774A4|0 |2 |0 |
-ROW |140112 |1313 |31952 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140113 |1313 |31949 |0 |1 |2774A4|0 |2 |0 |
-ROW |140114 |1315 |31951 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140115 |1315 |31950 |0 |1 |2774A4|0 |2 |0 |
-ROW |140116 |1317 |31954 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140117 |1319 |31973 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140118 |1321 |31969 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140119 |1321 |31970 |0 |1 |2774A4|0 |2 |0 |
-ROW |140120 |2123 |40493 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140121 |2123 |40496 |2 |1 |2774A4|0 |2 |0 |
-ROW |140122 |2123 |40495 |0 |2 |F63100|1 |2 |0 |
-ROW |140123 |2123 |40492 |0 |3 |A54F10|1 |2 |0 |
-ROW |140124 |2123 |40494 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140125 |2123 |40491 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140126 |668 |27208 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140127 |1032 |30088 |2 |0 |1A7C11|0 |2 |0 |
-ROW |140128 |1032 |30087 |5 |1 |2774A4|0 |2 |0 |
-ROW |140129 |1033 |30089 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140130 |2124 |40519 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140131 |2124 |40522 |2 |1 |2774A4|0 |2 |0 |
-ROW |140132 |2124 |40521 |0 |2 |F63100|1 |2 |0 |
-ROW |140133 |2124 |40518 |0 |3 |A54F10|1 |2 |0 |
-ROW |140134 |2124 |40520 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140135 |2124 |40517 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140136 |2125 |40528 |0 |0 |969696|0 |9 |2 |
-ROW |140137 |2125 |40529 |0 |1 |C80000|0 |9 |0 |
-ROW |140138 |2126 |40532 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140139 |2127 |40506 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140140 |2128 |40547 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140141 |2128 |40550 |2 |1 |2774A4|0 |2 |0 |
-ROW |140142 |2128 |40549 |0 |2 |F63100|1 |2 |0 |
-ROW |140143 |2128 |40546 |0 |3 |A54F10|1 |2 |0 |
-ROW |140144 |2128 |40548 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140145 |2128 |40545 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140146 |671 |27240 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140147 |1034 |30093 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140148 |2129 |40584 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140149 |2129 |40587 |2 |1 |2774A4|0 |2 |0 |
-ROW |140150 |2129 |40586 |0 |2 |F63100|1 |2 |0 |
-ROW |140151 |2129 |40583 |0 |3 |A54F10|1 |2 |0 |
-ROW |140152 |2129 |40585 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140153 |2129 |40582 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140154 |2130 |40593 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140155 |2130 |40596 |2 |1 |2774A4|0 |2 |0 |
-ROW |140156 |2130 |40595 |0 |2 |F63100|1 |2 |0 |
-ROW |140157 |2130 |40592 |0 |3 |A54F10|1 |2 |0 |
-ROW |140158 |2130 |40594 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140159 |2130 |40591 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140160 |2131 |40559 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140161 |2132 |40572 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140162 |2133 |40565 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140163 |2134 |40578 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140164 |1676 |35369 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140165 |1677 |35372 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140166 |1678 |35379 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140167 |1678 |35386 |0 |1 |2774A4|0 |2 |0 |
-ROW |140168 |1678 |35377 |0 |2 |F63100|0 |2 |0 |
-ROW |140169 |1678 |35384 |0 |3 |A54F10|0 |2 |0 |
-ROW |140170 |1678 |35376 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140171 |1678 |35383 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140172 |1679 |35387 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140173 |1679 |35380 |0 |1 |2774A4|0 |2 |0 |
-ROW |140174 |1680 |35378 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140175 |1680 |35385 |0 |1 |2774A4|0 |2 |0 |
-ROW |140176 |1681 |35403 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140177 |1681 |35404 |0 |1 |2774A4|0 |2 |0 |
-ROW |140178 |1549 |33966 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140179 |1550 |33971 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140180 |1551 |33974 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140181 |1551 |33977 |2 |1 |2774A4|0 |2 |0 |
-ROW |140182 |1551 |33976 |0 |2 |F63100|1 |2 |0 |
-ROW |140183 |1551 |33973 |0 |3 |A54F10|1 |2 |0 |
-ROW |140184 |1551 |33975 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140185 |1551 |33972 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140186 |1552 |34007 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140187 |1553 |34012 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140188 |1554 |34015 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140189 |1554 |34018 |2 |1 |2774A4|0 |2 |0 |
-ROW |140190 |1554 |34017 |0 |2 |F63100|1 |2 |0 |
-ROW |140191 |1554 |34014 |0 |3 |A54F10|1 |2 |0 |
-ROW |140192 |1554 |34016 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140193 |1554 |34013 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140194 |1555 |34048 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140195 |1556 |34053 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140196 |1557 |34056 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140197 |1557 |34059 |2 |1 |2774A4|0 |2 |0 |
-ROW |140198 |1557 |34058 |0 |2 |F63100|1 |2 |0 |
-ROW |140199 |1557 |34055 |0 |3 |A54F10|1 |2 |0 |
-ROW |140200 |1557 |34057 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140201 |1557 |34054 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140202 |1558 |34089 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140203 |1559 |34094 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140204 |1560 |34097 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140205 |1560 |34100 |2 |1 |2774A4|0 |2 |0 |
-ROW |140206 |1560 |34099 |0 |2 |F63100|1 |2 |0 |
-ROW |140207 |1560 |34096 |0 |3 |A54F10|1 |2 |0 |
-ROW |140208 |1560 |34098 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140209 |1560 |34095 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140210 |1561 |34130 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140211 |1562 |34135 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140212 |1563 |34138 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140213 |1563 |34141 |2 |1 |2774A4|0 |2 |0 |
-ROW |140214 |1563 |34140 |0 |2 |F63100|1 |2 |0 |
-ROW |140215 |1563 |34137 |0 |3 |A54F10|1 |2 |0 |
-ROW |140216 |1563 |34139 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140217 |1563 |34136 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140218 |2135 |40667 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140219 |2136 |40671 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140220 |2137 |40676 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140221 |2138 |40679 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140222 |2138 |40682 |2 |1 |2774A4|0 |2 |0 |
-ROW |140223 |2138 |40681 |0 |2 |F63100|1 |2 |0 |
-ROW |140224 |2138 |40678 |0 |3 |A54F10|1 |2 |0 |
-ROW |140225 |2138 |40680 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140226 |2138 |40677 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140227 |2139 |40690 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140228 |2140 |40695 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140229 |2141 |40698 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140230 |2141 |40701 |2 |1 |2774A4|0 |2 |0 |
-ROW |140231 |2141 |40700 |0 |2 |F63100|1 |2 |0 |
-ROW |140232 |2141 |40697 |0 |3 |A54F10|1 |2 |0 |
-ROW |140233 |2141 |40699 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140234 |2141 |40696 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140235 |2142 |40605 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140236 |694 |27478 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140237 |1042 |30105 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140238 |2143 |40723 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140239 |2143 |40726 |2 |1 |2774A4|0 |2 |0 |
-ROW |140240 |2143 |40725 |0 |2 |F63100|1 |2 |0 |
-ROW |140241 |2143 |40722 |0 |3 |A54F10|1 |2 |0 |
-ROW |140242 |2143 |40724 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140243 |2143 |40721 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140244 |1043 |30107 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140245 |2144 |40745 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140246 |2144 |40748 |2 |1 |2774A4|0 |2 |0 |
-ROW |140247 |2144 |40747 |0 |2 |F63100|1 |2 |0 |
-ROW |140248 |2144 |40744 |0 |3 |A54F10|1 |2 |0 |
-ROW |140249 |2144 |40746 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140250 |2144 |40743 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140251 |698 |27511 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140252 |1044 |30108 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140253 |2145 |40767 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140254 |2145 |40770 |2 |1 |2774A4|0 |2 |0 |
-ROW |140255 |2145 |40769 |0 |2 |F63100|1 |2 |0 |
-ROW |140256 |2145 |40766 |0 |3 |A54F10|1 |2 |0 |
-ROW |140257 |2145 |40768 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140258 |2145 |40765 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140259 |701 |27547 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140260 |1045 |27591 |2 |0 |1A7C11|0 |2 |0 |
-ROW |140261 |1045 |30110 |5 |1 |2774A4|0 |2 |0 |
-ROW |140262 |1046 |30111 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140263 |2146 |40790 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140264 |2146 |40793 |2 |1 |2774A4|0 |2 |0 |
-ROW |140265 |2146 |40792 |0 |2 |F63100|1 |2 |0 |
-ROW |140266 |2146 |40789 |0 |3 |A54F10|1 |2 |0 |
-ROW |140267 |2146 |40791 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140268 |2146 |40788 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140269 |704 |27586 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140270 |1682 |35439 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140271 |1683 |35441 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140272 |1684 |35443 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140273 |1685 |35446 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140274 |1686 |35450 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140275 |1686 |35465 |0 |1 |2774A4|0 |2 |0 |
-ROW |140276 |1686 |35456 |0 |2 |F63100|0 |2 |0 |
-ROW |140277 |1686 |35447 |0 |3 |A54F10|0 |2 |0 |
-ROW |140278 |1686 |35468 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140279 |1686 |35471 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140280 |1686 |35459 |0 |6 |AC8C14|0 |2 |0 |
-ROW |140281 |1687 |35449 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140282 |1687 |35464 |0 |1 |2774A4|0 |2 |0 |
-ROW |140283 |1687 |35455 |0 |2 |F63100|0 |2 |0 |
-ROW |140284 |1687 |35461 |0 |3 |A54F10|0 |2 |0 |
-ROW |140285 |1687 |35467 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140286 |1687 |35470 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140287 |1687 |35457 |0 |6 |AC8C14|0 |2 |0 |
-ROW |140288 |1688 |35473 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140289 |1688 |35463 |0 |1 |2774A4|0 |2 |0 |
-ROW |140290 |1688 |35454 |0 |2 |F63100|0 |2 |0 |
-ROW |140291 |1688 |35472 |0 |3 |A54F10|0 |2 |0 |
-ROW |140292 |1688 |35466 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140293 |1688 |35469 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140294 |1688 |35458 |0 |6 |AC8C14|0 |2 |0 |
-ROW |140295 |1689 |35474 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140296 |1690 |35476 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140297 |1691 |35478 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140298 |1691 |35480 |0 |1 |2774A4|0 |2 |0 |
-ROW |140299 |1692 |35487 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140300 |1692 |35484 |0 |1 |2774A4|0 |2 |0 |
-ROW |140301 |1693 |35486 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140302 |1693 |35483 |0 |1 |2774A4|0 |2 |0 |
-ROW |140303 |1694 |35490 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140304 |1694 |35488 |0 |1 |2774A4|0 |2 |0 |
-ROW |140305 |1694 |35489 |0 |2 |F63100|0 |2 |0 |
-ROW |140306 |1695 |35497 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140307 |1695 |35493 |0 |1 |2774A4|1 |2 |0 |
-ROW |140308 |1695 |35503 |0 |2 |F63100|0 |2 |0 |
-ROW |140309 |1695 |35499 |0 |3 |A54F10|1 |2 |0 |
-ROW |140310 |1695 |35496 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140311 |1695 |35502 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140312 |1696 |35508 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140313 |1696 |35507 |0 |1 |2774A4|1 |2 |0 |
-ROW |140314 |1696 |35510 |0 |2 |F63100|0 |2 |0 |
-ROW |140315 |1696 |35509 |0 |3 |A54F10|1 |2 |0 |
-ROW |140316 |1697 |35516 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140317 |1697 |35515 |0 |1 |2774A4|1 |2 |0 |
-ROW |140318 |1697 |35518 |0 |2 |F63100|0 |2 |0 |
-ROW |140319 |1697 |35517 |0 |3 |A54F10|1 |2 |0 |
-ROW |140320 |1698 |35524 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140321 |1698 |35523 |0 |1 |2774A4|1 |2 |0 |
-ROW |140322 |1698 |35526 |0 |2 |F63100|0 |2 |0 |
-ROW |140323 |1698 |35525 |0 |3 |A54F10|1 |2 |0 |
-ROW |140324 |1699 |35531 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140325 |1699 |35529 |0 |1 |2774A4|0 |2 |0 |
-ROW |140326 |1699 |35530 |0 |2 |F63100|0 |2 |0 |
-ROW |140327 |1700 |35411 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140328 |1700 |35409 |0 |1 |2774A4|0 |2 |0 |
-ROW |140329 |1700 |35407 |0 |2 |F63100|0 |2 |0 |
-ROW |140330 |1700 |35413 |0 |3 |A54F10|0 |2 |0 |
-ROW |140331 |1700 |35412 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |140332 |1700 |35410 |0 |5 |6C59DC|0 |2 |0 |
-ROW |140333 |2147 |40813 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140334 |2147 |40816 |2 |1 |2774A4|0 |2 |0 |
-ROW |140335 |2147 |40815 |0 |2 |F63100|1 |2 |0 |
-ROW |140336 |2147 |40812 |0 |3 |A54F10|1 |2 |0 |
-ROW |140337 |2147 |40814 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140338 |2147 |40811 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140339 |708 |27671 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140340 |1047 |30112 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140341 |2148 |40836 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140342 |2148 |40839 |2 |1 |2774A4|0 |2 |0 |
-ROW |140343 |2148 |40838 |0 |2 |F63100|1 |2 |0 |
-ROW |140344 |2148 |40835 |0 |3 |A54F10|1 |2 |0 |
-ROW |140345 |2148 |40837 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140346 |2148 |40834 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140347 |1048 |30114 |2 |0 |1A7C11|0 |2 |0 |
-ROW |140348 |1048 |30113 |5 |1 |2774A4|0 |2 |0 |
-ROW |140349 |1049 |30115 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140350 |2149 |40859 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140351 |2149 |40862 |2 |1 |2774A4|0 |2 |0 |
-ROW |140352 |2149 |40861 |0 |2 |F63100|1 |2 |0 |
-ROW |140353 |2149 |40858 |0 |3 |A54F10|1 |2 |0 |
-ROW |140354 |2149 |40860 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140355 |2149 |40857 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140356 |775 |28143 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140357 |714 |27753 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140358 |1050 |30116 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140359 |2150 |40882 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140360 |2150 |40885 |2 |1 |2774A4|0 |2 |0 |
-ROW |140361 |2150 |40884 |0 |2 |F63100|1 |2 |0 |
-ROW |140362 |2150 |40881 |0 |3 |A54F10|1 |2 |0 |
-ROW |140363 |2150 |40883 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140364 |2150 |40880 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140365 |2151 |40904 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140366 |2151 |40907 |2 |1 |2774A4|0 |2 |0 |
-ROW |140367 |2151 |40906 |0 |2 |F63100|1 |2 |0 |
-ROW |140368 |2151 |40903 |0 |3 |A54F10|1 |2 |0 |
-ROW |140369 |2151 |40905 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140370 |2151 |40902 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140371 |856 |28894 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140372 |1051 |30118 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140373 |2152 |40926 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140374 |2152 |40929 |2 |1 |2774A4|0 |2 |0 |
-ROW |140375 |2152 |40928 |0 |2 |F63100|1 |2 |0 |
-ROW |140376 |2152 |40925 |0 |3 |A54F10|1 |2 |0 |
-ROW |140377 |2152 |40927 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140378 |2152 |40924 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140379 |1564 |34166 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140380 |1564 |34169 |2 |1 |2774A4|0 |2 |0 |
-ROW |140381 |1564 |34168 |0 |2 |F63100|1 |2 |0 |
-ROW |140382 |1564 |34165 |0 |3 |A54F10|1 |2 |0 |
-ROW |140383 |1564 |34167 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140384 |1564 |34164 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140385 |1565 |34174 |0 |0 |969696|0 |9 |2 |
-ROW |140386 |1565 |34175 |0 |1 |C80000|0 |9 |0 |
-ROW |140387 |1566 |34178 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140388 |1567 |34154 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140389 |1811 |36861 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140390 |1812 |36867 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140391 |1812 |36865 |0 |1 |2774A4|0 |2 |0 |
-ROW |140392 |1812 |36864 |0 |2 |F63100|0 |2 |0 |
-ROW |140393 |1812 |36866 |0 |3 |A54F10|0 |2 |0 |
-ROW |140394 |2153 |40948 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140395 |2153 |40951 |2 |1 |2774A4|0 |2 |0 |
-ROW |140396 |2153 |40950 |0 |2 |F63100|1 |2 |0 |
-ROW |140397 |2153 |40947 |0 |3 |A54F10|1 |2 |0 |
-ROW |140398 |2153 |40949 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140399 |2153 |40946 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140400 |1813 |36878 |0 |0 |969696|0 |9 |2 |
-ROW |140401 |1813 |36879 |0 |1 |C80000|0 |9 |0 |
-ROW |140402 |1814 |36853 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140403 |1816 |36915 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140404 |1817 |36921 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140405 |1817 |36919 |0 |1 |2774A4|0 |2 |0 |
-ROW |140406 |1817 |36918 |0 |2 |F63100|0 |2 |0 |
-ROW |140407 |1817 |36920 |0 |3 |A54F10|0 |2 |0 |
-ROW |140408 |2154 |40969 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140409 |2154 |40972 |2 |1 |2774A4|0 |2 |0 |
-ROW |140410 |2154 |40971 |0 |2 |F63100|1 |2 |0 |
-ROW |140411 |2154 |40968 |0 |3 |A54F10|1 |2 |0 |
-ROW |140412 |2154 |40970 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140413 |2154 |40967 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140414 |1818 |36932 |0 |0 |969696|0 |9 |2 |
-ROW |140415 |1818 |36933 |0 |1 |C80000|0 |9 |0 |
-ROW |140416 |1819 |36907 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140417 |1821 |36969 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140418 |1822 |36975 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140419 |1822 |36973 |0 |1 |2774A4|0 |2 |0 |
-ROW |140420 |1822 |36972 |0 |2 |F63100|0 |2 |0 |
-ROW |140421 |1822 |36974 |0 |3 |A54F10|0 |2 |0 |
-ROW |140422 |2155 |40990 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140423 |2155 |40993 |2 |1 |2774A4|0 |2 |0 |
-ROW |140424 |2155 |40992 |0 |2 |F63100|1 |2 |0 |
-ROW |140425 |2155 |40989 |0 |3 |A54F10|1 |2 |0 |
-ROW |140426 |2155 |40991 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140427 |2155 |40988 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140428 |1823 |36986 |0 |0 |969696|0 |9 |2 |
-ROW |140429 |1823 |36987 |0 |1 |C80000|0 |9 |0 |
-ROW |140430 |1824 |36961 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140431 |1826 |37023 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140432 |1827 |37029 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140433 |1827 |37027 |0 |1 |2774A4|0 |2 |0 |
-ROW |140434 |1827 |37026 |0 |2 |F63100|0 |2 |0 |
-ROW |140435 |1827 |37028 |0 |3 |A54F10|0 |2 |0 |
-ROW |140436 |2156 |41011 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140437 |2156 |41014 |2 |1 |2774A4|0 |2 |0 |
-ROW |140438 |2156 |41013 |0 |2 |F63100|1 |2 |0 |
-ROW |140439 |2156 |41010 |0 |3 |A54F10|1 |2 |0 |
-ROW |140440 |2156 |41012 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140441 |2156 |41009 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140442 |1828 |37040 |0 |0 |969696|0 |9 |2 |
-ROW |140443 |1828 |37041 |0 |1 |C80000|0 |9 |0 |
-ROW |140444 |1829 |37015 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140445 |1831 |37077 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140446 |1832 |37083 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140447 |1832 |37081 |0 |1 |2774A4|0 |2 |0 |
-ROW |140448 |1832 |37080 |0 |2 |F63100|0 |2 |0 |
-ROW |140449 |1832 |37082 |0 |3 |A54F10|0 |2 |0 |
-ROW |140450 |2157 |41032 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140451 |2157 |41035 |2 |1 |2774A4|0 |2 |0 |
-ROW |140452 |2157 |41034 |0 |2 |F63100|1 |2 |0 |
-ROW |140453 |2157 |41031 |0 |3 |A54F10|1 |2 |0 |
-ROW |140454 |2157 |41033 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140455 |2157 |41030 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140456 |1833 |37094 |0 |0 |969696|0 |9 |2 |
-ROW |140457 |1833 |37095 |0 |1 |C80000|0 |9 |0 |
-ROW |140458 |1834 |37069 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140459 |1836 |37131 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140460 |1837 |37137 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140461 |1837 |37135 |0 |1 |2774A4|0 |2 |0 |
-ROW |140462 |1837 |37134 |0 |2 |F63100|0 |2 |0 |
-ROW |140463 |1837 |37136 |0 |3 |A54F10|0 |2 |0 |
-ROW |140464 |2158 |41053 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140465 |2158 |41056 |2 |1 |2774A4|0 |2 |0 |
-ROW |140466 |2158 |41055 |0 |2 |F63100|1 |2 |0 |
-ROW |140467 |2158 |41052 |0 |3 |A54F10|1 |2 |0 |
-ROW |140468 |2158 |41054 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140469 |2158 |41051 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140470 |1838 |37148 |0 |0 |969696|0 |9 |2 |
-ROW |140471 |1838 |37149 |0 |1 |C80000|0 |9 |0 |
-ROW |140472 |1839 |37123 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140473 |1841 |37185 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140474 |1842 |37191 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140475 |1842 |37189 |0 |1 |2774A4|0 |2 |0 |
-ROW |140476 |1842 |37188 |0 |2 |F63100|0 |2 |0 |
-ROW |140477 |1842 |37190 |0 |3 |A54F10|0 |2 |0 |
-ROW |140478 |2159 |41074 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140479 |2159 |41077 |2 |1 |2774A4|0 |2 |0 |
-ROW |140480 |2159 |41076 |0 |2 |F63100|1 |2 |0 |
-ROW |140481 |2159 |41073 |0 |3 |A54F10|1 |2 |0 |
-ROW |140482 |2159 |41075 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140483 |2159 |41072 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140484 |1843 |37202 |0 |0 |969696|0 |9 |2 |
-ROW |140485 |1843 |37203 |0 |1 |C80000|0 |9 |0 |
-ROW |140486 |1844 |37177 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140487 |1846 |37239 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140488 |1847 |37245 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140489 |1847 |37243 |0 |1 |2774A4|0 |2 |0 |
-ROW |140490 |1847 |37242 |0 |2 |F63100|0 |2 |0 |
-ROW |140491 |1847 |37244 |0 |3 |A54F10|0 |2 |0 |
-ROW |140492 |2160 |41095 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140493 |2160 |41098 |2 |1 |2774A4|0 |2 |0 |
-ROW |140494 |2160 |41097 |0 |2 |F63100|1 |2 |0 |
-ROW |140495 |2160 |41094 |0 |3 |A54F10|1 |2 |0 |
-ROW |140496 |2160 |41096 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140497 |2160 |41093 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140498 |1848 |37256 |0 |0 |969696|0 |9 |2 |
-ROW |140499 |1848 |37257 |0 |1 |C80000|0 |9 |0 |
-ROW |140500 |1849 |37231 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140501 |1851 |37293 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140502 |1852 |37299 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140503 |1852 |37297 |0 |1 |2774A4|0 |2 |0 |
-ROW |140504 |1852 |37296 |0 |2 |F63100|0 |2 |0 |
-ROW |140505 |1852 |37298 |0 |3 |A54F10|0 |2 |0 |
-ROW |140506 |2161 |41116 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140507 |2161 |41119 |2 |1 |2774A4|0 |2 |0 |
-ROW |140508 |2161 |41118 |0 |2 |F63100|1 |2 |0 |
-ROW |140509 |2161 |41115 |0 |3 |A54F10|1 |2 |0 |
-ROW |140510 |2161 |41117 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140511 |2161 |41114 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140512 |1853 |37310 |0 |0 |969696|0 |9 |2 |
-ROW |140513 |1853 |37311 |0 |1 |C80000|0 |9 |0 |
-ROW |140514 |1854 |37285 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140515 |1856 |37347 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140516 |1857 |37353 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140517 |1857 |37351 |0 |1 |2774A4|0 |2 |0 |
-ROW |140518 |1857 |37350 |0 |2 |F63100|0 |2 |0 |
-ROW |140519 |1857 |37352 |0 |3 |A54F10|0 |2 |0 |
-ROW |140520 |2162 |41137 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140521 |2162 |41140 |2 |1 |2774A4|0 |2 |0 |
-ROW |140522 |2162 |41139 |0 |2 |F63100|1 |2 |0 |
-ROW |140523 |2162 |41136 |0 |3 |A54F10|1 |2 |0 |
-ROW |140524 |2162 |41138 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140525 |2162 |41135 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140526 |1858 |37364 |0 |0 |969696|0 |9 |2 |
-ROW |140527 |1858 |37365 |0 |1 |C80000|0 |9 |0 |
-ROW |140528 |1859 |37339 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140529 |1861 |37401 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140530 |1862 |37407 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140531 |1862 |37405 |0 |1 |2774A4|0 |2 |0 |
-ROW |140532 |1862 |37404 |0 |2 |F63100|0 |2 |0 |
-ROW |140533 |1862 |37406 |0 |3 |A54F10|0 |2 |0 |
-ROW |140534 |2163 |41158 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140535 |2163 |41161 |2 |1 |2774A4|0 |2 |0 |
-ROW |140536 |2163 |41160 |0 |2 |F63100|1 |2 |0 |
-ROW |140537 |2163 |41157 |0 |3 |A54F10|1 |2 |0 |
-ROW |140538 |2163 |41159 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140539 |2163 |41156 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140540 |1863 |37418 |0 |0 |969696|0 |9 |2 |
-ROW |140541 |1863 |37419 |0 |1 |C80000|0 |9 |0 |
-ROW |140542 |1864 |37393 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140543 |1866 |37455 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140544 |1867 |37461 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140545 |1867 |37459 |0 |1 |2774A4|0 |2 |0 |
-ROW |140546 |1867 |37458 |0 |2 |F63100|0 |2 |0 |
-ROW |140547 |1867 |37460 |0 |3 |A54F10|0 |2 |0 |
-ROW |140548 |2164 |41179 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140549 |2164 |41182 |2 |1 |2774A4|0 |2 |0 |
-ROW |140550 |2164 |41181 |0 |2 |F63100|1 |2 |0 |
-ROW |140551 |2164 |41178 |0 |3 |A54F10|1 |2 |0 |
-ROW |140552 |2164 |41180 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140553 |2164 |41177 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140554 |1868 |37472 |0 |0 |969696|0 |9 |2 |
-ROW |140555 |1868 |37473 |0 |1 |C80000|0 |9 |0 |
-ROW |140556 |1869 |37447 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140557 |1871 |37509 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140558 |1872 |37515 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140559 |1872 |37513 |0 |1 |2774A4|0 |2 |0 |
-ROW |140560 |1872 |37512 |0 |2 |F63100|0 |2 |0 |
-ROW |140561 |1872 |37514 |0 |3 |A54F10|0 |2 |0 |
-ROW |140562 |2165 |41200 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140563 |2165 |41203 |2 |1 |2774A4|0 |2 |0 |
-ROW |140564 |2165 |41202 |0 |2 |F63100|1 |2 |0 |
-ROW |140565 |2165 |41199 |0 |3 |A54F10|1 |2 |0 |
-ROW |140566 |2165 |41201 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140567 |2165 |41198 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140568 |1873 |37526 |0 |0 |969696|0 |9 |2 |
-ROW |140569 |1873 |37527 |0 |1 |C80000|0 |9 |0 |
-ROW |140570 |1874 |37501 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140571 |1876 |37563 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140572 |1877 |37569 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140573 |1877 |37567 |0 |1 |2774A4|0 |2 |0 |
-ROW |140574 |1877 |37566 |0 |2 |F63100|0 |2 |0 |
-ROW |140575 |1877 |37568 |0 |3 |A54F10|0 |2 |0 |
-ROW |140576 |2166 |41221 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140577 |2166 |41224 |2 |1 |2774A4|0 |2 |0 |
-ROW |140578 |2166 |41223 |0 |2 |F63100|1 |2 |0 |
-ROW |140579 |2166 |41220 |0 |3 |A54F10|1 |2 |0 |
-ROW |140580 |2166 |41222 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140581 |2166 |41219 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140582 |1878 |37580 |0 |0 |969696|0 |9 |2 |
-ROW |140583 |1878 |37581 |0 |1 |C80000|0 |9 |0 |
-ROW |140584 |1879 |37555 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140585 |1881 |37617 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140586 |1882 |37623 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140587 |1882 |37621 |0 |1 |2774A4|0 |2 |0 |
-ROW |140588 |1882 |37620 |0 |2 |F63100|0 |2 |0 |
-ROW |140589 |1882 |37622 |0 |3 |A54F10|0 |2 |0 |
-ROW |140590 |2167 |41242 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140591 |2167 |41245 |2 |1 |2774A4|0 |2 |0 |
-ROW |140592 |2167 |41244 |0 |2 |F63100|1 |2 |0 |
-ROW |140593 |2167 |41241 |0 |3 |A54F10|1 |2 |0 |
-ROW |140594 |2167 |41243 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140595 |2167 |41240 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140596 |1883 |37634 |0 |0 |969696|0 |9 |2 |
-ROW |140597 |1883 |37635 |0 |1 |C80000|0 |9 |0 |
-ROW |140598 |1884 |37609 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140599 |1886 |37671 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140600 |1887 |37677 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140601 |1887 |37675 |0 |1 |2774A4|0 |2 |0 |
-ROW |140602 |1887 |37674 |0 |2 |F63100|0 |2 |0 |
-ROW |140603 |1887 |37676 |0 |3 |A54F10|0 |2 |0 |
-ROW |140604 |2168 |41263 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140605 |2168 |41266 |2 |1 |2774A4|0 |2 |0 |
-ROW |140606 |2168 |41265 |0 |2 |F63100|1 |2 |0 |
-ROW |140607 |2168 |41262 |0 |3 |A54F10|1 |2 |0 |
-ROW |140608 |2168 |41264 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140609 |2168 |41261 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140610 |1888 |37688 |0 |0 |969696|0 |9 |2 |
-ROW |140611 |1888 |37689 |0 |1 |C80000|0 |9 |0 |
-ROW |140612 |1889 |37663 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140613 |1891 |37725 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140614 |1892 |37731 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140615 |1892 |37729 |0 |1 |2774A4|0 |2 |0 |
-ROW |140616 |1892 |37728 |0 |2 |F63100|0 |2 |0 |
-ROW |140617 |1892 |37730 |0 |3 |A54F10|0 |2 |0 |
-ROW |140618 |2169 |41284 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140619 |2169 |41287 |2 |1 |2774A4|0 |2 |0 |
-ROW |140620 |2169 |41286 |0 |2 |F63100|1 |2 |0 |
-ROW |140621 |2169 |41283 |0 |3 |A54F10|1 |2 |0 |
-ROW |140622 |2169 |41285 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140623 |2169 |41282 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140624 |1893 |37742 |0 |0 |969696|0 |9 |2 |
-ROW |140625 |1893 |37743 |0 |1 |C80000|0 |9 |0 |
-ROW |140626 |1894 |37717 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140627 |1896 |37779 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140628 |1897 |37785 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140629 |1897 |37783 |0 |1 |2774A4|0 |2 |0 |
-ROW |140630 |1897 |37782 |0 |2 |F63100|0 |2 |0 |
-ROW |140631 |1897 |37784 |0 |3 |A54F10|0 |2 |0 |
-ROW |140632 |2170 |41305 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140633 |2170 |41308 |2 |1 |2774A4|0 |2 |0 |
-ROW |140634 |2170 |41307 |0 |2 |F63100|1 |2 |0 |
-ROW |140635 |2170 |41304 |0 |3 |A54F10|1 |2 |0 |
-ROW |140636 |2170 |41306 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140637 |2170 |41303 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140638 |1898 |37796 |0 |0 |969696|0 |9 |2 |
-ROW |140639 |1898 |37797 |0 |1 |C80000|0 |9 |0 |
-ROW |140640 |1899 |37771 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140641 |1901 |37833 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140642 |1902 |37839 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140643 |1902 |37837 |0 |1 |2774A4|0 |2 |0 |
-ROW |140644 |1902 |37836 |0 |2 |F63100|0 |2 |0 |
-ROW |140645 |1902 |37838 |0 |3 |A54F10|0 |2 |0 |
-ROW |140646 |2171 |41326 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140647 |2171 |41329 |2 |1 |2774A4|0 |2 |0 |
-ROW |140648 |2171 |41328 |0 |2 |F63100|1 |2 |0 |
-ROW |140649 |2171 |41325 |0 |3 |A54F10|1 |2 |0 |
-ROW |140650 |2171 |41327 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140651 |2171 |41324 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140652 |1903 |37850 |0 |0 |969696|0 |9 |2 |
-ROW |140653 |1903 |37851 |0 |1 |C80000|0 |9 |0 |
-ROW |140654 |1904 |37825 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140655 |1906 |37887 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140656 |1907 |37893 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140657 |1907 |37891 |0 |1 |2774A4|0 |2 |0 |
-ROW |140658 |1907 |37890 |0 |2 |F63100|0 |2 |0 |
-ROW |140659 |1907 |37892 |0 |3 |A54F10|0 |2 |0 |
-ROW |140660 |2172 |41347 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140661 |2172 |41350 |2 |1 |2774A4|0 |2 |0 |
-ROW |140662 |2172 |41349 |0 |2 |F63100|1 |2 |0 |
-ROW |140663 |2172 |41346 |0 |3 |A54F10|1 |2 |0 |
-ROW |140664 |2172 |41348 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140665 |2172 |41345 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140666 |1908 |37904 |0 |0 |969696|0 |9 |2 |
-ROW |140667 |1908 |37905 |0 |1 |C80000|0 |9 |0 |
-ROW |140668 |1909 |37879 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140669 |1911 |37941 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140670 |1912 |37947 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140671 |1912 |37945 |0 |1 |2774A4|0 |2 |0 |
-ROW |140672 |1912 |37944 |0 |2 |F63100|0 |2 |0 |
-ROW |140673 |1912 |37946 |0 |3 |A54F10|0 |2 |0 |
-ROW |140674 |2173 |41368 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140675 |2173 |41371 |2 |1 |2774A4|0 |2 |0 |
-ROW |140676 |2173 |41370 |0 |2 |F63100|1 |2 |0 |
-ROW |140677 |2173 |41367 |0 |3 |A54F10|1 |2 |0 |
-ROW |140678 |2173 |41369 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140679 |2173 |41366 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140680 |1913 |37958 |0 |0 |969696|0 |9 |2 |
-ROW |140681 |1913 |37959 |0 |1 |C80000|0 |9 |0 |
-ROW |140682 |1914 |37933 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140683 |1916 |37995 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140684 |1917 |38001 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140685 |1917 |37999 |0 |1 |2774A4|0 |2 |0 |
-ROW |140686 |1917 |37998 |0 |2 |F63100|0 |2 |0 |
-ROW |140687 |1917 |38000 |0 |3 |A54F10|0 |2 |0 |
-ROW |140688 |2174 |41389 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140689 |2174 |41392 |2 |1 |2774A4|0 |2 |0 |
-ROW |140690 |2174 |41391 |0 |2 |F63100|1 |2 |0 |
-ROW |140691 |2174 |41388 |0 |3 |A54F10|1 |2 |0 |
-ROW |140692 |2174 |41390 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140693 |2174 |41387 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140694 |1918 |38012 |0 |0 |969696|0 |9 |2 |
-ROW |140695 |1918 |38013 |0 |1 |C80000|0 |9 |0 |
-ROW |140696 |1919 |37987 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140697 |1921 |38049 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140698 |1922 |38055 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140699 |1922 |38053 |0 |1 |2774A4|0 |2 |0 |
-ROW |140700 |1922 |38052 |0 |2 |F63100|0 |2 |0 |
-ROW |140701 |1922 |38054 |0 |3 |A54F10|0 |2 |0 |
-ROW |140702 |2175 |41410 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140703 |2175 |41413 |2 |1 |2774A4|0 |2 |0 |
-ROW |140704 |2175 |41412 |0 |2 |F63100|1 |2 |0 |
-ROW |140705 |2175 |41409 |0 |3 |A54F10|1 |2 |0 |
-ROW |140706 |2175 |41411 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140707 |2175 |41408 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140708 |1923 |38066 |0 |0 |969696|0 |9 |2 |
-ROW |140709 |1923 |38067 |0 |1 |C80000|0 |9 |0 |
-ROW |140710 |1924 |38041 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140711 |1926 |38103 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140712 |1927 |38109 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140713 |1927 |38107 |0 |1 |2774A4|0 |2 |0 |
-ROW |140714 |1927 |38106 |0 |2 |F63100|0 |2 |0 |
-ROW |140715 |1927 |38108 |0 |3 |A54F10|0 |2 |0 |
-ROW |140716 |2176 |41431 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140717 |2176 |41434 |2 |1 |2774A4|0 |2 |0 |
-ROW |140718 |2176 |41433 |0 |2 |F63100|1 |2 |0 |
-ROW |140719 |2176 |41430 |0 |3 |A54F10|1 |2 |0 |
-ROW |140720 |2176 |41432 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140721 |2176 |41429 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140722 |1928 |38120 |0 |0 |969696|0 |9 |2 |
-ROW |140723 |1928 |38121 |0 |1 |C80000|0 |9 |0 |
-ROW |140724 |1929 |38095 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140725 |1931 |38157 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140726 |1932 |38163 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140727 |1932 |38161 |0 |1 |2774A4|0 |2 |0 |
-ROW |140728 |1932 |38160 |0 |2 |F63100|0 |2 |0 |
-ROW |140729 |1932 |38162 |0 |3 |A54F10|0 |2 |0 |
-ROW |140730 |2177 |41452 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140731 |2177 |41455 |2 |1 |2774A4|0 |2 |0 |
-ROW |140732 |2177 |41454 |0 |2 |F63100|1 |2 |0 |
-ROW |140733 |2177 |41451 |0 |3 |A54F10|1 |2 |0 |
-ROW |140734 |2177 |41453 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140735 |2177 |41450 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140736 |1933 |38174 |0 |0 |969696|0 |9 |2 |
-ROW |140737 |1933 |38175 |0 |1 |C80000|0 |9 |0 |
-ROW |140738 |1934 |38149 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140739 |1936 |38211 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140740 |1937 |38217 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140741 |1937 |38215 |0 |1 |2774A4|0 |2 |0 |
-ROW |140742 |1937 |38214 |0 |2 |F63100|0 |2 |0 |
-ROW |140743 |1937 |38216 |0 |3 |A54F10|0 |2 |0 |
-ROW |140744 |2178 |41473 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140745 |2178 |41476 |2 |1 |2774A4|0 |2 |0 |
-ROW |140746 |2178 |41475 |0 |2 |F63100|1 |2 |0 |
-ROW |140747 |2178 |41472 |0 |3 |A54F10|1 |2 |0 |
-ROW |140748 |2178 |41474 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140749 |2178 |41471 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140750 |1938 |38228 |0 |0 |969696|0 |9 |2 |
-ROW |140751 |1938 |38229 |0 |1 |C80000|0 |9 |0 |
-ROW |140752 |1939 |38203 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140753 |1941 |38265 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140754 |1942 |38271 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140755 |1942 |38269 |0 |1 |2774A4|0 |2 |0 |
-ROW |140756 |1942 |38268 |0 |2 |F63100|0 |2 |0 |
-ROW |140757 |1942 |38270 |0 |3 |A54F10|0 |2 |0 |
-ROW |140758 |2179 |41494 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140759 |2179 |41497 |2 |1 |2774A4|0 |2 |0 |
-ROW |140760 |2179 |41496 |0 |2 |F63100|1 |2 |0 |
-ROW |140761 |2179 |41493 |0 |3 |A54F10|1 |2 |0 |
-ROW |140762 |2179 |41495 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140763 |2179 |41492 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140764 |1943 |38282 |0 |0 |969696|0 |9 |2 |
-ROW |140765 |1943 |38283 |0 |1 |C80000|0 |9 |0 |
-ROW |140766 |1944 |38257 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140767 |1946 |38319 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140768 |1947 |38325 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140769 |1947 |38323 |0 |1 |2774A4|0 |2 |0 |
-ROW |140770 |1947 |38322 |0 |2 |F63100|0 |2 |0 |
-ROW |140771 |1947 |38324 |0 |3 |A54F10|0 |2 |0 |
-ROW |140772 |2180 |41515 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140773 |2180 |41518 |2 |1 |2774A4|0 |2 |0 |
-ROW |140774 |2180 |41517 |0 |2 |F63100|1 |2 |0 |
-ROW |140775 |2180 |41514 |0 |3 |A54F10|1 |2 |0 |
-ROW |140776 |2180 |41516 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140777 |2180 |41513 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140778 |1948 |38336 |0 |0 |969696|0 |9 |2 |
-ROW |140779 |1948 |38337 |0 |1 |C80000|0 |9 |0 |
-ROW |140780 |1949 |38311 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140781 |1951 |38373 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140782 |1952 |38379 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140783 |1952 |38377 |0 |1 |2774A4|0 |2 |0 |
-ROW |140784 |1952 |38376 |0 |2 |F63100|0 |2 |0 |
-ROW |140785 |1952 |38378 |0 |3 |A54F10|0 |2 |0 |
-ROW |140786 |2181 |41536 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140787 |2181 |41539 |2 |1 |2774A4|0 |2 |0 |
-ROW |140788 |2181 |41538 |0 |2 |F63100|1 |2 |0 |
-ROW |140789 |2181 |41535 |0 |3 |A54F10|1 |2 |0 |
-ROW |140790 |2181 |41537 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140791 |2181 |41534 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140792 |1953 |38390 |0 |0 |969696|0 |9 |2 |
-ROW |140793 |1953 |38391 |0 |1 |C80000|0 |9 |0 |
-ROW |140794 |1954 |38365 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140795 |1956 |38427 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140796 |1957 |38433 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140797 |1957 |38431 |0 |1 |2774A4|0 |2 |0 |
-ROW |140798 |1957 |38430 |0 |2 |F63100|0 |2 |0 |
-ROW |140799 |1957 |38432 |0 |3 |A54F10|0 |2 |0 |
-ROW |140800 |2182 |41557 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140801 |2182 |41560 |2 |1 |2774A4|0 |2 |0 |
-ROW |140802 |2182 |41559 |0 |2 |F63100|1 |2 |0 |
-ROW |140803 |2182 |41556 |0 |3 |A54F10|1 |2 |0 |
-ROW |140804 |2182 |41558 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140805 |2182 |41555 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140806 |1958 |38444 |0 |0 |969696|0 |9 |2 |
-ROW |140807 |1958 |38445 |0 |1 |C80000|0 |9 |0 |
-ROW |140808 |1959 |38419 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140809 |1961 |38481 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140810 |1962 |38487 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140811 |1962 |38485 |0 |1 |2774A4|0 |2 |0 |
-ROW |140812 |1962 |38484 |0 |2 |F63100|0 |2 |0 |
-ROW |140813 |1962 |38486 |0 |3 |A54F10|0 |2 |0 |
-ROW |140814 |2183 |41578 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140815 |2183 |41581 |2 |1 |2774A4|0 |2 |0 |
-ROW |140816 |2183 |41580 |0 |2 |F63100|1 |2 |0 |
-ROW |140817 |2183 |41577 |0 |3 |A54F10|1 |2 |0 |
-ROW |140818 |2183 |41579 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140819 |2183 |41576 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140820 |1963 |38498 |0 |0 |969696|0 |9 |2 |
-ROW |140821 |1963 |38499 |0 |1 |C80000|0 |9 |0 |
-ROW |140822 |1964 |38473 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140823 |1966 |38535 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140824 |1967 |38541 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140825 |1967 |38539 |0 |1 |2774A4|0 |2 |0 |
-ROW |140826 |1967 |38538 |0 |2 |F63100|0 |2 |0 |
-ROW |140827 |1967 |38540 |0 |3 |A54F10|0 |2 |0 |
-ROW |140828 |2184 |41599 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140829 |2184 |41602 |2 |1 |2774A4|0 |2 |0 |
-ROW |140830 |2184 |41601 |0 |2 |F63100|1 |2 |0 |
-ROW |140831 |2184 |41598 |0 |3 |A54F10|1 |2 |0 |
-ROW |140832 |2184 |41600 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140833 |2184 |41597 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140834 |1968 |38552 |0 |0 |969696|0 |9 |2 |
-ROW |140835 |1968 |38553 |0 |1 |C80000|0 |9 |0 |
-ROW |140836 |1969 |38527 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140837 |1971 |38589 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140838 |1972 |38595 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140839 |1972 |38593 |0 |1 |2774A4|0 |2 |0 |
-ROW |140840 |1972 |38592 |0 |2 |F63100|0 |2 |0 |
-ROW |140841 |1972 |38594 |0 |3 |A54F10|0 |2 |0 |
-ROW |140842 |2185 |41620 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140843 |2185 |41623 |2 |1 |2774A4|0 |2 |0 |
-ROW |140844 |2185 |41622 |0 |2 |F63100|1 |2 |0 |
-ROW |140845 |2185 |41619 |0 |3 |A54F10|1 |2 |0 |
-ROW |140846 |2185 |41621 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140847 |2185 |41618 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140848 |1973 |38606 |0 |0 |969696|0 |9 |2 |
-ROW |140849 |1973 |38607 |0 |1 |C80000|0 |9 |0 |
-ROW |140850 |1974 |38581 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140851 |1976 |38643 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140852 |1977 |38649 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140853 |1977 |38647 |0 |1 |2774A4|0 |2 |0 |
-ROW |140854 |1977 |38646 |0 |2 |F63100|0 |2 |0 |
-ROW |140855 |1977 |38648 |0 |3 |A54F10|0 |2 |0 |
-ROW |140856 |2186 |41641 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140857 |2186 |41644 |2 |1 |2774A4|0 |2 |0 |
-ROW |140858 |2186 |41643 |0 |2 |F63100|1 |2 |0 |
-ROW |140859 |2186 |41640 |0 |3 |A54F10|1 |2 |0 |
-ROW |140860 |2186 |41642 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140861 |2186 |41639 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140862 |1978 |38660 |0 |0 |969696|0 |9 |2 |
-ROW |140863 |1978 |38661 |0 |1 |C80000|0 |9 |0 |
-ROW |140864 |1979 |38635 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140865 |1981 |38697 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140866 |1982 |38703 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140867 |1982 |38701 |0 |1 |2774A4|0 |2 |0 |
-ROW |140868 |1982 |38700 |0 |2 |F63100|0 |2 |0 |
-ROW |140869 |1982 |38702 |0 |3 |A54F10|0 |2 |0 |
-ROW |140870 |2187 |41662 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140871 |2187 |41665 |2 |1 |2774A4|0 |2 |0 |
-ROW |140872 |2187 |41664 |0 |2 |F63100|1 |2 |0 |
-ROW |140873 |2187 |41661 |0 |3 |A54F10|1 |2 |0 |
-ROW |140874 |2187 |41663 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140875 |2187 |41660 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140876 |1983 |38714 |0 |0 |969696|0 |9 |2 |
-ROW |140877 |1983 |38715 |0 |1 |C80000|0 |9 |0 |
-ROW |140878 |1984 |38689 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140879 |1986 |38751 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140880 |1987 |38757 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140881 |1987 |38755 |0 |1 |2774A4|0 |2 |0 |
-ROW |140882 |1987 |38754 |0 |2 |F63100|0 |2 |0 |
-ROW |140883 |1987 |38756 |0 |3 |A54F10|0 |2 |0 |
-ROW |140884 |2188 |41683 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140885 |2188 |41686 |2 |1 |2774A4|0 |2 |0 |
-ROW |140886 |2188 |41685 |0 |2 |F63100|1 |2 |0 |
-ROW |140887 |2188 |41682 |0 |3 |A54F10|1 |2 |0 |
-ROW |140888 |2188 |41684 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140889 |2188 |41681 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140890 |1988 |38768 |0 |0 |969696|0 |9 |2 |
-ROW |140891 |1988 |38769 |0 |1 |C80000|0 |9 |0 |
-ROW |140892 |1989 |38743 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140893 |1991 |38805 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140894 |1992 |38811 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140895 |1992 |38809 |0 |1 |2774A4|0 |2 |0 |
-ROW |140896 |1992 |38808 |0 |2 |F63100|0 |2 |0 |
-ROW |140897 |1992 |38810 |0 |3 |A54F10|0 |2 |0 |
-ROW |140898 |2189 |41704 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140899 |2189 |41707 |2 |1 |2774A4|0 |2 |0 |
-ROW |140900 |2189 |41706 |0 |2 |F63100|1 |2 |0 |
-ROW |140901 |2189 |41703 |0 |3 |A54F10|1 |2 |0 |
-ROW |140902 |2189 |41705 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140903 |2189 |41702 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140904 |1993 |38822 |0 |0 |969696|0 |9 |2 |
-ROW |140905 |1993 |38823 |0 |1 |C80000|0 |9 |0 |
-ROW |140906 |1994 |38797 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140907 |1996 |38859 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140908 |1997 |38865 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140909 |1997 |38863 |0 |1 |2774A4|0 |2 |0 |
-ROW |140910 |1997 |38862 |0 |2 |F63100|0 |2 |0 |
-ROW |140911 |1997 |38864 |0 |3 |A54F10|0 |2 |0 |
-ROW |140912 |2190 |41725 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140913 |2190 |41728 |2 |1 |2774A4|0 |2 |0 |
-ROW |140914 |2190 |41727 |0 |2 |F63100|1 |2 |0 |
-ROW |140915 |2190 |41724 |0 |3 |A54F10|1 |2 |0 |
-ROW |140916 |2190 |41726 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140917 |2190 |41723 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140918 |1998 |38876 |0 |0 |969696|0 |9 |2 |
-ROW |140919 |1998 |38877 |0 |1 |C80000|0 |9 |0 |
-ROW |140920 |1999 |38851 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140921 |2001 |38913 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140922 |2002 |38919 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140923 |2002 |38917 |0 |1 |2774A4|0 |2 |0 |
-ROW |140924 |2002 |38916 |0 |2 |F63100|0 |2 |0 |
-ROW |140925 |2002 |38918 |0 |3 |A54F10|0 |2 |0 |
-ROW |140926 |2191 |41746 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140927 |2191 |41749 |2 |1 |2774A4|0 |2 |0 |
-ROW |140928 |2191 |41748 |0 |2 |F63100|1 |2 |0 |
-ROW |140929 |2191 |41745 |0 |3 |A54F10|1 |2 |0 |
-ROW |140930 |2191 |41747 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140931 |2191 |41744 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140932 |2003 |38930 |0 |0 |969696|0 |9 |2 |
-ROW |140933 |2003 |38931 |0 |1 |C80000|0 |9 |0 |
-ROW |140934 |2004 |38905 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140935 |2006 |38967 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140936 |2007 |38973 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140937 |2007 |38971 |0 |1 |2774A4|0 |2 |0 |
-ROW |140938 |2007 |38970 |0 |2 |F63100|0 |2 |0 |
-ROW |140939 |2007 |38972 |0 |3 |A54F10|0 |2 |0 |
-ROW |140940 |2192 |41767 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140941 |2192 |41770 |2 |1 |2774A4|0 |2 |0 |
-ROW |140942 |2192 |41769 |0 |2 |F63100|1 |2 |0 |
-ROW |140943 |2192 |41766 |0 |3 |A54F10|1 |2 |0 |
-ROW |140944 |2192 |41768 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140945 |2192 |41765 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140946 |2008 |38984 |0 |0 |969696|0 |9 |2 |
-ROW |140947 |2008 |38985 |0 |1 |C80000|0 |9 |0 |
-ROW |140948 |2009 |38959 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140949 |2011 |39021 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140950 |2012 |39027 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140951 |2012 |39025 |0 |1 |2774A4|0 |2 |0 |
-ROW |140952 |2012 |39024 |0 |2 |F63100|0 |2 |0 |
-ROW |140953 |2012 |39026 |0 |3 |A54F10|0 |2 |0 |
-ROW |140954 |2193 |41788 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140955 |2193 |41791 |2 |1 |2774A4|0 |2 |0 |
-ROW |140956 |2193 |41790 |0 |2 |F63100|1 |2 |0 |
-ROW |140957 |2193 |41787 |0 |3 |A54F10|1 |2 |0 |
-ROW |140958 |2193 |41789 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140959 |2193 |41786 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140960 |2013 |39038 |0 |0 |969696|0 |9 |2 |
-ROW |140961 |2013 |39039 |0 |1 |C80000|0 |9 |0 |
-ROW |140962 |2014 |39013 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140963 |2016 |39075 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140964 |2017 |39081 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140965 |2017 |39079 |0 |1 |2774A4|0 |2 |0 |
-ROW |140966 |2017 |39078 |0 |2 |F63100|0 |2 |0 |
-ROW |140967 |2017 |39080 |0 |3 |A54F10|0 |2 |0 |
-ROW |140968 |2194 |41809 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140969 |2194 |41812 |2 |1 |2774A4|0 |2 |0 |
-ROW |140970 |2194 |41811 |0 |2 |F63100|1 |2 |0 |
-ROW |140971 |2194 |41808 |0 |3 |A54F10|1 |2 |0 |
-ROW |140972 |2194 |41810 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140973 |2194 |41807 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140974 |2018 |39092 |0 |0 |969696|0 |9 |2 |
-ROW |140975 |2018 |39093 |0 |1 |C80000|0 |9 |0 |
-ROW |140976 |2019 |39067 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140977 |2021 |39129 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140978 |2022 |39135 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140979 |2022 |39133 |0 |1 |2774A4|0 |2 |0 |
-ROW |140980 |2022 |39132 |0 |2 |F63100|0 |2 |0 |
-ROW |140981 |2022 |39134 |0 |3 |A54F10|0 |2 |0 |
-ROW |140982 |2195 |41830 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140983 |2195 |41833 |2 |1 |2774A4|0 |2 |0 |
-ROW |140984 |2195 |41832 |0 |2 |F63100|1 |2 |0 |
-ROW |140985 |2195 |41829 |0 |3 |A54F10|1 |2 |0 |
-ROW |140986 |2195 |41831 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |140987 |2195 |41828 |0 |5 |6C59DC|1 |2 |0 |
-ROW |140988 |2023 |39146 |0 |0 |969696|0 |9 |2 |
-ROW |140989 |2023 |39147 |0 |1 |C80000|0 |9 |0 |
-ROW |140990 |2024 |39121 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140991 |2026 |39183 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140992 |2027 |39189 |0 |0 |1A7C11|0 |2 |0 |
-ROW |140993 |2027 |39187 |0 |1 |2774A4|0 |2 |0 |
-ROW |140994 |2027 |39186 |0 |2 |F63100|0 |2 |0 |
-ROW |140995 |2027 |39188 |0 |3 |A54F10|0 |2 |0 |
-ROW |140996 |2196 |41851 |5 |0 |1A7C11|0 |2 |0 |
-ROW |140997 |2196 |41854 |2 |1 |2774A4|0 |2 |0 |
-ROW |140998 |2196 |41853 |0 |2 |F63100|1 |2 |0 |
-ROW |140999 |2196 |41850 |0 |3 |A54F10|1 |2 |0 |
-ROW |141000 |2196 |41852 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141001 |2196 |41849 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141002 |2028 |39200 |0 |0 |969696|0 |9 |2 |
-ROW |141003 |2028 |39201 |0 |1 |C80000|0 |9 |0 |
-ROW |141004 |2029 |39175 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141005 |2031 |39237 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141006 |2032 |39243 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141007 |2032 |39241 |0 |1 |2774A4|0 |2 |0 |
-ROW |141008 |2032 |39240 |0 |2 |F63100|0 |2 |0 |
-ROW |141009 |2032 |39242 |0 |3 |A54F10|0 |2 |0 |
-ROW |141010 |2197 |41872 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141011 |2197 |41875 |2 |1 |2774A4|0 |2 |0 |
-ROW |141012 |2197 |41874 |0 |2 |F63100|1 |2 |0 |
-ROW |141013 |2197 |41871 |0 |3 |A54F10|1 |2 |0 |
-ROW |141014 |2197 |41873 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141015 |2197 |41870 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141016 |2033 |39254 |0 |0 |969696|0 |9 |2 |
-ROW |141017 |2033 |39255 |0 |1 |C80000|0 |9 |0 |
-ROW |141018 |2034 |39229 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141019 |2036 |39291 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141020 |2037 |39297 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141021 |2037 |39295 |0 |1 |2774A4|0 |2 |0 |
-ROW |141022 |2037 |39294 |0 |2 |F63100|0 |2 |0 |
-ROW |141023 |2037 |39296 |0 |3 |A54F10|0 |2 |0 |
-ROW |141024 |2198 |41893 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141025 |2198 |41896 |2 |1 |2774A4|0 |2 |0 |
-ROW |141026 |2198 |41895 |0 |2 |F63100|1 |2 |0 |
-ROW |141027 |2198 |41892 |0 |3 |A54F10|1 |2 |0 |
-ROW |141028 |2198 |41894 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141029 |2198 |41891 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141030 |2038 |39308 |0 |0 |969696|0 |9 |2 |
-ROW |141031 |2038 |39309 |0 |1 |C80000|0 |9 |0 |
-ROW |141032 |2039 |39283 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141033 |2041 |39345 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141034 |2042 |39351 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141035 |2042 |39349 |0 |1 |2774A4|0 |2 |0 |
-ROW |141036 |2042 |39348 |0 |2 |F63100|0 |2 |0 |
-ROW |141037 |2042 |39350 |0 |3 |A54F10|0 |2 |0 |
-ROW |141038 |2199 |41914 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141039 |2199 |41917 |2 |1 |2774A4|0 |2 |0 |
-ROW |141040 |2199 |41916 |0 |2 |F63100|1 |2 |0 |
-ROW |141041 |2199 |41913 |0 |3 |A54F10|1 |2 |0 |
-ROW |141042 |2199 |41915 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141043 |2199 |41912 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141044 |2043 |39362 |0 |0 |969696|0 |9 |2 |
-ROW |141045 |2043 |39363 |0 |1 |C80000|0 |9 |0 |
-ROW |141046 |2044 |39337 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141047 |2046 |39399 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141048 |2047 |39405 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141049 |2047 |39403 |0 |1 |2774A4|0 |2 |0 |
-ROW |141050 |2047 |39402 |0 |2 |F63100|0 |2 |0 |
-ROW |141051 |2047 |39404 |0 |3 |A54F10|0 |2 |0 |
-ROW |141052 |2200 |41935 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141053 |2200 |41938 |2 |1 |2774A4|0 |2 |0 |
-ROW |141054 |2200 |41937 |0 |2 |F63100|1 |2 |0 |
-ROW |141055 |2200 |41934 |0 |3 |A54F10|1 |2 |0 |
-ROW |141056 |2200 |41936 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141057 |2200 |41933 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141058 |2048 |39416 |0 |0 |969696|0 |9 |2 |
-ROW |141059 |2048 |39417 |0 |1 |C80000|0 |9 |0 |
-ROW |141060 |2049 |39391 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141061 |2051 |39453 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141062 |2052 |39459 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141063 |2052 |39457 |0 |1 |2774A4|0 |2 |0 |
-ROW |141064 |2052 |39456 |0 |2 |F63100|0 |2 |0 |
-ROW |141065 |2052 |39458 |0 |3 |A54F10|0 |2 |0 |
-ROW |141066 |2201 |41956 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141067 |2201 |41959 |2 |1 |2774A4|0 |2 |0 |
-ROW |141068 |2201 |41958 |0 |2 |F63100|1 |2 |0 |
-ROW |141069 |2201 |41955 |0 |3 |A54F10|1 |2 |0 |
-ROW |141070 |2201 |41957 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141071 |2201 |41954 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141072 |2053 |39470 |0 |0 |969696|0 |9 |2 |
-ROW |141073 |2053 |39471 |0 |1 |C80000|0 |9 |0 |
-ROW |141074 |2054 |39445 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141075 |2056 |39507 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141076 |2057 |39513 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141077 |2057 |39511 |0 |1 |2774A4|0 |2 |0 |
-ROW |141078 |2057 |39510 |0 |2 |F63100|0 |2 |0 |
-ROW |141079 |2057 |39512 |0 |3 |A54F10|0 |2 |0 |
-ROW |141080 |2202 |41977 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141081 |2202 |41980 |2 |1 |2774A4|0 |2 |0 |
-ROW |141082 |2202 |41979 |0 |2 |F63100|1 |2 |0 |
-ROW |141083 |2202 |41976 |0 |3 |A54F10|1 |2 |0 |
-ROW |141084 |2202 |41978 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141085 |2202 |41975 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141086 |2058 |39524 |0 |0 |969696|0 |9 |2 |
-ROW |141087 |2058 |39525 |0 |1 |C80000|0 |9 |0 |
-ROW |141088 |2059 |39499 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141089 |2061 |39561 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141090 |2062 |39567 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141091 |2062 |39565 |0 |1 |2774A4|0 |2 |0 |
-ROW |141092 |2062 |39564 |0 |2 |F63100|0 |2 |0 |
-ROW |141093 |2062 |39566 |0 |3 |A54F10|0 |2 |0 |
-ROW |141094 |2203 |41998 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141095 |2203 |42001 |2 |1 |2774A4|0 |2 |0 |
-ROW |141096 |2203 |42000 |0 |2 |F63100|1 |2 |0 |
-ROW |141097 |2203 |41997 |0 |3 |A54F10|1 |2 |0 |
-ROW |141098 |2203 |41999 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141099 |2203 |41996 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141100 |2063 |39578 |0 |0 |969696|0 |9 |2 |
-ROW |141101 |2063 |39579 |0 |1 |C80000|0 |9 |0 |
-ROW |141102 |2064 |39553 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141103 |2066 |39615 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141104 |2067 |39621 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141105 |2067 |39619 |0 |1 |2774A4|0 |2 |0 |
-ROW |141106 |2067 |39618 |0 |2 |F63100|0 |2 |0 |
-ROW |141107 |2067 |39620 |0 |3 |A54F10|0 |2 |0 |
-ROW |141108 |2204 |42019 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141109 |2204 |42022 |2 |1 |2774A4|0 |2 |0 |
-ROW |141110 |2204 |42021 |0 |2 |F63100|1 |2 |0 |
-ROW |141111 |2204 |42018 |0 |3 |A54F10|1 |2 |0 |
-ROW |141112 |2204 |42020 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141113 |2204 |42017 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141114 |2068 |39632 |0 |0 |969696|0 |9 |2 |
-ROW |141115 |2068 |39633 |0 |1 |C80000|0 |9 |0 |
-ROW |141116 |2069 |39607 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141117 |2071 |39669 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141118 |2072 |39675 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141119 |2072 |39673 |0 |1 |2774A4|0 |2 |0 |
-ROW |141120 |2072 |39672 |0 |2 |F63100|0 |2 |0 |
-ROW |141121 |2072 |39674 |0 |3 |A54F10|0 |2 |0 |
-ROW |141122 |2205 |42040 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141123 |2205 |42043 |2 |1 |2774A4|0 |2 |0 |
-ROW |141124 |2205 |42042 |0 |2 |F63100|1 |2 |0 |
-ROW |141125 |2205 |42039 |0 |3 |A54F10|1 |2 |0 |
-ROW |141126 |2205 |42041 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141127 |2205 |42038 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141128 |2073 |39686 |0 |0 |969696|0 |9 |2 |
-ROW |141129 |2073 |39687 |0 |1 |C80000|0 |9 |0 |
-ROW |141130 |2074 |39661 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141131 |2076 |39723 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141132 |2077 |39729 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141133 |2077 |39727 |0 |1 |2774A4|0 |2 |0 |
-ROW |141134 |2077 |39726 |0 |2 |F63100|0 |2 |0 |
-ROW |141135 |2077 |39728 |0 |3 |A54F10|0 |2 |0 |
-ROW |141136 |2206 |42061 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141137 |2206 |42064 |2 |1 |2774A4|0 |2 |0 |
-ROW |141138 |2206 |42063 |0 |2 |F63100|1 |2 |0 |
-ROW |141139 |2206 |42060 |0 |3 |A54F10|1 |2 |0 |
-ROW |141140 |2206 |42062 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141141 |2206 |42059 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141142 |2078 |39740 |0 |0 |969696|0 |9 |2 |
-ROW |141143 |2078 |39741 |0 |1 |C80000|0 |9 |0 |
-ROW |141144 |2079 |39715 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141145 |724 |27904 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141146 |1396 |32439 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141147 |1396 |32437 |0 |1 |2774A4|0 |2 |0 |
-ROW |141148 |1396 |32436 |0 |2 |F63100|0 |2 |0 |
-ROW |141149 |1396 |32438 |0 |3 |A54F10|0 |2 |0 |
-ROW |141150 |2207 |42082 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141151 |2207 |42085 |2 |1 |2774A4|0 |2 |0 |
-ROW |141152 |2207 |42084 |0 |2 |F63100|1 |2 |0 |
-ROW |141153 |2207 |42081 |0 |3 |A54F10|1 |2 |0 |
-ROW |141154 |2207 |42083 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141155 |2207 |42080 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141156 |1052 |27907 |0 |0 |969696|0 |9 |2 |
-ROW |141157 |1052 |27908 |0 |1 |C80000|0 |9 |0 |
-ROW |141158 |1053 |30120 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141159 |1457 |33206 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141160 |1457 |33193 |5 |1 |2774A4|0 |2 |0 |
-ROW |141161 |1458 |33195 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141162 |1458 |33203 |5 |1 |2774A4|0 |2 |0 |
-ROW |141163 |1458 |33202 |5 |2 |F63100|0 |2 |0 |
-ROW |141164 |1459 |33200 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141165 |1459 |33194 |5 |1 |2774A4|0 |2 |0 |
-ROW |141166 |1460 |33187 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141167 |1460 |33186 |5 |1 |2774A4|0 |2 |0 |
-ROW |141168 |1460 |33204 |5 |2 |F63100|0 |2 |0 |
-ROW |141169 |1461 |33226 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141170 |1461 |33215 |5 |1 |2774A4|0 |2 |0 |
-ROW |141171 |1462 |33207 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141172 |1463 |33223 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141173 |1463 |33218 |5 |1 |2774A4|0 |2 |0 |
-ROW |141174 |1464 |33210 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141175 |1464 |33209 |5 |1 |2774A4|0 |2 |0 |
-ROW |141176 |1464 |33224 |5 |2 |F63100|0 |2 |0 |
-ROW |141177 |1465 |33249 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141178 |1465 |33236 |5 |1 |2774A4|0 |2 |0 |
-ROW |141179 |1466 |33238 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141180 |1466 |33246 |5 |1 |2774A4|0 |2 |0 |
-ROW |141181 |1466 |33245 |5 |2 |F63100|0 |2 |0 |
-ROW |141182 |1467 |33243 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141183 |1467 |33237 |5 |1 |2774A4|0 |2 |0 |
-ROW |141184 |1468 |33230 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141185 |1468 |33229 |5 |1 |2774A4|0 |2 |0 |
-ROW |141186 |1468 |33247 |5 |2 |F63100|0 |2 |0 |
-ROW |141187 |1469 |33258 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141188 |1470 |33251 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141189 |1471 |33256 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141190 |1472 |33277 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141191 |1473 |33274 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141192 |1473 |33273 |5 |1 |2774A4|0 |2 |0 |
-ROW |141193 |1473 |33272 |5 |2 |F63100|0 |2 |0 |
-ROW |141194 |1474 |33270 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141195 |1475 |33269 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141196 |1476 |33261 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141197 |1476 |33275 |5 |1 |2774A4|0 |2 |0 |
-ROW |141198 |1477 |33296 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141199 |1478 |33293 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141200 |1478 |33292 |5 |1 |2774A4|0 |2 |0 |
-ROW |141201 |1478 |33291 |5 |2 |F63100|0 |2 |0 |
-ROW |141202 |1479 |33289 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141203 |1480 |33288 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141204 |1481 |33280 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141205 |1481 |33294 |5 |1 |2774A4|0 |2 |0 |
-ROW |141206 |1482 |33312 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141207 |1483 |33313 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141208 |1484 |33314 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141209 |1485 |33319 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141210 |1486 |33320 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141211 |1487 |33304 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141212 |1487 |33305 |5 |1 |2774A4|0 |2 |0 |
-ROW |141213 |2208 |42103 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141214 |2208 |42106 |2 |1 |2774A4|0 |2 |0 |
-ROW |141215 |2208 |42105 |0 |2 |F63100|1 |2 |0 |
-ROW |141216 |2208 |42102 |0 |3 |A54F10|1 |2 |0 |
-ROW |141217 |2208 |42104 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141218 |2208 |42101 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141219 |727 |27936 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141220 |1054 |27935 |2 |0 |1A7C11|0 |2 |0 |
-ROW |141221 |1054 |30122 |5 |1 |2774A4|0 |2 |0 |
-ROW |141222 |1055 |30123 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141223 |2209 |42125 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141224 |2209 |42128 |2 |1 |2774A4|0 |2 |0 |
-ROW |141225 |2209 |42127 |0 |2 |F63100|1 |2 |0 |
-ROW |141226 |2209 |42124 |0 |3 |A54F10|1 |2 |0 |
-ROW |141227 |2209 |42126 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141228 |2209 |42123 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141229 |730 |27975 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141230 |1056 |30126 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141231 |733 |28003 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141232 |1057 |30131 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141233 |2210 |42147 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141234 |2210 |42150 |2 |1 |2774A4|0 |2 |0 |
-ROW |141235 |2210 |42149 |0 |2 |F63100|1 |2 |0 |
-ROW |141236 |2210 |42146 |0 |3 |A54F10|1 |2 |0 |
-ROW |141237 |2210 |42148 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141238 |2210 |42145 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141239 |2211 |42168 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141240 |2211 |42171 |2 |1 |2774A4|0 |2 |0 |
-ROW |141241 |2211 |42170 |0 |2 |F63100|1 |2 |0 |
-ROW |141242 |2211 |42167 |0 |3 |A54F10|1 |2 |0 |
-ROW |141243 |2211 |42169 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141244 |2211 |42166 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141245 |736 |28031 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141246 |1058 |30136 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141247 |2080 |39768 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141248 |2080 |39769 |0 |1 |2774A4|0 |2 |0 |
-ROW |141249 |2080 |39770 |0 |2 |F63100|0 |2 |0 |
-ROW |141250 |2080 |39771 |0 |3 |A54F10|0 |2 |0 |
-ROW |141251 |2081 |39772 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141252 |2081 |39773 |0 |1 |2774A4|0 |2 |0 |
-ROW |141253 |2082 |39774 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141254 |2082 |39775 |0 |1 |2774A4|0 |2 |0 |
-ROW |141255 |2082 |39780 |0 |2 |F63100|0 |2 |0 |
-ROW |141256 |2083 |39777 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141257 |2083 |39778 |0 |1 |2774A4|0 |2 |0 |
-ROW |141258 |2083 |39781 |0 |2 |F63100|0 |2 |0 |
-ROW |141259 |2084 |39792 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141260 |2084 |39790 |0 |1 |2774A4|0 |2 |0 |
-ROW |141261 |2084 |39793 |0 |2 |F63100|0 |2 |0 |
-ROW |141262 |2084 |39795 |0 |3 |A54F10|0 |2 |0 |
-ROW |141263 |2084 |39796 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141264 |1701 |35553 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141265 |1701 |35556 |0 |1 |2774A4|0 |2 |0 |
-ROW |141266 |1702 |35558 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141267 |1702 |35561 |0 |1 |2774A4|0 |2 |0 |
-ROW |141268 |1703 |35562 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141269 |1704 |35563 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141270 |1705 |35592 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141271 |1705 |35584 |0 |1 |2774A4|0 |2 |0 |
-ROW |141272 |1705 |35594 |0 |2 |F63100|0 |2 |0 |
-ROW |141273 |1705 |35586 |0 |3 |A54F10|0 |2 |0 |
-ROW |141274 |1705 |35595 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141275 |1705 |35587 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141276 |1706 |35593 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141277 |1706 |35585 |0 |1 |2774A4|0 |2 |0 |
-ROW |141278 |1707 |35583 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141279 |1707 |35591 |0 |1 |2774A4|0 |2 |0 |
-ROW |141280 |1708 |35598 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141281 |1709 |35606 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141282 |1710 |35607 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141283 |1711 |35566 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141284 |1712 |35622 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141285 |1713 |35634 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141286 |1713 |35626 |0 |1 |2774A4|0 |2 |0 |
-ROW |141287 |1713 |35636 |0 |2 |F63100|0 |2 |0 |
-ROW |141288 |1713 |35628 |0 |3 |A54F10|0 |2 |0 |
-ROW |141289 |1713 |35637 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141290 |1713 |35629 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141291 |1714 |35635 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141292 |1714 |35627 |0 |1 |2774A4|0 |2 |0 |
-ROW |141293 |1715 |35625 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141294 |1715 |35633 |0 |1 |2774A4|0 |2 |0 |
-ROW |141295 |1716 |35640 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141296 |1717 |35641 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141297 |1718 |35610 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141298 |1719 |35658 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141299 |1720 |35659 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141300 |1721 |35660 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141301 |1722 |35661 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141302 |1723 |35669 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141303 |1723 |35679 |0 |1 |2774A4|0 |2 |0 |
-ROW |141304 |1723 |35670 |0 |2 |F63100|0 |2 |0 |
-ROW |141305 |1723 |35665 |0 |3 |A54F10|0 |2 |0 |
-ROW |141306 |1723 |35672 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141307 |1723 |35666 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141308 |1724 |35663 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141309 |1724 |35664 |0 |1 |2774A4|0 |2 |0 |
-ROW |141310 |1725 |35686 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141311 |1725 |35693 |0 |1 |2774A4|0 |2 |0 |
-ROW |141312 |1725 |35684 |0 |2 |F63100|0 |2 |0 |
-ROW |141313 |1725 |35691 |0 |3 |A54F10|0 |2 |0 |
-ROW |141314 |1725 |35683 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141315 |1725 |35690 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141316 |1726 |35685 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141317 |1726 |35692 |0 |1 |2774A4|0 |2 |0 |
-ROW |141318 |1727 |35694 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141319 |1727 |35687 |0 |1 |2774A4|0 |2 |0 |
-ROW |141320 |1728 |35707 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141321 |1729 |35708 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141322 |1730 |35725 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141323 |1731 |35726 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141324 |1732 |35727 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141325 |1733 |35728 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141326 |1734 |35736 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141327 |1734 |35746 |0 |1 |2774A4|0 |2 |0 |
-ROW |141328 |1734 |35737 |0 |2 |F63100|0 |2 |0 |
-ROW |141329 |1734 |35732 |0 |3 |A54F10|0 |2 |0 |
-ROW |141330 |1734 |35739 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141331 |1734 |35733 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141332 |1735 |35730 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141333 |1735 |35731 |0 |1 |2774A4|0 |2 |0 |
-ROW |141334 |1736 |35753 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141335 |1736 |35760 |0 |1 |2774A4|0 |2 |0 |
-ROW |141336 |1736 |35751 |0 |2 |F63100|0 |2 |0 |
-ROW |141337 |1736 |35758 |0 |3 |A54F10|0 |2 |0 |
-ROW |141338 |1736 |35750 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141339 |1736 |35757 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141340 |1737 |35752 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141341 |1737 |35759 |0 |1 |2774A4|0 |2 |0 |
-ROW |141342 |1738 |35761 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141343 |1738 |35754 |0 |1 |2774A4|0 |2 |0 |
-ROW |141344 |1739 |35774 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141345 |1740 |35775 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141346 |1741 |35791 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141347 |1742 |35799 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141348 |1742 |35802 |0 |1 |2774A4|0 |2 |0 |
-ROW |141349 |1743 |35804 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141350 |1743 |35807 |0 |1 |2774A4|0 |2 |0 |
-ROW |141351 |1744 |35808 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141352 |1745 |35809 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141353 |1746 |35834 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141354 |1746 |35826 |0 |1 |2774A4|0 |2 |0 |
-ROW |141355 |1746 |35836 |0 |2 |F63100|0 |2 |0 |
-ROW |141356 |1746 |35828 |0 |3 |A54F10|0 |2 |0 |
-ROW |141357 |1746 |35837 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141358 |1746 |35829 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141359 |1747 |35835 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141360 |1747 |35827 |0 |1 |2774A4|0 |2 |0 |
-ROW |141361 |1748 |35825 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141362 |1748 |35833 |0 |1 |2774A4|0 |2 |0 |
-ROW |141363 |1749 |35840 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141364 |1750 |35812 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141365 |1751 |35876 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141366 |1751 |35868 |0 |1 |2774A4|0 |2 |0 |
-ROW |141367 |1751 |35878 |0 |2 |F63100|0 |2 |0 |
-ROW |141368 |1751 |35870 |0 |3 |A54F10|0 |2 |0 |
-ROW |141369 |1751 |35879 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141370 |1751 |35871 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141371 |1752 |35877 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141372 |1752 |35869 |0 |1 |2774A4|0 |2 |0 |
-ROW |141373 |1753 |35867 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141374 |1753 |35875 |0 |1 |2774A4|0 |2 |0 |
-ROW |141375 |1754 |35882 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141376 |1755 |35890 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141377 |1756 |35891 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141378 |1757 |35850 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141379 |1758 |35920 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141380 |1758 |35912 |0 |1 |2774A4|0 |2 |0 |
-ROW |141381 |1758 |35922 |0 |2 |F63100|0 |2 |0 |
-ROW |141382 |1758 |35914 |0 |3 |A54F10|0 |2 |0 |
-ROW |141383 |1758 |35923 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141384 |1758 |35915 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141385 |1759 |35921 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141386 |1759 |35913 |0 |1 |2774A4|0 |2 |0 |
-ROW |141387 |1760 |35911 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141388 |1760 |35919 |0 |1 |2774A4|0 |2 |0 |
-ROW |141389 |1761 |35926 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141390 |1762 |35934 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141391 |1763 |35935 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141392 |1764 |35894 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141393 |1765 |35952 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141394 |1766 |35964 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141395 |1766 |35956 |0 |1 |2774A4|0 |2 |0 |
-ROW |141396 |1766 |35966 |0 |2 |F63100|0 |2 |0 |
-ROW |141397 |1766 |35958 |0 |3 |A54F10|0 |2 |0 |
-ROW |141398 |1766 |35967 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141399 |1766 |35959 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141400 |1767 |35965 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141401 |1767 |35957 |0 |1 |2774A4|0 |2 |0 |
-ROW |141402 |1768 |35955 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141403 |1768 |35963 |0 |1 |2774A4|0 |2 |0 |
-ROW |141404 |1769 |35970 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141405 |1770 |35978 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141406 |1771 |35979 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141407 |1772 |35938 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141408 |1773 |35996 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141409 |1774 |36008 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141410 |1774 |36000 |0 |1 |2774A4|0 |2 |0 |
-ROW |141411 |1774 |36010 |0 |2 |F63100|0 |2 |0 |
-ROW |141412 |1774 |36002 |0 |3 |A54F10|0 |2 |0 |
-ROW |141413 |1774 |36011 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141414 |1774 |36003 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141415 |1775 |36009 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141416 |1775 |36001 |0 |1 |2774A4|0 |2 |0 |
-ROW |141417 |1776 |35999 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141418 |1776 |36007 |0 |1 |2774A4|0 |2 |0 |
-ROW |141419 |1777 |36014 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141420 |1778 |36022 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141421 |1779 |36023 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141422 |1780 |35982 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141423 |1781 |36041 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141424 |1782 |36053 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141425 |1782 |36045 |0 |1 |2774A4|0 |2 |0 |
-ROW |141426 |1782 |36055 |0 |2 |F63100|0 |2 |0 |
-ROW |141427 |1782 |36047 |0 |3 |A54F10|0 |2 |0 |
-ROW |141428 |1782 |36056 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141429 |1782 |36048 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141430 |1783 |36054 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141431 |1783 |36046 |0 |1 |2774A4|0 |2 |0 |
-ROW |141432 |1784 |36044 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141433 |1784 |36052 |0 |1 |2774A4|0 |2 |0 |
-ROW |141434 |1785 |36059 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141435 |1786 |36067 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141436 |1787 |36068 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141437 |1788 |36026 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141438 |1789 |36086 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141439 |1790 |36098 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141440 |1790 |36090 |0 |1 |2774A4|0 |2 |0 |
-ROW |141441 |1790 |36100 |0 |2 |F63100|0 |2 |0 |
-ROW |141442 |1790 |36092 |0 |3 |A54F10|0 |2 |0 |
-ROW |141443 |1790 |36101 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141444 |1790 |36093 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141445 |1791 |36099 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141446 |1791 |36091 |0 |1 |2774A4|0 |2 |0 |
-ROW |141447 |1792 |36089 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141448 |1792 |36097 |0 |1 |2774A4|0 |2 |0 |
-ROW |141449 |1793 |36104 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141450 |1794 |36112 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141451 |1795 |36113 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141452 |1796 |36071 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141453 |1797 |36131 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141454 |1798 |36144 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141455 |1798 |36136 |0 |1 |2774A4|0 |2 |0 |
-ROW |141456 |1798 |36146 |0 |2 |F63100|0 |2 |0 |
-ROW |141457 |1798 |36138 |0 |3 |A54F10|0 |2 |0 |
-ROW |141458 |1798 |36147 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141459 |1798 |36139 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141460 |1799 |36145 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141461 |1799 |36137 |0 |1 |2774A4|0 |2 |0 |
-ROW |141462 |1800 |36135 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141463 |1800 |36143 |0 |1 |2774A4|0 |2 |0 |
-ROW |141464 |1801 |36150 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141465 |1802 |36158 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141466 |1803 |36159 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141467 |1804 |36116 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141468 |472 |22945 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141469 |472 |22946 |0 |1 |2774A4|0 |2 |0 |
-ROW |141470 |473 |22950 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141471 |473 |22948 |0 |1 |2774A4|0 |2 |0 |
-ROW |141472 |471 |22924 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141473 |471 |22920 |0 |1 |2774A4|0 |2 |0 |
-ROW |141474 |469 |22922 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141475 |469 |22923 |0 |1 |2774A4|0 |2 |0 |
-ROW |141476 |469 |22921 |0 |2 |F63100|0 |2 |0 |
-ROW |141477 |498 |23109 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141478 |498 |23112 |0 |1 |2774A4|0 |2 |0 |
-ROW |141479 |498 |23115 |0 |2 |F63100|0 |2 |0 |
-ROW |141480 |498 |23113 |0 |3 |A54F10|0 |2 |0 |
-ROW |141481 |498 |23114 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141482 |498 |23110 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141483 |540 |22942 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141484 |492 |23073 |5 |0 |00AA00|0 |2 |0 |
-ROW |141485 |492 |23074 |5 |1 |3333FF|0 |2 |0 |
-ROW |141486 |467 |22910 |0 |0 |C80000|0 |2 |2 |
-ROW |141487 |467 |22908 |0 |1 |00C800|0 |2 |0 |
-ROW |141488 |465 |22884 |0 |0 |009900|0 |2 |0 |
-ROW |141489 |465 |22880 |0 |1 |000099|0 |2 |0 |
-ROW |141490 |463 |22882 |0 |0 |009900|0 |2 |0 |
-ROW |141491 |463 |22883 |0 |1 |000099|0 |2 |0 |
-ROW |141492 |463 |22881 |0 |2 |990000|0 |2 |0 |
-ROW |141493 |462 |22886 |1 |0 |009999|0 |2 |0 |
-ROW |141494 |462 |22888 |1 |1 |990099|0 |2 |0 |
-ROW |141495 |462 |22891 |1 |2 |990000|0 |2 |0 |
-ROW |141496 |462 |22892 |1 |3 |000099|0 |2 |0 |
-ROW |141497 |462 |22885 |1 |4 |009900|0 |2 |0 |
-ROW |141498 |541 |22902 |5 |0 |00C800|0 |2 |0 |
-ROW |141499 |464 |22897 |0 |0 |AA0000|0 |2 |2 |
-ROW |141500 |464 |22895 |0 |1 |00AA00|0 |2 |0 |
-ROW |141501 |478 |22985 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141502 |478 |22986 |0 |1 |2774A4|0 |2 |0 |
-ROW |141503 |479 |22990 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141504 |479 |22988 |0 |1 |2774A4|0 |2 |0 |
-ROW |141505 |475 |22962 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141506 |475 |22963 |0 |1 |2774A4|0 |2 |0 |
-ROW |141507 |475 |22961 |0 |2 |F63100|0 |2 |0 |
-ROW |141508 |474 |22968 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141509 |474 |22971 |0 |1 |2774A4|0 |2 |0 |
-ROW |141510 |474 |22972 |0 |2 |F63100|0 |2 |0 |
-ROW |141511 |474 |22965 |0 |3 |A54F10|0 |2 |0 |
-ROW |141512 |542 |22982 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141513 |2212 |42279 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141514 |2212 |42282 |2 |1 |2774A4|0 |2 |0 |
-ROW |141515 |2212 |42281 |0 |2 |F63100|1 |2 |0 |
-ROW |141516 |2212 |42278 |0 |3 |A54F10|1 |2 |0 |
-ROW |141517 |2212 |42280 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141518 |2212 |42277 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141519 |2213 |42285 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141520 |2213 |42286 |5 |1 |2774A4|0 |2 |0 |
-ROW |141521 |2214 |42308 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141522 |2214 |42311 |5 |1 |2774A4|0 |2 |0 |
-ROW |141523 |2215 |42307 |0 |0 |1A7C11|1 |2 |0 |
-ROW |141524 |2215 |42310 |5 |1 |2774A4|0 |2 |0 |
-ROW |141525 |2216 |42290 |0 |0 |969696|0 |9 |2 |
-ROW |141526 |2216 |42291 |0 |1 |C80000|0 |9 |0 |
-ROW |141527 |2222 |42221 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141528 |2222 |42216 |0 |1 |2774A4|0 |2 |0 |
-ROW |141529 |2223 |42189 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141530 |2223 |42190 |0 |1 |2774A4|0 |2 |0 |
-ROW |141531 |2223 |42208 |0 |2 |F63100|0 |2 |0 |
-ROW |141532 |2223 |42218 |0 |3 |A54F10|0 |2 |0 |
-ROW |141533 |2223 |42206 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141534 |2223 |42225 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141535 |2223 |42207 |0 |6 |AC8C14|0 |2 |0 |
-ROW |141536 |2223 |42222 |0 |7 |611F27|0 |2 |0 |
-ROW |141537 |2223 |42223 |0 |8 |F230E0|0 |2 |0 |
-ROW |141538 |2224 |42267 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141539 |2225 |42205 |2 |0 |1A7C11|0 |2 |0 |
-ROW |141540 |2225 |42203 |5 |1 |2774A4|0 |2 |0 |
-ROW |141541 |2226 |42268 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141542 |2227 |42213 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141543 |2227 |42214 |0 |1 |2774A4|0 |2 |0 |
-ROW |141544 |2227 |42212 |0 |2 |F63100|0 |2 |0 |
-ROW |141545 |2228 |42188 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141546 |2228 |42198 |0 |1 |2774A4|0 |2 |0 |
-ROW |141547 |2229 |42209 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141548 |2229 |42217 |0 |1 |2774A4|0 |2 |0 |
-ROW |141549 |2229 |42219 |0 |2 |F63100|0 |2 |0 |
-ROW |141550 |2229 |42220 |0 |3 |A54F10|1 |2 |0 |
-ROW |141551 |2238 |42365 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141552 |2238 |42368 |2 |1 |2774A4|0 |2 |0 |
-ROW |141553 |2238 |42367 |0 |2 |F63100|1 |2 |0 |
-ROW |141554 |2238 |42364 |0 |3 |A54F10|1 |2 |0 |
-ROW |141555 |2238 |42366 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141556 |2238 |42363 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141557 |2239 |42371 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141558 |2239 |42372 |5 |1 |2774A4|0 |2 |0 |
-ROW |141559 |2240 |42379 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141560 |2240 |42382 |5 |1 |2774A4|0 |2 |0 |
-ROW |141561 |2241 |42378 |0 |0 |1A7C11|1 |2 |0 |
-ROW |141562 |2241 |42381 |5 |1 |2774A4|0 |2 |0 |
-ROW |141563 |2242 |42376 |0 |0 |969696|0 |9 |2 |
-ROW |141564 |2242 |42377 |0 |1 |C80000|0 |9 |0 |
-ROW |141565 |2243 |42353 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141566 |2243 |42348 |0 |1 |2774A4|0 |2 |0 |
-ROW |141567 |2244 |42321 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141568 |2244 |42322 |0 |1 |2774A4|0 |2 |0 |
-ROW |141569 |2244 |42339 |0 |2 |F63100|0 |2 |0 |
-ROW |141570 |2244 |42350 |0 |3 |A54F10|0 |2 |0 |
-ROW |141571 |2244 |42338 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141572 |2244 |42357 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141573 |2244 |42329 |0 |6 |AC8C14|0 |2 |0 |
-ROW |141574 |2244 |42354 |0 |7 |611F27|0 |2 |0 |
-ROW |141575 |2244 |42355 |0 |8 |F230E0|0 |2 |0 |
-ROW |141576 |2245 |42358 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141577 |2246 |42337 |2 |0 |1A7C11|0 |2 |0 |
-ROW |141578 |2246 |42335 |5 |1 |2774A4|0 |2 |0 |
-ROW |141579 |2247 |42359 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141580 |2248 |42345 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141581 |2248 |42346 |0 |1 |2774A4|0 |2 |0 |
-ROW |141582 |2248 |42344 |0 |2 |F63100|0 |2 |0 |
-ROW |141583 |2249 |42320 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141584 |2249 |42330 |0 |1 |2774A4|0 |2 |0 |
-ROW |141585 |2250 |42341 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141586 |2250 |42349 |0 |1 |2774A4|0 |2 |0 |
-ROW |141587 |2250 |42351 |0 |2 |F63100|0 |2 |0 |
-ROW |141588 |2250 |42352 |0 |3 |A54F10|1 |2 |0 |
-ROW |141589 |952 |29436 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141590 |952 |29437 |2 |1 |2774A4|0 |2 |0 |
-ROW |141591 |952 |29438 |0 |2 |F63100|1 |2 |0 |
-ROW |141592 |952 |29439 |0 |3 |A54F10|1 |2 |0 |
-ROW |141593 |952 |29441 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141594 |952 |29440 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141595 |955 |29434 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141596 |955 |29435 |5 |1 |2774A4|0 |2 |0 |
-ROW |141597 |954 |29448 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141598 |954 |29449 |5 |1 |2774A4|0 |2 |0 |
-ROW |141599 |956 |29452 |0 |0 |1A7C11|1 |2 |0 |
-ROW |141600 |956 |29453 |5 |1 |2774A4|0 |2 |0 |
-ROW |141601 |953 |29446 |0 |0 |969696|0 |9 |2 |
-ROW |141602 |953 |29432 |0 |1 |C80000|0 |9 |0 |
-ROW |141603 |960 |29405 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141604 |960 |29406 |0 |1 |2774A4|0 |2 |0 |
-ROW |141605 |959 |29426 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141606 |959 |29413 |0 |1 |2774A4|0 |2 |0 |
-ROW |141607 |959 |29411 |0 |2 |F63100|0 |2 |0 |
-ROW |141608 |959 |29410 |0 |3 |A54F10|0 |2 |0 |
-ROW |141609 |959 |29399 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141610 |959 |29409 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141611 |959 |29412 |0 |6 |AC8C14|0 |2 |0 |
-ROW |141612 |959 |29408 |0 |7 |611F27|0 |2 |0 |
-ROW |141613 |959 |29407 |0 |8 |F230E0|0 |2 |0 |
-ROW |141614 |958 |29427 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141615 |962 |29403 |2 |0 |1A7C11|0 |2 |0 |
-ROW |141616 |962 |29402 |5 |1 |2774A4|0 |2 |0 |
-ROW |141617 |961 |29396 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141618 |963 |29400 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141619 |963 |29401 |0 |1 |2774A4|0 |2 |0 |
-ROW |141620 |957 |29420 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141621 |957 |29419 |0 |1 |2774A4|0 |2 |0 |
-ROW |141622 |957 |29418 |0 |2 |F63100|0 |2 |0 |
-ROW |141623 |957 |29417 |0 |3 |A54F10|1 |2 |0 |
-ROW |141624 |2251 |42423 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141625 |2251 |42424 |0 |1 |2774A4|0 |2 |0 |
-ROW |141626 |2251 |42420 |0 |2 |F63100|0 |2 |0 |
-ROW |141627 |2251 |42419 |0 |3 |A54F10|0 |2 |0 |
-ROW |141628 |2251 |42422 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141629 |2251 |42418 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141630 |2251 |42421 |0 |6 |AC8C14|0 |2 |0 |
-ROW |141631 |2251 |42415 |0 |7 |611F27|0 |2 |0 |
-ROW |141632 |2251 |42416 |0 |8 |F230E0|0 |2 |0 |
-ROW |141633 |2252 |42442 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141634 |2253 |42427 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141635 |2253 |42430 |2 |1 |2774A4|0 |2 |0 |
-ROW |141636 |2253 |42429 |0 |2 |F63100|1 |2 |0 |
-ROW |141637 |2253 |42426 |0 |3 |A54F10|1 |2 |0 |
-ROW |141638 |2253 |42428 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141639 |2253 |42425 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141640 |2254 |42435 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141641 |2254 |42437 |5 |1 |2774A4|0 |2 |0 |
-ROW |141642 |2255 |42440 |0 |0 |969696|0 |9 |2 |
-ROW |141643 |2255 |42441 |0 |1 |C80000|0 |9 |0 |
-ROW |141644 |2256 |42400 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141645 |2256 |42405 |0 |1 |2774A4|0 |2 |0 |
-ROW |141646 |2257 |42387 |2 |0 |1A7C11|0 |2 |0 |
-ROW |141647 |2257 |42391 |5 |1 |2774A4|0 |2 |0 |
-ROW |141648 |2258 |42386 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141649 |2259 |42395 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141650 |2259 |42393 |0 |1 |2774A4|0 |2 |0 |
-ROW |141651 |2260 |42404 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141652 |2260 |42403 |0 |1 |2774A4|0 |2 |0 |
-ROW |141653 |2260 |42402 |0 |2 |F63100|0 |2 |0 |
-ROW |141654 |2260 |42401 |0 |3 |A54F10|1 |2 |0 |
-ROW |141655 |491 |23070 |0 |0 |C80000|0 |2 |2 |
-ROW |141656 |491 |23068 |0 |1 |00C800|0 |2 |0 |
-ROW |141657 |487 |23042 |0 |0 |009900|0 |2 |0 |
-ROW |141658 |487 |23043 |0 |1 |000099|0 |2 |0 |
-ROW |141659 |487 |23041 |0 |2 |990000|0 |2 |0 |
-ROW |141660 |543 |23062 |5 |0 |00C800|0 |2 |0 |
-ROW |141661 |494 |23077 |5 |0 |00AA00|0 |2 |0 |
-ROW |141662 |494 |23078 |5 |1 |3333FF|0 |2 |0 |
-ROW |141663 |493 |23075 |5 |0 |00AA00|0 |2 |0 |
-ROW |141664 |493 |23076 |5 |1 |3333FF|0 |2 |0 |
-ROW |141665 |461 |22870 |0 |0 |C80000|0 |2 |2 |
-ROW |141666 |461 |22868 |0 |1 |00C800|0 |2 |0 |
-ROW |141667 |459 |22844 |0 |0 |009900|0 |2 |0 |
-ROW |141668 |459 |22840 |0 |1 |000099|0 |2 |0 |
-ROW |141669 |457 |22842 |0 |0 |009900|0 |2 |0 |
-ROW |141670 |457 |22843 |0 |1 |000099|0 |2 |0 |
-ROW |141671 |457 |22841 |0 |2 |990000|0 |2 |0 |
-ROW |141672 |456 |22846 |1 |0 |009999|0 |2 |0 |
-ROW |141673 |456 |22848 |1 |1 |990099|0 |2 |0 |
-ROW |141674 |456 |22851 |1 |2 |990000|0 |2 |0 |
-ROW |141675 |456 |22852 |1 |3 |000099|0 |2 |0 |
-ROW |141676 |456 |22845 |1 |4 |009900|0 |2 |0 |
-ROW |141677 |544 |22862 |5 |0 |00C800|0 |2 |0 |
-ROW |141678 |458 |22857 |0 |0 |AA0000|0 |2 |2 |
-ROW |141679 |458 |22855 |0 |1 |00AA00|0 |2 |0 |
-ROW |141680 |484 |23025 |5 |0 |00AA00|0 |2 |0 |
-ROW |141681 |484 |23026 |5 |1 |3333FF|0 |2 |0 |
-ROW |141682 |485 |23030 |0 |0 |C80000|0 |2 |2 |
-ROW |141683 |485 |23028 |0 |1 |00C800|0 |2 |0 |
-ROW |141684 |483 |23004 |0 |0 |009900|0 |2 |0 |
-ROW |141685 |483 |23000 |0 |1 |000099|0 |2 |0 |
-ROW |141686 |481 |23002 |0 |0 |009900|0 |2 |0 |
-ROW |141687 |481 |23003 |0 |1 |000099|0 |2 |0 |
-ROW |141688 |481 |23001 |0 |2 |990000|0 |2 |0 |
-ROW |141689 |480 |23007 |1 |0 |999900|0 |2 |0 |
-ROW |141690 |480 |23011 |1 |1 |990000|0 |2 |0 |
-ROW |141691 |480 |23012 |1 |2 |000099|0 |2 |0 |
-ROW |141692 |480 |23005 |1 |3 |009900|0 |2 |0 |
-ROW |141693 |545 |23022 |5 |0 |00C800|0 |2 |0 |
-ROW |141694 |482 |23017 |0 |0 |AA0000|0 |2 |2 |
-ROW |141695 |482 |23015 |0 |1 |00AA00|0 |2 |0 |
-ROW |141696 |2261 |42493 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141697 |2261 |42496 |2 |1 |2774A4|0 |2 |0 |
-ROW |141698 |2261 |42495 |0 |2 |F63100|1 |2 |0 |
-ROW |141699 |2261 |42492 |0 |3 |A54F10|1 |2 |0 |
-ROW |141700 |2261 |42494 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141701 |2261 |42491 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141702 |2262 |42498 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141703 |2262 |42501 |0 |1 |2774A4|0 |2 |0 |
-ROW |141704 |2263 |42499 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141705 |2263 |42500 |5 |1 |2774A4|0 |2 |0 |
-ROW |141706 |2264 |42503 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141707 |2264 |42504 |5 |1 |2774A4|0 |2 |0 |
-ROW |141708 |2265 |42502 |0 |0 |1A7C11|1 |2 |0 |
-ROW |141709 |2265 |42497 |5 |1 |2774A4|0 |2 |0 |
-ROW |141710 |2266 |42507 |0 |0 |969696|0 |9 |2 |
-ROW |141711 |2266 |42508 |0 |1 |C80000|0 |9 |0 |
-ROW |141712 |2267 |42473 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141713 |2267 |42476 |0 |1 |2774A4|0 |2 |0 |
-ROW |141714 |2268 |42474 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141715 |2268 |42475 |0 |1 |2774A4|0 |2 |0 |
-ROW |141716 |2269 |42469 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141717 |2270 |42459 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141718 |2271 |42465 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141719 |2271 |42464 |0 |1 |2774A4|0 |2 |0 |
-ROW |141720 |2272 |42549 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141721 |2272 |42552 |2 |1 |2774A4|0 |2 |0 |
-ROW |141722 |2272 |42551 |0 |2 |F63100|1 |2 |0 |
-ROW |141723 |2272 |42548 |0 |3 |A54F10|1 |2 |0 |
-ROW |141724 |2272 |42550 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141725 |2272 |42547 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141726 |2273 |42554 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141727 |2273 |42557 |0 |1 |2774A4|0 |2 |0 |
-ROW |141728 |2274 |42555 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141729 |2274 |42556 |5 |1 |2774A4|0 |2 |0 |
-ROW |141730 |2275 |42559 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141731 |2275 |42560 |5 |1 |2774A4|0 |2 |0 |
-ROW |141732 |2276 |42558 |0 |0 |1A7C11|1 |2 |0 |
-ROW |141733 |2276 |42553 |5 |1 |2774A4|0 |2 |0 |
-ROW |141734 |2277 |42563 |0 |0 |969696|0 |9 |2 |
-ROW |141735 |2277 |42564 |0 |1 |C80000|0 |9 |0 |
-ROW |141736 |2278 |42529 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141737 |2278 |42532 |0 |1 |2774A4|0 |2 |0 |
-ROW |141738 |2279 |42530 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141739 |2279 |42531 |0 |1 |2774A4|0 |2 |0 |
-ROW |141740 |2280 |42525 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141741 |2281 |42515 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141742 |2282 |42521 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141743 |2282 |42520 |0 |1 |2774A4|0 |2 |0 |
-ROW |141744 |2283 |42585 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141745 |2283 |42588 |2 |1 |2774A4|0 |2 |0 |
-ROW |141746 |2283 |42587 |0 |2 |F63100|1 |2 |0 |
-ROW |141747 |2283 |42584 |0 |3 |A54F10|1 |2 |0 |
-ROW |141748 |2283 |42586 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141749 |2283 |42583 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141750 |2284 |42593 |0 |0 |969696|0 |9 |2 |
-ROW |141751 |2284 |42594 |0 |1 |C80000|0 |9 |0 |
-ROW |141752 |2285 |42597 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141753 |2286 |42573 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141754 |1583 |34451 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141755 |1584 |34465 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141756 |1584 |34463 |0 |1 |2774A4|0 |2 |0 |
-ROW |141757 |1585 |34466 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141758 |1585 |34462 |0 |1 |2774A4|0 |2 |0 |
-ROW |141759 |1586 |34499 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141760 |1587 |34513 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141761 |1587 |34511 |0 |1 |2774A4|0 |2 |0 |
-ROW |141762 |1588 |34514 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141763 |1588 |34510 |0 |1 |2774A4|0 |2 |0 |
-ROW |141764 |1589 |34547 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141765 |1590 |34561 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141766 |1590 |34559 |0 |1 |2774A4|0 |2 |0 |
-ROW |141767 |1591 |34562 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141768 |1591 |34558 |0 |1 |2774A4|0 |2 |0 |
-ROW |141769 |1592 |34595 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141770 |1593 |34609 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141771 |1593 |34607 |0 |1 |2774A4|0 |2 |0 |
-ROW |141772 |1594 |34610 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141773 |1594 |34606 |0 |1 |2774A4|0 |2 |0 |
-ROW |141774 |1595 |34643 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141775 |1596 |34657 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141776 |1596 |34655 |0 |1 |2774A4|0 |2 |0 |
-ROW |141777 |1597 |34658 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141778 |1597 |34654 |0 |1 |2774A4|0 |2 |0 |
-ROW |141779 |1619 |35016 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141780 |1620 |35030 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141781 |1620 |35028 |0 |1 |2774A4|0 |2 |0 |
-ROW |141782 |1621 |35031 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141783 |1621 |35027 |0 |1 |2774A4|0 |2 |0 |
-ROW |141784 |1601 |34739 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141785 |1602 |34753 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141786 |1602 |34751 |0 |1 |2774A4|0 |2 |0 |
-ROW |141787 |1603 |34754 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141788 |1603 |34750 |0 |1 |2774A4|0 |2 |0 |
-ROW |141789 |1604 |34787 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141790 |1569 |34192 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141791 |1569 |34180 |0 |1 |2774A4|0 |2 |0 |
-ROW |141792 |1570 |34194 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141793 |1570 |34190 |0 |1 |2774A4|0 |2 |0 |
-ROW |141794 |1605 |34793 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141795 |1606 |34807 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141796 |1606 |34805 |0 |1 |2774A4|0 |2 |0 |
-ROW |141797 |1607 |34808 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141798 |1607 |34804 |0 |1 |2774A4|0 |2 |0 |
-ROW |141799 |1608 |34841 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141800 |1609 |34855 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141801 |1609 |34853 |0 |1 |2774A4|0 |2 |0 |
-ROW |141802 |1610 |34856 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141803 |1610 |34852 |0 |1 |2774A4|0 |2 |0 |
-ROW |141804 |1611 |34889 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141805 |1612 |34903 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141806 |1612 |34901 |0 |1 |2774A4|0 |2 |0 |
-ROW |141807 |1613 |34904 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141808 |1613 |34900 |0 |1 |2774A4|0 |2 |0 |
-ROW |141809 |2356 |43215 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141810 |2357 |43196 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141811 |2357 |43208 |0 |1 |2774A4|0 |2 |0 |
-ROW |141812 |2357 |43217 |0 |2 |F63100|0 |2 |0 |
-ROW |141813 |2357 |43216 |0 |3 |A54F10|0 |2 |0 |
-ROW |141814 |2358 |43213 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141815 |2359 |43212 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141816 |2359 |43210 |0 |1 |2774A4|0 |2 |0 |
-ROW |141817 |2360 |43209 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141818 |2360 |43197 |0 |1 |2774A4|0 |2 |0 |
-ROW |141819 |2361 |43230 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141820 |2361 |43244 |0 |1 |2774A4|0 |2 |0 |
-ROW |141821 |2362 |43243 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141822 |2362 |43241 |0 |1 |2774A4|0 |2 |0 |
-ROW |141823 |2363 |43240 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141824 |2363 |43237 |0 |1 |2774A4|0 |2 |0 |
-ROW |141825 |2364 |43236 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141826 |2364 |43234 |0 |1 |2774A4|0 |2 |0 |
-ROW |141827 |2365 |43253 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141828 |2366 |43258 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141829 |2366 |43259 |0 |1 |2774A4|0 |2 |0 |
-ROW |141830 |2367 |43268 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141831 |2368 |43269 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141832 |2368 |43270 |0 |1 |2774A4|0 |2 |0 |
-ROW |141833 |2368 |43271 |0 |2 |F63100|0 |2 |0 |
-ROW |141834 |2368 |43272 |0 |3 |A54F10|0 |2 |0 |
-ROW |141835 |2369 |43273 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141836 |2369 |43275 |0 |1 |2774A4|0 |2 |0 |
-ROW |141837 |2370 |43276 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141838 |2370 |43278 |0 |1 |2774A4|0 |2 |0 |
-ROW |141839 |2371 |43279 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141840 |2371 |43280 |0 |1 |2774A4|0 |2 |0 |
-ROW |141841 |2372 |43329 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141842 |2373 |43310 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141843 |2373 |43322 |0 |1 |2774A4|0 |2 |0 |
-ROW |141844 |2373 |43331 |0 |2 |F63100|0 |2 |0 |
-ROW |141845 |2373 |43330 |0 |3 |A54F10|0 |2 |0 |
-ROW |141846 |2374 |43327 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141847 |2375 |43326 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141848 |2375 |43324 |0 |1 |2774A4|0 |2 |0 |
-ROW |141849 |2376 |43323 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141850 |2376 |43311 |0 |1 |2774A4|0 |2 |0 |
-ROW |141851 |2377 |43345 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141852 |2377 |43360 |0 |1 |2774A4|0 |2 |0 |
-ROW |141853 |2378 |43356 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141854 |2378 |43354 |0 |1 |2774A4|0 |2 |0 |
-ROW |141855 |2379 |43353 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141856 |2379 |43346 |0 |1 |2774A4|0 |2 |0 |
-ROW |141857 |2380 |43304 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141858 |2380 |43303 |0 |1 |2774A4|0 |2 |0 |
-ROW |141859 |2381 |43369 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141860 |2382 |43305 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141861 |2382 |43306 |0 |1 |2774A4|0 |2 |0 |
-ROW |141862 |2383 |43388 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141863 |2383 |43389 |0 |1 |2774A4|0 |2 |0 |
-ROW |141864 |2383 |43390 |0 |2 |F63100|0 |2 |0 |
-ROW |141865 |2383 |43391 |0 |3 |A54F10|0 |2 |0 |
-ROW |141866 |2384 |43392 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141867 |2384 |43394 |0 |1 |2774A4|0 |2 |0 |
-ROW |141868 |2385 |43395 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141869 |2385 |43397 |0 |1 |2774A4|0 |2 |0 |
-ROW |141870 |2386 |43309 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141871 |2386 |43308 |0 |1 |2774A4|0 |2 |0 |
-ROW |141872 |2387 |43429 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141873 |2387 |43428 |0 |1 |2774A4|0 |2 |0 |
-ROW |141874 |2387 |43427 |0 |2 |F63100|0 |2 |0 |
-ROW |141875 |2388 |43421 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141876 |2388 |43444 |0 |1 |2774A4|0 |2 |0 |
-ROW |141877 |2388 |43423 |0 |2 |F63100|0 |2 |0 |
-ROW |141878 |2389 |43433 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141879 |2389 |43443 |0 |1 |2774A4|0 |2 |0 |
-ROW |141880 |2389 |43442 |0 |2 |F63100|0 |2 |0 |
-ROW |141881 |2390 |43439 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141882 |2390 |43438 |0 |1 |2774A4|0 |2 |0 |
-ROW |141883 |2390 |43441 |0 |2 |F63100|0 |2 |0 |
-ROW |141884 |2390 |43440 |0 |3 |A54F10|0 |2 |0 |
-ROW |141885 |2391 |43435 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141886 |2391 |43434 |0 |1 |2774A4|0 |2 |0 |
-ROW |141887 |2391 |43437 |0 |2 |F63100|0 |2 |0 |
-ROW |141888 |2391 |43436 |0 |3 |A54F10|0 |2 |0 |
-ROW |141889 |2392 |43431 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141890 |2392 |43430 |0 |1 |2774A4|0 |2 |0 |
-ROW |141891 |2392 |43432 |0 |2 |F63100|0 |2 |0 |
-ROW |141892 |2392 |43422 |0 |3 |A54F10|0 |2 |0 |
-ROW |141893 |2393 |43492 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141894 |2393 |43491 |0 |1 |2774A4|0 |2 |0 |
-ROW |141895 |2393 |43490 |0 |2 |F63100|0 |2 |0 |
-ROW |141896 |2393 |43489 |0 |3 |A54F10|0 |2 |0 |
-ROW |141897 |2394 |43471 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141898 |2394 |43494 |0 |1 |2774A4|0 |2 |0 |
-ROW |141899 |2395 |43484 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141900 |2395 |43495 |0 |1 |2774A4|0 |2 |0 |
-ROW |141901 |2395 |43493 |0 |2 |F63100|0 |2 |0 |
-ROW |141902 |2396 |43488 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141903 |2396 |43487 |0 |1 |2774A4|0 |2 |0 |
-ROW |141904 |2396 |43486 |0 |2 |F63100|0 |2 |0 |
-ROW |141905 |2396 |43485 |0 |3 |A54F10|0 |2 |0 |
-ROW |141906 |2397 |43481 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141907 |2397 |43480 |0 |1 |2774A4|0 |2 |0 |
-ROW |141908 |2397 |43479 |0 |2 |F63100|0 |2 |0 |
-ROW |141909 |2397 |43478 |0 |3 |A54F10|0 |2 |0 |
-ROW |141910 |2398 |43412 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141911 |2398 |43411 |0 |1 |2774A4|0 |2 |0 |
-ROW |141912 |2398 |43410 |0 |2 |F63100|0 |2 |0 |
-ROW |141913 |2398 |43409 |0 |3 |A54F10|0 |2 |0 |
-ROW |141914 |1518 |33705 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141915 |1519 |33724 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141916 |1519 |33722 |0 |1 |2774A4|0 |2 |0 |
-ROW |141917 |1519 |33726 |0 |2 |F63100|0 |2 |0 |
-ROW |141918 |1520 |33719 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141919 |1520 |33720 |0 |1 |2774A4|0 |2 |0 |
-ROW |141920 |1520 |33721 |0 |2 |F63100|0 |2 |0 |
-ROW |141921 |1521 |33725 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141922 |1521 |33723 |0 |1 |2774A4|0 |2 |0 |
-ROW |141923 |1521 |33727 |0 |2 |F63100|0 |2 |0 |
-ROW |141924 |1522 |33730 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141925 |1523 |33734 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141926 |1523 |33732 |0 |1 |2774A4|0 |2 |0 |
-ROW |141927 |1523 |33736 |0 |2 |F63100|0 |2 |0 |
-ROW |141928 |1524 |33735 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141929 |1524 |33733 |0 |1 |2774A4|0 |2 |0 |
-ROW |141930 |1524 |33737 |0 |2 |F63100|0 |2 |0 |
-ROW |141931 |1525 |33743 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141932 |1525 |33742 |0 |1 |2774A4|0 |2 |0 |
-ROW |141933 |1525 |33738 |0 |2 |F63100|0 |2 |0 |
-ROW |141934 |1526 |33692 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141935 |1526 |33693 |0 |1 |2774A4|0 |2 |0 |
-ROW |141936 |1571 |34269 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141937 |1571 |34270 |0 |1 |2774A4|0 |2 |0 |
-ROW |141938 |1571 |34271 |0 |2 |F63100|0 |2 |0 |
-ROW |141939 |1571 |34272 |0 |3 |A54F10|0 |2 |0 |
-ROW |141940 |1572 |34311 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141941 |1572 |34301 |0 |1 |2774A4|0 |2 |0 |
-ROW |141942 |1573 |34243 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141943 |1573 |34244 |0 |1 |2774A4|0 |2 |0 |
-ROW |141944 |1573 |34246 |0 |2 |F63100|0 |2 |0 |
-ROW |141945 |1573 |34245 |0 |3 |A54F10|0 |2 |0 |
-ROW |141946 |1574 |34239 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141947 |1574 |34227 |0 |1 |2774A4|0 |2 |0 |
-ROW |141948 |1574 |34236 |0 |2 |F63100|0 |2 |0 |
-ROW |141949 |1574 |34237 |0 |3 |A54F10|0 |2 |0 |
-ROW |141950 |1575 |34253 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141951 |1575 |34252 |0 |1 |2774A4|0 |2 |0 |
-ROW |141952 |1575 |34249 |0 |2 |F63100|0 |2 |0 |
-ROW |141953 |1575 |34251 |0 |3 |A54F10|0 |2 |0 |
-ROW |141954 |1496 |33368 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141955 |1497 |33371 |1 |0 |1A7C11|0 |2 |0 |
-ROW |141956 |1497 |33371 |1 |1 |2774A4|0 |2 |0 |
-ROW |141957 |1498 |33379 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141958 |1498 |33382 |2 |1 |2774A4|0 |2 |0 |
-ROW |141959 |1498 |33381 |0 |2 |F63100|1 |2 |0 |
-ROW |141960 |1498 |33378 |0 |3 |A54F10|1 |2 |0 |
-ROW |141961 |1498 |33380 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141962 |1498 |33377 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141963 |1142 |30689 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141964 |1805 |36187 |5 |0 |1A7C11|0 |2 |0 |
-ROW |141965 |1805 |36192 |2 |1 |2774A4|0 |2 |0 |
-ROW |141966 |1805 |36190 |0 |2 |F63100|1 |2 |0 |
-ROW |141967 |1805 |36185 |0 |3 |A54F10|1 |2 |0 |
-ROW |141968 |1805 |36189 |0 |4 |FC6EA3|1 |2 |0 |
-ROW |141969 |1805 |36184 |0 |5 |6C59DC|1 |2 |0 |
-ROW |141970 |2433 |43954 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141971 |2433 |43953 |0 |1 |2774A4|0 |2 |0 |
-ROW |141972 |2433 |43952 |0 |2 |F63100|0 |2 |0 |
-ROW |141973 |2433 |43963 |0 |3 |A54F10|0 |2 |0 |
-ROW |141974 |2433 |43964 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141975 |2433 |43959 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141976 |2434 |44033 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141977 |2434 |44034 |0 |1 |2774A4|0 |2 |0 |
-ROW |141978 |2434 |44035 |0 |2 |F63100|0 |2 |0 |
-ROW |141979 |2435 |44039 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141980 |2435 |44040 |0 |1 |2774A4|0 |2 |0 |
-ROW |141981 |2435 |44041 |0 |2 |F63100|0 |2 |0 |
-ROW |141982 |2436 |44044 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141983 |2436 |44045 |0 |1 |2774A4|0 |2 |0 |
-ROW |141984 |651 |26928 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141985 |651 |26927 |0 |1 |2774A4|0 |2 |0 |
-ROW |141986 |652 |26925 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141987 |652 |26932 |0 |1 |2774A4|0 |2 |0 |
-ROW |141988 |652 |26930 |0 |2 |F63100|0 |2 |0 |
-ROW |141989 |652 |26931 |0 |3 |A54F10|0 |2 |0 |
-ROW |141990 |652 |26929 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |141991 |652 |26926 |0 |5 |6C59DC|0 |2 |0 |
-ROW |141992 |653 |26933 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141993 |653 |26943 |0 |1 |2774A4|0 |2 |0 |
-ROW |141994 |653 |26935 |0 |2 |F63100|0 |2 |0 |
-ROW |141995 |653 |26936 |0 |3 |A54F10|0 |2 |0 |
-ROW |141996 |654 |26934 |0 |0 |1A7C11|0 |2 |0 |
-ROW |141997 |654 |26939 |0 |1 |2774A4|0 |2 |0 |
-ROW |141998 |654 |26942 |0 |2 |F63100|0 |2 |0 |
-ROW |141999 |654 |26938 |0 |3 |A54F10|0 |2 |0 |
-ROW |142000 |654 |26937 |0 |4 |FC6EA3|0 |2 |0 |
-ROW |142001 |1275 |31794 |0 |0 |1A7C11|0 |2 |0 |
-ROW |142002 |1275 |31792 |0 |1 |2774A4|0 |2 |0 |
-ROW |142003 |1275 |31800 |0 |2 |F63100|1 |2 |0 |
-ROW |142004 |1276 |36771 |0 |0 |1A7C11|0 |2 |0 |
-ROW |142005 |1276 |33390 |0 |1 |2774A4|0 |2 |0 |
-ROW |142006 |1276 |31799 |0 |2 |F63100|0 |2 |0 |
-ROW |142007 |1276 |31797 |0 |3 |A54F10|0 |2 |0 |
-ROW |142008 |1277 |36770 |0 |0 |1A7C11|0 |2 |0 |
-ROW |142009 |1277 |33389 |0 |1 |2774A4|0 |2 |0 |
-ROW |142010 |1277 |31795 |0 |2 |F63100|0 |2 |0 |
-ROW |142011 |1278 |36769 |0 |0 |1A7C11|0 |2 |0 |
-ROW |142012 |1278 |31793 |0 |1 |2774A4|0 |2 |0 |
-ROW |142013 |1278 |31802 |0 |2 |F63100|0 |2 |0 |
-ROW |142014 |1278 |31790 |0 |3 |A54F10|0 |2 |0 |
-ROW |142015 |1278 |31791 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142016 |1397 |32451 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142017 |1397 |32450 |5 |1 |2774A4|0 |2 |0 |
+ROW |142018 |1398 |32452 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142019 |1398 |32449 |5 |1 |2774A4|0 |2 |0 |
+ROW |142020 |1399 |32444 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142021 |1399 |32446 |5 |1 |2774A4|0 |2 |0 |
+ROW |142022 |1399 |32448 |5 |2 |F63100|0 |2 |0 |
+ROW |142023 |1400 |32460 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142024 |1401 |32458 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142025 |1401 |32457 |5 |1 |2774A4|0 |2 |0 |
+ROW |142026 |1402 |32461 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142027 |1402 |32456 |5 |1 |2774A4|0 |2 |0 |
+ROW |142028 |1172 |30918 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142029 |1172 |30919 |0 |1 |2774A4|0 |2 |0 |
+ROW |142030 |1172 |30920 |0 |2 |F63100|0 |2 |0 |
+ROW |142031 |1172 |30921 |2 |3 |A54F10|0 |2 |0 |
+ROW |142032 |1173 |30922 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142033 |835 |28744 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142034 |835 |28745 |0 |1 |2774A4|0 |2 |0 |
+ROW |142035 |1174 |30913 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142036 |1175 |30906 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142037 |1175 |30908 |0 |1 |2774A4|0 |2 |0 |
+ROW |142038 |1175 |30915 |0 |2 |F63100|0 |2 |0 |
+ROW |142039 |1175 |30897 |0 |3 |A54F10|0 |2 |0 |
+ROW |142040 |1175 |30901 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142041 |1175 |30899 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142042 |1175 |30907 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142043 |1175 |30905 |0 |7 |611F27|0 |2 |0 |
+ROW |142044 |1175 |30904 |0 |8 |F230E0|0 |2 |0 |
+ROW |142045 |1175 |30900 |0 |9 |FFAD40|0 |2 |0 |
+ROW |142046 |1175 |30898 |0 |10 |40CDFF|0 |2 |0 |
+ROW |142047 |1176 |30910 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142048 |1176 |30909 |0 |1 |2774A4|0 |2 |0 |
+ROW |142049 |836 |28798 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142050 |836 |28799 |0 |1 |2774A4|0 |2 |0 |
+ROW |142051 |836 |28800 |0 |2 |F63100|0 |2 |0 |
+ROW |142052 |836 |28801 |2 |3 |A54F10|0 |2 |0 |
+ROW |142053 |837 |28803 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142054 |838 |28793 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142055 |840 |28787 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142056 |840 |28784 |0 |1 |2774A4|0 |2 |0 |
+ROW |142057 |840 |28782 |0 |2 |F63100|0 |2 |0 |
+ROW |142058 |840 |28781 |0 |3 |A54F10|0 |2 |0 |
+ROW |142059 |840 |28780 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142060 |840 |28778 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142061 |840 |28786 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142062 |840 |28785 |0 |7 |611F27|0 |2 |0 |
+ROW |142063 |840 |28783 |0 |8 |F230E0|0 |2 |0 |
+ROW |142064 |840 |28779 |0 |9 |FFAD40|0 |2 |0 |
+ROW |142065 |840 |28796 |0 |10 |40CDFF|0 |2 |0 |
+ROW |142066 |839 |28789 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142067 |839 |28788 |0 |1 |2774A4|0 |2 |0 |
+ROW |142068 |1339 |32172 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142069 |1339 |32173 |0 |1 |2774A4|0 |2 |0 |
+ROW |142070 |1403 |32511 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142071 |1403 |32514 |0 |1 |2774A4|0 |2 |0 |
+ROW |142072 |1404 |32512 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142073 |1404 |32515 |0 |1 |2774A4|0 |2 |0 |
+ROW |142074 |1405 |32507 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142075 |1405 |32508 |0 |1 |2774A4|0 |2 |0 |
+ROW |142076 |1405 |32513 |0 |2 |F63100|0 |2 |0 |
+ROW |142077 |1343 |32135 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142078 |1343 |32142 |0 |1 |2774A4|0 |2 |0 |
+ROW |142079 |1344 |32167 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142080 |1344 |32136 |0 |1 |2774A4|0 |2 |0 |
+ROW |142081 |1345 |32141 |1 |0 |1A7C11|0 |2 |0 |
+ROW |142082 |1345 |32138 |1 |1 |2774A4|0 |2 |0 |
+ROW |142083 |1346 |32156 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142084 |1346 |32158 |0 |1 |2774A4|0 |2 |0 |
+ROW |142085 |1346 |32159 |0 |2 |F63100|0 |2 |0 |
+ROW |142086 |1346 |32154 |2 |3 |A54F10|0 |2 |0 |
+ROW |142087 |1346 |32155 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142088 |1346 |32146 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142089 |1347 |32150 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142090 |1347 |32151 |0 |1 |2774A4|0 |2 |0 |
+ROW |142091 |1347 |32152 |0 |2 |F63100|0 |2 |0 |
+ROW |142092 |1622 |35078 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142093 |1622 |35091 |0 |1 |2774A4|0 |2 |0 |
+ROW |142094 |1622 |35098 |0 |2 |F63100|0 |2 |0 |
+ROW |142095 |1622 |35100 |0 |3 |A54F10|0 |2 |0 |
+ROW |142096 |1622 |35099 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142097 |1623 |35090 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142098 |1623 |35101 |0 |1 |2774A4|0 |2 |0 |
+ROW |142099 |1624 |35097 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142100 |1624 |35096 |0 |1 |2774A4|0 |2 |0 |
+ROW |142101 |1624 |35095 |0 |2 |F63100|0 |2 |0 |
+ROW |142102 |1625 |35089 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142103 |1625 |35088 |0 |1 |2774A4|0 |2 |0 |
+ROW |142104 |1625 |35087 |0 |2 |F63100|0 |2 |0 |
+ROW |142105 |1625 |35086 |0 |3 |A54F10|0 |2 |0 |
+ROW |142106 |1625 |35085 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142107 |1626 |35079 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142108 |1626 |35082 |0 |1 |2774A4|0 |2 |0 |
+ROW |142109 |1627 |35080 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142110 |1627 |35102 |0 |1 |2774A4|0 |2 |0 |
+ROW |142111 |1628 |35093 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142112 |1628 |35092 |0 |1 |2774A4|0 |2 |0 |
+ROW |142113 |1628 |35081 |0 |2 |F63100|0 |2 |0 |
+ROW |142114 |1628 |35084 |0 |3 |A54F10|0 |2 |0 |
+ROW |142115 |1628 |35083 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142116 |2351 |43111 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142117 |2351 |43121 |0 |1 |2774A4|0 |2 |0 |
+ROW |142118 |2352 |43090 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142119 |2352 |43089 |2 |1 |2774A4|0 |2 |0 |
+ROW |142120 |2353 |43132 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142121 |2353 |43091 |0 |1 |2774A4|0 |2 |0 |
+ROW |142122 |2354 |43098 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142123 |2354 |43096 |0 |1 |2774A4|0 |2 |0 |
+ROW |142124 |2354 |43084 |0 |2 |F63100|0 |2 |0 |
+ROW |142125 |2354 |43093 |0 |3 |A54F10|0 |2 |0 |
+ROW |142126 |2354 |43094 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142127 |1121 |30606 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142128 |1121 |30590 |5 |1 |2774A4|0 |2 |0 |
+ROW |142129 |1121 |30582 |5 |2 |F63100|0 |2 |0 |
+ROW |142130 |1122 |30580 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142131 |1122 |30578 |5 |1 |2774A4|0 |2 |0 |
+ROW |142132 |1123 |30586 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142133 |1123 |30608 |2 |1 |2774A4|0 |2 |0 |
+ROW |142134 |1123 |30585 |2 |2 |F63100|0 |2 |0 |
+ROW |142135 |1123 |30589 |2 |3 |A54F10|0 |2 |0 |
+ROW |142136 |1123 |30584 |2 |4 |FC6EA3|0 |2 |0 |
+ROW |142137 |1123 |30588 |2 |5 |6C59DC|0 |2 |0 |
+ROW |142138 |1124 |30583 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142139 |1124 |30587 |2 |1 |2774A4|0 |2 |0 |
+ROW |142140 |1125 |30555 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142141 |1125 |30554 |2 |1 |2774A4|0 |2 |0 |
+ROW |142142 |1125 |30556 |2 |2 |F63100|0 |2 |0 |
+ROW |142143 |1125 |30557 |2 |3 |A54F10|0 |2 |0 |
+ROW |142144 |1126 |30565 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142145 |1127 |30567 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142146 |1127 |30568 |2 |1 |2774A4|0 |2 |0 |
+ROW |142147 |1128 |30536 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142148 |1129 |30566 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142149 |1129 |30549 |2 |1 |2774A4|0 |2 |0 |
+ROW |142150 |1129 |30553 |2 |2 |F63100|0 |2 |0 |
+ROW |142151 |1129 |30570 |2 |3 |A54F10|0 |2 |0 |
+ROW |142152 |1143 |30714 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142153 |1143 |30716 |0 |1 |2774A4|0 |2 |0 |
+ROW |142154 |1143 |30717 |0 |2 |F63100|0 |2 |0 |
+ROW |142155 |1143 |30715 |0 |3 |A54F10|0 |2 |0 |
+ROW |142156 |1144 |30753 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142157 |1144 |30738 |0 |1 |2774A4|0 |2 |0 |
+ROW |142158 |1145 |30718 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142159 |1145 |30737 |0 |1 |2774A4|0 |2 |0 |
+ROW |142160 |1145 |30727 |0 |2 |F63100|0 |2 |0 |
+ROW |142161 |1145 |30729 |0 |3 |A54F10|0 |2 |0 |
+ROW |142162 |1146 |30730 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142163 |1146 |30732 |0 |1 |2774A4|0 |2 |0 |
+ROW |142164 |1146 |30731 |0 |2 |F63100|0 |2 |0 |
+ROW |142165 |1146 |30733 |0 |3 |A54F10|0 |2 |0 |
+ROW |142166 |1147 |30734 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142167 |1147 |30736 |0 |1 |2774A4|0 |2 |0 |
+ROW |142168 |1147 |30735 |0 |2 |F63100|0 |2 |0 |
+ROW |142169 |1147 |30758 |0 |3 |A54F10|0 |2 |0 |
+ROW |142170 |1148 |30711 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142171 |1148 |30706 |0 |1 |2774A4|0 |2 |0 |
+ROW |142172 |1148 |30710 |0 |2 |F63100|0 |2 |0 |
+ROW |142173 |1148 |30712 |0 |3 |A54F10|0 |2 |0 |
+ROW |142174 |1148 |30702 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142175 |1148 |30707 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142176 |1148 |30704 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142177 |2341 |43058 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142178 |2341 |43059 |0 |1 |2774A4|0 |2 |0 |
+ROW |142179 |2341 |43052 |0 |2 |F63100|0 |2 |0 |
+ROW |142180 |2341 |43057 |0 |3 |A54F10|0 |2 |0 |
+ROW |142181 |2341 |43066 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142182 |2342 |43063 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142183 |2342 |43061 |0 |1 |2774A4|0 |2 |0 |
+ROW |142184 |2343 |43068 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142185 |2343 |43070 |0 |1 |2774A4|0 |2 |0 |
+ROW |142186 |2344 |43019 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142187 |2344 |43042 |0 |1 |2774A4|0 |2 |0 |
+ROW |142188 |2345 |43044 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142189 |2345 |43043 |0 |1 |2774A4|0 |2 |0 |
+ROW |142190 |2345 |43045 |0 |2 |F63100|0 |2 |0 |
+ROW |142191 |2345 |43034 |0 |3 |A54F10|0 |2 |0 |
+ROW |142192 |2346 |43023 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142193 |2346 |43025 |0 |1 |2774A4|0 |2 |0 |
+ROW |142194 |2347 |43040 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142195 |2347 |43041 |0 |1 |2774A4|0 |2 |0 |
+ROW |142196 |2347 |43039 |0 |2 |F63100|0 |2 |0 |
+ROW |142197 |2347 |43038 |0 |3 |A54F10|0 |2 |0 |
+ROW |142198 |2348 |43031 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142199 |2348 |43020 |0 |1 |2774A4|0 |2 |0 |
+ROW |142200 |2348 |43033 |0 |2 |F63100|0 |2 |0 |
+ROW |142201 |2349 |43036 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142202 |2349 |43035 |0 |1 |2774A4|0 |2 |0 |
+ROW |142203 |2349 |43037 |0 |2 |F63100|0 |2 |0 |
+ROW |142204 |2349 |43032 |0 |3 |A54F10|0 |2 |0 |
+ROW |142205 |2350 |43024 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142206 |2350 |43025 |0 |1 |2774A4|0 |2 |0 |
+ROW |142207 |2350 |43026 |0 |2 |F63100|0 |2 |0 |
+ROW |142208 |1177 |30927 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142209 |1177 |30944 |2 |1 |2774A4|0 |2 |0 |
+ROW |142210 |1178 |30935 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142211 |1178 |30942 |0 |1 |2774A4|0 |2 |0 |
+ROW |142212 |1179 |30949 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142213 |1179 |30950 |0 |1 |2774A4|0 |2 |0 |
+ROW |142214 |1179 |30951 |0 |2 |F63100|0 |2 |0 |
+ROW |142215 |1180 |30952 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142216 |1180 |30954 |0 |1 |2774A4|0 |2 |0 |
+ROW |142217 |1180 |30955 |0 |2 |F63100|0 |2 |0 |
+ROW |142218 |1181 |30936 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142219 |1181 |30940 |5 |1 |2774A4|0 |2 |0 |
+ROW |142220 |1182 |30930 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142221 |1182 |30929 |0 |1 |2774A4|0 |2 |0 |
+ROW |142222 |1182 |30928 |0 |2 |F63100|0 |2 |0 |
+ROW |142223 |1182 |30931 |2 |3 |A54F10|1 |2 |0 |
+ROW |142224 |1183 |30934 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142225 |1183 |30941 |0 |1 |2774A4|0 |2 |0 |
+ROW |142226 |1406 |32532 |0 |0 |1A7C11|1 |2 |0 |
+ROW |142227 |1406 |32535 |0 |1 |2774A4|1 |2 |0 |
+ROW |142228 |1406 |32533 |0 |2 |F63100|0 |2 |0 |
+ROW |142229 |1406 |32534 |0 |3 |A54F10|0 |2 |0 |
+ROW |142230 |1406 |32536 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142231 |1406 |32537 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142232 |1407 |32543 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142233 |1407 |32544 |0 |1 |2774A4|0 |2 |0 |
+ROW |142234 |1408 |32518 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142235 |1408 |32521 |0 |1 |2774A4|0 |2 |0 |
+ROW |142236 |1408 |32523 |0 |2 |F63100|0 |2 |0 |
+ROW |142237 |1408 |32524 |0 |3 |A54F10|0 |2 |0 |
+ROW |142238 |1409 |32562 |0 |0 |1A7C11|1 |2 |0 |
+ROW |142239 |1409 |32565 |0 |1 |2774A4|1 |2 |0 |
+ROW |142240 |1409 |32563 |0 |2 |F63100|0 |2 |0 |
+ROW |142241 |1409 |32564 |0 |3 |A54F10|0 |2 |0 |
+ROW |142242 |1409 |32566 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142243 |1409 |32567 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142244 |1410 |32573 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142245 |1410 |32574 |0 |1 |2774A4|0 |2 |0 |
+ROW |142246 |1411 |32548 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142247 |1411 |32551 |0 |1 |2774A4|0 |2 |0 |
+ROW |142248 |1411 |32553 |0 |2 |F63100|0 |2 |0 |
+ROW |142249 |1411 |32554 |0 |3 |A54F10|0 |2 |0 |
+ROW |142250 |2287 |42686 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142251 |2288 |42689 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142252 |2288 |42688 |0 |1 |2774A4|0 |2 |0 |
+ROW |142253 |2288 |42690 |0 |2 |F63100|0 |2 |0 |
+ROW |142254 |1250 |31527 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142255 |1250 |31529 |0 |1 |2774A4|0 |2 |0 |
+ROW |142256 |1250 |31499 |0 |2 |F63100|0 |2 |0 |
+ROW |142257 |1259 |31516 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142258 |1259 |31517 |0 |1 |2774A4|0 |2 |0 |
+ROW |142259 |1260 |31523 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142260 |1260 |31522 |0 |1 |2774A4|0 |2 |0 |
+ROW |142261 |1260 |31524 |0 |2 |F63100|0 |2 |0 |
+ROW |142262 |1412 |32601 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142263 |1412 |32602 |0 |1 |2774A4|0 |2 |0 |
+ROW |142264 |1412 |32603 |0 |2 |F63100|0 |2 |0 |
+ROW |142265 |1412 |32604 |0 |3 |A54F10|0 |2 |0 |
+ROW |142266 |1412 |32606 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142267 |1412 |32606 |2 |5 |6C59DC|0 |2 |0 |
+ROW |142268 |1413 |32608 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142269 |1413 |32610 |0 |1 |2774A4|0 |2 |0 |
+ROW |142270 |1413 |32611 |0 |2 |F63100|0 |2 |0 |
+ROW |142271 |1414 |32582 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142272 |1414 |32580 |2 |1 |2774A4|0 |2 |0 |
+ROW |142273 |1414 |32581 |2 |2 |F63100|0 |2 |0 |
+ROW |142274 |1414 |32597 |0 |3 |A54F10|1 |2 |0 |
+ROW |142275 |1414 |32599 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |142276 |1414 |32588 |0 |5 |6C59DC|1 |2 |0 |
+ROW |142277 |1415 |32583 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142278 |1415 |32584 |0 |1 |2774A4|0 |2 |0 |
+ROW |142279 |1415 |32585 |0 |2 |F63100|0 |2 |0 |
+ROW |142280 |1415 |32579 |2 |3 |A54F10|0 |2 |0 |
+ROW |142281 |1416 |32587 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142282 |1416 |32590 |0 |1 |2774A4|0 |2 |0 |
+ROW |142283 |1416 |32589 |0 |2 |F63100|0 |2 |0 |
+ROW |142284 |1417 |32673 |1 |0 |1A7C11|0 |2 |0 |
+ROW |142285 |1417 |32679 |1 |1 |2774A4|0 |2 |0 |
+ROW |142286 |1629 |35114 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142287 |1629 |35113 |5 |1 |2774A4|0 |2 |0 |
+ROW |142288 |1075 |30204 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142289 |1075 |30205 |0 |1 |2774A4|0 |2 |0 |
+ROW |142290 |1630 |35112 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142291 |1630 |35111 |0 |1 |2774A4|0 |2 |0 |
+ROW |142292 |1630 |35110 |0 |2 |F63100|0 |2 |0 |
+ROW |142293 |1630 |35108 |0 |3 |A54F10|0 |2 |0 |
+ROW |142294 |1630 |35105 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142295 |1076 |30209 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142296 |1076 |30208 |0 |1 |2774A4|0 |2 |0 |
+ROW |142297 |1077 |30206 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142298 |1077 |30207 |5 |1 |2774A4|0 |2 |0 |
+ROW |142299 |1078 |30216 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142300 |1078 |30215 |0 |1 |2774A4|0 |2 |0 |
+ROW |142301 |1079 |30210 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142302 |1079 |30211 |0 |1 |2774A4|0 |2 |0 |
+ROW |142303 |1079 |30212 |0 |2 |F63100|0 |2 |0 |
+ROW |142304 |1079 |30213 |0 |3 |A54F10|0 |2 |0 |
+ROW |142305 |1079 |30214 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142306 |1631 |35127 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142307 |1631 |35126 |5 |1 |2774A4|0 |2 |0 |
+ROW |142308 |1632 |35124 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142309 |1632 |35123 |0 |1 |2774A4|0 |2 |0 |
+ROW |142310 |1632 |35122 |0 |2 |F63100|0 |2 |0 |
+ROW |142311 |1632 |30222 |0 |3 |A54F10|0 |2 |0 |
+ROW |142312 |1632 |30223 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142313 |1080 |30226 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142314 |1080 |30225 |0 |1 |2774A4|0 |2 |0 |
+ROW |142315 |1633 |35139 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142316 |1633 |35138 |5 |1 |2774A4|0 |2 |0 |
+ROW |142317 |1081 |30247 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142318 |1081 |30248 |0 |1 |2774A4|0 |2 |0 |
+ROW |142319 |1634 |35137 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142320 |1634 |35136 |0 |1 |2774A4|0 |2 |0 |
+ROW |142321 |1634 |35135 |0 |2 |F63100|0 |2 |0 |
+ROW |142322 |1634 |35133 |0 |3 |A54F10|0 |2 |0 |
+ROW |142323 |1634 |35130 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142324 |1082 |30252 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142325 |1082 |30251 |0 |1 |2774A4|0 |2 |0 |
+ROW |142326 |1083 |30249 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142327 |1083 |30250 |5 |1 |2774A4|0 |2 |0 |
+ROW |142328 |1084 |30259 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142329 |1084 |30258 |0 |1 |2774A4|0 |2 |0 |
+ROW |142330 |1085 |30253 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142331 |1085 |30254 |0 |1 |2774A4|0 |2 |0 |
+ROW |142332 |1085 |30255 |0 |2 |F63100|0 |2 |0 |
+ROW |142333 |1085 |30256 |0 |3 |A54F10|0 |2 |0 |
+ROW |142334 |1085 |30257 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142335 |1635 |35152 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142336 |1635 |35151 |5 |1 |2774A4|0 |2 |0 |
+ROW |142337 |1636 |35149 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142338 |1636 |35148 |0 |1 |2774A4|0 |2 |0 |
+ROW |142339 |1636 |35147 |0 |2 |F63100|0 |2 |0 |
+ROW |142340 |1636 |30265 |0 |3 |A54F10|0 |2 |0 |
+ROW |142341 |1636 |30266 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142342 |1086 |30269 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142343 |1086 |30268 |0 |1 |2774A4|0 |2 |0 |
+ROW |142344 |1184 |30982 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142345 |1184 |30980 |5 |1 |2774A4|0 |2 |0 |
+ROW |142346 |1185 |30983 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142347 |1185 |30981 |0 |1 |2774A4|0 |2 |0 |
+ROW |142348 |1186 |30976 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142349 |1186 |30985 |0 |1 |2774A4|0 |2 |0 |
+ROW |142350 |1186 |30997 |0 |2 |F63100|0 |2 |0 |
+ROW |142351 |1186 |30970 |0 |3 |A54F10|0 |2 |0 |
+ROW |142352 |1186 |30973 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142353 |1186 |30995 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142354 |1186 |30998 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142355 |1186 |30978 |0 |7 |611F27|0 |2 |0 |
+ROW |142356 |1187 |31024 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142357 |1187 |31022 |5 |1 |2774A4|0 |2 |0 |
+ROW |142358 |1188 |31025 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142359 |1188 |31023 |0 |1 |2774A4|0 |2 |0 |
+ROW |142360 |1189 |31018 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142361 |1189 |31027 |0 |1 |2774A4|0 |2 |0 |
+ROW |142362 |1189 |31039 |0 |2 |F63100|0 |2 |0 |
+ROW |142363 |1189 |31012 |0 |3 |A54F10|0 |2 |0 |
+ROW |142364 |1189 |31015 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142365 |1189 |31037 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142366 |1189 |31040 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142367 |1189 |31020 |0 |7 |611F27|0 |2 |0 |
+ROW |142368 |1499 |33478 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142369 |1499 |33467 |0 |1 |2774A4|0 |2 |0 |
+ROW |142370 |1500 |33468 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142371 |1500 |33479 |0 |1 |2774A4|0 |2 |0 |
+ROW |142372 |1501 |33442 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142373 |1501 |33441 |0 |1 |2774A4|0 |2 |0 |
+ROW |142374 |1501 |33440 |0 |2 |F63100|0 |2 |0 |
+ROW |142375 |1502 |33423 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142376 |1502 |33419 |0 |1 |2774A4|0 |2 |0 |
+ROW |142377 |1502 |33422 |0 |2 |F63100|0 |2 |0 |
+ROW |142378 |1502 |33421 |0 |3 |A54F10|0 |2 |0 |
+ROW |142379 |1502 |33412 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142380 |1418 |32700 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142381 |1418 |32699 |0 |1 |2774A4|0 |2 |0 |
+ROW |142382 |1419 |32710 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142383 |1419 |32709 |0 |1 |2774A4|0 |2 |0 |
+ROW |142384 |1420 |32693 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142385 |1420 |32724 |0 |1 |2774A4|0 |2 |0 |
+ROW |142386 |1421 |32730 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142387 |1421 |32731 |0 |1 |2774A4|0 |2 |0 |
+ROW |142388 |1421 |32728 |0 |2 |F63100|0 |2 |0 |
+ROW |142389 |1421 |32729 |0 |3 |A54F10|0 |2 |0 |
+ROW |142390 |1422 |32705 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142391 |1422 |32706 |0 |1 |2774A4|0 |2 |0 |
+ROW |142392 |1423 |32702 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142393 |1423 |32703 |0 |1 |2774A4|0 |2 |0 |
+ROW |142394 |1424 |32708 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142395 |1424 |32722 |2 |1 |2774A4|0 |2 |0 |
+ROW |142396 |1424 |32695 |0 |2 |F63100|0 |2 |0 |
+ROW |142397 |1424 |32753 |0 |3 |A54F10|0 |2 |0 |
+ROW |142398 |1424 |32740 |2 |4 |FC6EA3|0 |2 |0 |
+ROW |142399 |1424 |32723 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142400 |1424 |32747 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142401 |1424 |32748 |2 |7 |611F27|0 |2 |0 |
+ROW |142402 |1424 |32749 |0 |8 |F230E0|0 |2 |0 |
+ROW |142403 |1424 |32750 |0 |9 |FFAD40|0 |2 |0 |
+ROW |142404 |1424 |32751 |2 |10 |40CDFF|0 |2 |0 |
+ROW |142405 |1424 |32752 |0 |11 |40FFA0|0 |2 |0 |
+ROW |142406 |1425 |32746 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142407 |1425 |32745 |2 |1 |2774A4|0 |2 |0 |
+ROW |142408 |1425 |32744 |0 |2 |F63100|0 |2 |0 |
+ROW |142409 |1425 |32743 |0 |3 |A54F10|0 |2 |0 |
+ROW |142410 |1425 |32742 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142411 |1426 |32720 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142412 |1426 |32721 |0 |1 |2774A4|0 |2 |0 |
+ROW |142413 |1426 |32719 |0 |2 |F63100|0 |2 |0 |
+ROW |142414 |1426 |32718 |0 |3 |A54F10|0 |2 |0 |
+ROW |142415 |2085 |39861 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142416 |2085 |39863 |0 |1 |2774A4|0 |2 |0 |
+ROW |142417 |2085 |39864 |0 |2 |F63100|0 |2 |0 |
+ROW |142418 |2085 |39862 |0 |3 |A54F10|0 |2 |0 |
+ROW |142419 |2086 |39849 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142420 |2086 |39833 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142421 |2086 |39848 |0 |1 |2774A4|0 |2 |0 |
+ROW |142422 |2086 |39832 |0 |1 |2774A4|0 |2 |0 |
+ROW |142423 |2086 |39847 |0 |2 |F63100|0 |2 |0 |
+ROW |142424 |2086 |39831 |0 |2 |F63100|0 |2 |0 |
+ROW |142425 |2086 |39846 |0 |3 |A54F10|0 |2 |0 |
+ROW |142426 |2086 |39850 |0 |3 |A54F10|0 |2 |0 |
+ROW |142427 |2086 |39841 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142428 |2087 |39900 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142429 |2088 |39901 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142430 |2089 |39892 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142431 |2089 |39893 |0 |1 |2774A4|0 |2 |0 |
+ROW |142432 |2089 |39890 |0 |2 |F63100|0 |2 |0 |
+ROW |142433 |2089 |39891 |0 |3 |A54F10|0 |2 |0 |
+ROW |142434 |2089 |39896 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142435 |2089 |39897 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142436 |2089 |39895 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142437 |2089 |39894 |0 |7 |611F27|0 |2 |0 |
+ROW |142438 |2090 |39888 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142439 |2090 |39887 |0 |1 |2774A4|0 |2 |0 |
+ROW |142440 |2091 |39880 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142441 |2091 |39879 |0 |1 |2774A4|0 |2 |0 |
+ROW |142442 |2091 |39878 |0 |2 |F63100|0 |2 |0 |
+ROW |142443 |2091 |39877 |0 |3 |A54F10|0 |2 |0 |
+ROW |142444 |2092 |39922 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142445 |2092 |39923 |0 |1 |2774A4|0 |2 |0 |
+ROW |142446 |2092 |39924 |0 |2 |F63100|0 |2 |0 |
+ROW |142447 |2092 |39921 |0 |3 |A54F10|0 |2 |0 |
+ROW |142448 |2093 |39966 |2 |0 |4CAF50|0 |2 |0 |
+ROW |142449 |2093 |39963 |2 |1 |AB47BC|0 |2 |0 |
+ROW |142450 |2093 |39969 |5 |2 |1E88E5|0 |4 |0 |
+ROW |142451 |2094 |40004 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142452 |2094 |40003 |0 |1 |2774A4|0 |2 |0 |
+ROW |142453 |2094 |40005 |0 |2 |F63100|0 |2 |0 |
+ROW |142454 |2094 |40006 |0 |3 |A54F10|0 |2 |0 |
+ROW |142455 |2289 |42693 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142456 |2289 |42692 |0 |1 |2774A4|0 |2 |0 |
+ROW |142457 |2289 |42694 |0 |2 |F63100|0 |2 |0 |
+ROW |142458 |2289 |42695 |0 |3 |A54F10|0 |2 |0 |
+ROW |142459 |2290 |42697 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142460 |2290 |42696 |0 |1 |2774A4|0 |2 |0 |
+ROW |142461 |2290 |42698 |0 |2 |F63100|0 |2 |0 |
+ROW |142462 |2290 |42699 |0 |3 |A54F10|0 |2 |0 |
+ROW |142463 |2096 |39994 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142464 |2096 |39993 |0 |1 |2774A4|0 |2 |0 |
+ROW |142465 |2097 |39986 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142466 |2097 |39988 |0 |1 |2774A4|0 |2 |0 |
+ROW |142467 |2097 |39990 |0 |2 |F63100|0 |2 |0 |
+ROW |142468 |2097 |39998 |0 |3 |A54F10|0 |2 |0 |
+ROW |142469 |2099 |39996 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142470 |2099 |39997 |0 |1 |2774A4|0 |2 |0 |
+ROW |142471 |2099 |39995 |0 |2 |F63100|0 |2 |0 |
+ROW |142472 |1130 |30613 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142473 |1130 |30635 |0 |1 |2774A4|0 |2 |0 |
+ROW |142474 |1130 |30625 |0 |2 |F63100|0 |2 |0 |
+ROW |142475 |1131 |30632 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142476 |1131 |30633 |5 |1 |2774A4|0 |2 |0 |
+ROW |142477 |1131 |30629 |5 |2 |F63100|0 |2 |0 |
+ROW |142478 |1132 |30630 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142479 |1132 |30628 |2 |1 |2774A4|0 |2 |0 |
+ROW |142480 |1132 |30631 |2 |2 |F63100|0 |2 |0 |
+ROW |142481 |1133 |30619 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142482 |1133 |30618 |0 |1 |2774A4|0 |2 |0 |
+ROW |142483 |1134 |30623 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142484 |1134 |30622 |5 |1 |2774A4|0 |2 |0 |
+ROW |142485 |1135 |30615 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142486 |841 |28813 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142487 |841 |28811 |0 |1 |2774A4|0 |2 |0 |
+ROW |142488 |841 |28812 |0 |2 |F63100|0 |2 |0 |
+ROW |142489 |841 |28814 |0 |3 |A54F10|0 |2 |0 |
+ROW |142490 |842 |28817 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142491 |842 |28815 |0 |1 |2774A4|0 |2 |0 |
+ROW |142492 |842 |28816 |0 |2 |F63100|0 |2 |0 |
+ROW |142493 |844 |28808 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142494 |844 |28807 |0 |1 |2774A4|0 |2 |0 |
+ROW |142495 |843 |28818 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142496 |845 |28829 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142497 |845 |28831 |0 |1 |2774A4|0 |2 |0 |
+ROW |142498 |845 |28832 |0 |2 |F63100|0 |2 |0 |
+ROW |142499 |845 |28830 |0 |3 |A54F10|0 |2 |0 |
+ROW |142500 |846 |28826 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142501 |846 |28828 |0 |1 |2774A4|0 |2 |0 |
+ROW |142502 |846 |28827 |0 |2 |F63100|0 |2 |0 |
+ROW |142503 |847 |28825 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142504 |1637 |35187 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142505 |1638 |35189 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142506 |1638 |35188 |5 |1 |2774A4|0 |2 |0 |
+ROW |142507 |1638 |35190 |5 |2 |F63100|0 |2 |0 |
+ROW |142508 |1638 |35191 |5 |3 |A54F10|0 |2 |0 |
+ROW |142509 |1638 |35192 |5 |4 |FC6EA3|0 |2 |0 |
+ROW |142510 |1639 |35198 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142511 |1640 |35200 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142512 |1640 |35199 |5 |1 |2774A4|0 |2 |0 |
+ROW |142513 |1640 |35201 |5 |2 |F63100|0 |2 |0 |
+ROW |142514 |1640 |35202 |5 |3 |A54F10|0 |2 |0 |
+ROW |142515 |1640 |35203 |5 |4 |FC6EA3|0 |2 |0 |
+ROW |142516 |1641 |35221 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142517 |1641 |35220 |5 |1 |2774A4|0 |2 |0 |
+ROW |142518 |1641 |35219 |5 |2 |F63100|0 |2 |0 |
+ROW |142519 |1642 |35214 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142520 |1642 |35216 |5 |1 |2774A4|0 |2 |0 |
+ROW |142521 |1642 |35207 |5 |2 |F63100|0 |2 |0 |
+ROW |142522 |1642 |35213 |5 |3 |A54F10|0 |2 |0 |
+ROW |142523 |1642 |35212 |5 |4 |FC6EA3|0 |2 |0 |
+ROW |142524 |1643 |35228 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142525 |1643 |35229 |5 |1 |2774A4|0 |2 |0 |
+ROW |142526 |1643 |35227 |5 |2 |F63100|0 |2 |0 |
+ROW |142527 |1644 |35231 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142528 |1644 |35230 |5 |1 |2774A4|0 |2 |0 |
+ROW |142529 |1644 |35235 |5 |2 |F63100|0 |2 |0 |
+ROW |142530 |1644 |35233 |5 |3 |A54F10|0 |2 |0 |
+ROW |142531 |1644 |35232 |5 |4 |FC6EA3|0 |2 |0 |
+ROW |142532 |1644 |35234 |5 |5 |6C59DC|0 |2 |0 |
+ROW |142533 |1644 |35236 |5 |6 |AC8C14|0 |2 |0 |
+ROW |142534 |1644 |35237 |5 |7 |611F27|0 |2 |0 |
+ROW |142535 |1645 |35243 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142536 |1645 |35244 |5 |1 |2774A4|0 |2 |0 |
+ROW |142537 |1645 |35245 |5 |2 |F63100|0 |2 |0 |
+ROW |142538 |1646 |35252 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142539 |1646 |35253 |5 |1 |2774A4|0 |2 |0 |
+ROW |142540 |1646 |35254 |5 |2 |F63100|0 |2 |0 |
+ROW |142541 |1647 |35172 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142542 |1647 |35168 |5 |1 |2774A4|0 |2 |0 |
+ROW |142543 |1647 |35164 |5 |2 |F63100|0 |2 |0 |
+ROW |142544 |1647 |35163 |5 |3 |A54F10|0 |2 |0 |
+ROW |142545 |1648 |35170 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142546 |1649 |35167 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142547 |1649 |35166 |5 |1 |2774A4|0 |2 |0 |
+ROW |142548 |1649 |35165 |5 |2 |F63100|0 |2 |0 |
+ROW |142549 |1650 |35176 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142550 |2291 |42731 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142551 |2292 |42732 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142552 |2293 |42733 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142553 |2294 |42734 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142554 |2406 |43586 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142555 |2406 |43566 |0 |1 |F63100|0 |2 |0 |
+ROW |142556 |2406 |43584 |0 |2 |2774A4|0 |2 |0 |
+ROW |142557 |2406 |43590 |0 |3 |A54F10|0 |2 |0 |
+ROW |142558 |2406 |43585 |0 |4 |6C59DC|1 |2 |0 |
+ROW |142559 |2406 |43579 |0 |5 |FC6EA3|1 |2 |0 |
+ROW |142560 |2406 |43583 |0 |6 |AC8C14|1 |2 |0 |
+ROW |142561 |2406 |43589 |0 |7 |611F27|1 |2 |0 |
+ROW |142562 |2407 |43582 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142563 |2407 |43571 |2 |1 |2774A4|0 |2 |0 |
+ROW |142564 |2407 |43576 |0 |2 |F63100|1 |2 |0 |
+ROW |142565 |2407 |43587 |0 |3 |A54F10|1 |2 |0 |
+ROW |142566 |2407 |43577 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |142567 |2407 |43588 |0 |5 |6C59DC|1 |2 |0 |
+ROW |142568 |2408 |43575 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142569 |2408 |43581 |0 |1 |F63100|0 |2 |0 |
+ROW |142570 |2408 |43573 |0 |2 |2774A4|0 |2 |0 |
+ROW |142571 |2408 |43578 |0 |3 |A54F10|0 |2 |0 |
+ROW |142572 |2408 |43574 |0 |4 |6C59DC|1 |2 |0 |
+ROW |142573 |2408 |43580 |0 |5 |FC6EA3|1 |2 |0 |
+ROW |142574 |2408 |43572 |0 |6 |AC8C14|1 |2 |0 |
+ROW |142575 |2408 |43567 |0 |7 |611F27|1 |2 |0 |
+ROW |142576 |2409 |43560 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142577 |2409 |43562 |0 |1 |2774A4|0 |2 |0 |
+ROW |142578 |2409 |43561 |0 |2 |F63100|0 |2 |0 |
+ROW |142579 |2409 |43557 |0 |3 |A54F10|0 |2 |0 |
+ROW |142580 |2409 |43558 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142581 |2409 |43559 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142582 |2102 |40167 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142583 |2102 |40147 |0 |1 |F63100|0 |2 |0 |
+ROW |142584 |2102 |40165 |0 |2 |2774A4|0 |2 |0 |
+ROW |142585 |2102 |40171 |0 |3 |A54F10|0 |2 |0 |
+ROW |142586 |2102 |40166 |0 |4 |6C59DC|1 |2 |0 |
+ROW |142587 |2102 |40160 |0 |5 |FC6EA3|1 |2 |0 |
+ROW |142588 |2102 |40164 |0 |6 |AC8C14|1 |2 |0 |
+ROW |142589 |2102 |40170 |0 |7 |611F27|1 |2 |0 |
+ROW |142590 |2103 |40163 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142591 |2103 |40152 |2 |1 |2774A4|0 |2 |0 |
+ROW |142592 |2103 |40157 |0 |2 |F63100|1 |2 |0 |
+ROW |142593 |2103 |40168 |0 |3 |A54F10|1 |2 |0 |
+ROW |142594 |2103 |40158 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |142595 |2103 |40169 |0 |5 |6C59DC|1 |2 |0 |
+ROW |142596 |2104 |40156 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142597 |2104 |40162 |0 |1 |F63100|0 |2 |0 |
+ROW |142598 |2104 |40154 |0 |2 |2774A4|0 |2 |0 |
+ROW |142599 |2104 |40159 |0 |3 |A54F10|0 |2 |0 |
+ROW |142600 |2104 |40155 |0 |4 |6C59DC|1 |2 |0 |
+ROW |142601 |2104 |40161 |0 |5 |FC6EA3|1 |2 |0 |
+ROW |142602 |2104 |40153 |0 |6 |AC8C14|1 |2 |0 |
+ROW |142603 |2104 |40148 |0 |7 |611F27|1 |2 |0 |
+ROW |142604 |2110 |40124 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142605 |2110 |40122 |0 |1 |2774A4|0 |2 |0 |
+ROW |142606 |2110 |40123 |0 |2 |F63100|0 |2 |0 |
+ROW |142607 |2110 |40126 |0 |3 |A54F10|0 |2 |0 |
+ROW |142608 |2110 |40117 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142609 |2110 |40125 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142610 |1262 |31592 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142611 |1262 |31584 |0 |1 |2774A4|0 |2 |0 |
+ROW |142612 |1262 |31582 |0 |2 |F63100|0 |2 |0 |
+ROW |142613 |1262 |31585 |0 |3 |A54F10|0 |2 |0 |
+ROW |142614 |1263 |31591 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142615 |1263 |31583 |0 |1 |2774A4|0 |2 |0 |
+ROW |142616 |1263 |31590 |0 |2 |F63100|0 |2 |0 |
+ROW |142617 |1264 |31602 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142618 |1264 |31597 |0 |1 |2774A4|0 |2 |0 |
+ROW |142619 |1264 |31601 |0 |2 |F63100|0 |2 |0 |
+ROW |142620 |1264 |31604 |0 |3 |A54F10|0 |2 |0 |
+ROW |142621 |1265 |31609 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142622 |1265 |31610 |0 |1 |2774A4|0 |2 |0 |
+ROW |142623 |1265 |31608 |0 |2 |F63100|0 |2 |0 |
+ROW |142624 |2295 |42752 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142625 |2296 |42754 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142626 |2296 |42753 |5 |1 |2774A4|0 |2 |0 |
+ROW |142627 |2297 |42756 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142628 |2297 |42755 |5 |1 |2774A4|0 |2 |0 |
+ROW |142629 |2298 |42757 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142630 |2298 |42758 |5 |1 |2774A4|0 |2 |0 |
+ROW |142631 |2299 |42761 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142632 |2299 |42769 |5 |1 |2774A4|0 |2 |0 |
+ROW |142633 |2299 |42776 |5 |2 |F63100|0 |2 |0 |
+ROW |142634 |2300 |42773 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142635 |2300 |42774 |5 |1 |2774A4|0 |2 |0 |
+ROW |142636 |2301 |42772 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142637 |2301 |42771 |5 |1 |2774A4|0 |2 |0 |
+ROW |142638 |2302 |42767 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142639 |2302 |42762 |5 |1 |2774A4|0 |2 |0 |
+ROW |142640 |2303 |42765 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142641 |2303 |42766 |5 |1 |2774A4|0 |2 |0 |
+ROW |142642 |2304 |42779 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142643 |2305 |42781 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142644 |2305 |42780 |5 |1 |2774A4|0 |2 |0 |
+ROW |142645 |2306 |42783 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142646 |2306 |42782 |5 |1 |2774A4|0 |2 |0 |
+ROW |142647 |2355 |42784 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142648 |2355 |42785 |5 |1 |2774A4|0 |2 |0 |
+ROW |142649 |2308 |42789 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142650 |2308 |42790 |5 |1 |2774A4|0 |2 |0 |
+ROW |142651 |1001 |29729 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142652 |1001 |29728 |0 |1 |2774A4|0 |2 |0 |
+ROW |142653 |1001 |29727 |0 |2 |F63100|0 |2 |0 |
+ROW |142654 |1001 |29725 |0 |3 |A54F10|0 |2 |0 |
+ROW |142655 |1001 |29723 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142656 |1001 |29733 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142657 |1001 |29737 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142658 |1001 |29731 |0 |7 |611F27|0 |2 |0 |
+ROW |142659 |1000 |29720 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142660 |1000 |29730 |0 |1 |2774A4|0 |2 |0 |
+ROW |142661 |1000 |29721 |0 |2 |F63100|0 |2 |0 |
+ROW |142662 |1000 |29726 |0 |3 |A54F10|0 |2 |0 |
+ROW |142663 |1000 |29724 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142664 |1000 |29734 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142665 |1000 |29722 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142666 |1000 |29732 |0 |7 |611F27|0 |2 |0 |
+ROW |142667 |1027 |30022 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142668 |1027 |30021 |0 |1 |2774A4|0 |2 |0 |
+ROW |142669 |1027 |30019 |0 |2 |F63100|0 |2 |0 |
+ROW |142670 |1008 |29698 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142671 |1008 |29700 |2 |1 |FF0000|0 |2 |0 |
+ROW |142672 |1007 |29691 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142673 |1013 |29657 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142674 |1013 |29658 |0 |1 |2774A4|0 |2 |0 |
+ROW |142675 |1009 |29687 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142676 |1009 |29694 |2 |1 |FF0000|0 |2 |0 |
+ROW |142677 |1029 |30017 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142678 |1029 |30016 |0 |1 |2774A4|0 |2 |0 |
+ROW |142679 |1029 |30015 |0 |2 |F63100|0 |2 |0 |
+ROW |142680 |1031 |30007 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142681 |1031 |30013 |0 |1 |2774A4|0 |2 |0 |
+ROW |142682 |1031 |30011 |0 |2 |F63100|0 |2 |0 |
+ROW |142683 |1031 |30009 |0 |3 |A54F10|0 |2 |0 |
+ROW |142684 |1031 |30005 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142685 |1031 |30003 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142686 |1031 |30023 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142687 |1031 |30001 |0 |7 |611F27|0 |2 |0 |
+ROW |142688 |1030 |30008 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142689 |1030 |30014 |0 |1 |2774A4|0 |2 |0 |
+ROW |142690 |1030 |30012 |0 |2 |F63100|0 |2 |0 |
+ROW |142691 |1030 |30010 |0 |3 |A54F10|0 |2 |0 |
+ROW |142692 |1030 |30006 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142693 |1030 |30004 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142694 |1030 |30000 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142695 |1030 |30002 |0 |7 |611F27|0 |2 |0 |
+ROW |142696 |1011 |29695 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142697 |1028 |30020 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142698 |1010 |29701 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142699 |1010 |29697 |0 |1 |2774A4|0 |2 |0 |
+ROW |142700 |1012 |29692 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142701 |1015 |29812 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142702 |1015 |29811 |0 |1 |2774A4|0 |2 |0 |
+ROW |142703 |1015 |29810 |0 |2 |F63100|0 |2 |0 |
+ROW |142704 |1015 |29808 |0 |3 |A54F10|0 |2 |0 |
+ROW |142705 |1015 |29806 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142706 |1015 |29816 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142707 |1015 |29820 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142708 |1015 |29814 |0 |7 |611F27|0 |2 |0 |
+ROW |142709 |1014 |29803 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142710 |1014 |29813 |0 |1 |2774A4|0 |2 |0 |
+ROW |142711 |1014 |29804 |0 |2 |F63100|0 |2 |0 |
+ROW |142712 |1014 |29809 |0 |3 |A54F10|0 |2 |0 |
+ROW |142713 |1014 |29807 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142714 |1014 |29817 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142715 |1014 |29805 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142716 |1014 |29815 |0 |7 |611F27|0 |2 |0 |
+ROW |142717 |1016 |29768 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142718 |1016 |29767 |0 |1 |2774A4|0 |2 |0 |
+ROW |142719 |1016 |29765 |0 |2 |F63100|0 |2 |0 |
+ROW |142720 |1022 |29782 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142721 |1022 |29781 |2 |1 |FF0000|0 |2 |0 |
+ROW |142722 |1021 |29783 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142723 |1023 |29780 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142724 |1023 |29784 |2 |1 |FF0000|0 |2 |0 |
+ROW |142725 |1018 |29763 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142726 |1018 |29762 |0 |1 |2774A4|0 |2 |0 |
+ROW |142727 |1018 |29761 |0 |2 |F63100|0 |2 |0 |
+ROW |142728 |1020 |29753 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142729 |1020 |29759 |0 |1 |2774A4|0 |2 |0 |
+ROW |142730 |1020 |29757 |0 |2 |F63100|0 |2 |0 |
+ROW |142731 |1020 |29755 |0 |3 |A54F10|0 |2 |0 |
+ROW |142732 |1020 |29751 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142733 |1020 |29749 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142734 |1020 |29769 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142735 |1020 |29747 |0 |7 |611F27|0 |2 |0 |
+ROW |142736 |1019 |29754 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142737 |1019 |29760 |0 |1 |2774A4|0 |2 |0 |
+ROW |142738 |1019 |29758 |0 |2 |F63100|0 |2 |0 |
+ROW |142739 |1019 |29756 |0 |3 |A54F10|0 |2 |0 |
+ROW |142740 |1019 |29752 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142741 |1019 |29750 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142742 |1019 |29746 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142743 |1019 |29748 |0 |7 |611F27|0 |2 |0 |
+ROW |142744 |1025 |29775 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142745 |1017 |29766 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142746 |1024 |29776 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142747 |1024 |29777 |0 |1 |2774A4|0 |2 |0 |
+ROW |142748 |1026 |29772 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142749 |1356 |32276 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142750 |1356 |32275 |0 |1 |2774A4|0 |2 |0 |
+ROW |142751 |1357 |32281 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142752 |1357 |32267 |0 |1 |2774A4|0 |2 |0 |
+ROW |142753 |1357 |32279 |0 |2 |F63100|0 |2 |0 |
+ROW |142754 |1358 |32268 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142755 |1358 |32274 |0 |1 |2774A4|0 |2 |0 |
+ROW |142756 |1358 |32271 |0 |2 |F63100|0 |2 |0 |
+ROW |142757 |1359 |32288 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142758 |1359 |32291 |0 |1 |2774A4|0 |2 |0 |
+ROW |142759 |1360 |32247 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142760 |1360 |32245 |0 |1 |2774A4|0 |2 |0 |
+ROW |142761 |1360 |32246 |0 |2 |F63100|0 |2 |0 |
+ROW |142762 |1361 |32248 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142763 |1361 |32249 |0 |1 |2774A4|0 |2 |0 |
+ROW |142764 |1361 |32250 |0 |2 |F63100|0 |2 |0 |
+ROW |142765 |1362 |32240 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142766 |1362 |32273 |0 |1 |2774A4|0 |2 |0 |
+ROW |142767 |1363 |32282 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142768 |1363 |32283 |0 |1 |2774A4|0 |2 |0 |
+ROW |142769 |1363 |32289 |0 |2 |F63100|0 |2 |0 |
+ROW |142770 |1363 |32290 |0 |3 |A54F10|0 |2 |0 |
+ROW |142771 |1363 |32286 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142772 |1363 |32287 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142773 |1363 |32241 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142774 |1363 |32242 |0 |7 |611F27|0 |2 |0 |
+ROW |142775 |1363 |32243 |0 |8 |F230E0|0 |2 |0 |
+ROW |142776 |1363 |32244 |0 |9 |FFAD40|0 |2 |0 |
+ROW |142777 |1363 |32277 |0 |10 |40CDFF|0 |2 |0 |
+ROW |142778 |1363 |32278 |0 |11 |40FFA0|0 |2 |0 |
+ROW |142779 |1427 |32768 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142780 |1427 |32767 |5 |1 |2774A4|0 |2 |0 |
+ROW |142781 |1428 |32774 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142782 |1428 |32772 |5 |1 |2774A4|0 |2 |0 |
+ROW |142783 |1428 |32775 |5 |2 |F63100|0 |2 |0 |
+ROW |142784 |1428 |32773 |5 |3 |A54F10|0 |2 |0 |
+ROW |142785 |1429 |32779 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142786 |1429 |32777 |5 |1 |2774A4|0 |2 |0 |
+ROW |142787 |1429 |32778 |5 |2 |F63100|0 |2 |0 |
+ROW |142788 |1806 |36785 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142789 |1806 |36786 |0 |1 |2774A4|0 |2 |0 |
+ROW |142790 |1806 |36787 |0 |2 |F63100|0 |2 |0 |
+ROW |142791 |2309 |42845 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142792 |2309 |42846 |0 |1 |2774A4|0 |2 |0 |
+ROW |142793 |2309 |42844 |0 |2 |F63100|0 |2 |0 |
+ROW |142794 |2309 |42843 |0 |3 |A54F10|0 |2 |0 |
+ROW |142795 |2309 |42842 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142796 |2310 |42876 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142797 |2311 |42849 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142798 |2311 |42852 |2 |1 |2774A4|0 |2 |0 |
+ROW |142799 |2311 |42851 |0 |2 |F63100|1 |2 |0 |
+ROW |142800 |2311 |42848 |0 |3 |A54F10|1 |2 |0 |
+ROW |142801 |2311 |42850 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |142802 |2311 |42847 |0 |5 |6C59DC|1 |2 |0 |
+ROW |142803 |2312 |42859 |0 |0 |969696|0 |9 |2 |
+ROW |142804 |2312 |42860 |0 |1 |C80000|0 |9 |0 |
+ROW |142805 |2313 |42864 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142806 |2313 |42868 |5 |1 |2774A4|0 |2 |0 |
+ROW |142807 |2314 |42866 |0 |0 |969696|0 |9 |2 |
+ROW |142808 |2314 |42867 |0 |1 |C80000|0 |9 |0 |
+ROW |142809 |2315 |42871 |0 |0 |969696|0 |9 |2 |
+ROW |142810 |2315 |42872 |0 |1 |C80000|0 |9 |0 |
+ROW |142811 |2316 |42873 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142812 |2316 |42875 |5 |1 |2774A4|0 |2 |0 |
+ROW |142813 |2317 |42824 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142814 |2317 |42811 |0 |1 |2774A4|0 |2 |0 |
+ROW |142815 |2318 |42822 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142816 |2318 |42817 |0 |1 |2774A4|0 |2 |0 |
+ROW |142817 |2319 |42809 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142818 |2319 |42805 |5 |1 |2774A4|0 |2 |0 |
+ROW |142819 |2320 |42810 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142820 |2321 |42827 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142821 |2321 |42829 |0 |1 |2774A4|0 |2 |0 |
+ROW |142822 |2322 |42818 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142823 |2322 |42819 |0 |1 |2774A4|0 |2 |0 |
+ROW |142824 |2322 |42820 |0 |2 |F63100|0 |2 |0 |
+ROW |142825 |2322 |42821 |0 |3 |A54F10|1 |2 |0 |
+ROW |142826 |1430 |32837 |2 |0 |1A7C11|0 |2 |0 |
+ROW |142827 |1430 |32836 |2 |1 |2774A4|0 |2 |0 |
+ROW |142828 |1430 |32835 |2 |2 |F63100|0 |2 |0 |
+ROW |142829 |1431 |32856 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142830 |1432 |32828 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142831 |1433 |32847 |5 |0 |34bdeb|0 |2 |0 |
+ROW |142832 |1434 |32797 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142833 |1434 |32796 |5 |1 |2774A4|0 |2 |0 |
+ROW |142834 |1434 |32801 |2 |2 |F63100|0 |2 |0 |
+ROW |142835 |1435 |32834 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142836 |1436 |32819 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142837 |1437 |32826 |5 |0 |1A7C11|0 |2 |0 |
+ROW |142838 |1614 |34976 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142839 |1614 |34975 |0 |1 |2774A4|0 |2 |0 |
+ROW |142840 |1614 |34978 |0 |2 |F63100|0 |2 |0 |
+ROW |142841 |1614 |34979 |0 |3 |A54F10|0 |2 |0 |
+ROW |142842 |1614 |34980 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142843 |1615 |34982 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142844 |1615 |34997 |0 |1 |2774A4|0 |2 |0 |
+ROW |142845 |1615 |35001 |0 |2 |F63100|0 |2 |0 |
+ROW |142846 |1615 |35000 |0 |3 |A54F10|0 |2 |0 |
+ROW |142847 |1615 |34998 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142848 |1615 |34996 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142849 |1616 |35015 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142850 |1616 |35014 |0 |1 |2774A4|0 |2 |0 |
+ROW |142851 |1617 |35012 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142852 |1617 |35013 |0 |1 |2774A4|0 |2 |0 |
+ROW |142853 |1618 |34951 |0 |0 |1A7C11|0 |2 |0 |
+ROW |142854 |1618 |34952 |0 |1 |2774A4|0 |2 |0 |
+ROW |142855 |1618 |34953 |0 |2 |F63100|0 |2 |0 |
+ROW |142856 |1618 |34954 |0 |3 |A54F10|0 |2 |0 |
+ROW |142857 |1618 |34956 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |142858 |1618 |34950 |0 |5 |6C59DC|0 |2 |0 |
+ROW |142859 |1618 |34957 |0 |6 |AC8C14|0 |2 |0 |
+ROW |142860 |1618 |34959 |0 |7 |611F27|0 |2 |0 |
+ROW |142861 |1618 |34965 |0 |8 |F230E0|0 |2 |0 |
+ROW |142862 |529 |23357 |0 |0 |DD0000|0 |2 |0 |
+ROW |142863 |529 |23341 |0 |1 |00DDDD|0 |2 |0 |
+ROW |142864 |529 |23342 |0 |2 |3333FF|0 |2 |0 |
+ROW |142865 |529 |28251 |0 |3 |00FF00|0 |2 |0 |
+ROW |142866 |530 |23345 |0 |0 |990099|0 |2 |0 |
+ROW |142867 |530 |23348 |0 |1 |990000|0 |2 |0 |
+ROW |142868 |530 |23355 |0 |2 |0000EE|0 |2 |0 |
+ROW |142869 |530 |23352 |0 |3 |FF33FF|0 |2 |0 |
+ROW |142870 |530 |23356 |0 |4 |007700|0 |2 |0 |
+ROW |142871 |530 |23354 |0 |5 |003300|0 |2 |0 |
+ROW |142872 |530 |23346 |0 |6 |33FFFF|0 |2 |0 |
+ROW |142873 |530 |23349 |0 |7 |DD0000|0 |2 |0 |
+ROW |142874 |530 |23344 |0 |8 |000099|0 |2 |0 |
+ROW |142875 |530 |28250 |0 |9 |00FF00|0 |2 |0 |
+ROW |142876 |530 |33019 |0 |10 |5A2B57|0 |2 |0 |
+ROW |142877 |530 |39826 |0 |11 |9FA8DA|0 |2 |0 |
+ROW |142878 |531 |23353 |0 |0 |FFAA00|0 |2 |0 |
+ROW |142879 |531 |23347 |0 |1 |990099|0 |2 |0 |
+ROW |142880 |531 |23350 |0 |2 |EE0000|0 |2 |0 |
+ROW |142881 |531 |23343 |0 |3 |FF66FF|0 |2 |0 |
+ROW |142882 |531 |23360 |0 |4 |00EE00|0 |2 |0 |
+ROW |142883 |531 |25369 |0 |5 |009999|0 |2 |0 |
+ROW |142884 |531 |25368 |0 |6 |BBBB00|0 |2 |0 |
+ROW |142885 |531 |28618 |0 |7 |990000|0 |2 |0 |
+ROW |142886 |531 |28619 |0 |8 |008800|0 |2 |0 |
+ROW |142887 |531 |33018 |0 |9 |2B5429|0 |2 |0 |
+ROW |142888 |807 |28617 |0 |0 |008800|0 |2 |0 |
+ROW |142889 |532 |23340 |5 |0 |00C800|0 |2 |0 |
+ROW |142890 |532 |23358 |0 |1 |C80000|0 |2 |0 |
+ROW |142891 |803 |28599 |0 |0 |DD0000|0 |2 |0 |
+ROW |142892 |803 |28596 |0 |1 |00DDDD|0 |2 |0 |
+ROW |142893 |803 |28597 |0 |2 |3333FF|0 |2 |0 |
+ROW |142894 |803 |28598 |0 |3 |00FF00|0 |2 |0 |
+ROW |142895 |804 |28602 |0 |0 |990099|0 |2 |0 |
+ROW |142896 |804 |28606 |0 |1 |990000|0 |2 |0 |
+ROW |142897 |804 |28608 |0 |2 |0000EE|0 |2 |0 |
+ROW |142898 |804 |28615 |0 |3 |FF33FF|0 |2 |0 |
+ROW |142899 |804 |28610 |0 |4 |007700|0 |2 |0 |
+ROW |142900 |804 |28611 |0 |5 |003300|0 |2 |0 |
+ROW |142901 |804 |28616 |0 |6 |33FFFF|0 |2 |0 |
+ROW |142902 |804 |28607 |0 |7 |DD0000|0 |2 |0 |
+ROW |142903 |804 |28604 |0 |8 |000099|0 |2 |0 |
+ROW |142904 |804 |28588 |0 |9 |00FF00|0 |2 |0 |
+ROW |142905 |804 |33013 |0 |10 |5A2B57|0 |2 |0 |
+ROW |142906 |804 |39825 |0 |11 |9FA8DA|0 |2 |0 |
+ROW |142907 |805 |28612 |0 |0 |FFAA00|0 |2 |0 |
+ROW |142908 |805 |28600 |0 |1 |990099|0 |2 |0 |
+ROW |142909 |805 |28613 |0 |2 |EE0000|0 |2 |0 |
+ROW |142910 |805 |28605 |0 |3 |FF66FF|0 |2 |0 |
+ROW |142911 |805 |28601 |0 |4 |00EE00|0 |2 |0 |
+ROW |142912 |805 |28603 |0 |5 |009999|0 |2 |0 |
+ROW |142913 |805 |28609 |0 |6 |BBBB00|0 |2 |0 |
+ROW |142914 |805 |40188 |0 |7 |990000|0 |2 |0 |
+ROW |142915 |805 |40189 |0 |8 |008800|0 |2 |0 |
+ROW |142916 |805 |33012 |0 |9 |2B5429|0 |2 |0 |
+ROW |142917 |2113 |40187 |0 |0 |008800|0 |2 |0 |
+ROW |142918 |806 |28595 |5 |0 |00C800|0 |2 |0 |
+ROW |142919 |806 |28586 |0 |1 |C80000|0 |2 |0 |
+ROW |142920 |1445 |22404 |0 |0 |990099|0 |2 |0 |
+ROW |142921 |1445 |22399 |0 |1 |990000|0 |2 |0 |
+ROW |142922 |1445 |22416 |0 |2 |0000EE|0 |2 |0 |
+ROW |142923 |1445 |25366 |0 |3 |FF33FF|0 |2 |0 |
+ROW |142924 |1445 |22418 |0 |4 |009600|0 |2 |0 |
+ROW |142925 |1445 |22402 |0 |5 |003300|0 |2 |0 |
+ROW |142926 |1445 |22400 |0 |6 |33FFFF|0 |2 |0 |
+ROW |142927 |1445 |22689 |0 |7 |DD0000|0 |2 |0 |
+ROW |142928 |1445 |23171 |0 |8 |000099|0 |2 |0 |
+ROW |142929 |1445 |22401 |0 |9 |00FF00|0 |2 |0 |
+ROW |142930 |1445 |33023 |0 |10 |5A2B57|0 |2 |0 |
+ROW |142931 |1445 |39822 |0 |11 |9FA8DA|0 |2 |0 |
+ROW |142932 |1651 |22406 |0 |0 |00EE00|0 |2 |0 |
+ROW |142933 |1651 |25665 |0 |1 |0000EE|0 |2 |0 |
+ROW |142934 |1651 |25666 |0 |2 |FFAA00|0 |2 |0 |
+ROW |142935 |1651 |28537 |0 |3 |00EEEE|0 |2 |0 |
+ROW |142936 |1651 |28535 |0 |4 |990099|0 |2 |0 |
+ROW |142937 |1652 |22426 |0 |0 |00EE00|0 |2 |0 |
+ROW |142938 |1652 |22408 |0 |1 |FFAA00|0 |2 |0 |
+ROW |142939 |1652 |22412 |0 |2 |990099|0 |2 |0 |
+ROW |142940 |1652 |22414 |0 |3 |FF66FF|0 |2 |0 |
+ROW |142941 |1652 |23663 |0 |4 |009999|0 |2 |0 |
+ROW |142942 |1652 |33022 |0 |5 |2B5429|0 |2 |0 |
+ROW |142943 |1652 |22430 |0 |6 |8048B4|0 |2 |0 |
+ROW |142944 |1652 |22420 |0 |7 |FD5434|0 |2 |0 |
+ROW |142945 |1653 |22422 |0 |0 |00EE00|0 |2 |0 |
+ROW |142946 |1653 |22424 |0 |1 |0000EE|0 |2 |0 |
+ROW |142947 |1653 |25370 |0 |2 |FFAA00|0 |2 |0 |
+ROW |142948 |1653 |29822 |0 |3 |00EEEE|0 |2 |0 |
+ROW |142949 |1653 |34317 |0 |4 |990099|0 |2 |0 |
+ROW |142950 |1653 |34316 |0 |5 |EE0000|0 |2 |0 |
+ROW |142951 |1654 |33021 |0 |0 |C80000|0 |2 |0 |
+ROW |142952 |1654 |33020 |0 |1 |00C800|0 |2 |0 |
+ROW |142953 |527 |22199 |0 |0 |C80000|0 |2 |0 |
+ROW |142954 |527 |22196 |0 |1 |00C800|0 |2 |0 |
+ROW |142955 |410 |22185 |0 |0 |009900|0 |2 |0 |
+ROW |142956 |410 |22189 |0 |1 |DD0000|0 |2 |0 |
+ROW |142957 |410 |22396 |0 |2 |00DDDD|0 |2 |0 |
+ROW |142958 |410 |22183 |0 |3 |3333FF|0 |2 |0 |
+ROW |142959 |410 |22191 |0 |4 |999900|0 |2 |0 |
+ROW |142960 |410 |23634 |0 |5 |00FF00|0 |2 |0 |
+ROW |142961 |404 |22404 |0 |0 |990099|0 |2 |0 |
+ROW |142962 |404 |22399 |0 |1 |990000|0 |2 |0 |
+ROW |142963 |404 |22416 |0 |2 |0000EE|0 |2 |0 |
+ROW |142964 |404 |22430 |0 |3 |FF33FF|0 |2 |0 |
+ROW |142965 |404 |22418 |0 |4 |009600|0 |2 |0 |
+ROW |142966 |404 |22402 |0 |5 |003300|0 |2 |0 |
+ROW |142967 |404 |22420 |0 |6 |CCCC00|0 |2 |0 |
+ROW |142968 |404 |22400 |0 |7 |33FFFF|0 |2 |0 |
+ROW |142969 |404 |22689 |0 |8 |DD0000|0 |2 |0 |
+ROW |142970 |404 |23171 |0 |9 |000099|0 |2 |0 |
+ROW |142971 |404 |22401 |0 |10 |00FF00|0 |2 |0 |
+ROW |142972 |404 |33023 |0 |11 |5A2B57|0 |2 |0 |
+ROW |142973 |404 |39822 |0 |12 |9FA8DA|0 |2 |0 |
+ROW |142974 |406 |22426 |0 |0 |00EE00|0 |2 |0 |
+ROW |142975 |406 |22422 |0 |1 |0000EE|0 |2 |0 |
+ROW |142976 |406 |22408 |0 |2 |FFAA00|0 |2 |0 |
+ROW |142977 |406 |22424 |0 |3 |00EEEE|0 |2 |0 |
+ROW |142978 |406 |22412 |0 |4 |990099|0 |2 |0 |
+ROW |142979 |406 |22406 |0 |5 |EE0000|0 |2 |0 |
+ROW |142980 |406 |22414 |0 |6 |FF66FF|0 |2 |0 |
+ROW |142981 |406 |23663 |0 |7 |009999|0 |2 |0 |
+ROW |142982 |406 |25366 |0 |8 |BBBB00|0 |2 |0 |
+ROW |142983 |406 |25370 |0 |9 |AA0000|0 |2 |0 |
+ROW |142984 |406 |25665 |0 |10 |990000|0 |2 |0 |
+ROW |142985 |406 |25666 |0 |11 |008800|0 |2 |0 |
+ROW |142986 |406 |28535 |0 |12 |80B0E0|0 |2 |0 |
+ROW |142987 |406 |28537 |0 |13 |4080B0|0 |2 |0 |
+ROW |142988 |406 |29822 |0 |14 |8000FF|0 |2 |0 |
+ROW |142989 |406 |33022 |0 |15 |2B5429|0 |2 |0 |
+ROW |142990 |406 |34317 |0 |16 |8048B4|0 |2 |0 |
+ROW |142991 |406 |34316 |0 |17 |FD5434|0 |2 |0 |
+ROW |142992 |406 |35274 |0 |18 |790E1F|0 |2 |0 |
+ROW |142993 |406 |35272 |0 |19 |87AC4D|0 |2 |0 |
+ROW |142994 |788 |28248 |0 |0 |008800|0 |2 |0 |
+ROW |142995 |788 |28533 |0 |1 |EE0000|0 |2 |0 |
+ROW |142996 |392 |22187 |5 |0 |00C800|0 |2 |0 |
+ROW |142997 |392 |23251 |0 |1 |F63100|0 |2 |0 |
+ROW |142998 |1444 |28581 |0 |0 |990099|0 |2 |0 |
+ROW |142999 |1444 |28574 |0 |1 |990000|0 |2 |0 |
+ROW |143000 |1444 |28571 |0 |2 |0000EE|0 |2 |0 |
+ROW |143001 |1444 |28562 |0 |3 |FF33FF|0 |2 |0 |
+ROW |143002 |1444 |28570 |0 |4 |009600|0 |2 |0 |
+ROW |143003 |1444 |28569 |0 |5 |003300|0 |2 |0 |
+ROW |143004 |1444 |28552 |0 |6 |33FFFF|0 |2 |0 |
+ROW |143005 |1444 |28573 |0 |7 |DD0000|0 |2 |0 |
+ROW |143006 |1444 |28579 |0 |8 |000099|0 |2 |0 |
+ROW |143007 |1444 |28559 |0 |9 |00FF00|0 |2 |0 |
+ROW |143008 |1444 |33017 |0 |10 |5A2B57|0 |2 |0 |
+ROW |143009 |1444 |39824 |0 |11 |9FA8DA|0 |2 |0 |
+ROW |143010 |1659 |28567 |0 |0 |00EE00|0 |2 |0 |
+ROW |143011 |1659 |28575 |0 |1 |0000EE|0 |2 |0 |
+ROW |143012 |1659 |28576 |0 |2 |FFAA00|0 |2 |0 |
+ROW |143013 |1659 |28583 |0 |3 |00EEEE|0 |2 |0 |
+ROW |143014 |1659 |28582 |0 |4 |990099|0 |2 |0 |
+ROW |143015 |1660 |28572 |0 |0 |00EE00|0 |2 |0 |
+ROW |143016 |1660 |28568 |0 |1 |FFAA00|0 |2 |0 |
+ROW |143017 |1660 |28564 |0 |2 |990099|0 |2 |0 |
+ROW |143018 |1660 |28578 |0 |3 |FF66FF|0 |2 |0 |
+ROW |143019 |1660 |28580 |0 |4 |009999|0 |2 |0 |
+ROW |143020 |1660 |33016 |0 |5 |2B5429|0 |2 |0 |
+ROW |143021 |1660 |28565 |0 |6 |8048B4|0 |2 |0 |
+ROW |143022 |1660 |28577 |0 |7 |FD5434|0 |2 |0 |
+ROW |143023 |1661 |28566 |0 |0 |00EE00|0 |2 |0 |
+ROW |143024 |1661 |28561 |0 |1 |0000EE|0 |2 |0 |
+ROW |143025 |1661 |28563 |0 |2 |FFAA00|0 |2 |0 |
+ROW |143026 |1661 |29821 |0 |3 |00EEEE|0 |2 |0 |
+ROW |143027 |1661 |34314 |0 |4 |990099|0 |2 |0 |
+ROW |143028 |1661 |34315 |0 |5 |EE0000|0 |2 |0 |
+ROW |143029 |1662 |33015 |0 |0 |C80000|0 |2 |0 |
+ROW |143030 |1662 |33014 |0 |1 |00C800|0 |2 |0 |
+ROW |143031 |797 |28546 |0 |0 |C80000|0 |2 |0 |
+ROW |143032 |797 |28545 |0 |1 |00C800|0 |2 |0 |
+ROW |143033 |798 |28551 |0 |0 |009900|0 |2 |0 |
+ROW |143034 |798 |28543 |0 |1 |DD0000|0 |2 |0 |
+ROW |143035 |798 |28542 |0 |2 |00DDDD|0 |2 |0 |
+ROW |143036 |798 |28549 |0 |3 |3333FF|0 |2 |0 |
+ROW |143037 |798 |28544 |0 |4 |999900|0 |2 |0 |
+ROW |143038 |798 |28548 |0 |5 |00FF00|0 |2 |0 |
+ROW |143039 |799 |28581 |0 |0 |990099|0 |2 |0 |
+ROW |143040 |799 |28574 |0 |1 |990000|0 |2 |0 |
+ROW |143041 |799 |28571 |0 |2 |0000EE|0 |2 |0 |
+ROW |143042 |799 |28565 |0 |3 |FF33FF|0 |2 |0 |
+ROW |143043 |799 |28570 |0 |4 |009600|0 |2 |0 |
+ROW |143044 |799 |28569 |0 |5 |003300|0 |2 |0 |
+ROW |143045 |799 |28577 |0 |6 |CCCC00|0 |2 |0 |
+ROW |143046 |799 |28552 |0 |7 |33FFFF|0 |2 |0 |
+ROW |143047 |799 |28573 |0 |8 |DD0000|0 |2 |0 |
+ROW |143048 |799 |28579 |0 |9 |000099|0 |2 |0 |
+ROW |143049 |799 |28559 |0 |10 |00FF00|0 |2 |0 |
+ROW |143050 |799 |33017 |0 |11 |5A2B57|0 |2 |0 |
+ROW |143051 |799 |39824 |0 |12 |9FA8DA|0 |2 |0 |
+ROW |143052 |800 |28572 |0 |0 |00EE00|0 |2 |0 |
+ROW |143053 |800 |28566 |0 |1 |0000EE|0 |2 |0 |
+ROW |143054 |800 |28568 |0 |2 |FFAA00|0 |2 |0 |
+ROW |143055 |800 |28561 |0 |3 |00EEEE|0 |2 |0 |
+ROW |143056 |800 |28564 |0 |4 |990099|0 |2 |0 |
+ROW |143057 |800 |28567 |0 |5 |EE0000|0 |2 |0 |
+ROW |143058 |800 |28578 |0 |6 |FF66FF|0 |2 |0 |
+ROW |143059 |800 |28580 |0 |7 |009999|0 |2 |0 |
+ROW |143060 |800 |28562 |0 |8 |BBBB00|0 |2 |0 |
+ROW |143061 |800 |28563 |0 |9 |AA0000|0 |2 |0 |
+ROW |143062 |800 |28575 |0 |10 |990000|0 |2 |0 |
+ROW |143063 |800 |28576 |0 |11 |008800|0 |2 |0 |
+ROW |143064 |800 |28582 |0 |12 |80B0E0|0 |2 |0 |
+ROW |143065 |800 |28583 |0 |13 |4080B0|0 |2 |0 |
+ROW |143066 |800 |29821 |0 |14 |8000FF|0 |2 |0 |
+ROW |143067 |800 |33016 |0 |15 |2B5429|0 |2 |0 |
+ROW |143068 |800 |34314 |0 |16 |8048B4|0 |2 |0 |
+ROW |143069 |800 |34315 |0 |17 |FD5434|0 |2 |0 |
+ROW |143070 |800 |35279 |0 |18 |790E1F|0 |2 |0 |
+ROW |143071 |800 |35278 |0 |19 |87AC4D|0 |2 |0 |
+ROW |143072 |801 |28560 |0 |0 |008800|0 |2 |0 |
+ROW |143073 |801 |28584 |0 |1 |EE0000|0 |2 |0 |
+ROW |143074 |802 |28550 |5 |0 |00C800|0 |2 |0 |
+ROW |143075 |802 |28540 |0 |1 |F63100|0 |2 |0 |
+ROW |143076 |1438 |33001 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143077 |1438 |33002 |0 |1 |2774A4|0 |2 |0 |
+ROW |143078 |1438 |33000 |2 |2 |F63100|0 |2 |0 |
+ROW |143079 |1439 |33005 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143080 |1439 |33004 |0 |1 |2774A4|0 |2 |0 |
+ROW |143081 |1440 |32980 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143082 |1440 |32970 |0 |1 |2774A4|0 |2 |0 |
+ROW |143083 |1441 |32967 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143084 |1441 |32968 |0 |1 |2774A4|0 |2 |0 |
+ROW |143085 |1441 |32995 |2 |2 |F63100|0 |2 |0 |
+ROW |143086 |1442 |32997 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143087 |1442 |32984 |0 |1 |2774A4|0 |2 |0 |
+ROW |143088 |1443 |32973 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143089 |1443 |32971 |0 |1 |2774A4|0 |2 |0 |
+ROW |143090 |1503 |33518 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143091 |1504 |33501 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143092 |2399 |43533 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143093 |2399 |43531 |0 |1 |2774A4|0 |2 |0 |
+ROW |143094 |2400 |43532 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143095 |2400 |43537 |0 |1 |2774A4|0 |2 |0 |
+ROW |143096 |2401 |43534 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143097 |2401 |43535 |0 |1 |2774A4|0 |2 |0 |
+ROW |143098 |2402 |43520 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143099 |2402 |43518 |0 |1 |2774A4|0 |2 |0 |
+ROW |143100 |2403 |43519 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143101 |2403 |43517 |0 |1 |2774A4|0 |2 |0 |
+ROW |143102 |2404 |43506 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143103 |2404 |43505 |0 |1 |2774A4|0 |2 |0 |
+ROW |143104 |2405 |43508 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143105 |2405 |43507 |0 |1 |2774A4|0 |2 |0 |
+ROW |143106 |2410 |43652 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143107 |2410 |43658 |0 |1 |2774A4|0 |2 |0 |
+ROW |143108 |2411 |43653 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143109 |2411 |43659 |0 |1 |2774A4|0 |2 |0 |
+ROW |143110 |2412 |43678 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143111 |2412 |43673 |0 |1 |2774A4|0 |2 |0 |
+ROW |143112 |2413 |43677 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143113 |2413 |43664 |0 |1 |2774A4|0 |2 |0 |
+ROW |143114 |2414 |43672 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143115 |2414 |43676 |0 |1 |2774A4|0 |2 |0 |
+ROW |143116 |2414 |43665 |0 |2 |F63100|0 |2 |0 |
+ROW |143117 |2415 |43671 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143118 |2415 |43675 |0 |1 |2774A4|0 |2 |0 |
+ROW |143119 |2415 |43683 |0 |2 |F63100|0 |2 |0 |
+ROW |143120 |2416 |43605 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143121 |2416 |43612 |0 |1 |2774A4|0 |2 |0 |
+ROW |143122 |2417 |43598 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143123 |2417 |43614 |0 |1 |2774A4|0 |2 |0 |
+ROW |143124 |2418 |43602 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143125 |2418 |43616 |0 |1 |2774A4|0 |2 |0 |
+ROW |143126 |2419 |43613 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143127 |2419 |43617 |0 |1 |2774A4|0 |2 |0 |
+ROW |143128 |2420 |43599 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143129 |2420 |43615 |0 |1 |2774A4|0 |2 |0 |
+ROW |143130 |2421 |43603 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143131 |2421 |43641 |0 |1 |2774A4|0 |2 |0 |
+ROW |143132 |2422 |43618 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143133 |2422 |43619 |0 |1 |2774A4|0 |2 |0 |
+ROW |143134 |2422 |43631 |0 |2 |F63100|0 |2 |0 |
+ROW |143135 |2423 |43744 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143136 |2423 |43761 |0 |1 |2774A4|0 |2 |0 |
+ROW |143137 |2424 |43755 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143138 |2424 |43762 |0 |1 |2774A4|0 |2 |0 |
+ROW |143139 |2425 |43764 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143140 |2425 |43766 |0 |1 |2774A4|0 |2 |0 |
+ROW |143141 |2426 |43765 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143142 |2426 |43756 |0 |1 |2774A4|0 |2 |0 |
+ROW |143143 |2427 |43742 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143144 |2427 |43741 |0 |1 |2774A4|0 |2 |0 |
+ROW |143145 |2427 |43729 |0 |2 |F63100|0 |2 |0 |
+ROW |143146 |2427 |43719 |0 |3 |A54F10|0 |2 |0 |
+ROW |143147 |2428 |43721 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143148 |2428 |43722 |0 |1 |2774A4|0 |2 |0 |
+ROW |143149 |2429 |43718 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143150 |2429 |43734 |0 |1 |2774A4|0 |2 |0 |
+ROW |143151 |2430 |43728 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143152 |2430 |43735 |0 |1 |2774A4|0 |2 |0 |
+ROW |143153 |2431 |43736 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143154 |2431 |43737 |0 |1 |2774A4|0 |2 |0 |
+ROW |143155 |2432 |43738 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143156 |2432 |43739 |0 |1 |2774A4|0 |2 |0 |
+ROW |143157 |2437 |44179 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143158 |2437 |44178 |0 |1 |2774A4|0 |2 |0 |
+ROW |143159 |2437 |44180 |0 |2 |F63100|0 |2 |0 |
+ROW |143160 |2438 |44198 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143161 |2438 |44197 |0 |1 |2774A4|0 |2 |0 |
+ROW |143162 |2439 |44171 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143163 |2439 |44170 |0 |1 |2774A4|0 |2 |0 |
+ROW |143164 |2440 |44190 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143165 |2440 |44191 |0 |1 |2774A4|0 |2 |0 |
+ROW |143166 |2441 |44184 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143167 |2441 |44186 |0 |1 |2774A4|0 |2 |0 |
+ROW |143168 |2442 |44199 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143169 |2442 |44188 |0 |1 |2774A4|0 |2 |0 |
+ROW |143170 |2443 |44181 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143171 |2443 |44166 |0 |1 |2774A4|0 |2 |0 |
+ROW |143172 |1447 |33113 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143173 |1447 |33112 |0 |1 |2774A4|0 |2 |0 |
+ROW |143174 |1447 |33099 |0 |2 |F63100|0 |2 |0 |
+ROW |143175 |1447 |33098 |0 |3 |A54F10|0 |2 |0 |
+ROW |143176 |1448 |33125 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143177 |1448 |33110 |0 |1 |2774A4|0 |2 |0 |
+ROW |143178 |1449 |33080 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143179 |1449 |33081 |2 |1 |2774A4|0 |2 |0 |
+ROW |143180 |1450 |33089 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143181 |1450 |33085 |2 |1 |2774A4|0 |2 |0 |
+ROW |143182 |1451 |33082 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143183 |1451 |33086 |2 |1 |2774A4|0 |2 |0 |
+ROW |143184 |1451 |33083 |0 |2 |F63100|0 |2 |0 |
+ROW |143185 |1451 |33084 |0 |3 |A54F10|0 |2 |0 |
+ROW |143186 |1451 |33087 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143187 |1451 |33088 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143188 |1452 |33093 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143189 |1452 |33092 |2 |1 |2774A4|0 |2 |0 |
+ROW |143190 |1453 |33077 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143191 |1453 |33063 |2 |1 |2774A4|0 |2 |0 |
+ROW |143192 |1454 |33094 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143193 |1454 |33059 |0 |1 |2774A4|0 |2 |0 |
+ROW |143194 |1455 |33066 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143195 |1455 |33071 |2 |1 |2774A4|0 |2 |0 |
+ROW |143196 |1455 |33067 |0 |2 |F63100|0 |2 |0 |
+ROW |143197 |1455 |33068 |0 |3 |A54F10|0 |2 |0 |
+ROW |143198 |1455 |33072 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143199 |1455 |33073 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143200 |1159 |30886 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143201 |1159 |30887 |0 |1 |2774A4|0 |2 |0 |
+ROW |143202 |1160 |30888 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143203 |1160 |30882 |0 |1 |2774A4|0 |2 |0 |
+ROW |143204 |1160 |30890 |0 |2 |F63100|0 |2 |0 |
+ROW |143205 |1160 |30881 |0 |3 |A54F10|0 |2 |0 |
+ROW |143206 |1160 |30889 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143207 |1161 |30847 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143208 |1161 |30872 |2 |1 |2774A4|0 |2 |0 |
+ROW |143209 |1162 |30853 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143210 |1162 |30849 |2 |1 |2774A4|0 |2 |0 |
+ROW |143211 |1162 |30852 |2 |2 |F63100|0 |2 |0 |
+ROW |143212 |1162 |30851 |2 |3 |A54F10|0 |2 |0 |
+ROW |143213 |1162 |30848 |2 |4 |FC6EA3|0 |2 |0 |
+ROW |143214 |1163 |30856 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143215 |1163 |30855 |0 |1 |2774A4|0 |2 |0 |
+ROW |143216 |1163 |30854 |2 |2 |F63100|1 |2 |0 |
+ROW |143217 |1164 |30859 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143218 |1164 |30870 |2 |1 |2774A4|0 |2 |0 |
+ROW |143219 |1165 |30860 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143220 |1165 |30871 |2 |1 |2774A4|0 |2 |0 |
+ROW |143221 |1166 |30868 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143222 |1166 |30869 |0 |1 |2774A4|0 |2 |0 |
+ROW |143223 |1166 |30867 |0 |2 |F63100|0 |2 |0 |
+ROW |143224 |1166 |30866 |0 |3 |A54F10|0 |2 |0 |
+ROW |143225 |1166 |30865 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143226 |1167 |30850 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143227 |1167 |30863 |5 |1 |2774A4|0 |2 |0 |
+ROW |143228 |1167 |30861 |5 |2 |F63100|0 |2 |0 |
+ROW |143229 |1168 |30833 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143230 |1168 |30841 |2 |1 |2774A4|0 |2 |0 |
+ROW |143231 |1168 |30857 |2 |2 |F63100|0 |2 |0 |
+ROW |143232 |1169 |30834 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143233 |1169 |30831 |2 |1 |2774A4|0 |2 |0 |
+ROW |143234 |1170 |30846 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143235 |1576 |34320 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143236 |1576 |30845 |0 |1 |2774A4|0 |2 |0 |
+ROW |143237 |1576 |30842 |0 |2 |F63100|0 |2 |0 |
+ROW |143238 |1576 |30873 |2 |3 |A54F10|1 |2 |0 |
+ROW |143239 |2325 |42995 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143240 |2325 |42993 |0 |1 |2774A4|0 |2 |0 |
+ROW |143241 |2326 |42991 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143242 |2326 |42992 |0 |1 |2774A4|0 |2 |0 |
+ROW |143243 |2326 |43017 |0 |2 |F63100|0 |2 |0 |
+ROW |143244 |2327 |42989 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143245 |2327 |43003 |0 |1 |2774A4|0 |2 |0 |
+ROW |143246 |2327 |43015 |0 |2 |F63100|0 |2 |0 |
+ROW |143247 |2327 |43014 |0 |3 |A54F10|0 |2 |0 |
+ROW |143248 |2327 |43016 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143249 |2327 |43013 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143250 |2327 |43012 |0 |6 |AC8C14|0 |2 |0 |
+ROW |143251 |2327 |43011 |0 |7 |611F27|0 |2 |0 |
+ROW |143252 |2328 |43010 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143253 |2328 |43002 |0 |1 |2774A4|0 |2 |0 |
+ROW |143254 |2328 |43009 |0 |2 |F63100|0 |2 |0 |
+ROW |143255 |2328 |43008 |0 |3 |A54F10|0 |2 |0 |
+ROW |143256 |2329 |43005 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143257 |2329 |43004 |0 |1 |2774A4|0 |2 |0 |
+ROW |143258 |2330 |42964 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143259 |2330 |42963 |0 |1 |2774A4|0 |2 |0 |
+ROW |143260 |2331 |42971 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143261 |2331 |42961 |0 |1 |2774A4|0 |2 |0 |
+ROW |143262 |2332 |42969 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143263 |2332 |42970 |0 |1 |2774A4|0 |2 |0 |
+ROW |143264 |2333 |42966 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143265 |2333 |42967 |0 |1 |2774A4|0 |2 |0 |
+ROW |143266 |2334 |42978 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143267 |2334 |42977 |0 |1 |2774A4|0 |2 |0 |
+ROW |143268 |2335 |42985 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143269 |2335 |42982 |0 |1 |2774A4|0 |2 |0 |
+ROW |143270 |2335 |42983 |0 |2 |F63100|0 |2 |0 |
+ROW |143271 |2335 |42980 |0 |3 |A54F10|0 |2 |0 |
+ROW |143272 |2335 |42981 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143273 |2336 |42960 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143274 |2336 |42945 |0 |1 |2774A4|0 |2 |0 |
+ROW |143275 |2337 |42934 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143276 |2337 |42935 |0 |1 |2774A4|0 |2 |0 |
+ROW |143277 |2338 |42948 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143278 |2338 |42947 |0 |1 |2774A4|0 |2 |0 |
+ROW |143279 |2338 |42946 |0 |2 |F63100|0 |2 |0 |
+ROW |143280 |2338 |42940 |0 |3 |A54F10|0 |2 |0 |
+ROW |143281 |2339 |42951 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143282 |2339 |42950 |0 |1 |2774A4|0 |2 |0 |
+ROW |143283 |2339 |42953 |0 |2 |F63100|0 |2 |0 |
+ROW |143284 |2339 |42949 |0 |3 |A54F10|0 |2 |0 |
+ROW |143285 |2340 |42955 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143286 |2340 |42954 |0 |1 |2774A4|0 |2 |0 |
+ROW |143287 |1663 |35291 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143288 |1663 |35300 |0 |1 |2774A4|0 |2 |0 |
+ROW |143289 |1664 |35295 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143290 |1664 |35296 |0 |1 |2774A4|0 |2 |0 |
+ROW |143291 |1665 |35301 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143292 |1665 |35306 |0 |1 |2774A4|0 |2 |0 |
+ROW |143293 |1665 |35304 |0 |2 |F63100|0 |2 |0 |
+ROW |143294 |1665 |35302 |0 |3 |A54F10|0 |2 |0 |
+ROW |143295 |1666 |35308 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143296 |1666 |35310 |0 |1 |2774A4|0 |2 |0 |
+ROW |143297 |1666 |35309 |0 |2 |F63100|0 |2 |0 |
+ROW |143298 |1667 |35322 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143299 |1667 |35320 |0 |1 |2774A4|0 |2 |0 |
+ROW |143300 |1668 |35329 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143301 |1668 |35330 |0 |1 |2774A4|0 |2 |0 |
+ROW |143302 |1669 |35332 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143303 |1669 |35334 |0 |1 |2774A4|0 |2 |0 |
+ROW |143304 |1670 |35335 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143305 |1670 |35333 |0 |1 |2774A4|0 |2 |0 |
+ROW |143306 |1671 |35338 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143307 |1671 |35341 |0 |1 |2774A4|0 |2 |0 |
+ROW |143308 |1671 |35339 |0 |2 |F63100|0 |2 |0 |
+ROW |143309 |1671 |35340 |0 |3 |A54F10|0 |2 |0 |
+ROW |143310 |1672 |35347 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143311 |1672 |35346 |0 |1 |2774A4|0 |2 |0 |
+ROW |143312 |1672 |35345 |0 |2 |F63100|0 |2 |0 |
+ROW |143313 |1673 |35350 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143314 |1673 |35351 |0 |1 |2774A4|0 |2 |0 |
+ROW |143315 |1674 |35349 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143316 |1674 |35352 |0 |1 |2774A4|0 |2 |0 |
+ROW |143317 |1674 |35353 |0 |2 |F63100|0 |2 |0 |
+ROW |143318 |1675 |35355 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143319 |1675 |35356 |0 |1 |2774A4|0 |2 |0 |
+ROW |143320 |1505 |33553 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143321 |1505 |33562 |0 |1 |2774A4|0 |2 |0 |
+ROW |143322 |1506 |33557 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143323 |1506 |33558 |0 |1 |2774A4|0 |2 |0 |
+ROW |143324 |1507 |33563 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143325 |1507 |33568 |0 |1 |2774A4|0 |2 |0 |
+ROW |143326 |1507 |33566 |0 |2 |F63100|0 |2 |0 |
+ROW |143327 |1507 |33564 |0 |3 |A54F10|0 |2 |0 |
+ROW |143328 |1508 |33570 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143329 |1508 |33572 |0 |1 |2774A4|0 |2 |0 |
+ROW |143330 |1508 |33571 |0 |2 |F63100|0 |2 |0 |
+ROW |143331 |1509 |33584 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143332 |1509 |33582 |0 |1 |2774A4|0 |2 |0 |
+ROW |143333 |1510 |33591 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143334 |1510 |33592 |0 |1 |2774A4|0 |2 |0 |
+ROW |143335 |1511 |33594 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143336 |1511 |33596 |0 |1 |2774A4|0 |2 |0 |
+ROW |143337 |1512 |33597 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143338 |1512 |33595 |0 |1 |2774A4|0 |2 |0 |
+ROW |143339 |1513 |33600 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143340 |1513 |33603 |0 |1 |2774A4|0 |2 |0 |
+ROW |143341 |1513 |33601 |0 |2 |F63100|0 |2 |0 |
+ROW |143342 |1513 |33602 |0 |3 |A54F10|0 |2 |0 |
+ROW |143343 |1514 |33609 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143344 |1514 |33608 |0 |1 |2774A4|0 |2 |0 |
+ROW |143345 |1514 |33607 |0 |2 |F63100|0 |2 |0 |
+ROW |143346 |1515 |33612 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143347 |1515 |33613 |0 |1 |2774A4|0 |2 |0 |
+ROW |143348 |1516 |33611 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143349 |1516 |33614 |0 |1 |2774A4|0 |2 |0 |
+ROW |143350 |1516 |33615 |0 |2 |F63100|0 |2 |0 |
+ROW |143351 |1517 |33617 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143352 |1517 |33618 |0 |1 |2774A4|0 |2 |0 |
+ROW |143353 |1807 |36817 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143354 |1807 |36816 |0 |1 |2774A4|0 |2 |0 |
+ROW |143355 |1808 |36815 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143356 |1808 |36814 |0 |1 |2774A4|0 |2 |0 |
+ROW |143357 |1808 |36818 |0 |2 |F63100|0 |2 |0 |
+ROW |143358 |1808 |36819 |0 |3 |A54F10|0 |2 |0 |
+ROW |143359 |1809 |36805 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143360 |1809 |36804 |0 |1 |2774A4|0 |2 |0 |
+ROW |143361 |1527 |33819 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143362 |1527 |33839 |0 |1 |2774A4|0 |2 |0 |
+ROW |143363 |1528 |33820 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143364 |1528 |33816 |0 |1 |2774A4|0 |2 |0 |
+ROW |143365 |1529 |33826 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143366 |1529 |33831 |0 |1 |2774A4|0 |2 |0 |
+ROW |143367 |1529 |33829 |0 |2 |F63100|0 |2 |0 |
+ROW |143368 |1529 |33821 |0 |3 |A54F10|0 |2 |0 |
+ROW |143369 |1529 |33825 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143370 |1529 |33833 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143371 |1529 |33823 |2 |6 |AC8C14|0 |2 |0 |
+ROW |143372 |1530 |33828 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143373 |1530 |33832 |0 |1 |2774A4|0 |2 |0 |
+ROW |143374 |1530 |33830 |0 |2 |F63100|0 |2 |0 |
+ROW |143375 |1530 |33822 |0 |3 |A54F10|0 |2 |0 |
+ROW |143376 |1530 |33815 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143377 |1530 |33834 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143378 |1530 |33824 |2 |6 |AC8C14|0 |2 |0 |
+ROW |143379 |1531 |33840 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143380 |1531 |33845 |0 |1 |2774A4|0 |2 |0 |
+ROW |143381 |1532 |33844 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143382 |1532 |33847 |0 |1 |2774A4|0 |2 |0 |
+ROW |143383 |1532 |33843 |0 |2 |F63100|0 |2 |0 |
+ROW |143384 |1532 |33841 |0 |3 |A54F10|0 |2 |0 |
+ROW |143385 |1533 |33863 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143386 |1534 |33792 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143387 |1534 |33791 |0 |1 |2774A4|0 |2 |0 |
+ROW |143388 |1534 |33793 |0 |2 |F63100|0 |2 |0 |
+ROW |143389 |1535 |33802 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143390 |1535 |33770 |0 |1 |2774A4|0 |2 |0 |
+ROW |143391 |1536 |33800 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143392 |1536 |33799 |0 |1 |2774A4|0 |2 |0 |
+ROW |143393 |1536 |33801 |0 |2 |F63100|0 |2 |0 |
+ROW |143394 |1537 |33798 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143395 |1537 |33806 |0 |1 |2774A4|0 |2 |0 |
+ROW |143396 |1537 |33774 |0 |2 |F63100|0 |2 |0 |
+ROW |143397 |1538 |33769 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143398 |1538 |33787 |0 |1 |2774A4|0 |2 |0 |
+ROW |143399 |1538 |33789 |0 |2 |F63100|0 |2 |0 |
+ROW |143400 |1538 |33790 |0 |3 |A54F10|0 |2 |0 |
+ROW |143401 |1539 |33785 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143402 |1539 |33772 |0 |1 |2774A4|0 |2 |0 |
+ROW |143403 |1539 |33773 |0 |2 |F63100|0 |2 |0 |
+ROW |143404 |1539 |33771 |0 |3 |A54F10|0 |2 |0 |
+ROW |143405 |1540 |33776 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143406 |1540 |33775 |0 |1 |2774A4|0 |2 |0 |
+ROW |143407 |1541 |33782 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143408 |1541 |33781 |0 |1 |2774A4|0 |2 |0 |
+ROW |143409 |1541 |33780 |0 |2 |F63100|0 |2 |0 |
+ROW |143410 |1541 |33783 |0 |3 |A54F10|0 |2 |0 |
+ROW |143411 |1541 |33777 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143412 |1541 |33778 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143413 |1542 |33804 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143414 |1542 |33803 |2 |1 |2774A4|0 |2 |0 |
+ROW |143415 |1542 |33805 |2 |2 |F63100|0 |2 |0 |
+ROW |143416 |1543 |33937 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143417 |1543 |33940 |0 |1 |2774A4|0 |2 |0 |
+ROW |143418 |1543 |33936 |0 |2 |F63100|0 |2 |0 |
+ROW |143419 |1543 |33934 |0 |3 |A54F10|0 |2 |0 |
+ROW |143420 |1544 |33915 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143421 |1544 |33911 |0 |1 |2774A4|0 |2 |0 |
+ROW |143422 |1544 |33912 |0 |2 |F63100|0 |2 |0 |
+ROW |143423 |1544 |33910 |0 |3 |A54F10|0 |2 |0 |
+ROW |143424 |1544 |33914 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143425 |1545 |33918 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143426 |1545 |33905 |0 |1 |2774A4|0 |2 |0 |
+ROW |143427 |1545 |33917 |0 |2 |F63100|0 |2 |0 |
+ROW |143428 |1545 |33916 |2 |3 |A54F10|1 |2 |0 |
+ROW |143429 |1546 |33908 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143430 |1546 |33909 |0 |1 |2774A4|0 |2 |0 |
+ROW |143431 |1546 |33902 |0 |2 |F63100|0 |2 |0 |
+ROW |143432 |1547 |33893 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143433 |1547 |33892 |0 |1 |2774A4|0 |2 |0 |
+ROW |143434 |1548 |33899 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143435 |1548 |33898 |2 |1 |2774A4|0 |2 |0 |
+ROW |143436 |1548 |33895 |2 |2 |F63100|0 |2 |0 |
+ROW |143437 |1548 |33900 |2 |3 |A54F10|0 |2 |0 |
+ROW |143438 |1548 |33896 |2 |4 |FC6EA3|0 |2 |0 |
+ROW |143439 |1548 |33891 |2 |5 |6C59DC|0 |2 |0 |
+ROW |143440 |1190 |31140 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143441 |1190 |31141 |0 |1 |2774A4|0 |2 |0 |
+ROW |143442 |1261 |31145 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143443 |1261 |31146 |0 |1 |2774A4|0 |2 |0 |
+ROW |143444 |1261 |31147 |0 |2 |F63100|0 |2 |0 |
+ROW |143445 |1191 |31138 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143446 |1192 |31157 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143447 |1192 |31158 |0 |1 |2774A4|0 |2 |0 |
+ROW |143448 |1193 |31092 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143449 |1193 |31108 |0 |1 |2774A4|0 |2 |0 |
+ROW |143450 |1193 |31110 |0 |2 |F63100|0 |2 |0 |
+ROW |143451 |1193 |31067 |0 |3 |A54F10|0 |2 |0 |
+ROW |143452 |1193 |31086 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143453 |1193 |31087 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143454 |1194 |31120 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143455 |1194 |31105 |0 |1 |2774A4|0 |2 |0 |
+ROW |143456 |1194 |31071 |0 |2 |F63100|0 |2 |0 |
+ROW |143457 |1194 |31081 |0 |3 |A54F10|0 |2 |0 |
+ROW |143458 |1195 |31098 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143459 |1195 |31099 |0 |1 |2774A4|0 |2 |0 |
+ROW |143460 |1196 |31072 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143461 |1196 |31072 |0 |1 |2774A4|0 |2 |0 |
+ROW |143462 |1197 |31103 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143463 |1197 |31074 |0 |1 |2774A4|0 |2 |0 |
+ROW |143464 |1198 |31104 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143465 |1198 |31063 |0 |1 |2774A4|0 |2 |0 |
+ROW |143466 |1198 |31111 |0 |2 |F63100|0 |2 |0 |
+ROW |143467 |1198 |31112 |0 |3 |A54F10|0 |2 |0 |
+ROW |143468 |1198 |31084 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143469 |1199 |31115 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143470 |1199 |31116 |0 |1 |2774A4|0 |2 |0 |
+ROW |143471 |1199 |31062 |0 |2 |F63100|0 |2 |0 |
+ROW |143472 |1199 |31118 |0 |3 |A54F10|0 |2 |0 |
+ROW |143473 |1199 |31056 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143474 |1200 |31107 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143475 |1200 |31090 |0 |1 |2774A4|0 |2 |0 |
+ROW |143476 |1201 |31097 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143477 |1201 |31096 |0 |1 |2774A4|0 |2 |0 |
+ROW |143478 |1202 |31089 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143479 |1202 |31061 |0 |1 |2774A4|0 |2 |0 |
+ROW |143480 |1203 |31064 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143481 |1204 |31065 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143482 |1204 |31066 |0 |1 |2774A4|0 |2 |0 |
+ROW |143483 |1204 |31068 |0 |2 |F63100|0 |2 |0 |
+ROW |143484 |1204 |31070 |0 |3 |A54F10|0 |2 |0 |
+ROW |143485 |1204 |31101 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143486 |1204 |31106 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143487 |1204 |31114 |0 |6 |AC8C14|0 |2 |0 |
+ROW |143488 |1205 |31069 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143489 |1206 |31076 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143490 |1206 |31078 |0 |1 |2774A4|0 |2 |0 |
+ROW |143491 |1206 |31109 |0 |2 |F63100|0 |2 |0 |
+ROW |143492 |1206 |31075 |0 |3 |A54F10|0 |2 |0 |
+ROW |143493 |1207 |31080 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143494 |1207 |31095 |0 |1 |2774A4|0 |2 |0 |
+ROW |143495 |1208 |31113 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143496 |1208 |31118 |0 |1 |2774A4|0 |2 |0 |
+ROW |143497 |1209 |31058 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143498 |1209 |31077 |0 |1 |2774A4|0 |2 |0 |
+ROW |143499 |1209 |31056 |0 |2 |F63100|0 |2 |0 |
+ROW |143500 |1209 |31117 |0 |3 |A54F10|0 |2 |0 |
+ROW |143501 |1109 |30453 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143502 |1109 |30455 |5 |1 |2774A4|0 |2 |0 |
+ROW |143503 |1110 |30471 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143504 |1110 |30470 |0 |1 |2774A4|0 |2 |0 |
+ROW |143505 |1110 |30466 |0 |2 |F63100|0 |2 |0 |
+ROW |143506 |1110 |30441 |0 |3 |A54F10|0 |2 |0 |
+ROW |143507 |1111 |30463 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143508 |1111 |30452 |0 |1 |2774A4|0 |2 |0 |
+ROW |143509 |1111 |30451 |0 |2 |F63100|0 |2 |0 |
+ROW |143510 |1111 |30437 |0 |3 |A54F10|0 |2 |0 |
+ROW |143511 |1112 |30456 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143512 |1112 |30457 |0 |1 |2774A4|0 |2 |0 |
+ROW |143513 |1112 |30458 |0 |2 |F63100|0 |2 |0 |
+ROW |143514 |1112 |30459 |0 |3 |A54F10|0 |2 |0 |
+ROW |143515 |1113 |30442 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143516 |1113 |30444 |0 |1 |2774A4|0 |2 |0 |
+ROW |143517 |1113 |30445 |0 |2 |F63100|0 |2 |0 |
+ROW |143518 |1114 |30446 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143519 |1114 |30447 |0 |1 |2774A4|0 |2 |0 |
+ROW |143520 |1114 |31168 |0 |2 |F63100|0 |2 |0 |
+ROW |143521 |1114 |30449 |0 |3 |A54F10|0 |2 |0 |
+ROW |143522 |1136 |30659 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143523 |1136 |30661 |5 |1 |2774A4|0 |2 |0 |
+ROW |143524 |1137 |30677 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143525 |1137 |30676 |0 |1 |2774A4|0 |2 |0 |
+ROW |143526 |1137 |30672 |0 |2 |F63100|0 |2 |0 |
+ROW |143527 |1137 |30647 |0 |3 |A54F10|0 |2 |0 |
+ROW |143528 |1138 |30669 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143529 |1138 |30658 |0 |1 |2774A4|0 |2 |0 |
+ROW |143530 |1138 |30657 |0 |2 |F63100|0 |2 |0 |
+ROW |143531 |1138 |30643 |0 |3 |A54F10|0 |2 |0 |
+ROW |143532 |1139 |30662 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143533 |1139 |30663 |0 |1 |2774A4|0 |2 |0 |
+ROW |143534 |1139 |30664 |0 |2 |F63100|0 |2 |0 |
+ROW |143535 |1139 |30665 |0 |3 |A54F10|0 |2 |0 |
+ROW |143536 |1140 |30648 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143537 |1140 |30650 |0 |1 |2774A4|0 |2 |0 |
+ROW |143538 |1140 |30651 |0 |2 |F63100|0 |2 |0 |
+ROW |143539 |1141 |30652 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143540 |1141 |30653 |0 |1 |2774A4|0 |2 |0 |
+ROW |143541 |1141 |31172 |0 |2 |F63100|0 |2 |0 |
+ROW |143542 |1141 |30655 |0 |3 |A54F10|0 |2 |0 |
+ROW |143543 |1115 |30506 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143544 |1115 |30507 |5 |1 |2774A4|0 |2 |0 |
+ROW |143545 |1116 |30504 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143546 |1116 |30505 |0 |1 |2774A4|0 |2 |0 |
+ROW |143547 |1116 |30518 |0 |2 |F63100|0 |2 |0 |
+ROW |143548 |1116 |30492 |0 |3 |A54F10|0 |2 |0 |
+ROW |143549 |1117 |30493 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143550 |1117 |30500 |0 |1 |2774A4|0 |2 |0 |
+ROW |143551 |1117 |30486 |0 |2 |F63100|0 |2 |0 |
+ROW |143552 |1117 |30488 |0 |3 |A54F10|0 |2 |0 |
+ROW |143553 |1118 |30508 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143554 |1118 |30509 |0 |1 |2774A4|0 |2 |0 |
+ROW |143555 |1118 |30503 |0 |2 |F63100|0 |2 |0 |
+ROW |143556 |1118 |30510 |0 |3 |A54F10|0 |2 |0 |
+ROW |143557 |1119 |30491 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143558 |1119 |30494 |0 |1 |2774A4|0 |2 |0 |
+ROW |143559 |1119 |30495 |0 |2 |F63100|0 |2 |0 |
+ROW |143560 |1120 |30496 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143561 |1120 |30497 |0 |1 |2774A4|0 |2 |0 |
+ROW |143562 |1120 |31176 |0 |2 |F63100|0 |2 |0 |
+ROW |143563 |1120 |30499 |0 |3 |A54F10|0 |2 |0 |
+ROW |143564 |1266 |31773 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143565 |1266 |31774 |0 |1 |2774A4|0 |2 |0 |
+ROW |143566 |1267 |31777 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143567 |1267 |31779 |0 |1 |2774A4|0 |2 |0 |
+ROW |143568 |1267 |33168 |0 |2 |F63100|0 |2 |0 |
+ROW |143569 |1268 |31685 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143570 |1268 |31738 |0 |1 |2774A4|0 |2 |0 |
+ROW |143571 |1269 |31723 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143572 |1269 |31757 |0 |1 |2774A4|0 |2 |0 |
+ROW |143573 |1269 |31721 |0 |2 |F63100|0 |2 |0 |
+ROW |143574 |1270 |31728 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143575 |1270 |31759 |0 |1 |2774A4|0 |2 |0 |
+ROW |143576 |1271 |31745 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143577 |1271 |31727 |0 |1 |2774A4|0 |2 |0 |
+ROW |143578 |1272 |31687 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143579 |1272 |31710 |0 |1 |2774A4|0 |2 |0 |
+ROW |143580 |1273 |31705 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143581 |1273 |31703 |0 |1 |2774A4|0 |2 |0 |
+ROW |143582 |1273 |31706 |0 |2 |F63100|0 |2 |0 |
+ROW |143583 |1273 |31701 |0 |3 |A54F10|0 |2 |0 |
+ROW |143584 |1273 |31708 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143585 |1274 |31715 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143586 |1274 |31726 |0 |1 |2774A4|0 |2 |0 |
+ROW |143587 |1274 |31717 |0 |2 |F63100|0 |2 |0 |
+ROW |143588 |1274 |31716 |0 |3 |A54F10|0 |2 |0 |
+ROW |143589 |1274 |31714 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143590 |1274 |31713 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143591 |1210 |31261 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143592 |1210 |31262 |0 |1 |2774A4|0 |2 |0 |
+ROW |143593 |1211 |31269 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143594 |1211 |31271 |0 |1 |2774A4|0 |2 |0 |
+ROW |143595 |1211 |33170 |0 |2 |F63100|0 |2 |0 |
+ROW |143596 |1212 |31233 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143597 |1212 |31234 |0 |1 |2774A4|0 |2 |0 |
+ROW |143598 |1213 |31216 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143599 |1213 |31237 |0 |1 |2774A4|0 |2 |0 |
+ROW |143600 |1213 |31214 |0 |2 |F63100|0 |2 |0 |
+ROW |143601 |1214 |31191 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143602 |1214 |31221 |0 |1 |2774A4|0 |2 |0 |
+ROW |143603 |1215 |31206 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143604 |1215 |31220 |0 |1 |2774A4|0 |2 |0 |
+ROW |143605 |1216 |31192 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143606 |1216 |31193 |0 |1 |2774A4|0 |2 |0 |
+ROW |143607 |1217 |31200 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143608 |1217 |31197 |0 |1 |2774A4|0 |2 |0 |
+ROW |143609 |1217 |31201 |0 |2 |F63100|0 |2 |0 |
+ROW |143610 |1217 |31198 |0 |3 |A54F10|0 |2 |0 |
+ROW |143611 |1217 |31202 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143612 |1218 |31207 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143613 |1218 |31208 |0 |1 |2774A4|0 |2 |0 |
+ROW |143614 |1218 |31210 |0 |2 |F63100|0 |2 |0 |
+ROW |143615 |1218 |31209 |0 |3 |A54F10|0 |2 |0 |
+ROW |143616 |1218 |31219 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143617 |1218 |31205 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143618 |1380 |32423 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143619 |1380 |32421 |0 |1 |2774A4|0 |2 |0 |
+ROW |143620 |1381 |32405 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143621 |1382 |32426 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143622 |1382 |32408 |0 |1 |2774A4|0 |2 |0 |
+ROW |143623 |1382 |32422 |0 |2 |F63100|0 |2 |0 |
+ROW |143624 |1382 |32425 |0 |3 |A54F10|0 |2 |0 |
+ROW |143625 |1383 |32409 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143626 |1384 |32419 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143627 |1384 |32416 |0 |1 |2774A4|1 |2 |0 |
+ROW |143628 |1384 |32413 |0 |2 |F63100|1 |2 |0 |
+ROW |143629 |1384 |32418 |5 |3 |A54F10|0 |2 |0 |
+ROW |143630 |1384 |32415 |5 |4 |FC6EA3|0 |2 |0 |
+ROW |143631 |1384 |32412 |5 |5 |6C59DC|0 |2 |0 |
+ROW |143632 |1385 |32420 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143633 |1385 |32417 |0 |1 |2774A4|0 |2 |0 |
+ROW |143634 |1385 |32414 |0 |2 |F63100|0 |2 |0 |
+ROW |143635 |1386 |32433 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143636 |1386 |32432 |0 |1 |2774A4|1 |2 |0 |
+ROW |143637 |1387 |32431 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143638 |1387 |32430 |0 |1 |2774A4|0 |2 |0 |
+ROW |143639 |1387 |32429 |0 |2 |F63100|0 |2 |0 |
+ROW |143640 |1387 |32428 |0 |3 |A54F10|0 |2 |0 |
+ROW |143641 |1387 |32427 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143642 |1388 |32386 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143643 |1388 |32391 |0 |1 |2774A4|1 |2 |0 |
+ROW |143644 |1388 |32387 |0 |2 |F63100|1 |2 |0 |
+ROW |143645 |1388 |32390 |0 |3 |A54F10|1 |2 |0 |
+ROW |143646 |1388 |32395 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143647 |1388 |32389 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143648 |1389 |32393 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143649 |1389 |32392 |0 |1 |2774A4|0 |2 |0 |
+ROW |143650 |1389 |32394 |0 |2 |F63100|1 |2 |0 |
+ROW |143651 |1389 |32388 |0 |3 |A54F10|1 |2 |0 |
+ROW |143652 |1390 |32401 |5 |0 |1A7C11|1 |2 |0 |
+ROW |143653 |1390 |32402 |0 |1 |2774A4|0 |2 |0 |
+ROW |143654 |1390 |32397 |0 |2 |F63100|1 |2 |0 |
+ROW |143655 |1390 |32398 |0 |3 |A54F10|1 |2 |0 |
+ROW |143656 |1390 |32399 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143657 |1390 |32400 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143658 |1390 |32396 |0 |6 |AC8C14|1 |2 |0 |
+ROW |143659 |1391 |32367 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143660 |1391 |32366 |0 |1 |2774A4|1 |2 |0 |
+ROW |143661 |1392 |32370 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143662 |1393 |32382 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143663 |1393 |32381 |0 |1 |2774A4|1 |2 |0 |
+ROW |143664 |1393 |32383 |0 |2 |F63100|1 |2 |0 |
+ROW |143665 |1393 |32384 |0 |3 |A54F10|1 |2 |0 |
+ROW |143666 |1394 |32377 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143667 |1394 |32374 |0 |1 |2774A4|1 |2 |0 |
+ROW |143668 |1395 |32403 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143669 |1395 |32385 |0 |1 |2774A4|1 |2 |0 |
+ROW |143670 |1219 |31363 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143671 |1219 |31346 |0 |1 |2774A4|0 |2 |0 |
+ROW |143672 |1219 |31345 |0 |2 |F63100|0 |2 |0 |
+ROW |143673 |1219 |31344 |0 |3 |A54F10|0 |2 |0 |
+ROW |143674 |1219 |31343 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143675 |1219 |31342 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143676 |1219 |31340 |0 |6 |AC8C14|0 |2 |0 |
+ROW |143677 |1219 |31339 |0 |7 |611F27|0 |2 |0 |
+ROW |143678 |1219 |31341 |0 |8 |F230E0|0 |2 |0 |
+ROW |143679 |1219 |31341 |0 |9 |FFAD40|0 |2 |0 |
+ROW |143680 |1220 |31337 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143681 |1221 |31360 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143682 |1221 |31359 |0 |1 |2774A4|0 |2 |0 |
+ROW |143683 |1221 |31357 |0 |2 |F63100|0 |2 |0 |
+ROW |143684 |1221 |31356 |0 |3 |A54F10|0 |2 |0 |
+ROW |143685 |1221 |31354 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143686 |1221 |31353 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143687 |1221 |31352 |0 |6 |AC8C14|0 |2 |0 |
+ROW |143688 |1221 |31350 |0 |7 |611F27|0 |2 |0 |
+ROW |143689 |1221 |31351 |0 |8 |F230E0|0 |2 |0 |
+ROW |143690 |1221 |31338 |0 |9 |FFAD40|0 |2 |0 |
+ROW |143691 |1221 |31349 |0 |10 |40CDFF|0 |2 |0 |
+ROW |143692 |1221 |31348 |0 |11 |40FFA0|0 |2 |0 |
+ROW |143693 |1221 |31347 |0 |12 |AE4500|0 |2 |0 |
+ROW |143694 |2323 |42881 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143695 |2323 |42885 |0 |1 |2774A4|1 |2 |0 |
+ROW |143696 |2323 |42888 |0 |2 |F63100|1 |2 |0 |
+ROW |143697 |2323 |42883 |5 |3 |A54F10|0 |2 |0 |
+ROW |143698 |2323 |42886 |5 |4 |FC6EA3|0 |2 |0 |
+ROW |143699 |2323 |42889 |5 |5 |6C59DC|0 |2 |0 |
+ROW |143700 |1222 |31336 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143701 |2324 |42882 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143702 |2324 |42884 |0 |1 |2774A4|0 |2 |0 |
+ROW |143703 |2324 |42887 |0 |2 |F63100|0 |2 |0 |
+ROW |143704 |1456 |33178 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143705 |1456 |33179 |0 |1 |2774A4|0 |2 |0 |
+ROW |143706 |1456 |33180 |0 |2 |F63100|0 |2 |0 |
+ROW |143707 |1087 |30346 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143708 |1087 |30345 |0 |1 |2774A4|0 |2 |0 |
+ROW |143709 |1088 |30350 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143710 |1088 |30349 |5 |1 |2774A4|0 |2 |0 |
+ROW |143711 |1089 |30396 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143712 |1090 |30398 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143713 |1091 |30322 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143714 |1091 |30277 |5 |1 |2774A4|0 |2 |0 |
+ROW |143715 |1092 |30284 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143716 |1093 |30313 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143717 |1093 |30314 |0 |1 |2774A4|0 |2 |0 |
+ROW |143718 |1093 |30315 |5 |2 |F63100|0 |2 |0 |
+ROW |143719 |1093 |30316 |0 |3 |A54F10|0 |2 |0 |
+ROW |143720 |1094 |30279 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143721 |1094 |30280 |2 |1 |2774A4|0 |2 |0 |
+ROW |143722 |1095 |30290 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143723 |1095 |30293 |0 |1 |2774A4|0 |2 |0 |
+ROW |143724 |1096 |30318 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143725 |1096 |30308 |2 |1 |2774A4|0 |2 |0 |
+ROW |143726 |1096 |30320 |2 |2 |F63100|0 |2 |0 |
+ROW |143727 |1097 |30317 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143728 |1098 |30289 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143729 |1098 |30291 |5 |1 |2774A4|0 |2 |0 |
+ROW |143730 |1099 |30334 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143731 |1099 |30325 |2 |1 |2774A4|0 |2 |0 |
+ROW |143732 |1100 |30306 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143733 |1101 |30274 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143734 |1102 |30281 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143735 |1577 |34351 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143736 |1577 |34350 |0 |1 |2774A4|0 |2 |0 |
+ROW |143737 |1578 |34387 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143738 |1578 |34388 |2 |1 |2774A4|0 |2 |0 |
+ROW |143739 |1579 |34393 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143740 |1579 |34386 |0 |1 |2774A4|0 |2 |0 |
+ROW |143741 |1580 |34370 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143742 |1580 |34384 |0 |1 |2774A4|0 |2 |0 |
+ROW |143743 |1580 |34383 |0 |2 |F63100|0 |2 |0 |
+ROW |143744 |1581 |34438 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143745 |1581 |34413 |0 |1 |2774A4|0 |2 |0 |
+ROW |143746 |1581 |34427 |0 |2 |F63100|0 |2 |0 |
+ROW |143747 |1582 |34420 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143748 |1582 |34419 |0 |1 |2774A4|0 |2 |0 |
+ROW |143749 |1582 |34418 |0 |2 |F63100|0 |2 |0 |
+ROW |143750 |675 |27294 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143751 |1035 |30094 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143752 |1038 |30101 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143753 |786 |28246 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143754 |687 |27417 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143755 |691 |27376 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143756 |1060 |30159 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143757 |2114 |40461 |0 |0 |969696|0 |9 |2 |
+ROW |143758 |2114 |40462 |0 |1 |C80000|0 |9 |0 |
+ROW |143759 |2115 |40465 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143760 |1065 |30161 |0 |0 |969696|0 |9 |2 |
+ROW |143761 |1065 |30162 |0 |1 |C80000|0 |9 |0 |
+ROW |143762 |2120 |40451 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143763 |1070 |30142 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143764 |741 |27084 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143765 |741 |27085 |2 |1 |2774A4|0 |2 |0 |
+ROW |143766 |741 |27083 |0 |2 |F63100|1 |2 |0 |
+ROW |143767 |741 |27086 |0 |3 |A54F10|1 |2 |0 |
+ROW |143768 |741 |27082 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143769 |741 |27079 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143770 |745 |27104 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143771 |745 |27105 |2 |1 |2774A4|0 |2 |0 |
+ROW |143772 |745 |27103 |0 |2 |F63100|1 |2 |0 |
+ROW |143773 |745 |27106 |0 |3 |A54F10|1 |2 |0 |
+ROW |143774 |745 |27102 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143775 |745 |27099 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143776 |766 |27124 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143777 |766 |27125 |2 |1 |2774A4|0 |2 |0 |
+ROW |143778 |766 |27123 |0 |2 |F63100|1 |2 |0 |
+ROW |143779 |766 |27126 |0 |3 |A54F10|1 |2 |0 |
+ROW |143780 |766 |27122 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143781 |766 |27119 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143782 |1223 |31370 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143783 |1223 |31371 |5 |1 |2774A4|0 |2 |0 |
+ROW |143784 |1226 |31380 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143785 |1226 |31383 |5 |1 |2774A4|0 |2 |0 |
+ROW |143786 |1229 |31379 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143787 |1229 |31382 |5 |1 |2774A4|0 |2 |0 |
+ROW |143788 |887 |29211 |0 |0 |969696|0 |9 |2 |
+ROW |143789 |887 |29210 |0 |1 |C80000|0 |9 |0 |
+ROW |143790 |899 |29216 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143791 |899 |29217 |2 |1 |2774A4|0 |2 |0 |
+ROW |143792 |899 |29218 |0 |2 |F63100|1 |2 |0 |
+ROW |143793 |899 |29219 |0 |3 |A54F10|1 |2 |0 |
+ROW |143794 |899 |29220 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143795 |899 |29221 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143796 |911 |29089 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143797 |911 |29102 |0 |1 |2774A4|0 |2 |0 |
+ROW |143798 |908 |29098 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143799 |908 |29097 |0 |1 |2774A4|0 |2 |0 |
+ROW |143800 |908 |29095 |0 |2 |F63100|0 |2 |0 |
+ROW |143801 |908 |29088 |0 |3 |A54F10|0 |2 |0 |
+ROW |143802 |908 |29094 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143803 |908 |29093 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143804 |908 |29092 |0 |6 |AC8C14|0 |2 |0 |
+ROW |143805 |908 |29091 |0 |7 |611F27|0 |2 |0 |
+ROW |143806 |908 |29090 |0 |8 |F230E0|0 |2 |0 |
+ROW |143807 |905 |29198 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143808 |917 |29104 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143809 |917 |29105 |5 |1 |2774A4|0 |2 |0 |
+ROW |143810 |914 |31364 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143811 |923 |29118 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143812 |923 |29119 |0 |1 |2774A4|0 |2 |0 |
+ROW |143813 |923 |29117 |0 |2 |F63100|0 |2 |0 |
+ROW |143814 |920 |29107 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143815 |920 |29106 |0 |1 |2774A4|0 |2 |0 |
+ROW |143816 |902 |29096 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143817 |902 |29101 |0 |1 |2774A4|0 |2 |0 |
+ROW |143818 |902 |29100 |0 |2 |F63100|0 |2 |0 |
+ROW |143819 |902 |29087 |0 |3 |A54F10|1 |2 |0 |
+ROW |143820 |1279 |31902 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143821 |1279 |31903 |5 |1 |2774A4|0 |2 |0 |
+ROW |143822 |1281 |31933 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143823 |1281 |31936 |5 |1 |2774A4|0 |2 |0 |
+ROW |143824 |1283 |31932 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143825 |1283 |31935 |5 |1 |2774A4|0 |2 |0 |
+ROW |143826 |1285 |31907 |0 |0 |969696|0 |9 |2 |
+ROW |143827 |1285 |31908 |0 |1 |C80000|0 |9 |0 |
+ROW |143828 |1287 |31911 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143829 |1287 |31914 |2 |1 |2774A4|0 |2 |0 |
+ROW |143830 |1287 |31913 |0 |2 |F63100|1 |2 |0 |
+ROW |143831 |1287 |31910 |0 |3 |A54F10|1 |2 |0 |
+ROW |143832 |1287 |31912 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143833 |1287 |31909 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143834 |1289 |31831 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143835 |1289 |31820 |0 |1 |2774A4|0 |2 |0 |
+ROW |143836 |1291 |31822 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143837 |1291 |31835 |0 |1 |2774A4|0 |2 |0 |
+ROW |143838 |1291 |31825 |0 |2 |F63100|0 |2 |0 |
+ROW |143839 |1291 |31826 |0 |3 |A54F10|0 |2 |0 |
+ROW |143840 |1291 |31823 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143841 |1291 |31827 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143842 |1291 |31824 |0 |6 |AC8C14|0 |2 |0 |
+ROW |143843 |1291 |31828 |0 |7 |611F27|0 |2 |0 |
+ROW |143844 |1291 |31830 |0 |8 |F230E0|0 |2 |0 |
+ROW |143845 |1293 |31892 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143846 |1295 |31855 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143847 |1295 |31853 |5 |1 |2774A4|0 |2 |0 |
+ROW |143848 |1297 |31893 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143849 |1299 |31838 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143850 |1299 |31839 |0 |1 |2774A4|0 |2 |0 |
+ROW |143851 |1299 |31837 |0 |2 |F63100|0 |2 |0 |
+ROW |143852 |1301 |31850 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143853 |1301 |31852 |0 |1 |2774A4|0 |2 |0 |
+ROW |143854 |1303 |31829 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143855 |1303 |31833 |0 |1 |2774A4|0 |2 |0 |
+ROW |143856 |1303 |31834 |0 |2 |F63100|0 |2 |0 |
+ROW |143857 |1303 |31832 |0 |3 |A54F10|1 |2 |0 |
+ROW |143858 |866 |29014 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143859 |866 |29015 |5 |1 |2774A4|0 |2 |0 |
+ROW |143860 |868 |29018 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143861 |868 |29019 |0 |1 |2774A4|0 |2 |0 |
+ROW |143862 |868 |29022 |0 |2 |F63100|0 |2 |0 |
+ROW |143863 |868 |29023 |0 |3 |A54F10|0 |2 |0 |
+ROW |143864 |868 |29020 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143865 |868 |29024 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143866 |868 |29021 |0 |6 |AC8C14|0 |2 |0 |
+ROW |143867 |868 |29025 |0 |7 |611F27|0 |2 |0 |
+ROW |143868 |868 |29026 |0 |8 |F230E0|0 |2 |0 |
+ROW |143869 |870 |29048 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143870 |872 |29028 |0 |0 |969696|0 |9 |2 |
+ROW |143871 |872 |29027 |0 |1 |C80000|0 |9 |0 |
+ROW |143872 |882 |28992 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143873 |882 |28991 |0 |1 |2774A4|0 |2 |0 |
+ROW |143874 |876 |28982 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143875 |876 |28983 |5 |1 |2774A4|0 |2 |0 |
+ROW |143876 |874 |28978 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143877 |878 |28985 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143878 |878 |28984 |0 |1 |2774A4|0 |2 |0 |
+ROW |143879 |880 |28987 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143880 |880 |28988 |0 |1 |2774A4|0 |2 |0 |
+ROW |143881 |880 |28989 |0 |2 |F63100|0 |2 |0 |
+ROW |143882 |880 |28990 |0 |3 |A54F10|1 |2 |0 |
+ROW |143883 |2444 |44245 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143884 |2444 |44242 |2 |1 |2774A4|0 |2 |0 |
+ROW |143885 |964 |29513 |0 |0 |969696|0 |9 |2 |
+ROW |143886 |964 |29512 |0 |1 |C80000|0 |9 |0 |
+ROW |143887 |1238 |31435 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143888 |1238 |31438 |2 |1 |2774A4|0 |2 |0 |
+ROW |143889 |1238 |31437 |0 |2 |F63100|1 |2 |0 |
+ROW |143890 |1238 |31434 |0 |3 |A54F10|1 |2 |0 |
+ROW |143891 |1238 |31436 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143892 |1238 |31433 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143893 |1488 |33321 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143894 |1488 |33324 |0 |1 |2774A4|0 |2 |0 |
+ROW |143895 |1490 |33322 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143896 |1490 |33323 |5 |1 |2774A4|0 |2 |0 |
+ROW |143897 |1240 |31441 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143898 |1240 |31442 |5 |1 |2774A4|0 |2 |0 |
+ROW |143899 |1242 |31440 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143900 |1242 |31439 |5 |1 |2774A4|0 |2 |0 |
+ROW |143901 |974 |29456 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143902 |974 |29455 |0 |1 |2774A4|0 |2 |0 |
+ROW |143903 |976 |29458 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143904 |976 |29457 |0 |1 |2774A4|0 |2 |0 |
+ROW |143905 |972 |29454 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143906 |978 |29462 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143907 |980 |31421 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143908 |980 |29466 |0 |1 |2774A4|0 |2 |0 |
+ROW |143909 |1305 |32013 |0 |0 |969696|0 |9 |2 |
+ROW |143910 |1305 |32014 |0 |1 |C80000|0 |9 |0 |
+ROW |143911 |1307 |32017 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143912 |1307 |32020 |2 |1 |2774A4|0 |2 |0 |
+ROW |143913 |1307 |32019 |0 |2 |F63100|1 |2 |0 |
+ROW |143914 |1307 |32016 |0 |3 |A54F10|1 |2 |0 |
+ROW |143915 |1307 |32018 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143916 |1307 |32015 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143917 |1492 |33329 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143918 |1492 |33332 |0 |1 |2774A4|0 |2 |0 |
+ROW |143919 |1494 |33330 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143920 |1494 |33331 |5 |1 |2774A4|0 |2 |0 |
+ROW |143921 |1309 |32023 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143922 |1309 |32024 |5 |1 |2774A4|0 |2 |0 |
+ROW |143923 |1311 |32022 |0 |0 |1A7C11|1 |2 |0 |
+ROW |143924 |1311 |32021 |5 |1 |2774A4|0 |2 |0 |
+ROW |143925 |1313 |31952 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143926 |1313 |31949 |0 |1 |2774A4|0 |2 |0 |
+ROW |143927 |1315 |31951 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143928 |1315 |31950 |0 |1 |2774A4|0 |2 |0 |
+ROW |143929 |1317 |31954 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143930 |1319 |31973 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143931 |1321 |31969 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143932 |1321 |31970 |0 |1 |2774A4|0 |2 |0 |
+ROW |143933 |2123 |40493 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143934 |2123 |40496 |2 |1 |2774A4|0 |2 |0 |
+ROW |143935 |2123 |40495 |0 |2 |F63100|1 |2 |0 |
+ROW |143936 |2123 |40492 |0 |3 |A54F10|1 |2 |0 |
+ROW |143937 |2123 |40494 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143938 |2123 |40491 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143939 |668 |27208 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143940 |1032 |30088 |2 |0 |1A7C11|0 |2 |0 |
+ROW |143941 |1032 |30087 |5 |1 |2774A4|0 |2 |0 |
+ROW |143942 |1033 |30089 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143943 |2124 |40519 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143944 |2124 |40522 |2 |1 |2774A4|0 |2 |0 |
+ROW |143945 |2124 |40521 |0 |2 |F63100|1 |2 |0 |
+ROW |143946 |2124 |40518 |0 |3 |A54F10|1 |2 |0 |
+ROW |143947 |2124 |40520 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143948 |2124 |40517 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143949 |2125 |40528 |0 |0 |969696|0 |9 |2 |
+ROW |143950 |2125 |40529 |0 |1 |C80000|0 |9 |0 |
+ROW |143951 |2126 |40532 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143952 |2127 |40506 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143953 |2128 |40547 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143954 |2128 |40550 |2 |1 |2774A4|0 |2 |0 |
+ROW |143955 |2128 |40549 |0 |2 |F63100|1 |2 |0 |
+ROW |143956 |2128 |40546 |0 |3 |A54F10|1 |2 |0 |
+ROW |143957 |2128 |40548 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143958 |2128 |40545 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143959 |671 |27240 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143960 |1034 |30093 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143961 |2129 |40584 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143962 |2129 |40587 |2 |1 |2774A4|0 |2 |0 |
+ROW |143963 |2129 |40586 |0 |2 |F63100|1 |2 |0 |
+ROW |143964 |2129 |40583 |0 |3 |A54F10|1 |2 |0 |
+ROW |143965 |2129 |40585 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143966 |2129 |40582 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143967 |2130 |40593 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143968 |2130 |40596 |2 |1 |2774A4|0 |2 |0 |
+ROW |143969 |2130 |40595 |0 |2 |F63100|1 |2 |0 |
+ROW |143970 |2130 |40592 |0 |3 |A54F10|1 |2 |0 |
+ROW |143971 |2130 |40594 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143972 |2130 |40591 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143973 |2131 |40559 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143974 |2132 |40572 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143975 |2133 |40565 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143976 |2134 |40578 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143977 |1676 |35369 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143978 |1677 |35372 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143979 |1678 |35379 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143980 |1678 |35386 |0 |1 |2774A4|0 |2 |0 |
+ROW |143981 |1678 |35377 |0 |2 |F63100|0 |2 |0 |
+ROW |143982 |1678 |35384 |0 |3 |A54F10|0 |2 |0 |
+ROW |143983 |1678 |35376 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |143984 |1678 |35383 |0 |5 |6C59DC|0 |2 |0 |
+ROW |143985 |1679 |35387 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143986 |1679 |35380 |0 |1 |2774A4|0 |2 |0 |
+ROW |143987 |1680 |35378 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143988 |1680 |35385 |0 |1 |2774A4|0 |2 |0 |
+ROW |143989 |1681 |35403 |0 |0 |1A7C11|0 |2 |0 |
+ROW |143990 |1681 |35404 |0 |1 |2774A4|0 |2 |0 |
+ROW |143991 |1549 |33966 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143992 |1550 |33971 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143993 |1551 |33974 |5 |0 |1A7C11|0 |2 |0 |
+ROW |143994 |1551 |33977 |2 |1 |2774A4|0 |2 |0 |
+ROW |143995 |1551 |33976 |0 |2 |F63100|1 |2 |0 |
+ROW |143996 |1551 |33973 |0 |3 |A54F10|1 |2 |0 |
+ROW |143997 |1551 |33975 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |143998 |1551 |33972 |0 |5 |6C59DC|1 |2 |0 |
+ROW |143999 |1552 |34007 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144000 |1553 |34012 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144001 |1554 |34015 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144002 |1554 |34018 |2 |1 |2774A4|0 |2 |0 |
+ROW |144003 |1554 |34017 |0 |2 |F63100|1 |2 |0 |
+ROW |144004 |1554 |34014 |0 |3 |A54F10|1 |2 |0 |
+ROW |144005 |1554 |34016 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144006 |1554 |34013 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144007 |1555 |34048 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144008 |1556 |34053 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144009 |1557 |34056 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144010 |1557 |34059 |2 |1 |2774A4|0 |2 |0 |
+ROW |144011 |1557 |34058 |0 |2 |F63100|1 |2 |0 |
+ROW |144012 |1557 |34055 |0 |3 |A54F10|1 |2 |0 |
+ROW |144013 |1557 |34057 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144014 |1557 |34054 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144015 |1558 |34089 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144016 |1559 |34094 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144017 |1560 |34097 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144018 |1560 |34100 |2 |1 |2774A4|0 |2 |0 |
+ROW |144019 |1560 |34099 |0 |2 |F63100|1 |2 |0 |
+ROW |144020 |1560 |34096 |0 |3 |A54F10|1 |2 |0 |
+ROW |144021 |1560 |34098 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144022 |1560 |34095 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144023 |1561 |34130 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144024 |1562 |34135 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144025 |1563 |34138 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144026 |1563 |34141 |2 |1 |2774A4|0 |2 |0 |
+ROW |144027 |1563 |34140 |0 |2 |F63100|1 |2 |0 |
+ROW |144028 |1563 |34137 |0 |3 |A54F10|1 |2 |0 |
+ROW |144029 |1563 |34139 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144030 |1563 |34136 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144031 |2135 |40667 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144032 |2136 |40671 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144033 |2137 |40676 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144034 |2138 |40679 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144035 |2138 |40682 |2 |1 |2774A4|0 |2 |0 |
+ROW |144036 |2138 |40681 |0 |2 |F63100|1 |2 |0 |
+ROW |144037 |2138 |40678 |0 |3 |A54F10|1 |2 |0 |
+ROW |144038 |2138 |40680 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144039 |2138 |40677 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144040 |2139 |40690 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144041 |2140 |40695 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144042 |2141 |40698 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144043 |2141 |40701 |2 |1 |2774A4|0 |2 |0 |
+ROW |144044 |2141 |40700 |0 |2 |F63100|1 |2 |0 |
+ROW |144045 |2141 |40697 |0 |3 |A54F10|1 |2 |0 |
+ROW |144046 |2141 |40699 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144047 |2141 |40696 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144048 |2142 |40605 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144049 |694 |27478 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144050 |1042 |30105 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144051 |2143 |40723 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144052 |2143 |40726 |2 |1 |2774A4|0 |2 |0 |
+ROW |144053 |2143 |40725 |0 |2 |F63100|1 |2 |0 |
+ROW |144054 |2143 |40722 |0 |3 |A54F10|1 |2 |0 |
+ROW |144055 |2143 |40724 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144056 |2143 |40721 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144057 |1043 |30107 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144058 |2144 |40745 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144059 |2144 |40748 |2 |1 |2774A4|0 |2 |0 |
+ROW |144060 |2144 |40747 |0 |2 |F63100|1 |2 |0 |
+ROW |144061 |2144 |40744 |0 |3 |A54F10|1 |2 |0 |
+ROW |144062 |2144 |40746 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144063 |2144 |40743 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144064 |698 |27511 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144065 |1044 |30108 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144066 |2145 |40767 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144067 |2145 |40770 |2 |1 |2774A4|0 |2 |0 |
+ROW |144068 |2145 |40769 |0 |2 |F63100|1 |2 |0 |
+ROW |144069 |2145 |40766 |0 |3 |A54F10|1 |2 |0 |
+ROW |144070 |2145 |40768 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144071 |2145 |40765 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144072 |701 |27547 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144073 |1045 |27591 |2 |0 |1A7C11|0 |2 |0 |
+ROW |144074 |1045 |30110 |5 |1 |2774A4|0 |2 |0 |
+ROW |144075 |1046 |30111 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144076 |2146 |40790 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144077 |2146 |40793 |2 |1 |2774A4|0 |2 |0 |
+ROW |144078 |2146 |40792 |0 |2 |F63100|1 |2 |0 |
+ROW |144079 |2146 |40789 |0 |3 |A54F10|1 |2 |0 |
+ROW |144080 |2146 |40791 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144081 |2146 |40788 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144082 |704 |27586 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144083 |1682 |35439 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144084 |1683 |35441 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144085 |1684 |35443 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144086 |1685 |35446 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144087 |1686 |35450 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144088 |1686 |35465 |0 |1 |2774A4|0 |2 |0 |
+ROW |144089 |1686 |35456 |0 |2 |F63100|0 |2 |0 |
+ROW |144090 |1686 |35447 |0 |3 |A54F10|0 |2 |0 |
+ROW |144091 |1686 |35468 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |144092 |1686 |35471 |0 |5 |6C59DC|0 |2 |0 |
+ROW |144093 |1686 |35459 |0 |6 |AC8C14|0 |2 |0 |
+ROW |144094 |1687 |35449 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144095 |1687 |35464 |0 |1 |2774A4|0 |2 |0 |
+ROW |144096 |1687 |35455 |0 |2 |F63100|0 |2 |0 |
+ROW |144097 |1687 |35461 |0 |3 |A54F10|0 |2 |0 |
+ROW |144098 |1687 |35467 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |144099 |1687 |35470 |0 |5 |6C59DC|0 |2 |0 |
+ROW |144100 |1687 |35457 |0 |6 |AC8C14|0 |2 |0 |
+ROW |144101 |1688 |35473 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144102 |1688 |35463 |0 |1 |2774A4|0 |2 |0 |
+ROW |144103 |1688 |35454 |0 |2 |F63100|0 |2 |0 |
+ROW |144104 |1688 |35472 |0 |3 |A54F10|0 |2 |0 |
+ROW |144105 |1688 |35466 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |144106 |1688 |35469 |0 |5 |6C59DC|0 |2 |0 |
+ROW |144107 |1688 |35458 |0 |6 |AC8C14|0 |2 |0 |
+ROW |144108 |1689 |35474 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144109 |1690 |35476 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144110 |1691 |35478 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144111 |1691 |35480 |0 |1 |2774A4|0 |2 |0 |
+ROW |144112 |1692 |35487 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144113 |1692 |35484 |0 |1 |2774A4|0 |2 |0 |
+ROW |144114 |1693 |35486 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144115 |1693 |35483 |0 |1 |2774A4|0 |2 |0 |
+ROW |144116 |1694 |35490 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144117 |1694 |35488 |0 |1 |2774A4|0 |2 |0 |
+ROW |144118 |1694 |35489 |0 |2 |F63100|0 |2 |0 |
+ROW |144119 |1695 |35497 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144120 |1695 |35493 |0 |1 |2774A4|1 |2 |0 |
+ROW |144121 |1695 |35503 |0 |2 |F63100|0 |2 |0 |
+ROW |144122 |1695 |35499 |0 |3 |A54F10|1 |2 |0 |
+ROW |144123 |1695 |35496 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |144124 |1695 |35502 |0 |5 |6C59DC|0 |2 |0 |
+ROW |144125 |1696 |35508 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144126 |1696 |35507 |0 |1 |2774A4|1 |2 |0 |
+ROW |144127 |1696 |35510 |0 |2 |F63100|0 |2 |0 |
+ROW |144128 |1696 |35509 |0 |3 |A54F10|1 |2 |0 |
+ROW |144129 |1697 |35516 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144130 |1697 |35515 |0 |1 |2774A4|1 |2 |0 |
+ROW |144131 |1697 |35518 |0 |2 |F63100|0 |2 |0 |
+ROW |144132 |1697 |35517 |0 |3 |A54F10|1 |2 |0 |
+ROW |144133 |1698 |35524 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144134 |1698 |35523 |0 |1 |2774A4|1 |2 |0 |
+ROW |144135 |1698 |35526 |0 |2 |F63100|0 |2 |0 |
+ROW |144136 |1698 |35525 |0 |3 |A54F10|1 |2 |0 |
+ROW |144137 |1699 |35531 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144138 |1699 |35529 |0 |1 |2774A4|0 |2 |0 |
+ROW |144139 |1699 |35530 |0 |2 |F63100|0 |2 |0 |
+ROW |144140 |1700 |35411 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144141 |1700 |35409 |0 |1 |2774A4|0 |2 |0 |
+ROW |144142 |1700 |35407 |0 |2 |F63100|0 |2 |0 |
+ROW |144143 |1700 |35413 |0 |3 |A54F10|0 |2 |0 |
+ROW |144144 |1700 |35412 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |144145 |1700 |35410 |0 |5 |6C59DC|0 |2 |0 |
+ROW |144146 |2147 |40813 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144147 |2147 |40816 |2 |1 |2774A4|0 |2 |0 |
+ROW |144148 |2147 |40815 |0 |2 |F63100|1 |2 |0 |
+ROW |144149 |2147 |40812 |0 |3 |A54F10|1 |2 |0 |
+ROW |144150 |2147 |40814 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144151 |2147 |40811 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144152 |708 |27671 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144153 |1047 |30112 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144154 |2148 |40836 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144155 |2148 |40839 |2 |1 |2774A4|0 |2 |0 |
+ROW |144156 |2148 |40838 |0 |2 |F63100|1 |2 |0 |
+ROW |144157 |2148 |40835 |0 |3 |A54F10|1 |2 |0 |
+ROW |144158 |2148 |40837 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144159 |2148 |40834 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144160 |1048 |30114 |2 |0 |1A7C11|0 |2 |0 |
+ROW |144161 |1048 |30113 |5 |1 |2774A4|0 |2 |0 |
+ROW |144162 |1049 |30115 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144163 |2149 |40859 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144164 |2149 |40862 |2 |1 |2774A4|0 |2 |0 |
+ROW |144165 |2149 |40861 |0 |2 |F63100|1 |2 |0 |
+ROW |144166 |2149 |40858 |0 |3 |A54F10|1 |2 |0 |
+ROW |144167 |2149 |40860 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144168 |2149 |40857 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144169 |775 |28143 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144170 |714 |27753 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144171 |1050 |30116 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144172 |2150 |40882 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144173 |2150 |40885 |2 |1 |2774A4|0 |2 |0 |
+ROW |144174 |2150 |40884 |0 |2 |F63100|1 |2 |0 |
+ROW |144175 |2150 |40881 |0 |3 |A54F10|1 |2 |0 |
+ROW |144176 |2150 |40883 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144177 |2150 |40880 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144178 |2151 |40904 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144179 |2151 |40907 |2 |1 |2774A4|0 |2 |0 |
+ROW |144180 |2151 |40906 |0 |2 |F63100|1 |2 |0 |
+ROW |144181 |2151 |40903 |0 |3 |A54F10|1 |2 |0 |
+ROW |144182 |2151 |40905 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144183 |2151 |40902 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144184 |856 |28894 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144185 |1051 |30118 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144186 |2152 |40926 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144187 |2152 |40929 |2 |1 |2774A4|0 |2 |0 |
+ROW |144188 |2152 |40928 |0 |2 |F63100|1 |2 |0 |
+ROW |144189 |2152 |40925 |0 |3 |A54F10|1 |2 |0 |
+ROW |144190 |2152 |40927 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144191 |2152 |40924 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144192 |1564 |34166 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144193 |1564 |34169 |2 |1 |2774A4|0 |2 |0 |
+ROW |144194 |1564 |34168 |0 |2 |F63100|1 |2 |0 |
+ROW |144195 |1564 |34165 |0 |3 |A54F10|1 |2 |0 |
+ROW |144196 |1564 |34167 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144197 |1564 |34164 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144198 |1565 |34174 |0 |0 |969696|0 |9 |2 |
+ROW |144199 |1565 |34175 |0 |1 |C80000|0 |9 |0 |
+ROW |144200 |1566 |34178 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144201 |1567 |34154 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144202 |1811 |36861 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144203 |1812 |36867 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144204 |1812 |36865 |0 |1 |2774A4|0 |2 |0 |
+ROW |144205 |1812 |36864 |0 |2 |F63100|0 |2 |0 |
+ROW |144206 |1812 |36866 |0 |3 |A54F10|0 |2 |0 |
+ROW |144207 |2153 |40948 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144208 |2153 |40951 |2 |1 |2774A4|0 |2 |0 |
+ROW |144209 |2153 |40950 |0 |2 |F63100|1 |2 |0 |
+ROW |144210 |2153 |40947 |0 |3 |A54F10|1 |2 |0 |
+ROW |144211 |2153 |40949 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144212 |2153 |40946 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144213 |1813 |36878 |0 |0 |969696|0 |9 |2 |
+ROW |144214 |1813 |36879 |0 |1 |C80000|0 |9 |0 |
+ROW |144215 |1814 |36853 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144216 |1816 |36915 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144217 |1817 |36921 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144218 |1817 |36919 |0 |1 |2774A4|0 |2 |0 |
+ROW |144219 |1817 |36918 |0 |2 |F63100|0 |2 |0 |
+ROW |144220 |1817 |36920 |0 |3 |A54F10|0 |2 |0 |
+ROW |144221 |2154 |40969 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144222 |2154 |40972 |2 |1 |2774A4|0 |2 |0 |
+ROW |144223 |2154 |40971 |0 |2 |F63100|1 |2 |0 |
+ROW |144224 |2154 |40968 |0 |3 |A54F10|1 |2 |0 |
+ROW |144225 |2154 |40970 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144226 |2154 |40967 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144227 |1818 |36932 |0 |0 |969696|0 |9 |2 |
+ROW |144228 |1818 |36933 |0 |1 |C80000|0 |9 |0 |
+ROW |144229 |1819 |36907 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144230 |1821 |36969 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144231 |1822 |36975 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144232 |1822 |36973 |0 |1 |2774A4|0 |2 |0 |
+ROW |144233 |1822 |36972 |0 |2 |F63100|0 |2 |0 |
+ROW |144234 |1822 |36974 |0 |3 |A54F10|0 |2 |0 |
+ROW |144235 |2155 |40990 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144236 |2155 |40993 |2 |1 |2774A4|0 |2 |0 |
+ROW |144237 |2155 |40992 |0 |2 |F63100|1 |2 |0 |
+ROW |144238 |2155 |40989 |0 |3 |A54F10|1 |2 |0 |
+ROW |144239 |2155 |40991 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144240 |2155 |40988 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144241 |1823 |36986 |0 |0 |969696|0 |9 |2 |
+ROW |144242 |1823 |36987 |0 |1 |C80000|0 |9 |0 |
+ROW |144243 |1824 |36961 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144244 |1826 |37023 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144245 |1827 |37029 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144246 |1827 |37027 |0 |1 |2774A4|0 |2 |0 |
+ROW |144247 |1827 |37026 |0 |2 |F63100|0 |2 |0 |
+ROW |144248 |1827 |37028 |0 |3 |A54F10|0 |2 |0 |
+ROW |144249 |2156 |41011 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144250 |2156 |41014 |2 |1 |2774A4|0 |2 |0 |
+ROW |144251 |2156 |41013 |0 |2 |F63100|1 |2 |0 |
+ROW |144252 |2156 |41010 |0 |3 |A54F10|1 |2 |0 |
+ROW |144253 |2156 |41012 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144254 |2156 |41009 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144255 |1828 |37040 |0 |0 |969696|0 |9 |2 |
+ROW |144256 |1828 |37041 |0 |1 |C80000|0 |9 |0 |
+ROW |144257 |1829 |37015 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144258 |1831 |37077 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144259 |1832 |37083 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144260 |1832 |37081 |0 |1 |2774A4|0 |2 |0 |
+ROW |144261 |1832 |37080 |0 |2 |F63100|0 |2 |0 |
+ROW |144262 |1832 |37082 |0 |3 |A54F10|0 |2 |0 |
+ROW |144263 |2157 |41032 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144264 |2157 |41035 |2 |1 |2774A4|0 |2 |0 |
+ROW |144265 |2157 |41034 |0 |2 |F63100|1 |2 |0 |
+ROW |144266 |2157 |41031 |0 |3 |A54F10|1 |2 |0 |
+ROW |144267 |2157 |41033 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144268 |2157 |41030 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144269 |1833 |37094 |0 |0 |969696|0 |9 |2 |
+ROW |144270 |1833 |37095 |0 |1 |C80000|0 |9 |0 |
+ROW |144271 |1834 |37069 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144272 |1836 |37131 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144273 |1837 |37137 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144274 |1837 |37135 |0 |1 |2774A4|0 |2 |0 |
+ROW |144275 |1837 |37134 |0 |2 |F63100|0 |2 |0 |
+ROW |144276 |1837 |37136 |0 |3 |A54F10|0 |2 |0 |
+ROW |144277 |2158 |41053 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144278 |2158 |41056 |2 |1 |2774A4|0 |2 |0 |
+ROW |144279 |2158 |41055 |0 |2 |F63100|1 |2 |0 |
+ROW |144280 |2158 |41052 |0 |3 |A54F10|1 |2 |0 |
+ROW |144281 |2158 |41054 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144282 |2158 |41051 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144283 |1838 |37148 |0 |0 |969696|0 |9 |2 |
+ROW |144284 |1838 |37149 |0 |1 |C80000|0 |9 |0 |
+ROW |144285 |1839 |37123 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144286 |1841 |37185 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144287 |1842 |37191 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144288 |1842 |37189 |0 |1 |2774A4|0 |2 |0 |
+ROW |144289 |1842 |37188 |0 |2 |F63100|0 |2 |0 |
+ROW |144290 |1842 |37190 |0 |3 |A54F10|0 |2 |0 |
+ROW |144291 |2159 |41074 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144292 |2159 |41077 |2 |1 |2774A4|0 |2 |0 |
+ROW |144293 |2159 |41076 |0 |2 |F63100|1 |2 |0 |
+ROW |144294 |2159 |41073 |0 |3 |A54F10|1 |2 |0 |
+ROW |144295 |2159 |41075 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144296 |2159 |41072 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144297 |1843 |37202 |0 |0 |969696|0 |9 |2 |
+ROW |144298 |1843 |37203 |0 |1 |C80000|0 |9 |0 |
+ROW |144299 |1844 |37177 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144300 |1846 |37239 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144301 |1847 |37245 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144302 |1847 |37243 |0 |1 |2774A4|0 |2 |0 |
+ROW |144303 |1847 |37242 |0 |2 |F63100|0 |2 |0 |
+ROW |144304 |1847 |37244 |0 |3 |A54F10|0 |2 |0 |
+ROW |144305 |2160 |41095 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144306 |2160 |41098 |2 |1 |2774A4|0 |2 |0 |
+ROW |144307 |2160 |41097 |0 |2 |F63100|1 |2 |0 |
+ROW |144308 |2160 |41094 |0 |3 |A54F10|1 |2 |0 |
+ROW |144309 |2160 |41096 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144310 |2160 |41093 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144311 |1848 |37256 |0 |0 |969696|0 |9 |2 |
+ROW |144312 |1848 |37257 |0 |1 |C80000|0 |9 |0 |
+ROW |144313 |1849 |37231 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144314 |1851 |37293 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144315 |1852 |37299 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144316 |1852 |37297 |0 |1 |2774A4|0 |2 |0 |
+ROW |144317 |1852 |37296 |0 |2 |F63100|0 |2 |0 |
+ROW |144318 |1852 |37298 |0 |3 |A54F10|0 |2 |0 |
+ROW |144319 |2161 |41116 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144320 |2161 |41119 |2 |1 |2774A4|0 |2 |0 |
+ROW |144321 |2161 |41118 |0 |2 |F63100|1 |2 |0 |
+ROW |144322 |2161 |41115 |0 |3 |A54F10|1 |2 |0 |
+ROW |144323 |2161 |41117 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144324 |2161 |41114 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144325 |1853 |37310 |0 |0 |969696|0 |9 |2 |
+ROW |144326 |1853 |37311 |0 |1 |C80000|0 |9 |0 |
+ROW |144327 |1854 |37285 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144328 |1856 |37347 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144329 |1857 |37353 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144330 |1857 |37351 |0 |1 |2774A4|0 |2 |0 |
+ROW |144331 |1857 |37350 |0 |2 |F63100|0 |2 |0 |
+ROW |144332 |1857 |37352 |0 |3 |A54F10|0 |2 |0 |
+ROW |144333 |2162 |41137 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144334 |2162 |41140 |2 |1 |2774A4|0 |2 |0 |
+ROW |144335 |2162 |41139 |0 |2 |F63100|1 |2 |0 |
+ROW |144336 |2162 |41136 |0 |3 |A54F10|1 |2 |0 |
+ROW |144337 |2162 |41138 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144338 |2162 |41135 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144339 |1858 |37364 |0 |0 |969696|0 |9 |2 |
+ROW |144340 |1858 |37365 |0 |1 |C80000|0 |9 |0 |
+ROW |144341 |1859 |37339 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144342 |1861 |37401 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144343 |1862 |37407 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144344 |1862 |37405 |0 |1 |2774A4|0 |2 |0 |
+ROW |144345 |1862 |37404 |0 |2 |F63100|0 |2 |0 |
+ROW |144346 |1862 |37406 |0 |3 |A54F10|0 |2 |0 |
+ROW |144347 |2163 |41158 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144348 |2163 |41161 |2 |1 |2774A4|0 |2 |0 |
+ROW |144349 |2163 |41160 |0 |2 |F63100|1 |2 |0 |
+ROW |144350 |2163 |41157 |0 |3 |A54F10|1 |2 |0 |
+ROW |144351 |2163 |41159 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144352 |2163 |41156 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144353 |1863 |37418 |0 |0 |969696|0 |9 |2 |
+ROW |144354 |1863 |37419 |0 |1 |C80000|0 |9 |0 |
+ROW |144355 |1864 |37393 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144356 |1866 |37455 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144357 |1867 |37461 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144358 |1867 |37459 |0 |1 |2774A4|0 |2 |0 |
+ROW |144359 |1867 |37458 |0 |2 |F63100|0 |2 |0 |
+ROW |144360 |1867 |37460 |0 |3 |A54F10|0 |2 |0 |
+ROW |144361 |2164 |41179 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144362 |2164 |41182 |2 |1 |2774A4|0 |2 |0 |
+ROW |144363 |2164 |41181 |0 |2 |F63100|1 |2 |0 |
+ROW |144364 |2164 |41178 |0 |3 |A54F10|1 |2 |0 |
+ROW |144365 |2164 |41180 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144366 |2164 |41177 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144367 |1868 |37472 |0 |0 |969696|0 |9 |2 |
+ROW |144368 |1868 |37473 |0 |1 |C80000|0 |9 |0 |
+ROW |144369 |1869 |37447 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144370 |1871 |37509 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144371 |1872 |37515 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144372 |1872 |37513 |0 |1 |2774A4|0 |2 |0 |
+ROW |144373 |1872 |37512 |0 |2 |F63100|0 |2 |0 |
+ROW |144374 |1872 |37514 |0 |3 |A54F10|0 |2 |0 |
+ROW |144375 |2165 |41200 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144376 |2165 |41203 |2 |1 |2774A4|0 |2 |0 |
+ROW |144377 |2165 |41202 |0 |2 |F63100|1 |2 |0 |
+ROW |144378 |2165 |41199 |0 |3 |A54F10|1 |2 |0 |
+ROW |144379 |2165 |41201 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144380 |2165 |41198 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144381 |1873 |37526 |0 |0 |969696|0 |9 |2 |
+ROW |144382 |1873 |37527 |0 |1 |C80000|0 |9 |0 |
+ROW |144383 |1874 |37501 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144384 |1876 |37563 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144385 |1877 |37569 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144386 |1877 |37567 |0 |1 |2774A4|0 |2 |0 |
+ROW |144387 |1877 |37566 |0 |2 |F63100|0 |2 |0 |
+ROW |144388 |1877 |37568 |0 |3 |A54F10|0 |2 |0 |
+ROW |144389 |2166 |41221 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144390 |2166 |41224 |2 |1 |2774A4|0 |2 |0 |
+ROW |144391 |2166 |41223 |0 |2 |F63100|1 |2 |0 |
+ROW |144392 |2166 |41220 |0 |3 |A54F10|1 |2 |0 |
+ROW |144393 |2166 |41222 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144394 |2166 |41219 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144395 |1878 |37580 |0 |0 |969696|0 |9 |2 |
+ROW |144396 |1878 |37581 |0 |1 |C80000|0 |9 |0 |
+ROW |144397 |1879 |37555 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144398 |1881 |37617 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144399 |1882 |37623 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144400 |1882 |37621 |0 |1 |2774A4|0 |2 |0 |
+ROW |144401 |1882 |37620 |0 |2 |F63100|0 |2 |0 |
+ROW |144402 |1882 |37622 |0 |3 |A54F10|0 |2 |0 |
+ROW |144403 |2167 |41242 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144404 |2167 |41245 |2 |1 |2774A4|0 |2 |0 |
+ROW |144405 |2167 |41244 |0 |2 |F63100|1 |2 |0 |
+ROW |144406 |2167 |41241 |0 |3 |A54F10|1 |2 |0 |
+ROW |144407 |2167 |41243 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144408 |2167 |41240 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144409 |1883 |37634 |0 |0 |969696|0 |9 |2 |
+ROW |144410 |1883 |37635 |0 |1 |C80000|0 |9 |0 |
+ROW |144411 |1884 |37609 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144412 |1886 |37671 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144413 |1887 |37677 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144414 |1887 |37675 |0 |1 |2774A4|0 |2 |0 |
+ROW |144415 |1887 |37674 |0 |2 |F63100|0 |2 |0 |
+ROW |144416 |1887 |37676 |0 |3 |A54F10|0 |2 |0 |
+ROW |144417 |2168 |41263 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144418 |2168 |41266 |2 |1 |2774A4|0 |2 |0 |
+ROW |144419 |2168 |41265 |0 |2 |F63100|1 |2 |0 |
+ROW |144420 |2168 |41262 |0 |3 |A54F10|1 |2 |0 |
+ROW |144421 |2168 |41264 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144422 |2168 |41261 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144423 |1888 |37688 |0 |0 |969696|0 |9 |2 |
+ROW |144424 |1888 |37689 |0 |1 |C80000|0 |9 |0 |
+ROW |144425 |1889 |37663 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144426 |1891 |37725 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144427 |1892 |37731 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144428 |1892 |37729 |0 |1 |2774A4|0 |2 |0 |
+ROW |144429 |1892 |37728 |0 |2 |F63100|0 |2 |0 |
+ROW |144430 |1892 |37730 |0 |3 |A54F10|0 |2 |0 |
+ROW |144431 |2169 |41284 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144432 |2169 |41287 |2 |1 |2774A4|0 |2 |0 |
+ROW |144433 |2169 |41286 |0 |2 |F63100|1 |2 |0 |
+ROW |144434 |2169 |41283 |0 |3 |A54F10|1 |2 |0 |
+ROW |144435 |2169 |41285 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144436 |2169 |41282 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144437 |1893 |37742 |0 |0 |969696|0 |9 |2 |
+ROW |144438 |1893 |37743 |0 |1 |C80000|0 |9 |0 |
+ROW |144439 |1894 |37717 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144440 |1896 |37779 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144441 |1897 |37785 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144442 |1897 |37783 |0 |1 |2774A4|0 |2 |0 |
+ROW |144443 |1897 |37782 |0 |2 |F63100|0 |2 |0 |
+ROW |144444 |1897 |37784 |0 |3 |A54F10|0 |2 |0 |
+ROW |144445 |2170 |41305 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144446 |2170 |41308 |2 |1 |2774A4|0 |2 |0 |
+ROW |144447 |2170 |41307 |0 |2 |F63100|1 |2 |0 |
+ROW |144448 |2170 |41304 |0 |3 |A54F10|1 |2 |0 |
+ROW |144449 |2170 |41306 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144450 |2170 |41303 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144451 |1898 |37796 |0 |0 |969696|0 |9 |2 |
+ROW |144452 |1898 |37797 |0 |1 |C80000|0 |9 |0 |
+ROW |144453 |1899 |37771 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144454 |1901 |37833 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144455 |1902 |37839 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144456 |1902 |37837 |0 |1 |2774A4|0 |2 |0 |
+ROW |144457 |1902 |37836 |0 |2 |F63100|0 |2 |0 |
+ROW |144458 |1902 |37838 |0 |3 |A54F10|0 |2 |0 |
+ROW |144459 |2171 |41326 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144460 |2171 |41329 |2 |1 |2774A4|0 |2 |0 |
+ROW |144461 |2171 |41328 |0 |2 |F63100|1 |2 |0 |
+ROW |144462 |2171 |41325 |0 |3 |A54F10|1 |2 |0 |
+ROW |144463 |2171 |41327 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144464 |2171 |41324 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144465 |1903 |37850 |0 |0 |969696|0 |9 |2 |
+ROW |144466 |1903 |37851 |0 |1 |C80000|0 |9 |0 |
+ROW |144467 |1904 |37825 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144468 |1906 |37887 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144469 |1907 |37893 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144470 |1907 |37891 |0 |1 |2774A4|0 |2 |0 |
+ROW |144471 |1907 |37890 |0 |2 |F63100|0 |2 |0 |
+ROW |144472 |1907 |37892 |0 |3 |A54F10|0 |2 |0 |
+ROW |144473 |2172 |41347 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144474 |2172 |41350 |2 |1 |2774A4|0 |2 |0 |
+ROW |144475 |2172 |41349 |0 |2 |F63100|1 |2 |0 |
+ROW |144476 |2172 |41346 |0 |3 |A54F10|1 |2 |0 |
+ROW |144477 |2172 |41348 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144478 |2172 |41345 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144479 |1908 |37904 |0 |0 |969696|0 |9 |2 |
+ROW |144480 |1908 |37905 |0 |1 |C80000|0 |9 |0 |
+ROW |144481 |1909 |37879 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144482 |1911 |37941 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144483 |1912 |37947 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144484 |1912 |37945 |0 |1 |2774A4|0 |2 |0 |
+ROW |144485 |1912 |37944 |0 |2 |F63100|0 |2 |0 |
+ROW |144486 |1912 |37946 |0 |3 |A54F10|0 |2 |0 |
+ROW |144487 |2173 |41368 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144488 |2173 |41371 |2 |1 |2774A4|0 |2 |0 |
+ROW |144489 |2173 |41370 |0 |2 |F63100|1 |2 |0 |
+ROW |144490 |2173 |41367 |0 |3 |A54F10|1 |2 |0 |
+ROW |144491 |2173 |41369 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144492 |2173 |41366 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144493 |1913 |37958 |0 |0 |969696|0 |9 |2 |
+ROW |144494 |1913 |37959 |0 |1 |C80000|0 |9 |0 |
+ROW |144495 |1914 |37933 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144496 |1916 |37995 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144497 |1917 |38001 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144498 |1917 |37999 |0 |1 |2774A4|0 |2 |0 |
+ROW |144499 |1917 |37998 |0 |2 |F63100|0 |2 |0 |
+ROW |144500 |1917 |38000 |0 |3 |A54F10|0 |2 |0 |
+ROW |144501 |2174 |41389 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144502 |2174 |41392 |2 |1 |2774A4|0 |2 |0 |
+ROW |144503 |2174 |41391 |0 |2 |F63100|1 |2 |0 |
+ROW |144504 |2174 |41388 |0 |3 |A54F10|1 |2 |0 |
+ROW |144505 |2174 |41390 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144506 |2174 |41387 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144507 |1918 |38012 |0 |0 |969696|0 |9 |2 |
+ROW |144508 |1918 |38013 |0 |1 |C80000|0 |9 |0 |
+ROW |144509 |1919 |37987 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144510 |1921 |38049 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144511 |1922 |38055 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144512 |1922 |38053 |0 |1 |2774A4|0 |2 |0 |
+ROW |144513 |1922 |38052 |0 |2 |F63100|0 |2 |0 |
+ROW |144514 |1922 |38054 |0 |3 |A54F10|0 |2 |0 |
+ROW |144515 |2175 |41410 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144516 |2175 |41413 |2 |1 |2774A4|0 |2 |0 |
+ROW |144517 |2175 |41412 |0 |2 |F63100|1 |2 |0 |
+ROW |144518 |2175 |41409 |0 |3 |A54F10|1 |2 |0 |
+ROW |144519 |2175 |41411 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144520 |2175 |41408 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144521 |1923 |38066 |0 |0 |969696|0 |9 |2 |
+ROW |144522 |1923 |38067 |0 |1 |C80000|0 |9 |0 |
+ROW |144523 |1924 |38041 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144524 |1926 |38103 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144525 |1927 |38109 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144526 |1927 |38107 |0 |1 |2774A4|0 |2 |0 |
+ROW |144527 |1927 |38106 |0 |2 |F63100|0 |2 |0 |
+ROW |144528 |1927 |38108 |0 |3 |A54F10|0 |2 |0 |
+ROW |144529 |2176 |41431 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144530 |2176 |41434 |2 |1 |2774A4|0 |2 |0 |
+ROW |144531 |2176 |41433 |0 |2 |F63100|1 |2 |0 |
+ROW |144532 |2176 |41430 |0 |3 |A54F10|1 |2 |0 |
+ROW |144533 |2176 |41432 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144534 |2176 |41429 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144535 |1928 |38120 |0 |0 |969696|0 |9 |2 |
+ROW |144536 |1928 |38121 |0 |1 |C80000|0 |9 |0 |
+ROW |144537 |1929 |38095 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144538 |1931 |38157 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144539 |1932 |38163 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144540 |1932 |38161 |0 |1 |2774A4|0 |2 |0 |
+ROW |144541 |1932 |38160 |0 |2 |F63100|0 |2 |0 |
+ROW |144542 |1932 |38162 |0 |3 |A54F10|0 |2 |0 |
+ROW |144543 |2177 |41452 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144544 |2177 |41455 |2 |1 |2774A4|0 |2 |0 |
+ROW |144545 |2177 |41454 |0 |2 |F63100|1 |2 |0 |
+ROW |144546 |2177 |41451 |0 |3 |A54F10|1 |2 |0 |
+ROW |144547 |2177 |41453 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144548 |2177 |41450 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144549 |1933 |38174 |0 |0 |969696|0 |9 |2 |
+ROW |144550 |1933 |38175 |0 |1 |C80000|0 |9 |0 |
+ROW |144551 |1934 |38149 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144552 |1936 |38211 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144553 |1937 |38217 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144554 |1937 |38215 |0 |1 |2774A4|0 |2 |0 |
+ROW |144555 |1937 |38214 |0 |2 |F63100|0 |2 |0 |
+ROW |144556 |1937 |38216 |0 |3 |A54F10|0 |2 |0 |
+ROW |144557 |2178 |41473 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144558 |2178 |41476 |2 |1 |2774A4|0 |2 |0 |
+ROW |144559 |2178 |41475 |0 |2 |F63100|1 |2 |0 |
+ROW |144560 |2178 |41472 |0 |3 |A54F10|1 |2 |0 |
+ROW |144561 |2178 |41474 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144562 |2178 |41471 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144563 |1938 |38228 |0 |0 |969696|0 |9 |2 |
+ROW |144564 |1938 |38229 |0 |1 |C80000|0 |9 |0 |
+ROW |144565 |1939 |38203 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144566 |1941 |38265 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144567 |1942 |38271 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144568 |1942 |38269 |0 |1 |2774A4|0 |2 |0 |
+ROW |144569 |1942 |38268 |0 |2 |F63100|0 |2 |0 |
+ROW |144570 |1942 |38270 |0 |3 |A54F10|0 |2 |0 |
+ROW |144571 |2179 |41494 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144572 |2179 |41497 |2 |1 |2774A4|0 |2 |0 |
+ROW |144573 |2179 |41496 |0 |2 |F63100|1 |2 |0 |
+ROW |144574 |2179 |41493 |0 |3 |A54F10|1 |2 |0 |
+ROW |144575 |2179 |41495 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144576 |2179 |41492 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144577 |1943 |38282 |0 |0 |969696|0 |9 |2 |
+ROW |144578 |1943 |38283 |0 |1 |C80000|0 |9 |0 |
+ROW |144579 |1944 |38257 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144580 |1946 |38319 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144581 |1947 |38325 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144582 |1947 |38323 |0 |1 |2774A4|0 |2 |0 |
+ROW |144583 |1947 |38322 |0 |2 |F63100|0 |2 |0 |
+ROW |144584 |1947 |38324 |0 |3 |A54F10|0 |2 |0 |
+ROW |144585 |2180 |41515 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144586 |2180 |41518 |2 |1 |2774A4|0 |2 |0 |
+ROW |144587 |2180 |41517 |0 |2 |F63100|1 |2 |0 |
+ROW |144588 |2180 |41514 |0 |3 |A54F10|1 |2 |0 |
+ROW |144589 |2180 |41516 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144590 |2180 |41513 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144591 |1948 |38336 |0 |0 |969696|0 |9 |2 |
+ROW |144592 |1948 |38337 |0 |1 |C80000|0 |9 |0 |
+ROW |144593 |1949 |38311 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144594 |1951 |38373 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144595 |1952 |38379 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144596 |1952 |38377 |0 |1 |2774A4|0 |2 |0 |
+ROW |144597 |1952 |38376 |0 |2 |F63100|0 |2 |0 |
+ROW |144598 |1952 |38378 |0 |3 |A54F10|0 |2 |0 |
+ROW |144599 |2181 |41536 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144600 |2181 |41539 |2 |1 |2774A4|0 |2 |0 |
+ROW |144601 |2181 |41538 |0 |2 |F63100|1 |2 |0 |
+ROW |144602 |2181 |41535 |0 |3 |A54F10|1 |2 |0 |
+ROW |144603 |2181 |41537 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144604 |2181 |41534 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144605 |1953 |38390 |0 |0 |969696|0 |9 |2 |
+ROW |144606 |1953 |38391 |0 |1 |C80000|0 |9 |0 |
+ROW |144607 |1954 |38365 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144608 |1956 |38427 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144609 |1957 |38433 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144610 |1957 |38431 |0 |1 |2774A4|0 |2 |0 |
+ROW |144611 |1957 |38430 |0 |2 |F63100|0 |2 |0 |
+ROW |144612 |1957 |38432 |0 |3 |A54F10|0 |2 |0 |
+ROW |144613 |2182 |41557 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144614 |2182 |41560 |2 |1 |2774A4|0 |2 |0 |
+ROW |144615 |2182 |41559 |0 |2 |F63100|1 |2 |0 |
+ROW |144616 |2182 |41556 |0 |3 |A54F10|1 |2 |0 |
+ROW |144617 |2182 |41558 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144618 |2182 |41555 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144619 |1958 |38444 |0 |0 |969696|0 |9 |2 |
+ROW |144620 |1958 |38445 |0 |1 |C80000|0 |9 |0 |
+ROW |144621 |1959 |38419 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144622 |1961 |38481 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144623 |1962 |38487 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144624 |1962 |38485 |0 |1 |2774A4|0 |2 |0 |
+ROW |144625 |1962 |38484 |0 |2 |F63100|0 |2 |0 |
+ROW |144626 |1962 |38486 |0 |3 |A54F10|0 |2 |0 |
+ROW |144627 |2183 |41578 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144628 |2183 |41581 |2 |1 |2774A4|0 |2 |0 |
+ROW |144629 |2183 |41580 |0 |2 |F63100|1 |2 |0 |
+ROW |144630 |2183 |41577 |0 |3 |A54F10|1 |2 |0 |
+ROW |144631 |2183 |41579 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144632 |2183 |41576 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144633 |1963 |38498 |0 |0 |969696|0 |9 |2 |
+ROW |144634 |1963 |38499 |0 |1 |C80000|0 |9 |0 |
+ROW |144635 |1964 |38473 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144636 |1966 |38535 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144637 |1967 |38541 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144638 |1967 |38539 |0 |1 |2774A4|0 |2 |0 |
+ROW |144639 |1967 |38538 |0 |2 |F63100|0 |2 |0 |
+ROW |144640 |1967 |38540 |0 |3 |A54F10|0 |2 |0 |
+ROW |144641 |2184 |41599 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144642 |2184 |41602 |2 |1 |2774A4|0 |2 |0 |
+ROW |144643 |2184 |41601 |0 |2 |F63100|1 |2 |0 |
+ROW |144644 |2184 |41598 |0 |3 |A54F10|1 |2 |0 |
+ROW |144645 |2184 |41600 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144646 |2184 |41597 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144647 |1968 |38552 |0 |0 |969696|0 |9 |2 |
+ROW |144648 |1968 |38553 |0 |1 |C80000|0 |9 |0 |
+ROW |144649 |1969 |38527 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144650 |1971 |38589 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144651 |1972 |38595 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144652 |1972 |38593 |0 |1 |2774A4|0 |2 |0 |
+ROW |144653 |1972 |38592 |0 |2 |F63100|0 |2 |0 |
+ROW |144654 |1972 |38594 |0 |3 |A54F10|0 |2 |0 |
+ROW |144655 |2185 |41620 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144656 |2185 |41623 |2 |1 |2774A4|0 |2 |0 |
+ROW |144657 |2185 |41622 |0 |2 |F63100|1 |2 |0 |
+ROW |144658 |2185 |41619 |0 |3 |A54F10|1 |2 |0 |
+ROW |144659 |2185 |41621 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144660 |2185 |41618 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144661 |1973 |38606 |0 |0 |969696|0 |9 |2 |
+ROW |144662 |1973 |38607 |0 |1 |C80000|0 |9 |0 |
+ROW |144663 |1974 |38581 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144664 |1976 |38643 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144665 |1977 |38649 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144666 |1977 |38647 |0 |1 |2774A4|0 |2 |0 |
+ROW |144667 |1977 |38646 |0 |2 |F63100|0 |2 |0 |
+ROW |144668 |1977 |38648 |0 |3 |A54F10|0 |2 |0 |
+ROW |144669 |2186 |41641 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144670 |2186 |41644 |2 |1 |2774A4|0 |2 |0 |
+ROW |144671 |2186 |41643 |0 |2 |F63100|1 |2 |0 |
+ROW |144672 |2186 |41640 |0 |3 |A54F10|1 |2 |0 |
+ROW |144673 |2186 |41642 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144674 |2186 |41639 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144675 |1978 |38660 |0 |0 |969696|0 |9 |2 |
+ROW |144676 |1978 |38661 |0 |1 |C80000|0 |9 |0 |
+ROW |144677 |1979 |38635 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144678 |1981 |38697 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144679 |1982 |38703 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144680 |1982 |38701 |0 |1 |2774A4|0 |2 |0 |
+ROW |144681 |1982 |38700 |0 |2 |F63100|0 |2 |0 |
+ROW |144682 |1982 |38702 |0 |3 |A54F10|0 |2 |0 |
+ROW |144683 |2187 |41662 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144684 |2187 |41665 |2 |1 |2774A4|0 |2 |0 |
+ROW |144685 |2187 |41664 |0 |2 |F63100|1 |2 |0 |
+ROW |144686 |2187 |41661 |0 |3 |A54F10|1 |2 |0 |
+ROW |144687 |2187 |41663 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144688 |2187 |41660 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144689 |1983 |38714 |0 |0 |969696|0 |9 |2 |
+ROW |144690 |1983 |38715 |0 |1 |C80000|0 |9 |0 |
+ROW |144691 |1984 |38689 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144692 |1986 |38751 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144693 |1987 |38757 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144694 |1987 |38755 |0 |1 |2774A4|0 |2 |0 |
+ROW |144695 |1987 |38754 |0 |2 |F63100|0 |2 |0 |
+ROW |144696 |1987 |38756 |0 |3 |A54F10|0 |2 |0 |
+ROW |144697 |2188 |41683 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144698 |2188 |41686 |2 |1 |2774A4|0 |2 |0 |
+ROW |144699 |2188 |41685 |0 |2 |F63100|1 |2 |0 |
+ROW |144700 |2188 |41682 |0 |3 |A54F10|1 |2 |0 |
+ROW |144701 |2188 |41684 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144702 |2188 |41681 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144703 |1988 |38768 |0 |0 |969696|0 |9 |2 |
+ROW |144704 |1988 |38769 |0 |1 |C80000|0 |9 |0 |
+ROW |144705 |1989 |38743 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144706 |1991 |38805 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144707 |1992 |38811 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144708 |1992 |38809 |0 |1 |2774A4|0 |2 |0 |
+ROW |144709 |1992 |38808 |0 |2 |F63100|0 |2 |0 |
+ROW |144710 |1992 |38810 |0 |3 |A54F10|0 |2 |0 |
+ROW |144711 |2189 |41704 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144712 |2189 |41707 |2 |1 |2774A4|0 |2 |0 |
+ROW |144713 |2189 |41706 |0 |2 |F63100|1 |2 |0 |
+ROW |144714 |2189 |41703 |0 |3 |A54F10|1 |2 |0 |
+ROW |144715 |2189 |41705 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144716 |2189 |41702 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144717 |1993 |38822 |0 |0 |969696|0 |9 |2 |
+ROW |144718 |1993 |38823 |0 |1 |C80000|0 |9 |0 |
+ROW |144719 |1994 |38797 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144720 |1996 |38859 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144721 |1997 |38865 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144722 |1997 |38863 |0 |1 |2774A4|0 |2 |0 |
+ROW |144723 |1997 |38862 |0 |2 |F63100|0 |2 |0 |
+ROW |144724 |1997 |38864 |0 |3 |A54F10|0 |2 |0 |
+ROW |144725 |2190 |41725 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144726 |2190 |41728 |2 |1 |2774A4|0 |2 |0 |
+ROW |144727 |2190 |41727 |0 |2 |F63100|1 |2 |0 |
+ROW |144728 |2190 |41724 |0 |3 |A54F10|1 |2 |0 |
+ROW |144729 |2190 |41726 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144730 |2190 |41723 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144731 |1998 |38876 |0 |0 |969696|0 |9 |2 |
+ROW |144732 |1998 |38877 |0 |1 |C80000|0 |9 |0 |
+ROW |144733 |1999 |38851 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144734 |2001 |38913 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144735 |2002 |38919 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144736 |2002 |38917 |0 |1 |2774A4|0 |2 |0 |
+ROW |144737 |2002 |38916 |0 |2 |F63100|0 |2 |0 |
+ROW |144738 |2002 |38918 |0 |3 |A54F10|0 |2 |0 |
+ROW |144739 |2191 |41746 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144740 |2191 |41749 |2 |1 |2774A4|0 |2 |0 |
+ROW |144741 |2191 |41748 |0 |2 |F63100|1 |2 |0 |
+ROW |144742 |2191 |41745 |0 |3 |A54F10|1 |2 |0 |
+ROW |144743 |2191 |41747 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144744 |2191 |41744 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144745 |2003 |38930 |0 |0 |969696|0 |9 |2 |
+ROW |144746 |2003 |38931 |0 |1 |C80000|0 |9 |0 |
+ROW |144747 |2004 |38905 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144748 |2006 |38967 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144749 |2007 |38973 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144750 |2007 |38971 |0 |1 |2774A4|0 |2 |0 |
+ROW |144751 |2007 |38970 |0 |2 |F63100|0 |2 |0 |
+ROW |144752 |2007 |38972 |0 |3 |A54F10|0 |2 |0 |
+ROW |144753 |2192 |41767 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144754 |2192 |41770 |2 |1 |2774A4|0 |2 |0 |
+ROW |144755 |2192 |41769 |0 |2 |F63100|1 |2 |0 |
+ROW |144756 |2192 |41766 |0 |3 |A54F10|1 |2 |0 |
+ROW |144757 |2192 |41768 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144758 |2192 |41765 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144759 |2008 |38984 |0 |0 |969696|0 |9 |2 |
+ROW |144760 |2008 |38985 |0 |1 |C80000|0 |9 |0 |
+ROW |144761 |2009 |38959 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144762 |2011 |39021 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144763 |2012 |39027 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144764 |2012 |39025 |0 |1 |2774A4|0 |2 |0 |
+ROW |144765 |2012 |39024 |0 |2 |F63100|0 |2 |0 |
+ROW |144766 |2012 |39026 |0 |3 |A54F10|0 |2 |0 |
+ROW |144767 |2193 |41788 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144768 |2193 |41791 |2 |1 |2774A4|0 |2 |0 |
+ROW |144769 |2193 |41790 |0 |2 |F63100|1 |2 |0 |
+ROW |144770 |2193 |41787 |0 |3 |A54F10|1 |2 |0 |
+ROW |144771 |2193 |41789 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144772 |2193 |41786 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144773 |2013 |39038 |0 |0 |969696|0 |9 |2 |
+ROW |144774 |2013 |39039 |0 |1 |C80000|0 |9 |0 |
+ROW |144775 |2014 |39013 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144776 |2016 |39075 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144777 |2017 |39081 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144778 |2017 |39079 |0 |1 |2774A4|0 |2 |0 |
+ROW |144779 |2017 |39078 |0 |2 |F63100|0 |2 |0 |
+ROW |144780 |2017 |39080 |0 |3 |A54F10|0 |2 |0 |
+ROW |144781 |2194 |41809 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144782 |2194 |41812 |2 |1 |2774A4|0 |2 |0 |
+ROW |144783 |2194 |41811 |0 |2 |F63100|1 |2 |0 |
+ROW |144784 |2194 |41808 |0 |3 |A54F10|1 |2 |0 |
+ROW |144785 |2194 |41810 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144786 |2194 |41807 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144787 |2018 |39092 |0 |0 |969696|0 |9 |2 |
+ROW |144788 |2018 |39093 |0 |1 |C80000|0 |9 |0 |
+ROW |144789 |2019 |39067 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144790 |2021 |39129 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144791 |2022 |39135 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144792 |2022 |39133 |0 |1 |2774A4|0 |2 |0 |
+ROW |144793 |2022 |39132 |0 |2 |F63100|0 |2 |0 |
+ROW |144794 |2022 |39134 |0 |3 |A54F10|0 |2 |0 |
+ROW |144795 |2195 |41830 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144796 |2195 |41833 |2 |1 |2774A4|0 |2 |0 |
+ROW |144797 |2195 |41832 |0 |2 |F63100|1 |2 |0 |
+ROW |144798 |2195 |41829 |0 |3 |A54F10|1 |2 |0 |
+ROW |144799 |2195 |41831 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144800 |2195 |41828 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144801 |2023 |39146 |0 |0 |969696|0 |9 |2 |
+ROW |144802 |2023 |39147 |0 |1 |C80000|0 |9 |0 |
+ROW |144803 |2024 |39121 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144804 |2026 |39183 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144805 |2027 |39189 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144806 |2027 |39187 |0 |1 |2774A4|0 |2 |0 |
+ROW |144807 |2027 |39186 |0 |2 |F63100|0 |2 |0 |
+ROW |144808 |2027 |39188 |0 |3 |A54F10|0 |2 |0 |
+ROW |144809 |2196 |41851 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144810 |2196 |41854 |2 |1 |2774A4|0 |2 |0 |
+ROW |144811 |2196 |41853 |0 |2 |F63100|1 |2 |0 |
+ROW |144812 |2196 |41850 |0 |3 |A54F10|1 |2 |0 |
+ROW |144813 |2196 |41852 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144814 |2196 |41849 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144815 |2028 |39200 |0 |0 |969696|0 |9 |2 |
+ROW |144816 |2028 |39201 |0 |1 |C80000|0 |9 |0 |
+ROW |144817 |2029 |39175 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144818 |2031 |39237 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144819 |2032 |39243 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144820 |2032 |39241 |0 |1 |2774A4|0 |2 |0 |
+ROW |144821 |2032 |39240 |0 |2 |F63100|0 |2 |0 |
+ROW |144822 |2032 |39242 |0 |3 |A54F10|0 |2 |0 |
+ROW |144823 |2197 |41872 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144824 |2197 |41875 |2 |1 |2774A4|0 |2 |0 |
+ROW |144825 |2197 |41874 |0 |2 |F63100|1 |2 |0 |
+ROW |144826 |2197 |41871 |0 |3 |A54F10|1 |2 |0 |
+ROW |144827 |2197 |41873 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144828 |2197 |41870 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144829 |2033 |39254 |0 |0 |969696|0 |9 |2 |
+ROW |144830 |2033 |39255 |0 |1 |C80000|0 |9 |0 |
+ROW |144831 |2034 |39229 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144832 |2036 |39291 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144833 |2037 |39297 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144834 |2037 |39295 |0 |1 |2774A4|0 |2 |0 |
+ROW |144835 |2037 |39294 |0 |2 |F63100|0 |2 |0 |
+ROW |144836 |2037 |39296 |0 |3 |A54F10|0 |2 |0 |
+ROW |144837 |2198 |41893 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144838 |2198 |41896 |2 |1 |2774A4|0 |2 |0 |
+ROW |144839 |2198 |41895 |0 |2 |F63100|1 |2 |0 |
+ROW |144840 |2198 |41892 |0 |3 |A54F10|1 |2 |0 |
+ROW |144841 |2198 |41894 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144842 |2198 |41891 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144843 |2038 |39308 |0 |0 |969696|0 |9 |2 |
+ROW |144844 |2038 |39309 |0 |1 |C80000|0 |9 |0 |
+ROW |144845 |2039 |39283 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144846 |2041 |39345 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144847 |2042 |39351 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144848 |2042 |39349 |0 |1 |2774A4|0 |2 |0 |
+ROW |144849 |2042 |39348 |0 |2 |F63100|0 |2 |0 |
+ROW |144850 |2042 |39350 |0 |3 |A54F10|0 |2 |0 |
+ROW |144851 |2199 |41914 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144852 |2199 |41917 |2 |1 |2774A4|0 |2 |0 |
+ROW |144853 |2199 |41916 |0 |2 |F63100|1 |2 |0 |
+ROW |144854 |2199 |41913 |0 |3 |A54F10|1 |2 |0 |
+ROW |144855 |2199 |41915 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144856 |2199 |41912 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144857 |2043 |39362 |0 |0 |969696|0 |9 |2 |
+ROW |144858 |2043 |39363 |0 |1 |C80000|0 |9 |0 |
+ROW |144859 |2044 |39337 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144860 |2046 |39399 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144861 |2047 |39405 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144862 |2047 |39403 |0 |1 |2774A4|0 |2 |0 |
+ROW |144863 |2047 |39402 |0 |2 |F63100|0 |2 |0 |
+ROW |144864 |2047 |39404 |0 |3 |A54F10|0 |2 |0 |
+ROW |144865 |2200 |41935 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144866 |2200 |41938 |2 |1 |2774A4|0 |2 |0 |
+ROW |144867 |2200 |41937 |0 |2 |F63100|1 |2 |0 |
+ROW |144868 |2200 |41934 |0 |3 |A54F10|1 |2 |0 |
+ROW |144869 |2200 |41936 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144870 |2200 |41933 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144871 |2048 |39416 |0 |0 |969696|0 |9 |2 |
+ROW |144872 |2048 |39417 |0 |1 |C80000|0 |9 |0 |
+ROW |144873 |2049 |39391 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144874 |2051 |39453 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144875 |2052 |39459 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144876 |2052 |39457 |0 |1 |2774A4|0 |2 |0 |
+ROW |144877 |2052 |39456 |0 |2 |F63100|0 |2 |0 |
+ROW |144878 |2052 |39458 |0 |3 |A54F10|0 |2 |0 |
+ROW |144879 |2201 |41956 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144880 |2201 |41959 |2 |1 |2774A4|0 |2 |0 |
+ROW |144881 |2201 |41958 |0 |2 |F63100|1 |2 |0 |
+ROW |144882 |2201 |41955 |0 |3 |A54F10|1 |2 |0 |
+ROW |144883 |2201 |41957 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144884 |2201 |41954 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144885 |2053 |39470 |0 |0 |969696|0 |9 |2 |
+ROW |144886 |2053 |39471 |0 |1 |C80000|0 |9 |0 |
+ROW |144887 |2054 |39445 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144888 |2056 |39507 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144889 |2057 |39513 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144890 |2057 |39511 |0 |1 |2774A4|0 |2 |0 |
+ROW |144891 |2057 |39510 |0 |2 |F63100|0 |2 |0 |
+ROW |144892 |2057 |39512 |0 |3 |A54F10|0 |2 |0 |
+ROW |144893 |2202 |41977 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144894 |2202 |41980 |2 |1 |2774A4|0 |2 |0 |
+ROW |144895 |2202 |41979 |0 |2 |F63100|1 |2 |0 |
+ROW |144896 |2202 |41976 |0 |3 |A54F10|1 |2 |0 |
+ROW |144897 |2202 |41978 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144898 |2202 |41975 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144899 |2058 |39524 |0 |0 |969696|0 |9 |2 |
+ROW |144900 |2058 |39525 |0 |1 |C80000|0 |9 |0 |
+ROW |144901 |2059 |39499 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144902 |2061 |39561 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144903 |2062 |39567 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144904 |2062 |39565 |0 |1 |2774A4|0 |2 |0 |
+ROW |144905 |2062 |39564 |0 |2 |F63100|0 |2 |0 |
+ROW |144906 |2062 |39566 |0 |3 |A54F10|0 |2 |0 |
+ROW |144907 |2203 |41998 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144908 |2203 |42001 |2 |1 |2774A4|0 |2 |0 |
+ROW |144909 |2203 |42000 |0 |2 |F63100|1 |2 |0 |
+ROW |144910 |2203 |41997 |0 |3 |A54F10|1 |2 |0 |
+ROW |144911 |2203 |41999 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144912 |2203 |41996 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144913 |2063 |39578 |0 |0 |969696|0 |9 |2 |
+ROW |144914 |2063 |39579 |0 |1 |C80000|0 |9 |0 |
+ROW |144915 |2064 |39553 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144916 |2066 |39615 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144917 |2067 |39621 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144918 |2067 |39619 |0 |1 |2774A4|0 |2 |0 |
+ROW |144919 |2067 |39618 |0 |2 |F63100|0 |2 |0 |
+ROW |144920 |2067 |39620 |0 |3 |A54F10|0 |2 |0 |
+ROW |144921 |2204 |42019 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144922 |2204 |42022 |2 |1 |2774A4|0 |2 |0 |
+ROW |144923 |2204 |42021 |0 |2 |F63100|1 |2 |0 |
+ROW |144924 |2204 |42018 |0 |3 |A54F10|1 |2 |0 |
+ROW |144925 |2204 |42020 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144926 |2204 |42017 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144927 |2068 |39632 |0 |0 |969696|0 |9 |2 |
+ROW |144928 |2068 |39633 |0 |1 |C80000|0 |9 |0 |
+ROW |144929 |2069 |39607 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144930 |2071 |39669 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144931 |2072 |39675 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144932 |2072 |39673 |0 |1 |2774A4|0 |2 |0 |
+ROW |144933 |2072 |39672 |0 |2 |F63100|0 |2 |0 |
+ROW |144934 |2072 |39674 |0 |3 |A54F10|0 |2 |0 |
+ROW |144935 |2205 |42040 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144936 |2205 |42043 |2 |1 |2774A4|0 |2 |0 |
+ROW |144937 |2205 |42042 |0 |2 |F63100|1 |2 |0 |
+ROW |144938 |2205 |42039 |0 |3 |A54F10|1 |2 |0 |
+ROW |144939 |2205 |42041 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144940 |2205 |42038 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144941 |2073 |39686 |0 |0 |969696|0 |9 |2 |
+ROW |144942 |2073 |39687 |0 |1 |C80000|0 |9 |0 |
+ROW |144943 |2074 |39661 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144944 |2076 |39723 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144945 |2077 |39729 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144946 |2077 |39727 |0 |1 |2774A4|0 |2 |0 |
+ROW |144947 |2077 |39726 |0 |2 |F63100|0 |2 |0 |
+ROW |144948 |2077 |39728 |0 |3 |A54F10|0 |2 |0 |
+ROW |144949 |2206 |42061 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144950 |2206 |42064 |2 |1 |2774A4|0 |2 |0 |
+ROW |144951 |2206 |42063 |0 |2 |F63100|1 |2 |0 |
+ROW |144952 |2206 |42060 |0 |3 |A54F10|1 |2 |0 |
+ROW |144953 |2206 |42062 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144954 |2206 |42059 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144955 |2078 |39740 |0 |0 |969696|0 |9 |2 |
+ROW |144956 |2078 |39741 |0 |1 |C80000|0 |9 |0 |
+ROW |144957 |2079 |39715 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144958 |724 |27904 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144959 |1396 |32439 |0 |0 |1A7C11|0 |2 |0 |
+ROW |144960 |1396 |32437 |0 |1 |2774A4|0 |2 |0 |
+ROW |144961 |1396 |32436 |0 |2 |F63100|0 |2 |0 |
+ROW |144962 |1396 |32438 |0 |3 |A54F10|0 |2 |0 |
+ROW |144963 |2207 |42082 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144964 |2207 |42085 |2 |1 |2774A4|0 |2 |0 |
+ROW |144965 |2207 |42084 |0 |2 |F63100|1 |2 |0 |
+ROW |144966 |2207 |42081 |0 |3 |A54F10|1 |2 |0 |
+ROW |144967 |2207 |42083 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |144968 |2207 |42080 |0 |5 |6C59DC|1 |2 |0 |
+ROW |144969 |1052 |27907 |0 |0 |969696|0 |9 |2 |
+ROW |144970 |1052 |27908 |0 |1 |C80000|0 |9 |0 |
+ROW |144971 |1053 |30120 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144972 |1457 |33206 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144973 |1457 |33193 |5 |1 |2774A4|0 |2 |0 |
+ROW |144974 |1458 |33195 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144975 |1458 |33203 |5 |1 |2774A4|0 |2 |0 |
+ROW |144976 |1458 |33202 |5 |2 |F63100|0 |2 |0 |
+ROW |144977 |1459 |33200 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144978 |1459 |33194 |5 |1 |2774A4|0 |2 |0 |
+ROW |144979 |1460 |33187 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144980 |1460 |33186 |5 |1 |2774A4|0 |2 |0 |
+ROW |144981 |1460 |33204 |5 |2 |F63100|0 |2 |0 |
+ROW |144982 |1461 |33226 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144983 |1461 |33215 |5 |1 |2774A4|0 |2 |0 |
+ROW |144984 |1462 |33207 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144985 |1463 |33223 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144986 |1463 |33218 |5 |1 |2774A4|0 |2 |0 |
+ROW |144987 |1464 |33210 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144988 |1464 |33209 |5 |1 |2774A4|0 |2 |0 |
+ROW |144989 |1464 |33224 |5 |2 |F63100|0 |2 |0 |
+ROW |144990 |1465 |33249 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144991 |1465 |33236 |5 |1 |2774A4|0 |2 |0 |
+ROW |144992 |1466 |33238 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144993 |1466 |33246 |5 |1 |2774A4|0 |2 |0 |
+ROW |144994 |1466 |33245 |5 |2 |F63100|0 |2 |0 |
+ROW |144995 |1467 |33243 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144996 |1467 |33237 |5 |1 |2774A4|0 |2 |0 |
+ROW |144997 |1468 |33230 |5 |0 |1A7C11|0 |2 |0 |
+ROW |144998 |1468 |33229 |5 |1 |2774A4|0 |2 |0 |
+ROW |144999 |1468 |33247 |5 |2 |F63100|0 |2 |0 |
+ROW |145000 |1469 |33258 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145001 |1470 |33251 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145002 |1471 |33256 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145003 |1472 |33277 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145004 |1473 |33274 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145005 |1473 |33273 |5 |1 |2774A4|0 |2 |0 |
+ROW |145006 |1473 |33272 |5 |2 |F63100|0 |2 |0 |
+ROW |145007 |1474 |33270 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145008 |1475 |33269 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145009 |1476 |33261 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145010 |1476 |33275 |5 |1 |2774A4|0 |2 |0 |
+ROW |145011 |1477 |33296 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145012 |1478 |33293 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145013 |1478 |33292 |5 |1 |2774A4|0 |2 |0 |
+ROW |145014 |1478 |33291 |5 |2 |F63100|0 |2 |0 |
+ROW |145015 |1479 |33289 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145016 |1480 |33288 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145017 |1481 |33280 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145018 |1481 |33294 |5 |1 |2774A4|0 |2 |0 |
+ROW |145019 |1482 |33312 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145020 |1483 |33313 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145021 |1484 |33314 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145022 |1485 |33319 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145023 |1486 |33320 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145024 |1487 |33304 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145025 |1487 |33305 |5 |1 |2774A4|0 |2 |0 |
+ROW |145026 |2208 |42103 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145027 |2208 |42106 |2 |1 |2774A4|0 |2 |0 |
+ROW |145028 |2208 |42105 |0 |2 |F63100|1 |2 |0 |
+ROW |145029 |2208 |42102 |0 |3 |A54F10|1 |2 |0 |
+ROW |145030 |2208 |42104 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145031 |2208 |42101 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145032 |727 |27936 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145033 |1054 |27935 |2 |0 |1A7C11|0 |2 |0 |
+ROW |145034 |1054 |30122 |5 |1 |2774A4|0 |2 |0 |
+ROW |145035 |1055 |30123 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145036 |2209 |42125 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145037 |2209 |42128 |2 |1 |2774A4|0 |2 |0 |
+ROW |145038 |2209 |42127 |0 |2 |F63100|1 |2 |0 |
+ROW |145039 |2209 |42124 |0 |3 |A54F10|1 |2 |0 |
+ROW |145040 |2209 |42126 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145041 |2209 |42123 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145042 |730 |27975 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145043 |1056 |30126 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145044 |733 |28003 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145045 |1057 |30131 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145046 |2210 |42147 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145047 |2210 |42150 |2 |1 |2774A4|0 |2 |0 |
+ROW |145048 |2210 |42149 |0 |2 |F63100|1 |2 |0 |
+ROW |145049 |2210 |42146 |0 |3 |A54F10|1 |2 |0 |
+ROW |145050 |2210 |42148 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145051 |2210 |42145 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145052 |2211 |42168 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145053 |2211 |42171 |2 |1 |2774A4|0 |2 |0 |
+ROW |145054 |2211 |42170 |0 |2 |F63100|1 |2 |0 |
+ROW |145055 |2211 |42167 |0 |3 |A54F10|1 |2 |0 |
+ROW |145056 |2211 |42169 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145057 |2211 |42166 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145058 |736 |28031 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145059 |1058 |30136 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145060 |2080 |39768 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145061 |2080 |39769 |0 |1 |2774A4|0 |2 |0 |
+ROW |145062 |2080 |39770 |0 |2 |F63100|0 |2 |0 |
+ROW |145063 |2080 |39771 |0 |3 |A54F10|0 |2 |0 |
+ROW |145064 |2081 |39772 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145065 |2081 |39773 |0 |1 |2774A4|0 |2 |0 |
+ROW |145066 |2082 |39774 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145067 |2082 |39775 |0 |1 |2774A4|0 |2 |0 |
+ROW |145068 |2082 |39780 |0 |2 |F63100|0 |2 |0 |
+ROW |145069 |2083 |39777 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145070 |2083 |39778 |0 |1 |2774A4|0 |2 |0 |
+ROW |145071 |2083 |39781 |0 |2 |F63100|0 |2 |0 |
+ROW |145072 |2084 |39792 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145073 |2084 |39790 |0 |1 |2774A4|0 |2 |0 |
+ROW |145074 |2084 |39793 |0 |2 |F63100|0 |2 |0 |
+ROW |145075 |2084 |39795 |0 |3 |A54F10|0 |2 |0 |
+ROW |145076 |2084 |39796 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145077 |1701 |35553 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145078 |1701 |35556 |0 |1 |2774A4|0 |2 |0 |
+ROW |145079 |1702 |35558 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145080 |1702 |35561 |0 |1 |2774A4|0 |2 |0 |
+ROW |145081 |1703 |35562 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145082 |1704 |35563 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145083 |1705 |35592 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145084 |1705 |35584 |0 |1 |2774A4|0 |2 |0 |
+ROW |145085 |1705 |35594 |0 |2 |F63100|0 |2 |0 |
+ROW |145086 |1705 |35586 |0 |3 |A54F10|0 |2 |0 |
+ROW |145087 |1705 |35595 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145088 |1705 |35587 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145089 |1706 |35593 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145090 |1706 |35585 |0 |1 |2774A4|0 |2 |0 |
+ROW |145091 |1707 |35583 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145092 |1707 |35591 |0 |1 |2774A4|0 |2 |0 |
+ROW |145093 |1708 |35598 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145094 |1709 |35606 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145095 |1710 |35607 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145096 |1711 |35566 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145097 |1712 |35622 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145098 |1713 |35634 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145099 |1713 |35626 |0 |1 |2774A4|0 |2 |0 |
+ROW |145100 |1713 |35636 |0 |2 |F63100|0 |2 |0 |
+ROW |145101 |1713 |35628 |0 |3 |A54F10|0 |2 |0 |
+ROW |145102 |1713 |35637 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145103 |1713 |35629 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145104 |1714 |35635 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145105 |1714 |35627 |0 |1 |2774A4|0 |2 |0 |
+ROW |145106 |1715 |35625 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145107 |1715 |35633 |0 |1 |2774A4|0 |2 |0 |
+ROW |145108 |1716 |35640 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145109 |1717 |35641 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145110 |1718 |35610 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145111 |1719 |35658 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145112 |1720 |35659 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145113 |1721 |35660 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145114 |1722 |35661 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145115 |1723 |35669 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145116 |1723 |35679 |0 |1 |2774A4|0 |2 |0 |
+ROW |145117 |1723 |35670 |0 |2 |F63100|0 |2 |0 |
+ROW |145118 |1723 |35665 |0 |3 |A54F10|0 |2 |0 |
+ROW |145119 |1723 |35672 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145120 |1723 |35666 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145121 |1724 |35663 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145122 |1724 |35664 |0 |1 |2774A4|0 |2 |0 |
+ROW |145123 |1725 |35686 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145124 |1725 |35693 |0 |1 |2774A4|0 |2 |0 |
+ROW |145125 |1725 |35684 |0 |2 |F63100|0 |2 |0 |
+ROW |145126 |1725 |35691 |0 |3 |A54F10|0 |2 |0 |
+ROW |145127 |1725 |35683 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145128 |1725 |35690 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145129 |1726 |35685 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145130 |1726 |35692 |0 |1 |2774A4|0 |2 |0 |
+ROW |145131 |1727 |35694 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145132 |1727 |35687 |0 |1 |2774A4|0 |2 |0 |
+ROW |145133 |1728 |35707 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145134 |1729 |35708 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145135 |1730 |35725 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145136 |1731 |35726 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145137 |1732 |35727 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145138 |1733 |35728 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145139 |1734 |35736 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145140 |1734 |35746 |0 |1 |2774A4|0 |2 |0 |
+ROW |145141 |1734 |35737 |0 |2 |F63100|0 |2 |0 |
+ROW |145142 |1734 |35732 |0 |3 |A54F10|0 |2 |0 |
+ROW |145143 |1734 |35739 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145144 |1734 |35733 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145145 |1735 |35730 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145146 |1735 |35731 |0 |1 |2774A4|0 |2 |0 |
+ROW |145147 |1736 |35753 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145148 |1736 |35760 |0 |1 |2774A4|0 |2 |0 |
+ROW |145149 |1736 |35751 |0 |2 |F63100|0 |2 |0 |
+ROW |145150 |1736 |35758 |0 |3 |A54F10|0 |2 |0 |
+ROW |145151 |1736 |35750 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145152 |1736 |35757 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145153 |1737 |35752 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145154 |1737 |35759 |0 |1 |2774A4|0 |2 |0 |
+ROW |145155 |1738 |35761 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145156 |1738 |35754 |0 |1 |2774A4|0 |2 |0 |
+ROW |145157 |1739 |35774 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145158 |1740 |35775 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145159 |1741 |35791 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145160 |1742 |35799 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145161 |1742 |35802 |0 |1 |2774A4|0 |2 |0 |
+ROW |145162 |1743 |35804 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145163 |1743 |35807 |0 |1 |2774A4|0 |2 |0 |
+ROW |145164 |1744 |35808 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145165 |1745 |35809 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145166 |1746 |35834 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145167 |1746 |35826 |0 |1 |2774A4|0 |2 |0 |
+ROW |145168 |1746 |35836 |0 |2 |F63100|0 |2 |0 |
+ROW |145169 |1746 |35828 |0 |3 |A54F10|0 |2 |0 |
+ROW |145170 |1746 |35837 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145171 |1746 |35829 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145172 |1747 |35835 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145173 |1747 |35827 |0 |1 |2774A4|0 |2 |0 |
+ROW |145174 |1748 |35825 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145175 |1748 |35833 |0 |1 |2774A4|0 |2 |0 |
+ROW |145176 |1749 |35840 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145177 |1750 |35812 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145178 |1751 |35876 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145179 |1751 |35868 |0 |1 |2774A4|0 |2 |0 |
+ROW |145180 |1751 |35878 |0 |2 |F63100|0 |2 |0 |
+ROW |145181 |1751 |35870 |0 |3 |A54F10|0 |2 |0 |
+ROW |145182 |1751 |35879 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145183 |1751 |35871 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145184 |1752 |35877 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145185 |1752 |35869 |0 |1 |2774A4|0 |2 |0 |
+ROW |145186 |1753 |35867 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145187 |1753 |35875 |0 |1 |2774A4|0 |2 |0 |
+ROW |145188 |1754 |35882 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145189 |1755 |35890 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145190 |1756 |35891 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145191 |1757 |35850 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145192 |1758 |35920 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145193 |1758 |35912 |0 |1 |2774A4|0 |2 |0 |
+ROW |145194 |1758 |35922 |0 |2 |F63100|0 |2 |0 |
+ROW |145195 |1758 |35914 |0 |3 |A54F10|0 |2 |0 |
+ROW |145196 |1758 |35923 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145197 |1758 |35915 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145198 |1759 |35921 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145199 |1759 |35913 |0 |1 |2774A4|0 |2 |0 |
+ROW |145200 |1760 |35911 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145201 |1760 |35919 |0 |1 |2774A4|0 |2 |0 |
+ROW |145202 |1761 |35926 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145203 |1762 |35934 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145204 |1763 |35935 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145205 |1764 |35894 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145206 |1765 |35952 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145207 |1766 |35964 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145208 |1766 |35956 |0 |1 |2774A4|0 |2 |0 |
+ROW |145209 |1766 |35966 |0 |2 |F63100|0 |2 |0 |
+ROW |145210 |1766 |35958 |0 |3 |A54F10|0 |2 |0 |
+ROW |145211 |1766 |35967 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145212 |1766 |35959 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145213 |1767 |35965 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145214 |1767 |35957 |0 |1 |2774A4|0 |2 |0 |
+ROW |145215 |1768 |35955 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145216 |1768 |35963 |0 |1 |2774A4|0 |2 |0 |
+ROW |145217 |1769 |35970 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145218 |1770 |35978 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145219 |1771 |35979 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145220 |1772 |35938 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145221 |1773 |35996 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145222 |1774 |36008 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145223 |1774 |36000 |0 |1 |2774A4|0 |2 |0 |
+ROW |145224 |1774 |36010 |0 |2 |F63100|0 |2 |0 |
+ROW |145225 |1774 |36002 |0 |3 |A54F10|0 |2 |0 |
+ROW |145226 |1774 |36011 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145227 |1774 |36003 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145228 |1775 |36009 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145229 |1775 |36001 |0 |1 |2774A4|0 |2 |0 |
+ROW |145230 |1776 |35999 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145231 |1776 |36007 |0 |1 |2774A4|0 |2 |0 |
+ROW |145232 |1777 |36014 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145233 |1778 |36022 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145234 |1779 |36023 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145235 |1780 |35982 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145236 |1781 |36041 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145237 |1782 |36053 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145238 |1782 |36045 |0 |1 |2774A4|0 |2 |0 |
+ROW |145239 |1782 |36055 |0 |2 |F63100|0 |2 |0 |
+ROW |145240 |1782 |36047 |0 |3 |A54F10|0 |2 |0 |
+ROW |145241 |1782 |36056 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145242 |1782 |36048 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145243 |1783 |36054 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145244 |1783 |36046 |0 |1 |2774A4|0 |2 |0 |
+ROW |145245 |1784 |36044 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145246 |1784 |36052 |0 |1 |2774A4|0 |2 |0 |
+ROW |145247 |1785 |36059 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145248 |1786 |36067 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145249 |1787 |36068 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145250 |1788 |36026 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145251 |1789 |36086 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145252 |1790 |36098 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145253 |1790 |36090 |0 |1 |2774A4|0 |2 |0 |
+ROW |145254 |1790 |36100 |0 |2 |F63100|0 |2 |0 |
+ROW |145255 |1790 |36092 |0 |3 |A54F10|0 |2 |0 |
+ROW |145256 |1790 |36101 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145257 |1790 |36093 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145258 |1791 |36099 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145259 |1791 |36091 |0 |1 |2774A4|0 |2 |0 |
+ROW |145260 |1792 |36089 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145261 |1792 |36097 |0 |1 |2774A4|0 |2 |0 |
+ROW |145262 |1793 |36104 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145263 |1794 |36112 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145264 |1795 |36113 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145265 |1796 |36071 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145266 |1797 |36131 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145267 |1798 |36144 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145268 |1798 |36136 |0 |1 |2774A4|0 |2 |0 |
+ROW |145269 |1798 |36146 |0 |2 |F63100|0 |2 |0 |
+ROW |145270 |1798 |36138 |0 |3 |A54F10|0 |2 |0 |
+ROW |145271 |1798 |36147 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145272 |1798 |36139 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145273 |1799 |36145 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145274 |1799 |36137 |0 |1 |2774A4|0 |2 |0 |
+ROW |145275 |1800 |36135 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145276 |1800 |36143 |0 |1 |2774A4|0 |2 |0 |
+ROW |145277 |1801 |36150 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145278 |1802 |36158 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145279 |1803 |36159 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145280 |1804 |36116 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145281 |472 |22945 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145282 |472 |22946 |0 |1 |2774A4|0 |2 |0 |
+ROW |145283 |473 |22950 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145284 |473 |22948 |0 |1 |2774A4|0 |2 |0 |
+ROW |145285 |471 |22924 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145286 |471 |22920 |0 |1 |2774A4|0 |2 |0 |
+ROW |145287 |469 |22922 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145288 |469 |22923 |0 |1 |2774A4|0 |2 |0 |
+ROW |145289 |469 |22921 |0 |2 |F63100|0 |2 |0 |
+ROW |145290 |498 |23109 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145291 |498 |23112 |0 |1 |2774A4|0 |2 |0 |
+ROW |145292 |498 |23115 |0 |2 |F63100|0 |2 |0 |
+ROW |145293 |498 |23113 |0 |3 |A54F10|0 |2 |0 |
+ROW |145294 |498 |23114 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145295 |498 |23110 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145296 |540 |22942 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145297 |492 |23073 |5 |0 |00AA00|0 |2 |0 |
+ROW |145298 |492 |23074 |5 |1 |3333FF|0 |2 |0 |
+ROW |145299 |467 |22910 |0 |0 |C80000|0 |2 |2 |
+ROW |145300 |467 |22908 |0 |1 |00C800|0 |2 |0 |
+ROW |145301 |465 |22884 |0 |0 |009900|0 |2 |0 |
+ROW |145302 |465 |22880 |0 |1 |000099|0 |2 |0 |
+ROW |145303 |463 |22882 |0 |0 |009900|0 |2 |0 |
+ROW |145304 |463 |22883 |0 |1 |000099|0 |2 |0 |
+ROW |145305 |463 |22881 |0 |2 |990000|0 |2 |0 |
+ROW |145306 |462 |22886 |1 |0 |009999|0 |2 |0 |
+ROW |145307 |462 |22888 |1 |1 |990099|0 |2 |0 |
+ROW |145308 |462 |22891 |1 |2 |990000|0 |2 |0 |
+ROW |145309 |462 |22892 |1 |3 |000099|0 |2 |0 |
+ROW |145310 |462 |22885 |1 |4 |009900|0 |2 |0 |
+ROW |145311 |541 |22902 |5 |0 |00C800|0 |2 |0 |
+ROW |145312 |464 |22897 |0 |0 |AA0000|0 |2 |2 |
+ROW |145313 |464 |22895 |0 |1 |00AA00|0 |2 |0 |
+ROW |145314 |478 |22985 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145315 |478 |22986 |0 |1 |2774A4|0 |2 |0 |
+ROW |145316 |479 |22990 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145317 |479 |22988 |0 |1 |2774A4|0 |2 |0 |
+ROW |145318 |475 |22962 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145319 |475 |22963 |0 |1 |2774A4|0 |2 |0 |
+ROW |145320 |475 |22961 |0 |2 |F63100|0 |2 |0 |
+ROW |145321 |474 |22968 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145322 |474 |22971 |0 |1 |2774A4|0 |2 |0 |
+ROW |145323 |474 |22972 |0 |2 |F63100|0 |2 |0 |
+ROW |145324 |474 |22965 |0 |3 |A54F10|0 |2 |0 |
+ROW |145325 |542 |22982 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145326 |2212 |42279 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145327 |2212 |42282 |2 |1 |2774A4|0 |2 |0 |
+ROW |145328 |2212 |42281 |0 |2 |F63100|1 |2 |0 |
+ROW |145329 |2212 |42278 |0 |3 |A54F10|1 |2 |0 |
+ROW |145330 |2212 |42280 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145331 |2212 |42277 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145332 |2213 |42285 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145333 |2213 |42286 |5 |1 |2774A4|0 |2 |0 |
+ROW |145334 |2214 |42308 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145335 |2214 |42311 |5 |1 |2774A4|0 |2 |0 |
+ROW |145336 |2215 |42307 |0 |0 |1A7C11|1 |2 |0 |
+ROW |145337 |2215 |42310 |5 |1 |2774A4|0 |2 |0 |
+ROW |145338 |2216 |42290 |0 |0 |969696|0 |9 |2 |
+ROW |145339 |2216 |42291 |0 |1 |C80000|0 |9 |0 |
+ROW |145340 |2222 |42221 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145341 |2222 |42216 |0 |1 |2774A4|0 |2 |0 |
+ROW |145342 |2223 |42189 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145343 |2223 |42190 |0 |1 |2774A4|0 |2 |0 |
+ROW |145344 |2223 |42208 |0 |2 |F63100|0 |2 |0 |
+ROW |145345 |2223 |42218 |0 |3 |A54F10|0 |2 |0 |
+ROW |145346 |2223 |42206 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145347 |2223 |42225 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145348 |2223 |42207 |0 |6 |AC8C14|0 |2 |0 |
+ROW |145349 |2223 |42222 |0 |7 |611F27|0 |2 |0 |
+ROW |145350 |2223 |42223 |0 |8 |F230E0|0 |2 |0 |
+ROW |145351 |2224 |42267 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145352 |2225 |42205 |2 |0 |1A7C11|0 |2 |0 |
+ROW |145353 |2225 |42203 |5 |1 |2774A4|0 |2 |0 |
+ROW |145354 |2226 |42268 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145355 |2227 |42213 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145356 |2227 |42214 |0 |1 |2774A4|0 |2 |0 |
+ROW |145357 |2227 |42212 |0 |2 |F63100|0 |2 |0 |
+ROW |145358 |2228 |42188 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145359 |2228 |42198 |0 |1 |2774A4|0 |2 |0 |
+ROW |145360 |2229 |42209 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145361 |2229 |42217 |0 |1 |2774A4|0 |2 |0 |
+ROW |145362 |2229 |42219 |0 |2 |F63100|0 |2 |0 |
+ROW |145363 |2229 |42220 |0 |3 |A54F10|1 |2 |0 |
+ROW |145364 |2238 |42365 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145365 |2238 |42368 |2 |1 |2774A4|0 |2 |0 |
+ROW |145366 |2238 |42367 |0 |2 |F63100|1 |2 |0 |
+ROW |145367 |2238 |42364 |0 |3 |A54F10|1 |2 |0 |
+ROW |145368 |2238 |42366 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145369 |2238 |42363 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145370 |2239 |42371 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145371 |2239 |42372 |5 |1 |2774A4|0 |2 |0 |
+ROW |145372 |2240 |42379 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145373 |2240 |42382 |5 |1 |2774A4|0 |2 |0 |
+ROW |145374 |2241 |42378 |0 |0 |1A7C11|1 |2 |0 |
+ROW |145375 |2241 |42381 |5 |1 |2774A4|0 |2 |0 |
+ROW |145376 |2242 |42376 |0 |0 |969696|0 |9 |2 |
+ROW |145377 |2242 |42377 |0 |1 |C80000|0 |9 |0 |
+ROW |145378 |2243 |42353 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145379 |2243 |42348 |0 |1 |2774A4|0 |2 |0 |
+ROW |145380 |2244 |42321 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145381 |2244 |42322 |0 |1 |2774A4|0 |2 |0 |
+ROW |145382 |2244 |42339 |0 |2 |F63100|0 |2 |0 |
+ROW |145383 |2244 |42350 |0 |3 |A54F10|0 |2 |0 |
+ROW |145384 |2244 |42338 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145385 |2244 |42357 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145386 |2244 |42329 |0 |6 |AC8C14|0 |2 |0 |
+ROW |145387 |2244 |42354 |0 |7 |611F27|0 |2 |0 |
+ROW |145388 |2244 |42355 |0 |8 |F230E0|0 |2 |0 |
+ROW |145389 |2245 |42358 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145390 |2246 |42337 |2 |0 |1A7C11|0 |2 |0 |
+ROW |145391 |2246 |42335 |5 |1 |2774A4|0 |2 |0 |
+ROW |145392 |2247 |42359 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145393 |2248 |42345 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145394 |2248 |42346 |0 |1 |2774A4|0 |2 |0 |
+ROW |145395 |2248 |42344 |0 |2 |F63100|0 |2 |0 |
+ROW |145396 |2249 |42320 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145397 |2249 |42330 |0 |1 |2774A4|0 |2 |0 |
+ROW |145398 |2250 |42341 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145399 |2250 |42349 |0 |1 |2774A4|0 |2 |0 |
+ROW |145400 |2250 |42351 |0 |2 |F63100|0 |2 |0 |
+ROW |145401 |2250 |42352 |0 |3 |A54F10|1 |2 |0 |
+ROW |145402 |952 |29436 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145403 |952 |29437 |2 |1 |2774A4|0 |2 |0 |
+ROW |145404 |952 |29438 |0 |2 |F63100|1 |2 |0 |
+ROW |145405 |952 |29439 |0 |3 |A54F10|1 |2 |0 |
+ROW |145406 |952 |29441 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145407 |952 |29440 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145408 |955 |29434 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145409 |955 |29435 |5 |1 |2774A4|0 |2 |0 |
+ROW |145410 |954 |29448 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145411 |954 |29449 |5 |1 |2774A4|0 |2 |0 |
+ROW |145412 |956 |29452 |0 |0 |1A7C11|1 |2 |0 |
+ROW |145413 |956 |29453 |5 |1 |2774A4|0 |2 |0 |
+ROW |145414 |953 |29446 |0 |0 |969696|0 |9 |2 |
+ROW |145415 |953 |29432 |0 |1 |C80000|0 |9 |0 |
+ROW |145416 |960 |29405 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145417 |960 |29406 |0 |1 |2774A4|0 |2 |0 |
+ROW |145418 |959 |29426 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145419 |959 |29413 |0 |1 |2774A4|0 |2 |0 |
+ROW |145420 |959 |29411 |0 |2 |F63100|0 |2 |0 |
+ROW |145421 |959 |29410 |0 |3 |A54F10|0 |2 |0 |
+ROW |145422 |959 |29399 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145423 |959 |29409 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145424 |959 |29412 |0 |6 |AC8C14|0 |2 |0 |
+ROW |145425 |959 |29408 |0 |7 |611F27|0 |2 |0 |
+ROW |145426 |959 |29407 |0 |8 |F230E0|0 |2 |0 |
+ROW |145427 |958 |29427 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145428 |962 |29403 |2 |0 |1A7C11|0 |2 |0 |
+ROW |145429 |962 |29402 |5 |1 |2774A4|0 |2 |0 |
+ROW |145430 |961 |29396 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145431 |963 |29400 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145432 |963 |29401 |0 |1 |2774A4|0 |2 |0 |
+ROW |145433 |957 |29420 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145434 |957 |29419 |0 |1 |2774A4|0 |2 |0 |
+ROW |145435 |957 |29418 |0 |2 |F63100|0 |2 |0 |
+ROW |145436 |957 |29417 |0 |3 |A54F10|1 |2 |0 |
+ROW |145437 |2251 |42423 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145438 |2251 |42424 |0 |1 |2774A4|0 |2 |0 |
+ROW |145439 |2251 |42420 |0 |2 |F63100|0 |2 |0 |
+ROW |145440 |2251 |42419 |0 |3 |A54F10|0 |2 |0 |
+ROW |145441 |2251 |42422 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145442 |2251 |42418 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145443 |2251 |42421 |0 |6 |AC8C14|0 |2 |0 |
+ROW |145444 |2251 |42415 |0 |7 |611F27|0 |2 |0 |
+ROW |145445 |2251 |42416 |0 |8 |F230E0|0 |2 |0 |
+ROW |145446 |2252 |42442 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145447 |2253 |42427 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145448 |2253 |42430 |2 |1 |2774A4|0 |2 |0 |
+ROW |145449 |2253 |42429 |0 |2 |F63100|1 |2 |0 |
+ROW |145450 |2253 |42426 |0 |3 |A54F10|1 |2 |0 |
+ROW |145451 |2253 |42428 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145452 |2253 |42425 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145453 |2254 |42435 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145454 |2254 |42437 |5 |1 |2774A4|0 |2 |0 |
+ROW |145455 |2255 |42440 |0 |0 |969696|0 |9 |2 |
+ROW |145456 |2255 |42441 |0 |1 |C80000|0 |9 |0 |
+ROW |145457 |2256 |42400 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145458 |2256 |42405 |0 |1 |2774A4|0 |2 |0 |
+ROW |145459 |2257 |42387 |2 |0 |1A7C11|0 |2 |0 |
+ROW |145460 |2257 |42391 |5 |1 |2774A4|0 |2 |0 |
+ROW |145461 |2258 |42386 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145462 |2259 |42395 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145463 |2259 |42393 |0 |1 |2774A4|0 |2 |0 |
+ROW |145464 |2260 |42404 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145465 |2260 |42403 |0 |1 |2774A4|0 |2 |0 |
+ROW |145466 |2260 |42402 |0 |2 |F63100|0 |2 |0 |
+ROW |145467 |2260 |42401 |0 |3 |A54F10|1 |2 |0 |
+ROW |145468 |491 |23070 |0 |0 |C80000|0 |2 |2 |
+ROW |145469 |491 |23068 |0 |1 |00C800|0 |2 |0 |
+ROW |145470 |487 |23042 |0 |0 |009900|0 |2 |0 |
+ROW |145471 |487 |23043 |0 |1 |000099|0 |2 |0 |
+ROW |145472 |487 |23041 |0 |2 |990000|0 |2 |0 |
+ROW |145473 |543 |23062 |5 |0 |00C800|0 |2 |0 |
+ROW |145474 |494 |23077 |5 |0 |00AA00|0 |2 |0 |
+ROW |145475 |494 |23078 |5 |1 |3333FF|0 |2 |0 |
+ROW |145476 |493 |23075 |5 |0 |00AA00|0 |2 |0 |
+ROW |145477 |493 |23076 |5 |1 |3333FF|0 |2 |0 |
+ROW |145478 |461 |22870 |0 |0 |C80000|0 |2 |2 |
+ROW |145479 |461 |22868 |0 |1 |00C800|0 |2 |0 |
+ROW |145480 |459 |22844 |0 |0 |009900|0 |2 |0 |
+ROW |145481 |459 |22840 |0 |1 |000099|0 |2 |0 |
+ROW |145482 |457 |22842 |0 |0 |009900|0 |2 |0 |
+ROW |145483 |457 |22843 |0 |1 |000099|0 |2 |0 |
+ROW |145484 |457 |22841 |0 |2 |990000|0 |2 |0 |
+ROW |145485 |456 |22846 |1 |0 |009999|0 |2 |0 |
+ROW |145486 |456 |22848 |1 |1 |990099|0 |2 |0 |
+ROW |145487 |456 |22851 |1 |2 |990000|0 |2 |0 |
+ROW |145488 |456 |22852 |1 |3 |000099|0 |2 |0 |
+ROW |145489 |456 |22845 |1 |4 |009900|0 |2 |0 |
+ROW |145490 |544 |22862 |5 |0 |00C800|0 |2 |0 |
+ROW |145491 |458 |22857 |0 |0 |AA0000|0 |2 |2 |
+ROW |145492 |458 |22855 |0 |1 |00AA00|0 |2 |0 |
+ROW |145493 |484 |23025 |5 |0 |00AA00|0 |2 |0 |
+ROW |145494 |484 |23026 |5 |1 |3333FF|0 |2 |0 |
+ROW |145495 |485 |23030 |0 |0 |C80000|0 |2 |2 |
+ROW |145496 |485 |23028 |0 |1 |00C800|0 |2 |0 |
+ROW |145497 |483 |23004 |0 |0 |009900|0 |2 |0 |
+ROW |145498 |483 |23000 |0 |1 |000099|0 |2 |0 |
+ROW |145499 |481 |23002 |0 |0 |009900|0 |2 |0 |
+ROW |145500 |481 |23003 |0 |1 |000099|0 |2 |0 |
+ROW |145501 |481 |23001 |0 |2 |990000|0 |2 |0 |
+ROW |145502 |480 |23007 |1 |0 |999900|0 |2 |0 |
+ROW |145503 |480 |23011 |1 |1 |990000|0 |2 |0 |
+ROW |145504 |480 |23012 |1 |2 |000099|0 |2 |0 |
+ROW |145505 |480 |23005 |1 |3 |009900|0 |2 |0 |
+ROW |145506 |545 |23022 |5 |0 |00C800|0 |2 |0 |
+ROW |145507 |482 |23017 |0 |0 |AA0000|0 |2 |2 |
+ROW |145508 |482 |23015 |0 |1 |00AA00|0 |2 |0 |
+ROW |145509 |2261 |42493 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145510 |2261 |42496 |2 |1 |2774A4|0 |2 |0 |
+ROW |145511 |2261 |42495 |0 |2 |F63100|1 |2 |0 |
+ROW |145512 |2261 |42492 |0 |3 |A54F10|1 |2 |0 |
+ROW |145513 |2261 |42494 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145514 |2261 |42491 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145515 |2262 |42498 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145516 |2262 |42501 |0 |1 |2774A4|0 |2 |0 |
+ROW |145517 |2263 |42499 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145518 |2263 |42500 |5 |1 |2774A4|0 |2 |0 |
+ROW |145519 |2264 |42503 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145520 |2264 |42504 |5 |1 |2774A4|0 |2 |0 |
+ROW |145521 |2265 |42502 |0 |0 |1A7C11|1 |2 |0 |
+ROW |145522 |2265 |42497 |5 |1 |2774A4|0 |2 |0 |
+ROW |145523 |2266 |42507 |0 |0 |969696|0 |9 |2 |
+ROW |145524 |2266 |42508 |0 |1 |C80000|0 |9 |0 |
+ROW |145525 |2267 |42473 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145526 |2267 |42476 |0 |1 |2774A4|0 |2 |0 |
+ROW |145527 |2268 |42474 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145528 |2268 |42475 |0 |1 |2774A4|0 |2 |0 |
+ROW |145529 |2269 |42469 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145530 |2270 |42459 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145531 |2271 |42465 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145532 |2271 |42464 |0 |1 |2774A4|0 |2 |0 |
+ROW |145533 |2272 |42549 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145534 |2272 |42552 |2 |1 |2774A4|0 |2 |0 |
+ROW |145535 |2272 |42551 |0 |2 |F63100|1 |2 |0 |
+ROW |145536 |2272 |42548 |0 |3 |A54F10|1 |2 |0 |
+ROW |145537 |2272 |42550 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145538 |2272 |42547 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145539 |2273 |42554 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145540 |2273 |42557 |0 |1 |2774A4|0 |2 |0 |
+ROW |145541 |2274 |42555 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145542 |2274 |42556 |5 |1 |2774A4|0 |2 |0 |
+ROW |145543 |2275 |42559 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145544 |2275 |42560 |5 |1 |2774A4|0 |2 |0 |
+ROW |145545 |2276 |42558 |0 |0 |1A7C11|1 |2 |0 |
+ROW |145546 |2276 |42553 |5 |1 |2774A4|0 |2 |0 |
+ROW |145547 |2277 |42563 |0 |0 |969696|0 |9 |2 |
+ROW |145548 |2277 |42564 |0 |1 |C80000|0 |9 |0 |
+ROW |145549 |2278 |42529 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145550 |2278 |42532 |0 |1 |2774A4|0 |2 |0 |
+ROW |145551 |2279 |42530 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145552 |2279 |42531 |0 |1 |2774A4|0 |2 |0 |
+ROW |145553 |2280 |42525 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145554 |2281 |42515 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145555 |2282 |42521 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145556 |2282 |42520 |0 |1 |2774A4|0 |2 |0 |
+ROW |145557 |2283 |42585 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145558 |2283 |42588 |2 |1 |2774A4|0 |2 |0 |
+ROW |145559 |2283 |42587 |0 |2 |F63100|1 |2 |0 |
+ROW |145560 |2283 |42584 |0 |3 |A54F10|1 |2 |0 |
+ROW |145561 |2283 |42586 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145562 |2283 |42583 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145563 |2284 |42593 |0 |0 |969696|0 |9 |2 |
+ROW |145564 |2284 |42594 |0 |1 |C80000|0 |9 |0 |
+ROW |145565 |2285 |42597 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145566 |2286 |42573 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145567 |1583 |34451 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145568 |1584 |34465 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145569 |1584 |34463 |0 |1 |2774A4|0 |2 |0 |
+ROW |145570 |1585 |34466 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145571 |1585 |34462 |0 |1 |2774A4|0 |2 |0 |
+ROW |145572 |1586 |34499 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145573 |1587 |34513 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145574 |1587 |34511 |0 |1 |2774A4|0 |2 |0 |
+ROW |145575 |1588 |34514 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145576 |1588 |34510 |0 |1 |2774A4|0 |2 |0 |
+ROW |145577 |1589 |34547 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145578 |1590 |34561 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145579 |1590 |34559 |0 |1 |2774A4|0 |2 |0 |
+ROW |145580 |1591 |34562 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145581 |1591 |34558 |0 |1 |2774A4|0 |2 |0 |
+ROW |145582 |1592 |34595 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145583 |1593 |34609 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145584 |1593 |34607 |0 |1 |2774A4|0 |2 |0 |
+ROW |145585 |1594 |34610 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145586 |1594 |34606 |0 |1 |2774A4|0 |2 |0 |
+ROW |145587 |1595 |34643 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145588 |1596 |34657 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145589 |1596 |34655 |0 |1 |2774A4|0 |2 |0 |
+ROW |145590 |1597 |34658 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145591 |1597 |34654 |0 |1 |2774A4|0 |2 |0 |
+ROW |145592 |1619 |35016 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145593 |1620 |35030 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145594 |1620 |35028 |0 |1 |2774A4|0 |2 |0 |
+ROW |145595 |1621 |35031 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145596 |1621 |35027 |0 |1 |2774A4|0 |2 |0 |
+ROW |145597 |1601 |34739 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145598 |1602 |34753 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145599 |1602 |34751 |0 |1 |2774A4|0 |2 |0 |
+ROW |145600 |1603 |34754 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145601 |1603 |34750 |0 |1 |2774A4|0 |2 |0 |
+ROW |145602 |1604 |34787 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145603 |1569 |34192 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145604 |1569 |34180 |0 |1 |2774A4|0 |2 |0 |
+ROW |145605 |1570 |34194 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145606 |1570 |34190 |0 |1 |2774A4|0 |2 |0 |
+ROW |145607 |1605 |34793 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145608 |1606 |34807 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145609 |1606 |34805 |0 |1 |2774A4|0 |2 |0 |
+ROW |145610 |1607 |34808 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145611 |1607 |34804 |0 |1 |2774A4|0 |2 |0 |
+ROW |145612 |1608 |34841 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145613 |1609 |34855 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145614 |1609 |34853 |0 |1 |2774A4|0 |2 |0 |
+ROW |145615 |1610 |34856 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145616 |1610 |34852 |0 |1 |2774A4|0 |2 |0 |
+ROW |145617 |1611 |34889 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145618 |1612 |34903 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145619 |1612 |34901 |0 |1 |2774A4|0 |2 |0 |
+ROW |145620 |1613 |34904 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145621 |1613 |34900 |0 |1 |2774A4|0 |2 |0 |
+ROW |145622 |2356 |43215 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145623 |2357 |43196 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145624 |2357 |43208 |0 |1 |2774A4|0 |2 |0 |
+ROW |145625 |2357 |43217 |0 |2 |F63100|0 |2 |0 |
+ROW |145626 |2357 |43216 |0 |3 |A54F10|0 |2 |0 |
+ROW |145627 |2358 |43213 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145628 |2359 |43212 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145629 |2359 |43210 |0 |1 |2774A4|0 |2 |0 |
+ROW |145630 |2360 |43209 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145631 |2360 |43197 |0 |1 |2774A4|0 |2 |0 |
+ROW |145632 |2361 |43230 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145633 |2361 |43244 |0 |1 |2774A4|0 |2 |0 |
+ROW |145634 |2362 |43243 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145635 |2362 |43241 |0 |1 |2774A4|0 |2 |0 |
+ROW |145636 |2363 |43240 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145637 |2363 |43237 |0 |1 |2774A4|0 |2 |0 |
+ROW |145638 |2364 |43236 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145639 |2364 |43234 |0 |1 |2774A4|0 |2 |0 |
+ROW |145640 |2365 |43253 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145641 |2366 |43258 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145642 |2366 |43259 |0 |1 |2774A4|0 |2 |0 |
+ROW |145643 |2367 |43268 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145644 |2368 |43269 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145645 |2368 |43270 |0 |1 |2774A4|0 |2 |0 |
+ROW |145646 |2368 |43271 |0 |2 |F63100|0 |2 |0 |
+ROW |145647 |2368 |43272 |0 |3 |A54F10|0 |2 |0 |
+ROW |145648 |2369 |43273 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145649 |2369 |43275 |0 |1 |2774A4|0 |2 |0 |
+ROW |145650 |2370 |43276 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145651 |2370 |43278 |0 |1 |2774A4|0 |2 |0 |
+ROW |145652 |2371 |43279 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145653 |2371 |43280 |0 |1 |2774A4|0 |2 |0 |
+ROW |145654 |2372 |43329 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145655 |2373 |43310 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145656 |2373 |43322 |0 |1 |2774A4|0 |2 |0 |
+ROW |145657 |2373 |43331 |0 |2 |F63100|0 |2 |0 |
+ROW |145658 |2373 |43330 |0 |3 |A54F10|0 |2 |0 |
+ROW |145659 |2374 |43327 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145660 |2375 |43326 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145661 |2375 |43324 |0 |1 |2774A4|0 |2 |0 |
+ROW |145662 |2376 |43323 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145663 |2376 |43311 |0 |1 |2774A4|0 |2 |0 |
+ROW |145664 |2377 |43345 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145665 |2377 |43360 |0 |1 |2774A4|0 |2 |0 |
+ROW |145666 |2378 |43356 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145667 |2378 |43354 |0 |1 |2774A4|0 |2 |0 |
+ROW |145668 |2379 |43353 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145669 |2379 |43346 |0 |1 |2774A4|0 |2 |0 |
+ROW |145670 |2380 |43304 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145671 |2380 |43303 |0 |1 |2774A4|0 |2 |0 |
+ROW |145672 |2381 |43369 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145673 |2382 |43305 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145674 |2382 |43306 |0 |1 |2774A4|0 |2 |0 |
+ROW |145675 |2383 |43388 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145676 |2383 |43389 |0 |1 |2774A4|0 |2 |0 |
+ROW |145677 |2383 |43390 |0 |2 |F63100|0 |2 |0 |
+ROW |145678 |2383 |43391 |0 |3 |A54F10|0 |2 |0 |
+ROW |145679 |2384 |43392 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145680 |2384 |43394 |0 |1 |2774A4|0 |2 |0 |
+ROW |145681 |2385 |43395 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145682 |2385 |43397 |0 |1 |2774A4|0 |2 |0 |
+ROW |145683 |2386 |43309 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145684 |2386 |43308 |0 |1 |2774A4|0 |2 |0 |
+ROW |145685 |2387 |43429 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145686 |2387 |43428 |0 |1 |2774A4|0 |2 |0 |
+ROW |145687 |2387 |43427 |0 |2 |F63100|0 |2 |0 |
+ROW |145688 |2388 |43421 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145689 |2388 |43444 |0 |1 |2774A4|0 |2 |0 |
+ROW |145690 |2388 |43423 |0 |2 |F63100|0 |2 |0 |
+ROW |145691 |2389 |43433 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145692 |2389 |43443 |0 |1 |2774A4|0 |2 |0 |
+ROW |145693 |2389 |43442 |0 |2 |F63100|0 |2 |0 |
+ROW |145694 |2390 |43439 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145695 |2390 |43438 |0 |1 |2774A4|0 |2 |0 |
+ROW |145696 |2390 |43441 |0 |2 |F63100|0 |2 |0 |
+ROW |145697 |2390 |43440 |0 |3 |A54F10|0 |2 |0 |
+ROW |145698 |2391 |43435 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145699 |2391 |43434 |0 |1 |2774A4|0 |2 |0 |
+ROW |145700 |2391 |43437 |0 |2 |F63100|0 |2 |0 |
+ROW |145701 |2391 |43436 |0 |3 |A54F10|0 |2 |0 |
+ROW |145702 |2392 |43431 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145703 |2392 |43430 |0 |1 |2774A4|0 |2 |0 |
+ROW |145704 |2392 |43432 |0 |2 |F63100|0 |2 |0 |
+ROW |145705 |2392 |43422 |0 |3 |A54F10|0 |2 |0 |
+ROW |145706 |2393 |43492 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145707 |2393 |43491 |0 |1 |2774A4|0 |2 |0 |
+ROW |145708 |2393 |43490 |0 |2 |F63100|0 |2 |0 |
+ROW |145709 |2393 |43489 |0 |3 |A54F10|0 |2 |0 |
+ROW |145710 |2394 |43471 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145711 |2394 |43494 |0 |1 |2774A4|0 |2 |0 |
+ROW |145712 |2395 |43484 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145713 |2395 |43495 |0 |1 |2774A4|0 |2 |0 |
+ROW |145714 |2395 |43493 |0 |2 |F63100|0 |2 |0 |
+ROW |145715 |2396 |43488 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145716 |2396 |43487 |0 |1 |2774A4|0 |2 |0 |
+ROW |145717 |2396 |43486 |0 |2 |F63100|0 |2 |0 |
+ROW |145718 |2396 |43485 |0 |3 |A54F10|0 |2 |0 |
+ROW |145719 |2397 |43481 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145720 |2397 |43480 |0 |1 |2774A4|0 |2 |0 |
+ROW |145721 |2397 |43479 |0 |2 |F63100|0 |2 |0 |
+ROW |145722 |2397 |43478 |0 |3 |A54F10|0 |2 |0 |
+ROW |145723 |2398 |43412 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145724 |2398 |43411 |0 |1 |2774A4|0 |2 |0 |
+ROW |145725 |2398 |43410 |0 |2 |F63100|0 |2 |0 |
+ROW |145726 |2398 |43409 |0 |3 |A54F10|0 |2 |0 |
+ROW |145727 |1518 |33705 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145728 |1519 |33724 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145729 |1519 |33722 |0 |1 |2774A4|0 |2 |0 |
+ROW |145730 |1519 |33726 |0 |2 |F63100|0 |2 |0 |
+ROW |145731 |1520 |33719 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145732 |1520 |33720 |0 |1 |2774A4|0 |2 |0 |
+ROW |145733 |1520 |33721 |0 |2 |F63100|0 |2 |0 |
+ROW |145734 |1521 |33725 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145735 |1521 |33723 |0 |1 |2774A4|0 |2 |0 |
+ROW |145736 |1521 |33727 |0 |2 |F63100|0 |2 |0 |
+ROW |145737 |1522 |33730 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145738 |1523 |33734 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145739 |1523 |33732 |0 |1 |2774A4|0 |2 |0 |
+ROW |145740 |1523 |33736 |0 |2 |F63100|0 |2 |0 |
+ROW |145741 |1524 |33735 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145742 |1524 |33733 |0 |1 |2774A4|0 |2 |0 |
+ROW |145743 |1524 |33737 |0 |2 |F63100|0 |2 |0 |
+ROW |145744 |1525 |33743 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145745 |1525 |33742 |0 |1 |2774A4|0 |2 |0 |
+ROW |145746 |1525 |33738 |0 |2 |F63100|0 |2 |0 |
+ROW |145747 |1526 |33692 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145748 |1526 |33693 |0 |1 |2774A4|0 |2 |0 |
+ROW |145749 |1571 |34269 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145750 |1571 |34270 |0 |1 |2774A4|0 |2 |0 |
+ROW |145751 |1571 |34271 |0 |2 |F63100|0 |2 |0 |
+ROW |145752 |1571 |34272 |0 |3 |A54F10|0 |2 |0 |
+ROW |145753 |1572 |34311 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145754 |1572 |34301 |0 |1 |2774A4|0 |2 |0 |
+ROW |145755 |1573 |34243 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145756 |1573 |34244 |0 |1 |2774A4|0 |2 |0 |
+ROW |145757 |1573 |34246 |0 |2 |F63100|0 |2 |0 |
+ROW |145758 |1573 |34245 |0 |3 |A54F10|0 |2 |0 |
+ROW |145759 |1574 |34239 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145760 |1574 |34227 |0 |1 |2774A4|0 |2 |0 |
+ROW |145761 |1574 |34236 |0 |2 |F63100|0 |2 |0 |
+ROW |145762 |1574 |34237 |0 |3 |A54F10|0 |2 |0 |
+ROW |145763 |1575 |34253 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145764 |1575 |34252 |0 |1 |2774A4|0 |2 |0 |
+ROW |145765 |1575 |34249 |0 |2 |F63100|0 |2 |0 |
+ROW |145766 |1575 |34251 |0 |3 |A54F10|0 |2 |0 |
+ROW |145767 |1496 |33368 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145768 |1497 |33371 |1 |0 |1A7C11|0 |2 |0 |
+ROW |145769 |1497 |33371 |1 |1 |2774A4|0 |2 |0 |
+ROW |145770 |1498 |33379 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145771 |1498 |33382 |2 |1 |2774A4|0 |2 |0 |
+ROW |145772 |1498 |33381 |0 |2 |F63100|1 |2 |0 |
+ROW |145773 |1498 |33378 |0 |3 |A54F10|1 |2 |0 |
+ROW |145774 |1498 |33380 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145775 |1498 |33377 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145776 |1142 |30689 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145777 |1805 |36187 |5 |0 |1A7C11|0 |2 |0 |
+ROW |145778 |1805 |36192 |2 |1 |2774A4|0 |2 |0 |
+ROW |145779 |1805 |36190 |0 |2 |F63100|1 |2 |0 |
+ROW |145780 |1805 |36185 |0 |3 |A54F10|1 |2 |0 |
+ROW |145781 |1805 |36189 |0 |4 |FC6EA3|1 |2 |0 |
+ROW |145782 |1805 |36184 |0 |5 |6C59DC|1 |2 |0 |
+ROW |145783 |2433 |43954 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145784 |2433 |43953 |0 |1 |2774A4|0 |2 |0 |
+ROW |145785 |2433 |43952 |0 |2 |F63100|0 |2 |0 |
+ROW |145786 |2433 |43963 |0 |3 |A54F10|0 |2 |0 |
+ROW |145787 |2433 |43964 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145788 |2433 |43959 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145789 |2434 |44033 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145790 |2434 |44034 |0 |1 |2774A4|0 |2 |0 |
+ROW |145791 |2434 |44035 |0 |2 |F63100|0 |2 |0 |
+ROW |145792 |2435 |44039 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145793 |2435 |44040 |0 |1 |2774A4|0 |2 |0 |
+ROW |145794 |2435 |44041 |0 |2 |F63100|0 |2 |0 |
+ROW |145795 |2436 |44044 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145796 |2436 |44045 |0 |1 |2774A4|0 |2 |0 |
+ROW |145797 |651 |26928 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145798 |651 |26927 |0 |1 |2774A4|0 |2 |0 |
+ROW |145799 |652 |26925 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145800 |652 |26932 |0 |1 |2774A4|0 |2 |0 |
+ROW |145801 |652 |26930 |0 |2 |F63100|0 |2 |0 |
+ROW |145802 |652 |26931 |0 |3 |A54F10|0 |2 |0 |
+ROW |145803 |652 |26929 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145804 |652 |26926 |0 |5 |6C59DC|0 |2 |0 |
+ROW |145805 |653 |26933 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145806 |653 |26943 |0 |1 |2774A4|0 |2 |0 |
+ROW |145807 |653 |26935 |0 |2 |F63100|0 |2 |0 |
+ROW |145808 |653 |26936 |0 |3 |A54F10|0 |2 |0 |
+ROW |145809 |654 |26934 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145810 |654 |26939 |0 |1 |2774A4|0 |2 |0 |
+ROW |145811 |654 |26942 |0 |2 |F63100|0 |2 |0 |
+ROW |145812 |654 |26938 |0 |3 |A54F10|0 |2 |0 |
+ROW |145813 |654 |26937 |0 |4 |FC6EA3|0 |2 |0 |
+ROW |145814 |1275 |31794 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145815 |1275 |31792 |0 |1 |2774A4|0 |2 |0 |
+ROW |145816 |1275 |31800 |0 |2 |F63100|1 |2 |0 |
+ROW |145817 |1276 |36771 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145818 |1276 |33390 |0 |1 |2774A4|0 |2 |0 |
+ROW |145819 |1276 |31799 |0 |2 |F63100|0 |2 |0 |
+ROW |145820 |1276 |31797 |0 |3 |A54F10|0 |2 |0 |
+ROW |145821 |1277 |36770 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145822 |1277 |33389 |0 |1 |2774A4|0 |2 |0 |
+ROW |145823 |1277 |31795 |0 |2 |F63100|0 |2 |0 |
+ROW |145824 |1278 |36769 |0 |0 |1A7C11|0 |2 |0 |
+ROW |145825 |1278 |31793 |0 |1 |2774A4|0 |2 |0 |
+ROW |145826 |1278 |31802 |0 |2 |F63100|0 |2 |0 |
+ROW |145827 |1278 |31790 |0 |3 |A54F10|0 |2 |0 |
+ROW |145828 |1278 |31791 |0 |4 |FC6EA3|0 |2 |0 |
TABLE |hostmacro
FIELDS|hostmacroid|hostid|macro |value |description |type|automatic|
@@ -41224,6 +41241,8 @@ ROW |5702 |10540 |{$AZURE.SUBSCRIPTION_ID}
ROW |5703 |10540 |{$AZURE.TENANT_ID} | |Microsoft Azure tenant ID. |0 |0 |
ROW |5704 |10541 |{$AZURE.RESOURCE_ID} |{#ID} | |0 |0 |
ROW |5705 |10419 |{$BIGIP.LLD.OVERRIDE.PART.FILTER_LOW_SPACE_TRIGGER} |^/usr$ |Partitions that low free space trigger should ignore. |0 |0 |
+ROW |5706 |10542 |{$PROC.NAME.MATCHES} |<CHANGE VALUE> |This macro is used in the discovery of processes. It can be overridden on a host-level or on a linked template-level. |0 |0 |
+ROW |5707 |10542 |{$PROC.NAME.NOT_MATCHES} |<CHANGE VALUE> |This macro is used in the discovery of processes. It can be overridden on a host-level or on a linked template-level. |0 |0 |
TABLE |hosts_groups
FIELDS|hostgroupid|hostid|groupid|
@@ -41541,6 +41560,7 @@ ROW |563 |10534 |11 |
ROW |564 |10535 |21 |
ROW |565 |10539 |21 |
ROW |566 |10540 |21 |
+ROW |567 |10542 |8 |
TABLE |hosts_templates
FIELDS|hosttemplateid|hostid|templateid|link_type|
@@ -79376,6 +79396,15 @@ ROW |8314 |44231 |43922 |
ROW |8315 |44232 |43923 |
ROW |8316 |44233 |43924 |
ROW |8317 |44234 |43925 |
+ROW |8318 |44237 |44236 |
+ROW |8319 |44238 |44236 |
+ROW |8320 |44239 |44236 |
+ROW |8321 |44240 |44236 |
+ROW |8322 |44241 |44236 |
+ROW |8323 |44242 |44236 |
+ROW |8324 |44243 |44236 |
+ROW |8325 |44244 |44236 |
+ROW |8326 |44245 |44236 |
TABLE |host_discovery
FIELDS|hostid|parent_hostid|parent_itemid|
@@ -81829,6 +81858,9 @@ ROW |3987 |44200 |8 |{#LOCATION} |{$AZURE.MYSQ
ROW |3988 |44200 |9 |{#LOCATION} |{$AZURE.MYSQL.DB.LOCATION.NOT_MATCHES} |
ROW |3989 |44200 |8 |{#GROUP} |{$AZURE.RESOURCE_GROUP.MATCHES} |
ROW |3990 |44200 |9 |{#GROUP} |{$AZURE.RESOURCE_GROUP.NOT_MATCHES} |
+ROW |3991 |44236 |9 |{#VMEM} |-1 |
+ROW |3992 |44236 |8 |{#NAME} |{$PROC.NAME.MATCHES} |
+ROW |3993 |44236 |9 |{#NAME} |{$PROC.NAME.NOT_MATCHES} |
TABLE |item_rtdata
FIELDS|itemid|
@@ -89193,6 +89225,7 @@ ROW |7345 |23007 |scope |availability |
ROW |7346 |23008 |scope |performance |
ROW |7347 |23009 |scope |capacity |
ROW |7348 |23010 |scope |capacity |
+ROW |7349 |23011 |scope |availability |
TABLE |item_preproc
FIELDS|item_preprocid|itemid|step|type|params |error_handler|error_handler_params |
@@ -90398,7 +90431,7 @@ ROW |78935 |30834 |1 |12 |$[?(@.metric == "Read")].value.first()
ROW |78936 |30835 |1 |12 |$[?(@.event == "ReadCompressedBytes")].value.first() |2 |0 |
ROW |78937 |30835 |2 |10 | |0 | |
ROW |78938 |30836 |1 |12 |$[?(@.event == "ZooKeeperWaitMicroseconds")].value.first() |2 |0 |
-ROW |78939 |30836 |2 |1 |0.000001 |0 | |
+ROW |78939 |30836 |2 |1 |1.0E-6 |0 | |
ROW |78940 |30836 |3 |10 | |0 | |
ROW |78941 |30837 |1 |12 |$[?(@.metric == "ReplicasMaxAbsoluteDelay")].value.first() |0 | |
ROW |78942 |30838 |1 |12 |$[?(@.metric == "ReadonlyReplica")].value.first() |0 | |
@@ -92574,9 +92607,9 @@ ROW |81848 |33246 |2 |5 |^(\d+)(\.\d{1,2})?&bsn;\1\2
ROW |81849 |33248 |1 |21 |var v_range = [&bsn; [[0, 18], [12, 15, 11.5, 15.5]],&bsn; [[18, 36], [24, 30, 23, 31]],&bsn; [[36, 99], [48, 60, 46, 62]],&bsn; ],&bsn; result = [];&bsn;&bsn;for (var idx in v_range) {&bsn; if (v_range[idx][0][0] < value && value <= v_range[idx][0][1]) {&bsn; result = [{&bsn; '{#VOLTAGE.MIN.WARN}': parseInt({$VOLTAGE.MIN.WARN}) &pipe;&pipe; v_range[idx][1][0],&bsn; '{#VOLTAGE.MAX.WARN}': parseInt({$VOLTAGE.MAX.WARN}) &pipe;&pipe; v_range[idx][1][1],&bsn; '{#VOLTAGE.MIN.CRIT}': parseInt({$VOLTAGE.MIN.CRIT}) &pipe;&pipe; v_range[idx][1][2],&bsn; '{#VOLTAGE.MAX.CRIT}': parseInt({$VOLTAGE.MAX.CRIT}) &pipe;&pipe; v_range[idx][1][3],&bsn; '{#SINGLETON}': ''&bsn; }];&bsn; break;&bsn; }&bsn;}&bsn;&bsn;return JSON.stringify(result); |0 | |
ROW |81850 |33249 |1 |1 |0.003051757813 |0 | |
ROW |81851 |33249 |2 |5 |^(\d+)(\.\d{1,2})?&bsn;\1\2 |0 | |
-ROW |81852 |33250 |1 |1 |2.581787109375E-4 |0 | |
+ROW |81852 |33250 |1 |1 |0.0002581787109375 |0 | |
ROW |81853 |33250 |2 |5 |^(\d+)(\.\d{1,2})?&bsn;\1\2 |0 | |
-ROW |81854 |33251 |1 |1 |1.953125E-4 |0 | |
+ROW |81854 |33251 |1 |1 |0.0001953125 |0 | |
ROW |81855 |33251 |2 |5 |^(\d+)(\.\d{1,2})?&bsn;\1\2 |0 | |
ROW |81856 |33252 |1 |20 |1h |0 | |
ROW |81857 |33253 |1 |20 |1h |0 | |
@@ -92585,7 +92618,7 @@ ROW |81859 |33254 |1 |20 |1h
ROW |81860 |33254 |2 |21 |var FIELDS = [&bsn; 'reset',&bsn; 'overcurrent',&bsn; 'unknownFault',&bsn; 'software',&bsn; 'highVoltageDisconnect',&bsn; 'suresineHot',&bsn; 'dipSwitchChanged',&bsn; 'customSettingsEdit'&bsn;];&bsn;&bsn;var flags = parseInt(value.replace(/\x20/g, ''), 16),&bsn; result = [];&bsn;&bsn;for (var i = 0, f = 1 << 31 >>> 0, l = FIELDS.length; i < l; i++, f >>>= 1) {&bsn; if (flags & f) {&bsn; result.push(FIELDS[i]);&bsn; }&bsn;}&bsn;&bsn;return result.length ? result.join('\n') : 'No faults'; |0 | |
ROW |81861 |33255 |1 |1 |0.01 |0 | |
ROW |81862 |33257 |1 |21 |var v_range = [&bsn; [[0, 18], [12, 15, 11.5, 15.5]],&bsn; [[18, 36], [24, 30, 23, 31]],&bsn; [[36, 99], [48, 60, 46, 62]],&bsn; ],&bsn; result = [];&bsn;&bsn;for (var idx in v_range) {&bsn; if (v_range[idx][0][0] < value && value <= v_range[idx][0][1]) {&bsn; result = [{&bsn; '{#VOLTAGE.MIN.WARN}': parseInt({$VOLTAGE.MIN.WARN}) &pipe;&pipe; v_range[idx][1][0],&bsn; '{#VOLTAGE.MAX.WARN}': parseInt({$VOLTAGE.MAX.WARN}) &pipe;&pipe; v_range[idx][1][1],&bsn; '{#VOLTAGE.MIN.CRIT}': parseInt({$VOLTAGE.MIN.CRIT}) &pipe;&pipe; v_range[idx][1][2],&bsn; '{#VOLTAGE.MAX.CRIT}': parseInt({$VOLTAGE.MAX.CRIT}) &pipe;&pipe; v_range[idx][1][3],&bsn; '{#SINGLETON}': ''&bsn; }];&bsn; break;&bsn; }&bsn;}&bsn;&bsn;return JSON.stringify(result); |0 | |
-ROW |81863 |33258 |1 |1 |2.581787109375E-4 |0 | |
+ROW |81863 |33258 |1 |1 |0.0002581787109375 |0 | |
ROW |81864 |33258 |2 |5 |^(\d+)(\.\d{1,2})?&bsn;\1\2 |0 | |
ROW |81865 |33262 |1 |20 |1h |0 | |
ROW |81866 |33263 |1 |1 |0.01 |0 | |
@@ -99960,13 +99993,13 @@ ROW |90329 |42960 |2 |10 |
ROW |90330 |42961 |1 |22 |sys_host_disk_write_bytes&bsn;value&bsn; |0 | |
ROW |90331 |42961 |2 |10 | |0 | |
ROW |90332 |42962 |1 |22 |clock_offset_meannanos&bsn;value&bsn; |0 | |
-ROW |90333 |42962 |2 |1 |0.000000001 |0 | |
+ROW |90333 |42962 |2 |1 |1.0E-9 |0 | |
ROW |90334 |42963 |1 |22 |sys_cpu_sys_ns&bsn;value&bsn; |0 | |
ROW |90335 |42963 |2 |10 | |0 | |
-ROW |90336 |42963 |3 |1 |0.000000001 |0 | |
+ROW |90336 |42963 |3 |1 |1.0E-9 |0 | |
ROW |90337 |42964 |1 |22 |sys_cpu_user_ns&bsn;value&bsn; |0 | |
ROW |90338 |42964 |2 |10 | |0 | |
-ROW |90339 |42964 |3 |1 |0.000000001 |0 | |
+ROW |90339 |42964 |3 |1 |1.0E-9 |0 | |
ROW |90340 |42965 |1 |22 |sys_cpu_combined_percent_normalized&bsn;value&bsn; |0 | |
ROW |90341 |42965 |2 |1 |100 |0 | |
ROW |90342 |42966 |1 |22 |sys_fd_softlimit&bsn;value&bsn; |0 | |
@@ -99982,7 +100015,7 @@ ROW |90351 |42971 |1 |22 |sys_host_disk_read_bytes&bsn;value&bsn;
ROW |90352 |42971 |2 |10 | |0 | |
ROW |90353 |42972 |1 |22 |sys_gc_pause_ns&bsn;value&bsn; |0 | |
ROW |90354 |42972 |2 |10 | |0 | |
-ROW |90355 |42972 |3 |1 |0.000000001 |0 | |
+ROW |90355 |42972 |3 |1 |1.0E-9 |0 | |
ROW |90356 |42973 |1 |22 |security_certificate_expiration_node&bsn;value&bsn; |1 | |
ROW |90357 |42973 |2 |20 |6h |0 | |
ROW |90358 |42974 |1 |22 |sys_gc_count&bsn;value&bsn; |0 | |
@@ -100393,7 +100426,7 @@ ROW |90782 |43228 |2 |20 |1d
ROW |90783 |43229 |1 |12 |$.['vendor'] |0 | |
ROW |90784 |43229 |2 |20 |1d |0 | |
ROW |90785 |43230 |1 |12 |$.['avg-read-rsp-time'] |0 | |
-ROW |90786 |43230 |2 |1 |0.000001 |0 | |
+ROW |90786 |43230 |2 |1 |1.0E-6 |0 | |
ROW |90787 |43231 |1 |12 |$.['raidtype-numeric'] |0 | |
ROW |90788 |43231 |2 |20 |1d |0 | |
ROW |90789 |43232 |1 |12 |$.['health-numeric'] |2 |4 |
@@ -100411,7 +100444,7 @@ ROW |90800 |43236 |3 |1 |512
ROW |90801 |43237 |1 |12 |$.['number-of-writes'] |0 | |
ROW |90802 |43237 |2 |10 | |0 | |
ROW |90803 |43238 |1 |12 |$.['avg-rsp-time'] |0 | |
-ROW |90804 |43238 |2 |1 |0.000001 |0 | |
+ROW |90804 |43238 |2 |1 |1.0E-6 |0 | |
ROW |90805 |43239 |1 |12 |$.['iops'] |0 | |
ROW |90806 |43240 |1 |12 |$.['number-of-reads'] |0 | |
ROW |90807 |43240 |2 |10 | |0 | |
@@ -100421,7 +100454,7 @@ ROW |90810 |43242 |1 |12 |$.['bytes-per-second-numeric']
ROW |90811 |43243 |1 |12 |$.['data-read-numeric'] |0 | |
ROW |90812 |43243 |2 |10 | |0 | |
ROW |90813 |43244 |1 |12 |$.['avg-write-rsp-time'] |0 | |
-ROW |90814 |43244 |2 |1 |0.000001 |0 | |
+ROW |90814 |43244 |2 |1 |1.0E-6 |0 | |
ROW |90815 |43245 |1 |12 |$.['status-numeric'] |0 | |
ROW |90816 |43245 |2 |20 |1h |0 | |
ROW |90817 |43246 |1 |12 |$.['health-numeric'] |2 |4 |
@@ -100588,7 +100621,7 @@ ROW |90997 |43343 |2 |20 |1d
ROW |90998 |43344 |1 |12 |$.['vendor'] |0 | |
ROW |90999 |43344 |2 |20 |1d |0 | |
ROW |91000 |43345 |1 |12 |$.['avg-read-rsp-time'] |0 | |
-ROW |91001 |43345 |2 |1 |0.000001 |0 | |
+ROW |91001 |43345 |2 |1 |1.0E-6 |0 | |
ROW |91002 |43346 |1 |12 |$.['number-of-writes'] |0 | |
ROW |91003 |43346 |2 |10 | |0 | |
ROW |91004 |43347 |1 |12 |$.['health-numeric'] |2 |4 |
@@ -100601,7 +100634,7 @@ ROW |91010 |43350 |1 |12 |$.['raidtype-numeric']
ROW |91011 |43350 |2 |20 |1d |0 | |
ROW |91012 |43351 |1 |12 |$.['iops'] |0 | |
ROW |91013 |43352 |1 |12 |$.['avg-rsp-time'] |0 | |
-ROW |91014 |43352 |2 |1 |0.000001 |0 | |
+ROW |91014 |43352 |2 |1 |1.0E-6 |0 | |
ROW |91015 |43353 |1 |12 |$.['number-of-reads'] |0 | |
ROW |91016 |43353 |2 |10 | |0 | |
ROW |91017 |43354 |1 |12 |$.['data-written-numeric'] |0 | |
@@ -100616,7 +100649,7 @@ ROW |91025 |43358 |2 |20 |1h
ROW |91026 |43359 |1 |12 |$.['freespace-numeric'] |0 | |
ROW |91027 |43359 |2 |20 |1h |0 | |
ROW |91028 |43360 |1 |12 |$.['avg-write-rsp-time'] |0 | |
-ROW |91029 |43360 |2 |1 |0.000001 |0 | |
+ROW |91029 |43360 |2 |1 |1.0E-6 |0 | |
ROW |91030 |43361 |1 |12 |$.['status-numeric'] |0 | |
ROW |91031 |43361 |2 |20 |1h |0 | |
ROW |91032 |43362 |1 |12 |$.['health-numeric'] |2 |4 |
@@ -102359,6 +102392,16 @@ ROW |92769 |44231 |1 |12 |$.members[?(@.name == "{#NAME}")].first()
ROW |92770 |44232 |1 |12 |$.members[?(@.name == "{#NAME}")].first() |0 | |
ROW |92771 |44233 |1 |12 |$.members[?(@.name == "{#NAME}")].first() |0 | |
ROW |92772 |44234 |1 |12 |$.members[?(@.name == "{#NAME}")].first() |0 | |
+ROW |92773 |44237 |1 |12 |$.[?(@["name"]=="{#NAME}")].first() |2 |Failed to retrieve process {#NAME} data |
+ROW |92774 |44238 |1 |12 |$.lck |1 | |
+ROW |92775 |44239 |1 |12 |$.processes |2 |0 |
+ROW |92776 |44239 |2 |20 |1h |0 | |
+ROW |92777 |44240 |1 |12 |$.page_faults |1 | |
+ROW |92778 |44241 |1 |12 |$.pmem |1 | |
+ROW |92779 |44242 |1 |12 |$.rss |1 | |
+ROW |92780 |44243 |1 |12 |$.swap |1 | |
+ROW |92781 |44244 |1 |12 |$.threads |1 | |
+ROW |92782 |44245 |1 |12 |$.vsize |1 | |
TABLE |sysmap_shape
FIELDS|sysmap_shapeid|sysmapid|type|x |y |width|height|text |font|font_size|font_color|text_halign|text_valign|border_type|border_width|border_color|background_color|zindex|
@@ -102602,6 +102645,8 @@ ROW |279 |44200 |{#NAME} |$.name
ROW |280 |44200 |{#SIZE} |$.sku.name |
ROW |281 |44200 |{#TYPE} |$.type |
ROW |282 |44200 |{#VERSION} |$.properties.version |
+ROW |283 |44236 |{#NAME} |$.name |
+ROW |284 |44236 |{#VMEM} |$.vsize |
TABLE |host_tag
FIELDS|hosttagid|hostid|tag |value |automatic|
@@ -103300,612 +103345,612 @@ ROW |699 |10541 |version |{#VERSION} |0 |
TABLE |lld_override
FIELDS|lld_overrideid|itemid|name |step|evaltype|formula|stop|
-ROW |2680 |43134 |aggregated status |1 |0 | |0 |
-ROW |2681 |43134 |checks |2 |0 | |0 |
-ROW |2682 |30961 |trigger |1 |0 | |0 |
-ROW |2683 |30193 |Discard HTTP status codes |1 |0 | |0 |
-ROW |2684 |30194 |Discard HTTP status codes |1 |0 | |0 |
-ROW |2685 |30195 |Discard HTTP status codes |1 |0 | |0 |
-ROW |2686 |30236 |Discard HTTP status codes |1 |0 | |0 |
-ROW |2687 |30237 |Discard HTTP status codes |1 |0 | |0 |
-ROW |2688 |30238 |Discard HTTP status codes |1 |0 | |0 |
-ROW |2689 |39854 |bucket item |1 |0 | |0 |
-ROW |2690 |39854 |total item |2 |0 | |0 |
-ROW |2691 |39859 |bucket item |1 |0 | |0 |
-ROW |2692 |39859 |total item |2 |0 | |0 |
-ROW |2693 |39889 |bucket item |1 |0 | |0 |
-ROW |2694 |39889 |total item |2 |0 | |0 |
-ROW |2695 |39920 |bucket item |1 |0 | |0 |
-ROW |2696 |39920 |total item |2 |0 | |0 |
-ROW |2697 |40000 |bucket item |1 |0 | |0 |
-ROW |2698 |40000 |total item |2 |0 | |0 |
-ROW |2699 |40001 |bucket item |1 |0 | |0 |
-ROW |2700 |40001 |total item |2 |0 | |0 |
-ROW |2701 |40002 |bucket item |1 |0 | |0 |
-ROW |2702 |40002 |total item |2 |0 | |0 |
-ROW |2703 |33521 |trigger disabled non main channels |1 |0 | |0 |
-ROW |2704 |44200 |Flexible server |1 |0 | |0 |
-ROW |2705 |44200 |Single server |2 |0 | |0 |
-ROW |2706 |33810 |Arbiter metrics |2 |0 | |0 |
-ROW |2707 |33810 |Primary metrics |1 |0 | |0 |
-ROW |2708 |34346 |Too many missed regions trigger |1 |0 | |0 |
-ROW |2709 |34346 |Unresponsive peers trigger |2 |0 | |0 |
-ROW |2710 |34403 |Failed GC-related operations trigger |1 |0 | |0 |
-ROW |2711 |34443 |Too many unreachable messages trigger |1 |0 | |0 |
-ROW |2712 |33658 |Bad_Block_Rate |9 |0 | |0 |
-ROW |2713 |33658 |Not NVMe |2 |0 | |0 |
-ROW |2714 |33658 |Power_Cycle_Count |6 |0 | |0 |
-ROW |2715 |33658 |Program_Fail_Count_Chip |10 |0 | |0 |
-ROW |2716 |33658 |Raw_Read_Error_Rate |3 |0 | |0 |
-ROW |2717 |33658 |Reallocated_Sector_Ct |11 |0 | |0 |
-ROW |2718 |33658 |Reported_Uncorrect |7 |0 | |0 |
-ROW |2719 |33658 |Seek_Error_Rate |8 |0 | |0 |
-ROW |2720 |33658 |Self-test |1 |0 | |0 |
-ROW |2721 |33658 |Spin_Up_Time |4 |0 | |0 |
-ROW |2722 |33658 |Start_Stop_Count |5 |0 | |0 |
-ROW |2723 |33670 |Bad_Block_Rate |9 |0 | |0 |
-ROW |2724 |33670 |Not NVMe |2 |0 | |0 |
-ROW |2725 |33670 |Power_Cycle_Count |6 |0 | |0 |
-ROW |2726 |33670 |Program_Fail_Count_Chip |10 |0 | |0 |
-ROW |2727 |33670 |Raw_Read_Error_Rate |3 |0 | |0 |
-ROW |2728 |33670 |Reallocated_Sector_Ct |11 |0 | |0 |
-ROW |2729 |33670 |Reported_Uncorrect |7 |0 | |0 |
-ROW |2730 |33670 |Seek_Error_Rate |8 |0 | |0 |
-ROW |2731 |33670 |Self-test |1 |0 | |0 |
-ROW |2732 |33670 |Spin_Up_Time |4 |0 | |0 |
-ROW |2733 |33670 |Start_Stop_Count |5 |0 | |0 |
-ROW |2734 |28306 |trigger THRESHOLD_HI_CRIT |4 |0 | |0 |
-ROW |2735 |28306 |trigger THRESHOLD_HI_WARN |3 |0 | |0 |
-ROW |2736 |28306 |trigger THRESHOLD_LO_CRIT |2 |0 | |0 |
-ROW |2737 |28306 |trigger THRESHOLD_LO_WARN |1 |0 | |0 |
-ROW |2738 |28307 |trigger THRESHOLD_HI_CRIT |4 |0 | |0 |
-ROW |2739 |28307 |trigger THRESHOLD_HI_WARN |3 |0 | |0 |
-ROW |2740 |28307 |trigger THRESHOLD_LO_CRIT |2 |0 | |0 |
-ROW |2741 |28307 |trigger THRESHOLD_LO_WARN |1 |0 | |0 |
-ROW |2742 |33182 |trigger THRESHOLD_HI_CRIT |4 |0 | |0 |
-ROW |2743 |33182 |trigger THRESHOLD_HI_WARN |3 |0 | |0 |
-ROW |2744 |33182 |trigger THRESHOLD_LO_CRIT |2 |0 | |0 |
-ROW |2745 |33182 |trigger THRESHOLD_LO_WARN |1 |0 | |0 |
-ROW |2746 |35366 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2747 |35432 |Skip trigger for defined filesystems |1 |0 | |0 |
-ROW |2748 |35542 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2749 |35543 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2750 |35575 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2751 |35619 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2752 |35653 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2753 |35654 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2754 |35720 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2755 |35721 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2756 |35787 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2757 |35788 |Trigger disabled |1 |0 | |0 |
-ROW |2758 |35788 |Trigger enabled |2 |0 | |0 |
-ROW |2759 |35820 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2760 |35859 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2761 |35903 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2762 |35947 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2763 |35991 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2764 |36036 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2765 |36081 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2766 |36126 |Don't create triggers for matching interface|1 |0 | |0 |
-ROW |2767 |34478 |Temp |1 |0 | |0 |
-ROW |2768 |34479 |Temp |1 |0 | |0 |
-ROW |2769 |34526 |Temp |1 |0 | |0 |
-ROW |2770 |34527 |Temp |1 |0 | |0 |
-ROW |2771 |34574 |Temp |1 |0 | |0 |
-ROW |2772 |34575 |Temp |1 |0 | |0 |
-ROW |2773 |34622 |Temp |1 |0 | |0 |
-ROW |2774 |34623 |Temp |1 |0 | |0 |
-ROW |2775 |34670 |Temp |1 |0 | |0 |
-ROW |2776 |34671 |Temp |1 |0 | |0 |
-ROW |2777 |35043 |Temp |1 |0 | |0 |
-ROW |2778 |35044 |Temp |1 |0 | |0 |
-ROW |2779 |34766 |Temp |1 |0 | |0 |
-ROW |2780 |34767 |Temp |1 |0 | |0 |
-ROW |2781 |34209 |Temp |1 |0 | |0 |
-ROW |2782 |34210 |Temp |1 |0 | |0 |
-ROW |2783 |34820 |Temp |1 |0 | |0 |
-ROW |2784 |34821 |Temp |1 |0 | |0 |
-ROW |2785 |34868 |Temp |1 |0 | |0 |
-ROW |2786 |34869 |Temp |1 |0 | |0 |
-ROW |2787 |34916 |Temp |1 |0 | |0 |
-ROW |2788 |34917 |Temp |1 |0 | |0 |
-ROW |2789 |43185 |SSD life left |1 |0 | |0 |
-ROW |2790 |43292 |SSD life left |1 |0 | |0 |
-ROW |2791 |33354 |Do not discover aggregate metrics |1 |0 | |0 |
-ROW |2792 |30687 |trigger SENSOR_HI_CRIT |5 |0 | |0 |
-ROW |2793 |30687 |trigger SENSOR_HI_DISAST |6 |0 | |0 |
-ROW |2794 |30687 |trigger SENSOR_HI_WARN |4 |0 | |0 |
-ROW |2795 |30687 |trigger SENSOR_LO_CRIT |2 |0 | |0 |
-ROW |2796 |30687 |trigger SENSOR_LO_DISAST |3 |0 | |0 |
-ROW |2797 |30687 |trigger SENSOR_LO_WARN |1 |0 | |0 |
+ROW |2798 |43134 |aggregated status |1 |0 | |0 |
+ROW |2799 |43134 |checks |2 |0 | |0 |
+ROW |2800 |30961 |trigger |1 |0 | |0 |
+ROW |2801 |30193 |Discard HTTP status codes |1 |0 | |0 |
+ROW |2802 |30194 |Discard HTTP status codes |1 |0 | |0 |
+ROW |2803 |30195 |Discard HTTP status codes |1 |0 | |0 |
+ROW |2804 |30236 |Discard HTTP status codes |1 |0 | |0 |
+ROW |2805 |30237 |Discard HTTP status codes |1 |0 | |0 |
+ROW |2806 |30238 |Discard HTTP status codes |1 |0 | |0 |
+ROW |2807 |39854 |bucket item |1 |0 | |0 |
+ROW |2808 |39854 |total item |2 |0 | |0 |
+ROW |2809 |39859 |bucket item |1 |0 | |0 |
+ROW |2810 |39859 |total item |2 |0 | |0 |
+ROW |2811 |39889 |bucket item |1 |0 | |0 |
+ROW |2812 |39889 |total item |2 |0 | |0 |
+ROW |2813 |39920 |bucket item |1 |0 | |0 |
+ROW |2814 |39920 |total item |2 |0 | |0 |
+ROW |2815 |40000 |bucket item |1 |0 | |0 |
+ROW |2816 |40000 |total item |2 |0 | |0 |
+ROW |2817 |40001 |bucket item |1 |0 | |0 |
+ROW |2818 |40001 |total item |2 |0 | |0 |
+ROW |2819 |40002 |bucket item |1 |0 | |0 |
+ROW |2820 |40002 |total item |2 |0 | |0 |
+ROW |2821 |33521 |trigger disabled non main channels |1 |0 | |0 |
+ROW |2822 |44200 |Flexible server |1 |0 | |0 |
+ROW |2823 |44200 |Single server |2 |0 | |0 |
+ROW |2824 |33810 |Arbiter metrics |2 |0 | |0 |
+ROW |2825 |33810 |Primary metrics |1 |0 | |0 |
+ROW |2826 |34346 |Too many missed regions trigger |1 |0 | |0 |
+ROW |2827 |34346 |Unresponsive peers trigger |2 |0 | |0 |
+ROW |2828 |34403 |Failed GC-related operations trigger |1 |0 | |0 |
+ROW |2829 |34443 |Too many unreachable messages trigger |1 |0 | |0 |
+ROW |2830 |33658 |Bad_Block_Rate |9 |0 | |0 |
+ROW |2831 |33658 |Not NVMe |2 |0 | |0 |
+ROW |2832 |33658 |Power_Cycle_Count |6 |0 | |0 |
+ROW |2833 |33658 |Program_Fail_Count_Chip |10 |0 | |0 |
+ROW |2834 |33658 |Raw_Read_Error_Rate |3 |0 | |0 |
+ROW |2835 |33658 |Reallocated_Sector_Ct |11 |0 | |0 |
+ROW |2836 |33658 |Reported_Uncorrect |7 |0 | |0 |
+ROW |2837 |33658 |Seek_Error_Rate |8 |0 | |0 |
+ROW |2838 |33658 |Self-test |1 |0 | |0 |
+ROW |2839 |33658 |Spin_Up_Time |4 |0 | |0 |
+ROW |2840 |33658 |Start_Stop_Count |5 |0 | |0 |
+ROW |2841 |33670 |Bad_Block_Rate |9 |0 | |0 |
+ROW |2842 |33670 |Not NVMe |2 |0 | |0 |
+ROW |2843 |33670 |Power_Cycle_Count |6 |0 | |0 |
+ROW |2844 |33670 |Program_Fail_Count_Chip |10 |0 | |0 |
+ROW |2845 |33670 |Raw_Read_Error_Rate |3 |0 | |0 |
+ROW |2846 |33670 |Reallocated_Sector_Ct |11 |0 | |0 |
+ROW |2847 |33670 |Reported_Uncorrect |7 |0 | |0 |
+ROW |2848 |33670 |Seek_Error_Rate |8 |0 | |0 |
+ROW |2849 |33670 |Self-test |1 |0 | |0 |
+ROW |2850 |33670 |Spin_Up_Time |4 |0 | |0 |
+ROW |2851 |33670 |Start_Stop_Count |5 |0 | |0 |
+ROW |2852 |28306 |trigger THRESHOLD_HI_CRIT |4 |0 | |0 |
+ROW |2853 |28306 |trigger THRESHOLD_HI_WARN |3 |0 | |0 |
+ROW |2854 |28306 |trigger THRESHOLD_LO_CRIT |2 |0 | |0 |
+ROW |2855 |28306 |trigger THRESHOLD_LO_WARN |1 |0 | |0 |
+ROW |2856 |28307 |trigger THRESHOLD_HI_CRIT |4 |0 | |0 |
+ROW |2857 |28307 |trigger THRESHOLD_HI_WARN |3 |0 | |0 |
+ROW |2858 |28307 |trigger THRESHOLD_LO_CRIT |2 |0 | |0 |
+ROW |2859 |28307 |trigger THRESHOLD_LO_WARN |1 |0 | |0 |
+ROW |2860 |33182 |trigger THRESHOLD_HI_CRIT |4 |0 | |0 |
+ROW |2861 |33182 |trigger THRESHOLD_HI_WARN |3 |0 | |0 |
+ROW |2862 |33182 |trigger THRESHOLD_LO_CRIT |2 |0 | |0 |
+ROW |2863 |33182 |trigger THRESHOLD_LO_WARN |1 |0 | |0 |
+ROW |2864 |35366 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2865 |35432 |Skip trigger for defined filesystems |1 |0 | |0 |
+ROW |2866 |35542 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2867 |35543 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2868 |35575 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2869 |35619 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2870 |35653 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2871 |35654 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2872 |35720 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2873 |35721 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2874 |35787 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2875 |35788 |Trigger disabled |1 |0 | |0 |
+ROW |2876 |35788 |Trigger enabled |2 |0 | |0 |
+ROW |2877 |35820 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2878 |35859 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2879 |35903 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2880 |35947 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2881 |35991 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2882 |36036 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2883 |36081 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2884 |36126 |Don't create triggers for matching interface|1 |0 | |0 |
+ROW |2885 |34478 |Temp |1 |0 | |0 |
+ROW |2886 |34479 |Temp |1 |0 | |0 |
+ROW |2887 |34526 |Temp |1 |0 | |0 |
+ROW |2888 |34527 |Temp |1 |0 | |0 |
+ROW |2889 |34574 |Temp |1 |0 | |0 |
+ROW |2890 |34575 |Temp |1 |0 | |0 |
+ROW |2891 |34622 |Temp |1 |0 | |0 |
+ROW |2892 |34623 |Temp |1 |0 | |0 |
+ROW |2893 |34670 |Temp |1 |0 | |0 |
+ROW |2894 |34671 |Temp |1 |0 | |0 |
+ROW |2895 |35043 |Temp |1 |0 | |0 |
+ROW |2896 |35044 |Temp |1 |0 | |0 |
+ROW |2897 |34766 |Temp |1 |0 | |0 |
+ROW |2898 |34767 |Temp |1 |0 | |0 |
+ROW |2899 |34209 |Temp |1 |0 | |0 |
+ROW |2900 |34210 |Temp |1 |0 | |0 |
+ROW |2901 |34820 |Temp |1 |0 | |0 |
+ROW |2902 |34821 |Temp |1 |0 | |0 |
+ROW |2903 |34868 |Temp |1 |0 | |0 |
+ROW |2904 |34869 |Temp |1 |0 | |0 |
+ROW |2905 |34916 |Temp |1 |0 | |0 |
+ROW |2906 |34917 |Temp |1 |0 | |0 |
+ROW |2907 |43185 |SSD life left |1 |0 | |0 |
+ROW |2908 |43292 |SSD life left |1 |0 | |0 |
+ROW |2909 |33354 |Do not discover aggregate metrics |1 |0 | |0 |
+ROW |2910 |30687 |trigger SENSOR_HI_CRIT |5 |0 | |0 |
+ROW |2911 |30687 |trigger SENSOR_HI_DISAST |6 |0 | |0 |
+ROW |2912 |30687 |trigger SENSOR_HI_WARN |4 |0 | |0 |
+ROW |2913 |30687 |trigger SENSOR_LO_CRIT |2 |0 | |0 |
+ROW |2914 |30687 |trigger SENSOR_LO_DISAST |3 |0 | |0 |
+ROW |2915 |30687 |trigger SENSOR_LO_WARN |1 |0 | |0 |
TABLE |lld_override_condition
FIELDS|lld_override_conditionid|lld_overrideid|operator|macro |value |
-ROW |2467 |2680 |8 |{#TYPE} |aggregated_status |
-ROW |2468 |2681 |8 |{#TYPE} |service_check |
-ROW |2469 |2682 |8 |{#GRPC.CODE} |{$ETCD.GRPC_CODE.TRIGGER.MATCHES} |
-ROW |2470 |2683 |8 |{#MODE} |tcp |
-ROW |2471 |2684 |8 |{#MODE} |tcp |
-ROW |2472 |2685 |8 |{#MODE} |tcp |
-ROW |2473 |2686 |8 |{#MODE} |tcp |
-ROW |2474 |2687 |8 |{#MODE} |tcp |
-ROW |2475 |2688 |8 |{#MODE} |tcp |
-ROW |2476 |2689 |8 |{#TYPE} |buckets |
-ROW |2477 |2690 |8 |{#TYPE} |totals |
-ROW |2478 |2691 |8 |{#TYPE} |buckets |
-ROW |2479 |2692 |8 |{#TYPE} |totals |
-ROW |2480 |2693 |8 |{#TYPE} |buckets |
-ROW |2481 |2694 |8 |{#TYPE} |totals |
-ROW |2482 |2695 |8 |{#TYPE} |buckets |
-ROW |2483 |2696 |8 |{#TYPE} |totals |
-ROW |2484 |2697 |8 |{#TYPE} |buckets |
-ROW |2485 |2698 |8 |{#TYPE} |totals |
-ROW |2486 |2699 |8 |{#TYPE} |buckets |
-ROW |2487 |2700 |8 |{#TYPE} |totals |
-ROW |2488 |2701 |8 |{#TYPE} |buckets |
-ROW |2489 |2702 |8 |{#TYPE} |totals |
-ROW |2490 |2703 |9 |{#CHANNEL_ID} |{$HIKVISION_MAIN_CHANNEL_ID} |
-ROW |2491 |2704 |8 |{#TYPE} |Microsoft.DBforMySQL/flexibleServers |
-ROW |2492 |2705 |8 |{#TYPE} |Microsoft.DBforMySQL/servers |
-ROW |2493 |2706 |8 |{#NODE_STATE} |7 |
-ROW |2494 |2707 |8 |{#NODE_STATE} |1 |
-ROW |2495 |2708 |8 |{#TYPE} |miss_peer_region_count |
-ROW |2496 |2709 |8 |{#TYPE} |down_peer_region_count |
-ROW |2497 |2710 |8 |{#TYPE} |failed |
-ROW |2498 |2711 |8 |{#TYPE} |unreachable |
-ROW |2499 |2712 |8 |{#ATTRIBUTES} |Bad_Block_Rate |
-ROW |2500 |2713 |9 |{#DISKTYPE} |nvme |
-ROW |2501 |2714 |8 |{#ATTRIBUTES} |Power_Cycle_Count |
-ROW |2502 |2715 |8 |{#ATTRIBUTES} |Program_Fail_Count_Chip |
-ROW |2503 |2716 |8 |{#ATTRIBUTES} |Raw_Read_Error_Rate |
-ROW |2504 |2717 |8 |{#ATTRIBUTES} |Reallocated_Sector_Ct |
-ROW |2505 |2718 |8 |{#ATTRIBUTES} |Reported_Uncorrect |
-ROW |2506 |2719 |8 |{#ATTRIBUTES} |Seek_Error_Rate |
-ROW |2507 |2720 |8 |{#DISKTYPE} |nvme |
-ROW |2508 |2721 |8 |{#ATTRIBUTES} |Spin_Up_Time |
-ROW |2509 |2722 |8 |{#ATTRIBUTES} |Start_Stop_Count |
-ROW |2510 |2723 |8 |{#ATTRIBUTES} |Bad_Block_Rate |
-ROW |2511 |2724 |9 |{#DISKTYPE} |nvme |
-ROW |2512 |2725 |8 |{#ATTRIBUTES} |Power_Cycle_Count |
-ROW |2513 |2726 |8 |{#ATTRIBUTES} |Program_Fail_Count_Chip |
-ROW |2514 |2727 |8 |{#ATTRIBUTES} |Raw_Read_Error_Rate |
-ROW |2515 |2728 |8 |{#ATTRIBUTES} |Reallocated_Sector_Ct |
-ROW |2516 |2729 |8 |{#ATTRIBUTES} |Reported_Uncorrect |
-ROW |2517 |2730 |8 |{#ATTRIBUTES} |Seek_Error_Rate |
-ROW |2518 |2731 |8 |{#DISKTYPE} |nvme |
-ROW |2519 |2732 |8 |{#ATTRIBUTES} |Spin_Up_Time |
-ROW |2520 |2733 |8 |{#ATTRIBUTES} |Start_Stop_Count |
-ROW |2521 |2734 |8 |{#THRESHOLD_HI_CRIT} |^$ |
-ROW |2522 |2735 |8 |{#THRESHOLD_HI_WARN} |^$ |
-ROW |2523 |2736 |8 |{#THRESHOLD_LO_CRIT} |^$ |
-ROW |2524 |2737 |8 |{#THRESHOLD_LO_WARN} |^$ |
-ROW |2525 |2738 |8 |{#THRESHOLD_HI_CRIT} |^$ |
-ROW |2526 |2739 |8 |{#THRESHOLD_HI_WARN} |^$ |
-ROW |2527 |2740 |8 |{#THRESHOLD_LO_CRIT} |^$ |
-ROW |2528 |2741 |8 |{#THRESHOLD_LO_WARN} |^$ |
-ROW |2529 |2742 |8 |{#THRESHOLD_HI_CRIT} |^$ |
-ROW |2530 |2743 |8 |{#THRESHOLD_HI_WARN} |^$ |
-ROW |2531 |2744 |8 |{#THRESHOLD_LO_CRIT} |^$ |
-ROW |2532 |2745 |8 |{#THRESHOLD_LO_WARN} |^$ |
-ROW |2533 |2746 |9 |{#CISCO.IF.NAME} |{$CISCO.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2534 |2747 |8 |{#PART.NAME} |{$BIGIP.LLD.OVERRIDE.PART.FILTER_LOW_SPACE_TRIGGER}|
-ROW |2535 |2748 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2536 |2749 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2537 |2750 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2538 |2751 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2539 |2752 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2540 |2753 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2541 |2754 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2542 |2755 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2543 |2756 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2544 |2757 |8 |{#ZYXEL.IF.NAME} |.* |
-ROW |2545 |2758 |8 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2546 |2759 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2547 |2760 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2548 |2761 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2549 |2762 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2550 |2763 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2551 |2764 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2552 |2765 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2553 |2766 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
-ROW |2554 |2767 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2555 |2768 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2556 |2769 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2557 |2770 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2558 |2771 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2559 |2772 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2560 |2773 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2561 |2774 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2562 |2775 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2563 |2776 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2564 |2777 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2565 |2778 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2566 |2779 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2567 |2780 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2568 |2781 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2569 |2782 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2570 |2783 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2571 |2784 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2572 |2785 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2573 |2786 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2574 |2787 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
-ROW |2575 |2788 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
-ROW |2576 |2789 |8 |{#TYPE} |8 |
-ROW |2577 |2790 |8 |{#TYPE} |8 |
-ROW |2578 |2791 |8 |{#FSTYPE} |3&pipe;4 |
+ROW |2579 |2798 |8 |{#TYPE} |aggregated_status |
+ROW |2580 |2799 |8 |{#TYPE} |service_check |
+ROW |2581 |2800 |8 |{#GRPC.CODE} |{$ETCD.GRPC_CODE.TRIGGER.MATCHES} |
+ROW |2582 |2801 |8 |{#MODE} |tcp |
+ROW |2583 |2802 |8 |{#MODE} |tcp |
+ROW |2584 |2803 |8 |{#MODE} |tcp |
+ROW |2585 |2804 |8 |{#MODE} |tcp |
+ROW |2586 |2805 |8 |{#MODE} |tcp |
+ROW |2587 |2806 |8 |{#MODE} |tcp |
+ROW |2588 |2807 |8 |{#TYPE} |buckets |
+ROW |2589 |2808 |8 |{#TYPE} |totals |
+ROW |2590 |2809 |8 |{#TYPE} |buckets |
+ROW |2591 |2810 |8 |{#TYPE} |totals |
+ROW |2592 |2811 |8 |{#TYPE} |buckets |
+ROW |2593 |2812 |8 |{#TYPE} |totals |
+ROW |2594 |2813 |8 |{#TYPE} |buckets |
+ROW |2595 |2814 |8 |{#TYPE} |totals |
+ROW |2596 |2815 |8 |{#TYPE} |buckets |
+ROW |2597 |2816 |8 |{#TYPE} |totals |
+ROW |2598 |2817 |8 |{#TYPE} |buckets |
+ROW |2599 |2818 |8 |{#TYPE} |totals |
+ROW |2600 |2819 |8 |{#TYPE} |buckets |
+ROW |2601 |2820 |8 |{#TYPE} |totals |
+ROW |2602 |2821 |9 |{#CHANNEL_ID} |{$HIKVISION_MAIN_CHANNEL_ID} |
+ROW |2603 |2822 |8 |{#TYPE} |Microsoft.DBforMySQL/flexibleServers |
+ROW |2604 |2823 |8 |{#TYPE} |Microsoft.DBforMySQL/servers |
+ROW |2605 |2824 |8 |{#NODE_STATE} |7 |
+ROW |2606 |2825 |8 |{#NODE_STATE} |1 |
+ROW |2607 |2826 |8 |{#TYPE} |miss_peer_region_count |
+ROW |2608 |2827 |8 |{#TYPE} |down_peer_region_count |
+ROW |2609 |2828 |8 |{#TYPE} |failed |
+ROW |2610 |2829 |8 |{#TYPE} |unreachable |
+ROW |2611 |2830 |8 |{#ATTRIBUTES} |Bad_Block_Rate |
+ROW |2612 |2831 |9 |{#DISKTYPE} |nvme |
+ROW |2613 |2832 |8 |{#ATTRIBUTES} |Power_Cycle_Count |
+ROW |2614 |2833 |8 |{#ATTRIBUTES} |Program_Fail_Count_Chip |
+ROW |2615 |2834 |8 |{#ATTRIBUTES} |Raw_Read_Error_Rate |
+ROW |2616 |2835 |8 |{#ATTRIBUTES} |Reallocated_Sector_Ct |
+ROW |2617 |2836 |8 |{#ATTRIBUTES} |Reported_Uncorrect |
+ROW |2618 |2837 |8 |{#ATTRIBUTES} |Seek_Error_Rate |
+ROW |2619 |2838 |8 |{#DISKTYPE} |nvme |
+ROW |2620 |2839 |8 |{#ATTRIBUTES} |Spin_Up_Time |
+ROW |2621 |2840 |8 |{#ATTRIBUTES} |Start_Stop_Count |
+ROW |2622 |2841 |8 |{#ATTRIBUTES} |Bad_Block_Rate |
+ROW |2623 |2842 |9 |{#DISKTYPE} |nvme |
+ROW |2624 |2843 |8 |{#ATTRIBUTES} |Power_Cycle_Count |
+ROW |2625 |2844 |8 |{#ATTRIBUTES} |Program_Fail_Count_Chip |
+ROW |2626 |2845 |8 |{#ATTRIBUTES} |Raw_Read_Error_Rate |
+ROW |2627 |2846 |8 |{#ATTRIBUTES} |Reallocated_Sector_Ct |
+ROW |2628 |2847 |8 |{#ATTRIBUTES} |Reported_Uncorrect |
+ROW |2629 |2848 |8 |{#ATTRIBUTES} |Seek_Error_Rate |
+ROW |2630 |2849 |8 |{#DISKTYPE} |nvme |
+ROW |2631 |2850 |8 |{#ATTRIBUTES} |Spin_Up_Time |
+ROW |2632 |2851 |8 |{#ATTRIBUTES} |Start_Stop_Count |
+ROW |2633 |2852 |8 |{#THRESHOLD_HI_CRIT} |^$ |
+ROW |2634 |2853 |8 |{#THRESHOLD_HI_WARN} |^$ |
+ROW |2635 |2854 |8 |{#THRESHOLD_LO_CRIT} |^$ |
+ROW |2636 |2855 |8 |{#THRESHOLD_LO_WARN} |^$ |
+ROW |2637 |2856 |8 |{#THRESHOLD_HI_CRIT} |^$ |
+ROW |2638 |2857 |8 |{#THRESHOLD_HI_WARN} |^$ |
+ROW |2639 |2858 |8 |{#THRESHOLD_LO_CRIT} |^$ |
+ROW |2640 |2859 |8 |{#THRESHOLD_LO_WARN} |^$ |
+ROW |2641 |2860 |8 |{#THRESHOLD_HI_CRIT} |^$ |
+ROW |2642 |2861 |8 |{#THRESHOLD_HI_WARN} |^$ |
+ROW |2643 |2862 |8 |{#THRESHOLD_LO_CRIT} |^$ |
+ROW |2644 |2863 |8 |{#THRESHOLD_LO_WARN} |^$ |
+ROW |2645 |2864 |9 |{#CISCO.IF.NAME} |{$CISCO.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2646 |2865 |8 |{#PART.NAME} |{$BIGIP.LLD.OVERRIDE.PART.FILTER_LOW_SPACE_TRIGGER}|
+ROW |2647 |2866 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2648 |2867 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2649 |2868 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2650 |2869 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2651 |2870 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2652 |2871 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2653 |2872 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2654 |2873 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2655 |2874 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2656 |2875 |8 |{#ZYXEL.IF.NAME} |.* |
+ROW |2657 |2876 |8 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2658 |2877 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2659 |2878 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2660 |2879 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2661 |2880 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2662 |2881 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2663 |2882 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2664 |2883 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2665 |2884 |9 |{#ZYXEL.IF.NAME} |{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES} |
+ROW |2666 |2885 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2667 |2886 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2668 |2887 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2669 |2888 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2670 |2889 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2671 |2890 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2672 |2891 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2673 |2892 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2674 |2893 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2675 |2894 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2676 |2895 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2677 |2896 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2678 |2897 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2679 |2898 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2680 |2899 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2681 |2900 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2682 |2901 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2683 |2902 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2684 |2903 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2685 |2904 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2686 |2905 |8 |{#EXTERNAL_SENSOR1_NAME}|Temp |
+ROW |2687 |2906 |8 |{#EXTERNAL_SENSOR2_NAME}|Temp |
+ROW |2688 |2907 |8 |{#TYPE} |8 |
+ROW |2689 |2908 |8 |{#TYPE} |8 |
+ROW |2690 |2909 |8 |{#FSTYPE} |3&pipe;4 |
TABLE |lld_override_operation
FIELDS|lld_override_operationid|lld_overrideid|operationobject|operator|value |
-ROW |2772 |2680 |0 |2 |Aggregated status |
-ROW |2773 |2680 |0 |2 |State |
-ROW |2774 |2681 |0 |2 |Check |
-ROW |2775 |2682 |1 |2 |Too many failed gRPC requests |
-ROW |2776 |2683 |0 |2 |Number of responses with codes |
-ROW |2777 |2684 |0 |2 |Number of responses with codes |
-ROW |2778 |2685 |0 |2 |Number of responses with codes |
-ROW |2779 |2686 |0 |2 |Number of responses with codes |
-ROW |2780 |2687 |0 |2 |Number of responses with codes |
-ROW |2781 |2688 |0 |2 |Number of responses with codes |
-ROW |2782 |2689 |0 |2 |bucket |
-ROW |2783 |2690 |0 |3 |bucket |
-ROW |2784 |2691 |0 |2 |bucket |
-ROW |2785 |2692 |0 |3 |bucket |
-ROW |2786 |2693 |0 |2 |bucket |
-ROW |2787 |2694 |0 |3 |bucket |
-ROW |2788 |2695 |0 |2 |bucket |
-ROW |2789 |2696 |0 |3 |bucket |
-ROW |2790 |2697 |0 |2 |bucket |
-ROW |2791 |2698 |0 |3 |bucket |
-ROW |2792 |2699 |0 |2 |bucket |
-ROW |2793 |2700 |0 |3 |bucket |
-ROW |2794 |2701 |0 |2 |bucket |
-ROW |2795 |2702 |0 |3 |bucket |
-ROW |2796 |2703 |1 |2 |Invalid video stream resolution parameters |
-ROW |2797 |2704 |3 |8 | |
-ROW |2798 |2705 |3 |8 | |
-ROW |2799 |2706 |0 |2 |Replication lag |
-ROW |2800 |2707 |0 |2 |Number of replicas |
-ROW |2801 |2707 |0 |2 |Unhealthy replicas |
-ROW |2802 |2707 |0 |2 |Number of unhealthy replicas |
-ROW |2803 |2707 |0 |2 |Replication lag |
-ROW |2804 |2708 |1 |2 |Too many missed regions |
-ROW |2805 |2709 |1 |2 |There are unresponsive peers |
-ROW |2806 |2710 |1 |2 |Too many failed GC-related operations |
-ROW |2807 |2711 |1 |2 |Too many failure messages |
-ROW |2808 |2712 |0 |8 |Bad_Block_Rate |
-ROW |2809 |2713 |0 |8 |Media&pipe;Percentage&pipe;Critical |
-ROW |2810 |2714 |0 |8 |Power_Cycle_Count |
-ROW |2811 |2715 |0 |8 |Program_Fail_Count_Chip |
-ROW |2812 |2716 |0 |8 |Raw_Read_Error_Rate |
-ROW |2813 |2717 |0 |8 |Reallocated_Sector_Ct |
-ROW |2814 |2718 |0 |8 |Reported_Uncorrect |
-ROW |2815 |2719 |0 |8 |Seek_Error_Rate |
-ROW |2816 |2720 |0 |2 |Self-test |
-ROW |2817 |2721 |0 |8 |Spin_Up_Time |
-ROW |2818 |2722 |0 |8 |Start_Stop_Count |
-ROW |2819 |2723 |0 |8 |Bad_Block_Rate |
-ROW |2820 |2724 |0 |8 |Media&pipe;Percentage&pipe;Critical |
-ROW |2821 |2725 |0 |8 |Power_Cycle_Count |
-ROW |2822 |2726 |0 |8 |Program_Fail_Count_Chip |
-ROW |2823 |2727 |0 |8 |Raw_Read_Error_Rate |
-ROW |2824 |2728 |0 |8 |Reallocated_Sector_Ct |
-ROW |2825 |2729 |0 |8 |Reported_Uncorrect |
-ROW |2826 |2730 |0 |8 |Seek_Error_Rate |
-ROW |2827 |2731 |0 |2 |Self-test |
-ROW |2828 |2732 |0 |8 |Spin_Up_Time |
-ROW |2829 |2733 |0 |8 |Start_Stop_Count |
-ROW |2830 |2734 |1 |8 |Temperature is above the critical threshold|
-ROW |2831 |2735 |1 |8 |Temperature is above the warning threshold |
-ROW |2832 |2736 |1 |8 |Temperature is below the critical threshold|
-ROW |2833 |2737 |1 |8 |Temperature is below the warning threshold |
-ROW |2834 |2738 |1 |8 |Fan speed is above the critical threshold |
-ROW |2835 |2739 |1 |8 |Fan speed is above the warning threshold |
-ROW |2836 |2740 |1 |8 |Fan speed is below the critical threshold |
-ROW |2837 |2741 |1 |8 |Fan speed is below the warning threshold |
-ROW |2838 |2742 |1 |8 |Voltage is above the critical threshold |
-ROW |2839 |2743 |1 |8 |Voltage is above the warning threshold |
-ROW |2840 |2744 |1 |8 |Voltage is below the critical threshold |
-ROW |2841 |2745 |1 |8 |Voltage is below the warning threshold |
-ROW |2842 |2746 |1 |8 |.* |
-ROW |2843 |2747 |1 |8 |^F5 BIG-IP: Low free space in file system |
-ROW |2844 |2748 |1 |8 |.* |
-ROW |2845 |2749 |1 |8 |.* |
-ROW |2846 |2750 |1 |8 |.* |
-ROW |2847 |2751 |1 |8 |.* |
-ROW |2848 |2752 |1 |8 |.* |
-ROW |2849 |2753 |1 |8 |.* |
-ROW |2850 |2754 |1 |8 |.* |
-ROW |2851 |2755 |1 |8 |.* |
-ROW |2852 |2756 |1 |8 |.* |
-ROW |2853 |2757 |1 |8 |.* |
-ROW |2854 |2758 |1 |8 |.* |
-ROW |2855 |2759 |1 |8 |.* |
-ROW |2856 |2760 |1 |8 |.* |
-ROW |2857 |2761 |1 |8 |.* |
-ROW |2858 |2762 |1 |8 |.* |
-ROW |2859 |2763 |1 |8 |.* |
-ROW |2860 |2764 |1 |8 |.* |
-ROW |2861 |2765 |1 |8 |.* |
-ROW |2862 |2766 |1 |8 |.* |
-ROW |2863 |2767 |0 |2 |Humidity |
-ROW |2864 |2768 |0 |2 |Humidity |
-ROW |2865 |2769 |0 |2 |Humidity |
-ROW |2866 |2770 |0 |2 |Humidity |
-ROW |2867 |2771 |0 |2 |Humidity |
-ROW |2868 |2772 |0 |2 |Humidity |
-ROW |2869 |2773 |0 |2 |Humidity |
-ROW |2870 |2774 |0 |2 |Humidity |
-ROW |2871 |2775 |0 |2 |Humidity |
-ROW |2872 |2776 |0 |2 |Humidity |
-ROW |2873 |2777 |0 |2 |Humidity |
-ROW |2874 |2778 |0 |2 |Humidity |
-ROW |2875 |2779 |0 |2 |Humidity |
-ROW |2876 |2780 |0 |2 |Humidity |
-ROW |2877 |2781 |0 |2 |Humidity |
-ROW |2878 |2782 |0 |2 |Humidity |
-ROW |2879 |2783 |0 |2 |Humidity |
-ROW |2880 |2784 |0 |2 |Humidity |
-ROW |2881 |2785 |0 |2 |Humidity |
-ROW |2882 |2786 |0 |2 |Humidity |
-ROW |2883 |2787 |0 |2 |Humidity |
-ROW |2884 |2788 |0 |2 |Humidity |
-ROW |2885 |2789 |0 |8 |SSD life left |
-ROW |2886 |2790 |0 |8 |SSD life left |
-ROW |2887 |2791 |0 |2 |Saved |
-ROW |2888 |2792 |1 |2 |{#SENSOR_HI_CRIT} |
-ROW |2889 |2793 |1 |2 |{#SENSOR_HI_DISAST} |
-ROW |2890 |2794 |1 |2 |{#SENSOR_HI_WARN} |
-ROW |2891 |2795 |1 |2 |{#SENSOR_LO_CRIT} |
-ROW |2892 |2796 |1 |2 |{#SENSOR_LO_DISAST} |
-ROW |2893 |2797 |1 |2 |{#SENSOR_LO_WARN} |
+ROW |2894 |2798 |0 |2 |Aggregated status |
+ROW |2895 |2798 |0 |2 |State |
+ROW |2896 |2799 |0 |2 |Check |
+ROW |2897 |2800 |1 |2 |Too many failed gRPC requests |
+ROW |2898 |2801 |0 |2 |Number of responses with codes |
+ROW |2899 |2802 |0 |2 |Number of responses with codes |
+ROW |2900 |2803 |0 |2 |Number of responses with codes |
+ROW |2901 |2804 |0 |2 |Number of responses with codes |
+ROW |2902 |2805 |0 |2 |Number of responses with codes |
+ROW |2903 |2806 |0 |2 |Number of responses with codes |
+ROW |2904 |2807 |0 |2 |bucket |
+ROW |2905 |2808 |0 |3 |bucket |
+ROW |2906 |2809 |0 |2 |bucket |
+ROW |2907 |2810 |0 |3 |bucket |
+ROW |2908 |2811 |0 |2 |bucket |
+ROW |2909 |2812 |0 |3 |bucket |
+ROW |2910 |2813 |0 |2 |bucket |
+ROW |2911 |2814 |0 |3 |bucket |
+ROW |2912 |2815 |0 |2 |bucket |
+ROW |2913 |2816 |0 |3 |bucket |
+ROW |2914 |2817 |0 |2 |bucket |
+ROW |2915 |2818 |0 |3 |bucket |
+ROW |2916 |2819 |0 |2 |bucket |
+ROW |2917 |2820 |0 |3 |bucket |
+ROW |2918 |2821 |1 |2 |Invalid video stream resolution parameters |
+ROW |2919 |2822 |3 |8 | |
+ROW |2920 |2823 |3 |8 | |
+ROW |2921 |2824 |0 |2 |Replication lag |
+ROW |2922 |2825 |0 |2 |Number of replicas |
+ROW |2923 |2825 |0 |2 |Unhealthy replicas |
+ROW |2924 |2825 |0 |2 |Number of unhealthy replicas |
+ROW |2925 |2825 |0 |2 |Replication lag |
+ROW |2926 |2826 |1 |2 |Too many missed regions |
+ROW |2927 |2827 |1 |2 |There are unresponsive peers |
+ROW |2928 |2828 |1 |2 |Too many failed GC-related operations |
+ROW |2929 |2829 |1 |2 |Too many failure messages |
+ROW |2930 |2830 |0 |8 |Bad_Block_Rate |
+ROW |2931 |2831 |0 |8 |Media&pipe;Percentage&pipe;Critical |
+ROW |2932 |2832 |0 |8 |Power_Cycle_Count |
+ROW |2933 |2833 |0 |8 |Program_Fail_Count_Chip |
+ROW |2934 |2834 |0 |8 |Raw_Read_Error_Rate |
+ROW |2935 |2835 |0 |8 |Reallocated_Sector_Ct |
+ROW |2936 |2836 |0 |8 |Reported_Uncorrect |
+ROW |2937 |2837 |0 |8 |Seek_Error_Rate |
+ROW |2938 |2838 |0 |2 |Self-test |
+ROW |2939 |2839 |0 |8 |Spin_Up_Time |
+ROW |2940 |2840 |0 |8 |Start_Stop_Count |
+ROW |2941 |2841 |0 |8 |Bad_Block_Rate |
+ROW |2942 |2842 |0 |8 |Media&pipe;Percentage&pipe;Critical |
+ROW |2943 |2843 |0 |8 |Power_Cycle_Count |
+ROW |2944 |2844 |0 |8 |Program_Fail_Count_Chip |
+ROW |2945 |2845 |0 |8 |Raw_Read_Error_Rate |
+ROW |2946 |2846 |0 |8 |Reallocated_Sector_Ct |
+ROW |2947 |2847 |0 |8 |Reported_Uncorrect |
+ROW |2948 |2848 |0 |8 |Seek_Error_Rate |
+ROW |2949 |2849 |0 |2 |Self-test |
+ROW |2950 |2850 |0 |8 |Spin_Up_Time |
+ROW |2951 |2851 |0 |8 |Start_Stop_Count |
+ROW |2952 |2852 |1 |8 |Temperature is above the critical threshold|
+ROW |2953 |2853 |1 |8 |Temperature is above the warning threshold |
+ROW |2954 |2854 |1 |8 |Temperature is below the critical threshold|
+ROW |2955 |2855 |1 |8 |Temperature is below the warning threshold |
+ROW |2956 |2856 |1 |8 |Fan speed is above the critical threshold |
+ROW |2957 |2857 |1 |8 |Fan speed is above the warning threshold |
+ROW |2958 |2858 |1 |8 |Fan speed is below the critical threshold |
+ROW |2959 |2859 |1 |8 |Fan speed is below the warning threshold |
+ROW |2960 |2860 |1 |8 |Voltage is above the critical threshold |
+ROW |2961 |2861 |1 |8 |Voltage is above the warning threshold |
+ROW |2962 |2862 |1 |8 |Voltage is below the critical threshold |
+ROW |2963 |2863 |1 |8 |Voltage is below the warning threshold |
+ROW |2964 |2864 |1 |8 |.* |
+ROW |2965 |2865 |1 |8 |^F5 BIG-IP: Low free space in file system |
+ROW |2966 |2866 |1 |8 |.* |
+ROW |2967 |2867 |1 |8 |.* |
+ROW |2968 |2868 |1 |8 |.* |
+ROW |2969 |2869 |1 |8 |.* |
+ROW |2970 |2870 |1 |8 |.* |
+ROW |2971 |2871 |1 |8 |.* |
+ROW |2972 |2872 |1 |8 |.* |
+ROW |2973 |2873 |1 |8 |.* |
+ROW |2974 |2874 |1 |8 |.* |
+ROW |2975 |2875 |1 |8 |.* |
+ROW |2976 |2876 |1 |8 |.* |
+ROW |2977 |2877 |1 |8 |.* |
+ROW |2978 |2878 |1 |8 |.* |
+ROW |2979 |2879 |1 |8 |.* |
+ROW |2980 |2880 |1 |8 |.* |
+ROW |2981 |2881 |1 |8 |.* |
+ROW |2982 |2882 |1 |8 |.* |
+ROW |2983 |2883 |1 |8 |.* |
+ROW |2984 |2884 |1 |8 |.* |
+ROW |2985 |2885 |0 |2 |Humidity |
+ROW |2986 |2886 |0 |2 |Humidity |
+ROW |2987 |2887 |0 |2 |Humidity |
+ROW |2988 |2888 |0 |2 |Humidity |
+ROW |2989 |2889 |0 |2 |Humidity |
+ROW |2990 |2890 |0 |2 |Humidity |
+ROW |2991 |2891 |0 |2 |Humidity |
+ROW |2992 |2892 |0 |2 |Humidity |
+ROW |2993 |2893 |0 |2 |Humidity |
+ROW |2994 |2894 |0 |2 |Humidity |
+ROW |2995 |2895 |0 |2 |Humidity |
+ROW |2996 |2896 |0 |2 |Humidity |
+ROW |2997 |2897 |0 |2 |Humidity |
+ROW |2998 |2898 |0 |2 |Humidity |
+ROW |2999 |2899 |0 |2 |Humidity |
+ROW |3000 |2900 |0 |2 |Humidity |
+ROW |3001 |2901 |0 |2 |Humidity |
+ROW |3002 |2902 |0 |2 |Humidity |
+ROW |3003 |2903 |0 |2 |Humidity |
+ROW |3004 |2904 |0 |2 |Humidity |
+ROW |3005 |2905 |0 |2 |Humidity |
+ROW |3006 |2906 |0 |2 |Humidity |
+ROW |3007 |2907 |0 |8 |SSD life left |
+ROW |3008 |2908 |0 |8 |SSD life left |
+ROW |3009 |2909 |0 |2 |Saved |
+ROW |3010 |2910 |1 |2 |{#SENSOR_HI_CRIT} |
+ROW |3011 |2911 |1 |2 |{#SENSOR_HI_DISAST} |
+ROW |3012 |2912 |1 |2 |{#SENSOR_HI_WARN} |
+ROW |3013 |2913 |1 |2 |{#SENSOR_LO_CRIT} |
+ROW |3014 |2914 |1 |2 |{#SENSOR_LO_DISAST} |
+ROW |3015 |2915 |1 |2 |{#SENSOR_LO_WARN} |
TABLE |lld_override_opstatus
FIELDS|lld_override_operationid|status|
-ROW |2772 |0 |
-ROW |2773 |0 |
-ROW |2774 |0 |
-ROW |2775 |0 |
-ROW |2776 |0 |
-ROW |2777 |0 |
-ROW |2778 |0 |
-ROW |2779 |0 |
-ROW |2780 |0 |
-ROW |2781 |0 |
-ROW |2782 |0 |
-ROW |2783 |0 |
-ROW |2784 |0 |
-ROW |2785 |0 |
-ROW |2786 |0 |
-ROW |2787 |0 |
-ROW |2788 |0 |
-ROW |2789 |0 |
-ROW |2790 |0 |
-ROW |2791 |0 |
-ROW |2792 |0 |
-ROW |2793 |0 |
-ROW |2794 |0 |
-ROW |2795 |0 |
-ROW |2796 |0 |
-ROW |2799 |0 |
-ROW |2800 |0 |
-ROW |2801 |0 |
-ROW |2802 |0 |
-ROW |2803 |0 |
-ROW |2804 |0 |
-ROW |2805 |0 |
-ROW |2806 |0 |
-ROW |2807 |0 |
-ROW |2808 |0 |
-ROW |2809 |0 |
-ROW |2810 |0 |
-ROW |2811 |0 |
-ROW |2812 |0 |
-ROW |2813 |0 |
-ROW |2814 |0 |
-ROW |2815 |0 |
-ROW |2816 |0 |
-ROW |2817 |0 |
-ROW |2818 |0 |
-ROW |2819 |0 |
-ROW |2820 |0 |
-ROW |2821 |0 |
-ROW |2822 |0 |
-ROW |2823 |0 |
-ROW |2824 |0 |
-ROW |2825 |0 |
-ROW |2826 |0 |
-ROW |2827 |0 |
-ROW |2828 |0 |
-ROW |2829 |0 |
-ROW |2830 |0 |
-ROW |2831 |0 |
-ROW |2832 |0 |
-ROW |2833 |0 |
-ROW |2834 |0 |
-ROW |2835 |0 |
-ROW |2836 |0 |
-ROW |2837 |0 |
-ROW |2838 |0 |
-ROW |2839 |0 |
-ROW |2840 |0 |
-ROW |2841 |0 |
-ROW |2842 |0 |
-ROW |2844 |0 |
-ROW |2845 |0 |
-ROW |2846 |0 |
-ROW |2847 |0 |
-ROW |2848 |0 |
-ROW |2849 |0 |
-ROW |2850 |0 |
-ROW |2851 |0 |
-ROW |2852 |0 |
-ROW |2853 |0 |
-ROW |2854 |0 |
-ROW |2855 |0 |
-ROW |2856 |0 |
-ROW |2857 |0 |
-ROW |2858 |0 |
-ROW |2859 |0 |
-ROW |2860 |0 |
-ROW |2861 |0 |
-ROW |2862 |0 |
-ROW |2863 |0 |
-ROW |2864 |0 |
-ROW |2865 |0 |
-ROW |2866 |0 |
-ROW |2867 |0 |
-ROW |2868 |0 |
-ROW |2869 |0 |
-ROW |2870 |0 |
-ROW |2871 |0 |
-ROW |2872 |0 |
-ROW |2873 |0 |
-ROW |2874 |0 |
-ROW |2875 |0 |
-ROW |2876 |0 |
-ROW |2877 |0 |
-ROW |2878 |0 |
-ROW |2879 |0 |
-ROW |2880 |0 |
-ROW |2881 |0 |
-ROW |2882 |0 |
-ROW |2883 |0 |
-ROW |2884 |0 |
-ROW |2887 |0 |
-ROW |2888 |0 |
-ROW |2889 |0 |
-ROW |2890 |0 |
-ROW |2891 |0 |
-ROW |2892 |0 |
-ROW |2893 |0 |
+ROW |2894 |0 |
+ROW |2895 |0 |
+ROW |2896 |0 |
+ROW |2897 |0 |
+ROW |2898 |0 |
+ROW |2899 |0 |
+ROW |2900 |0 |
+ROW |2901 |0 |
+ROW |2902 |0 |
+ROW |2903 |0 |
+ROW |2904 |0 |
+ROW |2905 |0 |
+ROW |2906 |0 |
+ROW |2907 |0 |
+ROW |2908 |0 |
+ROW |2909 |0 |
+ROW |2910 |0 |
+ROW |2911 |0 |
+ROW |2912 |0 |
+ROW |2913 |0 |
+ROW |2914 |0 |
+ROW |2915 |0 |
+ROW |2916 |0 |
+ROW |2917 |0 |
+ROW |2918 |0 |
+ROW |2921 |0 |
+ROW |2922 |0 |
+ROW |2923 |0 |
+ROW |2924 |0 |
+ROW |2925 |0 |
+ROW |2926 |0 |
+ROW |2927 |0 |
+ROW |2928 |0 |
+ROW |2929 |0 |
+ROW |2930 |0 |
+ROW |2931 |0 |
+ROW |2932 |0 |
+ROW |2933 |0 |
+ROW |2934 |0 |
+ROW |2935 |0 |
+ROW |2936 |0 |
+ROW |2937 |0 |
+ROW |2938 |0 |
+ROW |2939 |0 |
+ROW |2940 |0 |
+ROW |2941 |0 |
+ROW |2942 |0 |
+ROW |2943 |0 |
+ROW |2944 |0 |
+ROW |2945 |0 |
+ROW |2946 |0 |
+ROW |2947 |0 |
+ROW |2948 |0 |
+ROW |2949 |0 |
+ROW |2950 |0 |
+ROW |2951 |0 |
+ROW |2952 |0 |
+ROW |2953 |0 |
+ROW |2954 |0 |
+ROW |2955 |0 |
+ROW |2956 |0 |
+ROW |2957 |0 |
+ROW |2958 |0 |
+ROW |2959 |0 |
+ROW |2960 |0 |
+ROW |2961 |0 |
+ROW |2962 |0 |
+ROW |2963 |0 |
+ROW |2964 |0 |
+ROW |2966 |0 |
+ROW |2967 |0 |
+ROW |2968 |0 |
+ROW |2969 |0 |
+ROW |2970 |0 |
+ROW |2971 |0 |
+ROW |2972 |0 |
+ROW |2973 |0 |
+ROW |2974 |0 |
+ROW |2975 |0 |
+ROW |2976 |0 |
+ROW |2977 |0 |
+ROW |2978 |0 |
+ROW |2979 |0 |
+ROW |2980 |0 |
+ROW |2981 |0 |
+ROW |2982 |0 |
+ROW |2983 |0 |
+ROW |2984 |0 |
+ROW |2985 |0 |
+ROW |2986 |0 |
+ROW |2987 |0 |
+ROW |2988 |0 |
+ROW |2989 |0 |
+ROW |2990 |0 |
+ROW |2991 |0 |
+ROW |2992 |0 |
+ROW |2993 |0 |
+ROW |2994 |0 |
+ROW |2995 |0 |
+ROW |2996 |0 |
+ROW |2997 |0 |
+ROW |2998 |0 |
+ROW |2999 |0 |
+ROW |3000 |0 |
+ROW |3001 |0 |
+ROW |3002 |0 |
+ROW |3003 |0 |
+ROW |3004 |0 |
+ROW |3005 |0 |
+ROW |3006 |0 |
+ROW |3009 |0 |
+ROW |3010 |0 |
+ROW |3011 |0 |
+ROW |3012 |0 |
+ROW |3013 |0 |
+ROW |3014 |0 |
+ROW |3015 |0 |
TABLE |lld_override_opdiscover
FIELDS|lld_override_operationid|discover|
-ROW |2772 |0 |
-ROW |2773 |0 |
-ROW |2774 |0 |
-ROW |2775 |0 |
-ROW |2776 |1 |
-ROW |2777 |1 |
-ROW |2778 |1 |
-ROW |2779 |1 |
-ROW |2780 |1 |
-ROW |2781 |1 |
-ROW |2782 |0 |
-ROW |2783 |0 |
-ROW |2784 |0 |
-ROW |2785 |0 |
-ROW |2786 |0 |
-ROW |2787 |0 |
-ROW |2788 |0 |
-ROW |2789 |0 |
-ROW |2790 |0 |
-ROW |2791 |0 |
-ROW |2792 |0 |
-ROW |2793 |0 |
-ROW |2794 |0 |
-ROW |2795 |0 |
-ROW |2796 |1 |
-ROW |2799 |1 |
-ROW |2800 |0 |
-ROW |2801 |0 |
-ROW |2802 |0 |
-ROW |2803 |1 |
-ROW |2804 |0 |
-ROW |2805 |0 |
-ROW |2806 |0 |
-ROW |2807 |0 |
-ROW |2808 |0 |
-ROW |2809 |1 |
-ROW |2810 |0 |
-ROW |2811 |0 |
-ROW |2812 |0 |
-ROW |2813 |0 |
-ROW |2814 |0 |
-ROW |2815 |0 |
-ROW |2816 |1 |
-ROW |2817 |0 |
-ROW |2818 |0 |
-ROW |2819 |0 |
-ROW |2820 |1 |
-ROW |2821 |0 |
-ROW |2822 |0 |
-ROW |2823 |0 |
-ROW |2824 |0 |
-ROW |2825 |0 |
-ROW |2826 |0 |
-ROW |2827 |1 |
-ROW |2828 |0 |
-ROW |2829 |0 |
-ROW |2830 |1 |
-ROW |2831 |1 |
-ROW |2832 |1 |
-ROW |2833 |1 |
-ROW |2834 |1 |
-ROW |2835 |1 |
-ROW |2836 |1 |
-ROW |2837 |1 |
-ROW |2838 |1 |
-ROW |2839 |1 |
-ROW |2840 |1 |
-ROW |2841 |1 |
-ROW |2842 |1 |
-ROW |2843 |1 |
-ROW |2844 |1 |
-ROW |2845 |1 |
-ROW |2846 |1 |
-ROW |2847 |1 |
-ROW |2848 |1 |
-ROW |2849 |1 |
-ROW |2850 |1 |
-ROW |2851 |1 |
-ROW |2852 |1 |
-ROW |2853 |1 |
-ROW |2854 |0 |
-ROW |2855 |1 |
-ROW |2856 |1 |
-ROW |2857 |1 |
-ROW |2858 |1 |
-ROW |2859 |1 |
-ROW |2860 |1 |
-ROW |2861 |1 |
-ROW |2862 |1 |
-ROW |2863 |1 |
-ROW |2864 |1 |
-ROW |2865 |1 |
-ROW |2866 |1 |
-ROW |2867 |1 |
-ROW |2868 |1 |
-ROW |2869 |1 |
-ROW |2870 |1 |
-ROW |2871 |1 |
-ROW |2872 |1 |
-ROW |2873 |1 |
-ROW |2874 |1 |
-ROW |2875 |1 |
-ROW |2876 |1 |
-ROW |2877 |1 |
-ROW |2878 |1 |
-ROW |2879 |1 |
-ROW |2880 |1 |
-ROW |2881 |1 |
-ROW |2882 |1 |
-ROW |2883 |1 |
-ROW |2884 |1 |
-ROW |2885 |0 |
-ROW |2886 |0 |
-ROW |2887 |1 |
-ROW |2888 |1 |
-ROW |2889 |1 |
-ROW |2890 |1 |
-ROW |2891 |1 |
-ROW |2892 |1 |
-ROW |2893 |1 |
+ROW |2894 |0 |
+ROW |2895 |0 |
+ROW |2896 |0 |
+ROW |2897 |0 |
+ROW |2898 |1 |
+ROW |2899 |1 |
+ROW |2900 |1 |
+ROW |2901 |1 |
+ROW |2902 |1 |
+ROW |2903 |1 |
+ROW |2904 |0 |
+ROW |2905 |0 |
+ROW |2906 |0 |
+ROW |2907 |0 |
+ROW |2908 |0 |
+ROW |2909 |0 |
+ROW |2910 |0 |
+ROW |2911 |0 |
+ROW |2912 |0 |
+ROW |2913 |0 |
+ROW |2914 |0 |
+ROW |2915 |0 |
+ROW |2916 |0 |
+ROW |2917 |0 |
+ROW |2918 |1 |
+ROW |2921 |1 |
+ROW |2922 |0 |
+ROW |2923 |0 |
+ROW |2924 |0 |
+ROW |2925 |1 |
+ROW |2926 |0 |
+ROW |2927 |0 |
+ROW |2928 |0 |
+ROW |2929 |0 |
+ROW |2930 |0 |
+ROW |2931 |1 |
+ROW |2932 |0 |
+ROW |2933 |0 |
+ROW |2934 |0 |
+ROW |2935 |0 |
+ROW |2936 |0 |
+ROW |2937 |0 |
+ROW |2938 |1 |
+ROW |2939 |0 |
+ROW |2940 |0 |
+ROW |2941 |0 |
+ROW |2942 |1 |
+ROW |2943 |0 |
+ROW |2944 |0 |
+ROW |2945 |0 |
+ROW |2946 |0 |
+ROW |2947 |0 |
+ROW |2948 |0 |
+ROW |2949 |1 |
+ROW |2950 |0 |
+ROW |2951 |0 |
+ROW |2952 |1 |
+ROW |2953 |1 |
+ROW |2954 |1 |
+ROW |2955 |1 |
+ROW |2956 |1 |
+ROW |2957 |1 |
+ROW |2958 |1 |
+ROW |2959 |1 |
+ROW |2960 |1 |
+ROW |2961 |1 |
+ROW |2962 |1 |
+ROW |2963 |1 |
+ROW |2964 |1 |
+ROW |2965 |1 |
+ROW |2966 |1 |
+ROW |2967 |1 |
+ROW |2968 |1 |
+ROW |2969 |1 |
+ROW |2970 |1 |
+ROW |2971 |1 |
+ROW |2972 |1 |
+ROW |2973 |1 |
+ROW |2974 |1 |
+ROW |2975 |1 |
+ROW |2976 |0 |
+ROW |2977 |1 |
+ROW |2978 |1 |
+ROW |2979 |1 |
+ROW |2980 |1 |
+ROW |2981 |1 |
+ROW |2982 |1 |
+ROW |2983 |1 |
+ROW |2984 |1 |
+ROW |2985 |1 |
+ROW |2986 |1 |
+ROW |2987 |1 |
+ROW |2988 |1 |
+ROW |2989 |1 |
+ROW |2990 |1 |
+ROW |2991 |1 |
+ROW |2992 |1 |
+ROW |2993 |1 |
+ROW |2994 |1 |
+ROW |2995 |1 |
+ROW |2996 |1 |
+ROW |2997 |1 |
+ROW |2998 |1 |
+ROW |2999 |1 |
+ROW |3000 |1 |
+ROW |3001 |1 |
+ROW |3002 |1 |
+ROW |3003 |1 |
+ROW |3004 |1 |
+ROW |3005 |1 |
+ROW |3006 |1 |
+ROW |3007 |0 |
+ROW |3008 |0 |
+ROW |3009 |1 |
+ROW |3010 |1 |
+ROW |3011 |1 |
+ROW |3012 |1 |
+ROW |3013 |1 |
+ROW |3014 |1 |
+ROW |3015 |1 |
TABLE |lld_override_optemplate
FIELDS|lld_override_optemplateid|lld_override_operationid|templateid|
-ROW |1 |2797 |10539 |
-ROW |2 |2798 |10540 |
+ROW |1 |2919 |10539 |
+ROW |2 |2920 |10540 |
TABLE |item_parameter
FIELDS|item_parameterid|itemid|name |value |
@@ -124949,6 +124994,25 @@ ROW |35545 |44234 |component |network
ROW |35546 |44234 |component |raw |
ROW |35547 |44234 |component |uplink-set |
ROW |35548 |44234 |uplink-set |{#NAME} |
+ROW |35549 |44235 |component |raw |
+ROW |35550 |44237 |component |raw |
+ROW |35551 |44237 |process |{#NAME} |
+ROW |35552 |44238 |component |memory |
+ROW |35553 |44238 |process |{#NAME} |
+ROW |35554 |44239 |component |system |
+ROW |35555 |44239 |process |{#NAME} |
+ROW |35556 |44240 |component |system |
+ROW |35557 |44240 |process |{#NAME} |
+ROW |35558 |44241 |component |memory |
+ROW |35559 |44241 |process |{#NAME} |
+ROW |35560 |44242 |component |memory |
+ROW |35561 |44242 |process |{#NAME} |
+ROW |35562 |44243 |component |memory |
+ROW |35563 |44243 |process |{#NAME} |
+ROW |35564 |44244 |component |system |
+ROW |35565 |44244 |process |{#NAME} |
+ROW |35566 |44245 |component |memory |
+ROW |35567 |44245 |process |{#NAME} |
TABLE |host_rtdata
FIELDS|hostid|active_available|
diff --git a/include/audit/zbxaudit_item.h b/include/audit/zbxaudit_item.h
index ca72c6c0c13..138e475d287 100644
--- a/include/audit/zbxaudit_item.h
+++ b/include/audit/zbxaudit_item.h
@@ -22,7 +22,7 @@
#include "zbxcommon.h"
-#include "../src/libs/zbxdbhigh/template.h"
+#include "../src/libs/zbxdbwrap/template.h"
#include "../src/zabbix_server/lld/lld.h"
void zbx_audit_item_create_entry(int audit_action, zbx_uint64_t itemid, const char *name, int flags);
diff --git a/include/cfg.h b/include/cfg.h
index 567016329a8..c0bd6216f08 100644
--- a/include/cfg.h
+++ b/include/cfg.h
@@ -45,10 +45,6 @@
#define ZBX_PROXY_HEARTBEAT_FREQUENCY_MAX SEC_PER_HOUR
#define ZBX_PROXY_LASTACCESS_UPDATE_FREQUENCY 5
-extern char *CONFIG_LOG_TYPE_STR;
-extern int CONFIG_LOG_TYPE;
-extern char *CONFIG_LOG_FILE;
-extern int CONFIG_LOG_FILE_SIZE;
extern int CONFIG_TIMEOUT;
struct cfg_line
diff --git a/include/log.h b/include/log.h
index 24d233ac949..d9e509611e7 100644
--- a/include/log.h
+++ b/include/log.h
@@ -43,6 +43,15 @@
#define LOG_ENTRY_INTERVAL_DELAY 60 /* seconds */
extern int zbx_log_level;
+
+typedef struct
+{
+ char *log_file_name;
+ char *log_type_str;
+ int log_type;
+ int log_file_size;
+} zbx_config_log_t;
+
#define ZBX_CHECK_LOG_LEVEL(level) \
((LOG_LEVEL_INFORMATION != (level) && \
((level) > zbx_log_level || LOG_LEVEL_EMPTY == (level))) ? FAIL : SUCCEED)
@@ -61,9 +70,9 @@ extern int zbx_log_level;
# define zabbix_log __zbx_zabbix_log
#endif
-int zabbix_open_log(int type, int level, const char *filename, char **error);
-void __zbx_zabbix_log(int level, const char *fmt, ...) __zbx_attr_format_printf(2, 3);
-void zabbix_close_log(void);
+int zabbix_open_log(const zbx_config_log_t *log_file_cfg, int level, char **error);
+void __zbx_zabbix_log(int level, const char *fmt, ...) __zbx_attr_format_printf(2, 3);
+void zabbix_close_log(void);
#ifndef _WINDOWS
int zabbix_increase_log_level(void);
@@ -83,7 +92,7 @@ int zbx_redirect_stdio(const char *filename);
void zbx_handle_log(void);
int zbx_get_log_type(const char *logtype);
-int zbx_validate_log_parameters(ZBX_TASK_EX *task);
+int zbx_validate_log_parameters(ZBX_TASK_EX *task, const zbx_config_log_t *log_file_cfg);
void zbx_strlog_alloc(int level, char **out, size_t *out_alloc, size_t *out_offset, const char *format,
...) __zbx_attr_format_printf(5, 6);
diff --git a/include/preproc.h b/include/preproc.h
index 662110dbcb6..4db4fc1901a 100644
--- a/include/preproc.h
+++ b/include/preproc.h
@@ -21,7 +21,7 @@
#define ZABBIX_PREPROC_H
#include "module.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
/* preprocessing step execution result */
typedef struct
diff --git a/include/proxy.h b/include/proxy.h
deleted file mode 100644
index 060254e5ee6..00000000000
--- a/include/proxy.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-#ifndef ZABBIX_PROXY_H
-#define ZABBIX_PROXY_H
-
-#include "dbcache.h"
-
-#define ZBX_PROXYMODE_ACTIVE 0
-#define ZBX_PROXYMODE_PASSIVE 1
-
-#define ZBX_MAX_HRECORDS 1000
-#define ZBX_MAX_HRECORDS_TOTAL 10000
-
-#define ZBX_PROXY_DATA_DONE 0
-#define ZBX_PROXY_DATA_MORE 1
-
-#define ZBX_PROXY_UPLOAD_UNDEFINED 0
-#define ZBX_PROXY_UPLOAD_DISABLED 1
-#define ZBX_PROXY_UPLOAD_ENABLED 2
-
-#define ZBX_PROXY_ACTIVE_CHECK_AVAIL_TIMEOUT 30
-
-int get_active_proxy_from_request(const struct zbx_json_parse *jp, DC_PROXY *proxy, char **error);
-int zbx_proxy_check_permissions(const DC_PROXY *proxy, const zbx_socket_t *sock, char **error);
-int check_access_passive_proxy(zbx_socket_t *sock, int send_response, const char *req,
- const zbx_config_tls_t *zbx_config_tls);
-
-void update_proxy_lastaccess(const zbx_uint64_t hostid, time_t last_access);
-
-int get_interface_availability_data(struct zbx_json *json, int *ts);
-
-int proxy_get_hist_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more);
-int proxy_get_dhis_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more);
-int proxy_get_areg_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more);
-void proxy_set_hist_lastid(const zbx_uint64_t lastid);
-void proxy_set_dhis_lastid(const zbx_uint64_t lastid);
-void proxy_set_areg_lastid(const zbx_uint64_t lastid);
-int proxy_get_host_active_availability(struct zbx_json *j);
-
-void calc_timestamp(const char *line, int *timestamp, const char *format);
-
-int process_history_data(DC_ITEM *items, zbx_agent_value_t *values, int *errcodes, size_t values_num,
- zbx_proxy_suppress_t *nodata_win);
-
-int lld_process_discovery_rule(zbx_uint64_t lld_ruleid, const char *value, char **error);
-
-int proxy_get_history_count(void);
-int proxy_get_delay(zbx_uint64_t lastid);
-
-char *zbx_get_proxy_protocol_version_str(const struct zbx_json_parse *jp);
-int zbx_get_proxy_protocol_version_int(const char *version_str);
-void zbx_update_proxy_data(DC_PROXY *proxy, char *version_str, int version_int, int lastaccess, int compress,
- zbx_uint64_t flags_add);
-
-int process_proxy_history_data(const DC_PROXY *proxy, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info);
-int process_agent_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info);
-int process_sender_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info);
-int process_proxy_data(const DC_PROXY *proxy, struct zbx_json_parse *jp, zbx_timespec_t *ts,
- unsigned char proxy_status, int *more, char **error);
-int zbx_check_protocol_version(DC_PROXY *proxy, int version);
-
-#endif
diff --git a/include/version.h b/include/version.h
index 58d48bd2281..24140d612fc 100644
--- a/include/version.h
+++ b/include/version.h
@@ -24,7 +24,7 @@
#define ZBX_STR(str) ZBX_STR2(str)
#define APPLICATION_NAME "Zabbix Agent"
-#define ZABBIX_REVDATE "27 October 2022"
+#define ZABBIX_REVDATE "8 November 2022"
#define ZABBIX_VERSION_MAJOR 6
#define ZABBIX_VERSION_MINOR 4
#define ZABBIX_VERSION_PATCH 0
@@ -36,7 +36,7 @@
# define ZABBIX_VERSION_RC_NUM {ZABBIX_RC_NUM}
# endif
#endif
-#define ZABBIX_VERSION_RC "beta3"
+#define ZABBIX_VERSION_RC "beta4"
#define ZABBIX_VERSION ZBX_STR(ZABBIX_VERSION_MAJOR) "." ZBX_STR(ZABBIX_VERSION_MINOR) "." \
ZBX_STR(ZABBIX_VERSION_PATCH) ZABBIX_VERSION_RC
#define ZABBIX_REVISION ZBX_STR(ZABBIX_VERSION_REVISION)
diff --git a/include/dbcache.h b/include/zbxcacheconfig.h
index a99d998c39d..347131dffb7 100644
--- a/include/dbcache.h
+++ b/include/zbxcacheconfig.h
@@ -17,19 +17,15 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#ifndef ZABBIX_DBCACHE_H
-#define ZABBIX_DBCACHE_H
+#ifndef ZABBIX_CACHECONFIG_H
+#define ZABBIX_CACHECONFIG_H
#include "zbxdbhigh.h"
#include "zbxcomms.h"
-#include "zbxshmem.h"
#include "zbxeval.h"
#include "zbxavailability.h"
#include "zbxversion.h"
-#define ZBX_SYNC_DONE 0
-#define ZBX_SYNC_MORE 1
-
#define ZBX_NO_POLLER 255
#define ZBX_POLLER_TYPE_NORMAL 0
#define ZBX_POLLER_TYPE_UNREACHABLE 1
@@ -60,10 +56,6 @@ zbx_session_type_t;
#define ZBX_SNMPTRAP_LOGGING_ENABLED 1
-#define ZBX_IPC_SERVICE_CONFIG "config"
-#define ZBX_IPC_CONFIG_RELOAD_REQUEST 1
-#define ZBX_IPC_CONFIG_RELOAD_RESPONSE 2
-
#define ZBX_AGENT_ZABBIX (INTERFACE_TYPE_AGENT - 1)
#define ZBX_AGENT_SNMP (INTERFACE_TYPE_SNMP - 1)
#define ZBX_AGENT_IPMI (INTERFACE_TYPE_IPMI - 1)
@@ -74,9 +66,6 @@ zbx_session_type_t;
extern int CONFIG_TIMEOUT;
extern zbx_uint64_t CONFIG_CONF_CACHE_SIZE;
-extern zbx_uint64_t CONFIG_HISTORY_CACHE_SIZE;
-extern zbx_uint64_t CONFIG_HISTORY_INDEX_CACHE_SIZE;
-extern zbx_uint64_t CONFIG_TRENDS_CACHE_SIZE;
extern int CONFIG_POLLER_FORKS;
extern int CONFIG_UNREACHABLE_POLLER_FORKS;
@@ -283,14 +272,6 @@ typedef struct _DC_TRIGGER
}
DC_TRIGGER;
-/* needed to collect and pass data about items that are involved in generating problem events */
-typedef struct
-{
- zbx_uint64_t triggerid;
- zbx_vector_uint64_t itemids;
-}
-zbx_trigger_items_t;
-
typedef struct
{
zbx_uint64_t hostid;
@@ -327,20 +308,6 @@ typedef struct
}
DC_PROXY;
-typedef struct
-{
- zbx_uint64_t autoreg_hostid;
- zbx_uint64_t hostid;
- char *host;
- char *ip;
- char *dns;
- char *host_metadata;
- int now;
- unsigned short port;
- unsigned short flag;
- unsigned int connection_type;
-}
-zbx_autoreg_host_t;
#define ZBX_ACTION_OPCLASS_NONE 0
#define ZBX_ACTION_OPCLASS_NORMAL 1
@@ -514,48 +481,6 @@ typedef struct
}
zbx_correlation_rules_t;
-/* value_avg_t structure is used for item average value trend calculations. */
-/* */
-/* For double values the average value is calculated on the fly with the */
-/* following formula: avg = (dbl * count + value) / (count + 1) and stored */
-/* into dbl member. */
-/* For uint64 values the item values are summed into ui64 member and the */
-/* average value is calculated before flushing trends to database: */
-/* avg = ui64 / count */
-typedef union
-{
- double dbl;
- zbx_uint128_t ui64;
-}
-value_avg_t;
-
-typedef struct
-{
- zbx_uint64_t itemid;
- history_value_t value_min;
- value_avg_t value_avg;
- history_value_t value_max;
- int clock;
- int num;
- int disable_from;
- unsigned char value_type;
-}
-ZBX_DC_TREND;
-
-typedef struct
-{
- zbx_uint64_t itemid;
- history_value_t value;
- zbx_uint64_t lastlogsize;
- zbx_timespec_t ts;
- int mtime;
- unsigned char value_type;
- unsigned char flags; /* see ZBX_DC_FLAG_* */
- unsigned char state;
- int ttl; /* time-to-live of the history value */
-}
-ZBX_DC_HISTORY;
-
/* item queue data */
typedef struct
{
@@ -580,13 +505,6 @@ typedef struct
}
zbx_proxy_counter_t;
-typedef enum
-{
- ZBX_COUNTER_TYPE_UI64,
- ZBX_COUNTER_TYPE_DBL
-}
-zbx_counter_type_t;
-
typedef struct
{
unsigned char type;
@@ -623,31 +541,6 @@ typedef struct
}
zbx_config_cache_info_t;
-typedef struct
-{
- zbx_uint64_t history_counter; /* the total number of processed values */
- zbx_uint64_t history_float_counter; /* the number of processed float values */
- zbx_uint64_t history_uint_counter; /* the number of processed uint values */
- zbx_uint64_t history_str_counter; /* the number of processed str values */
- zbx_uint64_t history_log_counter; /* the number of processed log values */
- zbx_uint64_t history_text_counter; /* the number of processed text values */
- zbx_uint64_t notsupported_counter; /* the number of processed not supported items */
-}
-ZBX_DC_STATS;
-
-/* the write cache statistics */
-typedef struct
-{
- ZBX_DC_STATS stats;
- zbx_uint64_t history_free;
- zbx_uint64_t history_total;
- zbx_uint64_t index_free;
- zbx_uint64_t index_total;
- zbx_uint64_t trend_free;
- zbx_uint64_t trend_total;
-}
-zbx_wcache_info_t;
-
int is_item_processed_by_server(unsigned char type, const char *key);
int zbx_is_counted_in_item_queue(unsigned char type, const char *key);
int in_maintenance_without_data_collection(unsigned char maintenance_status, unsigned char maintenance_type,
@@ -655,46 +548,10 @@ int in_maintenance_without_data_collection(unsigned char maintenance_status, uns
void dc_add_history(zbx_uint64_t itemid, unsigned char item_value_type, unsigned char item_flags,
AGENT_RESULT *result, const zbx_timespec_t *ts, unsigned char state, const char *error);
void dc_flush_history(void);
-void zbx_sync_history_cache(int *values_num, int *triggers_num, int *more);
-void zbx_log_sync_history_cache_progress(void);
#define ZBX_SYNC_NONE 0
#define ZBX_SYNC_ALL 1
-int init_database_cache(char **error);
-void free_database_cache(int);
-
-void change_proxy_history_count(int change_count);
-void reset_proxy_history_count(int reset);
-int get_proxy_history_count(void);
-
-#define ZBX_STATS_HISTORY_COUNTER 0
-#define ZBX_STATS_HISTORY_FLOAT_COUNTER 1
-#define ZBX_STATS_HISTORY_UINT_COUNTER 2
-#define ZBX_STATS_HISTORY_STR_COUNTER 3
-#define ZBX_STATS_HISTORY_LOG_COUNTER 4
-#define ZBX_STATS_HISTORY_TEXT_COUNTER 5
-#define ZBX_STATS_NOTSUPPORTED_COUNTER 6
-#define ZBX_STATS_HISTORY_TOTAL 7
-#define ZBX_STATS_HISTORY_USED 8
-#define ZBX_STATS_HISTORY_FREE 9
-#define ZBX_STATS_HISTORY_PUSED 10
-#define ZBX_STATS_HISTORY_PFREE 11
-#define ZBX_STATS_TREND_TOTAL 12
-#define ZBX_STATS_TREND_USED 13
-#define ZBX_STATS_TREND_FREE 14
-#define ZBX_STATS_TREND_PUSED 15
-#define ZBX_STATS_TREND_PFREE 16
-#define ZBX_STATS_HISTORY_INDEX_TOTAL 17
-#define ZBX_STATS_HISTORY_INDEX_USED 18
-#define ZBX_STATS_HISTORY_INDEX_FREE 19
-#define ZBX_STATS_HISTORY_INDEX_PUSED 20
-#define ZBX_STATS_HISTORY_INDEX_PFREE 21
-void *DCget_stats(int request);
-void DCget_stats_all(zbx_wcache_info_t *wcache_info);
-
-zbx_uint64_t DCget_nextid(const char *table_name, int num);
-
/* initial sync, get all data */
#define ZBX_DBSYNC_INIT 0
/* update sync, get changed data */
@@ -800,8 +657,6 @@ void DCrequeue_items(const zbx_uint64_t *itemids, const int *lastclocks,
void DCpoller_requeue_items(const zbx_uint64_t *itemids, const int *lastclocks,
const int *errcodes, size_t num, unsigned char poller_type, int *nextcheck);
void zbx_dc_requeue_unreachable_items(zbx_uint64_t *itemids, size_t itemids_num);
-int DCconfig_activate_host(DC_ITEM *item);
-int DCconfig_deactivate_host(DC_ITEM *item, int now);
int DCconfig_check_trigger_dependencies(zbx_uint64_t triggerid);
@@ -898,7 +753,6 @@ void zbx_config_get_hk_mode(unsigned char *history_mode, unsigned char *trends_m
int DCset_interfaces_availability(zbx_vector_availability_ptr_t *availabilities);
int DCreset_interfaces_availability(zbx_vector_availability_ptr_t *interfaces);
-void DCupdate_interfaces_availability(void);
void zbx_dc_get_actions_eval(zbx_vector_ptr_t *actions, unsigned char opflags);
@@ -953,7 +807,6 @@ zbx_hc_item_t;
void zbx_free_item_tag(zbx_item_tag_t *item_tag);
int zbx_dc_get_active_proxy_by_name(const char *name, DC_PROXY *proxy, char **error);
-void zbx_dc_update_proxy_version(zbx_uint64_t hostid, int version);
typedef struct
{
@@ -1088,11 +941,6 @@ void zbx_dc_get_item_tags_by_functionids(const zbx_uint64_t *functionids, size_t
const char *zbx_dc_get_instanceid(void);
-/* diagnostic data */
-void zbx_hc_get_diag_stats(zbx_uint64_t *items_num, zbx_uint64_t *values_num);
-void zbx_hc_get_mem_stats(zbx_shmem_stats_t *data, zbx_shmem_stats_t *index);
-void zbx_hc_get_items(zbx_vector_uint64_pair_t *items);
-
typedef struct
{
zbx_uint64_t objectid;
@@ -1116,21 +964,8 @@ void zbx_dc_get_triggers_by_timers(zbx_hashset_t *trigger_info, zbx_vector_ptr_t
const zbx_vector_ptr_t *timers);
void zbx_dc_free_timers(zbx_vector_ptr_t *timers);
-int zbx_db_trigger_queue_locked(void);
-void zbx_db_trigger_queue_unlock(void);
-
void zbx_get_host_interfaces_availability(zbx_uint64_t hostid, zbx_agent_availability_t *agents);
-int zbx_hc_check_proxy(zbx_uint64_t proxyid);
-
-typedef int (*zbx_trigger_func_t)(zbx_variant_t *, const DC_ITEM *, const char *, const char *,
- const zbx_timespec_t *, char **);
-
-void zbx_db_trigger_explain_expression(const ZBX_DB_TRIGGER *trigger, char **expression,
- zbx_trigger_func_t eval_func_cb, int recovery);
-void zbx_db_trigger_get_function_value(const ZBX_DB_TRIGGER *trigger, int index, char **value,
- zbx_trigger_func_t eval_func_cb, int recovery);
-
/* external user macro cache API */
typedef struct zbx_dc_um_handle_t zbx_dc_um_handle_t;
diff --git a/include/zbxcachehistory.h b/include/zbxcachehistory.h
new file mode 100644
index 00000000000..b944d93294c
--- /dev/null
+++ b/include/zbxcachehistory.h
@@ -0,0 +1,136 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#ifndef ZABBIX_CACHEHISTORY_H
+#define ZABBIX_CACHEHISTORY_H
+
+#include "zbxcacheconfig.h"
+#include "zbxshmem.h"
+
+#define ZBX_SYNC_DONE 0
+#define ZBX_SYNC_MORE 1
+
+extern zbx_uint64_t CONFIG_HISTORY_CACHE_SIZE;
+extern zbx_uint64_t CONFIG_HISTORY_INDEX_CACHE_SIZE;
+extern zbx_uint64_t CONFIG_TRENDS_CACHE_SIZE;
+
+/* value_avg_t structure is used for item average value trend calculations. */
+/* */
+/* For double values the average value is calculated on the fly with the */
+/* following formula: avg = (dbl * count + value) / (count + 1) and stored */
+/* into dbl member. */
+/* For uint64 values the item values are summed into ui64 member and the */
+/* average value is calculated before flushing trends to database: */
+/* avg = ui64 / count */
+typedef union
+{
+ double dbl;
+ zbx_uint128_t ui64;
+}
+value_avg_t;
+
+typedef struct
+{
+ zbx_uint64_t itemid;
+ history_value_t value_min;
+ value_avg_t value_avg;
+ history_value_t value_max;
+ int clock;
+ int num;
+ int disable_from;
+ unsigned char value_type;
+}
+ZBX_DC_TREND;
+
+typedef struct
+{
+ zbx_uint64_t history_counter; /* the total number of processed values */
+ zbx_uint64_t history_float_counter; /* the number of processed float values */
+ zbx_uint64_t history_uint_counter; /* the number of processed uint values */
+ zbx_uint64_t history_str_counter; /* the number of processed str values */
+ zbx_uint64_t history_log_counter; /* the number of processed log values */
+ zbx_uint64_t history_text_counter; /* the number of processed text values */
+ zbx_uint64_t notsupported_counter; /* the number of processed not supported items */
+}
+ZBX_DC_STATS;
+
+/* the write cache statistics */
+typedef struct
+{
+ ZBX_DC_STATS stats;
+ zbx_uint64_t history_free;
+ zbx_uint64_t history_total;
+ zbx_uint64_t index_free;
+ zbx_uint64_t index_total;
+ zbx_uint64_t trend_free;
+ zbx_uint64_t trend_total;
+}
+zbx_wcache_info_t;
+
+void zbx_sync_history_cache(int *values_num, int *triggers_num, int *more);
+void zbx_log_sync_history_cache_progress(void);
+
+#define ZBX_SYNC_NONE 0
+#define ZBX_SYNC_ALL 1
+
+int init_database_cache(char **error);
+void free_database_cache(int);
+
+void change_proxy_history_count(int change_count);
+void reset_proxy_history_count(int reset);
+int get_proxy_history_count(void);
+
+#define ZBX_STATS_HISTORY_COUNTER 0
+#define ZBX_STATS_HISTORY_FLOAT_COUNTER 1
+#define ZBX_STATS_HISTORY_UINT_COUNTER 2
+#define ZBX_STATS_HISTORY_STR_COUNTER 3
+#define ZBX_STATS_HISTORY_LOG_COUNTER 4
+#define ZBX_STATS_HISTORY_TEXT_COUNTER 5
+#define ZBX_STATS_NOTSUPPORTED_COUNTER 6
+#define ZBX_STATS_HISTORY_TOTAL 7
+#define ZBX_STATS_HISTORY_USED 8
+#define ZBX_STATS_HISTORY_FREE 9
+#define ZBX_STATS_HISTORY_PUSED 10
+#define ZBX_STATS_HISTORY_PFREE 11
+#define ZBX_STATS_TREND_TOTAL 12
+#define ZBX_STATS_TREND_USED 13
+#define ZBX_STATS_TREND_FREE 14
+#define ZBX_STATS_TREND_PUSED 15
+#define ZBX_STATS_TREND_PFREE 16
+#define ZBX_STATS_HISTORY_INDEX_TOTAL 17
+#define ZBX_STATS_HISTORY_INDEX_USED 18
+#define ZBX_STATS_HISTORY_INDEX_FREE 19
+#define ZBX_STATS_HISTORY_INDEX_PUSED 20
+#define ZBX_STATS_HISTORY_INDEX_PFREE 21
+void *DCget_stats(int request);
+void DCget_stats_all(zbx_wcache_info_t *wcache_info);
+
+zbx_uint64_t DCget_nextid(const char *table_name, int num);
+
+void DCupdate_interfaces_availability(void);
+
+void zbx_hc_get_diag_stats(zbx_uint64_t *items_num, zbx_uint64_t *values_num);
+void zbx_hc_get_mem_stats(zbx_shmem_stats_t *data, zbx_shmem_stats_t *index);
+void zbx_hc_get_items(zbx_vector_uint64_pair_t *items);
+
+int zbx_db_trigger_queue_locked(void);
+void zbx_db_trigger_queue_unlock(void);
+
+int zbx_hc_check_proxy(zbx_uint64_t proxyid);
+#endif
diff --git a/src/libs/zbxdbcache/valuecache.h b/include/zbxcachevalue.h
index d61e1b52d22..8afbb280dfc 100644
--- a/src/libs/zbxdbcache/valuecache.h
+++ b/include/zbxcachevalue.h
@@ -17,8 +17,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#ifndef ZABBIX_VALUECACHE_H
-#define ZABBIX_VALUECACHE_H
+#ifndef ZABBIX_CACHEVALUE_H
+#define ZABBIX_CACHEVALUE_H
#include "zbxtypes.h"
#include "zbxalgo.h"
@@ -119,4 +119,4 @@ void zbx_vc_get_mem_stats(zbx_shmem_stats_t *mem);
void zbx_vc_get_item_stats(zbx_vector_ptr_t *stats);
void zbx_vc_flush_stats(void);
-#endif /* ZABBIX_VALUECACHE_H */
+#endif
diff --git a/include/zbxcommon.h b/include/zbxcommon.h
index a950e280195..284cffb1286 100644
--- a/include/zbxcommon.h
+++ b/include/zbxcommon.h
@@ -834,6 +834,7 @@ void zbx_version(void);
const char *get_program_name(const char *path);
typedef unsigned char (*zbx_get_program_type_f)(void);
+typedef const char *(*zbx_get_progname_f)(void);
typedef enum
{
diff --git a/include/zbxdbhigh.h b/include/zbxdbhigh.h
index d9db6416ad6..03067c163fd 100644
--- a/include/zbxdbhigh.h
+++ b/include/zbxdbhigh.h
@@ -43,13 +43,6 @@ extern int CONFIG_DBPORT;
extern int CONFIG_HISTSYNCER_FORKS;
extern int CONFIG_UNAVAILABLE_DELAY;
-typedef enum
-{
- ZBX_TEMPLATE_LINK_MANUAL = 0,
- ZBX_TEMPLATE_LINK_LLD = 1
-}
-zbx_host_template_link_type;
-
#define ZBX_DB_CONNECT_NORMAL 0
#define ZBX_DB_CONNECT_EXIT 1
#define ZBX_DB_CONNECT_ONCE 2
@@ -157,6 +150,8 @@ zbx_host_template_link_type;
#define ZBX_DSERVICE_VALUE_LEN 255
#define ZBX_MAX_DISCOVERED_VALUE_SIZE (ZBX_DSERVICE_VALUE_LEN * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1)
+typedef zbx_uint64_t (*zbx_dc_get_nextid_func_t)(const char *table_name, int num);
+
#ifdef HAVE_ORACLE
# define ZBX_PLSQL_BEGIN "begin\n"
# define ZBX_PLSQL_END "end;"
@@ -241,6 +236,7 @@ typedef struct
}
ZBX_DB_TRIGGER;
+/* temporary cache of trigger related data */
typedef struct
{
zbx_uint64_t serviceid;
@@ -418,7 +414,7 @@ typedef struct
}
zbx_service_alarm_t;
-int DBinit(char **error);
+int DBinit(zbx_dc_get_nextid_func_t cb_nextid, unsigned char program, char **error);
void DBdeinit(void);
void DBinit_autoincrement_options(void);
@@ -505,7 +501,6 @@ typedef struct
}
zbx_trigger_diff_t;
-void zbx_process_triggers(zbx_vector_ptr_t *triggers, zbx_vector_ptr_t *trigger_diff);
void zbx_db_save_trigger_changes(const zbx_vector_ptr_t *trigger_diff);
void zbx_trigger_diff_free(zbx_trigger_diff_t *diff);
void zbx_append_trigger_diff(zbx_vector_ptr_t *trigger_diff, zbx_uint64_t triggerid, unsigned char priority,
@@ -516,27 +511,6 @@ char *DBdyn_escape_string(const char *src);
char *DBdyn_escape_string_len(const char *src, size_t length);
char *DBdyn_escape_like_pattern(const char *src);
-int DBadd_templates_to_host(int hostid, int host_templateid);
-
-int DBadd_template_linkage(int hostid, int templateid, int items, int triggers, int graphs);
-
-int DBadd_trigger_to_linked_hosts(int triggerid, int hostid);
-void DBdelete_sysmaps_hosts_by_hostid(zbx_uint64_t hostid);
-
-int DBadd_graph_item_to_linked_hosts(int gitemid, int hostid);
-
-int DBcopy_template_elements(zbx_uint64_t hostid, zbx_vector_uint64_t *lnk_templateids,
- zbx_host_template_link_type link_type, char **error);
-int DBdelete_template_elements(zbx_uint64_t hostid, const char *hostname, zbx_vector_uint64_t *del_templateids,
- char **error);
-
-void DBdelete_items(zbx_vector_uint64_t *itemids);
-void DBdelete_graphs(zbx_vector_uint64_t *graphids);
-void DBdelete_triggers(zbx_vector_uint64_t *triggerids);
-
-void DBdelete_hosts(const zbx_vector_uint64_t *hostids, const zbx_vector_str_t *hostnames);
-void DBdelete_hosts_with_prototypes(const zbx_vector_uint64_t *hostids, const zbx_vector_str_t *hostnames);
-
void DBadd_condition_alloc(char **sql, size_t *sql_alloc, size_t *sql_offset, const char *fieldname,
const zbx_uint64_t *values, const int num);
void DBadd_str_condition_alloc(char **sql, size_t *sql_alloc, size_t *sql_offset, const char *fieldname,
@@ -574,22 +548,8 @@ typedef enum
}
zbx_conn_flags_t;
-zbx_uint64_t DBadd_interface(zbx_uint64_t hostid, unsigned char type, unsigned char useip,
- const char *ip, const char *dns, unsigned short port, zbx_conn_flags_t flags);
-void DBadd_interface_snmp(const zbx_uint64_t interfaceid, const unsigned char version,
- const unsigned char bulk, const char *community, const char *securityname,
- const unsigned char securitylevel, const char *authpassphrase, const char *privpassphrase,
- const unsigned char authprotocol, const unsigned char privprotocol, const char *contextname,
- const zbx_uint64_t hostid);
-
const char *DBget_inventory_field(unsigned char inventory_link);
-void DBset_host_inventory(zbx_uint64_t hostid, int inventory_mode);
-void DBadd_host_inventory(zbx_uint64_t hostid, int inventory_mode);
-
-int DBtxn_status(void);
-int DBtxn_ongoing(void);
-
int DBtable_exists(const char *table_name);
int DBfield_exists(const char *table_name, const char *field_name);
#ifndef HAVE_SQLITE3
@@ -613,8 +573,6 @@ int DBlock_ids(const char *table_name, const char *field_name, zbx_vector_uint64
#define DBlock_itemids(ids) DBlock_records("items", ids)
#define DBlock_group_prototypeids(ids) DBlock_records("group_prototype", ids)
-void DBdelete_groups(zbx_vector_uint64_t *groupids);
-
void DBselect_uint64(const char *sql, zbx_vector_uint64_t *ids);
void DBcheck_character_set(void);
@@ -682,15 +640,6 @@ typedef struct
}
zbx_item_diff_t;
-/* event support */
-void zbx_db_get_events_by_eventids(zbx_vector_uint64_t *eventids, zbx_vector_ptr_t *events);
-void zbx_db_free_event(ZBX_DB_EVENT *event);
-void zbx_db_get_eventid_r_eventid_pairs(zbx_vector_uint64_t *eventids, zbx_vector_uint64_pair_t *event_pairs,
- zbx_vector_uint64_t *r_eventids);
-void zbx_db_trigger_get_expression(const ZBX_DB_TRIGGER *trigger, char **expression);
-void zbx_db_trigger_get_recovery_expression(const ZBX_DB_TRIGGER *trigger, char **expression);
-void zbx_db_trigger_clean(ZBX_DB_TRIGGER *trigger);
-
typedef struct
{
zbx_uint64_t hostid;
@@ -725,19 +674,6 @@ int zbx_db_lock_maintenanceids(zbx_vector_uint64_t *maintenanceids);
void zbx_db_save_item_changes(char **sql, size_t *sql_alloc, size_t *sql_offset, const zbx_vector_ptr_t *item_diff,
zbx_uint64_t mask);
-/* mock field to estimate how much data can be stored in characters, bytes or both, */
-/* depending on database backend */
-
-typedef struct
-{
- int bytes_num;
- int chars_num;
-}
-zbx_db_mock_field_t;
-
-void zbx_db_mock_field_init(zbx_db_mock_field_t *field, int field_type, int field_len);
-int zbx_db_mock_field_append(zbx_db_mock_field_t *field, const char *text);
-
int zbx_db_check_instanceid(void);
/* tags */
@@ -835,18 +771,20 @@ void zbx_load_lld_override_operations(const zbx_vector_uint64_t *overrideids, ch
#define ZBX_TIMEZONE_DEFAULT_VALUE "default"
-void zbx_db_trigger_get_all_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids);
-void zbx_db_trigger_get_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids);
-int zbx_db_trigger_get_all_hostids(const ZBX_DB_TRIGGER *trigger, const zbx_vector_uint64_t **hostids);
-int zbx_db_trigger_get_constant(const ZBX_DB_TRIGGER *trigger, int index, char **out);
-int zbx_db_trigger_get_itemid(const ZBX_DB_TRIGGER *trigger, int index, zbx_uint64_t *itemid);
-void zbx_db_trigger_get_itemids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *itemids);
-
-int DBselect_ids_names(const char *sql, zbx_vector_uint64_t *ids, zbx_vector_str_t *names);
-
int zbx_db_check_version_info(struct zbx_db_version_info_t *info, int allow_unsupported);
void zbx_db_version_info_clear(struct zbx_db_version_info_t *version_info);
+#define ZBX_MAX_HRECORDS 1000
+#define ZBX_MAX_HRECORDS_TOTAL 10000
+
+#define ZBX_PROXY_DATA_DONE 0
+#define ZBX_PROXY_DATA_MORE 1
+
+void calc_timestamp(const char *line, int *timestamp, const char *format);
+
+char *zbx_get_proxy_protocol_version_str(const struct zbx_json_parse *jp);
+int zbx_get_proxy_protocol_version_int(const char *version_str);
+
/* condition evaluation types */
#define ZBX_ACTION_CONDITION_EVAL_TYPE_AND_OR 0
#define ZBX_ACTION_CONDITION_EVAL_TYPE_AND 1
@@ -883,4 +821,19 @@ void zbx_db_version_info_clear(struct zbx_db_version_info_t *version_info);
#define ZBX_CONDITION_TYPE_SERVICE 27
#define ZBX_CONDITION_TYPE_SERVICE_NAME 28
+typedef struct
+{
+ zbx_uint64_t autoreg_hostid;
+ zbx_uint64_t hostid;
+ char *host;
+ char *ip;
+ char *dns;
+ char *host_metadata;
+ int now;
+ unsigned short port;
+ unsigned short flag;
+ unsigned int connection_type;
+}
+zbx_autoreg_host_t;
+
#endif /* ZABBIX_DBHIGH_H */
diff --git a/include/zbxdbwrap.h b/include/zbxdbwrap.h
new file mode 100644
index 00000000000..9b058ed9846
--- /dev/null
+++ b/include/zbxdbwrap.h
@@ -0,0 +1,123 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#ifndef ZABBIX_DBWRAP_H
+#define ZABBIX_DBWRAP_H
+
+#include "zbxdbhigh.h"
+#include "zbxcacheconfig.h"
+
+#define ZBX_PROXYMODE_ACTIVE 0
+#define ZBX_PROXYMODE_PASSIVE 1
+
+#define ZBX_PROXY_UPLOAD_UNDEFINED 0
+#define ZBX_PROXY_UPLOAD_DISABLED 1
+#define ZBX_PROXY_UPLOAD_ENABLED 2
+
+#define ZBX_PROXY_ACTIVE_CHECK_AVAIL_TIMEOUT 30
+
+typedef enum
+{
+ ZBX_TEMPLATE_LINK_MANUAL = 0,
+ ZBX_TEMPLATE_LINK_LLD = 1
+}
+zbx_host_template_link_type;
+
+int check_access_passive_proxy(zbx_socket_t *sock, int send_response, const char *req,
+ const zbx_config_tls_t *zbx_config_tls);
+
+int get_active_proxy_from_request(const struct zbx_json_parse *jp, DC_PROXY *proxy, char **error);
+int zbx_proxy_check_permissions(const DC_PROXY *proxy, const zbx_socket_t *sock, char **error);
+
+int get_interface_availability_data(struct zbx_json *json, int *ts);
+
+int proxy_get_hist_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more);
+int proxy_get_dhis_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more);
+int proxy_get_areg_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more);
+void proxy_set_hist_lastid(const zbx_uint64_t lastid);
+void proxy_set_dhis_lastid(const zbx_uint64_t lastid);
+void proxy_set_areg_lastid(const zbx_uint64_t lastid);
+int proxy_get_host_active_availability(struct zbx_json *j);
+
+int proxy_get_history_count(void);
+int proxy_get_delay(zbx_uint64_t lastid);
+
+int process_history_data(DC_ITEM *items, zbx_agent_value_t *values, int *errcodes, size_t values_num,
+ zbx_proxy_suppress_t *nodata_win);
+
+void zbx_update_proxy_data(DC_PROXY *proxy, char *version_str, int version_int, int lastaccess, int compress,
+ zbx_uint64_t flags_add);
+
+int process_agent_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info);
+int process_sender_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info);
+int process_proxy_data(const DC_PROXY *proxy, struct zbx_json_parse *jp, zbx_timespec_t *ts,
+ unsigned char proxy_status, int *more, char **error);
+int zbx_check_protocol_version(DC_PROXY *proxy, int version);
+
+int DBcopy_template_elements(zbx_uint64_t hostid, zbx_vector_uint64_t *lnk_templateids,
+ zbx_host_template_link_type link_type, char **error);
+int DBdelete_template_elements(zbx_uint64_t hostid, const char *hostname, zbx_vector_uint64_t *del_templateids,
+ char **error);
+
+void DBdelete_items(zbx_vector_uint64_t *itemids);
+void DBdelete_graphs(zbx_vector_uint64_t *graphids);
+void DBdelete_triggers(zbx_vector_uint64_t *triggerids);
+
+void DBdelete_hosts(const zbx_vector_uint64_t *hostids, const zbx_vector_str_t *hostnames);
+void DBdelete_hosts_with_prototypes(const zbx_vector_uint64_t *hostids, const zbx_vector_str_t *hostnames);
+
+void DBset_host_inventory(zbx_uint64_t hostid, int inventory_mode);
+void DBadd_host_inventory(zbx_uint64_t hostid, int inventory_mode);
+
+void DBdelete_groups(zbx_vector_uint64_t *groupids);
+
+zbx_uint64_t DBadd_interface(zbx_uint64_t hostid, unsigned char type, unsigned char useip,
+ const char *ip, const char *dns, unsigned short port, zbx_conn_flags_t flags);
+void DBadd_interface_snmp(const zbx_uint64_t interfaceid, const unsigned char version,
+ const unsigned char bulk, const char *community, const char *securityname,
+ const unsigned char securitylevel, const char *authpassphrase, const char *privpassphrase,
+ const unsigned char authprotocol, const unsigned char privprotocol, const char *contextname,
+ const zbx_uint64_t hostid);
+
+/* event support */
+void zbx_db_get_events_by_eventids(zbx_vector_uint64_t *eventids, zbx_vector_ptr_t *events);
+void zbx_db_free_event(ZBX_DB_EVENT *event);
+void zbx_db_get_eventid_r_eventid_pairs(zbx_vector_uint64_t *eventids, zbx_vector_uint64_pair_t *event_pairs,
+ zbx_vector_uint64_t *r_eventids);
+
+void zbx_db_trigger_get_all_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids);
+void zbx_db_trigger_get_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids);
+int zbx_db_trigger_get_constant(const ZBX_DB_TRIGGER *trigger, int index, char **out);
+int zbx_db_trigger_get_all_hostids(const ZBX_DB_TRIGGER *trigger, const zbx_vector_uint64_t **hostids);
+int zbx_db_trigger_get_itemid(const ZBX_DB_TRIGGER *trigger, int index, zbx_uint64_t *itemid);
+void zbx_db_trigger_get_itemids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *itemids);
+
+void zbx_db_trigger_get_expression(const ZBX_DB_TRIGGER *trigger, char **expression);
+void zbx_db_trigger_get_recovery_expression(const ZBX_DB_TRIGGER *trigger, char **expression);
+void zbx_db_trigger_clean(ZBX_DB_TRIGGER *trigger);
+
+typedef int (*zbx_trigger_func_t)(zbx_variant_t *, const DC_ITEM *, const char *, const char *,
+ const zbx_timespec_t *, char **);
+
+void zbx_db_trigger_explain_expression(const ZBX_DB_TRIGGER *trigger, char **expression,
+ zbx_trigger_func_t eval_func_cb, int recovery);
+void zbx_db_trigger_get_function_value(const ZBX_DB_TRIGGER *trigger, int index, char **value,
+ zbx_trigger_func_t eval_func_cb, int recovery);
+
+#endif /* ZABBIX_DBWRAP_H */
diff --git a/include/zbxhistory.h b/include/zbxhistory.h
index e5407471841..ce2b7097d31 100644
--- a/include/zbxhistory.h
+++ b/include/zbxhistory.h
@@ -67,4 +67,18 @@ void zbx_history_check_version(struct zbx_json *json, int *result);
#define FLUSH_FAIL -1
#define FLUSH_DUPL_REJECTED -2
+typedef struct
+{
+ zbx_uint64_t itemid;
+ history_value_t value;
+ zbx_uint64_t lastlogsize;
+ zbx_timespec_t ts;
+ int mtime;
+ unsigned char value_type;
+ unsigned char flags; /* see ZBX_DC_FLAG_* */
+ unsigned char state;
+ int ttl; /* time-to-live of the history value */
+}
+ZBX_DC_HISTORY;
+
#endif
diff --git a/include/zbxjson.h b/include/zbxjson.h
index 28ed6fd68a6..e5c91376b14 100644
--- a/include/zbxjson.h
+++ b/include/zbxjson.h
@@ -21,6 +21,7 @@
#define ZABBIX_ZJSON_H
#include "zbxtypes.h"
+#include "zbxalgo.h"
#define ZBX_PROTO_TAG_CLOCK "clock"
#define ZBX_PROTO_TAG_NS "ns"
@@ -250,7 +251,8 @@ typedef enum
ZBX_JSON_TYPE_OBJECT,
ZBX_JSON_TYPE_NULL,
ZBX_JSON_TYPE_TRUE,
- ZBX_JSON_TYPE_FALSE
+ ZBX_JSON_TYPE_FALSE,
+ ZBX_JSON_TYPE_NUMBER
}
zbx_json_type_t;
@@ -330,11 +332,51 @@ typedef struct
/* set to 1 when jsonpath points at single location */
unsigned char definite;
+ unsigned char first_match; /* set to 1 if first match must be returned */
}
zbx_jsonpath_t;
-void zbx_jsonpath_clear(zbx_jsonpath_t *jsonpath);
+typedef struct zbx_jsonobj zbx_jsonobj_t;
+
+ZBX_PTR_VECTOR_DECL(jsonobj_ptr, zbx_jsonobj_t *)
+
+typedef union
+{
+ char *string;
+ double number;
+ zbx_hashset_t object;
+ zbx_vector_jsonobj_ptr_t array;
+}
+zbx_jsonobj_data_t;
+
+typedef struct
+{
+ char *path; /* the path that was indexed - for example @.a.b.c */
+ zbx_hashset_t objects;
+}
+zbx_jsonobj_index_t;
+
+struct zbx_jsonobj
+{
+ zbx_json_type_t type;
+ zbx_jsonobj_data_t data;
+ zbx_jsonobj_index_t *index;
+};
+
+typedef struct
+{
+ char *name;
+ zbx_jsonobj_t value;
+}
+zbx_jsonobj_el_t;
+
int zbx_jsonpath_compile(const char *path, zbx_jsonpath_t *jsonpath);
int zbx_jsonpath_query(const struct zbx_json_parse *jp, const char *path, char **output);
+void zbx_jsonpath_clear(zbx_jsonpath_t *jsonpath);
+
+int zbx_jsonobj_open(const char *data, zbx_jsonobj_t *obj);
+void zbx_jsonobj_clear(zbx_jsonobj_t *obj);
+int zbx_jsonobj_query(zbx_jsonobj_t *obj, const char *path, char **output);
+int zbx_jsonobj_to_string(char **str, size_t *str_alloc, size_t *str_offset, zbx_jsonobj_t *obj);
#endif /* ZABBIX_ZJSON_H */
diff --git a/include/zbxnix.h b/include/zbxnix.h
index eae8b6af05e..e66c4b6415b 100644
--- a/include/zbxnix.h
+++ b/include/zbxnix.h
@@ -46,7 +46,8 @@ int ZBX_EXIT_STATUS(void);
typedef const char* (*zbx_get_pid_file_pathname_f)(void);
int zbx_daemon_start(int allow_root, const char *user, unsigned int flags,
- zbx_get_pid_file_pathname_f get_pid_file_cb, zbx_on_exit_t zbx_on_exit_cb_arg);
+ zbx_get_pid_file_pathname_f get_pid_file_cb, zbx_on_exit_t zbx_on_exit_cb_arg, int config_log_type,
+ const char *config_log_file);
void zbx_daemon_stop(void);
int zbx_sigusr_send(int flags, const char *pid_file_pathname);
diff --git a/include/zbxserver.h b/include/zbxserver.h
index 3ee7a23f38f..2f164e5caf2 100644
--- a/include/zbxserver.h
+++ b/include/zbxserver.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_ZBXSERVER_H
#define ZABBIX_ZBXSERVER_H
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "zbxvariant.h"
#define MACRO_TYPE_MESSAGE_NORMAL 0x00000001
diff --git a/include/zbxtrends.h b/include/zbxtrends.h
index cfda9865b6f..b3e097a9633 100644
--- a/include/zbxtrends.h
+++ b/include/zbxtrends.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_ZBXTRENDS_H
#define ZABBIX_ZBXTRENDS_H
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "zbxtime.h"
int zbx_trends_parse_base(const char *params, zbx_time_unit_t *base, char **error);
diff --git a/include/perfmon.h b/include/zbxwin32.h
index c52c85a2f9b..a8382c38d17 100644
--- a/include/perfmon.h
+++ b/include/zbxwin32.h
@@ -17,15 +17,21 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#ifndef ZABBIX_PERFMON_H
-#define ZABBIX_PERFMON_H
+#ifndef ZABBIX_WIN32_H
+#define ZABBIX_WIN32_H
+#include "config.h"
#include "zbxsysinc.h"
+#include "zbxtypes.h"
+#include "zbxcommon.h"
#if !defined(_WINDOWS) && !defined(__MINGW32__)
# error "This module is only available for Windows OS"
#endif
+#define zbx_get_builtin_object_name(ctr) zbx_get_counter_name(zbx_get_builtin_object_index(ctr))
+#define zbx_get_builtin_counter_name(ctr) zbx_get_counter_name(zbx_get_builtin_counter_index(ctr))
+
/* this struct must be only modified along with mapping builtin_counter_ref[] in perfmon.c */
typedef enum
{
@@ -80,22 +86,27 @@ typedef struct perf_counter_data
}
zbx_perf_counter_data_t;
+zbx_uint64_t zbx_get_cluster_size(const char *path, char **error);
+
PDH_STATUS zbx_PdhMakeCounterPath(const char *function, PDH_COUNTER_PATH_ELEMENTS *cpe, char *counterpath);
PDH_STATUS zbx_PdhOpenQuery(const char *function, PDH_HQUERY query);
PDH_STATUS zbx_PdhAddCounter(const char *function, zbx_perf_counter_data_t *counter, PDH_HQUERY query,
const char *counterpath, zbx_perf_counter_lang_t lang, PDH_HCOUNTER *handle);
PDH_STATUS zbx_PdhCollectQueryData(const char *function, const char *counterpath, PDH_HQUERY query);
-PDH_STATUS zbx_PdhGetRawCounterValue(const char *function, const char *counterpath, PDH_HCOUNTER handle, PPDH_RAW_COUNTER value);
+PDH_STATUS zbx_PdhGetRawCounterValue(const char *function, const char *counterpath, PDH_HCOUNTER handle,
+ PPDH_RAW_COUNTER value);
+
+PDH_STATUS zbx_calculate_counter_value(const char *function, const char *counterpath,
+ zbx_perf_counter_lang_t lang, double *value);
+wchar_t *zbx_get_counter_name(DWORD pdhIndex);
+int zbx_check_counter_path(char *counterPath, int convert_from_numeric);
+int zbx_init_builtin_counter_indexes(void);
+DWORD zbx_get_builtin_object_index(zbx_builtin_counter_ref_t counter_ref);
+DWORD zbx_get_builtin_counter_index(zbx_builtin_counter_ref_t counter_ref);
+wchar_t *zbx_get_all_counter_names(HKEY reg_key, wchar_t *reg_value_name);
-PDH_STATUS calculate_counter_value(const char *function, const char *counterpath, zbx_perf_counter_lang_t lang, double *value);
-wchar_t *get_counter_name(DWORD pdhIndex);
-int check_counter_path(char *counterPath, int convert_from_numeric);
-int init_builtin_counter_indexes(void);
-DWORD get_builtin_object_index(zbx_builtin_counter_ref_t counter_ref);
-DWORD get_builtin_counter_index(zbx_builtin_counter_ref_t counter_ref);
-wchar_t *get_all_counter_names(HKEY reg_key, wchar_t *reg_value_name);
+int zbx_win_exception_filter(struct _EXCEPTION_POINTERS *ep);
-#define get_builtin_object_name(ctr) get_counter_name(get_builtin_object_index(ctr))
-#define get_builtin_counter_name(ctr) get_counter_name(get_builtin_counter_index(ctr))
+void zbx_init_library_win32(zbx_get_progname_f get_progname);
-#endif /* ZABBIX_PERFMON_H */
+#endif /* ZABBIX_WIN32_H */
diff --git a/include/zbxwinservice.h b/include/zbxwinservice.h
index 9ac2e3b866f..4313b585ec0 100644
--- a/include/zbxwinservice.h
+++ b/include/zbxwinservice.h
@@ -26,17 +26,16 @@
#include "zbxthreads.h"
-extern ZBX_THREAD_HANDLE *threads;
+typedef void (*zbx_on_exit_t)(int);
-void service_start(int flags);
+void zbx_service_start(int flags);
int ZabbixCreateService(const char *path, int multiple_agents, const char *config_file);
int ZabbixRemoveService(void);
int ZabbixStartService(void);
int ZabbixStopService(void);
-typedef void (*zbx_on_exit_t)(int);
-void set_parent_signal_handler(zbx_on_exit_t zbx_on_exit_cb_arg);
+void zbx_set_parent_signal_handler(zbx_on_exit_t zbx_on_exit_cb_arg);
int ZBX_IS_RUNNING(void);
void ZBX_DO_EXIT(void);
diff --git a/sass/stylesheets/sass/components/_columns-wrapper.scss b/sass/stylesheets/sass/components/_columns-wrapper.scss
new file mode 100644
index 00000000000..3f10c77bf29
--- /dev/null
+++ b/sass/stylesheets/sass/components/_columns-wrapper.scss
@@ -0,0 +1,79 @@
+.columns-wrapper {
+ $column-count: (2, 3);
+ $column-size: (
+ 5: 5%,
+ 10: 10%,
+ 15: 15%,
+ 20: 20%,
+ 33: 33.33333%,
+ 35: 35%,
+ 40: 40%,
+ 50: 50%,
+ 75: 75%,
+ 90: 90%,
+ 95: 95%
+ );
+
+ display: flex;
+ flex-wrap: wrap;
+ align-items: start;
+
+ &.columns-nowrap {
+ flex-wrap: nowrap;
+ }
+
+ // Dynamically generated classes for the columns count:
+ // .columns-2
+ // .columns-3
+ @each $count in $column-count {
+ &.columns-#{$count} > {
+ div,
+ li {
+ display: block;
+ flex: 0 0 (100% / $count);
+ max-width: (100% / $count);
+ }
+ }
+ }
+
+ // Dynamically generated classes for the column width:
+ // .column-5
+ // .column-10
+ // .column-15
+ // .column-20
+ // .column-33
+ // .column-35
+ // .column-40
+ // .column-50
+ // .column-75
+ // .column-90
+ // .column-95
+ @each $class, $width in $column-size {
+ .column-#{$class} {
+ flex: 0 0 $width;
+ max-width: $width;
+ }
+ }
+
+ .column-center {
+ display: flex;
+ justify-content: center;
+ text-align: center;
+ }
+
+ .column-middle {
+ display: flex;
+ align-items: center;
+ }
+
+ & > {
+ div,
+ ul {
+ &:not(:last-child) {
+ section {
+ margin-right: 10px;
+ }
+ }
+ }
+ }
+}
diff --git a/sass/stylesheets/sass/components/_section.scss b/sass/stylesheets/sass/components/_section.scss
new file mode 100644
index 00000000000..e0c21a3aaf2
--- /dev/null
+++ b/sass/stylesheets/sass/components/_section.scss
@@ -0,0 +1,72 @@
+section {
+ background-color: $ui-bg-color;
+ border: 1px solid $ui-border-color;
+
+ .section-head {
+ display: flex;
+ height: 32px;
+ line-height: 32px;
+
+ h4 {
+ padding: 0 10px;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-weight: bold;
+ line-height: inherit;
+ color: lighten($font-color, 15%);
+ }
+ }
+
+ .section-toggle {
+ @extend %btn-widget-defaults;
+
+ width: 24px;
+ height: 24px;
+ margin: 2px 2px 0 auto;
+ background: url($sprite-path) no-repeat -6px -654px;
+ }
+
+ .section-foot {
+ padding: 0 10px;
+ text-align: right;
+ line-height: 32px;
+ color: $font-alt-color;
+ }
+
+ &.section-collapsed {
+ .section-body,
+ .section-foot {
+ display: none;
+ }
+
+ .section-toggle {
+ background-position: -6px -689px;
+ }
+ }
+
+ &:not(:last-child) {
+ margin-bottom: 10px;
+ }
+
+ .list-table {
+ border: 0;
+
+ tbody tr:last-child {
+ td {
+ border-bottom: 1px solid $table-border-color;
+ }
+ }
+
+ td,
+ th {
+ &:first-child {
+ padding-left: 10px;
+ }
+
+ &:last-child {
+ padding-right: 10px;
+ }
+ }
+ }
+}
diff --git a/sass/stylesheets/sass/components/dashboard/_dashboard.scss b/sass/stylesheets/sass/components/dashboard/_dashboard.scss
index 726e26674ff..6855839e555 100644
--- a/sass/stylesheets/sass/components/dashboard/_dashboard.scss
+++ b/sass/stylesheets/sass/components/dashboard/_dashboard.scss
@@ -978,10 +978,6 @@
.msg-warning {
margin: 0 10px;
}
-
- &.dashboard-widget-fluid {
- margin-right: 0;
- }
}
%dashboard-widget-td {
diff --git a/sass/stylesheets/sass/components/dashboard/_widget-clock.scss b/sass/stylesheets/sass/components/dashboard/_widget-clock.scss
index 41497454cf9..638de52aaed 100644
--- a/sass/stylesheets/sass/components/dashboard/_widget-clock.scss
+++ b/sass/stylesheets/sass/components/dashboard/_widget-clock.scss
@@ -1,39 +1,40 @@
// Widget configuration.
form.dashboard-widget-clock {
- .fields-group-date,
- .fields-group-time,
- .fields-group-tzone {
- display: grid;
- grid-template-columns: 60px 120px repeat(2, minmax(60px, max-content) auto);
- align-items: center;
- column-gap: 10px;
- row-gap: 5px;
-
- label {
- text-align: right;
- }
+ .fields-group {
+ &.fields-group-date,
+ &.fields-group-time,
+ &.fields-group-tzone {
+ display: grid;
+ grid-template-columns: 60px 120px repeat(2, minmax(60px, max-content) auto);
+ align-items: center;
+ column-gap: 10px;
+ row-gap: 5px;
- .field-size {
- input {
- margin-right: 5px;
+ label {
+ text-align: right;
}
- }
- }
- .fields-group-time {
- .field-format {
- grid-column: 4 / -1;
+ .field-size {
+ input {
+ margin-right: 5px;
+ }
+ }
}
- }
- .fields-group-tzone {
- .field-format {
- grid-column: 2 / -1;
+ &.fields-group-time {
+ .field-format {
+ grid-column: 4 / -1;
+ }
}
- .field-timezone {
- grid-column: 2 / -1;
+ &.fields-group-tzone {
+ .form-field {
+ &.field-tzone-timezone,
+ &.field-tzone-format {
+ grid-column: 2 / -1;
+ }
+ }
}
}
}
@@ -41,7 +42,7 @@ form.dashboard-widget-clock {
// Widget view.
div.dashboard-widget-clock {
- &.clock-digital {
+ .clock-digital {
$line-height: 1.14;
box-sizing: border-box;
diff --git a/sass/stylesheets/sass/components/dashboard/_widget-inaccessible.scss b/sass/stylesheets/sass/components/dashboard/_widget-inaccessible.scss
new file mode 100644
index 00000000000..8349b4eb3c2
--- /dev/null
+++ b/sass/stylesheets/sass/components/dashboard/_widget-inaccessible.scss
@@ -0,0 +1,8 @@
+.dashboard-widget-inaccessible {
+ display: grid;
+ align-items: center;
+ padding-right: 10px;
+ padding-left: 10px;
+ text-align: center;
+ color: $font-alt-color;
+}
diff --git a/sass/stylesheets/sass/components/dashboard/_widget-item.scss b/sass/stylesheets/sass/components/dashboard/_widget-item.scss
index f3a36d2d73a..3c1c86646d9 100644
--- a/sass/stylesheets/sass/components/dashboard/_widget-item.scss
+++ b/sass/stylesheets/sass/components/dashboard/_widget-item.scss
@@ -1,71 +1,73 @@
// Widget configuration.
form.dashboard-widget-item {
- .fields-group-description,
- .fields-group-value,
- .fields-group-time,
- .fields-group-change-indicator {
- display: grid;
- grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
- align-items: center;
- column-gap: 10px;
- row-gap: 5px;
-
- label {
- text-align: right;
- }
+ .fields-group {
+ &.fields-group-description,
+ &.fields-group-value,
+ &.fields-group-time,
+ &.fields-group-change-indicator {
+ display: grid;
+ grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
+ align-items: center;
+ column-gap: 10px;
+ row-gap: 5px;
+
+ label {
+ text-align: right;
+ }
- hr {
- grid-column: 1 / -1;
- margin: 0;
- width: 100%;
- border: solid $table-border-color;
- border-width: 1px 0 0 0;
- }
+ hr {
+ grid-column: 1 / -1;
+ margin: 0;
+ width: 100%;
+ border: solid $table-border-color;
+ border-width: 1px 0 0 0;
+ }
- .field-fluid {
- grid-column: 2 / -1;
- }
+ .field-fluid {
+ grid-column: 2 / -1;
+ }
- .offset-3 {
- grid-column-start: 3;
- }
+ .offset-3 {
+ grid-column-start: 3;
+ }
- .field-size {
- input {
- margin-right: 5px;
+ .field-size {
+ input {
+ margin-right: 5px;
+ }
}
- }
- .form-field {
- line-height: 24px;
+ .form-field {
+ line-height: 24px;
+ }
}
- }
- .fields-group-description {
- .form-field:nth-child(1) {
- grid-column: 1 / -1;
+ &.fields-group-description {
+ .form-field:nth-child(1) {
+ grid-column: 1 / -1;
+ }
}
- }
- .fields-group-value {
- grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
+ &.fields-group-value {
+ grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
- .units-show {
- display: flex;
+ .units-show {
+ display: flex;
- label[for='units'] {
- width: 100%;
+ label[for='units'] {
+ width: 100%;
+ }
}
}
- }
- .fields-group-change-indicator {
- grid-template-columns: repeat(3, max-content 96px);
- }
+ &.fields-group-change-indicator {
+ grid-template-columns: repeat(3, max-content 96px);
- .fields-group-change-indicator .input-color-picker {
- display: block;
+ .input-color-picker {
+ display: block;
+ }
+ }
}
}
@@ -74,12 +76,14 @@ form.dashboard-widget-item {
div.dashboard-widget-item {
$line-height: 1.14;
- box-sizing: border-box;
- height: 100%;
- padding: 10px;
- overflow-x: hidden;
+ > div {
+ box-sizing: border-box;
+ height: 100%;
+ padding: 10px;
+ overflow-x: hidden;
- @extend %webkit-scrollbar;
+ @extend %webkit-scrollbar;
+ }
a {
box-sizing: border-box;
diff --git a/sass/stylesheets/sass/components/dashboard/_widget-svggraph.scss b/sass/stylesheets/sass/components/dashboard/_widget-svggraph.scss
index e32ad97b80a..671d18331ff 100644
--- a/sass/stylesheets/sass/components/dashboard/_widget-svggraph.scss
+++ b/sass/stylesheets/sass/components/dashboard/_widget-svggraph.scss
@@ -1,12 +1,30 @@
// Widget configuration.
form.dashboard-widget-svggraph {
+ .svg-graph-preview,
.graph-widget-config-tabs {
- padding: 10px 0;
+ grid-column: 1 / -1;
+ }
+
+ .svg-graph-preview {
+ position: relative;
+ min-width: 1110px;
+ height: 300px;
+
+ > div {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ margin: 0 -10px;
+ height: 300px;
+ background: $ui-bg-color;
+ z-index: 3;
+ }
+ }
+ .graph-widget-config-tabs {
> .tabs-nav {
- margin-right: 0;
- margin-left: 0;
border-top: 1px solid $ui-border-color;
}
@@ -19,6 +37,7 @@ form.dashboard-widget-svggraph {
}
.table-forms-container {
+ margin: -10px 0 0 0;
border: 1px solid $ui-border-color;
border-top: none;
}
@@ -27,32 +46,30 @@ form.dashboard-widget-svggraph {
padding: 0;
}
- .dataset-head {
- display: grid;
- grid-template-columns: 24px 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start;
+ .dataset-head,
+ .dataset-body.list-accordion-item-body {
+ display: contents;
}
- .dataset-body.list-accordion-item-body {
- display: grid;
- grid-template-columns: 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start;
- position: relative;
- margin-top: 10px;
+ .dataset-head {
+ .multiselect {
+ width: 100%;
+ }
+ }
+ .dataset-body {
.form-grid {
padding-top: 0;
&:first-child {
- grid-column-start: 2;
+ grid-column-start: 3;
}
}
}
.drag-icon {
position: absolute;
+ top: 5px;
left: -14px;
}
@@ -88,17 +105,15 @@ form.dashboard-widget-svggraph {
margin-top: -5px;
margin-bottom: -5px;
}
-
- .list-accordion-item-head {
- padding: 0;
- }
}
.list-accordion-item {
position: relative;
- width: 100%;
+ display: grid;
+ grid-template-columns: 24px 24px 1fr 1fr 24px;
+ grid-gap: 10px;
+ align-items: start;
padding: 5px 0;
- list-style-type: none;
&.list-accordion-item-opened {
&::before {
@@ -119,10 +134,6 @@ form.dashboard-widget-svggraph {
overflow: hidden;
}
- .dataset-body {
- display: none;
- }
-
.dataset-head {
.table-forms-separator {
border: none;
@@ -138,6 +149,10 @@ form.dashboard-widget-svggraph {
}
}
+ .dataset-body {
+ display: none;
+ }
+
.items-list {
padding-left: 0;
}
@@ -167,9 +182,129 @@ form.dashboard-widget-svggraph {
}
}
+ .overrides-list {
+ position: relative;
+ margin: -5px 0 -5px 15px;
+ }
+
+ .overrides-list-item {
+ position: relative;
+ display: grid;
+ grid-template-columns: 1fr 1fr 24px;
+ grid-gap: 5px 10px;
+ align-items: start;
+ padding: 5px 0;
+
+ &.sortable {
+ overflow: visible;
+ margin-top: -5px;
+ margin-bottom: -5px;
+ }
+
+ .multiselect {
+ width: 100%;
+ }
+
+ .btn-remove {
+ right: 0;
+ top: 0;
+ vertical-align: baseline;
+ }
+ }
+
+ .overrides-foot {
+ padding: 5px 0;
+ }
+
+ .overrides-options-list {
+ grid-column: 1 / -1;
+ padding: 0 24px 8px 0;
+ border-bottom: 1px solid $table-border-color;
+ white-space: normal;
+
+ > li {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 2px;
+ line-height: 22px;
+ white-space: nowrap;
+
+ .color-picker {
+ line-height: 22px;
+ }
+
+ > div {
+ position: relative;
+ padding: 1px 18px 1px 1px;
+ background-color: $ui-bg-selected-color;
+ border-radius: 2px;
+
+ > span {
+ color: lighten($ui-bg-selected-color, 100%);
+ padding-left: 8px;
+ line-height: 22px;
+ }
+
+ > input[type=text] {
+ border-style: none;
+ line-height: 22px;
+ min-height: 22px;
+ width: 85px;
+ }
+
+ > .subfilter-disable-btn {
+ position: absolute;
+ right: 0;
+ top: 0;
+ min-height: 24px;
+ }
+ }
+ }
+
+ .btn-alt {
+ .plus-icon {
+ margin-right: 0;
+ }
+ }
+
+ .color-picker {
+ .color-picker-preview {
+ margin: 1px;
+ width: 20px;
+ min-height: 20px;
+ background-position: -323px -411px;
+ }
+ }
+ }
+
.no-items-message {
display: none;
line-height: 24px;
color: $font-alt-color;
}
}
+
+[theme="hc-dark"] form.dashboard-widget-svggraph {
+ .overrides-options-list {
+ > li > div {
+ border: 1px solid $ui-tab-bg-selected-color;
+ background-color: transparent !important;
+
+ > .subfilter-disable-btn {
+ border: none !important;
+ top: 0;
+ }
+ }
+ }
+}
+
+[theme="hc-light"] form.dashboard-widget-svggraph {
+ .overrides-options-list {
+ > li > div {
+ > .subfilter-disable-btn {
+ border: none !important;
+ top: 0;
+ }
+ }
+ }
+}
diff --git a/sass/stylesheets/sass/hc-dark.scss b/sass/stylesheets/sass/hc-dark.scss
index 9c09a085b52..0b7410f1e30 100644
--- a/sass/stylesheets/sass/hc-dark.scss
+++ b/sass/stylesheets/sass/hc-dark.scss
@@ -1206,6 +1206,7 @@ td.inactive-bg {
}
// Multiline input control.
+
.multilineinput-control {
button {
&::after {
@@ -1231,6 +1232,7 @@ td.inactive-bg {
}
// Time selection.
+
.ui-tabs-nav {
.btn-info {
&::after {
@@ -1480,19 +1482,6 @@ td.inactive-bg {
}
}
-// Overrides.
-.overrides-options-list {
- > li > div {
- border: 1px solid $ui-tab-bg-selected-color;
- background-color: transparent !important;
-
- > .subfilter-disable-btn {
- border: none !important;
- top: 0;
- }
- }
-}
-
.totals-list {
> div {
border-top: 1px solid $ui-border-color;
@@ -1511,6 +1500,7 @@ td.inactive-bg {
}
// Widget "Host availability".
+
.host-avail-widget {
td:not(:first-child) {
border-left: 1px solid $ui-border-color;
@@ -1524,7 +1514,8 @@ td.inactive-bg {
}
}
-// Widget "Navigation tree"
+// Widget "Navigation tree".
+
.navtree {
.tree .tree-item > .tree-row {
min-width: 410px;
@@ -1532,6 +1523,7 @@ td.inactive-bg {
}
// Widget "Problems by severity".
+
.by-severity-widget {
> div {
min-width: 65px;
@@ -1544,13 +1536,13 @@ td.inactive-bg {
}
}
-// InputSecret and ButtonDropdown
+// InputSecret and ButtonDropdown.
.btn-undo.is-focused {
box-shadow: 0 1px 0px $blue, 0 -1px 0px $blue;
}
-// Tabfilter
+// Tabfilter.
.filter-container.tabfilter-container {
.icon-filter::before {
@@ -1574,7 +1566,7 @@ td.inactive-bg {
}
}
-// HOST INTERFACES
+// Host interfaces.
.interfaces {
.interface-row {
@@ -1591,3 +1583,17 @@ td.inactive-bg {
}
}
}
+
+// Section (components/_section.scss).
+
+section {
+ .section-toggle {
+ background-position: -318px -654px;
+ }
+
+ &.section-collapsed {
+ .section-toggle {
+ background-position: -318px -690px;
+ }
+ }
+}
diff --git a/sass/stylesheets/sass/hc-light.scss b/sass/stylesheets/sass/hc-light.scss
index 6f7675dc024..681db702d8c 100644
--- a/sass/stylesheets/sass/hc-light.scss
+++ b/sass/stylesheets/sass/hc-light.scss
@@ -1314,18 +1314,6 @@ td.inactive-bg {
}
}
-// Overrides.
-.overrides-options-list {
- > li > div {
- background-color: $ui-bg-selected-color !important;
-
- > .subfilter-disable-btn {
- border: none !important;
- top: 0;
- }
- }
-}
-
.totals-list {
> div {
border-top: 1px solid $ui-border-color;
@@ -1344,6 +1332,7 @@ td.inactive-bg {
}
// Widget "Host availability".
+
.host-avail-widget {
td:not(:first-child) {
border-left: 1px solid $ui-border-color;
@@ -1357,7 +1346,8 @@ td.inactive-bg {
}
}
-// Widget "Navigation tree"
+// Widget "Navigation tree".
+
.navtree {
.tree .tree-item > .tree-row {
min-width: 410px;
@@ -1365,6 +1355,7 @@ td.inactive-bg {
}
// Widget "Problems by severity".
+
.by-severity-widget {
> div {
min-width: 65px;
@@ -1377,7 +1368,7 @@ td.inactive-bg {
}
}
-// InputSecret and ButtonDropdown
+// InputSecret and ButtonDropdown.
.btn-undo.is-focused {
box-shadow: 0 1px 0px $blue, 0 -1px 0px $blue;
@@ -1403,7 +1394,7 @@ td.inactive-bg {
}
}
-// HOST INTERFACES
+// Host interfaces.
.interfaces {
.interface-row {
@@ -1420,3 +1411,17 @@ td.inactive-bg {
}
}
}
+
+// Section (components/_section.scss).
+
+section {
+ .section-toggle {
+ background-position: -165px -654px;
+ }
+
+ &.section-collapsed {
+ .section-toggle {
+ background-position: -165px -690px;
+ }
+ }
+}
diff --git a/sass/stylesheets/sass/layout/_form-grid.scss b/sass/stylesheets/sass/layout/_form-grid.scss
index dedda435665..ebd643498df 100644
--- a/sass/stylesheets/sass/layout/_form-grid.scss
+++ b/sass/stylesheets/sass/layout/_form-grid.scss
@@ -1,6 +1,5 @@
.form-grid {
display: grid;
- padding: 5px;
row-gap: 10px;
column-gap: 10px;
@@ -26,6 +25,11 @@
&.fields-group-label {
padding-top: 5px;
}
+
+ .icon-help-hint,
+ .icon-info {
+ margin-left: 5px;
+ }
}
> .form-field,
diff --git a/sass/stylesheets/sass/screen.scss b/sass/stylesheets/sass/screen.scss
index b8e6ae1802a..f5e6e5cfff4 100644
--- a/sass/stylesheets/sass/screen.scss
+++ b/sass/stylesheets/sass/screen.scss
@@ -31,8 +31,10 @@ $browser-sprite-path: '../img/browser-sprite.png?20220722';
@import "components/buttons";
@import "components/checkbox-list";
@import "components/color-picker";
+@import "components/columns-wrapper";
@import "components/dashboard/dashboard";
@import "components/dashboard/widget-clock";
+@import "components/dashboard/widget-inaccessible";
@import "components/dashboard/widget-item";
@import "components/dashboard/widget-slareport";
@import "components/dashboard/widget-svggraph";
@@ -46,6 +48,7 @@ $browser-sprite-path: '../img/browser-sprite.png?20220722';
@import "components/message-box";
@import "components/radio-list-control";
@import "components/range-control";
+@import "components/section";
@import "components/service/info";
@import "components/subfilter";
@import "components/svg-graph";
@@ -2617,10 +2620,10 @@ $var-icons: (
}
$trigger-expression-tree-icons: (
- top-bottom: url($sprite-path) no-repeat -84px -300px,
- top-bottom-right: url($sprite-path) no-repeat -84px -334px,
- top-right: url($sprite-path) no-repeat -84px -372px,
- empty: url($sprite-path) no-repeat -84px -350px
+ top-bottom: -84px -300px,
+ top-bottom-right: -84px -334px,
+ top-right: -84px -372px,
+ empty: -84px -350px
);
%trigger-expression-tree-icons-common {
@@ -3083,7 +3086,7 @@ $form-icon-btn: (
margin: 0 10px;
.dashboard-widget-head {
- margin-bottom: 14px;
+ margin-bottom: 12px;
.icon-doc-link {
margin-right: -26px;
@@ -3102,11 +3105,15 @@ $form-icon-btn: (
width: 100%;
max-height: calc(100vh - 220px);
max-width: inherit;
- margin: 0 -10px 10px;
+ margin: 0 -10px 8px;
padding: 0 10px;
position: relative;
@extend %webkit-scrollbar;
+ > form {
+ padding: 2px 0;
+ }
+
.table-forms {
.table-forms-td-right {
padding-right: 8px;
@@ -3741,23 +3748,6 @@ $form-icon-btn: (
stroke-width: 2px;
}
-.svg-graph-preview {
- margin-top: 10px;
- min-width: 1120px;
- height: 300px;
- position: relative;
-
- > div {
- background: $ui-bg-color;
- height: 300px;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- z-index: 3; // More than z-index of form controls, less than z-index of .msg-*.
- }
-}
-
.svg-graph-hintbox {
font-size: 12px;
line-height: 18px;
@@ -4728,73 +4718,6 @@ svg {
word-break: break-word;
}
-.overrides-list {
- display: table;
- width: 90%;
- max-width: 738px;
- padding-left: 15px;
-
- .overrides-list-item {
- display: table-row;
-
- .btn-remove {
- position: relative;
- right: -73px;
- top: 3px;
- }
- }
-}
-
-.overrides-options-list {
- white-space: normal;
- padding: 5px 0 8px;
- margin-bottom: 10px;
- border-bottom: 1px solid $table-border-color;
-
- > li {
- display: inline-block;
- margin: 2px 7px 2px 0;
- white-space: nowrap;
- vertical-align: middle;
-
- > div {
- position: relative;
- padding: 1px 18px 1px 1px;
- background-color: $ui-bg-selected-color;
- border-radius: 2px;
-
- > span {
- color: lighten($ui-bg-selected-color, 100%);
- padding-left: 8px;
- line-height: 22px;
- }
-
- > input[type=text] {
- border-style: none;
- line-height: 22px;
- min-height: 22px;
- width: 85px;
- }
-
- > .subfilter-disable-btn {
- position: absolute;
- right: 0;
- top: 0;
- min-height: 24px;
- }
- }
- }
-
- .color-picker {
- .color-picker-preview {
- margin: 1px;
- width: 20px;
- min-height: 20px;
- background-position: -323px -411px;
- }
- }
-}
-
.list-accordion-foot {
> div {
display: table-cell;
@@ -4864,75 +4787,6 @@ svg {
visibility: hidden;
}
-.columns-wrapper {
- $column-count: (2, 3);
- $column-size: (
- 5: 5%,
- 10: 10%,
- 15: 15%,
- 20: 20%,
- 33: 33.33333%,
- 35: 35%,
- 40: 40%,
- 50: 50%,
- 75: 75%,
- 90: 90%,
- 95: 95%
- );
-
- display: flex;
- flex-wrap: wrap;
- align-items: start;
-
- &.columns-nowrap {
- flex-wrap: nowrap;
- }
-
- // Dynamically generated classes for the columns count:
- // .columns-2
- // .columns-3
- @each $count in $column-count {
- &.columns-#{$count} > {
- div,
- li {
- display: block;
- flex: 0 0 (100% / $count);
- max-width: (100% / $count);
- }
- }
- }
-
- // Dynamically generated classes for the column width:
- // .column-5
- // .column-10
- // .column-15
- // .column-20
- // .column-33
- // .column-35
- // .column-40
- // .column-50
- // .column-75
- // .column-90
- // .column-95
- @each $class, $width in $column-size {
- .column-#{$class} {
- flex: 0 0 $width;
- max-width: $width;
- }
- }
-
- .column-center {
- display: flex;
- justify-content: center;
- text-align: center;
- }
-
- .column-middle {
- display: flex;
- align-items: center;
- }
-}
-
.preprocessing-list {
$name-width: 295px;
$on-fail-width: 100px;
diff --git a/sass/stylesheets/sass/utils/_sortable.scss b/sass/stylesheets/sass/utils/_sortable.scss
index 34bce40cd69..f5c8c857f4f 100644
--- a/sass/stylesheets/sass/utils/_sortable.scss
+++ b/sass/stylesheets/sass/utils/_sortable.scss
@@ -9,8 +9,14 @@
@if $ui-transitions {
transition: left .2s, top .2s;
+ }
+ }
- .sortable-item:not(.sortable-dragging) {
+ .sortable-item {
+ box-sizing: border-box;
+
+ @if $ui-transitions {
+ &:not(.sortable-dragging) {
transition: left .2s, top .2s;
}
}
diff --git a/src/go/pkg/version/version.go b/src/go/pkg/version/version.go
index faa436d3db6..b66e3e2fba1 100644
--- a/src/go/pkg/version/version.go
+++ b/src/go/pkg/version/version.go
@@ -26,11 +26,11 @@ import (
)
const (
- ZABBIX_REVDATE = "27 October 2022"
+ ZABBIX_REVDATE = "8 November 2022"
ZABBIX_VERSION_MAJOR = 6
ZABBIX_VERSION_MINOR = 4
ZABBIX_VERSION_PATCH = 0
- ZABBIX_VERSION_RC = "beta3"
+ ZABBIX_VERSION_RC = "beta4"
ZABBIX_VERSION_RC_NUM = "{ZABBIX_RC_NUM}"
ZABBIX_VERSION_REVISION = "{ZABBIX_REVISION}"
copyrightMessage = "Copyright (C) 2022 Zabbix SIA\n" +
diff --git a/src/go/pkg/zbxlib/globals_windows.go b/src/go/pkg/zbxlib/globals_windows.go
index c0883a12b63..f01106f489f 100644
--- a/src/go/pkg/zbxlib/globals_windows.go
+++ b/src/go/pkg/zbxlib/globals_windows.go
@@ -23,7 +23,7 @@ package zbxlib
#include "zbxstr.h"
#include "zbxsysinfo.h"
#include "zbxcomms.h"
-#include "perfmon.h"
+#include "zbxwin32.h"
#include "../src/zabbix_agent/metrics.h"
#cgo LDFLAGS: -Wl,--start-group
@@ -49,6 +49,7 @@ package zbxlib
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/md5.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/sysinfo.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/vector.o
+#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/hashset.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/zbxregexp.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/algodefs.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/persistent_state.o
@@ -56,6 +57,7 @@ package zbxlib
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/json.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/json_parser.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/jsonpath.o
+#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/jsonobj.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/sha256crypt.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/variant.o
#cgo LDFLAGS: ${SRCDIR}/../../../../build/mingw/output/sysinfo_system.o
@@ -121,12 +123,12 @@ int perf_counter(AGENT_REQUEST *request, AGENT_RESULT *result)
return SYSINFO_RET_FAIL;
}
-DWORD get_builtin_counter_index(zbx_builtin_counter_ref_t counter_ref)
+DWORD zbx_get_builtin_counter_index(zbx_builtin_counter_ref_t counter_ref)
{
return 0;
}
-DWORD get_builtin_object_index(zbx_builtin_counter_ref_t object_ref)
+DWORD zbx_get_builtin_object_index(zbx_builtin_counter_ref_t object_ref)
{
return 0;
}
diff --git a/src/go/plugins/vfs/fs/fs_nix.go b/src/go/plugins/vfs/fs/fs_nix.go
index fcdc1fa984a..28631b42a2a 100644
--- a/src/go/plugins/vfs/fs/fs_nix.go
+++ b/src/go/plugins/vfs/fs/fs_nix.go
@@ -55,9 +55,7 @@ func (p *Plugin) getFsInfoStats() (data []*FsInfoNew, err error) {
continue
}
- if bytes.Total > 0 && inodes.Total > 0 {
- fsmap[*info.FsName] = &FsInfoNew{info.FsName, info.FsType, nil, nil, bytes, inodes, info.FsOptions}
- }
+ fsmap[*info.FsName] = &FsInfoNew{info.FsName, info.FsType, nil, nil, bytes, inodes, info.FsOptions}
}
allData, err = p.getFsInfo()
@@ -109,6 +107,8 @@ func (p *Plugin) getFsInfo() (data []*FsInfo, err error) {
}
func getFsStats(path string) (stats *FsStats, err error) {
+ var pused float64
+
fs := unix.Statfs_t{}
err = unix.Statfs(path, &fs)
if err != nil {
@@ -123,19 +123,30 @@ func getFsStats(path string) (stats *FsStats, err error) {
total := fs.Blocks * uint64(fs.Bsize)
free := available * uint64(fs.Bsize)
used := (fs.Blocks - fs.Bfree) * uint64(fs.Bsize)
- pfree := 100.00 * float64(available) / float64(fs.Blocks-fs.Bfree+fs.Bavail)
+ pfree := float64(fs.Blocks-fs.Bfree+fs.Bavail)
+
+ if pfree > 0 {
+ pfree = 100.00 * float64(available) / pfree
+ pused = 100 - pfree
+ } else {
+ pfree = 0
+ pused = 0
+ }
+
stats = &FsStats{
Total: total,
Free: free,
Used: used,
PFree: pfree,
- PUsed: 100 - pfree,
+ PUsed: pused,
}
return
}
func getFsInode(path string) (stats *FsStats, err error) {
+ var pfree, pused float64
+
fs := unix.Statfs_t{}
err = unix.Statfs(path, &fs)
if err != nil {
@@ -145,12 +156,21 @@ func getFsInode(path string) (stats *FsStats, err error) {
total := fs.Files
free := fs.Ffree
used := fs.Files - fs.Ffree
+
+ if 0 < total {
+ pfree = 100 * float64(free) / float64(total)
+ pused = 100 * float64(total-free) / float64(total)
+ } else {
+ pfree = 100.0
+ pused = 0.0
+ }
+
stats = &FsStats{
Total: total,
Free: free,
Used: used,
- PFree: 100 * float64(free) / float64(total),
- PUsed: 100 * float64(total-free) / float64(total),
+ PFree: pfree,
+ PUsed: pused,
}
return
diff --git a/src/libs/Makefile.am b/src/libs/Makefile.am
index a4dc59a644c..ed18d3c695a 100644
--- a/src/libs/Makefile.am
+++ b/src/libs/Makefile.am
@@ -12,8 +12,11 @@ DIST_SUBDIRS = \
zbxcrypto \
zbxcyberark \
zbxdb \
- zbxdbcache \
+ zbxcacheconfig \
+ zbxcachehistory \
+ zbxcachevalue \
zbxdbhigh \
+ zbxdbwrap \
zbxdbschema \
zbxdbupgrade \
zbxdiag \
@@ -67,8 +70,11 @@ SERVER_SUBDIRS = \
zbxcompress \
zbxcyberark \
zbxdb \
- zbxdbcache \
+ zbxcacheconfig \
+ zbxcachehistory \
+ zbxcachevalue \
zbxdbhigh \
+ zbxdbwrap \
zbxdbschema \
zbxdbupgrade \
zbxdiag \
@@ -109,8 +115,11 @@ PROXY_SUBDIRS = \
zbxcompress \
zbxcyberark \
zbxdb \
- zbxdbcache \
+ zbxcacheconfig \
+ zbxcachehistory \
+ zbxcachevalue \
zbxdbhigh \
+ zbxdbwrap \
zbxdbschema \
zbxdbupgrade \
zbxdiag \
@@ -180,4 +189,5 @@ SUBDIRS = \
EXTRA_DIST = \
zbxsymbols \
- zbxwin32
+ zbxwin32 \
+ zbxwinservice
diff --git a/src/libs/zbxaudit/audit.c b/src/libs/zbxaudit/audit.c
index c729833829f..d0257a6fcfe 100644
--- a/src/libs/zbxaudit/audit.c
+++ b/src/libs/zbxaudit/audit.c
@@ -22,7 +22,7 @@
#include "log.h"
#include "zbxjson.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxnum.h"
#define AUDIT_USERID __UINT64_C(0)
diff --git a/src/libs/zbxdbcache/Makefile.am b/src/libs/zbxcacheconfig/Makefile.am
index 577d3ed846c..48a54ca35c7 100644
--- a/src/libs/zbxdbcache/Makefile.am
+++ b/src/libs/zbxcacheconfig/Makefile.am
@@ -1,21 +1,19 @@
## Process this file with automake to produce Makefile.in
-noinst_LIBRARIES = libzbxdbcache.a
+noinst_LIBRARIES = libzbxcacheconfig.a
-libzbxdbcache_a_SOURCES = \
- dbcache.c \
+libzbxcacheconfig_a_SOURCES = \
dbconfig.c \
dbconfig.h \
dbconfig_dump.c \
dbconfig_maintenance.c \
dbsync.c \
dbsync.h \
- valuecache.c \
- valuecache.h \
+ lld_macro.c \
user_macro.c \
user_macro.h
-libzbxdbcache_a_CFLAGS = \
+libzbxcacheconfig_a_CFLAGS = \
-I$(top_srcdir)/src/zabbix_server/ \
$(TLS_CFLAGS) \
$(TEST_FLAGS)
diff --git a/src/libs/zbxdbcache/dbconfig.c b/src/libs/zbxcacheconfig/dbconfig.c
index 7dcd21e2082..73098113be7 100644
--- a/src/libs/zbxdbcache/dbconfig.c
+++ b/src/libs/zbxcacheconfig/dbconfig.c
@@ -25,7 +25,6 @@
#include "zbxregexp.h"
#include "cfg.h"
#include "zbxcrypto.h"
-#include "../zbxkvs/kvs.h"
#include "../zbxvault/vault.h"
#include "base64.h"
#include "zbxdbhigh.h"
@@ -5488,12 +5487,7 @@ static void DCsync_itemscript_param(zbx_dbsync_t *sync, zbx_uint64_t revision)
if (NULL != (dc_item = (ZBX_DC_ITEM *)zbx_hashset_search(&config->items, &scriptitem->itemid)))
dc_item_update_revision(dc_item, revision);
- if (0 == scriptitem->params.values_num)
- {
- zbx_vector_ptr_destroy(&scriptitem->params);
- zbx_hashset_remove_direct(&config->scriptitems, scriptitem);
- }
- else
+ if (0 < scriptitem->params.values_num)
zbx_vector_ptr_sort(&scriptitem->params, dc_compare_itemscript_param);
}
@@ -15500,6 +15494,7 @@ static void dc_reschedule_items(const zbx_hashset_t *activated_hosts)
zbx_vector_item_delay_destroy(&items);
}
+
/******************************************************************************
* *
* Purpose: reschedule httptests on hosts that were re-enabled or unassigned *
@@ -15556,7 +15551,6 @@ static void dc_reschedule_httptests(zbx_hashset_t *activated_hosts)
zbx_vector_dc_httptest_ptr_destroy(&httptests);
}
-
/******************************************************************************
* *
* Purpose: get next drule to be processed *
diff --git a/src/libs/zbxdbcache/dbconfig.h b/src/libs/zbxcacheconfig/dbconfig.h
index b9d3e5a77e2..c378a559511 100644
--- a/src/libs/zbxdbcache/dbconfig.h
+++ b/src/libs/zbxcacheconfig/dbconfig.h
@@ -20,10 +20,11 @@
#ifndef ZABBIX_DBCONFIG_H
#define ZABBIX_DBCONFIG_H
+#include "zbxcacheconfig.h"
+#include "user_macro.h"
+
#include "zbxmutexs.h"
#include "zbxalgo.h"
-#include "dbcache.h"
-#include "user_macro.h"
#include "zbxversion.h"
#define ZBX_MAINTENANCE_IDLE 0
@@ -891,7 +892,7 @@ typedef struct
zbx_hashset_t autoreg_hosts;
zbx_hashset_t host_inventories;
zbx_hashset_t host_inventories_auto; /* For caching of automatically populated host inventories. */
- /* Configuration syncer will read host_inventories without */
+ /* Configuration syncer will read host_inventories without */
/* locking cache and therefore it cannot be updated by */
/* by history syncers when new data is received. */
zbx_hashset_t ipmihosts;
diff --git a/src/libs/zbxdbcache/dbconfig_dump.c b/src/libs/zbxcacheconfig/dbconfig_dump.c
index 95f1876ade7..bda02393f27 100644
--- a/src/libs/zbxdbcache/dbconfig_dump.c
+++ b/src/libs/zbxcacheconfig/dbconfig_dump.c
@@ -16,13 +16,12 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-
+#include "zbxcacheconfig.h"
#include "dbconfig.h"
#include "zbxcommon.h"
#include "log.h"
#include "zbxalgo.h"
-#include "dbcache.h"
static void DCdump_config(void)
{
diff --git a/src/libs/zbxdbcache/dbconfig_maintenance.c b/src/libs/zbxcacheconfig/dbconfig_maintenance.c
index e7094673ed0..ff84f2563cf 100644
--- a/src/libs/zbxdbcache/dbconfig_maintenance.c
+++ b/src/libs/zbxcacheconfig/dbconfig_maintenance.c
@@ -17,15 +17,14 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
+#include "zbxcacheconfig.h"
#include "dbconfig.h"
#include "log.h"
#include "zbxalgo.h"
-#include "dbcache.h"
#include "dbsync.h"
#include "zbxnum.h"
#include "zbxtime.h"
-#include "zbxexpr.h"
extern int CONFIG_TIMER_FORKS;
diff --git a/src/libs/zbxdbcache/dbsync.c b/src/libs/zbxcacheconfig/dbsync.c
index e3e61718a5a..d972098c757 100644
--- a/src/libs/zbxdbcache/dbsync.c
+++ b/src/libs/zbxcacheconfig/dbsync.c
@@ -17,11 +17,10 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
+#include "zbxcacheconfig.h"
#include "dbsync.h"
#include "log.h"
-#include "dbcache.h"
-#include "zbxserialize.h"
#include "base64.h"
#include "zbxeval.h"
#include "zbxnum.h"
@@ -38,7 +37,7 @@
#define ZBX_DBSYNC_OBJ_DCHECK 10
#define ZBX_DBSYNC_OBJ_HTTPTEST 11
#define ZBX_DBSYNC_OBJ_HTTPTEST_FIELD 12
-#define ZBX_DBSYNC_OBJ_HTTPTESTITEM 13
+#define ZBX_DBSYNC_OBJ_HTTPTEST_ITEM 13
#define ZBX_DBSYNC_OBJ_HTTPSTEP 14
#define ZBX_DBSYNC_OBJ_HTTPSTEP_FIELD 15
#define ZBX_DBSYNC_OBJ_HTTPSTEP_ITEM 16
diff --git a/src/libs/zbxdbcache/dbsync.h b/src/libs/zbxcacheconfig/dbsync.h
index d92abd060cb..8e992511f1b 100644
--- a/src/libs/zbxdbcache/dbsync.h
+++ b/src/libs/zbxcacheconfig/dbsync.h
@@ -20,7 +20,6 @@
#ifndef ZABBIX_DBSYNC_H
#define ZABBIX_DBSYNC_H
-#include "zbxcommon.h"
#include "dbconfig.h"
/* no changes */
diff --git a/src/libs/zbxdbhigh/lld_macro.c b/src/libs/zbxcacheconfig/lld_macro.c
index 28a74c3c29d..d44a41e4d6c 100644
--- a/src/libs/zbxdbhigh/lld_macro.c
+++ b/src/libs/zbxcacheconfig/lld_macro.c
@@ -17,9 +17,9 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "zbxcommon.h"
+#include "zbxcacheconfig.h"
-#include "dbcache.h"
+#include "zbxcommon.h"
#include "log.h"
/******************************************************************************
diff --git a/src/libs/zbxdbcache/user_macro.c b/src/libs/zbxcacheconfig/user_macro.c
index 1a51243910e..1a51243910e 100644
--- a/src/libs/zbxdbcache/user_macro.c
+++ b/src/libs/zbxcacheconfig/user_macro.c
diff --git a/src/libs/zbxdbcache/user_macro.h b/src/libs/zbxcacheconfig/user_macro.h
index 3ec3defaf07..b710a259222 100644
--- a/src/libs/zbxdbcache/user_macro.h
+++ b/src/libs/zbxcacheconfig/user_macro.h
@@ -20,7 +20,6 @@
#ifndef ZBX_USER_MACRO_H
#define ZBX_USER_MACRO_H
-#include "zbxcommon.h"
#include "zbxalgo.h"
#define ZBX_UM_CACHE_GLOBAL_MACRO_HOSTID 0
diff --git a/src/libs/zbxcachehistory/Makefile.am b/src/libs/zbxcachehistory/Makefile.am
new file mode 100644
index 00000000000..7a9626ff77b
--- /dev/null
+++ b/src/libs/zbxcachehistory/Makefile.am
@@ -0,0 +1,11 @@
+## Process this file with automake to produce Makefile.in
+
+noinst_LIBRARIES = libzbxcachehistory.a
+
+libzbxcachehistory_a_SOURCES = \
+ dbcache.c
+
+libzbxcachehistory_a_CFLAGS = \
+ -I$(top_srcdir)/src/zabbix_server/ \
+ $(TLS_CFLAGS) \
+ $(TEST_FLAGS)
diff --git a/src/libs/zbxdbcache/dbcache.c b/src/libs/zbxcachehistory/dbcache.c
index e5bbd267eb9..a402f530547 100644
--- a/src/libs/zbxdbcache/dbcache.c
+++ b/src/libs/zbxcachehistory/dbcache.c
@@ -17,17 +17,16 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "dbcache.h"
+#include "zbxcachehistory.h"
+#include "zbxcachevalue.h"
#include "log.h"
#include "zbxmutexs.h"
#include "zbxserver.h"
#include "events.h"
-#include "valuecache.h"
#include "zbxmodules.h"
#include "module.h"
#include "zbxexport.h"
-#include "zbxhistory.h"
#include "zbxnix.h"
#include "zbxavailability.h"
#include "zbxtrends.h"
@@ -1533,6 +1532,168 @@ static void DCsync_trends(void)
zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
}
+#define ZBX_FLAGS_TRIGGER_CREATE_NOTHING 0x00
+#define ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT 0x01
+#define ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT 0x02
+#define ZBX_FLAGS_TRIGGER_CREATE_EVENT \
+ (ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT | ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT)
+
+/******************************************************************************
+ * *
+ * Purpose: 1) calculate changeset of trigger fields to be updated *
+ * 2) generate events *
+ * *
+ * Parameters: trigger - [IN] the trigger to process *
+ * diffs - [OUT] the vector with trigger changes *
+ * *
+ * Return value: SUCCEED - trigger processed successfully *
+ * FAIL - no changes *
+ * *
+ * Comments: Trigger dependency checks will be done during event processing. *
+ * *
+ * Event generation depending on trigger value/state changes: *
+ * *
+ * From \ To | OK | OK(?) | PROBLEM | PROBLEM(?) | NONE *
+ *----------------------------------------------------------------------------*
+ * OK | . | I | E | I | . *
+ * | | | | | *
+ * OK(?) | I | . | E,I | - | I *
+ * | | | | | *
+ * PROBLEM | E | I | E(m) | I | . *
+ * | | | | | *
+ * PROBLEM(?) | E,I | - | E(m),I | . | I *
+ * *
+ * Legend: *
+ * 'E' - trigger event *
+ * 'I' - internal event *
+ * '.' - nothing *
+ * '-' - should never happen *
+ * *
+ ******************************************************************************/
+static int zbx_process_trigger(struct _DC_TRIGGER *trigger, zbx_vector_ptr_t *diffs)
+{
+ const char *new_error;
+ int new_state, new_value, ret = FAIL;
+ zbx_uint64_t flags = ZBX_FLAGS_TRIGGER_DIFF_UNSET, event_flags = ZBX_FLAGS_TRIGGER_CREATE_NOTHING;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() triggerid:" ZBX_FS_UI64 " value:%d(%d) new_value:%d",
+ __func__, trigger->triggerid, trigger->value, trigger->state, trigger->new_value);
+
+ if (TRIGGER_VALUE_UNKNOWN == trigger->new_value)
+ {
+ new_state = TRIGGER_STATE_UNKNOWN;
+ new_value = trigger->value;
+ }
+ else
+ {
+ new_state = TRIGGER_STATE_NORMAL;
+ new_value = trigger->new_value;
+ }
+ new_error = (NULL == trigger->new_error ? "" : trigger->new_error);
+
+ if (trigger->state != new_state)
+ {
+ flags |= ZBX_FLAGS_TRIGGER_DIFF_UPDATE_STATE;
+ event_flags |= ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT;
+ }
+
+ if (0 != strcmp(trigger->error, new_error))
+ flags |= ZBX_FLAGS_TRIGGER_DIFF_UPDATE_ERROR;
+
+ if (TRIGGER_STATE_NORMAL == new_state)
+ {
+ if (TRIGGER_VALUE_PROBLEM == new_value)
+ {
+ if (TRIGGER_VALUE_OK == trigger->value || TRIGGER_TYPE_MULTIPLE_TRUE == trigger->type)
+ event_flags |= ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT;
+ }
+ else if (TRIGGER_VALUE_OK == new_value)
+ {
+ if (TRIGGER_VALUE_PROBLEM == trigger->value || 0 == trigger->lastchange)
+ event_flags |= ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT;
+ }
+ }
+
+ /* check if there is something to be updated */
+ if (0 == (flags & ZBX_FLAGS_TRIGGER_DIFF_UPDATE) && 0 == (event_flags & ZBX_FLAGS_TRIGGER_CREATE_EVENT))
+ goto out;
+
+ if (0 != (event_flags & ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT))
+ {
+ zbx_add_event(EVENT_SOURCE_TRIGGERS, EVENT_OBJECT_TRIGGER, trigger->triggerid,
+ &trigger->timespec, new_value, trigger->description,
+ trigger->expression, trigger->recovery_expression,
+ trigger->priority, trigger->type, &trigger->tags,
+ trigger->correlation_mode, trigger->correlation_tag, trigger->value, trigger->opdata,
+ trigger->event_name, NULL);
+ }
+
+ if (0 != (event_flags & ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT))
+ {
+ zbx_add_event(EVENT_SOURCE_INTERNAL, EVENT_OBJECT_TRIGGER, trigger->triggerid,
+ &trigger->timespec, new_state, NULL, trigger->expression,
+ trigger->recovery_expression, 0, 0, &trigger->tags, 0, NULL, 0, NULL, NULL,
+ new_error);
+ }
+
+ zbx_append_trigger_diff(diffs, trigger->triggerid, trigger->priority, flags, trigger->value, new_state,
+ trigger->timespec.sec, new_error);
+
+ ret = SUCCEED;
+out:
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s flags:" ZBX_FS_UI64, __func__, zbx_result_string(ret),
+ flags);
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Comments: helper function for zbx_process_triggers() *
+ * *
+ ******************************************************************************/
+static int zbx_trigger_topoindex_compare(const void *d1, const void *d2)
+{
+ const DC_TRIGGER *t1 = *(const DC_TRIGGER * const *)d1;
+ const DC_TRIGGER *t2 = *(const DC_TRIGGER * const *)d2;
+
+ ZBX_RETURN_IF_NOT_EQUAL(t1->topoindex, t2->topoindex);
+
+ return 0;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process triggers - calculates property changeset and generates *
+ * events *
+ * *
+ * Parameters: triggers - [IN] the triggers to process *
+ * trigger_diff - [OUT] the trigger changeset *
+ * *
+ * Comments: The trigger_diff changeset must be cleaned by the caller: *
+ * zbx_vector_ptr_clear_ext(trigger_diff, *
+ * (zbx_clean_func_t)zbx_trigger_diff_free); *
+ * *
+ ******************************************************************************/
+static void zbx_process_triggers(zbx_vector_ptr_t *triggers, zbx_vector_ptr_t *trigger_diff)
+{
+ int i;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() values_num:%d", __func__, triggers->values_num);
+
+ if (0 == triggers->values_num)
+ goto out;
+
+ zbx_vector_ptr_sort(triggers, zbx_trigger_topoindex_compare);
+
+ for (i = 0; i < triggers->values_num; i++)
+ zbx_process_trigger((struct _DC_TRIGGER *)triggers->values[i], trigger_diff);
+
+ zbx_vector_ptr_sort(trigger_diff, ZBX_DEFAULT_UINT64_PTR_COMPARE_FUNC);
+out:
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
+}
+
/******************************************************************************
* *
* Purpose: re-calculate and update values of triggers related to the items *
diff --git a/src/libs/zbxcachevalue/Makefile.am b/src/libs/zbxcachevalue/Makefile.am
new file mode 100644
index 00000000000..c3694cb0c4b
--- /dev/null
+++ b/src/libs/zbxcachevalue/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to produce Makefile.in
+
+noinst_LIBRARIES = libzbxcachevalue.a
+
+libzbxcachevalue_a_SOURCES = \
+ valuecache.c
+
+libzbxcachevalue_a_CFLAGS = \
+ $(TLS_CFLAGS) \
+ $(TEST_FLAGS)
diff --git a/src/libs/zbxdbcache/valuecache.c b/src/libs/zbxcachevalue/valuecache.c
index d6bbe498676..a1bc65634cc 100644
--- a/src/libs/zbxdbcache/valuecache.c
+++ b/src/libs/zbxcachevalue/valuecache.c
@@ -17,10 +17,9 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "log.h"
-#include "dbcache.h"
#include "zbxmutexs.h"
#include "zbxtime.h"
diff --git a/src/libs/zbxconf/cfg.c b/src/libs/zbxconf/cfg.c
index 792da1d4982..95bdb6fc373 100644
--- a/src/libs/zbxconf/cfg.c
+++ b/src/libs/zbxconf/cfg.c
@@ -25,10 +25,6 @@
extern unsigned char program_type;
-char *CONFIG_LOG_TYPE_STR = NULL;
-int CONFIG_LOG_TYPE = LOG_TYPE_UNDEFINED;
-char *CONFIG_LOG_FILE = NULL;
-int CONFIG_LOG_FILE_SIZE = 1;
int CONFIG_TIMEOUT = 3;
static int __parse_cfg_file(const char *cfg_file, struct cfg_line *cfg, int level, int optional, int strict,
diff --git a/src/libs/zbxdbhigh/Makefile.am b/src/libs/zbxdbhigh/Makefile.am
index 53ab11f9d90..147e0ba15c3 100644
--- a/src/libs/zbxdbhigh/Makefile.am
+++ b/src/libs/zbxdbhigh/Makefile.am
@@ -4,21 +4,10 @@ noinst_LIBRARIES = libzbxdbhigh.a
libzbxdbhigh_a_SOURCES = \
db.c \
- event.c \
- host.c \
item.c \
- lld_macro.c \
maintenance.c \
proxy.c \
- template_item.c \
- template.h \
trigger.c \
- trigger_dep_linking.c \
- trigger_dep_linking.h \
- trigger_linking.c \
- trigger_linking.h \
- graph_linking.c \
- graph_linking.h \
tag.c \
item_param.c \
lld_override.c \
diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c
index f26df2184cd..c19ace6d3cb 100644
--- a/src/libs/zbxdbhigh/db.c
+++ b/src/libs/zbxdbhigh/db.c
@@ -22,7 +22,6 @@
#include "log.h"
#include "events.h"
#include "zbxthreads.h"
-#include "dbcache.h"
#include "cfg.h"
#include "zbxcrypto.h"
#include "zbxnum.h"
@@ -44,6 +43,8 @@ extern char ZBX_PG_ESCAPE_BACKSLASH;
static int connection_failure;
extern unsigned char program_type;
+static zbx_dc_get_nextid_func_t zbx_cb_nextid;
+
void DBclose(void)
{
zbx_db_close();
@@ -194,9 +195,14 @@ int DBconnect(int flag)
return err;
}
-int DBinit(char **error)
+int DBinit(zbx_dc_get_nextid_func_t cb_nextid, unsigned char program, char **error)
{
- return zbx_db_init(CONFIG_DBNAME, db_schema, error);
+ zbx_cb_nextid = cb_nextid;
+
+ if (ZBX_PROGRAM_TYPE_SERVER != program)
+ return zbx_db_init(CONFIG_DBNAME, db_schema, error);
+
+ return SUCCEED;
}
void DBdeinit(void)
@@ -723,7 +729,7 @@ zbx_uint64_t DBget_maxid_num(const char *tablename, int num)
0 == strcmp(tablename, "autoreg_host") ||
0 == strcmp(tablename, "event_suppress") ||
0 == strcmp(tablename, "trigger_queue"))
- return DCget_nextid(tablename, num);
+ return zbx_cb_nextid(tablename, num);
return DBget_nextid(tablename, num);
}
@@ -2081,16 +2087,6 @@ const char *DBget_inventory_field(unsigned char inventory_link)
return inventory_fields[inventory_link - 1];
}
-int DBtxn_status(void)
-{
- return 0 == zbx_db_txn_error() ? SUCCEED : FAIL;
-}
-
-int DBtxn_ongoing(void)
-{
- return 0 == zbx_db_txn_level() ? FAIL : SUCCEED;
-}
-
int DBtable_exists(const char *table_name)
{
char *table_name_esc;
@@ -3527,76 +3523,6 @@ void zbx_user_free(zbx_user_t *user)
/******************************************************************************
* *
- * Purpose: initializes mock field *
- * *
- * Parameters: field - [OUT] the field data *
- * field_type - [IN] the field type in database schema *
- * field_len - [IN] the field size in database schema *
- * *
- ******************************************************************************/
-void zbx_db_mock_field_init(zbx_db_mock_field_t *field, int field_type, int field_len)
-{
- switch (field_type)
- {
- case ZBX_TYPE_CHAR:
-#if defined(HAVE_ORACLE)
- field->chars_num = field_len;
- field->bytes_num = 4000;
-#else
- field->chars_num = field_len;
- field->bytes_num = -1;
-#endif
- return;
- }
-
- THIS_SHOULD_NEVER_HAPPEN;
-
- field->chars_num = 0;
- field->bytes_num = 0;
-}
-
-/******************************************************************************
- * *
- * Purpose: 'appends' text to the field, if successful the character/byte *
- * limits are updated *
- * *
- * Parameters: field - [IN/OUT] the mock field *
- * text - [IN] the text to append *
- * *
- * Return value: SUCCEED - the field had enough space to append the text *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-int zbx_db_mock_field_append(zbx_db_mock_field_t *field, const char *text)
-{
- int bytes_num, chars_num;
-
- if (-1 != field->bytes_num)
- {
- bytes_num = strlen(text);
- if (bytes_num > field->bytes_num)
- return FAIL;
- }
- else
- bytes_num = 0;
-
- if (-1 != field->chars_num)
- {
- chars_num = zbx_strlen_utf8(text);
- if (chars_num > field->chars_num)
- return FAIL;
- }
- else
- chars_num = 0;
-
- field->bytes_num -= bytes_num;
- field->chars_num -= chars_num;
-
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
* Purpose: checks instanceid value in config table and generates new *
* instance id if its empty *
* *
diff --git a/src/libs/zbxdbhigh/proxy.c b/src/libs/zbxdbhigh/proxy.c
index 0465224627f..4182e9fb9f3 100644
--- a/src/libs/zbxdbhigh/proxy.c
+++ b/src/libs/zbxdbhigh/proxy.c
@@ -17,1136 +17,11 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "proxy.h"
#include "zbxdbhigh.h"
#include "log.h"
-#include "zbxsysinfo.h"
-#include "zbxserver.h"
-#include "zbxtasks.h"
-#include "zbxdiscovery.h"
-#include "zbxalgo.h"
-#include "preproc.h"
-#include "zbxcrypto.h"
-#include "../zbxkvs/kvs.h"
-#include "zbxlld.h"
-#include "events.h"
-#include "../zbxvault/vault.h"
-#include "zbxavailability.h"
-#include "zbxcommshigh.h"
-#include "zbxnum.h"
-#include "zbxtime.h"
-#include "zbxip.h"
-#include "version.h"
#include "zbxversion.h"
-extern char *CONFIG_SERVER;
-
-/* the space reserved in json buffer to hold at least one record plus service data */
-#define ZBX_DATA_JSON_RESERVED (ZBX_HISTORY_TEXT_VALUE_LEN * 4 + ZBX_KIBIBYTE * 4)
-
-#define ZBX_DATA_JSON_RECORD_LIMIT (ZBX_MAX_RECV_DATA_SIZE - ZBX_DATA_JSON_RESERVED)
-#define ZBX_DATA_JSON_BATCH_LIMIT ((ZBX_MAX_RECV_DATA_SIZE - ZBX_DATA_JSON_RESERVED) / 2)
-
-/* the maximum number of values processed in one batch */
-#define ZBX_HISTORY_VALUES_MAX 256
-
-typedef struct
-{
- zbx_uint64_t druleid;
- zbx_vector_uint64_t dcheckids;
- zbx_vector_ptr_t ips;
-}
-zbx_drule_t;
-
-typedef struct
-{
- char ip[ZBX_INTERFACE_IP_LEN_MAX];
- zbx_vector_ptr_t services;
-}
-zbx_drule_ip_t;
-
-typedef struct
-{
- const char *field;
- const char *tag;
- zbx_json_type_t jt;
- const char *default_value;
-}
-zbx_history_field_t;
-
-typedef struct
-{
- const char *table, *lastidfield;
- zbx_history_field_t fields[ZBX_MAX_FIELDS];
-}
-zbx_history_table_t;
-
-typedef int (*zbx_client_item_validator_t)(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error);
-
-typedef struct
-{
- zbx_uint64_t hostid;
- int value;
-}
-zbx_host_rights_t;
-
-static zbx_history_table_t dht = {
- "proxy_dhistory", "dhistory_lastid",
- {
- {"clock", ZBX_PROTO_TAG_CLOCK, ZBX_JSON_TYPE_INT, NULL},
- {"druleid", ZBX_PROTO_TAG_DRULE, ZBX_JSON_TYPE_INT, NULL},
- {"dcheckid", ZBX_PROTO_TAG_DCHECK, ZBX_JSON_TYPE_INT, NULL},
- {"ip", ZBX_PROTO_TAG_IP, ZBX_JSON_TYPE_STRING, NULL},
- {"dns", ZBX_PROTO_TAG_DNS, ZBX_JSON_TYPE_STRING, NULL},
- {"port", ZBX_PROTO_TAG_PORT, ZBX_JSON_TYPE_INT, "0"},
- {"value", ZBX_PROTO_TAG_VALUE, ZBX_JSON_TYPE_STRING, ""},
- {"status", ZBX_PROTO_TAG_STATUS, ZBX_JSON_TYPE_INT, "0"},
- {NULL}
- }
-};
-
-static zbx_history_table_t areg = {
- "proxy_autoreg_host", "autoreg_host_lastid",
- {
- {"clock", ZBX_PROTO_TAG_CLOCK, ZBX_JSON_TYPE_INT, NULL},
- {"host", ZBX_PROTO_TAG_HOST, ZBX_JSON_TYPE_STRING, NULL},
- {"listen_ip", ZBX_PROTO_TAG_IP, ZBX_JSON_TYPE_STRING, ""},
- {"listen_dns", ZBX_PROTO_TAG_DNS, ZBX_JSON_TYPE_STRING, ""},
- {"listen_port", ZBX_PROTO_TAG_PORT, ZBX_JSON_TYPE_STRING, "0"},
- {"host_metadata", ZBX_PROTO_TAG_HOST_METADATA, ZBX_JSON_TYPE_STRING, ""},
- {"flags", ZBX_PROTO_TAG_FLAGS, ZBX_JSON_TYPE_STRING, "0"},
- {"tls_accepted", ZBX_PROTO_TAG_TLS_ACCEPTED, ZBX_JSON_TYPE_INT, "0"},
- {NULL}
- }
-};
-
-/******************************************************************************
- * *
- * Purpose: check proxy connection permissions (encryption configuration and *
- * if peer proxy address is allowed) *
- * *
- * Parameters: *
- * proxy - [IN] the proxy data *
- * sock - [IN] connection socket context *
- * error - [OUT] error message *
- * *
- * Return value: *
- * SUCCEED - connection permission check was successful *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-int zbx_proxy_check_permissions(const DC_PROXY *proxy, const zbx_socket_t *sock, char **error)
-{
-#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
- zbx_tls_conn_attr_t attr;
-#endif
- if ('\0' != *proxy->proxy_address && FAIL == zbx_tcp_check_allowed_peers(sock, proxy->proxy_address))
- {
- *error = zbx_strdup(*error, "connection is not allowed");
- return FAIL;
- }
-
-#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
- if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
- {
- if (SUCCEED != zbx_tls_get_attr_cert(sock, &attr))
- {
- *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
- THIS_SHOULD_NEVER_HAPPEN;
- return FAIL;
- }
- }
-#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
- else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
- {
- if (SUCCEED != zbx_tls_get_attr_psk(sock, &attr))
- {
- *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
- THIS_SHOULD_NEVER_HAPPEN;
- return FAIL;
- }
- }
-#endif
- else if (ZBX_TCP_SEC_UNENCRYPTED != sock->connection_type)
- {
- *error = zbx_strdup(*error, "internal error: invalid connection type");
- THIS_SHOULD_NEVER_HAPPEN;
- return FAIL;
- }
-#endif
- if (0 == ((unsigned int)proxy->tls_accept & sock->connection_type))
- {
- *error = zbx_dsprintf(NULL, "connection of type \"%s\" is not allowed for proxy \"%s\"",
- zbx_tcp_connection_type_name(sock->connection_type), proxy->host);
- return FAIL;
- }
-
-#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
- if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
- {
- /* simplified match, not compliant with RFC 4517, 4518 */
- if ('\0' != *proxy->tls_issuer && 0 != strcmp(proxy->tls_issuer, attr.issuer))
- {
- *error = zbx_dsprintf(*error, "proxy \"%s\" certificate issuer does not match", proxy->host);
- return FAIL;
- }
-
- /* simplified match, not compliant with RFC 4517, 4518 */
- if ('\0' != *proxy->tls_subject && 0 != strcmp(proxy->tls_subject, attr.subject))
- {
- *error = zbx_dsprintf(*error, "proxy \"%s\" certificate subject does not match", proxy->host);
- return FAIL;
- }
- }
-#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
- else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
- {
- if (strlen(proxy->tls_psk_identity) != attr.psk_identity_len ||
- 0 != memcmp(proxy->tls_psk_identity, attr.psk_identity, attr.psk_identity_len))
- {
- *error = zbx_dsprintf(*error, "proxy \"%s\" is using false PSK identity", proxy->host);
- return FAIL;
- }
- }
-#endif
-#endif
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: checks host connection permissions (encryption configuration) *
- * *
- * Parameters: *
- * host - [IN] the host data *
- * sock - [IN] connection socket context *
- * error - [OUT] error message *
- * *
- * Return value: *
- * SUCCEED - connection permission check was successful *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int zbx_host_check_permissions(const DC_HOST *host, const zbx_socket_t *sock, char **error)
-{
-#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
- zbx_tls_conn_attr_t attr;
-
- if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
- {
- if (SUCCEED != zbx_tls_get_attr_cert(sock, &attr))
- {
- *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
- THIS_SHOULD_NEVER_HAPPEN;
- return FAIL;
- }
- }
-#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
- else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
- {
- if (SUCCEED != zbx_tls_get_attr_psk(sock, &attr))
- {
- *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
- THIS_SHOULD_NEVER_HAPPEN;
- return FAIL;
- }
- }
-#endif
- else if (ZBX_TCP_SEC_UNENCRYPTED != sock->connection_type)
- {
- *error = zbx_strdup(*error, "internal error: invalid connection type");
- THIS_SHOULD_NEVER_HAPPEN;
- return FAIL;
- }
-#endif
- if (0 == ((unsigned int)host->tls_accept & sock->connection_type))
- {
- *error = zbx_dsprintf(NULL, "connection of type \"%s\" is not allowed for host \"%s\"",
- zbx_tcp_connection_type_name(sock->connection_type), host->host);
- return FAIL;
- }
-
-#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
- if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
- {
- /* simplified match, not compliant with RFC 4517, 4518 */
- if ('\0' != *host->tls_issuer && 0 != strcmp(host->tls_issuer, attr.issuer))
- {
- *error = zbx_dsprintf(*error, "host \"%s\" certificate issuer does not match", host->host);
- return FAIL;
- }
-
- /* simplified match, not compliant with RFC 4517, 4518 */
- if ('\0' != *host->tls_subject && 0 != strcmp(host->tls_subject, attr.subject))
- {
- *error = zbx_dsprintf(*error, "host \"%s\" certificate subject does not match", host->host);
- return FAIL;
- }
- }
-#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
- else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
- {
- if (strlen(host->tls_psk_identity) != attr.psk_identity_len ||
- 0 != memcmp(host->tls_psk_identity, attr.psk_identity, attr.psk_identity_len))
- {
- *error = zbx_dsprintf(*error, "host \"%s\" is using false PSK identity", host->host);
- return FAIL;
- }
- }
-#endif
-#endif
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: *
- * Extract a proxy name from JSON and find the proxy ID in configuration *
- * cache, and check access rights. The proxy must be configured in active *
- * mode. *
- * *
- * Parameters: *
- * jp - [IN] JSON with the proxy name *
- * proxy - [OUT] the proxy data *
- * error - [OUT] error message *
- * *
- * Return value: *
- * SUCCEED - proxy ID was found in database *
- * FAIL - an error occurred (e.g. an unknown proxy, the proxy is *
- * configured in passive mode or access denied) *
- * *
- ******************************************************************************/
-int get_active_proxy_from_request(const struct zbx_json_parse *jp, DC_PROXY *proxy, char **error)
-{
- char *ch_error, host[ZBX_HOSTNAME_BUF_LEN];
-
- if (SUCCEED != zbx_json_value_by_name(jp, ZBX_PROTO_TAG_HOST, host, sizeof(host), NULL))
- {
- *error = zbx_strdup(*error, "missing name of proxy");
- return FAIL;
- }
-
- if (SUCCEED != zbx_check_hostname(host, &ch_error))
- {
- *error = zbx_dsprintf(*error, "invalid proxy name \"%s\": %s", host, ch_error);
- zbx_free(ch_error);
- return FAIL;
- }
-
- return zbx_dc_get_active_proxy_by_name(host, proxy, error);
-}
-
-/******************************************************************************
- * *
- * Purpose: *
- * Check access rights to a passive proxy for the given connection and *
- * send a response if denied. *
- * *
- * Parameters: *
- * sock - [IN] connection socket context *
- * send_response - [IN] to send or not to send a response to server. *
- * Value: ZBX_SEND_RESPONSE or *
- * ZBX_DO_NOT_SEND_RESPONSE *
- * req - [IN] request, included into error message *
- * zbx_config_tls - [IN] configured requirements to allow access *
- * *
- * Return value: *
- * SUCCEED - access is allowed *
- * FAIL - access is denied *
- * *
- ******************************************************************************/
-int check_access_passive_proxy(zbx_socket_t *sock, int send_response, const char *req,
- const zbx_config_tls_t *zbx_config_tls)
-{
- char *msg = NULL;
-
- if (FAIL == zbx_tcp_check_allowed_peers(sock, CONFIG_SERVER))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" is not allowed: %s", req, sock->peer,
- zbx_socket_strerror());
-
- if (ZBX_SEND_RESPONSE == send_response)
- zbx_send_proxy_response(sock, FAIL, "connection is not allowed", CONFIG_TIMEOUT);
-
- return FAIL;
- }
-
- if (0 == (zbx_config_tls->accept_modes & sock->connection_type))
- {
- msg = zbx_dsprintf(NULL, "%s over connection of type \"%s\" is not allowed", req,
- zbx_tcp_connection_type_name(sock->connection_type));
-
- zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" by proxy configuration parameter \"TLSAccept\"",
- msg, sock->peer);
-
- if (ZBX_SEND_RESPONSE == send_response)
- zbx_send_proxy_response(sock, FAIL, msg, CONFIG_TIMEOUT);
-
- zbx_free(msg);
- return FAIL;
- }
-
-#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
- if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
- {
- if (SUCCEED == zbx_check_server_issuer_subject(sock, zbx_config_tls->server_cert_issuer,
- zbx_config_tls->server_cert_subject, &msg))
- {
- return SUCCEED;
- }
-
- zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" is not allowed: %s", req, sock->peer, msg);
-
- if (ZBX_SEND_RESPONSE == send_response)
- zbx_send_proxy_response(sock, FAIL, "certificate issuer or subject mismatch", CONFIG_TIMEOUT);
-
- zbx_free(msg);
- return FAIL;
- }
- else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
- {
- if (0 != (ZBX_PSK_FOR_PROXY & zbx_tls_get_psk_usage()))
- return SUCCEED;
-
- zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" is not allowed: it used PSK which is not"
- " configured for proxy communication with server", req, sock->peer);
-
- if (ZBX_SEND_RESPONSE == send_response)
- zbx_send_proxy_response(sock, FAIL, "wrong PSK used", CONFIG_TIMEOUT);
-
- return FAIL;
- }
-#endif
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - no interface availability has been changed *
- * *
- ******************************************************************************/
-int get_interface_availability_data(struct zbx_json *json, int *ts)
-{
- int i, ret = FAIL;
- zbx_vector_ptr_t interfaces;
- zbx_interface_availability_t *ia;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- zbx_vector_ptr_create(&interfaces);
-
- if (SUCCEED != DCget_interfaces_availability(&interfaces, ts))
- goto out;
-
- zbx_json_addarray(json, ZBX_PROTO_TAG_INTERFACE_AVAILABILITY);
-
- for (i = 0; i < interfaces.values_num; i++)
- {
- ia = (zbx_interface_availability_t *)interfaces.values[i];
-
- zbx_json_addobject(json, NULL);
- zbx_json_adduint64(json, ZBX_PROTO_TAG_INTERFACE_ID, ia->interfaceid);
-
- zbx_json_adduint64(json, ZBX_PROTO_TAG_AVAILABLE, ia->agent.available);
- zbx_json_addstring(json, ZBX_PROTO_TAG_ERROR, ia->agent.error, ZBX_JSON_TYPE_STRING);
-
- zbx_json_close(json);
- }
-
- zbx_json_close(json);
-
- ret = SUCCEED;
-out:
- zbx_vector_ptr_clear_ext(&interfaces, (zbx_mem_free_func_t)zbx_interface_availability_free);
- zbx_vector_ptr_destroy(&interfaces);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: parses interfaces availability data contents and processes it *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-static int process_interfaces_availability_contents(struct zbx_json_parse *jp_data, char **error)
-{
- zbx_uint64_t interfaceid;
- struct zbx_json_parse jp_row;
- const char *p = NULL;
- char *tmp;
- size_t tmp_alloc = 129;
- zbx_interface_availability_t *ia = NULL;
- zbx_vector_availability_ptr_t interfaces;
- int ret;
-
- tmp = (char *)zbx_malloc(NULL, tmp_alloc);
-
- zbx_vector_availability_ptr_create(&interfaces);
-
- while (NULL != (p = zbx_json_next(jp_data, p))) /* iterate the interface entries */
- {
- if (SUCCEED != (ret = zbx_json_brackets_open(p, &jp_row)))
- {
- *error = zbx_strdup(*error, zbx_json_strerror());
- goto out;
- }
-
- if (SUCCEED != (ret = zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_INTERFACE_ID, &tmp, &tmp_alloc,
- NULL)))
- {
- *error = zbx_strdup(*error, zbx_json_strerror());
- goto out;
- }
-
- if (SUCCEED != (ret = zbx_is_uint64(tmp, &interfaceid)))
- {
- *error = zbx_strdup(*error, "interfaceid is not a valid numeric");
- goto out;
- }
-
- ia = (zbx_interface_availability_t *)zbx_malloc(NULL, sizeof(zbx_interface_availability_t));
- zbx_interface_availability_init(ia, interfaceid);
-
- if (SUCCEED == zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_AVAILABLE, &tmp, &tmp_alloc, NULL))
- {
- ia->agent.available = atoi(tmp);
- ia->agent.flags |= ZBX_FLAGS_AGENT_STATUS_AVAILABLE;
- }
-
- if (SUCCEED == zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_ERROR, &tmp, &tmp_alloc, NULL))
- {
- ia->agent.error = zbx_strdup(NULL, tmp);
- ia->agent.flags |= ZBX_FLAGS_AGENT_STATUS_ERROR;
- }
-
- if (SUCCEED != (ret = zbx_interface_availability_is_set(ia)))
- {
- zbx_free(ia);
- *error = zbx_dsprintf(*error, "no availability data for \"interfaceid\":" ZBX_FS_UI64,
- interfaceid);
- goto out;
- }
-
- zbx_vector_availability_ptr_append(&interfaces, ia);
- }
-
- if (0 < interfaces.values_num && SUCCEED == DCset_interfaces_availability(&interfaces))
- zbx_availabilities_flush(&interfaces);
-
- ret = SUCCEED;
-out:
- zbx_vector_availability_ptr_clear_ext(&interfaces, zbx_interface_availability_free);
- zbx_vector_availability_ptr_destroy(&interfaces);
-
- zbx_free(tmp);
-
- return ret;
-}
-
-static void proxy_get_lastid(const char *table_name, const char *lastidfield, zbx_uint64_t *lastid)
-{
- DB_RESULT result;
- DB_ROW row;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() field:'%s.%s'", __func__, table_name, lastidfield);
-
- result = DBselect("select nextid from ids where table_name='%s' and field_name='%s'",
- table_name, lastidfield);
-
- if (NULL == (row = DBfetch(result)))
- *lastid = 0;
- else
- ZBX_STR2UINT64(*lastid, row[0]);
- DBfree_result(result);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():" ZBX_FS_UI64, __func__, *lastid);
-}
-
-static void proxy_set_lastid(const char *table_name, const char *lastidfield, const zbx_uint64_t lastid)
-{
- DB_RESULT result;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() [%s.%s:" ZBX_FS_UI64 "]", __func__, table_name, lastidfield, lastid);
-
- result = DBselect("select 1 from ids where table_name='%s' and field_name='%s'",
- table_name, lastidfield);
-
- if (NULL == DBfetch(result))
- {
- DBexecute("insert into ids (table_name,field_name,nextid) values ('%s','%s'," ZBX_FS_UI64 ")",
- table_name, lastidfield, lastid);
- }
- else
- {
- DBexecute("update ids set nextid=" ZBX_FS_UI64 " where table_name='%s' and field_name='%s'",
- lastid, table_name, lastidfield);
- }
- DBfree_result(result);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
-}
-
-void proxy_set_hist_lastid(const zbx_uint64_t lastid)
-{
- proxy_set_lastid("proxy_history", "history_lastid", lastid);
-}
-
-void proxy_set_dhis_lastid(const zbx_uint64_t lastid)
-{
- proxy_set_lastid(dht.table, dht.lastidfield, lastid);
-}
-
-void proxy_set_areg_lastid(const zbx_uint64_t lastid)
-{
- proxy_set_lastid(areg.table, areg.lastidfield, lastid);
-}
-
-int proxy_get_delay(const zbx_uint64_t lastid)
-{
- DB_RESULT result;
- DB_ROW row;
- char *sql = NULL;
- int ts = 0;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() [lastid=" ZBX_FS_UI64 "]", __func__, lastid);
-
- sql = zbx_dsprintf(sql, "select write_clock from proxy_history where id>" ZBX_FS_UI64 " order by id asc",
- lastid);
-
- result = DBselectN(sql, 1);
- zbx_free(sql);
-
- if (NULL != (row = DBfetch(result)))
- ts = (int)time(NULL) - atoi(row[0]);
-
- DBfree_result(result);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
-
- return ts;
-}
-
-/******************************************************************************
- * *
- * Purpose: Get history data from the database. *
- * *
- ******************************************************************************/
-static void proxy_get_history_data_simple(struct zbx_json *j, const char *proto_tag, const zbx_history_table_t *ht,
- zbx_uint64_t *lastid, zbx_uint64_t *id, int *records_num, int *more)
-{
- size_t offset = 0;
- int f, records_num_last = *records_num, retries = 1;
- char sql[MAX_STRING_LEN];
- DB_RESULT result;
- DB_ROW row;
- struct timespec t_sleep = { 0, 100000000L }, t_rem;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() table:'%s'", __func__, ht->table);
-
- *more = ZBX_PROXY_DATA_DONE;
-
- offset += zbx_snprintf(sql + offset, sizeof(sql) - offset, "select id");
-
- for (f = 0; NULL != ht->fields[f].field; f++)
- offset += zbx_snprintf(sql + offset, sizeof(sql) - offset, ",%s", ht->fields[f].field);
-try_again:
- zbx_snprintf(sql + offset, sizeof(sql) - offset, " from %s where id>" ZBX_FS_UI64 " order by id",
- ht->table, *id);
-
- result = DBselectN(sql, ZBX_MAX_HRECORDS);
-
- while (NULL != (row = DBfetch(result)))
- {
- ZBX_STR2UINT64(*lastid, row[0]);
-
- if (1 < *lastid - *id)
- {
- /* At least one record is missing. It can happen if some DB syncer process has */
- /* started but not yet committed a transaction or a rollback occurred in a DB syncer. */
- if (0 < retries--)
- {
- DBfree_result(result);
- zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing."
- " Waiting " ZBX_FS_DBL " sec, retrying.",
- __func__, *lastid - *id - 1,
- t_sleep.tv_sec + t_sleep.tv_nsec / 1e9);
- nanosleep(&t_sleep, &t_rem);
- goto try_again;
- }
- else
- {
- zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing. No more retries.",
- __func__, *lastid - *id - 1);
- }
- }
-
- if (0 == *records_num)
- zbx_json_addarray(j, proto_tag);
-
- zbx_json_addobject(j, NULL);
-
- for (f = 0; NULL != ht->fields[f].field; f++)
- {
- if (NULL != ht->fields[f].default_value && 0 == strcmp(row[f + 1], ht->fields[f].default_value))
- continue;
-
- zbx_json_addstring(j, ht->fields[f].tag, row[f + 1], ht->fields[f].jt);
- }
-
- (*records_num)++;
-
- zbx_json_close(j);
-
- /* stop gathering data to avoid exceeding the maximum packet size */
- if (ZBX_DATA_JSON_RECORD_LIMIT < j->buffer_offset)
- {
- *more = ZBX_PROXY_DATA_MORE;
- break;
- }
-
- *id = *lastid;
- }
- DBfree_result(result);
-
- if (ZBX_MAX_HRECORDS == *records_num - records_num_last)
- *more = ZBX_PROXY_DATA_MORE;
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%d lastid:" ZBX_FS_UI64 " more:%d size:" ZBX_FS_SIZE_T,
- __func__, *records_num - records_num_last, *lastid, *more,
- (zbx_fs_size_t)j->buffer_offset);
-}
-
-typedef struct
-{
- zbx_uint64_t id;
- zbx_uint64_t itemid;
- zbx_uint64_t lastlogsize;
- size_t source_offset;
- size_t value_offset;
- int clock;
- int ns;
- int timestamp;
- int severity;
- int logeventid;
- int mtime;
- unsigned char state;
- unsigned char flags;
-}
-zbx_history_data_t;
-
-/******************************************************************************
- * *
- * Purpose: read proxy history data from the database *
- * *
- * Parameters: lastid - [IN] the id of last processed proxy *
- * history record *
- * data - [IN/OUT] the proxy history data buffer *
- * data_alloc - [IN/OUT] the size of proxy history data *
- * buffer *
- * string_buffer - [IN/OUT] the string buffer *
- * string_buffer_size - [IN/OUT] the size of string buffer *
- * more - [OUT] set to ZBX_PROXY_DATA_MORE if there *
- * might be more data to read *
- * *
- * Return value: The number of records read. *
- * *
- ******************************************************************************/
-static int proxy_get_history_data(zbx_uint64_t lastid, zbx_history_data_t **data, size_t *data_alloc,
- char **string_buffer, size_t *string_buffer_alloc, int *more)
-{
- DB_RESULT result;
- DB_ROW row;
- char *sql = NULL;
- size_t sql_alloc = 0, sql_offset = 0, data_num = 0;
- size_t string_buffer_offset = 0;
- zbx_uint64_t id;
- int retries = 1, total_retries = 10;
- struct timespec t_sleep = { 0, 100000000L }, t_rem;
- zbx_history_data_t *hd;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() lastid:" ZBX_FS_UI64, __func__, lastid);
-
-try_again:
- zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset,
- "select id,itemid,clock,ns,timestamp,source,severity,"
- "value,logeventid,state,lastlogsize,mtime,flags"
- " from proxy_history"
- " where id>" ZBX_FS_UI64
- " order by id",
- lastid);
-
- result = DBselectN(sql, ZBX_MAX_HRECORDS - data_num);
-
- zbx_free(sql);
-
- while (NULL != (row = DBfetch(result)))
- {
- ZBX_STR2UINT64(id, row[0]);
-
- if (1 < id - lastid)
- {
- /* At least one record is missing. It can happen if some DB syncer process has */
- /* started but not yet committed a transaction or a rollback occurred in a DB syncer. */
- if (0 < retries--)
- {
- /* limit the number of total retries to avoid being stuck */
- /* in history full of 'holes' for a long time */
- if (0 >= total_retries--)
- break;
-
- DBfree_result(result);
- zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing."
- " Waiting " ZBX_FS_DBL " sec, retrying.",
- __func__, id - lastid - 1,
- t_sleep.tv_sec + t_sleep.tv_nsec / 1e9);
- nanosleep(&t_sleep, &t_rem);
- goto try_again;
- }
- else
- {
- zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing. No more retries.",
- __func__, id - lastid - 1);
- }
- }
-
- retries = 1;
-
- if (*data_alloc == data_num)
- {
- *data_alloc *= 2;
- *data = (zbx_history_data_t *)zbx_realloc(*data, sizeof(zbx_history_data_t) * *data_alloc);
- }
-
- hd = *data + data_num++;
- hd->id = id;
- ZBX_STR2UINT64(hd->itemid, row[1]);
- ZBX_STR2UCHAR(hd->flags, row[12]);
- hd->clock = atoi(row[2]);
- hd->ns = atoi(row[3]);
-
- if (PROXY_HISTORY_FLAG_NOVALUE != (hd->flags & PROXY_HISTORY_MASK_NOVALUE))
- {
- ZBX_STR2UCHAR(hd->state, row[9]);
-
- if (0 == (hd->flags & PROXY_HISTORY_FLAG_NOVALUE))
- {
- size_t len1, len2;
-
- hd->timestamp = atoi(row[4]);
- hd->severity = atoi(row[6]);
- hd->logeventid = atoi(row[8]);
-
- len1 = strlen(row[5]) + 1;
- len2 = strlen(row[7]) + 1;
-
- if (*string_buffer_alloc < string_buffer_offset + len1 + len2)
- {
- while (*string_buffer_alloc < string_buffer_offset + len1 + len2)
- *string_buffer_alloc += ZBX_KIBIBYTE;
-
- *string_buffer = (char *)zbx_realloc(*string_buffer, *string_buffer_alloc);
- }
-
- hd->source_offset = string_buffer_offset;
- memcpy(*string_buffer + hd->source_offset, row[5], len1);
- string_buffer_offset += len1;
-
- hd->value_offset = string_buffer_offset;
- memcpy(*string_buffer + hd->value_offset, row[7], len2);
- string_buffer_offset += len2;
- }
-
- if (0 != (hd->flags & PROXY_HISTORY_FLAG_META))
- {
- ZBX_STR2UINT64(hd->lastlogsize, row[10]);
- hd->mtime = atoi(row[11]);
- }
- }
-
- lastid = id;
- }
- DBfree_result(result);
-
- if (ZBX_MAX_HRECORDS != data_num && 1 == retries)
- *more = ZBX_PROXY_DATA_DONE;
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s() data_num:" ZBX_FS_SIZE_T, __func__, data_num);
-
- return data_num;
-}
-
-/******************************************************************************
- * *
- * Purpose: add history records to output json *
- * *
- * Parameters: j - [IN] the json output buffer *
- * records_num - [IN] the total number of records added *
- * dc_items - [IN] the item configuration data *
- * errcodes - [IN] the item configuration status codes *
- * records - [IN] the records to add *
- * string_buffer - [IN] the string buffer holding string values *
- * lastid - [OUT] the id of last added record *
- * *
- * Return value: The total number of records added. *
- * *
- ******************************************************************************/
-static int proxy_add_hist_data(struct zbx_json *j, int records_num, const DC_ITEM *dc_items, const int *errcodes,
- const zbx_vector_ptr_t *records, const char *string_buffer, zbx_uint64_t *lastid)
-{
- int i;
- const zbx_history_data_t *hd;
-
- for (i = records->values_num - 1; i >= 0; i--)
- {
- hd = (const zbx_history_data_t *)records->values[i];
- *lastid = hd->id;
-
- if (SUCCEED != errcodes[i])
- continue;
-
- if (ITEM_STATUS_ACTIVE != dc_items[i].status)
- continue;
-
- if (HOST_STATUS_MONITORED != dc_items[i].host.status)
- continue;
-
- if (PROXY_HISTORY_FLAG_NOVALUE == (hd->flags & PROXY_HISTORY_MASK_NOVALUE))
- {
- if (SUCCEED != zbx_is_counted_in_item_queue(dc_items[i].type, dc_items[i].key_orig))
- continue;
- }
-
- if (0 == records_num)
- zbx_json_addarray(j, ZBX_PROTO_TAG_HISTORY_DATA);
-
- zbx_json_addobject(j, NULL);
- zbx_json_adduint64(j, ZBX_PROTO_TAG_ID, hd->id);
- zbx_json_adduint64(j, ZBX_PROTO_TAG_ITEMID, hd->itemid);
- zbx_json_adduint64(j, ZBX_PROTO_TAG_CLOCK, hd->clock);
- zbx_json_adduint64(j, ZBX_PROTO_TAG_NS, hd->ns);
-
- if (PROXY_HISTORY_FLAG_NOVALUE != (hd->flags & PROXY_HISTORY_MASK_NOVALUE))
- {
- if (ITEM_STATE_NORMAL != hd->state)
- zbx_json_adduint64(j, ZBX_PROTO_TAG_STATE, hd->state);
-
- if (0 == (hd->flags & PROXY_HISTORY_FLAG_NOVALUE))
- {
- if (0 != hd->timestamp)
- zbx_json_adduint64(j, ZBX_PROTO_TAG_LOGTIMESTAMP, hd->timestamp);
-
- if ('\0' != string_buffer[hd->source_offset])
- {
- zbx_json_addstring(j, ZBX_PROTO_TAG_LOGSOURCE,
- string_buffer + hd->source_offset, ZBX_JSON_TYPE_STRING);
- }
-
- if (0 != hd->severity)
- zbx_json_adduint64(j, ZBX_PROTO_TAG_LOGSEVERITY, hd->severity);
-
- if (0 != hd->logeventid)
- zbx_json_adduint64(j, ZBX_PROTO_TAG_LOGEVENTID, hd->logeventid);
-
- zbx_json_addstring(j, ZBX_PROTO_TAG_VALUE, string_buffer + hd->value_offset,
- ZBX_JSON_TYPE_STRING);
- }
-
- if (0 != (hd->flags & PROXY_HISTORY_FLAG_META))
- {
- zbx_json_adduint64(j, ZBX_PROTO_TAG_LASTLOGSIZE, hd->lastlogsize);
- zbx_json_adduint64(j, ZBX_PROTO_TAG_MTIME, hd->mtime);
- }
- }
-
- zbx_json_close(j);
- records_num++;
-
- /* stop gathering data to avoid exceeding the maximum packet size */
- if (ZBX_DATA_JSON_RECORD_LIMIT < j->buffer_offset)
- break;
- }
-
- return records_num;
-}
-
-int proxy_get_hist_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more)
-{
- int records_num = 0, data_num, i, *errcodes = NULL, items_alloc = 0;
- zbx_uint64_t id;
- zbx_hashset_t itemids_added;
- zbx_history_data_t *data;
- char *string_buffer;
- size_t data_alloc = 16, string_buffer_alloc = ZBX_KIBIBYTE;
- zbx_vector_uint64_t itemids;
- zbx_vector_ptr_t records;
- DC_ITEM *dc_items = 0;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- zbx_vector_uint64_create(&itemids);
- zbx_vector_ptr_create(&records);
- data = (zbx_history_data_t *)zbx_malloc(NULL, data_alloc * sizeof(zbx_history_data_t));
- string_buffer = (char *)zbx_malloc(NULL, string_buffer_alloc);
-
- *more = ZBX_PROXY_DATA_MORE;
- proxy_get_lastid("proxy_history", "history_lastid", &id);
-
- zbx_hashset_create(&itemids_added, data_alloc, ZBX_DEFAULT_UINT64_HASH_FUNC, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
-
- /* get history data in batches by ZBX_MAX_HRECORDS records and stop if: */
- /* 1) there are no more data to read */
- /* 2) we have retrieved more than the total maximum number of records */
- /* 3) we have gathered more than half of the maximum packet size */
- while (ZBX_DATA_JSON_BATCH_LIMIT > j->buffer_offset && ZBX_MAX_HRECORDS_TOTAL > records_num &&
- 0 != (data_num = proxy_get_history_data(id, &data, &data_alloc, &string_buffer,
- &string_buffer_alloc, more)))
- {
- zbx_vector_uint64_reserve(&itemids, data_num);
- zbx_vector_ptr_reserve(&records, data_num);
-
- /* filter out duplicate novalue updates */
- for (i = data_num - 1; i >= 0; i--)
- {
- if (PROXY_HISTORY_FLAG_NOVALUE == (data[i].flags & PROXY_HISTORY_MASK_NOVALUE))
- {
- if (NULL != zbx_hashset_search(&itemids_added, &data[i].itemid))
- continue;
-
- zbx_hashset_insert(&itemids_added, &data[i].itemid, sizeof(data[i].itemid));
- }
-
- zbx_vector_ptr_append(&records, &data[i]);
- zbx_vector_uint64_append(&itemids, data[i].itemid);
- }
-
- /* append history records to json */
-
- if (itemids.values_num > items_alloc)
- {
- items_alloc = itemids.values_num;
- dc_items = (DC_ITEM *)zbx_realloc(dc_items, items_alloc * sizeof(DC_ITEM));
- errcodes = (int *)zbx_realloc(errcodes, items_alloc * sizeof(int));
- }
-
- DCconfig_get_items_by_itemids(dc_items, itemids.values, errcodes, itemids.values_num);
-
- records_num = proxy_add_hist_data(j, records_num, dc_items, errcodes, &records, string_buffer, lastid);
- DCconfig_clean_items(dc_items, errcodes, itemids.values_num);
-
- /* got less data than requested - either no more data to read or the history is full of */
- /* holes. In this case send retrieved data before attempting to read/wait for more data */
- if (ZBX_MAX_HRECORDS > data_num)
- break;
-
- zbx_vector_uint64_clear(&itemids);
- zbx_vector_ptr_clear(&records);
- zbx_hashset_clear(&itemids_added);
- id = *lastid;
- }
-
- if (0 != records_num)
- zbx_json_close(j);
-
- zbx_hashset_destroy(&itemids_added);
-
- zbx_free(dc_items);
- zbx_free(errcodes);
- zbx_free(data);
- zbx_free(string_buffer);
- zbx_vector_ptr_destroy(&records);
- zbx_vector_uint64_destroy(&itemids);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s() lastid:" ZBX_FS_UI64 " records_num:%d size:~" ZBX_FS_SIZE_T " more:%d",
- __func__, *lastid, records_num, j->buffer_offset, *more);
-
- return records_num;
-}
-
-int proxy_get_dhis_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more)
-{
- int records_num = 0;
- zbx_uint64_t id;
-
- proxy_get_lastid(dht.table, dht.lastidfield, &id);
-
- /* get history data in batches by ZBX_MAX_HRECORDS records and stop if: */
- /* 1) there are no more data to read */
- /* 2) we have retrieved more than the total maximum number of records */
- /* 3) we have gathered more than half of the maximum packet size */
- while (ZBX_DATA_JSON_BATCH_LIMIT > j->buffer_offset)
- {
- proxy_get_history_data_simple(j, ZBX_PROTO_TAG_DISCOVERY_DATA, &dht, lastid, &id, &records_num, more);
-
- if (ZBX_PROXY_DATA_DONE == *more || ZBX_MAX_HRECORDS_TOTAL <= records_num)
- break;
- }
-
- if (0 != records_num)
- zbx_json_close(j);
-
- return records_num;
-}
-
-int proxy_get_areg_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more)
-{
- int records_num = 0;
- zbx_uint64_t id;
-
- proxy_get_lastid(areg.table, areg.lastidfield, &id);
-
- /* get history data in batches by ZBX_MAX_HRECORDS records and stop if: */
- /* 1) there are no more data to read */
- /* 2) we have retrieved more than the total maximum number of records */
- /* 3) we have gathered more than half of the maximum packet size */
- while (ZBX_DATA_JSON_BATCH_LIMIT > j->buffer_offset)
- {
- proxy_get_history_data_simple(j, ZBX_PROTO_TAG_AUTOREGISTRATION, &areg, lastid, &id, &records_num,
- more);
-
- if (ZBX_PROXY_DATA_DONE == *more || ZBX_MAX_HRECORDS_TOTAL <= records_num)
- break;
- }
-
- if (0 != records_num)
- zbx_json_close(j);
-
- return records_num;
-}
-
-int proxy_get_host_active_availability(struct zbx_json *j)
-{
- zbx_ipc_message_t response;
- int records_num = 0;
-
- zbx_ipc_message_init(&response);
- zbx_availability_send(ZBX_IPC_AVAILMAN_ACTIVE_HOSTDATA, 0, 0, &response);
-
- if (0 != response.size)
- {
- zbx_vector_proxy_hostdata_ptr_t hostdata;
-
- zbx_vector_proxy_hostdata_ptr_create(&hostdata);
- zbx_availability_deserialize_hostdata(response.data, &hostdata);
- zbx_availability_serialize_json_hostdata(&hostdata, j);
-
- records_num = hostdata.values_num;
-
- zbx_vector_proxy_hostdata_ptr_clear_ext(&hostdata, (zbx_proxy_hostdata_ptr_free_func_t)zbx_ptr_free);
- zbx_vector_proxy_hostdata_ptr_destroy(&hostdata);
- }
-
- zbx_ipc_message_clean(&response);
-
- return records_num;
-}
-
void calc_timestamp(const char *line, int *timestamp, const char *format)
{
int hh, mm, ss, yyyy, dd, MM;
@@ -1155,6 +30,7 @@ void calc_timestamp(const char *line, int *timestamp, const char *format)
struct tm tm;
time_t t;
+
zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
hh = mm = ss = yyyy = dd = MM = 0;
@@ -1217,1637 +93,6 @@ void calc_timestamp(const char *line, int *timestamp, const char *format)
/******************************************************************************
* *
- * Purpose: processes item value depending on proxy/flags settings *
- * *
- * Parameters: item - [IN] the item to process *
- * result - [IN] the item result *
- * *
- * Comments: Values gathered by server are sent to the preprocessing manager, *
- * while values received from proxy are already preprocessed and *
- * must be either directly stored to history cache or sent to lld *
- * manager. *
- * *
- ******************************************************************************/
-static void process_item_value(const DC_ITEM *item, AGENT_RESULT *result, zbx_timespec_t *ts, int *h_num,
- char *error)
-{
- if (0 == item->host.proxy_hostid)
- {
- zbx_preprocess_item_value(item->itemid, item->host.hostid, item->value_type, item->flags, result, ts,
- item->state, error);
- *h_num = 0;
- }
- else
- {
- if (0 != (ZBX_FLAG_DISCOVERY_RULE & item->flags))
- {
- zbx_lld_process_agent_result(item->itemid, item->host.hostid, result, ts, error);
- *h_num = 0;
- }
- else
- {
- dc_add_history(item->itemid, item->value_type, item->flags, result, ts, item->state, error);
- *h_num = 1;
- }
- }
-}
-
-/******************************************************************************
- * *
- * Purpose: process single value from incoming history data *
- * *
- * Parameters: item - [IN] the item to process *
- * value - [IN] the value to process *
- * hval - [OUT] indication that value was added to history *
- * *
- * Return value: SUCCEED - the value was processed successfully *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int process_history_data_value(DC_ITEM *item, zbx_agent_value_t *value, int *h_num)
-{
- if (ITEM_STATUS_ACTIVE != item->status)
- return FAIL;
-
- if (HOST_STATUS_MONITORED != item->host.status)
- return FAIL;
-
- /* update item nextcheck during maintenance */
- if (SUCCEED == in_maintenance_without_data_collection(item->host.maintenance_status,
- item->host.maintenance_type, item->type) &&
- item->host.maintenance_from <= value->ts.sec)
- {
- return SUCCEED;
- }
-
- if (NULL == value->value && ITEM_STATE_NOTSUPPORTED == value->state)
- {
- THIS_SHOULD_NEVER_HAPPEN;
- return FAIL;
- }
-
- if (ITEM_STATE_NOTSUPPORTED == value->state ||
- (NULL != value->value && 0 == strcmp(value->value, ZBX_NOTSUPPORTED)))
- {
- zabbix_log(LOG_LEVEL_DEBUG, "item [%s:%s] error: %s", item->host.host, item->key_orig, value->value);
-
- item->state = ITEM_STATE_NOTSUPPORTED;
- process_item_value(item, NULL, &value->ts, h_num, value->value);
- }
- else
- {
- AGENT_RESULT result;
-
- zbx_init_agent_result(&result);
-
- if (NULL != value->value)
- {
- if (ITEM_VALUE_TYPE_LOG == item->value_type)
- {
- zbx_log_t *log;
-
- log = (zbx_log_t *)zbx_malloc(NULL, sizeof(zbx_log_t));
- log->value = zbx_strdup(NULL, value->value);
- zbx_replace_invalid_utf8(log->value);
-
- if (0 == value->timestamp)
- {
- log->timestamp = 0;
- calc_timestamp(log->value, &log->timestamp, item->logtimefmt);
- }
- else
- log->timestamp = value->timestamp;
-
- log->logeventid = value->logeventid;
- log->severity = value->severity;
-
- if (NULL != value->source)
- {
- log->source = zbx_strdup(NULL, value->source);
- zbx_replace_invalid_utf8(log->source);
- }
- else
- log->source = NULL;
-
- SET_LOG_RESULT(&result, log);
- }
- else
- zbx_set_agent_result_type(&result, ITEM_VALUE_TYPE_TEXT, value->value);
- }
-
- if (0 != value->meta)
- zbx_set_agent_result_meta(&result, value->lastlogsize, value->mtime);
-
- if (0 != ZBX_ISSET_VALUE(&result) || 0 != ZBX_ISSET_META(&result))
- {
- item->state = ITEM_STATE_NORMAL;
- process_item_value(item, &result, &value->ts, h_num, NULL);
- }
-
- zbx_free_agent_result(&result);
- }
-
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: process new item values *
- * *
- * Parameters: items - [IN] the items to process *
- * values - [IN] the item values value to process *
- * errcodes - [IN/OUT] in - item configuration error code *
- * (FAIL - item/host was not found) *
- * out - value processing result *
- * (SUCCEED - processed, FAIL - error) *
- * values_num - [IN] the number of items/values to process *
- * nodata_win - [IN/OUT] proxy communication delay info *
- * *
- * Return value: the number of processed values *
- * *
- ******************************************************************************/
-int process_history_data(DC_ITEM *items, zbx_agent_value_t *values, int *errcodes, size_t values_num,
- zbx_proxy_suppress_t *nodata_win)
-{
- size_t i;
- int processed_num = 0, history_num;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- for (i = 0; i < values_num; i++)
- {
- if (SUCCEED != errcodes[i])
- continue;
-
- history_num = 0;
-
- if (SUCCEED != process_history_data_value(&items[i], &values[i], &history_num))
- {
- /* clean failed items to avoid updating their runtime data */
- DCconfig_clean_items(&items[i], &errcodes[i], 1);
- errcodes[i] = FAIL;
- continue;
- }
-
- if (0 != items[i].host.proxy_hostid && NULL != nodata_win &&
- 0 != (nodata_win->flags & ZBX_PROXY_SUPPRESS_ACTIVE) && 0 < history_num)
- {
- if (values[i].ts.sec <= nodata_win->period_end)
- {
- nodata_win->values_num++;
- }
- else
- {
- nodata_win->flags &= (~ZBX_PROXY_SUPPRESS_MORE);
- }
-
- zabbix_log(LOG_LEVEL_TRACE, "%s() flags:%d values_num:%d value_time:%d period_end:%d",
- __func__, nodata_win->flags, nodata_win->values_num, values[i].ts.sec,
- nodata_win->period_end);
- }
-
- processed_num++;
- }
-
- if (0 < processed_num)
- zbx_dc_items_update_nextcheck(items, values, errcodes, values_num);
-
- zbx_preprocessor_flush();
- dc_flush_history();
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s() processed:%d", __func__, processed_num);
-
- return processed_num;
-}
-
-/******************************************************************************
- * *
- * Purpose: frees resources allocated to store agent values *
- * *
- * Parameters: values - [IN] the values to clean *
- * values_num - [IN] the number of items in values array *
- * *
- ******************************************************************************/
-static void zbx_agent_values_clean(zbx_agent_value_t *values, size_t values_num)
-{
- size_t i;
-
- for (i = 0; i < values_num; i++)
- {
- zbx_free(values[i].value);
- zbx_free(values[i].source);
- }
-}
-
-/******************************************************************************
- * *
- * Purpose: calculates difference between server and client (proxy, active *
- * agent or sender) time and log it *
- * *
- * Parameters: level - [IN] log level *
- * jp - [IN] JSON with clock, [ns] fields *
- * ts_recv - [IN] the connection timestamp *
- * *
- ******************************************************************************/
-static void log_client_timediff(int level, struct zbx_json_parse *jp, const zbx_timespec_t *ts_recv)
-{
- char tmp[32];
- zbx_timespec_t client_timediff;
- int sec, ns;
-
- if (SUCCEED != ZBX_CHECK_LOG_LEVEL(level))
- return;
-
- if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_CLOCK, tmp, sizeof(tmp), NULL))
- {
- sec = atoi(tmp);
- client_timediff.sec = ts_recv->sec - sec;
-
- if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_NS, tmp, sizeof(tmp), NULL))
- {
- ns = atoi(tmp);
- client_timediff.ns = ts_recv->ns - ns;
-
- if (client_timediff.sec > 0 && client_timediff.ns < 0)
- {
- client_timediff.sec--;
- client_timediff.ns += 1000000000;
- }
- else if (client_timediff.sec < 0 && client_timediff.ns > 0)
- {
- client_timediff.sec++;
- client_timediff.ns -= 1000000000;
- }
-
- zabbix_log(level, "%s(): timestamp from json %d seconds and %d nanosecond, "
- "delta time from json %d seconds and %d nanosecond",
- __func__, sec, ns, client_timediff.sec, client_timediff.ns);
- }
- else
- {
- zabbix_log(level, "%s(): timestamp from json %d seconds, "
- "delta time from json %d seconds", __func__, sec, client_timediff.sec);
- }
- }
-}
-
-/******************************************************************************
- * *
- * Purpose: parses agent value from history data json row *
- * *
- * Parameters: jp_row - [IN] JSON with history data row *
- * unique_shift - [IN/OUT] auto increment nanoseconds to ensure *
- * unique value of timestamps *
- * av - [OUT] the agent value *
- * *
- * Return value: SUCCEED - the value was parsed successfully *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int parse_history_data_row_value(const struct zbx_json_parse *jp_row, zbx_timespec_t *unique_shift,
- zbx_agent_value_t *av)
-{
- char *tmp = NULL;
- size_t tmp_alloc = 0;
- int ret = FAIL;
-
- memset(av, 0, sizeof(zbx_agent_value_t));
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_CLOCK, &tmp, &tmp_alloc, NULL))
- {
- if (FAIL == zbx_is_uint31(tmp, &av->ts.sec))
- goto out;
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_NS, &tmp, &tmp_alloc, NULL))
- {
- if (FAIL == zbx_is_uint_n_range(tmp, tmp_alloc, &av->ts.ns, sizeof(av->ts.ns),
- 0LL, 999999999LL))
- {
- goto out;
- }
- }
- else
- {
- /* ensure unique value timestamp (clock, ns) if only clock is available */
-
- av->ts.sec += unique_shift->sec;
- av->ts.ns = unique_shift->ns++;
-
- if (unique_shift->ns > 999999999)
- {
- unique_shift->sec++;
- unique_shift->ns = 0;
- }
- }
- }
- else
- zbx_timespec(&av->ts);
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_STATE, &tmp, &tmp_alloc, NULL))
- av->state = (unsigned char)atoi(tmp);
-
- /* Unsupported item meta information must be ignored for backwards compatibility. */
- /* New agents will not send meta information for items in unsupported state. */
- if (ITEM_STATE_NOTSUPPORTED != av->state)
- {
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LASTLOGSIZE, &tmp, &tmp_alloc, NULL))
- {
- av->meta = 1; /* contains meta information */
-
- zbx_is_uint64(tmp, &av->lastlogsize);
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_MTIME, &tmp, &tmp_alloc, NULL))
- av->mtime = atoi(tmp);
- }
- }
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_VALUE, &tmp, &tmp_alloc, NULL))
- av->value = zbx_strdup(av->value, tmp);
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGTIMESTAMP, &tmp, &tmp_alloc, NULL))
- av->timestamp = atoi(tmp);
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGSOURCE, &tmp, &tmp_alloc, NULL))
- av->source = zbx_strdup(av->source, tmp);
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGSEVERITY, &tmp, &tmp_alloc, NULL))
- av->severity = atoi(tmp);
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGEVENTID, &tmp, &tmp_alloc, NULL))
- av->logeventid = atoi(tmp);
-
- if (SUCCEED != zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_ID, &tmp, &tmp_alloc, NULL) ||
- SUCCEED != zbx_is_uint64(tmp, &av->id))
- {
- av->id = 0;
- }
-
- zbx_free(tmp);
-
- ret = SUCCEED;
-out:
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: parses item identifier from history data json row *
- * *
- * Parameters: jp_row - [IN] JSON with history data row *
- * itemid - [OUT] the item identifier *
- * *
- * Return value: SUCCEED - the item identifier was parsed successfully *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int parse_history_data_row_itemid(const struct zbx_json_parse *jp_row, zbx_uint64_t *itemid)
-{
- char buffer[MAX_ID_LEN + 1];
-
- if (SUCCEED != zbx_json_value_by_name(jp_row, ZBX_PROTO_TAG_ITEMID, buffer, sizeof(buffer), NULL))
- return FAIL;
-
- if (SUCCEED != zbx_is_uint64(buffer, itemid))
- return FAIL;
-
- return SUCCEED;
-}
-/******************************************************************************
- * *
- * Purpose: parses host,key pair from history data json row *
- * *
- * Parameters: jp_row - [IN] JSON with history data row *
- * hk - [OUT] the host,key pair *
- * *
- * Return value: SUCCEED - the host,key pair was parsed successfully *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int parse_history_data_row_hostkey(const struct zbx_json_parse *jp_row, zbx_host_key_t *hk)
-{
- size_t str_alloc;
-
- str_alloc = 0;
- zbx_free(hk->host);
-
- if (SUCCEED != zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_HOST, &hk->host, &str_alloc, NULL))
- return FAIL;
-
- str_alloc = 0;
- zbx_free(hk->key);
-
- if (SUCCEED != zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_KEY, &hk->key, &str_alloc, NULL))
- {
- zbx_free(hk->host);
- return FAIL;
- }
-
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: parses up to ZBX_HISTORY_VALUES_MAX item values and host,key *
- * pairs from history data json *
- * *
- * Parameters: jp_data - [IN] JSON with history data array *
- * pnext - [IN/OUT] the pointer to the next item in json, *
- * NULL - no more data left *
- * values - [OUT] the item values *
- * hostkeys - [OUT] the corresponding host,key pairs *
- * values_num - [OUT] number of elements in values and hostkeys *
- * arrays *
- * parsed_num - [OUT] the number of values parsed *
- * unique_shift - [IN/OUT] auto increment nanoseconds to ensure *
- * unique value of timestamps *
- * *
- * Return value: SUCCEED - values were parsed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-static int parse_history_data(struct zbx_json_parse *jp_data, const char **pnext, zbx_agent_value_t *values,
- zbx_host_key_t *hostkeys, int *values_num, int *parsed_num, zbx_timespec_t *unique_shift)
-{
- struct zbx_json_parse jp_row;
- int ret = FAIL;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- *values_num = 0;
- *parsed_num = 0;
-
- if (NULL == *pnext)
- {
- if (NULL == (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX)
- {
- ret = SUCCEED;
- goto out;
- }
- }
-
- /* iterate the history data rows */
- do
- {
- if (FAIL == zbx_json_brackets_open(*pnext, &jp_row))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s", zbx_json_strerror());
- goto out;
- }
-
- (*parsed_num)++;
-
- if (SUCCEED != parse_history_data_row_hostkey(&jp_row, &hostkeys[*values_num]))
- continue;
-
- if (SUCCEED != parse_history_data_row_value(&jp_row, unique_shift, &values[*values_num]))
- continue;
-
- (*values_num)++;
- }
- while (NULL != (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX);
-
- ret = SUCCEED;
-out:
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s processed:%d/%d", __func__, zbx_result_string(ret),
- *values_num, *parsed_num);
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: parses up to ZBX_HISTORY_VALUES_MAX item values and item *
- * identifiers from history data json *
- * *
- * Parameters: jp_data - [IN] JSON with history data array *
- * pnext - [IN/OUT] the pointer to the next item in *
- * json, NULL - no more data left *
- * values - [OUT] the item values *
- * itemids - [OUT] the corresponding item identifiers *
- * values_num - [OUT] number of elements in values and itemids *
- * arrays *
- * parsed_num - [OUT] the number of values parsed *
- * unique_shift - [IN/OUT] auto increment nanoseconds to ensure *
- * unique value of timestamps *
- * info - [OUT] address of a pointer to the info string *
- * (should be freed by the caller) *
- * *
- * Return value: SUCCEED - values were parsed successfully *
- * FAIL - an error occurred *
- * *
- * Comments: This function is used to parse the new proxy history data *
- * protocol introduced in Zabbix v3.3. *
- * *
- ******************************************************************************/
-static int parse_history_data_by_itemids(struct zbx_json_parse *jp_data, const char **pnext,
- zbx_agent_value_t *values, zbx_uint64_t *itemids, int *values_num, int *parsed_num,
- zbx_timespec_t *unique_shift, char **error)
-{
- struct zbx_json_parse jp_row;
- int ret = FAIL;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- *values_num = 0;
- *parsed_num = 0;
-
- if (NULL == *pnext)
- {
- if (NULL == (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX)
- {
- ret = SUCCEED;
- goto out;
- }
- }
-
- /* iterate the history data rows */
- do
- {
- if (FAIL == zbx_json_brackets_open(*pnext, &jp_row))
- {
- *error = zbx_strdup(*error, zbx_json_strerror());
- goto out;
- }
-
- (*parsed_num)++;
-
- if (SUCCEED != parse_history_data_row_itemid(&jp_row, &itemids[*values_num]))
- continue;
-
- if (SUCCEED != parse_history_data_row_value(&jp_row, unique_shift, &values[*values_num]))
- continue;
-
- (*values_num)++;
- }
- while (NULL != (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX);
-
- ret = SUCCEED;
-out:
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s processed:%d/%d", __func__, zbx_result_string(ret),
- *values_num, *parsed_num);
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: validates item received from proxy *
- * *
- * Parameters: item - [IN/OUT] the item data *
- * sock - [IN] the connection socket *
- * args - [IN] the validator arguments *
- * error - unused *
- * *
- * Return value: SUCCEED - the validation was successful *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int proxy_item_validator(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error)
-{
- zbx_uint64_t *proxyid = (zbx_uint64_t *)args;
-
- ZBX_UNUSED(sock);
- ZBX_UNUSED(error);
-
- /* don't process item if its host was assigned to another proxy */
- if (item->host.proxy_hostid != *proxyid)
- return FAIL;
-
- /* don't process aggregate/calculated items coming from proxy */
- if (ITEM_TYPE_CALCULATED == item->type)
- return FAIL;
-
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: parses history data array and process the data *
- * *
- * *
- * Parameters: sock - [IN] socket for host permission validation *
- * validator_func - [IN] function to validate item permission *
- * validator_args - [IN] validator function arguments *
- * jp_data - [IN] JSON with history data array *
- * session - [IN] the data session *
- * nodata_win - [OUT] counter of delayed values *
- * info - [OUT] address of a pointer to the info *
- * string (should be freed by the caller) *
- * mode - [IN] item retrieve mode is used to retrieve *
- * only necessary data to reduce time *
- * spent holding read lock *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- * Comments: This function is used to parse the new proxy history data *
- * protocol introduced in Zabbix v3.3. *
- * *
- ******************************************************************************/
-static int process_history_data_by_itemids(zbx_socket_t *sock, zbx_client_item_validator_t validator_func,
- void *validator_args, struct zbx_json_parse *jp_data, zbx_session_t *session,
- zbx_proxy_suppress_t *nodata_win, char **info, unsigned int mode)
-{
- const char *pnext = NULL;
- int ret = SUCCEED, processed_num = 0, total_num = 0, values_num, read_num, i, *errcodes;
- double sec;
- DC_ITEM *items;
- char *error = NULL;
- zbx_uint64_t itemids[ZBX_HISTORY_VALUES_MAX], last_valueid = 0;
- zbx_agent_value_t values[ZBX_HISTORY_VALUES_MAX];
- zbx_timespec_t unique_shift = {0, 0};
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- items = (DC_ITEM *)zbx_malloc(NULL, sizeof(DC_ITEM) * ZBX_HISTORY_VALUES_MAX);
- errcodes = (int *)zbx_malloc(NULL, sizeof(int) * ZBX_HISTORY_VALUES_MAX);
-
- sec = zbx_time();
-
- while (SUCCEED == parse_history_data_by_itemids(jp_data, &pnext, values, itemids, &values_num, &read_num,
- &unique_shift, &error) && 0 != values_num)
- {
- DCconfig_get_items_by_itemids_partial(items, itemids, errcodes, values_num, mode);
-
- for (i = 0; i < values_num; i++)
- {
- if (SUCCEED != errcodes[i])
- continue;
-
- /* check and discard if duplicate data */
- if (NULL != session && 0 != values[i].id && values[i].id <= session->last_id)
- {
- DCconfig_clean_items(&items[i], &errcodes[i], 1);
- errcodes[i] = FAIL;
- continue;
- }
-
- if (SUCCEED != validator_func(&items[i], sock, validator_args, &error))
- {
- if (NULL != error)
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s", error);
- zbx_free(error);
- }
-
- DCconfig_clean_items(&items[i], &errcodes[i], 1);
- errcodes[i] = FAIL;
- }
- }
-
- processed_num += process_history_data(items, values, errcodes, values_num, nodata_win);
-
- total_num += read_num;
-
- last_valueid = values[values_num - 1].id;
-
- DCconfig_clean_items(items, errcodes, values_num);
- zbx_agent_values_clean(values, values_num);
-
- if (NULL == pnext)
- break;
- }
-
- if (NULL != session && 0 != last_valueid)
- {
- if (session->last_id > last_valueid)
- {
- zabbix_log(LOG_LEVEL_WARNING, "received id:" ZBX_FS_UI64 " is less than last id:"
- ZBX_FS_UI64, last_valueid, session->last_id);
- }
- else
- session->last_id = last_valueid;
- }
-
- zbx_free(errcodes);
- zbx_free(items);
-
- if (NULL == error)
- {
- ret = SUCCEED;
- *info = zbx_dsprintf(*info, "processed: %d; failed: %d; total: %d; seconds spent: " ZBX_FS_DBL,
- processed_num, total_num - processed_num, total_num, zbx_time() - sec);
- }
- else
- {
- zbx_free(*info);
- *info = error;
- }
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: validates item received from active agent *
- * *
- * Parameters: item - [IN] the item data *
- * sock - [IN] the connection socket *
- * args - [IN] the validator arguments *
- * error - [OUT] the error message *
- * *
- * Return value: SUCCEED - the validation was successful *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int agent_item_validator(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error)
-{
- zbx_host_rights_t *rights = (zbx_host_rights_t *)args;
-
- if (0 != item->host.proxy_hostid)
- return FAIL;
-
- if (ITEM_TYPE_ZABBIX_ACTIVE != item->type)
- return FAIL;
-
- if (rights->hostid != item->host.hostid)
- {
- rights->hostid = item->host.hostid;
- rights->value = zbx_host_check_permissions(&item->host, sock, error);
- }
-
- return rights->value;
-}
-
-/******************************************************************************
- * *
- * Purpose: validates item received from sender *
- * *
- * Parameters: item - [IN] the item data *
- * sock - [IN] the connection socket *
- * args - [IN] the validator arguments *
- * error - [OUT] the error message *
- * *
- * Return value: SUCCEED - the validation was successful *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int sender_item_validator(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error)
-{
- zbx_host_rights_t *rights;
- char key_short[VALUE_ERRMSG_MAX * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1];
-
- if (0 != item->host.proxy_hostid)
- return FAIL;
-
- switch(item->type)
- {
- case ITEM_TYPE_HTTPAGENT:
- if (0 == item->allow_traps)
- {
- *error = zbx_dsprintf(*error, "cannot process HTTP agent item \"%s\" trap:"
- " trapping is not enabled", zbx_truncate_itemkey(item->key_orig,
- VALUE_ERRMSG_MAX, key_short, sizeof(key_short)));
- return FAIL;
- }
- break;
- case ITEM_TYPE_TRAPPER:
- break;
- default:
- *error = zbx_dsprintf(*error, "cannot process item \"%s\" trap:"
- " item type \"%d\" cannot be used with traps",
- zbx_truncate_itemkey(item->key_orig, VALUE_ERRMSG_MAX, key_short,
- sizeof(key_short)), item->type);
- return FAIL;
- }
-
- if ('\0' != *item->trapper_hosts) /* list of allowed hosts not empty */
- {
- char *allowed_peers;
- int ret;
-
- allowed_peers = zbx_strdup(NULL, item->trapper_hosts);
- zbx_substitute_simple_macros(NULL, NULL, NULL, NULL, NULL, NULL, item, NULL, NULL, NULL, NULL, NULL,
- &allowed_peers, MACRO_TYPE_ALLOWED_HOSTS, NULL, 0);
- ret = zbx_tcp_check_allowed_peers(sock, allowed_peers);
- zbx_free(allowed_peers);
-
- if (FAIL == ret)
- {
- *error = zbx_dsprintf(*error, "cannot process item \"%s\" trap: %s",
- zbx_truncate_itemkey(item->key_orig, VALUE_ERRMSG_MAX, key_short,
- sizeof(key_short)), zbx_socket_strerror());
- return FAIL;
- }
- }
-
- rights = (zbx_host_rights_t *)args;
-
- if (rights->hostid != item->host.hostid)
- {
- rights->hostid = item->host.hostid;
- rights->value = zbx_host_check_permissions(&item->host, sock, error);
- }
-
- return rights->value;
-}
-
-static void process_history_data_by_keys(zbx_socket_t *sock, zbx_client_item_validator_t validator_func,
- void *validator_args, char **info, struct zbx_json_parse *jp_data, const char *token)
-{
- int values_num, read_num, processed_num = 0, total_num = 0, i;
- zbx_timespec_t unique_shift = {0, 0};
- const char *pnext = NULL;
- char *error = NULL;
- zbx_host_key_t *hostkeys;
- DC_ITEM *items;
- zbx_session_t *session = NULL;
- zbx_uint64_t last_hostid = 0;
- zbx_agent_value_t values[ZBX_HISTORY_VALUES_MAX];
- int errcodes[ZBX_HISTORY_VALUES_MAX];
- double sec;
-
- sec = zbx_time();
-
- items = (DC_ITEM *)zbx_malloc(NULL, sizeof(DC_ITEM) * ZBX_HISTORY_VALUES_MAX);
- hostkeys = (zbx_host_key_t *)zbx_malloc(NULL, sizeof(zbx_host_key_t) * ZBX_HISTORY_VALUES_MAX);
- memset(hostkeys, 0, sizeof(zbx_host_key_t) * ZBX_HISTORY_VALUES_MAX);
-
- while (SUCCEED == parse_history_data(jp_data, &pnext, values, hostkeys, &values_num, &read_num,
- &unique_shift) && 0 != values_num)
- {
- DCconfig_get_items_by_keys(items, hostkeys, errcodes, values_num);
-
- for (i = 0; i < values_num; i++)
- {
- if (SUCCEED != errcodes[i])
- {
- zabbix_log(LOG_LEVEL_DEBUG, "cannot retrieve key \"%s\" on host \"%s\" from "
- "configuration cache", hostkeys[i].key, hostkeys[i].host);
- continue;
- }
-
- if (last_hostid != items[i].host.hostid)
- {
- last_hostid = items[i].host.hostid;
-
- if (NULL != token)
- {
- session = zbx_dc_get_or_create_session(last_hostid, token,
- ZBX_SESSION_TYPE_DATA);
- }
- }
-
- /* check and discard if duplicate data */
- if (NULL != session && 0 != values[i].id && values[i].id <= session->last_id)
- {
- DCconfig_clean_items(&items[i], &errcodes[i], 1);
- errcodes[i] = FAIL;
- continue;
- }
-
- if (SUCCEED != validator_func(&items[i], sock, validator_args, &error))
- {
- if (NULL != error)
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s", error);
- zbx_free(error);
- }
- else
- {
- zabbix_log(LOG_LEVEL_DEBUG, "unknown validation error for item \"%s\"",
- (NULL == items[i].key) ? items[i].key_orig : items[i].key);
- }
-
- DCconfig_clean_items(&items[i], &errcodes[i], 1);
- errcodes[i] = FAIL;
- }
-
- if (NULL != session)
- session->last_id = values[i].id;
- }
-
- processed_num += process_history_data(items, values, errcodes, values_num, NULL);
- total_num += read_num;
-
- DCconfig_clean_items(items, errcodes, values_num);
- zbx_agent_values_clean(values, values_num);
-
- if (NULL == pnext)
- break;
- }
-
- for (i = 0; i < ZBX_HISTORY_VALUES_MAX; i++)
- {
- zbx_free(hostkeys[i].host);
- zbx_free(hostkeys[i].key);
- }
-
- zbx_free(hostkeys);
- zbx_free(items);
-
- *info = zbx_dsprintf(*info, "processed: %d; failed: %d; total: %d; seconds spent: " ZBX_FS_DBL,
- processed_num, total_num - processed_num, total_num, zbx_time() - sec);
-}
-
-/******************************************************************************
- * *
- * Purpose: process history data sent by proxy/agent/sender *
- * *
- * Parameters: sock - [IN] the connection socket *
- * jp - [IN] JSON with historical data *
- * ts - [IN] the client connection timestamp *
- * validator_func - [IN] the item validator callback function *
- * validator_args - [IN] the user arguments passed to validator *
- * function *
- * info - [OUT] address of a pointer to the info string *
- * (should be freed by the caller) *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-static int process_client_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts,
- zbx_client_item_validator_t validator_func, void *validator_args, char **info)
-{
- int ret;
- char *token = NULL;
- size_t token_alloc = 0;
- struct zbx_json_parse jp_data;
- char tmp[MAX_STRING_LEN];
- int version;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- log_client_timediff(LOG_LEVEL_DEBUG, jp, ts);
-
- if (SUCCEED != (ret = zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_DATA, &jp_data)))
- {
- *info = zbx_strdup(*info, zbx_json_strerror());
- goto out;
- }
-
- if (SUCCEED == zbx_json_value_by_name_dyn(jp, ZBX_PROTO_TAG_SESSION, &token, &token_alloc, NULL))
- {
- size_t token_len;
-
- if (ZBX_SESSION_TOKEN_SIZE != (token_len = strlen(token)))
- {
- *info = zbx_dsprintf(*info, "invalid session token length %d", (int)token_len);
- ret = FAIL;
- goto out;
- }
- }
-
- if (SUCCEED != zbx_json_value_by_name(jp, ZBX_PROTO_TAG_VERSION, tmp, sizeof(tmp), NULL) ||
- FAIL == (version = zbx_get_component_version_without_patch(tmp)))
- {
- version = ZBX_COMPONENT_VERSION(4, 2, 0);
- }
-
- if (ZBX_COMPONENT_VERSION(4, 4, 0) <= version &&
- SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_HOST, tmp, sizeof(tmp), NULL))
- {
- zbx_session_t *session;
- zbx_uint64_t hostid;
-
- if (SUCCEED != DCconfig_get_hostid_by_name(tmp, &hostid))
- {
- *info = zbx_dsprintf(*info, "unknown host '%s'", tmp);
- ret = SUCCEED;
- goto out;
- }
-
- if (NULL == token)
- session = NULL;
- else
- session = zbx_dc_get_or_create_session(hostid, token, ZBX_SESSION_TYPE_DATA);
-
- if (SUCCEED != (ret = process_history_data_by_itemids(sock, validator_func, validator_args, &jp_data,
- session, NULL, info, ZBX_ITEM_GET_DEFAULT)))
- {
- goto out;
- }
- }
- else
- process_history_data_by_keys(sock, validator_func, validator_args, info, &jp_data, token);
-out:
- zbx_free(token);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: process history data received from Zabbix active agent *
- * *
- * Parameters: sock - [IN] the connection socket *
- * jp - [IN] the JSON with history data *
- * ts - [IN] the connection timestamp *
- * info - [OUT] address of a pointer to the info string *
- * (should be freed by the caller) *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-int process_agent_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info)
-{
- zbx_host_rights_t rights = {0};
-
- return process_client_history_data(sock, jp, ts, agent_item_validator, &rights, info);
-}
-
-/******************************************************************************
- * *
- * Purpose: process history data received from Zabbix sender *
- * *
- * Parameters: sock - [IN] the connection socket *
- * jp - [IN] the JSON with history data *
- * ts - [IN] the connection timestamp *
- * info - [OUT] address of a pointer to the info string *
- * (should be freed by the caller) *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-int process_sender_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info)
-{
- zbx_host_rights_t rights = {0};
- int ret;
- zbx_dc_um_handle_t *um_handle;
-
- um_handle = zbx_dc_open_user_macros();
-
- ret = process_client_history_data(sock, jp, ts, sender_item_validator, &rights, info);
-
- zbx_dc_close_user_macros(um_handle);
-
- return ret;
-}
-
-static void zbx_drule_ip_free(zbx_drule_ip_t *ip)
-{
- zbx_vector_ptr_clear_ext(&ip->services, zbx_ptr_free);
- zbx_vector_ptr_destroy(&ip->services);
- zbx_free(ip);
-}
-
-static void zbx_drule_free(zbx_drule_t *drule)
-{
- zbx_vector_ptr_clear_ext(&drule->ips, (zbx_clean_func_t)zbx_drule_ip_free);
- zbx_vector_ptr_destroy(&drule->ips);
- zbx_vector_uint64_destroy(&drule->dcheckids);
- zbx_free(drule);
-}
-
-/******************************************************************************
- * *
- * Purpose: process services discovered on IP address *
- * *
- * Parameters: drule_ptr - [IN] discovery rule structure *
- * ip_discovered_ptr - [IN] vector of ip addresses *
- * *
- ******************************************************************************/
-static int process_services(const zbx_vector_ptr_t *services, const char *ip, zbx_uint64_t druleid,
- zbx_vector_uint64_t *dcheckids, zbx_uint64_t unique_dcheckid, int *processed_num, int ip_idx)
-{
- ZBX_DB_DHOST dhost;
- zbx_service_t *service;
- int services_num, ret = FAIL, i, dchecks = 0;
- zbx_vector_ptr_t services_old;
- ZBX_DB_DRULE drule = {.druleid = druleid, .unique_dcheckid = unique_dcheckid};
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- memset(&dhost, 0, sizeof(dhost));
-
- zbx_vector_ptr_create(&services_old);
-
- /* find host update */
- for (i = *processed_num; i < services->values_num; i++)
- {
- service = (zbx_service_t *)services->values[i];
-
- zabbix_log(LOG_LEVEL_DEBUG, "%s() druleid:" ZBX_FS_UI64 " dcheckid:" ZBX_FS_UI64 " unique_dcheckid:"
- ZBX_FS_UI64 " time:'%s %s' ip:'%s' dns:'%s' port:%hu status:%d value:'%s'",
- __func__, drule.druleid, service->dcheckid, drule.unique_dcheckid,
- zbx_date2str(service->itemtime, NULL), zbx_time2str(service->itemtime, NULL), ip, service->dns,
- service->port, service->status, service->value);
-
- if (0 == service->dcheckid)
- break;
-
- dchecks++;
- }
-
- /* stop processing current discovery rule and save proxy history until host update is available */
- if (i == services->values_num)
- {
- for (i = *processed_num; i < services->values_num; i++)
- {
- char *ip_esc, *dns_esc, *value_esc;
-
- service = (zbx_service_t *)services->values[i];
-
- ip_esc = DBdyn_escape_field("proxy_dhistory", "ip", ip);
- dns_esc = DBdyn_escape_field("proxy_dhistory", "dns", service->dns);
- value_esc = DBdyn_escape_field("proxy_dhistory", "value", service->value);
-
- DBexecute("insert into proxy_dhistory (clock,druleid,ip,port,value,status,dcheckid,dns)"
- " values (%d," ZBX_FS_UI64 ",'%s',%d,'%s',%d," ZBX_FS_UI64 ",'%s')",
- (int)service->itemtime, drule.druleid, ip_esc, service->port,
- value_esc, service->status, service->dcheckid, dns_esc);
- zbx_free(value_esc);
- zbx_free(dns_esc);
- zbx_free(ip_esc);
- }
-
- goto fail;
- }
-
- services_num = i;
-
- if (0 == *processed_num && 0 == ip_idx)
- {
- DB_RESULT result;
- DB_ROW row;
- zbx_uint64_t dcheckid;
-
- result = DBselect(
- "select dcheckid,clock,port,value,status,dns,ip"
- " from proxy_dhistory"
- " where druleid=" ZBX_FS_UI64
- " order by id",
- drule.druleid);
-
- for (i = 0; NULL != (row = DBfetch(result)); i++)
- {
- if (SUCCEED == DBis_null(row[0]))
- continue;
-
- ZBX_STR2UINT64(dcheckid, row[0]);
-
- if (0 == strcmp(ip, row[6]))
- {
- service = (zbx_service_t *)zbx_malloc(NULL, sizeof(zbx_service_t));
- service->dcheckid = dcheckid;
- service->itemtime = (time_t)atoi(row[1]);
- service->port = atoi(row[2]);
- zbx_strlcpy_utf8(service->value, row[3], ZBX_MAX_DISCOVERED_VALUE_SIZE);
- service->status = atoi(row[4]);
- zbx_strlcpy(service->dns, row[5], ZBX_INTERFACE_DNS_LEN_MAX);
- zbx_vector_ptr_append(&services_old, service);
- zbx_vector_uint64_append(dcheckids, service->dcheckid);
- dchecks++;
- }
- }
- DBfree_result(result);
-
- if (0 != i)
- {
- DBexecute("delete from proxy_dhistory"
- " where druleid=" ZBX_FS_UI64,
- drule.druleid);
- }
-
- zbx_vector_uint64_sort(dcheckids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
- zbx_vector_uint64_uniq(dcheckids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
-
- if (SUCCEED != DBlock_druleid(drule.druleid))
- {
- zabbix_log(LOG_LEVEL_DEBUG, "druleid:" ZBX_FS_UI64 " does not exist", drule.druleid);
- goto fail;
- }
-
- if (SUCCEED != DBlock_ids("dchecks", "dcheckid", dcheckids))
- {
- zabbix_log(LOG_LEVEL_DEBUG, "checks are not available for druleid:" ZBX_FS_UI64, drule.druleid);
- goto fail;
- }
- }
-
- if (0 == dchecks)
- {
- zabbix_log(LOG_LEVEL_DEBUG, "cannot process host update without services");
- goto fail;
- }
-
- for (i = 0; i < services_old.values_num; i++)
- {
- service = (zbx_service_t *)services_old.values[i];
-
- if (FAIL == zbx_vector_uint64_bsearch(dcheckids, service->dcheckid, ZBX_DEFAULT_UINT64_COMPARE_FUNC))
- {
- zabbix_log(LOG_LEVEL_DEBUG, "dcheckid:" ZBX_FS_UI64 " does not exist", service->dcheckid);
- continue;
- }
-
- zbx_discovery_update_service(&drule, service->dcheckid, &dhost, ip, service->dns, service->port,
- service->status, service->value, service->itemtime);
- }
-
- for (;*processed_num < services_num; (*processed_num)++)
- {
- service = (zbx_service_t *)services->values[*processed_num];
-
- if (FAIL == zbx_vector_uint64_bsearch(dcheckids, service->dcheckid, ZBX_DEFAULT_UINT64_COMPARE_FUNC))
- {
- zabbix_log(LOG_LEVEL_DEBUG, "dcheckid:" ZBX_FS_UI64 " does not exist", service->dcheckid);
- continue;
- }
-
- zbx_discovery_update_service(&drule, service->dcheckid, &dhost, ip, service->dns, service->port,
- service->status, service->value, service->itemtime);
- }
-
- service = (zbx_service_t *)services->values[(*processed_num)++];
- zbx_discovery_update_host(&dhost, service->status, service->itemtime);
-
- ret = SUCCEED;
-fail:
- zbx_vector_ptr_clear_ext(&services_old, zbx_ptr_free);
- zbx_vector_ptr_destroy(&services_old);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: parse discovery data contents and process it *
- * *
- * Parameters: jp_data - [IN] JSON with discovery data *
- * error - [OUT] address of a pointer to the info *
- * string (should be freed by the caller) *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-static int process_discovery_data_contents(struct zbx_json_parse *jp_data, char **error)
-{
- DB_RESULT result;
- DB_ROW row;
- zbx_uint64_t dcheckid, druleid;
- struct zbx_json_parse jp_row;
- int status, ret = SUCCEED, i, j;
- unsigned short port;
- const char *p = NULL;
- char ip[ZBX_INTERFACE_IP_LEN_MAX], tmp[MAX_STRING_LEN],
- dns[ZBX_INTERFACE_DNS_LEN_MAX], *value = NULL;
- time_t itemtime;
- size_t value_alloc = ZBX_MAX_DISCOVERED_VALUE_SIZE;
- zbx_vector_ptr_t drules;
- zbx_drule_t *drule;
- zbx_drule_ip_t *drule_ip;
- zbx_service_t *service;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- value = (char *)zbx_malloc(value, value_alloc);
-
- zbx_vector_ptr_create(&drules);
-
- while (NULL != (p = zbx_json_next(jp_data, p)))
- {
- if (FAIL == zbx_json_brackets_open(p, &jp_row))
- goto json_parse_error;
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_CLOCK, tmp, sizeof(tmp), NULL))
- goto json_parse_error;
-
- itemtime = atoi(tmp);
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DRULE, tmp, sizeof(tmp), NULL))
- goto json_parse_error;
-
- ZBX_STR2UINT64(druleid, tmp);
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DCHECK, tmp, sizeof(tmp), NULL))
- goto json_parse_error;
-
- if ('\0' != *tmp)
- ZBX_STR2UINT64(dcheckid, tmp);
- else
- dcheckid = 0;
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_IP, ip, sizeof(ip), NULL))
- goto json_parse_error;
-
- if (SUCCEED != zbx_is_ip(ip))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid IP address", __func__, ip);
- continue;
- }
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_PORT, tmp, sizeof(tmp), NULL))
- {
- port = 0;
- }
- else if (FAIL == zbx_is_ushort(tmp, &port))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid port", __func__, tmp);
- continue;
- }
-
- if (SUCCEED != zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_VALUE, &value, &value_alloc, NULL))
- *value = '\0';
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DNS, dns, sizeof(dns), NULL))
- {
- *dns = '\0';
- }
- else if ('\0' != *dns && FAIL == zbx_validate_hostname(dns))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid hostname", __func__, dns);
- continue;
- }
-
- if (SUCCEED == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_STATUS, tmp, sizeof(tmp), NULL))
- status = atoi(tmp);
- else
- status = 0;
-
- if (FAIL == (i = zbx_vector_ptr_search(&drules, &druleid, ZBX_DEFAULT_UINT64_PTR_COMPARE_FUNC)))
- {
- drule = (zbx_drule_t *)zbx_malloc(NULL, sizeof(zbx_drule_t));
- drule->druleid = druleid;
- zbx_vector_ptr_create(&drule->ips);
- zbx_vector_uint64_create(&drule->dcheckids);
- zbx_vector_ptr_append(&drules, drule);
- }
- else
- drule = drules.values[i];
-
- if (FAIL == (i = zbx_vector_ptr_search(&drule->ips, ip, ZBX_DEFAULT_STR_COMPARE_FUNC)))
- {
- drule_ip = (zbx_drule_ip_t *)zbx_malloc(NULL, sizeof(zbx_drule_ip_t));
- zbx_strlcpy(drule_ip->ip, ip, ZBX_INTERFACE_IP_LEN_MAX);
- zbx_vector_ptr_create(&drule_ip->services);
- zbx_vector_ptr_append(&drule->ips, drule_ip);
- }
- else
- drule_ip = drule->ips.values[i];
-
- service = (zbx_service_t *)zbx_malloc(NULL, sizeof(zbx_service_t));
- if (0 != (service->dcheckid = dcheckid))
- zbx_vector_uint64_append(&drule->dcheckids, service->dcheckid);
- service->port = port;
- service->status = status;
- zbx_strlcpy_utf8(service->value, value, ZBX_MAX_DISCOVERED_VALUE_SIZE);
- zbx_strlcpy(service->dns, dns, ZBX_INTERFACE_DNS_LEN_MAX);
- service->itemtime = itemtime;
- zbx_vector_ptr_append(&drule_ip->services, service);
-
- continue;
-json_parse_error:
- *error = zbx_strdup(*error, zbx_json_strerror());
- ret = FAIL;
- goto json_parse_return;
- }
-
- for (i = 0; i < drules.values_num; i++)
- {
- zbx_uint64_t unique_dcheckid;
- int ret2 = SUCCEED;
-
- drule = (zbx_drule_t *)drules.values[i];
-
- DBbegin();
- result = DBselect(
- "select dcheckid"
- " from dchecks"
- " where druleid=" ZBX_FS_UI64
- " and uniq=1",
- drule->druleid);
-
- if (NULL != (row = DBfetch(result)))
- ZBX_STR2UINT64(unique_dcheckid, row[0]);
- else
- unique_dcheckid = 0;
- DBfree_result(result);
- for (j = 0; j < drule->ips.values_num && SUCCEED == ret2; j++)
- {
- int processed_num = 0;
-
- drule_ip = (zbx_drule_ip_t *)drule->ips.values[j];
-
- while (processed_num != drule_ip->services.values_num)
- {
- if (FAIL == (ret2 = process_services(&drule_ip->services, drule_ip->ip, drule->druleid,
- &drule->dcheckids, unique_dcheckid, &processed_num, j)))
- {
- break;
- }
- }
- }
-
- zbx_process_events(NULL, NULL);
- zbx_clean_events();
- DBcommit();
- }
-json_parse_return:
- zbx_free(value);
-
- zbx_vector_ptr_clear_ext(&drules, (zbx_clean_func_t)zbx_drule_free);
- zbx_vector_ptr_destroy(&drules);
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: parse autoregistration data contents and process it *
- * *
- * Parameters: jp_data - [IN] JSON with autoregistration data *
- * proxy_hostid - [IN] proxy identifier from database *
- * error - [OUT] address of a pointer to the info *
- * string (should be freed by the caller) *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-static int process_autoregistration_contents(struct zbx_json_parse *jp_data, zbx_uint64_t proxy_hostid,
- char **error)
-{
- struct zbx_json_parse jp_row;
- int ret = SUCCEED;
- const char *p = NULL;
- time_t itemtime;
- char host[ZBX_HOSTNAME_BUF_LEN], ip[ZBX_INTERFACE_IP_LEN_MAX],
- dns[ZBX_INTERFACE_DNS_LEN_MAX], tmp[MAX_STRING_LEN], *host_metadata = NULL;
- unsigned short port;
- size_t host_metadata_alloc = 1; /* for at least NUL-terminating string */
- zbx_vector_ptr_t autoreg_hosts;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- if (0 == DCget_auto_registration_action_count())
- {
- zabbix_log(LOG_LEVEL_DEBUG, "cannot process auto registration contents, all autoregistration actions"
- " are disabled");
- goto out;
- }
-
- zbx_vector_ptr_create(&autoreg_hosts);
- host_metadata = (char *)zbx_malloc(host_metadata, host_metadata_alloc);
-
- while (NULL != (p = zbx_json_next(jp_data, p)))
- {
- unsigned int connection_type;
- zbx_conn_flags_t flags = ZBX_CONN_DEFAULT;
-
- if (FAIL == (ret = zbx_json_brackets_open(p, &jp_row)))
- break;
-
- if (FAIL == (ret = zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_CLOCK, tmp, sizeof(tmp), NULL)))
- break;
-
- itemtime = atoi(tmp);
-
- if (FAIL == (ret = zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_HOST, host, sizeof(host), NULL)))
- break;
-
- if (FAIL == zbx_check_hostname(host, NULL))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid Zabbix host name", __func__, host);
- continue;
- }
-
- if (FAIL == zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_HOST_METADATA,
- &host_metadata, &host_metadata_alloc, NULL))
- {
- *host_metadata = '\0';
- }
-
- if (FAIL != zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_FLAGS, tmp, sizeof(tmp), NULL))
- {
- int flags_int;
-
- flags_int = atoi(tmp);
-
- switch (flags_int)
- {
- case ZBX_CONN_DEFAULT:
- case ZBX_CONN_IP:
- case ZBX_CONN_DNS:
- flags = (zbx_conn_flags_t)flags_int;
- break;
- default:
- flags = ZBX_CONN_DEFAULT;
- zabbix_log(LOG_LEVEL_WARNING, "wrong flags value: %d for host \"%s\":",
- flags_int, host);
- }
- }
-
- if (FAIL == (ret = zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_IP, ip, sizeof(ip), NULL)))
- {
- if (ZBX_CONN_DNS == flags)
- {
- *ip = '\0';
- ret = SUCCEED;
- }
- else
- break;
- }
- else if (SUCCEED != zbx_is_ip(ip))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid IP address", __func__, ip);
- continue;
- }
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DNS, dns, sizeof(dns), NULL))
- {
- *dns = '\0';
- }
- else if ('\0' != *dns && FAIL == zbx_validate_hostname(dns))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid hostname", __func__, dns);
- continue;
- }
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_PORT, tmp, sizeof(tmp), NULL))
- {
- port = ZBX_DEFAULT_AGENT_PORT;
- }
- else if (FAIL == zbx_is_ushort(tmp, &port))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid port", __func__, tmp);
- continue;
- }
-
- if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_TLS_ACCEPTED, tmp, sizeof(tmp), NULL))
- {
- connection_type = ZBX_TCP_SEC_UNENCRYPTED;
- }
- else if (FAIL == zbx_is_uint32(tmp, &connection_type) || (ZBX_TCP_SEC_UNENCRYPTED != connection_type &&
- ZBX_TCP_SEC_TLS_PSK != connection_type && ZBX_TCP_SEC_TLS_CERT != connection_type))
- {
- zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid value for \""
- ZBX_PROTO_TAG_TLS_ACCEPTED "\"", __func__, tmp);
- continue;
- }
-
- DBregister_host_prepare(&autoreg_hosts, host, ip, dns, port, connection_type, host_metadata, flags,
- itemtime);
- }
-
- if (0 != autoreg_hosts.values_num)
- {
- DBbegin();
- DBregister_host_flush(&autoreg_hosts, proxy_hostid);
- DBcommit();
- DCconfig_delete_autoreg_host(&autoreg_hosts);
- }
-
- zbx_free(host_metadata);
- DBregister_host_clean(&autoreg_hosts);
- zbx_vector_ptr_destroy(&autoreg_hosts);
-
- if (SUCCEED != ret)
- *error = zbx_strdup(*error, zbx_json_strerror());
-out:
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: get the number of values waiting to be sent to the server *
- * *
- * Return value: the number of history values *
- * *
- ******************************************************************************/
-int proxy_get_history_count(void)
-{
- DB_RESULT result;
- DB_ROW row;
- zbx_uint64_t id;
- int count = 0;
-
- DBconnect(ZBX_DB_CONNECT_NORMAL);
-
- proxy_get_lastid("proxy_history", "history_lastid", &id);
-
- result = DBselect(
- "select count(*)"
- " from proxy_history"
- " where id>" ZBX_FS_UI64,
- id);
-
- if (NULL != (row = DBfetch(result)))
- count = atoi(row[0]);
-
- DBfree_result(result);
-
- DBclose();
-
- return count;
-}
-
-/******************************************************************************
- * *
* Purpose: extracts protocol version from json data *
* *
* Parameters: *
@@ -2899,567 +144,3 @@ int zbx_get_proxy_protocol_version_int(const char *version_str)
return ZBX_COMPONENT_VERSION(3, 2, 0);
}
-/******************************************************************************
- * *
- * Purpose: parse tasks contents and saves the received tasks *
- * *
- * Parameters: jp_tasks - [IN] JSON with tasks data *
- * *
- ******************************************************************************/
-static void process_tasks_contents(struct zbx_json_parse *jp_tasks)
-{
- zbx_vector_ptr_t tasks;
-
- zbx_vector_ptr_create(&tasks);
-
- zbx_tm_json_deserialize_tasks(jp_tasks, &tasks);
-
- DBbegin();
- zbx_tm_save_tasks(&tasks);
- DBcommit();
-
- zbx_vector_ptr_clear_ext(&tasks, (zbx_clean_func_t)zbx_tm_task_free);
- zbx_vector_ptr_destroy(&tasks);
-}
-
-/******************************************************************************
- * *
- * Purpose: appends text to the string on a new line *
- * *
- ******************************************************************************/
-static void zbx_strcatnl_alloc(char **info, size_t *info_alloc, size_t *info_offset, const char *text)
-{
- if (0 != *info_offset)
- zbx_chrcpy_alloc(info, info_alloc, info_offset, '\n');
-
- zbx_strcpy_alloc(info, info_alloc, info_offset, text);
-}
-
-/******************************************************************************
- * *
- * Purpose: detect lost connection with proxy and calculate suppression *
- * window if possible *
- * *
- * Parameters: ts - [IN] timestamp when the proxy connection was *
- * established *
- * proxy_staus - [IN] - active or passive proxy *
- * diff - [IN/OUT] the properties to update *
- * *
- ******************************************************************************/
-static void check_proxy_nodata(zbx_timespec_t *ts, unsigned char proxy_status, zbx_proxy_diff_t *diff)
-{
- int delay;
-
- if (0 != (diff->nodata_win.flags & ZBX_PROXY_SUPPRESS_ACTIVE))
- {
- diff->nodata_win.values_num = 0; /* reset counter of new suppress values received from proxy */
- return; /* only for current packet */
- }
-
- delay = ts->sec - diff->lastaccess;
-
- if ((HOST_STATUS_PROXY_PASSIVE == proxy_status &&
- (2 * CONFIG_PROXYDATA_FREQUENCY) < delay && NET_DELAY_MAX < delay) ||
- (HOST_STATUS_PROXY_ACTIVE == proxy_status && NET_DELAY_MAX < delay))
- {
- diff->nodata_win.values_num = 0;
- diff->nodata_win.period_end = ts->sec;
- diff->flags |= ZBX_FLAGS_PROXY_DIFF_UPDATE_SUPPRESS_WIN;
- diff->nodata_win.flags |= ZBX_PROXY_SUPPRESS_ENABLE;
- }
-}
-
-/******************************************************************************
- * *
- * Purpose: detect lack of data during lost connectivity *
- * *
- * Parameters: ts - [IN] timestamp when the proxy connection was *
- * established *
- * proxy_staus - [IN] - active or passive proxy *
- * diff - [IN/OUT] the properties to update *
- * *
- ******************************************************************************/
-static void check_proxy_nodata_empty(zbx_timespec_t *ts, unsigned char proxy_status, zbx_proxy_diff_t *diff)
-{
- int delay_empty;
-
- if (0 != (diff->nodata_win.flags & ZBX_PROXY_SUPPRESS_EMPTY) && 0 != diff->nodata_win.values_num)
- diff->nodata_win.flags &= (~ZBX_PROXY_SUPPRESS_EMPTY);
-
- if (0 == (diff->nodata_win.flags & ZBX_PROXY_SUPPRESS_EMPTY) || 0 != diff->nodata_win.values_num)
- return;
-
- delay_empty = ts->sec - diff->nodata_win.period_end;
-
- if (HOST_STATUS_PROXY_PASSIVE == proxy_status ||
- (HOST_STATUS_PROXY_ACTIVE == proxy_status && NET_DELAY_MAX < delay_empty))
- {
- diff->nodata_win.period_end = 0;
- diff->nodata_win.flags = ZBX_PROXY_SUPPRESS_DISABLE;
- }
-}
-
-/******************************************************************************
- * *
- * Purpose: process 'proxy data' request *
- * *
- * Parameters: proxy - [IN] the source proxy *
- * jp - [IN] JSON with proxy data *
- * proxy_hostid - [IN] proxy identifier from database *
- * ts - [IN] timestamp when the proxy connection was *
- * established *
- * proxy_status - [IN] active or passive proxy mode *
- * more - [OUT] available data flag *
- * error - [OUT] address of a pointer to the info string *
- * (should be freed by the caller) *
- * *
- * Return value: SUCCEED - processed successfully *
- * FAIL - an error occurred *
- * *
- ******************************************************************************/
-int process_proxy_data(const DC_PROXY *proxy, struct zbx_json_parse *jp, zbx_timespec_t *ts,
- unsigned char proxy_status, int *more, char **error)
-{
- struct zbx_json_parse jp_data;
- int ret = SUCCEED, flags_old;
- char *error_step = NULL, value[MAX_STRING_LEN];
- size_t error_alloc = 0, error_offset = 0;
- zbx_proxy_diff_t proxy_diff;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- proxy_diff.flags = ZBX_FLAGS_PROXY_DIFF_UNSET;
- proxy_diff.hostid = proxy->hostid;
-
- if (SUCCEED != (ret = DCget_proxy_nodata_win(proxy_diff.hostid, &proxy_diff.nodata_win,
- &proxy_diff.lastaccess)))
- {
- zabbix_log(LOG_LEVEL_WARNING, "cannot get proxy communication delay");
- ret = FAIL;
- goto out;
- }
-
- if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_MORE, value, sizeof(value), NULL))
- proxy_diff.more_data = atoi(value);
- else
- proxy_diff.more_data = ZBX_PROXY_DATA_DONE;
-
- if (NULL != more)
- *more = proxy_diff.more_data;
-
- if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_PROXY_DELAY, value, sizeof(value), NULL))
- proxy_diff.proxy_delay = atoi(value);
- else
- proxy_diff.proxy_delay = 0;
-
- proxy_diff.flags |= ZBX_FLAGS_PROXY_DIFF_UPDATE_PROXYDELAY;
- flags_old = proxy_diff.nodata_win.flags;
- check_proxy_nodata(ts, proxy_status, &proxy_diff); /* first packet can be empty for active proxy */
-
- zabbix_log(LOG_LEVEL_DEBUG, "%s() flag_win:%d/%d flag:%d proxy_status:%d period_end:%d delay:%d"
- " timestamp:%d lastaccess:%d proxy_delay:%d more:%d", __func__, proxy_diff.nodata_win.flags,
- flags_old, (int)proxy_diff.flags, proxy_status, proxy_diff.nodata_win.period_end,
- ts->sec - proxy_diff.lastaccess, ts->sec, proxy_diff.lastaccess, proxy_diff.proxy_delay,
- proxy_diff.more_data);
-
- if (ZBX_FLAGS_PROXY_DIFF_UNSET != proxy_diff.flags)
- zbx_dc_update_proxy(&proxy_diff);
-
- if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_INTERFACE_AVAILABILITY, &jp_data))
- {
- if (SUCCEED != (ret = process_interfaces_availability_contents(&jp_data, &error_step)))
- zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
- }
-
- flags_old = proxy_diff.nodata_win.flags;
-
- if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_HISTORY_DATA, &jp_data))
- {
- zbx_session_t *session = NULL;
-
- if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_SESSION, value, sizeof(value), NULL))
- {
- size_t token_len;
-
- if (ZBX_SESSION_TOKEN_SIZE != (token_len = strlen(value)))
- {
- *error = zbx_dsprintf(*error, "invalid session token length %d", (int)token_len);
- ret = FAIL;
- goto out;
- }
-
- session = zbx_dc_get_or_create_session(proxy->hostid, value, ZBX_SESSION_TYPE_DATA);
- }
-
- if (SUCCEED != (ret = process_history_data_by_itemids(NULL, proxy_item_validator,
- (void *)&proxy->hostid, &jp_data, session, &proxy_diff.nodata_win, &error_step,
- ZBX_ITEM_GET_PROCESS)))
- {
- zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
- }
- }
-
- if (0 != (proxy_diff.nodata_win.flags & ZBX_PROXY_SUPPRESS_ACTIVE))
- {
- check_proxy_nodata_empty(ts, proxy_status, &proxy_diff);
-
- if (0 < proxy_diff.nodata_win.values_num || flags_old != proxy_diff.nodata_win.flags)
- proxy_diff.flags |= ZBX_FLAGS_PROXY_DIFF_UPDATE_SUPPRESS_WIN;
-
- zabbix_log(LOG_LEVEL_DEBUG, "Result of %s() flag_win:%d/%d flag:%d values_num:%d",
- __func__, proxy_diff.nodata_win.flags, flags_old, (int)proxy_diff.flags,
- proxy_diff.nodata_win.values_num);
- }
-
- if (ZBX_FLAGS_PROXY_DIFF_UNSET != proxy_diff.flags)
- zbx_dc_update_proxy(&proxy_diff);
-
- if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_DISCOVERY_DATA, &jp_data))
- {
- if (SUCCEED != (ret = process_discovery_data_contents(&jp_data, &error_step)))
- zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
- }
-
- if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_AUTOREGISTRATION, &jp_data))
- {
- if (SUCCEED != (ret = process_autoregistration_contents(&jp_data, proxy->hostid, &error_step)))
- zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
- }
-
- if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_TASKS, &jp_data))
- process_tasks_contents(&jp_data);
-
- if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_PROXY_ACTIVE_AVAIL_DATA, &jp_data))
- {
- const char *ptr;
- zbx_vector_proxy_hostdata_ptr_t host_avails;
- struct zbx_json_parse jp_host;
- char buffer[ZBX_KIBIBYTE];
-
- zbx_vector_proxy_hostdata_ptr_create(&host_avails);
-
- for (ptr = NULL; NULL != (ptr = zbx_json_next(&jp_data, ptr));)
- {
- zbx_proxy_hostdata_t *host;
-
- if (SUCCEED != zbx_json_brackets_open(ptr, &jp_host))
- continue;
-
- if (SUCCEED == zbx_json_value_by_name(&jp_host, ZBX_PROTO_TAG_HOSTID, buffer, sizeof(buffer), NULL))
- {
- host = (zbx_proxy_hostdata_t *)zbx_malloc(NULL, sizeof(zbx_proxy_hostdata_t));
- host->hostid = atoi(buffer);
- }
- else
- continue;
-
- if (FAIL == zbx_json_value_by_name(&jp_host, ZBX_PROTO_TAG_ACTIVE_STATUS, buffer, sizeof(buffer), NULL))
- {
- zbx_free(host);
- continue;
- }
-
- host->status = atoi(buffer);
-
- zbx_vector_proxy_hostdata_ptr_append(&host_avails, host);
- }
-
- if (0 != host_avails.values_num)
- {
- unsigned char *data = NULL;
- zbx_uint32_t data_len;
- DC_HOST *hosts;
- int i, *errcodes;
- zbx_vector_uint64_t hostids;
- zbx_vector_proxy_hostdata_ptr_t proxy_host_avails;
-
- zbx_vector_uint64_create(&hostids);
-
- for (i = 0; i < host_avails.values_num; i++)
- zbx_vector_uint64_append(&hostids, host_avails.values[i]->hostid);
-
- hosts = (DC_HOST *)zbx_malloc(NULL, sizeof(DC_HOST) * host_avails.values_num);
- errcodes = (int *)zbx_malloc(NULL, sizeof(int) * host_avails.values_num);
- DCconfig_get_hosts_by_hostids(hosts, hostids.values, errcodes, hostids.values_num);
-
- zbx_vector_uint64_destroy(&hostids);
-
- zbx_vector_proxy_hostdata_ptr_create(&proxy_host_avails);
-
- for (i = 0; i < host_avails.values_num; i++)
- {
- if (SUCCEED == errcodes[i] && hosts[i].proxy_hostid == proxy->hostid)
- zbx_vector_proxy_hostdata_ptr_append(&proxy_host_avails, host_avails.values[i]);
- }
-
- zbx_free(errcodes);
- zbx_free(hosts);
-
- data_len = zbx_availability_serialize_proxy_hostdata(&data, &proxy_host_avails, proxy->hostid);
- zbx_availability_send(ZBX_IPC_AVAILMAN_PROCESS_PROXY_HOSTDATA, data, data_len, NULL);
-
- zbx_vector_proxy_hostdata_ptr_destroy(&proxy_host_avails);
- zbx_vector_proxy_hostdata_ptr_clear_ext(&host_avails, (zbx_proxy_hostdata_ptr_free_func_t)zbx_ptr_free);
- zbx_free(data);
- }
-
- zbx_vector_proxy_hostdata_ptr_destroy(&host_avails);
- }
- else
- {
- unsigned char *data = NULL;
- zbx_uint32_t data_len;
-
- data_len = zbx_availability_serialize_active_proxy_hb_update(&data, proxy->hostid);
- zbx_availability_send(ZBX_IPC_AVAILMAN_ACTIVE_PROXY_HB_UPDATE, data, data_len, NULL);
- zbx_free(data);
- }
-
-out:
- zbx_free(error_step);
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: flushes lastaccess changes for proxies every *
- * ZBX_PROXY_LASTACCESS_UPDATE_FREQUENCY seconds *
- * *
- ******************************************************************************/
-static void zbx_db_flush_proxy_lastaccess(void)
-{
- zbx_vector_uint64_pair_t lastaccess;
-
- zbx_vector_uint64_pair_create(&lastaccess);
-
- zbx_dc_get_proxy_lastaccess(&lastaccess);
-
- if (0 != lastaccess.values_num)
- {
- char *sql;
- size_t sql_alloc = 256, sql_offset = 0;
- int i;
-
- sql = (char *)zbx_malloc(NULL, sql_alloc);
-
- DBbegin();
- zbx_DBbegin_multiple_update(&sql, &sql_alloc, &sql_offset);
-
- for (i = 0; i < lastaccess.values_num; i++)
- {
- zbx_uint64_pair_t *pair = &lastaccess.values[i];
-
- zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "update host_rtdata"
- " set lastaccess=%d"
- " where hostid=" ZBX_FS_UI64 ";\n",
- (int)pair->second, pair->first);
-
- DBexecute_overflowed_sql(&sql, &sql_alloc, &sql_offset);
- }
-
- zbx_DBend_multiple_update(&sql, &sql_alloc, &sql_offset);
-
- if (16 < sql_offset) /* in ORACLE always present begin..end; */
- DBexecute("%s", sql);
-
- DBcommit();
-
- zbx_free(sql);
- }
-
- zbx_vector_uint64_pair_destroy(&lastaccess);
-}
-
-/******************************************************************************
- * *
- * Purpose: updates proxy version and compatibility with server in database *
- * *
- * Parameters: proxy - [IN] the proxy to update version for *
- * diff - [IN] indicates changes to the proxy *
- * *
- ******************************************************************************/
-static void db_update_proxy_version(DC_PROXY *proxy, zbx_proxy_diff_t *diff)
-{
- if (0 != (diff->flags & ZBX_FLAGS_PROXY_DIFF_UPDATE_VERSION))
- {
- if (0 != proxy->version_int)
- {
- zabbix_log(LOG_LEVEL_DEBUG, "proxy \"%s\" protocol version updated from %u.%u to %u.%u",
- proxy->host,
- ZBX_COMPONENT_VERSION_MAJOR(proxy->version_int),
- ZBX_COMPONENT_VERSION_MINOR(proxy->version_int),
- ZBX_COMPONENT_VERSION_MAJOR(diff->version_int),
- ZBX_COMPONENT_VERSION_MINOR(diff->version_int));
- }
-
- if (ZBX_DB_OK > DBexecute(
- "update host_rtdata"
- " set version=%u,compatibility=%u"
- " where hostid=" ZBX_FS_UI64,
- ZBX_COMPONENT_VERSION_TO_DEC_FORMAT(diff->version_int), diff->compatibility,
- diff->hostid))
- {
- zabbix_log(LOG_LEVEL_WARNING, "Failed to update proxy version and compatibility with server for"
- " proxy '%s'.", proxy->host);
- }
- }
-}
-
-/******************************************************************************
- * *
- * Purpose: gets proxy version compatibility with server version *
- * *
- * Parameters: proxy_version - [IN] proxy_version *
- * *
- * Return value: proxy version compatibility with server version *
- * *
- ******************************************************************************/
-static zbx_proxy_compatibility_t zbx_get_proxy_compatibility(int proxy_version)
-{
-#define SERVER_VERSION ZBX_COMPONENT_VERSION(ZABBIX_VERSION_MAJOR, ZABBIX_VERSION_MINOR, 0)
-
- if (0 == proxy_version)
- return ZBX_PROXY_VERSION_UNDEFINED;
-
- proxy_version = ZBX_COMPONENT_VERSION_WITHOUT_PATCH(proxy_version);
-
- if (SERVER_VERSION == proxy_version)
- return ZBX_PROXY_VERSION_CURRENT;
-
- if (SERVER_VERSION < proxy_version)
- return ZBX_PROXY_VERSION_UNSUPPORTED;
-#if (ZABBIX_VERSION_MINOR == 0)
- if (ZABBIX_VERSION_MAJOR == 1 + ZBX_COMPONENT_VERSION_MAJOR(proxy_version))
- return ZBX_PROXY_VERSION_STATUS_OUTDATED;
-#elif (ZABBIX_VERSION_MINOR > 0)
- if (ZABBIX_VERSION_MAJOR == ZBX_COMPONENT_VERSION_MAJOR(proxy_version))
- return ZBX_PROXY_VERSION_OUTDATED;
-#endif
- return ZBX_PROXY_VERSION_UNSUPPORTED;
-
-#undef SERVER_VERSION
-}
-
-/******************************************************************************
- * *
- * Purpose: updates proxy runtime properties in cache and database. *
- * *
- * Parameters: proxy - [IN/OUT] the proxy *
- * version_str - [IN] the proxy version as string *
- * version_int - [IN] the proxy version in numeric representation *
- * lastaccess - [IN] the last proxy access time *
- * compress - [IN] 1 if proxy is using data compression, *
- * 0 otherwise *
- * flags_add - [IN] additional flags for update proxy *
- * *
- * Comments: The proxy parameter properties are also updated. *
- * *
- ******************************************************************************/
-void zbx_update_proxy_data(DC_PROXY *proxy, char *version_str, int version_int, int lastaccess, int compress,
- zbx_uint64_t flags_add)
-{
- zbx_proxy_diff_t diff;
- zbx_proxy_compatibility_t compatibility;
-
- compatibility = zbx_get_proxy_compatibility(version_int);
-
- diff.hostid = proxy->hostid;
- diff.flags = ZBX_FLAGS_PROXY_DIFF_UPDATE | flags_add;
- diff.version_str = version_str;
- diff.version_int = version_int;
- diff.compatibility = compatibility;
- diff.lastaccess = lastaccess;
- diff.compress = compress;
-
- zbx_dc_update_proxy(&diff);
-
- db_update_proxy_version(proxy, &diff);
-
- zbx_strlcpy(proxy->version_str, version_str, sizeof(proxy->version_str));
- proxy->version_int = version_int;
- proxy->compatibility = compatibility;
- proxy->auto_compress = compress;
- proxy->lastaccess = lastaccess;
-
- if (0 != (diff.flags & ZBX_FLAGS_PROXY_DIFF_UPDATE_COMPRESS))
- DBexecute("update hosts set auto_compress=%d where hostid=" ZBX_FS_UI64, diff.compress, diff.hostid);
-
- zbx_db_flush_proxy_lastaccess();
-}
-/******************************************************************************
- * *
- * Purpose: flushes last_version_error_time changes runtime *
- * variable for proxies structures *
- * *
- ******************************************************************************/
-static void zbx_update_proxy_lasterror(DC_PROXY *proxy)
-{
- zbx_proxy_diff_t diff;
-
- diff.hostid = proxy->hostid;
- diff.flags = ZBX_FLAGS_PROXY_DIFF_UPDATE_LASTERROR;
- diff.lastaccess = time(NULL);
- diff.last_version_error_time = proxy->last_version_error_time;
-
- zbx_dc_update_proxy(&diff);
-}
-/******************************************************************************
- * *
- * Purpose: check server and proxy versions and compatibility rules *
- * *
- * Parameters: *
- * proxy - [IN] the source proxy *
- * version - [IN] the version of proxy *
- * *
- * Return value: *
- * SUCCEED - no compatibility issue *
- * FAIL - compatibility check fault *
- * *
- ******************************************************************************/
-int zbx_check_protocol_version(DC_PROXY *proxy, int version)
-{
- zbx_proxy_compatibility_t compatibility;
-
- compatibility = zbx_get_proxy_compatibility(version);
-
- /* warn if another proxy version is used and proceed with compatibility rules*/
- if (ZBX_PROXY_VERSION_CURRENT != compatibility)
- {
- int now = zbx_time(), print_log = 0;
-
- if (proxy->last_version_error_time <= now)
- {
- print_log = 1;
- proxy->last_version_error_time = now + 5 * SEC_PER_MIN;
- zbx_update_proxy_lasterror(proxy);
- }
-
- if (ZBX_PROXY_VERSION_UNSUPPORTED == compatibility)
- {
- if (1 == print_log)
- {
- zabbix_log(LOG_LEVEL_WARNING, "Proxy \"%s\" version %u.%u.%u is not supported by server"
- " version %d.%d.%d.", proxy->host,
- ZBX_COMPONENT_VERSION_MAJOR(version),
- ZBX_COMPONENT_VERSION_MINOR(version),
- ZBX_COMPONENT_VERSION_PATCH(version), ZABBIX_VERSION_MAJOR,
- ZABBIX_VERSION_MINOR, ZABBIX_VERSION_PATCH);
- }
- return FAIL;
- }
- else if (ZBX_PROXY_VERSION_OUTDATED == compatibility && 1 == print_log)
- {
- zabbix_log(LOG_LEVEL_WARNING, "Proxy \"%s\" version %u.%u.%u is outdated, only data collection"
- " and remote execution is available with server version %d.%d.%d.", proxy->host,
- ZBX_COMPONENT_VERSION_MAJOR(version), ZBX_COMPONENT_VERSION_MINOR(version),
- ZBX_COMPONENT_VERSION_PATCH(version), ZABBIX_VERSION_MAJOR,
- ZABBIX_VERSION_MINOR, ZABBIX_VERSION_PATCH);
- }
- else if (ZBX_PROXY_VERSION_UNDEFINED == compatibility)
- return FAIL;
- }
-
- return SUCCEED;
-}
diff --git a/src/libs/zbxdbhigh/trigger.c b/src/libs/zbxdbhigh/trigger.c
index 0d4e42b58bf..096c838bcce 100644
--- a/src/libs/zbxdbhigh/trigger.c
+++ b/src/libs/zbxdbhigh/trigger.c
@@ -20,126 +20,9 @@
#include "zbxdbhigh.h"
#include "log.h"
-#include "dbcache.h"
#include "events.h"
-#include "zbxserver.h"
#include "zbxnum.h"
-#define ZBX_FLAGS_TRIGGER_CREATE_NOTHING 0x00
-#define ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT 0x01
-#define ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT 0x02
-#define ZBX_FLAGS_TRIGGER_CREATE_EVENT \
- (ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT | ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT)
-
-/******************************************************************************
- * *
- * Purpose: 1) calculate changeset of trigger fields to be updated *
- * 2) generate events *
- * *
- * Parameters: trigger - [IN] the trigger to process *
- * diffs - [OUT] the vector with trigger changes *
- * *
- * Return value: SUCCEED - trigger processed successfully *
- * FAIL - no changes *
- * *
- * Comments: Trigger dependency checks will be done during event processing. *
- * *
- * Event generation depending on trigger value/state changes: *
- * *
- * From \ To | OK | OK(?) | PROBLEM | PROBLEM(?) | NONE *
- *----------------------------------------------------------------------------*
- * OK | . | I | E | I | . *
- * | | | | | *
- * OK(?) | I | . | E,I | - | I *
- * | | | | | *
- * PROBLEM | E | I | E(m) | I | . *
- * | | | | | *
- * PROBLEM(?) | E,I | - | E(m),I | . | I *
- * *
- * Legend: *
- * 'E' - trigger event *
- * 'I' - internal event *
- * '.' - nothing *
- * '-' - should never happen *
- * *
- ******************************************************************************/
-static int zbx_process_trigger(struct _DC_TRIGGER *trigger, zbx_vector_ptr_t *diffs)
-{
- const char *new_error;
- int new_state, new_value, ret = FAIL;
- zbx_uint64_t flags = ZBX_FLAGS_TRIGGER_DIFF_UNSET, event_flags = ZBX_FLAGS_TRIGGER_CREATE_NOTHING;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() triggerid:" ZBX_FS_UI64 " value:%d(%d) new_value:%d",
- __func__, trigger->triggerid, trigger->value, trigger->state, trigger->new_value);
-
- if (TRIGGER_VALUE_UNKNOWN == trigger->new_value)
- {
- new_state = TRIGGER_STATE_UNKNOWN;
- new_value = trigger->value;
- }
- else
- {
- new_state = TRIGGER_STATE_NORMAL;
- new_value = trigger->new_value;
- }
- new_error = (NULL == trigger->new_error ? "" : trigger->new_error);
-
- if (trigger->state != new_state)
- {
- flags |= ZBX_FLAGS_TRIGGER_DIFF_UPDATE_STATE;
- event_flags |= ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT;
- }
-
- if (0 != strcmp(trigger->error, new_error))
- flags |= ZBX_FLAGS_TRIGGER_DIFF_UPDATE_ERROR;
-
- if (TRIGGER_STATE_NORMAL == new_state)
- {
- if (TRIGGER_VALUE_PROBLEM == new_value)
- {
- if (TRIGGER_VALUE_OK == trigger->value || TRIGGER_TYPE_MULTIPLE_TRUE == trigger->type)
- event_flags |= ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT;
- }
- else if (TRIGGER_VALUE_OK == new_value)
- {
- if (TRIGGER_VALUE_PROBLEM == trigger->value || 0 == trigger->lastchange)
- event_flags |= ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT;
- }
- }
-
- /* check if there is something to be updated */
- if (0 == (flags & ZBX_FLAGS_TRIGGER_DIFF_UPDATE) && 0 == (event_flags & ZBX_FLAGS_TRIGGER_CREATE_EVENT))
- goto out;
-
- if (0 != (event_flags & ZBX_FLAGS_TRIGGER_CREATE_TRIGGER_EVENT))
- {
- zbx_add_event(EVENT_SOURCE_TRIGGERS, EVENT_OBJECT_TRIGGER, trigger->triggerid,
- &trigger->timespec, new_value, trigger->description,
- trigger->expression, trigger->recovery_expression,
- trigger->priority, trigger->type, &trigger->tags,
- trigger->correlation_mode, trigger->correlation_tag, trigger->value, trigger->opdata,
- trigger->event_name, NULL);
- }
-
- if (0 != (event_flags & ZBX_FLAGS_TRIGGER_CREATE_INTERNAL_EVENT))
- {
- zbx_add_event(EVENT_SOURCE_INTERNAL, EVENT_OBJECT_TRIGGER, trigger->triggerid,
- &trigger->timespec, new_state, NULL, trigger->expression,
- trigger->recovery_expression, 0, 0, &trigger->tags, 0, NULL, 0, NULL, NULL,
- new_error);
- }
-
- zbx_append_trigger_diff(diffs, trigger->triggerid, trigger->priority, flags, trigger->value, new_state,
- trigger->timespec.sec, new_error);
-
- ret = SUCCEED;
-out:
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s flags:" ZBX_FS_UI64, __func__, zbx_result_string(ret),
- flags);
-
- return ret;
-}
-
/******************************************************************************
* *
* Purpose: save the trigger changes to database *
@@ -224,53 +107,6 @@ void zbx_trigger_diff_free(zbx_trigger_diff_t *diff)
/******************************************************************************
* *
- * Comments: helper function for zbx_process_triggers() *
- * *
- ******************************************************************************/
-static int zbx_trigger_topoindex_compare(const void *d1, const void *d2)
-{
- const DC_TRIGGER *t1 = *(const DC_TRIGGER * const *)d1;
- const DC_TRIGGER *t2 = *(const DC_TRIGGER * const *)d2;
-
- ZBX_RETURN_IF_NOT_EQUAL(t1->topoindex, t2->topoindex);
-
- return 0;
-}
-
-/******************************************************************************
- * *
- * Purpose: process triggers - calculates property changeset and generates *
- * events *
- * *
- * Parameters: triggers - [IN] the triggers to process *
- * trigger_diff - [OUT] the trigger changeset *
- * *
- * Comments: The trigger_diff changeset must be cleaned by the caller: *
- * zbx_vector_ptr_clear_ext(trigger_diff, *
- * (zbx_clean_func_t)zbx_trigger_diff_free); *
- * *
- ******************************************************************************/
-void zbx_process_triggers(zbx_vector_ptr_t *triggers, zbx_vector_ptr_t *trigger_diff)
-{
- int i;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() values_num:%d", __func__, triggers->values_num);
-
- if (0 == triggers->values_num)
- goto out;
-
- zbx_vector_ptr_sort(triggers, zbx_trigger_topoindex_compare);
-
- for (i = 0; i < triggers->values_num; i++)
- zbx_process_trigger((struct _DC_TRIGGER *)triggers->values[i], trigger_diff);
-
- zbx_vector_ptr_sort(trigger_diff, ZBX_DEFAULT_UINT64_PTR_COMPARE_FUNC);
-out:
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
-}
-
-/******************************************************************************
- * *
* Purpose: Adds a new trigger diff to trigger changeset vector *
* *
******************************************************************************/
@@ -292,731 +128,3 @@ void zbx_append_trigger_diff(zbx_vector_ptr_t *trigger_diff, zbx_uint64_t trigge
zbx_vector_ptr_append(trigger_diff, diff);
}
-
-/* temporary cache of trigger related data */
-typedef struct
-{
- zbx_uint32_t init;
- zbx_uint32_t done;
- zbx_eval_context_t eval_ctx;
- zbx_eval_context_t eval_ctx_r;
- zbx_vector_uint64_t hostids;
-}
-zbx_trigger_cache_t;
-
-/* related trigger data caching states */
-typedef enum
-{
- ZBX_TRIGGER_CACHE_EVAL_CTX,
- ZBX_TRIGGER_CACHE_EVAL_CTX_R,
- ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS,
- ZBX_TRIGGER_CACHE_EVAL_CTX_R_MACROS,
- ZBX_TRIGGER_CACHE_HOSTIDS,
-}
-zbx_trigger_cache_state_t;
-
-static int db_trigger_expand_macros(const ZBX_DB_TRIGGER *trigger, zbx_eval_context_t *ctx);
-
-/******************************************************************************
- * *
- * Purpose: get trigger cache with the requested data cached *
- * *
- * Parameters: trigger - [IN] the trigger *
- * state - [IN] the required cache state *
- * *
- ******************************************************************************/
-static zbx_trigger_cache_t *db_trigger_get_cache(const ZBX_DB_TRIGGER *trigger, zbx_trigger_cache_state_t state)
-{
- zbx_trigger_cache_t *cache;
- char *error = NULL;
- zbx_uint32_t flag = 1 << state;
- zbx_vector_uint64_t functionids;
-
- if (NULL == trigger->cache)
- {
- cache = (zbx_trigger_cache_t *)zbx_malloc(NULL, sizeof(zbx_trigger_cache_t));
- cache->init = cache->done = 0;
- ((ZBX_DB_TRIGGER *)trigger)->cache = cache;
- }
- else
- cache = (zbx_trigger_cache_t *)trigger->cache;
-
- if (0 != (cache->init & flag))
- return 0 != (cache->done & flag) ? cache : NULL;
-
- cache->init |= flag;
-
- switch (state)
- {
- case ZBX_TRIGGER_CACHE_EVAL_CTX:
- if ('\0' == *trigger->expression)
- return NULL;
-
- if (FAIL == zbx_eval_parse_expression(&cache->eval_ctx, trigger->expression,
- ZBX_EVAL_TRIGGER_EXPRESSION, &error))
- {
- zbx_free(error);
- return NULL;
- }
- break;
- case ZBX_TRIGGER_CACHE_EVAL_CTX_R:
- if ('\0' == *trigger->recovery_expression)
- return NULL;
-
- if (FAIL == zbx_eval_parse_expression(&cache->eval_ctx_r, trigger->recovery_expression,
- ZBX_EVAL_TRIGGER_EXPRESSION, &error))
- {
- zbx_free(error);
- return NULL;
- }
- break;
- case ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS:
- if (FAIL == db_trigger_expand_macros(trigger, &cache->eval_ctx))
- return NULL;
-
- break;
- case ZBX_TRIGGER_CACHE_EVAL_CTX_R_MACROS:
- if (FAIL == db_trigger_expand_macros(trigger, &cache->eval_ctx_r))
- return NULL;
-
- break;
- case ZBX_TRIGGER_CACHE_HOSTIDS:
- zbx_vector_uint64_create(&cache->hostids);
- zbx_vector_uint64_create(&functionids);
- zbx_db_trigger_get_all_functionids(trigger, &functionids);
- DCget_hostids_by_functionids(&functionids, &cache->hostids);
- zbx_vector_uint64_destroy(&functionids);
- break;
- default:
- return NULL;
- }
-
- cache->done |= flag;
-
- return cache;
-}
-
-/******************************************************************************
- * *
- * Purpose: expand macros in trigger expression/recovery expression *
- * *
- ******************************************************************************/
-static int db_trigger_expand_macros(const ZBX_DB_TRIGGER *trigger, zbx_eval_context_t *ctx)
-{
- int i;
- ZBX_DB_EVENT db_event;
- zbx_dc_um_handle_t *um_handle;
- zbx_trigger_cache_t *cache;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_HOSTIDS)))
- return FAIL;
-
- db_event.value = trigger->value;
- db_event.object = EVENT_OBJECT_TRIGGER;
-
- um_handle = zbx_dc_open_user_macros();
-
- (void)zbx_eval_expand_user_macros(ctx, cache->hostids.values, cache->hostids.values_num,
- (zbx_macro_expand_func_t)zbx_dc_expand_user_macros, um_handle, NULL);
-
- zbx_dc_close_user_macros(um_handle);
-
- for (i = 0; i < ctx->stack.values_num; i++)
- {
- char *value;
- zbx_eval_token_t *token = &ctx->stack.values[i];
-
- switch (token->type)
- {
- case ZBX_EVAL_TOKEN_VAR_STR:
- if (ZBX_VARIANT_NONE != token->value.type)
- {
- zbx_variant_convert(&token->value, ZBX_VARIANT_STR);
- value = token->value.data.str;
- zbx_variant_set_none(&token->value);
- break;
- }
- value = zbx_substr_unquote(ctx->expression, token->loc.l, token->loc.r);
- break;
- case ZBX_EVAL_TOKEN_VAR_MACRO:
- value = zbx_substr_unquote(ctx->expression, token->loc.l, token->loc.r);
- break;
- default:
- continue;
- }
-
- if (SUCCEED == zbx_substitute_simple_macros(NULL, &db_event, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, &value, MACRO_TYPE_TRIGGER_EXPRESSION, NULL, 0))
- {
- zbx_variant_clear(&token->value);
- zbx_variant_set_str(&token->value, value);
- }
- else
- zbx_free(value);
- }
-
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: free trigger cache *
- * *
- * Parameters: cache - [IN] the trigger cache *
- * *
- ******************************************************************************/
-static void trigger_cache_free(zbx_trigger_cache_t *cache)
-{
- if (0 != (cache->done & (1 << ZBX_TRIGGER_CACHE_EVAL_CTX)))
- zbx_eval_clear(&cache->eval_ctx);
-
- if (0 != (cache->done & (1 << ZBX_TRIGGER_CACHE_EVAL_CTX_R)))
- zbx_eval_clear(&cache->eval_ctx_r);
-
- if (0 != (cache->done & (1 << ZBX_TRIGGER_CACHE_HOSTIDS)))
- zbx_vector_uint64_destroy(&cache->hostids);
-
- zbx_free(cache);
-}
-
-/******************************************************************************
- * *
- * Purpose: get functionids from trigger expression and recovery expression *
- * *
- * Parameters: trigger - [IN] the trigger *
- * functionids - [OUT] the extracted functionids *
- * *
- * Comments: This function will cache parsed expressions in the trigger. *
- * *
- ******************************************************************************/
-void zbx_db_trigger_get_all_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids)
-{
- zbx_trigger_cache_t *cache;
-
- if (NULL != (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
- zbx_eval_get_functionids(&cache->eval_ctx, functionids);
-
- if (NULL != (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX_R)))
- zbx_eval_get_functionids(&cache->eval_ctx_r, functionids);
-
- zbx_vector_uint64_sort(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
- zbx_vector_uint64_uniq(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
-}
-
-/******************************************************************************
- * *
- * Purpose: get functionids from trigger expression *
- * *
- * Parameters: trigger - [IN] the trigger *
- * functionids - [OUT] the extracted functionids *
- * *
- * Comments: This function will cache parsed expressions in the trigger. *
- * *
- ******************************************************************************/
-void zbx_db_trigger_get_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids)
-{
- zbx_trigger_cache_t *cache;
-
- if (NULL != (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
- zbx_eval_get_functionids(&cache->eval_ctx, functionids);
-
- zbx_vector_uint64_sort(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
- zbx_vector_uint64_uniq(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
-}
-/******************************************************************************
- * *
- * Purpose: get trigger expression constant at the specified location *
- * *
- * Parameters: trigger - [IN] the trigger *
- * index - [IN] the constant index, starting with 1 *
- * out - [IN] the constant value, if exists *
- * *
- * Return value: SUCCEED - the expression was parsed and constant extracted *
- * (if the index was valid) *
- * FAIL - the expression failed to parse *
- * *
- * Comments: This function will cache parsed expressions in the trigger. *
- * *
- ******************************************************************************/
-int zbx_db_trigger_get_constant(const ZBX_DB_TRIGGER *trigger, int index, char **out)
-{
- zbx_trigger_cache_t *cache;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS)))
- return FAIL;
-
- zbx_eval_get_constant(&cache->eval_ctx, index, out);
-
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: get the Nth function item from trigger expression *
- * *
- * Parameters: trigger - [IN] the trigger *
- * index - [IN] the function index *
- * itemid - [IN] the function itemid *
- * *
- * Comments: SUCCEED - the itemid was extracted successfully *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-int zbx_db_trigger_get_itemid(const ZBX_DB_TRIGGER *trigger, int index, zbx_uint64_t *itemid)
-{
- int i, ret = FAIL;
- zbx_trigger_cache_t *cache;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
- return FAIL;
-
- for (i = 0; i < cache->eval_ctx.stack.values_num; i++)
- {
- zbx_eval_token_t *token = &cache->eval_ctx.stack.values[i];
- zbx_uint64_t functionid;
- DC_FUNCTION function;
- int errcode;
-
- if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type || (int)token->opt + 1 != index)
- continue;
-
- switch (token->value.type)
- {
- case ZBX_VARIANT_UI64:
- functionid = token->value.data.ui64;
- break;
- case ZBX_VARIANT_NONE:
- if (SUCCEED != zbx_is_uint64_n(cache->eval_ctx.expression + token->loc.l + 1,
- token->loc.r - token->loc.l - 1, &functionid))
- {
- return FAIL;
- }
- zbx_variant_set_ui64(&token->value, functionid);
- break;
- default:
- return FAIL;
- }
-
- DCconfig_get_functions_by_functionids(&function, &functionid, &errcode, 1);
-
- if (SUCCEED == errcode)
- {
- *itemid = function.itemid;
- ret = SUCCEED;
- }
-
- DCconfig_clean_functions(&function, &errcode, 1);
- break;
- }
-
- return ret;
-}
-
-/******************************************************************************
- * *
- * Purpose: get unique itemids of trigger functions in the order they are *
- * written in expression *
- * *
- * Parameters: trigger - [IN] the trigger *
- * itemids - [IN] the function itemids *
- * *
- ******************************************************************************/
-void zbx_db_trigger_get_itemids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *itemids)
-{
- zbx_vector_uint64_t functionids, functionids_ordered;
- zbx_trigger_cache_t *cache;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
- return;
-
- zbx_vector_uint64_create(&functionids);
- zbx_vector_uint64_create(&functionids_ordered);
-
- zbx_eval_get_functionids_ordered(&cache->eval_ctx, &functionids_ordered);
-
- if (0 != functionids_ordered.values_num)
- {
- DC_FUNCTION *functions;
- int i, *errcodes, index;
-
- zbx_vector_uint64_append_array(&functionids, functionids_ordered.values,
- functionids_ordered.values_num);
-
- zbx_vector_uint64_sort(&functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
- zbx_vector_uint64_uniq(&functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
-
- functions = (DC_FUNCTION *)zbx_malloc(NULL, sizeof(DC_FUNCTION) * functionids.values_num);
- errcodes = (int *)zbx_malloc(NULL, sizeof(int) * functionids.values_num);
-
- DCconfig_get_functions_by_functionids(functions, functionids.values, errcodes,
- functionids.values_num);
-
- for (i = 0; i < functionids_ordered.values_num; i++)
- {
- if (-1 == (index = zbx_vector_uint64_bsearch(&functionids, functionids_ordered.values[i],
- ZBX_DEFAULT_UINT64_COMPARE_FUNC)))
- {
- THIS_SHOULD_NEVER_HAPPEN;
- continue;
- }
-
- if (SUCCEED != errcodes[index])
- continue;
-
- if (FAIL == zbx_vector_uint64_search(itemids, functions[index].itemid,
- ZBX_DEFAULT_UINT64_COMPARE_FUNC))
- {
- zbx_vector_uint64_append(itemids, functions[index].itemid);
- }
- }
-
- DCconfig_clean_functions(functions, errcodes, functionids.values_num);
- zbx_free(functions);
- zbx_free(errcodes);
- }
-
- zbx_vector_uint64_destroy(&functionids_ordered);
- zbx_vector_uint64_destroy(&functionids);
-}
-
-/******************************************************************************
- * *
- * Purpose: get hostids from trigger expression and recovery expression *
- * *
- * Parameters: trigger - [IN] the trigger *
- * hostids - [OUT] the extracted hostids *
- * *
- * Return value: SUCCEED - the hostids vector was returned (but can be empty *
- * FAIL - otherwise *
- * *
- * Comments: This function will cache parsed expressions in the trigger. *
- * *
- ******************************************************************************/
-int zbx_db_trigger_get_all_hostids(const ZBX_DB_TRIGGER *trigger, const zbx_vector_uint64_t **hostids)
-{
- zbx_trigger_cache_t *cache;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_HOSTIDS)))
- return FAIL;
-
- *hostids = &cache->hostids;
- return SUCCEED;
-}
-
-/******************************************************************************
- * *
- * Purpose: frees resources allocated to store trigger data *
- * *
- * Parameters: trigger - *
- * *
- ******************************************************************************/
-void zbx_db_trigger_clean(ZBX_DB_TRIGGER *trigger)
-{
- zbx_free(trigger->description);
- zbx_free(trigger->expression);
- zbx_free(trigger->recovery_expression);
- zbx_free(trigger->comments);
- zbx_free(trigger->url);
- zbx_free(trigger->url_name);
- zbx_free(trigger->opdata);
- zbx_free(trigger->event_name);
-
- if (NULL != trigger->cache)
- trigger_cache_free((zbx_trigger_cache_t *)trigger->cache);
-}
-
-/******************************************************************************
- * *
- * Purpose: get original trigger expression/recovery expression with expanded *
- * functions *
- * *
- * Parameters: ctx - [IN] the parsed expression *
- * expression - [OUT] the trigger expression *
- * *
- ******************************************************************************/
-static void db_trigger_get_expression(const zbx_eval_context_t *ctx, char **expression)
-{
- int i;
- zbx_eval_context_t local_ctx;
-
- zbx_eval_copy(&local_ctx, ctx, ctx->expression);
- local_ctx.rules |= ZBX_EVAL_COMPOSE_MASK_ERROR;
-
- for (i = 0; i < local_ctx.stack.values_num; i++)
- {
- zbx_eval_token_t *token = &local_ctx.stack.values[i];
- zbx_uint64_t functionid;
- DC_FUNCTION function;
- DC_ITEM item;
- int err_func, err_item;
-
- if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type)
- {
- /* reset cached token values to get the original expression */
- zbx_variant_clear(&token->value);
- continue;
- }
-
- switch (token->value.type)
- {
- case ZBX_VARIANT_UI64:
- functionid = token->value.data.ui64;
- break;
- case ZBX_VARIANT_NONE:
- if (SUCCEED != zbx_is_uint64_n(local_ctx.expression + token->loc.l + 1,
- token->loc.r - token->loc.l - 1, &functionid))
- {
- continue;
- }
- break;
- default:
- continue;
- }
-
- DCconfig_get_functions_by_functionids(&function, &functionid, &err_func, 1);
-
- if (SUCCEED == err_func)
- {
- DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1);
-
- if (SUCCEED == err_item)
- {
- char *func = NULL;
- size_t func_alloc = 0, func_offset = 0;
-
- zbx_snprintf_alloc(&func, &func_alloc, &func_offset, "%s(/%s/%s",
- function.function, item.host.host, item.key_orig);
-
- if ('\0' != *function.parameter)
- zbx_snprintf_alloc(&func, &func_alloc, &func_offset, ",%s", function.parameter);
-
- zbx_chrcpy_alloc(&func, &func_alloc, &func_offset,')');
-
- zbx_variant_clear(&token->value);
- zbx_variant_set_str(&token->value, func);
- DCconfig_clean_items(&item, &err_item, 1);
- }
- else
- {
- zbx_variant_clear(&token->value);
- zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "item id:" ZBX_FS_UI64
- " deleted", function.itemid));
- }
-
- DCconfig_clean_functions(&function, &err_func, 1);
- }
- else
- {
- zbx_variant_clear(&token->value);
- zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "function id:" ZBX_FS_UI64 " deleted",
- functionid));
- }
- }
-
- zbx_eval_compose_expression(&local_ctx, expression);
-
- zbx_eval_clear(&local_ctx);
-}
-
-/******************************************************************************
- * *
- * Purpose: get original trigger expression with expanded functions *
- * *
- * Parameters: trigger - [IN] the trigger *
- * expression - [OUT] the trigger expression *
- * *
- ******************************************************************************/
-void zbx_db_trigger_get_expression(const ZBX_DB_TRIGGER *trigger, char **expression)
-{
- zbx_trigger_cache_t *cache;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
- *expression = zbx_strdup(NULL, trigger->expression);
- else
- db_trigger_get_expression(&cache->eval_ctx, expression);
-}
-
-/******************************************************************************
- * *
- * Purpose: get original trigger recovery expression with expanded functions *
- * *
- * Parameters: trigger - [IN] the trigger *
- * expression - [OUT] the trigger expression *
- * *
- ******************************************************************************/
-void zbx_db_trigger_get_recovery_expression(const ZBX_DB_TRIGGER *trigger, char **expression)
-{
- zbx_trigger_cache_t *cache;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX_R)))
- *expression = zbx_strdup(NULL, trigger->recovery_expression);
- else
- db_trigger_get_expression(&cache->eval_ctx_r, expression);
-}
-
-static void evaluate_function_by_id(zbx_uint64_t functionid, char **value, zbx_trigger_func_t eval_func_cb)
-{
- DC_ITEM item;
- DC_FUNCTION function;
- int err_func, err_item;
-
- DCconfig_get_functions_by_functionids(&function, &functionid, &err_func, 1);
-
- if (SUCCEED == err_func)
- {
- DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1);
-
- if (SUCCEED == err_item)
- {
- char *error = NULL, *parameter = NULL;
- zbx_variant_t var;
- zbx_timespec_t ts;
-
- parameter = zbx_dc_expand_user_macros_in_func_params(function.parameter, item.host.hostid);
- zbx_timespec(&ts);
-
- if (SUCCEED == eval_func_cb(&var, &item, function.function, parameter, &ts, &error) &&
- ZBX_VARIANT_NONE != var.type)
- {
- *value = zbx_strdup(NULL, zbx_variant_value_desc(&var));
- zbx_variant_clear(&var);
- }
- else
- zbx_free(error);
-
- zbx_free(parameter);
- DCconfig_clean_items(&item, &err_item, 1);
- }
-
- DCconfig_clean_functions(&function, &err_func, 1);
- }
-
- if (NULL == *value)
- *value = zbx_strdup(NULL, "*UNKNOWN*");
-}
-
-static void db_trigger_explain_expression(const zbx_eval_context_t *ctx, char **expression,
- zbx_trigger_func_t eval_func_cb)
-{
- int i;
- zbx_eval_context_t local_ctx;
-
- zbx_eval_copy(&local_ctx, ctx, ctx->expression);
- local_ctx.rules |= ZBX_EVAL_COMPOSE_MASK_ERROR;
-
- for (i = 0; i < local_ctx.stack.values_num; i++)
- {
- zbx_eval_token_t *token = &local_ctx.stack.values[i];
- char *value = NULL;
- zbx_uint64_t functionid;
-
- if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type)
- continue;
-
- switch (token->value.type)
- {
- case ZBX_VARIANT_UI64:
- functionid = token->value.data.ui64;
- break;
- case ZBX_VARIANT_NONE:
- if (SUCCEED != zbx_is_uint64_n(local_ctx.expression + token->loc.l + 1,
- token->loc.r - token->loc.l - 1, &functionid))
- {
- continue;
- }
- break;
- default:
- continue;
- }
-
- zbx_variant_clear(&token->value);
- evaluate_function_by_id(functionid, &value, eval_func_cb);
- zbx_variant_set_str(&token->value, value);
- }
-
- zbx_eval_compose_expression(&local_ctx, expression);
-
- zbx_eval_clear(&local_ctx);
-}
-
-static void db_trigger_get_function_value(const zbx_eval_context_t *ctx, int index, char **value_ret,
- zbx_trigger_func_t eval_func_cb)
-{
- int i;
- zbx_eval_context_t local_ctx;
-
- zbx_eval_copy(&local_ctx, ctx, ctx->expression);
-
- for (i = 0; i < local_ctx.stack.values_num; i++)
- {
- zbx_eval_token_t *token = &local_ctx.stack.values[i];
- zbx_uint64_t functionid;
-
- if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type || (int)token->opt + 1 != index)
- continue;
-
- switch (token->value.type)
- {
- case ZBX_VARIANT_UI64:
- functionid = token->value.data.ui64;
- break;
- case ZBX_VARIANT_NONE:
- if (SUCCEED != zbx_is_uint64_n(local_ctx.expression + token->loc.l + 1,
- token->loc.r - token->loc.l - 1, &functionid))
- {
- continue;
- }
- break;
- default:
- continue;
- }
-
- evaluate_function_by_id(functionid, value_ret, eval_func_cb);
- break;
- }
-
- zbx_eval_clear(&local_ctx);
-
- if (NULL == *value_ret)
- *value_ret = zbx_strdup(NULL, "*UNKNOWN*");
-}
-
-void zbx_db_trigger_explain_expression(const ZBX_DB_TRIGGER *trigger, char **expression,
- zbx_trigger_func_t eval_func_cb, int recovery)
-{
- zbx_trigger_cache_t *cache;
- zbx_trigger_cache_state_t state;
- const zbx_eval_context_t *ctx;
-
- state = (1 == recovery) ? ZBX_TRIGGER_CACHE_EVAL_CTX_R_MACROS : ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, state)))
- {
- *expression = zbx_strdup(NULL, "*UNKNOWN*");
- return;
- }
-
- ctx = (1 == recovery) ? &cache->eval_ctx_r : &cache->eval_ctx;
-
- db_trigger_explain_expression(ctx, expression, eval_func_cb);
-}
-
-void zbx_db_trigger_get_function_value(const ZBX_DB_TRIGGER *trigger, int index, char **value,
- zbx_trigger_func_t eval_func_cb, int recovery)
-{
- zbx_trigger_cache_t *cache;
- zbx_trigger_cache_state_t state;
- const zbx_eval_context_t *ctx;
-
- state = (1 == recovery) ? ZBX_TRIGGER_CACHE_EVAL_CTX_R : ZBX_TRIGGER_CACHE_EVAL_CTX;
-
- if (NULL == (cache = db_trigger_get_cache(trigger, state)))
- {
- *value = zbx_strdup(NULL, "*UNKNOWN*");
- return;
- }
-
- ctx = (1 == recovery) ? &cache->eval_ctx_r : &cache->eval_ctx;
-
- db_trigger_get_function_value(ctx, index, value, eval_func_cb);
-}
diff --git a/src/libs/zbxdbupgrade/dbupgrade_5010.c b/src/libs/zbxdbupgrade/dbupgrade_5010.c
index 7c982585efc..4c5a690be0e 100644
--- a/src/libs/zbxdbupgrade/dbupgrade_5010.c
+++ b/src/libs/zbxdbupgrade/dbupgrade_5010.c
@@ -329,8 +329,9 @@ static int DBpatch_5010036(void)
static int DBpatch_5010037(void)
{
const ZBX_TABLE table =
- {"trigger_queue", "", 0,
+ {"trigger_queue", "trigger_queueid", 0,
{
+ {"trigger_queueid", NULL, NULL, NULL, 0, ZBX_TYPE_ID, ZBX_NOTNULL, 0},
{"objectid", NULL, NULL, NULL, 0, ZBX_TYPE_ID, ZBX_NOTNULL, 0},
{"type", "0", NULL, NULL, 0, ZBX_TYPE_INT, ZBX_NOTNULL, 0},
{"clock", "0", NULL, NULL, 0, ZBX_TYPE_INT, ZBX_NOTNULL, 0},
diff --git a/src/libs/zbxdbupgrade/dbupgrade_6030.c b/src/libs/zbxdbupgrade/dbupgrade_6030.c
index a5313d6bb5c..5a0499ec53d 100644
--- a/src/libs/zbxdbupgrade/dbupgrade_6030.c
+++ b/src/libs/zbxdbupgrade/dbupgrade_6030.c
@@ -476,6 +476,92 @@ static int DBpatch_6030061(void)
return DBmodify_field_type("triggers", &field, NULL);
}
+static int DBpatch_6030062(void)
+{
+ DB_RESULT result;
+ DB_ROW row;
+ char *sql;
+ size_t sql_alloc = 4096, sql_offset = 0;
+ int ret = SUCCEED;
+
+ if (0 == (program_type & ZBX_PROGRAM_TYPE_SERVER))
+ return SUCCEED;
+
+ sql = zbx_malloc(NULL, sql_alloc);
+
+ zbx_DBbegin_multiple_update(&sql, &sql_alloc, &sql_offset);
+
+ result = DBselect("select moduleid,relative_path from module");
+
+ while (NULL != (row = DBfetch(result)))
+ {
+ const char *rel_path = row[1];
+ char *updated_path, *updated_path_esc;
+
+ if (NULL == rel_path || '\0' == *rel_path)
+ continue;
+
+ updated_path = zbx_dsprintf(NULL, "modules/%s", rel_path);
+
+ updated_path_esc = DBdyn_escape_string(updated_path);
+
+ zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "update module set relative_path='%s' "
+ "where moduleid=%s;\n", updated_path_esc, row[0]);
+
+ zbx_free(updated_path);
+ zbx_free(updated_path_esc);
+
+ ret = DBexecute_overflowed_sql(&sql, &sql_alloc, &sql_offset);
+ }
+ DBfree_result(result);
+
+ zbx_DBend_multiple_update(&sql, &sql_alloc, &sql_offset);
+
+ if (SUCCEED == ret && 16 < sql_offset)
+ {
+ if (ZBX_DB_OK > DBexecute("%s", sql))
+ ret = FAIL;
+ }
+
+ zbx_free(sql);
+
+ return ret;
+}
+
+static int DBpatch_6030063(void)
+{
+ zbx_db_insert_t db_insert;
+ int i, ret = FAIL;
+
+ const char *modules[] = {
+ "actionlog", "clock", "dataover", "discovery", "favgraphs", "favmaps", "geomap", "graph",
+ "graphprototype", "hostavail", "item", "map", "navtree", "plaintext", "problemhosts",
+ "problems", "problemsbysv", "slareport", "svggraph", "systeminfo", "tophosts", "trigover",
+ "url", "web"
+ };
+
+ if (0 == (program_type & ZBX_PROGRAM_TYPE_SERVER))
+ return SUCCEED;
+
+ zbx_db_insert_prepare(&db_insert, "module", "moduleid", "id", "relative_path", "status", "config", NULL);
+
+ for (i = 0; i < (int)ARRSIZE(modules); i++)
+ {
+ char *path;
+
+ path = zbx_dsprintf(NULL, "widgets/%s", modules[i]);
+ zbx_db_insert_add_values(&db_insert, __UINT64_C(0), modules[i], path, 1, "[]");
+ zbx_free(path);
+ }
+
+ zbx_db_insert_autoincrement(&db_insert, "moduleid");
+ ret = zbx_db_insert_execute(&db_insert);
+
+ zbx_db_insert_clean(&db_insert);
+
+ return ret;
+}
+
#endif
DBPATCH_START(6030)
@@ -544,5 +630,7 @@ DBPATCH_ADD(6030058, 0, 1)
DBPATCH_ADD(6030059, 0, 1)
DBPATCH_ADD(6030060, 0, 1)
DBPATCH_ADD(6030061, 0, 1)
+DBPATCH_ADD(6030062, 0, 1)
+DBPATCH_ADD(6030063, 0, 1)
DBPATCH_END()
diff --git a/src/libs/zbxdbwrap/Makefile.am b/src/libs/zbxdbwrap/Makefile.am
new file mode 100644
index 00000000000..0e7b3916836
--- /dev/null
+++ b/src/libs/zbxdbwrap/Makefile.am
@@ -0,0 +1,21 @@
+## Process this file with automake to produce Makefile.in
+
+noinst_LIBRARIES = libzbxdbwrap.a
+
+libzbxdbwrap_a_SOURCES = \
+ proxy.c \
+ event.c \
+ template_item.c \
+ template.h \
+ trigger.c \
+ trigger_dep_linking.c \
+ trigger_dep_linking.h \
+ trigger_linking.c \
+ trigger_linking.h \
+ graph_linking.c \
+ graph_linking.h \
+ host.c
+
+libzbxdbwrap_a_CFLAGS = \
+ -I$(top_srcdir)/src/zabbix_server/ \
+ $(TLS_CFLAGS)
diff --git a/src/libs/zbxdbhigh/event.c b/src/libs/zbxdbwrap/event.c
index 1d1a80f418e..718cf1d8800 100644
--- a/src/libs/zbxdbhigh/event.c
+++ b/src/libs/zbxdbwrap/event.c
@@ -17,7 +17,7 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "zbxdbhigh.h"
+#include "zbxdbwrap.h"
#include "zbxnum.h"
#include "zbxexpr.h"
diff --git a/src/libs/zbxdbhigh/graph_linking.c b/src/libs/zbxdbwrap/graph_linking.c
index 133afb11433..133afb11433 100644
--- a/src/libs/zbxdbhigh/graph_linking.c
+++ b/src/libs/zbxdbwrap/graph_linking.c
diff --git a/src/libs/zbxdbhigh/graph_linking.h b/src/libs/zbxdbwrap/graph_linking.h
index ed0d6ddadbc..ed0d6ddadbc 100644
--- a/src/libs/zbxdbhigh/graph_linking.h
+++ b/src/libs/zbxdbwrap/graph_linking.h
diff --git a/src/libs/zbxdbhigh/host.c b/src/libs/zbxdbwrap/host.c
index 6d705f56d6a..f9236e5ae76 100644
--- a/src/libs/zbxdbhigh/host.c
+++ b/src/libs/zbxdbwrap/host.c
@@ -17,10 +17,11 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "zbxdbhigh.h"
+#include "template.h"
+#include "zbxdbwrap.h"
#include "log.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxserver.h"
#include "audit/zbxaudit_host.h"
#include "audit/zbxaudit_item.h"
@@ -68,7 +69,7 @@ static int zbx_ids_names_compare_func(const void *d1, const void *d2)
* FAIL - otherwise *
* *
******************************************************************************/
-int DBselect_ids_names(const char *sql, zbx_vector_uint64_t *ids, zbx_vector_str_t *names)
+static int DBselect_ids_names(const char *sql, zbx_vector_uint64_t *ids, zbx_vector_str_t *names)
{
int i, ret = FAIL;
DB_RESULT result;
@@ -6112,7 +6113,7 @@ zbx_uint64_t DBadd_interface(zbx_uint64_t hostid, unsigned char type, unsigned c
ip_esc = DBdyn_escape_field("interface", "ip", ip);
dns_esc = DBdyn_escape_field("interface", "dns", dns);
- interfaceid = DBget_maxid("interface");
+ interfaceid = DBget_maxid_num("interface", 1);
DBexecute("insert into interface"
" (interfaceid,hostid,main,type,useip,ip,dns,port)"
diff --git a/src/libs/zbxdbwrap/proxy.c b/src/libs/zbxdbwrap/proxy.c
new file mode 100644
index 00000000000..6a731bad5d4
--- /dev/null
+++ b/src/libs/zbxdbwrap/proxy.c
@@ -0,0 +1,3334 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#include "zbxdbwrap.h"
+
+#include "zbxdbhigh.h"
+#include "log.h"
+#include "zbxsysinfo.h"
+#include "zbxserver.h"
+#include "zbxtasks.h"
+#include "zbxdiscovery.h"
+#include "zbxalgo.h"
+#include "preproc.h"
+#include "zbxcrypto.h"
+#include "zbxlld.h"
+#include "events.h"
+#include "zbxavailability.h"
+#include "zbxcommshigh.h"
+#include "zbxnum.h"
+#include "zbxtime.h"
+#include "zbxip.h"
+#include "version.h"
+#include "zbxversion.h"
+
+extern char *CONFIG_SERVER;
+
+/* the space reserved in json buffer to hold at least one record plus service data */
+#define ZBX_DATA_JSON_RESERVED (ZBX_HISTORY_TEXT_VALUE_LEN * 4 + ZBX_KIBIBYTE * 4)
+
+#define ZBX_DATA_JSON_RECORD_LIMIT (ZBX_MAX_RECV_DATA_SIZE - ZBX_DATA_JSON_RESERVED)
+#define ZBX_DATA_JSON_BATCH_LIMIT ((ZBX_MAX_RECV_DATA_SIZE - ZBX_DATA_JSON_RESERVED) / 2)
+
+/* the maximum number of values processed in one batch */
+#define ZBX_HISTORY_VALUES_MAX 256
+
+typedef struct
+{
+ zbx_uint64_t druleid;
+ zbx_vector_uint64_t dcheckids;
+ zbx_vector_ptr_t ips;
+}
+zbx_drule_t;
+
+typedef struct
+{
+ char ip[ZBX_INTERFACE_IP_LEN_MAX];
+ zbx_vector_ptr_t services;
+}
+zbx_drule_ip_t;
+
+typedef struct
+{
+ const char *field;
+ const char *tag;
+ zbx_json_type_t jt;
+ const char *default_value;
+}
+zbx_history_field_t;
+
+typedef struct
+{
+ const char *table, *lastidfield;
+ zbx_history_field_t fields[ZBX_MAX_FIELDS];
+}
+zbx_history_table_t;
+
+typedef int (*zbx_client_item_validator_t)(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error);
+
+typedef struct
+{
+ zbx_uint64_t hostid;
+ int value;
+}
+zbx_host_rights_t;
+
+static zbx_history_table_t dht = {
+ "proxy_dhistory", "dhistory_lastid",
+ {
+ {"clock", ZBX_PROTO_TAG_CLOCK, ZBX_JSON_TYPE_INT, NULL},
+ {"druleid", ZBX_PROTO_TAG_DRULE, ZBX_JSON_TYPE_INT, NULL},
+ {"dcheckid", ZBX_PROTO_TAG_DCHECK, ZBX_JSON_TYPE_INT, NULL},
+ {"ip", ZBX_PROTO_TAG_IP, ZBX_JSON_TYPE_STRING, NULL},
+ {"dns", ZBX_PROTO_TAG_DNS, ZBX_JSON_TYPE_STRING, NULL},
+ {"port", ZBX_PROTO_TAG_PORT, ZBX_JSON_TYPE_INT, "0"},
+ {"value", ZBX_PROTO_TAG_VALUE, ZBX_JSON_TYPE_STRING, ""},
+ {"status", ZBX_PROTO_TAG_STATUS, ZBX_JSON_TYPE_INT, "0"},
+ {NULL}
+ }
+};
+
+static zbx_history_table_t areg = {
+ "proxy_autoreg_host", "autoreg_host_lastid",
+ {
+ {"clock", ZBX_PROTO_TAG_CLOCK, ZBX_JSON_TYPE_INT, NULL},
+ {"host", ZBX_PROTO_TAG_HOST, ZBX_JSON_TYPE_STRING, NULL},
+ {"listen_ip", ZBX_PROTO_TAG_IP, ZBX_JSON_TYPE_STRING, ""},
+ {"listen_dns", ZBX_PROTO_TAG_DNS, ZBX_JSON_TYPE_STRING, ""},
+ {"listen_port", ZBX_PROTO_TAG_PORT, ZBX_JSON_TYPE_STRING, "0"},
+ {"host_metadata", ZBX_PROTO_TAG_HOST_METADATA, ZBX_JSON_TYPE_STRING, ""},
+ {"flags", ZBX_PROTO_TAG_FLAGS, ZBX_JSON_TYPE_STRING, "0"},
+ {"tls_accepted", ZBX_PROTO_TAG_TLS_ACCEPTED, ZBX_JSON_TYPE_INT, "0"},
+ {NULL}
+ }
+};
+
+/******************************************************************************
+ * *
+ * Purpose: check proxy connection permissions (encryption configuration and *
+ * if peer proxy address is allowed) *
+ * *
+ * Parameters: *
+ * proxy - [IN] the proxy data *
+ * sock - [IN] connection socket context *
+ * error - [OUT] error message *
+ * *
+ * Return value: *
+ * SUCCEED - connection permission check was successful *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+int zbx_proxy_check_permissions(const DC_PROXY *proxy, const zbx_socket_t *sock, char **error)
+{
+#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+ zbx_tls_conn_attr_t attr;
+#endif
+ if ('\0' != *proxy->proxy_address && FAIL == zbx_tcp_check_allowed_peers(sock, proxy->proxy_address))
+ {
+ *error = zbx_strdup(*error, "connection is not allowed");
+ return FAIL;
+ }
+
+#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+ if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
+ {
+ if (SUCCEED != zbx_tls_get_attr_cert(sock, &attr))
+ {
+ *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
+ THIS_SHOULD_NEVER_HAPPEN;
+ return FAIL;
+ }
+ }
+#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
+ else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
+ {
+ if (SUCCEED != zbx_tls_get_attr_psk(sock, &attr))
+ {
+ *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
+ THIS_SHOULD_NEVER_HAPPEN;
+ return FAIL;
+ }
+ }
+#endif
+ else if (ZBX_TCP_SEC_UNENCRYPTED != sock->connection_type)
+ {
+ *error = zbx_strdup(*error, "internal error: invalid connection type");
+ THIS_SHOULD_NEVER_HAPPEN;
+ return FAIL;
+ }
+#endif
+ if (0 == ((unsigned int)proxy->tls_accept & sock->connection_type))
+ {
+ *error = zbx_dsprintf(NULL, "connection of type \"%s\" is not allowed for proxy \"%s\"",
+ zbx_tcp_connection_type_name(sock->connection_type), proxy->host);
+ return FAIL;
+ }
+
+#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+ if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
+ {
+ /* simplified match, not compliant with RFC 4517, 4518 */
+ if ('\0' != *proxy->tls_issuer && 0 != strcmp(proxy->tls_issuer, attr.issuer))
+ {
+ *error = zbx_dsprintf(*error, "proxy \"%s\" certificate issuer does not match", proxy->host);
+ return FAIL;
+ }
+
+ /* simplified match, not compliant with RFC 4517, 4518 */
+ if ('\0' != *proxy->tls_subject && 0 != strcmp(proxy->tls_subject, attr.subject))
+ {
+ *error = zbx_dsprintf(*error, "proxy \"%s\" certificate subject does not match", proxy->host);
+ return FAIL;
+ }
+ }
+#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
+ else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
+ {
+ if (strlen(proxy->tls_psk_identity) != attr.psk_identity_len ||
+ 0 != memcmp(proxy->tls_psk_identity, attr.psk_identity, attr.psk_identity_len))
+ {
+ *error = zbx_dsprintf(*error, "proxy \"%s\" is using false PSK identity", proxy->host);
+ return FAIL;
+ }
+ }
+#endif
+#endif
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: checks host connection permissions (encryption configuration) *
+ * *
+ * Parameters: *
+ * host - [IN] the host data *
+ * sock - [IN] connection socket context *
+ * error - [OUT] error message *
+ * *
+ * Return value: *
+ * SUCCEED - connection permission check was successful *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int zbx_host_check_permissions(const DC_HOST *host, const zbx_socket_t *sock, char **error)
+{
+#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+ zbx_tls_conn_attr_t attr;
+
+ if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
+ {
+ if (SUCCEED != zbx_tls_get_attr_cert(sock, &attr))
+ {
+ *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
+ THIS_SHOULD_NEVER_HAPPEN;
+ return FAIL;
+ }
+ }
+#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
+ else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
+ {
+ if (SUCCEED != zbx_tls_get_attr_psk(sock, &attr))
+ {
+ *error = zbx_strdup(*error, "internal error: cannot get connection attributes");
+ THIS_SHOULD_NEVER_HAPPEN;
+ return FAIL;
+ }
+ }
+#endif
+ else if (ZBX_TCP_SEC_UNENCRYPTED != sock->connection_type)
+ {
+ *error = zbx_strdup(*error, "internal error: invalid connection type");
+ THIS_SHOULD_NEVER_HAPPEN;
+ return FAIL;
+ }
+#endif
+ if (0 == ((unsigned int)host->tls_accept & sock->connection_type))
+ {
+ *error = zbx_dsprintf(NULL, "connection of type \"%s\" is not allowed for host \"%s\"",
+ zbx_tcp_connection_type_name(sock->connection_type), host->host);
+ return FAIL;
+ }
+
+#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+ if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
+ {
+ /* simplified match, not compliant with RFC 4517, 4518 */
+ if ('\0' != *host->tls_issuer && 0 != strcmp(host->tls_issuer, attr.issuer))
+ {
+ *error = zbx_dsprintf(*error, "host \"%s\" certificate issuer does not match", host->host);
+ return FAIL;
+ }
+
+ /* simplified match, not compliant with RFC 4517, 4518 */
+ if ('\0' != *host->tls_subject && 0 != strcmp(host->tls_subject, attr.subject))
+ {
+ *error = zbx_dsprintf(*error, "host \"%s\" certificate subject does not match", host->host);
+ return FAIL;
+ }
+ }
+#if defined(HAVE_GNUTLS) || (defined(HAVE_OPENSSL) && defined(HAVE_OPENSSL_WITH_PSK))
+ else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
+ {
+ if (strlen(host->tls_psk_identity) != attr.psk_identity_len ||
+ 0 != memcmp(host->tls_psk_identity, attr.psk_identity, attr.psk_identity_len))
+ {
+ *error = zbx_dsprintf(*error, "host \"%s\" is using false PSK identity", host->host);
+ return FAIL;
+ }
+ }
+#endif
+#endif
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: *
+ * Extract a proxy name from JSON and find the proxy ID in configuration *
+ * cache, and check access rights. The proxy must be configured in active *
+ * mode. *
+ * *
+ * Parameters: *
+ * jp - [IN] JSON with the proxy name *
+ * proxy - [OUT] the proxy data *
+ * error - [OUT] error message *
+ * *
+ * Return value: *
+ * SUCCEED - proxy ID was found in database *
+ * FAIL - an error occurred (e.g. an unknown proxy, the proxy is *
+ * configured in passive mode or access denied) *
+ * *
+ ******************************************************************************/
+int get_active_proxy_from_request(const struct zbx_json_parse *jp, DC_PROXY *proxy, char **error)
+{
+ char *ch_error, host[ZBX_HOSTNAME_BUF_LEN];
+
+ if (SUCCEED != zbx_json_value_by_name(jp, ZBX_PROTO_TAG_HOST, host, sizeof(host), NULL))
+ {
+ *error = zbx_strdup(*error, "missing name of proxy");
+ return FAIL;
+ }
+
+ if (SUCCEED != zbx_check_hostname(host, &ch_error))
+ {
+ *error = zbx_dsprintf(*error, "invalid proxy name \"%s\": %s", host, ch_error);
+ zbx_free(ch_error);
+ return FAIL;
+ }
+
+ return zbx_dc_get_active_proxy_by_name(host, proxy, error);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: *
+ * Check access rights to a passive proxy for the given connection and *
+ * send a response if denied. *
+ * *
+ * Parameters: *
+ * sock - [IN] connection socket context *
+ * send_response - [IN] to send or not to send a response to server. *
+ * Value: ZBX_SEND_RESPONSE or *
+ * ZBX_DO_NOT_SEND_RESPONSE *
+ * req - [IN] request, included into error message *
+ * zbx_config_tls - [IN] configured requirements to allow access *
+ * *
+ * Return value: *
+ * SUCCEED - access is allowed *
+ * FAIL - access is denied *
+ * *
+ ******************************************************************************/
+int check_access_passive_proxy(zbx_socket_t *sock, int send_response, const char *req,
+ const zbx_config_tls_t *zbx_config_tls)
+{
+ char *msg = NULL;
+
+ if (FAIL == zbx_tcp_check_allowed_peers(sock, CONFIG_SERVER))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" is not allowed: %s", req, sock->peer,
+ zbx_socket_strerror());
+
+ if (ZBX_SEND_RESPONSE == send_response)
+ zbx_send_proxy_response(sock, FAIL, "connection is not allowed", CONFIG_TIMEOUT);
+
+ return FAIL;
+ }
+
+ if (0 == (zbx_config_tls->accept_modes & sock->connection_type))
+ {
+ msg = zbx_dsprintf(NULL, "%s over connection of type \"%s\" is not allowed", req,
+ zbx_tcp_connection_type_name(sock->connection_type));
+
+ zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" by proxy configuration parameter \"TLSAccept\"",
+ msg, sock->peer);
+
+ if (ZBX_SEND_RESPONSE == send_response)
+ zbx_send_proxy_response(sock, FAIL, msg, CONFIG_TIMEOUT);
+
+ zbx_free(msg);
+ return FAIL;
+ }
+
+#if defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL)
+ if (ZBX_TCP_SEC_TLS_CERT == sock->connection_type)
+ {
+ if (SUCCEED == zbx_check_server_issuer_subject(sock, zbx_config_tls->server_cert_issuer,
+ zbx_config_tls->server_cert_subject, &msg))
+ {
+ return SUCCEED;
+ }
+
+ zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" is not allowed: %s", req, sock->peer, msg);
+
+ if (ZBX_SEND_RESPONSE == send_response)
+ zbx_send_proxy_response(sock, FAIL, "certificate issuer or subject mismatch", CONFIG_TIMEOUT);
+
+ zbx_free(msg);
+ return FAIL;
+ }
+ else if (ZBX_TCP_SEC_TLS_PSK == sock->connection_type)
+ {
+ if (0 != (ZBX_PSK_FOR_PROXY & zbx_tls_get_psk_usage()))
+ return SUCCEED;
+
+ zabbix_log(LOG_LEVEL_WARNING, "%s from server \"%s\" is not allowed: it used PSK which is not"
+ " configured for proxy communication with server", req, sock->peer);
+
+ if (ZBX_SEND_RESPONSE == send_response)
+ zbx_send_proxy_response(sock, FAIL, "wrong PSK used", CONFIG_TIMEOUT);
+
+ return FAIL;
+ }
+#endif
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - no interface availability has been changed *
+ * *
+ ******************************************************************************/
+int get_interface_availability_data(struct zbx_json *json, int *ts)
+{
+ int i, ret = FAIL;
+ zbx_vector_ptr_t interfaces;
+ zbx_interface_availability_t *ia;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ zbx_vector_ptr_create(&interfaces);
+
+ if (SUCCEED != DCget_interfaces_availability(&interfaces, ts))
+ goto out;
+
+ zbx_json_addarray(json, ZBX_PROTO_TAG_INTERFACE_AVAILABILITY);
+
+ for (i = 0; i < interfaces.values_num; i++)
+ {
+ ia = (zbx_interface_availability_t *)interfaces.values[i];
+
+ zbx_json_addobject(json, NULL);
+ zbx_json_adduint64(json, ZBX_PROTO_TAG_INTERFACE_ID, ia->interfaceid);
+
+ zbx_json_adduint64(json, ZBX_PROTO_TAG_AVAILABLE, ia->agent.available);
+ zbx_json_addstring(json, ZBX_PROTO_TAG_ERROR, ia->agent.error, ZBX_JSON_TYPE_STRING);
+
+ zbx_json_close(json);
+ }
+
+ zbx_json_close(json);
+
+ ret = SUCCEED;
+out:
+ zbx_vector_ptr_clear_ext(&interfaces, (zbx_mem_free_func_t)zbx_interface_availability_free);
+ zbx_vector_ptr_destroy(&interfaces);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parses interfaces availability data contents and processes it *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+static int process_interfaces_availability_contents(struct zbx_json_parse *jp_data, char **error)
+{
+ zbx_uint64_t interfaceid;
+ struct zbx_json_parse jp_row;
+ const char *p = NULL;
+ char *tmp;
+ size_t tmp_alloc = 129;
+ zbx_interface_availability_t *ia = NULL;
+ zbx_vector_availability_ptr_t interfaces;
+ int ret;
+
+ tmp = (char *)zbx_malloc(NULL, tmp_alloc);
+
+ zbx_vector_availability_ptr_create(&interfaces);
+
+ while (NULL != (p = zbx_json_next(jp_data, p))) /* iterate the interface entries */
+ {
+ if (SUCCEED != (ret = zbx_json_brackets_open(p, &jp_row)))
+ {
+ *error = zbx_strdup(*error, zbx_json_strerror());
+ goto out;
+ }
+
+ if (SUCCEED != (ret = zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_INTERFACE_ID, &tmp, &tmp_alloc,
+ NULL)))
+ {
+ *error = zbx_strdup(*error, zbx_json_strerror());
+ goto out;
+ }
+
+ if (SUCCEED != (ret = zbx_is_uint64(tmp, &interfaceid)))
+ {
+ *error = zbx_strdup(*error, "interfaceid is not a valid numeric");
+ goto out;
+ }
+
+ ia = (zbx_interface_availability_t *)zbx_malloc(NULL, sizeof(zbx_interface_availability_t));
+ zbx_interface_availability_init(ia, interfaceid);
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_AVAILABLE, &tmp, &tmp_alloc, NULL))
+ {
+ ia->agent.available = atoi(tmp);
+ ia->agent.flags |= ZBX_FLAGS_AGENT_STATUS_AVAILABLE;
+ }
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_ERROR, &tmp, &tmp_alloc, NULL))
+ {
+ ia->agent.error = zbx_strdup(NULL, tmp);
+ ia->agent.flags |= ZBX_FLAGS_AGENT_STATUS_ERROR;
+ }
+
+ if (SUCCEED != (ret = zbx_interface_availability_is_set(ia)))
+ {
+ zbx_free(ia);
+ *error = zbx_dsprintf(*error, "no availability data for \"interfaceid\":" ZBX_FS_UI64,
+ interfaceid);
+ goto out;
+ }
+
+ zbx_vector_availability_ptr_append(&interfaces, ia);
+ }
+
+ if (0 < interfaces.values_num && SUCCEED == DCset_interfaces_availability(&interfaces))
+ zbx_availabilities_flush(&interfaces);
+
+ ret = SUCCEED;
+out:
+ zbx_vector_availability_ptr_clear_ext(&interfaces, zbx_interface_availability_free);
+ zbx_vector_availability_ptr_destroy(&interfaces);
+
+ zbx_free(tmp);
+
+ return ret;
+}
+
+static void proxy_get_lastid(const char *table_name, const char *lastidfield, zbx_uint64_t *lastid)
+{
+ DB_RESULT result;
+ DB_ROW row;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() field:'%s.%s'", __func__, table_name, lastidfield);
+
+ result = DBselect("select nextid from ids where table_name='%s' and field_name='%s'",
+ table_name, lastidfield);
+
+ if (NULL == (row = DBfetch(result)))
+ *lastid = 0;
+ else
+ ZBX_STR2UINT64(*lastid, row[0]);
+ DBfree_result(result);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():" ZBX_FS_UI64, __func__, *lastid);
+}
+
+static void proxy_set_lastid(const char *table_name, const char *lastidfield, const zbx_uint64_t lastid)
+{
+ DB_RESULT result;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() [%s.%s:" ZBX_FS_UI64 "]", __func__, table_name, lastidfield, lastid);
+
+ result = DBselect("select 1 from ids where table_name='%s' and field_name='%s'",
+ table_name, lastidfield);
+
+ if (NULL == DBfetch(result))
+ {
+ DBexecute("insert into ids (table_name,field_name,nextid) values ('%s','%s'," ZBX_FS_UI64 ")",
+ table_name, lastidfield, lastid);
+ }
+ else
+ {
+ DBexecute("update ids set nextid=" ZBX_FS_UI64 " where table_name='%s' and field_name='%s'",
+ lastid, table_name, lastidfield);
+ }
+ DBfree_result(result);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
+}
+
+void proxy_set_hist_lastid(const zbx_uint64_t lastid)
+{
+ proxy_set_lastid("proxy_history", "history_lastid", lastid);
+}
+
+void proxy_set_dhis_lastid(const zbx_uint64_t lastid)
+{
+ proxy_set_lastid(dht.table, dht.lastidfield, lastid);
+}
+
+void proxy_set_areg_lastid(const zbx_uint64_t lastid)
+{
+ proxy_set_lastid(areg.table, areg.lastidfield, lastid);
+}
+
+int proxy_get_delay(const zbx_uint64_t lastid)
+{
+ DB_RESULT result;
+ DB_ROW row;
+ char *sql = NULL;
+ int ts = 0;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() [lastid=" ZBX_FS_UI64 "]", __func__, lastid);
+
+ sql = zbx_dsprintf(sql, "select write_clock from proxy_history where id>" ZBX_FS_UI64 " order by id asc",
+ lastid);
+
+ result = DBselectN(sql, 1);
+ zbx_free(sql);
+
+ if (NULL != (row = DBfetch(result)))
+ ts = (int)time(NULL) - atoi(row[0]);
+
+ DBfree_result(result);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
+
+ return ts;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: Get history data from the database. *
+ * *
+ ******************************************************************************/
+static void proxy_get_history_data_simple(struct zbx_json *j, const char *proto_tag, const zbx_history_table_t *ht,
+ zbx_uint64_t *lastid, zbx_uint64_t *id, int *records_num, int *more)
+{
+ size_t offset = 0;
+ int f, records_num_last = *records_num, retries = 1;
+ char sql[MAX_STRING_LEN];
+ DB_RESULT result;
+ DB_ROW row;
+ struct timespec t_sleep = { 0, 100000000L }, t_rem;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() table:'%s'", __func__, ht->table);
+
+ *more = ZBX_PROXY_DATA_DONE;
+
+ offset += zbx_snprintf(sql + offset, sizeof(sql) - offset, "select id");
+
+ for (f = 0; NULL != ht->fields[f].field; f++)
+ offset += zbx_snprintf(sql + offset, sizeof(sql) - offset, ",%s", ht->fields[f].field);
+try_again:
+ zbx_snprintf(sql + offset, sizeof(sql) - offset, " from %s where id>" ZBX_FS_UI64 " order by id",
+ ht->table, *id);
+
+ result = DBselectN(sql, ZBX_MAX_HRECORDS);
+
+ while (NULL != (row = DBfetch(result)))
+ {
+ ZBX_STR2UINT64(*lastid, row[0]);
+
+ if (1 < *lastid - *id)
+ {
+ /* At least one record is missing. It can happen if some DB syncer process has */
+ /* started but not yet committed a transaction or a rollback occurred in a DB syncer. */
+ if (0 < retries--)
+ {
+ DBfree_result(result);
+ zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing."
+ " Waiting " ZBX_FS_DBL " sec, retrying.",
+ __func__, *lastid - *id - 1,
+ t_sleep.tv_sec + t_sleep.tv_nsec / 1e9);
+ nanosleep(&t_sleep, &t_rem);
+ goto try_again;
+ }
+ else
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing. No more retries.",
+ __func__, *lastid - *id - 1);
+ }
+ }
+
+ if (0 == *records_num)
+ zbx_json_addarray(j, proto_tag);
+
+ zbx_json_addobject(j, NULL);
+
+ for (f = 0; NULL != ht->fields[f].field; f++)
+ {
+ if (NULL != ht->fields[f].default_value && 0 == strcmp(row[f + 1], ht->fields[f].default_value))
+ continue;
+
+ zbx_json_addstring(j, ht->fields[f].tag, row[f + 1], ht->fields[f].jt);
+ }
+
+ (*records_num)++;
+
+ zbx_json_close(j);
+
+ /* stop gathering data to avoid exceeding the maximum packet size */
+ if (ZBX_DATA_JSON_RECORD_LIMIT < j->buffer_offset)
+ {
+ *more = ZBX_PROXY_DATA_MORE;
+ break;
+ }
+
+ *id = *lastid;
+ }
+ DBfree_result(result);
+
+ if (ZBX_MAX_HRECORDS == *records_num - records_num_last)
+ *more = ZBX_PROXY_DATA_MORE;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%d lastid:" ZBX_FS_UI64 " more:%d size:" ZBX_FS_SIZE_T,
+ __func__, *records_num - records_num_last, *lastid, *more,
+ (zbx_fs_size_t)j->buffer_offset);
+}
+
+typedef struct
+{
+ zbx_uint64_t id;
+ zbx_uint64_t itemid;
+ zbx_uint64_t lastlogsize;
+ size_t source_offset;
+ size_t value_offset;
+ int clock;
+ int ns;
+ int timestamp;
+ int severity;
+ int logeventid;
+ int mtime;
+ unsigned char state;
+ unsigned char flags;
+}
+zbx_history_data_t;
+
+/******************************************************************************
+ * *
+ * Purpose: read proxy history data from the database *
+ * *
+ * Parameters: lastid - [IN] the id of last processed proxy *
+ * history record *
+ * data - [IN/OUT] the proxy history data buffer *
+ * data_alloc - [IN/OUT] the size of proxy history data *
+ * buffer *
+ * string_buffer - [IN/OUT] the string buffer *
+ * string_buffer_size - [IN/OUT] the size of string buffer *
+ * more - [OUT] set to ZBX_PROXY_DATA_MORE if there *
+ * might be more data to read *
+ * *
+ * Return value: The number of records read. *
+ * *
+ ******************************************************************************/
+static int proxy_get_history_data(zbx_uint64_t lastid, zbx_history_data_t **data, size_t *data_alloc,
+ char **string_buffer, size_t *string_buffer_alloc, int *more)
+{
+ DB_RESULT result;
+ DB_ROW row;
+ char *sql = NULL;
+ size_t sql_alloc = 0, sql_offset = 0, data_num = 0;
+ size_t string_buffer_offset = 0;
+ zbx_uint64_t id;
+ int retries = 1, total_retries = 10;
+ struct timespec t_sleep = { 0, 100000000L }, t_rem;
+ zbx_history_data_t *hd;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() lastid:" ZBX_FS_UI64, __func__, lastid);
+
+try_again:
+ zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset,
+ "select id,itemid,clock,ns,timestamp,source,severity,"
+ "value,logeventid,state,lastlogsize,mtime,flags"
+ " from proxy_history"
+ " where id>" ZBX_FS_UI64
+ " order by id",
+ lastid);
+
+ result = DBselectN(sql, ZBX_MAX_HRECORDS - data_num);
+
+ zbx_free(sql);
+
+ while (NULL != (row = DBfetch(result)))
+ {
+ ZBX_STR2UINT64(id, row[0]);
+
+ if (1 < id - lastid)
+ {
+ /* At least one record is missing. It can happen if some DB syncer process has */
+ /* started but not yet committed a transaction or a rollback occurred in a DB syncer. */
+ if (0 < retries--)
+ {
+ /* limit the number of total retries to avoid being stuck */
+ /* in history full of 'holes' for a long time */
+ if (0 >= total_retries--)
+ break;
+
+ DBfree_result(result);
+ zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing."
+ " Waiting " ZBX_FS_DBL " sec, retrying.",
+ __func__, id - lastid - 1,
+ t_sleep.tv_sec + t_sleep.tv_nsec / 1e9);
+ nanosleep(&t_sleep, &t_rem);
+ goto try_again;
+ }
+ else
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "%s() " ZBX_FS_UI64 " record(s) missing. No more retries.",
+ __func__, id - lastid - 1);
+ }
+ }
+
+ retries = 1;
+
+ if (*data_alloc == data_num)
+ {
+ *data_alloc *= 2;
+ *data = (zbx_history_data_t *)zbx_realloc(*data, sizeof(zbx_history_data_t) * *data_alloc);
+ }
+
+ hd = *data + data_num++;
+ hd->id = id;
+ ZBX_STR2UINT64(hd->itemid, row[1]);
+ ZBX_STR2UCHAR(hd->flags, row[12]);
+ hd->clock = atoi(row[2]);
+ hd->ns = atoi(row[3]);
+
+ if (PROXY_HISTORY_FLAG_NOVALUE != (hd->flags & PROXY_HISTORY_MASK_NOVALUE))
+ {
+ ZBX_STR2UCHAR(hd->state, row[9]);
+
+ if (0 == (hd->flags & PROXY_HISTORY_FLAG_NOVALUE))
+ {
+ size_t len1, len2;
+
+ hd->timestamp = atoi(row[4]);
+ hd->severity = atoi(row[6]);
+ hd->logeventid = atoi(row[8]);
+
+ len1 = strlen(row[5]) + 1;
+ len2 = strlen(row[7]) + 1;
+
+ if (*string_buffer_alloc < string_buffer_offset + len1 + len2)
+ {
+ while (*string_buffer_alloc < string_buffer_offset + len1 + len2)
+ *string_buffer_alloc += ZBX_KIBIBYTE;
+
+ *string_buffer = (char *)zbx_realloc(*string_buffer, *string_buffer_alloc);
+ }
+
+ hd->source_offset = string_buffer_offset;
+ memcpy(*string_buffer + hd->source_offset, row[5], len1);
+ string_buffer_offset += len1;
+
+ hd->value_offset = string_buffer_offset;
+ memcpy(*string_buffer + hd->value_offset, row[7], len2);
+ string_buffer_offset += len2;
+ }
+
+ if (0 != (hd->flags & PROXY_HISTORY_FLAG_META))
+ {
+ ZBX_STR2UINT64(hd->lastlogsize, row[10]);
+ hd->mtime = atoi(row[11]);
+ }
+ }
+
+ lastid = id;
+ }
+ DBfree_result(result);
+
+ if (ZBX_MAX_HRECORDS != data_num && 1 == retries)
+ *more = ZBX_PROXY_DATA_DONE;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s() data_num:" ZBX_FS_SIZE_T, __func__, data_num);
+
+ return data_num;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: add history records to output json *
+ * *
+ * Parameters: j - [IN] the json output buffer *
+ * records_num - [IN] the total number of records added *
+ * dc_items - [IN] the item configuration data *
+ * errcodes - [IN] the item configuration status codes *
+ * records - [IN] the records to add *
+ * string_buffer - [IN] the string buffer holding string values *
+ * lastid - [OUT] the id of last added record *
+ * *
+ * Return value: The total number of records added. *
+ * *
+ ******************************************************************************/
+static int proxy_add_hist_data(struct zbx_json *j, int records_num, const DC_ITEM *dc_items, const int *errcodes,
+ const zbx_vector_ptr_t *records, const char *string_buffer, zbx_uint64_t *lastid)
+{
+ int i;
+ const zbx_history_data_t *hd;
+
+ for (i = records->values_num - 1; i >= 0; i--)
+ {
+ hd = (const zbx_history_data_t *)records->values[i];
+ *lastid = hd->id;
+
+ if (SUCCEED != errcodes[i])
+ continue;
+
+ if (ITEM_STATUS_ACTIVE != dc_items[i].status)
+ continue;
+
+ if (HOST_STATUS_MONITORED != dc_items[i].host.status)
+ continue;
+
+ if (PROXY_HISTORY_FLAG_NOVALUE == (hd->flags & PROXY_HISTORY_MASK_NOVALUE))
+ {
+ if (SUCCEED != zbx_is_counted_in_item_queue(dc_items[i].type, dc_items[i].key_orig))
+ continue;
+ }
+
+ if (0 == records_num)
+ zbx_json_addarray(j, ZBX_PROTO_TAG_HISTORY_DATA);
+
+ zbx_json_addobject(j, NULL);
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_ID, hd->id);
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_ITEMID, hd->itemid);
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_CLOCK, hd->clock);
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_NS, hd->ns);
+
+ if (PROXY_HISTORY_FLAG_NOVALUE != (hd->flags & PROXY_HISTORY_MASK_NOVALUE))
+ {
+ if (ITEM_STATE_NORMAL != hd->state)
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_STATE, hd->state);
+
+ if (0 == (hd->flags & PROXY_HISTORY_FLAG_NOVALUE))
+ {
+ if (0 != hd->timestamp)
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_LOGTIMESTAMP, hd->timestamp);
+
+ if ('\0' != string_buffer[hd->source_offset])
+ {
+ zbx_json_addstring(j, ZBX_PROTO_TAG_LOGSOURCE,
+ string_buffer + hd->source_offset, ZBX_JSON_TYPE_STRING);
+ }
+
+ if (0 != hd->severity)
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_LOGSEVERITY, hd->severity);
+
+ if (0 != hd->logeventid)
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_LOGEVENTID, hd->logeventid);
+
+ zbx_json_addstring(j, ZBX_PROTO_TAG_VALUE, string_buffer + hd->value_offset,
+ ZBX_JSON_TYPE_STRING);
+ }
+
+ if (0 != (hd->flags & PROXY_HISTORY_FLAG_META))
+ {
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_LASTLOGSIZE, hd->lastlogsize);
+ zbx_json_adduint64(j, ZBX_PROTO_TAG_MTIME, hd->mtime);
+ }
+ }
+
+ zbx_json_close(j);
+ records_num++;
+
+ /* stop gathering data to avoid exceeding the maximum packet size */
+ if (ZBX_DATA_JSON_RECORD_LIMIT < j->buffer_offset)
+ break;
+ }
+
+ return records_num;
+}
+
+int proxy_get_hist_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more)
+{
+ int records_num = 0, data_num, i, *errcodes = NULL, items_alloc = 0;
+ zbx_uint64_t id;
+ zbx_hashset_t itemids_added;
+ zbx_history_data_t *data;
+ char *string_buffer;
+ size_t data_alloc = 16, string_buffer_alloc = ZBX_KIBIBYTE;
+ zbx_vector_uint64_t itemids;
+ zbx_vector_ptr_t records;
+ DC_ITEM *dc_items = 0;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ zbx_vector_uint64_create(&itemids);
+ zbx_vector_ptr_create(&records);
+ data = (zbx_history_data_t *)zbx_malloc(NULL, data_alloc * sizeof(zbx_history_data_t));
+ string_buffer = (char *)zbx_malloc(NULL, string_buffer_alloc);
+
+ *more = ZBX_PROXY_DATA_MORE;
+ proxy_get_lastid("proxy_history", "history_lastid", &id);
+
+ zbx_hashset_create(&itemids_added, data_alloc, ZBX_DEFAULT_UINT64_HASH_FUNC, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+
+ /* get history data in batches by ZBX_MAX_HRECORDS records and stop if: */
+ /* 1) there are no more data to read */
+ /* 2) we have retrieved more than the total maximum number of records */
+ /* 3) we have gathered more than half of the maximum packet size */
+ while (ZBX_DATA_JSON_BATCH_LIMIT > j->buffer_offset && ZBX_MAX_HRECORDS_TOTAL > records_num &&
+ 0 != (data_num = proxy_get_history_data(id, &data, &data_alloc, &string_buffer,
+ &string_buffer_alloc, more)))
+ {
+ zbx_vector_uint64_reserve(&itemids, data_num);
+ zbx_vector_ptr_reserve(&records, data_num);
+
+ /* filter out duplicate novalue updates */
+ for (i = data_num - 1; i >= 0; i--)
+ {
+ if (PROXY_HISTORY_FLAG_NOVALUE == (data[i].flags & PROXY_HISTORY_MASK_NOVALUE))
+ {
+ if (NULL != zbx_hashset_search(&itemids_added, &data[i].itemid))
+ continue;
+
+ zbx_hashset_insert(&itemids_added, &data[i].itemid, sizeof(data[i].itemid));
+ }
+
+ zbx_vector_ptr_append(&records, &data[i]);
+ zbx_vector_uint64_append(&itemids, data[i].itemid);
+ }
+
+ /* append history records to json */
+
+ if (itemids.values_num > items_alloc)
+ {
+ items_alloc = itemids.values_num;
+ dc_items = (DC_ITEM *)zbx_realloc(dc_items, items_alloc * sizeof(DC_ITEM));
+ errcodes = (int *)zbx_realloc(errcodes, items_alloc * sizeof(int));
+ }
+
+ DCconfig_get_items_by_itemids(dc_items, itemids.values, errcodes, itemids.values_num);
+
+ records_num = proxy_add_hist_data(j, records_num, dc_items, errcodes, &records, string_buffer, lastid);
+ DCconfig_clean_items(dc_items, errcodes, itemids.values_num);
+
+ /* got less data than requested - either no more data to read or the history is full of */
+ /* holes. In this case send retrieved data before attempting to read/wait for more data */
+ if (ZBX_MAX_HRECORDS > data_num)
+ break;
+
+ zbx_vector_uint64_clear(&itemids);
+ zbx_vector_ptr_clear(&records);
+ zbx_hashset_clear(&itemids_added);
+ id = *lastid;
+ }
+
+ if (0 != records_num)
+ zbx_json_close(j);
+
+ zbx_hashset_destroy(&itemids_added);
+
+ zbx_free(dc_items);
+ zbx_free(errcodes);
+ zbx_free(data);
+ zbx_free(string_buffer);
+ zbx_vector_ptr_destroy(&records);
+ zbx_vector_uint64_destroy(&itemids);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s() lastid:" ZBX_FS_UI64 " records_num:%d size:~" ZBX_FS_SIZE_T " more:%d",
+ __func__, *lastid, records_num, j->buffer_offset, *more);
+
+ return records_num;
+}
+
+int proxy_get_dhis_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more)
+{
+ int records_num = 0;
+ zbx_uint64_t id;
+
+ proxy_get_lastid(dht.table, dht.lastidfield, &id);
+
+ /* get history data in batches by ZBX_MAX_HRECORDS records and stop if: */
+ /* 1) there are no more data to read */
+ /* 2) we have retrieved more than the total maximum number of records */
+ /* 3) we have gathered more than half of the maximum packet size */
+ while (ZBX_DATA_JSON_BATCH_LIMIT > j->buffer_offset)
+ {
+ proxy_get_history_data_simple(j, ZBX_PROTO_TAG_DISCOVERY_DATA, &dht, lastid, &id, &records_num, more);
+
+ if (ZBX_PROXY_DATA_DONE == *more || ZBX_MAX_HRECORDS_TOTAL <= records_num)
+ break;
+ }
+
+ if (0 != records_num)
+ zbx_json_close(j);
+
+ return records_num;
+}
+
+int proxy_get_areg_data(struct zbx_json *j, zbx_uint64_t *lastid, int *more)
+{
+ int records_num = 0;
+ zbx_uint64_t id;
+
+ proxy_get_lastid(areg.table, areg.lastidfield, &id);
+
+ /* get history data in batches by ZBX_MAX_HRECORDS records and stop if: */
+ /* 1) there are no more data to read */
+ /* 2) we have retrieved more than the total maximum number of records */
+ /* 3) we have gathered more than half of the maximum packet size */
+ while (ZBX_DATA_JSON_BATCH_LIMIT > j->buffer_offset)
+ {
+ proxy_get_history_data_simple(j, ZBX_PROTO_TAG_AUTOREGISTRATION, &areg, lastid, &id, &records_num,
+ more);
+
+ if (ZBX_PROXY_DATA_DONE == *more || ZBX_MAX_HRECORDS_TOTAL <= records_num)
+ break;
+ }
+
+ if (0 != records_num)
+ zbx_json_close(j);
+
+ return records_num;
+}
+
+int proxy_get_host_active_availability(struct zbx_json *j)
+{
+ zbx_ipc_message_t response;
+ int records_num = 0;
+
+ zbx_ipc_message_init(&response);
+ zbx_availability_send(ZBX_IPC_AVAILMAN_ACTIVE_HOSTDATA, 0, 0, &response);
+
+ if (0 != response.size)
+ {
+ zbx_vector_proxy_hostdata_ptr_t hostdata;
+
+ zbx_vector_proxy_hostdata_ptr_create(&hostdata);
+ zbx_availability_deserialize_hostdata(response.data, &hostdata);
+ zbx_availability_serialize_json_hostdata(&hostdata, j);
+
+ records_num = hostdata.values_num;
+
+ zbx_vector_proxy_hostdata_ptr_clear_ext(&hostdata, (zbx_proxy_hostdata_ptr_free_func_t)zbx_ptr_free);
+ zbx_vector_proxy_hostdata_ptr_destroy(&hostdata);
+ }
+
+ zbx_ipc_message_clean(&response);
+
+ return records_num;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: processes item value depending on proxy/flags settings *
+ * *
+ * Parameters: item - [IN] the item to process *
+ * result - [IN] the item result *
+ * *
+ * Comments: Values gathered by server are sent to the preprocessing manager, *
+ * while values received from proxy are already preprocessed and *
+ * must be either directly stored to history cache or sent to lld *
+ * manager. *
+ * *
+ ******************************************************************************/
+static void process_item_value(const DC_ITEM *item, AGENT_RESULT *result, zbx_timespec_t *ts, int *h_num,
+ char *error)
+{
+ if (0 == item->host.proxy_hostid)
+ {
+ zbx_preprocess_item_value(item->itemid, item->host.hostid, item->value_type, item->flags, result, ts,
+ item->state, error);
+ *h_num = 0;
+ }
+ else
+ {
+ if (0 != (ZBX_FLAG_DISCOVERY_RULE & item->flags))
+ {
+ zbx_lld_process_agent_result(item->itemid, item->host.hostid, result, ts, error);
+ *h_num = 0;
+ }
+ else
+ {
+ dc_add_history(item->itemid, item->value_type, item->flags, result, ts, item->state, error);
+ *h_num = 1;
+ }
+ }
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process single value from incoming history data *
+ * *
+ * Parameters: item - [IN] the item to process *
+ * value - [IN] the value to process *
+ * hval - [OUT] indication that value was added to history *
+ * *
+ * Return value: SUCCEED - the value was processed successfully *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int process_history_data_value(DC_ITEM *item, zbx_agent_value_t *value, int *h_num)
+{
+ if (ITEM_STATUS_ACTIVE != item->status)
+ return FAIL;
+
+ if (HOST_STATUS_MONITORED != item->host.status)
+ return FAIL;
+
+ /* update item nextcheck during maintenance */
+ if (SUCCEED == in_maintenance_without_data_collection(item->host.maintenance_status,
+ item->host.maintenance_type, item->type) &&
+ item->host.maintenance_from <= value->ts.sec)
+ {
+ return SUCCEED;
+ }
+
+ if (NULL == value->value && ITEM_STATE_NOTSUPPORTED == value->state)
+ {
+ THIS_SHOULD_NEVER_HAPPEN;
+ return FAIL;
+ }
+
+ if (ITEM_STATE_NOTSUPPORTED == value->state ||
+ (NULL != value->value && 0 == strcmp(value->value, ZBX_NOTSUPPORTED)))
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "item [%s:%s] error: %s", item->host.host, item->key_orig, value->value);
+
+ item->state = ITEM_STATE_NOTSUPPORTED;
+ process_item_value(item, NULL, &value->ts, h_num, value->value);
+ }
+ else
+ {
+ AGENT_RESULT result;
+
+ zbx_init_agent_result(&result);
+
+ if (NULL != value->value)
+ {
+ if (ITEM_VALUE_TYPE_LOG == item->value_type)
+ {
+ zbx_log_t *log;
+
+ log = (zbx_log_t *)zbx_malloc(NULL, sizeof(zbx_log_t));
+ log->value = zbx_strdup(NULL, value->value);
+ zbx_replace_invalid_utf8(log->value);
+
+ if (0 == value->timestamp)
+ {
+ log->timestamp = 0;
+ calc_timestamp(log->value, &log->timestamp, item->logtimefmt);
+ }
+ else
+ log->timestamp = value->timestamp;
+
+ log->logeventid = value->logeventid;
+ log->severity = value->severity;
+
+ if (NULL != value->source)
+ {
+ log->source = zbx_strdup(NULL, value->source);
+ zbx_replace_invalid_utf8(log->source);
+ }
+ else
+ log->source = NULL;
+
+ SET_LOG_RESULT(&result, log);
+ }
+ else
+ zbx_set_agent_result_type(&result, ITEM_VALUE_TYPE_TEXT, value->value);
+ }
+
+ if (0 != value->meta)
+ zbx_set_agent_result_meta(&result, value->lastlogsize, value->mtime);
+
+ if (0 != ZBX_ISSET_VALUE(&result) || 0 != ZBX_ISSET_META(&result))
+ {
+ item->state = ITEM_STATE_NORMAL;
+ process_item_value(item, &result, &value->ts, h_num, NULL);
+ }
+
+ zbx_free_agent_result(&result);
+ }
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process new item values *
+ * *
+ * Parameters: items - [IN] the items to process *
+ * values - [IN] the item values value to process *
+ * errcodes - [IN/OUT] in - item configuration error code *
+ * (FAIL - item/host was not found) *
+ * out - value processing result *
+ * (SUCCEED - processed, FAIL - error) *
+ * values_num - [IN] the number of items/values to process *
+ * nodata_win - [IN/OUT] proxy communication delay info *
+ * *
+ * Return value: the number of processed values *
+ * *
+ ******************************************************************************/
+int process_history_data(DC_ITEM *items, zbx_agent_value_t *values, int *errcodes, size_t values_num,
+ zbx_proxy_suppress_t *nodata_win)
+{
+ size_t i;
+ int processed_num = 0, history_num;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ for (i = 0; i < values_num; i++)
+ {
+ if (SUCCEED != errcodes[i])
+ continue;
+
+ history_num = 0;
+
+ if (SUCCEED != process_history_data_value(&items[i], &values[i], &history_num))
+ {
+ /* clean failed items to avoid updating their runtime data */
+ DCconfig_clean_items(&items[i], &errcodes[i], 1);
+ errcodes[i] = FAIL;
+ continue;
+ }
+
+ if (0 != items[i].host.proxy_hostid && NULL != nodata_win &&
+ 0 != (nodata_win->flags & ZBX_PROXY_SUPPRESS_ACTIVE) && 0 < history_num)
+ {
+ if (values[i].ts.sec <= nodata_win->period_end)
+ {
+ nodata_win->values_num++;
+ }
+ else
+ {
+ nodata_win->flags &= (~ZBX_PROXY_SUPPRESS_MORE);
+ }
+
+ zabbix_log(LOG_LEVEL_TRACE, "%s() flags:%d values_num:%d value_time:%d period_end:%d",
+ __func__, nodata_win->flags, nodata_win->values_num, values[i].ts.sec,
+ nodata_win->period_end);
+ }
+
+ processed_num++;
+ }
+
+ if (0 < processed_num)
+ zbx_dc_items_update_nextcheck(items, values, errcodes, values_num);
+
+ zbx_preprocessor_flush();
+ dc_flush_history();
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s() processed:%d", __func__, processed_num);
+
+ return processed_num;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: frees resources allocated to store agent values *
+ * *
+ * Parameters: values - [IN] the values to clean *
+ * values_num - [IN] the number of items in values array *
+ * *
+ ******************************************************************************/
+static void zbx_agent_values_clean(zbx_agent_value_t *values, size_t values_num)
+{
+ size_t i;
+
+ for (i = 0; i < values_num; i++)
+ {
+ zbx_free(values[i].value);
+ zbx_free(values[i].source);
+ }
+}
+
+/******************************************************************************
+ * *
+ * Purpose: calculates difference between server and client (proxy, active *
+ * agent or sender) time and log it *
+ * *
+ * Parameters: level - [IN] log level *
+ * jp - [IN] JSON with clock, [ns] fields *
+ * ts_recv - [IN] the connection timestamp *
+ * *
+ ******************************************************************************/
+static void log_client_timediff(int level, struct zbx_json_parse *jp, const zbx_timespec_t *ts_recv)
+{
+ char tmp[32];
+ zbx_timespec_t client_timediff;
+ int sec, ns;
+
+ if (SUCCEED != ZBX_CHECK_LOG_LEVEL(level))
+ return;
+
+ if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_CLOCK, tmp, sizeof(tmp), NULL))
+ {
+ sec = atoi(tmp);
+ client_timediff.sec = ts_recv->sec - sec;
+
+ if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_NS, tmp, sizeof(tmp), NULL))
+ {
+ ns = atoi(tmp);
+ client_timediff.ns = ts_recv->ns - ns;
+
+ if (client_timediff.sec > 0 && client_timediff.ns < 0)
+ {
+ client_timediff.sec--;
+ client_timediff.ns += 1000000000;
+ }
+ else if (client_timediff.sec < 0 && client_timediff.ns > 0)
+ {
+ client_timediff.sec++;
+ client_timediff.ns -= 1000000000;
+ }
+
+ zabbix_log(level, "%s(): timestamp from json %d seconds and %d nanosecond, "
+ "delta time from json %d seconds and %d nanosecond",
+ __func__, sec, ns, client_timediff.sec, client_timediff.ns);
+ }
+ else
+ {
+ zabbix_log(level, "%s(): timestamp from json %d seconds, "
+ "delta time from json %d seconds", __func__, sec, client_timediff.sec);
+ }
+ }
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parses agent value from history data json row *
+ * *
+ * Parameters: jp_row - [IN] JSON with history data row *
+ * unique_shift - [IN/OUT] auto increment nanoseconds to ensure *
+ * unique value of timestamps *
+ * av - [OUT] the agent value *
+ * *
+ * Return value: SUCCEED - the value was parsed successfully *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int parse_history_data_row_value(const struct zbx_json_parse *jp_row, zbx_timespec_t *unique_shift,
+ zbx_agent_value_t *av)
+{
+ char *tmp = NULL;
+ size_t tmp_alloc = 0;
+ int ret = FAIL;
+
+ memset(av, 0, sizeof(zbx_agent_value_t));
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_CLOCK, &tmp, &tmp_alloc, NULL))
+ {
+ if (FAIL == zbx_is_uint31(tmp, &av->ts.sec))
+ goto out;
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_NS, &tmp, &tmp_alloc, NULL))
+ {
+ if (FAIL == zbx_is_uint_n_range(tmp, tmp_alloc, &av->ts.ns, sizeof(av->ts.ns),
+ 0LL, 999999999LL))
+ {
+ goto out;
+ }
+ }
+ else
+ {
+ /* ensure unique value timestamp (clock, ns) if only clock is available */
+
+ av->ts.sec += unique_shift->sec;
+ av->ts.ns = unique_shift->ns++;
+
+ if (unique_shift->ns > 999999999)
+ {
+ unique_shift->sec++;
+ unique_shift->ns = 0;
+ }
+ }
+ }
+ else
+ zbx_timespec(&av->ts);
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_STATE, &tmp, &tmp_alloc, NULL))
+ av->state = (unsigned char)atoi(tmp);
+
+ /* Unsupported item meta information must be ignored for backwards compatibility. */
+ /* New agents will not send meta information for items in unsupported state. */
+ if (ITEM_STATE_NOTSUPPORTED != av->state)
+ {
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LASTLOGSIZE, &tmp, &tmp_alloc, NULL))
+ {
+ av->meta = 1; /* contains meta information */
+
+ zbx_is_uint64(tmp, &av->lastlogsize);
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_MTIME, &tmp, &tmp_alloc, NULL))
+ av->mtime = atoi(tmp);
+ }
+ }
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_VALUE, &tmp, &tmp_alloc, NULL))
+ av->value = zbx_strdup(av->value, tmp);
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGTIMESTAMP, &tmp, &tmp_alloc, NULL))
+ av->timestamp = atoi(tmp);
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGSOURCE, &tmp, &tmp_alloc, NULL))
+ av->source = zbx_strdup(av->source, tmp);
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGSEVERITY, &tmp, &tmp_alloc, NULL))
+ av->severity = atoi(tmp);
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_LOGEVENTID, &tmp, &tmp_alloc, NULL))
+ av->logeventid = atoi(tmp);
+
+ if (SUCCEED != zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_ID, &tmp, &tmp_alloc, NULL) ||
+ SUCCEED != zbx_is_uint64(tmp, &av->id))
+ {
+ av->id = 0;
+ }
+
+ zbx_free(tmp);
+
+ ret = SUCCEED;
+out:
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parses item identifier from history data json row *
+ * *
+ * Parameters: jp_row - [IN] JSON with history data row *
+ * itemid - [OUT] the item identifier *
+ * *
+ * Return value: SUCCEED - the item identifier was parsed successfully *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int parse_history_data_row_itemid(const struct zbx_json_parse *jp_row, zbx_uint64_t *itemid)
+{
+ char buffer[MAX_ID_LEN + 1];
+
+ if (SUCCEED != zbx_json_value_by_name(jp_row, ZBX_PROTO_TAG_ITEMID, buffer, sizeof(buffer), NULL))
+ return FAIL;
+
+ if (SUCCEED != zbx_is_uint64(buffer, itemid))
+ return FAIL;
+
+ return SUCCEED;
+}
+/******************************************************************************
+ * *
+ * Purpose: parses host,key pair from history data json row *
+ * *
+ * Parameters: jp_row - [IN] JSON with history data row *
+ * hk - [OUT] the host,key pair *
+ * *
+ * Return value: SUCCEED - the host,key pair was parsed successfully *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int parse_history_data_row_hostkey(const struct zbx_json_parse *jp_row, zbx_host_key_t *hk)
+{
+ size_t str_alloc;
+
+ str_alloc = 0;
+ zbx_free(hk->host);
+
+ if (SUCCEED != zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_HOST, &hk->host, &str_alloc, NULL))
+ return FAIL;
+
+ str_alloc = 0;
+ zbx_free(hk->key);
+
+ if (SUCCEED != zbx_json_value_by_name_dyn(jp_row, ZBX_PROTO_TAG_KEY, &hk->key, &str_alloc, NULL))
+ {
+ zbx_free(hk->host);
+ return FAIL;
+ }
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parses up to ZBX_HISTORY_VALUES_MAX item values and host,key *
+ * pairs from history data json *
+ * *
+ * Parameters: jp_data - [IN] JSON with history data array *
+ * pnext - [IN/OUT] the pointer to the next item in json, *
+ * NULL - no more data left *
+ * values - [OUT] the item values *
+ * hostkeys - [OUT] the corresponding host,key pairs *
+ * values_num - [OUT] number of elements in values and hostkeys *
+ * arrays *
+ * parsed_num - [OUT] the number of values parsed *
+ * unique_shift - [IN/OUT] auto increment nanoseconds to ensure *
+ * unique value of timestamps *
+ * *
+ * Return value: SUCCEED - values were parsed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+static int parse_history_data(struct zbx_json_parse *jp_data, const char **pnext, zbx_agent_value_t *values,
+ zbx_host_key_t *hostkeys, int *values_num, int *parsed_num, zbx_timespec_t *unique_shift)
+{
+ struct zbx_json_parse jp_row;
+ int ret = FAIL;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ *values_num = 0;
+ *parsed_num = 0;
+
+ if (NULL == *pnext)
+ {
+ if (NULL == (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX)
+ {
+ ret = SUCCEED;
+ goto out;
+ }
+ }
+
+ /* iterate the history data rows */
+ do
+ {
+ if (FAIL == zbx_json_brackets_open(*pnext, &jp_row))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s", zbx_json_strerror());
+ goto out;
+ }
+
+ (*parsed_num)++;
+
+ if (SUCCEED != parse_history_data_row_hostkey(&jp_row, &hostkeys[*values_num]))
+ continue;
+
+ if (SUCCEED != parse_history_data_row_value(&jp_row, unique_shift, &values[*values_num]))
+ continue;
+
+ (*values_num)++;
+ }
+ while (NULL != (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX);
+
+ ret = SUCCEED;
+out:
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s processed:%d/%d", __func__, zbx_result_string(ret),
+ *values_num, *parsed_num);
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parses up to ZBX_HISTORY_VALUES_MAX item values and item *
+ * identifiers from history data json *
+ * *
+ * Parameters: jp_data - [IN] JSON with history data array *
+ * pnext - [IN/OUT] the pointer to the next item in *
+ * json, NULL - no more data left *
+ * values - [OUT] the item values *
+ * itemids - [OUT] the corresponding item identifiers *
+ * values_num - [OUT] number of elements in values and itemids *
+ * arrays *
+ * parsed_num - [OUT] the number of values parsed *
+ * unique_shift - [IN/OUT] auto increment nanoseconds to ensure *
+ * unique value of timestamps *
+ * info - [OUT] address of a pointer to the info string *
+ * (should be freed by the caller) *
+ * *
+ * Return value: SUCCEED - values were parsed successfully *
+ * FAIL - an error occurred *
+ * *
+ * Comments: This function is used to parse the new proxy history data *
+ * protocol introduced in Zabbix v3.3. *
+ * *
+ ******************************************************************************/
+static int parse_history_data_by_itemids(struct zbx_json_parse *jp_data, const char **pnext,
+ zbx_agent_value_t *values, zbx_uint64_t *itemids, int *values_num, int *parsed_num,
+ zbx_timespec_t *unique_shift, char **error)
+{
+ struct zbx_json_parse jp_row;
+ int ret = FAIL;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ *values_num = 0;
+ *parsed_num = 0;
+
+ if (NULL == *pnext)
+ {
+ if (NULL == (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX)
+ {
+ ret = SUCCEED;
+ goto out;
+ }
+ }
+
+ /* iterate the history data rows */
+ do
+ {
+ if (FAIL == zbx_json_brackets_open(*pnext, &jp_row))
+ {
+ *error = zbx_strdup(*error, zbx_json_strerror());
+ goto out;
+ }
+
+ (*parsed_num)++;
+
+ if (SUCCEED != parse_history_data_row_itemid(&jp_row, &itemids[*values_num]))
+ continue;
+
+ if (SUCCEED != parse_history_data_row_value(&jp_row, unique_shift, &values[*values_num]))
+ continue;
+
+ (*values_num)++;
+ }
+ while (NULL != (*pnext = zbx_json_next(jp_data, *pnext)) && *values_num < ZBX_HISTORY_VALUES_MAX);
+
+ ret = SUCCEED;
+out:
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s processed:%d/%d", __func__, zbx_result_string(ret),
+ *values_num, *parsed_num);
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: validates item received from proxy *
+ * *
+ * Parameters: item - [IN/OUT] the item data *
+ * sock - [IN] the connection socket *
+ * args - [IN] the validator arguments *
+ * error - unused *
+ * *
+ * Return value: SUCCEED - the validation was successful *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int proxy_item_validator(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error)
+{
+ zbx_uint64_t *proxyid = (zbx_uint64_t *)args;
+
+ ZBX_UNUSED(sock);
+ ZBX_UNUSED(error);
+
+ /* don't process item if its host was assigned to another proxy */
+ if (item->host.proxy_hostid != *proxyid)
+ return FAIL;
+
+ /* don't process aggregate/calculated items coming from proxy */
+ if (ITEM_TYPE_CALCULATED == item->type)
+ return FAIL;
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parses history data array and process the data *
+ * *
+ * *
+ * Parameters: sock - [IN] socket for host permission validation *
+ * validator_func - [IN] function to validate item permission *
+ * validator_args - [IN] validator function arguments *
+ * jp_data - [IN] JSON with history data array *
+ * session - [IN] the data session *
+ * nodata_win - [OUT] counter of delayed values *
+ * info - [OUT] address of a pointer to the info *
+ * string (should be freed by the caller) *
+ * mode - [IN] item retrieve mode is used to retrieve *
+ * only necessary data to reduce time *
+ * spent holding read lock *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ * Comments: This function is used to parse the new proxy history data *
+ * protocol introduced in Zabbix v3.3. *
+ * *
+ ******************************************************************************/
+static int process_history_data_by_itemids(zbx_socket_t *sock, zbx_client_item_validator_t validator_func,
+ void *validator_args, struct zbx_json_parse *jp_data, zbx_session_t *session,
+ zbx_proxy_suppress_t *nodata_win, char **info, unsigned int mode)
+{
+ const char *pnext = NULL;
+ int ret = SUCCEED, processed_num = 0, total_num = 0, values_num, read_num, i, *errcodes;
+ double sec;
+ DC_ITEM *items;
+ char *error = NULL;
+ zbx_uint64_t itemids[ZBX_HISTORY_VALUES_MAX], last_valueid = 0;
+ zbx_agent_value_t values[ZBX_HISTORY_VALUES_MAX];
+ zbx_timespec_t unique_shift = {0, 0};
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ items = (DC_ITEM *)zbx_malloc(NULL, sizeof(DC_ITEM) * ZBX_HISTORY_VALUES_MAX);
+ errcodes = (int *)zbx_malloc(NULL, sizeof(int) * ZBX_HISTORY_VALUES_MAX);
+
+ sec = zbx_time();
+
+ while (SUCCEED == parse_history_data_by_itemids(jp_data, &pnext, values, itemids, &values_num, &read_num,
+ &unique_shift, &error) && 0 != values_num)
+ {
+ DCconfig_get_items_by_itemids_partial(items, itemids, errcodes, values_num, mode);
+
+ for (i = 0; i < values_num; i++)
+ {
+ if (SUCCEED != errcodes[i])
+ continue;
+
+ /* check and discard if duplicate data */
+ if (NULL != session && 0 != values[i].id && values[i].id <= session->last_id)
+ {
+ DCconfig_clean_items(&items[i], &errcodes[i], 1);
+ errcodes[i] = FAIL;
+ continue;
+ }
+
+ if (SUCCEED != validator_func(&items[i], sock, validator_args, &error))
+ {
+ if (NULL != error)
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s", error);
+ zbx_free(error);
+ }
+
+ DCconfig_clean_items(&items[i], &errcodes[i], 1);
+ errcodes[i] = FAIL;
+ }
+ }
+
+ processed_num += process_history_data(items, values, errcodes, values_num, nodata_win);
+
+ total_num += read_num;
+
+ last_valueid = values[values_num - 1].id;
+
+ DCconfig_clean_items(items, errcodes, values_num);
+ zbx_agent_values_clean(values, values_num);
+
+ if (NULL == pnext)
+ break;
+ }
+
+ if (NULL != session && 0 != last_valueid)
+ {
+ if (session->last_id > last_valueid)
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "received id:" ZBX_FS_UI64 " is less than last id:"
+ ZBX_FS_UI64, last_valueid, session->last_id);
+ }
+ else
+ session->last_id = last_valueid;
+ }
+
+ zbx_free(errcodes);
+ zbx_free(items);
+
+ if (NULL == error)
+ {
+ ret = SUCCEED;
+ *info = zbx_dsprintf(*info, "processed: %d; failed: %d; total: %d; seconds spent: " ZBX_FS_DBL,
+ processed_num, total_num - processed_num, total_num, zbx_time() - sec);
+ }
+ else
+ {
+ zbx_free(*info);
+ *info = error;
+ }
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: validates item received from active agent *
+ * *
+ * Parameters: item - [IN] the item data *
+ * sock - [IN] the connection socket *
+ * args - [IN] the validator arguments *
+ * error - [OUT] the error message *
+ * *
+ * Return value: SUCCEED - the validation was successful *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int agent_item_validator(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error)
+{
+ zbx_host_rights_t *rights = (zbx_host_rights_t *)args;
+
+ if (0 != item->host.proxy_hostid)
+ return FAIL;
+
+ if (ITEM_TYPE_ZABBIX_ACTIVE != item->type)
+ return FAIL;
+
+ if (rights->hostid != item->host.hostid)
+ {
+ rights->hostid = item->host.hostid;
+ rights->value = zbx_host_check_permissions(&item->host, sock, error);
+ }
+
+ return rights->value;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: validates item received from sender *
+ * *
+ * Parameters: item - [IN] the item data *
+ * sock - [IN] the connection socket *
+ * args - [IN] the validator arguments *
+ * error - [OUT] the error message *
+ * *
+ * Return value: SUCCEED - the validation was successful *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int sender_item_validator(DC_ITEM *item, zbx_socket_t *sock, void *args, char **error)
+{
+ zbx_host_rights_t *rights;
+ char key_short[VALUE_ERRMSG_MAX * ZBX_MAX_BYTES_IN_UTF8_CHAR + 1];
+
+ if (0 != item->host.proxy_hostid)
+ return FAIL;
+
+ switch(item->type)
+ {
+ case ITEM_TYPE_HTTPAGENT:
+ if (0 == item->allow_traps)
+ {
+ *error = zbx_dsprintf(*error, "cannot process HTTP agent item \"%s\" trap:"
+ " trapping is not enabled", zbx_truncate_itemkey(item->key_orig,
+ VALUE_ERRMSG_MAX, key_short, sizeof(key_short)));
+ return FAIL;
+ }
+ break;
+ case ITEM_TYPE_TRAPPER:
+ break;
+ default:
+ *error = zbx_dsprintf(*error, "cannot process item \"%s\" trap:"
+ " item type \"%d\" cannot be used with traps",
+ zbx_truncate_itemkey(item->key_orig, VALUE_ERRMSG_MAX, key_short,
+ sizeof(key_short)), item->type);
+ return FAIL;
+ }
+
+ if ('\0' != *item->trapper_hosts) /* list of allowed hosts not empty */
+ {
+ char *allowed_peers;
+ int ret;
+
+ allowed_peers = zbx_strdup(NULL, item->trapper_hosts);
+ zbx_substitute_simple_macros(NULL, NULL, NULL, NULL, NULL, NULL, item, NULL, NULL, NULL, NULL, NULL,
+ &allowed_peers, MACRO_TYPE_ALLOWED_HOSTS, NULL, 0);
+ ret = zbx_tcp_check_allowed_peers(sock, allowed_peers);
+ zbx_free(allowed_peers);
+
+ if (FAIL == ret)
+ {
+ *error = zbx_dsprintf(*error, "cannot process item \"%s\" trap: %s",
+ zbx_truncate_itemkey(item->key_orig, VALUE_ERRMSG_MAX, key_short,
+ sizeof(key_short)), zbx_socket_strerror());
+ return FAIL;
+ }
+ }
+
+ rights = (zbx_host_rights_t *)args;
+
+ if (rights->hostid != item->host.hostid)
+ {
+ rights->hostid = item->host.hostid;
+ rights->value = zbx_host_check_permissions(&item->host, sock, error);
+ }
+
+ return rights->value;
+}
+
+static void process_history_data_by_keys(zbx_socket_t *sock, zbx_client_item_validator_t validator_func,
+ void *validator_args, char **info, struct zbx_json_parse *jp_data, const char *token)
+{
+ int values_num, read_num, processed_num = 0, total_num = 0, i;
+ zbx_timespec_t unique_shift = {0, 0};
+ const char *pnext = NULL;
+ char *error = NULL;
+ zbx_host_key_t *hostkeys;
+ DC_ITEM *items;
+ zbx_session_t *session = NULL;
+ zbx_uint64_t last_hostid = 0;
+ zbx_agent_value_t values[ZBX_HISTORY_VALUES_MAX];
+ int errcodes[ZBX_HISTORY_VALUES_MAX];
+ double sec;
+
+ sec = zbx_time();
+
+ items = (DC_ITEM *)zbx_malloc(NULL, sizeof(DC_ITEM) * ZBX_HISTORY_VALUES_MAX);
+ hostkeys = (zbx_host_key_t *)zbx_malloc(NULL, sizeof(zbx_host_key_t) * ZBX_HISTORY_VALUES_MAX);
+ memset(hostkeys, 0, sizeof(zbx_host_key_t) * ZBX_HISTORY_VALUES_MAX);
+
+ while (SUCCEED == parse_history_data(jp_data, &pnext, values, hostkeys, &values_num, &read_num,
+ &unique_shift) && 0 != values_num)
+ {
+ DCconfig_get_items_by_keys(items, hostkeys, errcodes, values_num);
+
+ for (i = 0; i < values_num; i++)
+ {
+ if (SUCCEED != errcodes[i])
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "cannot retrieve key \"%s\" on host \"%s\" from "
+ "configuration cache", hostkeys[i].key, hostkeys[i].host);
+ continue;
+ }
+
+ if (last_hostid != items[i].host.hostid)
+ {
+ last_hostid = items[i].host.hostid;
+
+ if (NULL != token)
+ {
+ session = zbx_dc_get_or_create_session(last_hostid, token,
+ ZBX_SESSION_TYPE_DATA);
+ }
+ }
+
+ /* check and discard if duplicate data */
+ if (NULL != session && 0 != values[i].id && values[i].id <= session->last_id)
+ {
+ DCconfig_clean_items(&items[i], &errcodes[i], 1);
+ errcodes[i] = FAIL;
+ continue;
+ }
+
+ if (SUCCEED != validator_func(&items[i], sock, validator_args, &error))
+ {
+ if (NULL != error)
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s", error);
+ zbx_free(error);
+ }
+ else
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "unknown validation error for item \"%s\"",
+ (NULL == items[i].key) ? items[i].key_orig : items[i].key);
+ }
+
+ DCconfig_clean_items(&items[i], &errcodes[i], 1);
+ errcodes[i] = FAIL;
+ }
+
+ if (NULL != session)
+ session->last_id = values[i].id;
+ }
+
+ processed_num += process_history_data(items, values, errcodes, values_num, NULL);
+ total_num += read_num;
+
+ DCconfig_clean_items(items, errcodes, values_num);
+ zbx_agent_values_clean(values, values_num);
+
+ if (NULL == pnext)
+ break;
+ }
+
+ for (i = 0; i < ZBX_HISTORY_VALUES_MAX; i++)
+ {
+ zbx_free(hostkeys[i].host);
+ zbx_free(hostkeys[i].key);
+ }
+
+ zbx_free(hostkeys);
+ zbx_free(items);
+
+ *info = zbx_dsprintf(*info, "processed: %d; failed: %d; total: %d; seconds spent: " ZBX_FS_DBL,
+ processed_num, total_num - processed_num, total_num, zbx_time() - sec);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process history data sent by proxy/agent/sender *
+ * *
+ * Parameters: sock - [IN] the connection socket *
+ * jp - [IN] JSON with historical data *
+ * ts - [IN] the client connection timestamp *
+ * validator_func - [IN] the item validator callback function *
+ * validator_args - [IN] the user arguments passed to validator *
+ * function *
+ * info - [OUT] address of a pointer to the info string *
+ * (should be freed by the caller) *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+static int process_client_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts,
+ zbx_client_item_validator_t validator_func, void *validator_args, char **info)
+{
+ int ret;
+ char *token = NULL;
+ size_t token_alloc = 0;
+ struct zbx_json_parse jp_data;
+ char tmp[MAX_STRING_LEN];
+ int version;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ log_client_timediff(LOG_LEVEL_DEBUG, jp, ts);
+
+ if (SUCCEED != (ret = zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_DATA, &jp_data)))
+ {
+ *info = zbx_strdup(*info, zbx_json_strerror());
+ goto out;
+ }
+
+ if (SUCCEED == zbx_json_value_by_name_dyn(jp, ZBX_PROTO_TAG_SESSION, &token, &token_alloc, NULL))
+ {
+ size_t token_len;
+
+ if (ZBX_SESSION_TOKEN_SIZE != (token_len = strlen(token)))
+ {
+ *info = zbx_dsprintf(*info, "invalid session token length %d", (int)token_len);
+ ret = FAIL;
+ goto out;
+ }
+ }
+
+ if (SUCCEED != zbx_json_value_by_name(jp, ZBX_PROTO_TAG_VERSION, tmp, sizeof(tmp), NULL) ||
+ FAIL == (version = zbx_get_component_version_without_patch(tmp)))
+ {
+ version = ZBX_COMPONENT_VERSION(4, 2, 0);
+ }
+
+ if (ZBX_COMPONENT_VERSION(4, 4, 0) <= version &&
+ SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_HOST, tmp, sizeof(tmp), NULL))
+ {
+ zbx_session_t *session;
+ zbx_uint64_t hostid;
+
+ if (SUCCEED != DCconfig_get_hostid_by_name(tmp, &hostid))
+ {
+ *info = zbx_dsprintf(*info, "unknown host '%s'", tmp);
+ ret = SUCCEED;
+ goto out;
+ }
+
+ if (NULL == token)
+ session = NULL;
+ else
+ session = zbx_dc_get_or_create_session(hostid, token, ZBX_SESSION_TYPE_DATA);
+
+ if (SUCCEED != (ret = process_history_data_by_itemids(sock, validator_func, validator_args, &jp_data,
+ session, NULL, info, ZBX_ITEM_GET_DEFAULT)))
+ {
+ goto out;
+ }
+ }
+ else
+ process_history_data_by_keys(sock, validator_func, validator_args, info, &jp_data, token);
+out:
+ zbx_free(token);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process history data received from Zabbix active agent *
+ * *
+ * Parameters: sock - [IN] the connection socket *
+ * jp - [IN] the JSON with history data *
+ * ts - [IN] the connection timestamp *
+ * info - [OUT] address of a pointer to the info string *
+ * (should be freed by the caller) *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+int process_agent_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info)
+{
+ zbx_host_rights_t rights = {0};
+
+ return process_client_history_data(sock, jp, ts, agent_item_validator, &rights, info);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process history data received from Zabbix sender *
+ * *
+ * Parameters: sock - [IN] the connection socket *
+ * jp - [IN] the JSON with history data *
+ * ts - [IN] the connection timestamp *
+ * info - [OUT] address of a pointer to the info string *
+ * (should be freed by the caller) *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+int process_sender_history_data(zbx_socket_t *sock, struct zbx_json_parse *jp, zbx_timespec_t *ts, char **info)
+{
+ zbx_host_rights_t rights = {0};
+ int ret;
+ zbx_dc_um_handle_t *um_handle;
+
+ um_handle = zbx_dc_open_user_macros();
+
+ ret = process_client_history_data(sock, jp, ts, sender_item_validator, &rights, info);
+
+ zbx_dc_close_user_macros(um_handle);
+
+ return ret;
+}
+
+static void zbx_drule_ip_free(zbx_drule_ip_t *ip)
+{
+ zbx_vector_ptr_clear_ext(&ip->services, zbx_ptr_free);
+ zbx_vector_ptr_destroy(&ip->services);
+ zbx_free(ip);
+}
+
+static void zbx_drule_free(zbx_drule_t *drule)
+{
+ zbx_vector_ptr_clear_ext(&drule->ips, (zbx_clean_func_t)zbx_drule_ip_free);
+ zbx_vector_ptr_destroy(&drule->ips);
+ zbx_vector_uint64_destroy(&drule->dcheckids);
+ zbx_free(drule);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process services discovered on IP address *
+ * *
+ * Parameters: drule_ptr - [IN] discovery rule structure *
+ * ip_discovered_ptr - [IN] vector of ip addresses *
+ * *
+ ******************************************************************************/
+static int process_services(const zbx_vector_ptr_t *services, const char *ip, zbx_uint64_t druleid,
+ zbx_vector_uint64_t *dcheckids, zbx_uint64_t unique_dcheckid, int *processed_num, int ip_idx)
+{
+ ZBX_DB_DHOST dhost;
+ zbx_service_t *service;
+ int services_num, ret = FAIL, i, dchecks = 0;
+ zbx_vector_ptr_t services_old;
+ ZBX_DB_DRULE drule = {.druleid = druleid, .unique_dcheckid = unique_dcheckid};
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ memset(&dhost, 0, sizeof(dhost));
+
+ zbx_vector_ptr_create(&services_old);
+
+ /* find host update */
+ for (i = *processed_num; i < services->values_num; i++)
+ {
+ service = (zbx_service_t *)services->values[i];
+
+ zabbix_log(LOG_LEVEL_DEBUG, "%s() druleid:" ZBX_FS_UI64 " dcheckid:" ZBX_FS_UI64 " unique_dcheckid:"
+ ZBX_FS_UI64 " time:'%s %s' ip:'%s' dns:'%s' port:%hu status:%d value:'%s'",
+ __func__, drule.druleid, service->dcheckid, drule.unique_dcheckid,
+ zbx_date2str(service->itemtime, NULL), zbx_time2str(service->itemtime, NULL), ip, service->dns,
+ service->port, service->status, service->value);
+
+ if (0 == service->dcheckid)
+ break;
+
+ dchecks++;
+ }
+
+ /* stop processing current discovery rule and save proxy history until host update is available */
+ if (i == services->values_num)
+ {
+ for (i = *processed_num; i < services->values_num; i++)
+ {
+ char *ip_esc, *dns_esc, *value_esc;
+
+ service = (zbx_service_t *)services->values[i];
+
+ ip_esc = DBdyn_escape_field("proxy_dhistory", "ip", ip);
+ dns_esc = DBdyn_escape_field("proxy_dhistory", "dns", service->dns);
+ value_esc = DBdyn_escape_field("proxy_dhistory", "value", service->value);
+
+ DBexecute("insert into proxy_dhistory (clock,druleid,ip,port,value,status,dcheckid,dns)"
+ " values (%d," ZBX_FS_UI64 ",'%s',%d,'%s',%d," ZBX_FS_UI64 ",'%s')",
+ (int)service->itemtime, drule.druleid, ip_esc, service->port,
+ value_esc, service->status, service->dcheckid, dns_esc);
+ zbx_free(value_esc);
+ zbx_free(dns_esc);
+ zbx_free(ip_esc);
+ }
+
+ goto fail;
+ }
+
+ services_num = i;
+
+ if (0 == *processed_num && 0 == ip_idx)
+ {
+ DB_RESULT result;
+ DB_ROW row;
+ zbx_uint64_t dcheckid;
+
+ result = DBselect(
+ "select dcheckid,clock,port,value,status,dns,ip"
+ " from proxy_dhistory"
+ " where druleid=" ZBX_FS_UI64
+ " order by id",
+ drule.druleid);
+
+ for (i = 0; NULL != (row = DBfetch(result)); i++)
+ {
+ if (SUCCEED == DBis_null(row[0]))
+ continue;
+
+ ZBX_STR2UINT64(dcheckid, row[0]);
+
+ if (0 == strcmp(ip, row[6]))
+ {
+ service = (zbx_service_t *)zbx_malloc(NULL, sizeof(zbx_service_t));
+ service->dcheckid = dcheckid;
+ service->itemtime = (time_t)atoi(row[1]);
+ service->port = atoi(row[2]);
+ zbx_strlcpy_utf8(service->value, row[3], ZBX_MAX_DISCOVERED_VALUE_SIZE);
+ service->status = atoi(row[4]);
+ zbx_strlcpy(service->dns, row[5], ZBX_INTERFACE_DNS_LEN_MAX);
+ zbx_vector_ptr_append(&services_old, service);
+ zbx_vector_uint64_append(dcheckids, service->dcheckid);
+ dchecks++;
+ }
+ }
+ DBfree_result(result);
+
+ if (0 != i)
+ {
+ DBexecute("delete from proxy_dhistory"
+ " where druleid=" ZBX_FS_UI64,
+ drule.druleid);
+ }
+
+ zbx_vector_uint64_sort(dcheckids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+ zbx_vector_uint64_uniq(dcheckids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+
+ if (SUCCEED != DBlock_druleid(drule.druleid))
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "druleid:" ZBX_FS_UI64 " does not exist", drule.druleid);
+ goto fail;
+ }
+
+ if (SUCCEED != DBlock_ids("dchecks", "dcheckid", dcheckids))
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "checks are not available for druleid:" ZBX_FS_UI64, drule.druleid);
+ goto fail;
+ }
+ }
+
+ if (0 == dchecks)
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "cannot process host update without services");
+ goto fail;
+ }
+
+ for (i = 0; i < services_old.values_num; i++)
+ {
+ service = (zbx_service_t *)services_old.values[i];
+
+ if (FAIL == zbx_vector_uint64_bsearch(dcheckids, service->dcheckid, ZBX_DEFAULT_UINT64_COMPARE_FUNC))
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "dcheckid:" ZBX_FS_UI64 " does not exist", service->dcheckid);
+ continue;
+ }
+
+ zbx_discovery_update_service(&drule, service->dcheckid, &dhost, ip, service->dns, service->port,
+ service->status, service->value, service->itemtime);
+ }
+
+ for (;*processed_num < services_num; (*processed_num)++)
+ {
+ service = (zbx_service_t *)services->values[*processed_num];
+
+ if (FAIL == zbx_vector_uint64_bsearch(dcheckids, service->dcheckid, ZBX_DEFAULT_UINT64_COMPARE_FUNC))
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "dcheckid:" ZBX_FS_UI64 " does not exist", service->dcheckid);
+ continue;
+ }
+
+ zbx_discovery_update_service(&drule, service->dcheckid, &dhost, ip, service->dns, service->port,
+ service->status, service->value, service->itemtime);
+ }
+
+ service = (zbx_service_t *)services->values[(*processed_num)++];
+ zbx_discovery_update_host(&dhost, service->status, service->itemtime);
+
+ ret = SUCCEED;
+fail:
+ zbx_vector_ptr_clear_ext(&services_old, zbx_ptr_free);
+ zbx_vector_ptr_destroy(&services_old);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parse discovery data contents and process it *
+ * *
+ * Parameters: jp_data - [IN] JSON with discovery data *
+ * error - [OUT] address of a pointer to the info *
+ * string (should be freed by the caller) *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+static int process_discovery_data_contents(struct zbx_json_parse *jp_data, char **error)
+{
+ DB_RESULT result;
+ DB_ROW row;
+ zbx_uint64_t dcheckid, druleid;
+ struct zbx_json_parse jp_row;
+ int status, ret = SUCCEED, i, j;
+ unsigned short port;
+ const char *p = NULL;
+ char ip[ZBX_INTERFACE_IP_LEN_MAX], tmp[MAX_STRING_LEN],
+ dns[ZBX_INTERFACE_DNS_LEN_MAX], *value = NULL;
+ time_t itemtime;
+ size_t value_alloc = ZBX_MAX_DISCOVERED_VALUE_SIZE;
+ zbx_vector_ptr_t drules;
+ zbx_drule_t *drule;
+ zbx_drule_ip_t *drule_ip;
+ zbx_service_t *service;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ value = (char *)zbx_malloc(value, value_alloc);
+
+ zbx_vector_ptr_create(&drules);
+
+ while (NULL != (p = zbx_json_next(jp_data, p)))
+ {
+ if (FAIL == zbx_json_brackets_open(p, &jp_row))
+ goto json_parse_error;
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_CLOCK, tmp, sizeof(tmp), NULL))
+ goto json_parse_error;
+
+ itemtime = atoi(tmp);
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DRULE, tmp, sizeof(tmp), NULL))
+ goto json_parse_error;
+
+ ZBX_STR2UINT64(druleid, tmp);
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DCHECK, tmp, sizeof(tmp), NULL))
+ goto json_parse_error;
+
+ if ('\0' != *tmp)
+ ZBX_STR2UINT64(dcheckid, tmp);
+ else
+ dcheckid = 0;
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_IP, ip, sizeof(ip), NULL))
+ goto json_parse_error;
+
+ if (SUCCEED != zbx_is_ip(ip))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid IP address", __func__, ip);
+ continue;
+ }
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_PORT, tmp, sizeof(tmp), NULL))
+ {
+ port = 0;
+ }
+ else if (FAIL == zbx_is_ushort(tmp, &port))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid port", __func__, tmp);
+ continue;
+ }
+
+ if (SUCCEED != zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_VALUE, &value, &value_alloc, NULL))
+ *value = '\0';
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DNS, dns, sizeof(dns), NULL))
+ {
+ *dns = '\0';
+ }
+ else if ('\0' != *dns && FAIL == zbx_validate_hostname(dns))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid hostname", __func__, dns);
+ continue;
+ }
+
+ if (SUCCEED == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_STATUS, tmp, sizeof(tmp), NULL))
+ status = atoi(tmp);
+ else
+ status = 0;
+
+ if (FAIL == (i = zbx_vector_ptr_search(&drules, &druleid, ZBX_DEFAULT_UINT64_PTR_COMPARE_FUNC)))
+ {
+ drule = (zbx_drule_t *)zbx_malloc(NULL, sizeof(zbx_drule_t));
+ drule->druleid = druleid;
+ zbx_vector_ptr_create(&drule->ips);
+ zbx_vector_uint64_create(&drule->dcheckids);
+ zbx_vector_ptr_append(&drules, drule);
+ }
+ else
+ drule = drules.values[i];
+
+ if (FAIL == (i = zbx_vector_ptr_search(&drule->ips, ip, ZBX_DEFAULT_STR_COMPARE_FUNC)))
+ {
+ drule_ip = (zbx_drule_ip_t *)zbx_malloc(NULL, sizeof(zbx_drule_ip_t));
+ zbx_strlcpy(drule_ip->ip, ip, ZBX_INTERFACE_IP_LEN_MAX);
+ zbx_vector_ptr_create(&drule_ip->services);
+ zbx_vector_ptr_append(&drule->ips, drule_ip);
+ }
+ else
+ drule_ip = drule->ips.values[i];
+
+ service = (zbx_service_t *)zbx_malloc(NULL, sizeof(zbx_service_t));
+ if (0 != (service->dcheckid = dcheckid))
+ zbx_vector_uint64_append(&drule->dcheckids, service->dcheckid);
+ service->port = port;
+ service->status = status;
+ zbx_strlcpy_utf8(service->value, value, ZBX_MAX_DISCOVERED_VALUE_SIZE);
+ zbx_strlcpy(service->dns, dns, ZBX_INTERFACE_DNS_LEN_MAX);
+ service->itemtime = itemtime;
+ zbx_vector_ptr_append(&drule_ip->services, service);
+
+ continue;
+json_parse_error:
+ *error = zbx_strdup(*error, zbx_json_strerror());
+ ret = FAIL;
+ goto json_parse_return;
+ }
+
+ for (i = 0; i < drules.values_num; i++)
+ {
+ zbx_uint64_t unique_dcheckid;
+ int ret2 = SUCCEED;
+
+ drule = (zbx_drule_t *)drules.values[i];
+
+ DBbegin();
+ result = DBselect(
+ "select dcheckid"
+ " from dchecks"
+ " where druleid=" ZBX_FS_UI64
+ " and uniq=1",
+ drule->druleid);
+
+ if (NULL != (row = DBfetch(result)))
+ ZBX_STR2UINT64(unique_dcheckid, row[0]);
+ else
+ unique_dcheckid = 0;
+ DBfree_result(result);
+ for (j = 0; j < drule->ips.values_num && SUCCEED == ret2; j++)
+ {
+ int processed_num = 0;
+
+ drule_ip = (zbx_drule_ip_t *)drule->ips.values[j];
+
+ while (processed_num != drule_ip->services.values_num)
+ {
+ if (FAIL == (ret2 = process_services(&drule_ip->services, drule_ip->ip, drule->druleid,
+ &drule->dcheckids, unique_dcheckid, &processed_num, j)))
+ {
+ break;
+ }
+ }
+ }
+
+ zbx_process_events(NULL, NULL);
+ zbx_clean_events();
+ DBcommit();
+ }
+json_parse_return:
+ zbx_free(value);
+
+ zbx_vector_ptr_clear_ext(&drules, (zbx_clean_func_t)zbx_drule_free);
+ zbx_vector_ptr_destroy(&drules);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parse autoregistration data contents and process it *
+ * *
+ * Parameters: jp_data - [IN] JSON with autoregistration data *
+ * proxy_hostid - [IN] proxy identifier from database *
+ * error - [OUT] address of a pointer to the info *
+ * string (should be freed by the caller) *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+static int process_autoregistration_contents(struct zbx_json_parse *jp_data, zbx_uint64_t proxy_hostid,
+ char **error)
+{
+ struct zbx_json_parse jp_row;
+ int ret = SUCCEED;
+ const char *p = NULL;
+ time_t itemtime;
+ char host[ZBX_HOSTNAME_BUF_LEN], ip[ZBX_INTERFACE_IP_LEN_MAX],
+ dns[ZBX_INTERFACE_DNS_LEN_MAX], tmp[MAX_STRING_LEN], *host_metadata = NULL;
+ unsigned short port;
+ size_t host_metadata_alloc = 1; /* for at least NUL-terminating string */
+ zbx_vector_ptr_t autoreg_hosts;
+ zbx_conn_flags_t flags = ZBX_CONN_DEFAULT;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ if (0 == DCget_auto_registration_action_count())
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "cannot process auto registration contents, all autoregistration actions"
+ " are disabled");
+ goto out;
+ }
+
+ zbx_vector_ptr_create(&autoreg_hosts);
+ host_metadata = (char *)zbx_malloc(host_metadata, host_metadata_alloc);
+
+ while (NULL != (p = zbx_json_next(jp_data, p)))
+ {
+ unsigned int connection_type;
+
+ if (FAIL == (ret = zbx_json_brackets_open(p, &jp_row)))
+ break;
+
+ if (FAIL == (ret = zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_CLOCK, tmp, sizeof(tmp), NULL)))
+ break;
+
+ itemtime = atoi(tmp);
+
+ if (FAIL == (ret = zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_HOST, host, sizeof(host), NULL)))
+ break;
+
+ if (FAIL == zbx_check_hostname(host, NULL))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid Zabbix host name", __func__, host);
+ continue;
+ }
+
+ if (FAIL == zbx_json_value_by_name_dyn(&jp_row, ZBX_PROTO_TAG_HOST_METADATA,
+ &host_metadata, &host_metadata_alloc, NULL))
+ {
+ *host_metadata = '\0';
+ }
+
+ if (FAIL != zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_FLAGS, tmp, sizeof(tmp), NULL))
+ {
+ int flags_int;
+
+ flags_int = atoi(tmp);
+
+ switch (flags_int)
+ {
+ case ZBX_CONN_DEFAULT:
+ case ZBX_CONN_IP:
+ case ZBX_CONN_DNS:
+ flags = (zbx_conn_flags_t)flags_int;
+ break;
+ default:
+ flags = ZBX_CONN_DEFAULT;
+ zabbix_log(LOG_LEVEL_WARNING, "wrong flags value: %d for host \"%s\":",
+ flags_int, host);
+ }
+ }
+
+ if (FAIL == (ret = zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_IP, ip, sizeof(ip), NULL)))
+ {
+ if (ZBX_CONN_DNS == flags)
+ {
+ *ip = '\0';
+ ret = SUCCEED;
+ }
+ else
+ break;
+ }
+ else if (SUCCEED != zbx_is_ip(ip))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid IP address", __func__, ip);
+ continue;
+ }
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_DNS, dns, sizeof(dns), NULL))
+ {
+ *dns = '\0';
+ }
+ else if ('\0' != *dns && FAIL == zbx_validate_hostname(dns))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid hostname", __func__, dns);
+ continue;
+ }
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_PORT, tmp, sizeof(tmp), NULL))
+ {
+ port = ZBX_DEFAULT_AGENT_PORT;
+ }
+ else if (FAIL == zbx_is_ushort(tmp, &port))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid port", __func__, tmp);
+ continue;
+ }
+
+ if (FAIL == zbx_json_value_by_name(&jp_row, ZBX_PROTO_TAG_TLS_ACCEPTED, tmp, sizeof(tmp), NULL))
+ {
+ connection_type = ZBX_TCP_SEC_UNENCRYPTED;
+ }
+ else if (FAIL == zbx_is_uint32(tmp, &connection_type) || (ZBX_TCP_SEC_UNENCRYPTED != connection_type &&
+ ZBX_TCP_SEC_TLS_PSK != connection_type && ZBX_TCP_SEC_TLS_CERT != connection_type))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "%s(): \"%s\" is not a valid value for \""
+ ZBX_PROTO_TAG_TLS_ACCEPTED "\"", __func__, tmp);
+ continue;
+ }
+
+ DBregister_host_prepare(&autoreg_hosts, host, ip, dns, port, connection_type, host_metadata, flags,
+ itemtime);
+ }
+
+ if (0 != autoreg_hosts.values_num)
+ {
+ DBbegin();
+ DBregister_host_flush(&autoreg_hosts, proxy_hostid);
+ DBcommit();
+ DCconfig_delete_autoreg_host(&autoreg_hosts);
+ }
+
+ zbx_free(host_metadata);
+ DBregister_host_clean(&autoreg_hosts);
+ zbx_vector_ptr_destroy(&autoreg_hosts);
+
+ if (SUCCEED != ret)
+ *error = zbx_strdup(*error, zbx_json_strerror());
+out:
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get the number of values waiting to be sent to the server *
+ * *
+ * Return value: the number of history values *
+ * *
+ ******************************************************************************/
+int proxy_get_history_count(void)
+{
+ DB_RESULT result;
+ DB_ROW row;
+ zbx_uint64_t id;
+ int count = 0;
+
+ DBconnect(ZBX_DB_CONNECT_NORMAL);
+
+ proxy_get_lastid("proxy_history", "history_lastid", &id);
+
+ result = DBselect(
+ "select count(*)"
+ " from proxy_history"
+ " where id>" ZBX_FS_UI64,
+ id);
+
+ if (NULL != (row = DBfetch(result)))
+ count = atoi(row[0]);
+
+ DBfree_result(result);
+
+ DBclose();
+
+ return count;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parse tasks contents and saves the received tasks *
+ * *
+ * Parameters: jp_tasks - [IN] JSON with tasks data *
+ * *
+ ******************************************************************************/
+static void process_tasks_contents(struct zbx_json_parse *jp_tasks)
+{
+ zbx_vector_ptr_t tasks;
+
+ zbx_vector_ptr_create(&tasks);
+
+ zbx_tm_json_deserialize_tasks(jp_tasks, &tasks);
+
+ DBbegin();
+ zbx_tm_save_tasks(&tasks);
+ DBcommit();
+
+ zbx_vector_ptr_clear_ext(&tasks, (zbx_clean_func_t)zbx_tm_task_free);
+ zbx_vector_ptr_destroy(&tasks);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: appends text to the string on a new line *
+ * *
+ ******************************************************************************/
+static void zbx_strcatnl_alloc(char **info, size_t *info_alloc, size_t *info_offset, const char *text)
+{
+ if (0 != *info_offset)
+ zbx_chrcpy_alloc(info, info_alloc, info_offset, '\n');
+
+ zbx_strcpy_alloc(info, info_alloc, info_offset, text);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: detect lost connection with proxy and calculate suppression *
+ * window if possible *
+ * *
+ * Parameters: ts - [IN] timestamp when the proxy connection was *
+ * established *
+ * proxy_staus - [IN] - active or passive proxy *
+ * diff - [IN/OUT] the properties to update *
+ * *
+ ******************************************************************************/
+static void check_proxy_nodata(zbx_timespec_t *ts, unsigned char proxy_status, zbx_proxy_diff_t *diff)
+{
+ int delay;
+
+ if (0 != (diff->nodata_win.flags & ZBX_PROXY_SUPPRESS_ACTIVE))
+ {
+ diff->nodata_win.values_num = 0; /* reset counter of new suppress values received from proxy */
+ return; /* only for current packet */
+ }
+
+ delay = ts->sec - diff->lastaccess;
+
+ if ((HOST_STATUS_PROXY_PASSIVE == proxy_status &&
+ (2 * CONFIG_PROXYDATA_FREQUENCY) < delay && NET_DELAY_MAX < delay) ||
+ (HOST_STATUS_PROXY_ACTIVE == proxy_status && NET_DELAY_MAX < delay))
+ {
+ diff->nodata_win.values_num = 0;
+ diff->nodata_win.period_end = ts->sec;
+ diff->flags |= ZBX_FLAGS_PROXY_DIFF_UPDATE_SUPPRESS_WIN;
+ diff->nodata_win.flags |= ZBX_PROXY_SUPPRESS_ENABLE;
+ }
+}
+
+/******************************************************************************
+ * *
+ * Purpose: detect lack of data during lost connectivity *
+ * *
+ * Parameters: ts - [IN] timestamp when the proxy connection was *
+ * established *
+ * proxy_staus - [IN] - active or passive proxy *
+ * diff - [IN/OUT] the properties to update *
+ * *
+ ******************************************************************************/
+static void check_proxy_nodata_empty(zbx_timespec_t *ts, unsigned char proxy_status, zbx_proxy_diff_t *diff)
+{
+ int delay_empty;
+
+ if (0 != (diff->nodata_win.flags & ZBX_PROXY_SUPPRESS_EMPTY) && 0 != diff->nodata_win.values_num)
+ diff->nodata_win.flags &= (~ZBX_PROXY_SUPPRESS_EMPTY);
+
+ if (0 == (diff->nodata_win.flags & ZBX_PROXY_SUPPRESS_EMPTY) || 0 != diff->nodata_win.values_num)
+ return;
+
+ delay_empty = ts->sec - diff->nodata_win.period_end;
+
+ if (HOST_STATUS_PROXY_PASSIVE == proxy_status ||
+ (HOST_STATUS_PROXY_ACTIVE == proxy_status && NET_DELAY_MAX < delay_empty))
+ {
+ diff->nodata_win.period_end = 0;
+ diff->nodata_win.flags = ZBX_PROXY_SUPPRESS_DISABLE;
+ }
+}
+
+/******************************************************************************
+ * *
+ * Purpose: process 'proxy data' request *
+ * *
+ * Parameters: proxy - [IN] the source proxy *
+ * jp - [IN] JSON with proxy data *
+ * proxy_hostid - [IN] proxy identifier from database *
+ * ts - [IN] timestamp when the proxy connection was *
+ * established *
+ * proxy_status - [IN] active or passive proxy mode *
+ * more - [OUT] available data flag *
+ * error - [OUT] address of a pointer to the info string *
+ * (should be freed by the caller) *
+ * *
+ * Return value: SUCCEED - processed successfully *
+ * FAIL - an error occurred *
+ * *
+ ******************************************************************************/
+int process_proxy_data(const DC_PROXY *proxy, struct zbx_json_parse *jp, zbx_timespec_t *ts,
+ unsigned char proxy_status, int *more, char **error)
+{
+ struct zbx_json_parse jp_data;
+ int ret = SUCCEED, flags_old;
+ char *error_step = NULL, value[MAX_STRING_LEN];
+ size_t error_alloc = 0, error_offset = 0;
+ zbx_proxy_diff_t proxy_diff;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ proxy_diff.flags = ZBX_FLAGS_PROXY_DIFF_UNSET;
+ proxy_diff.hostid = proxy->hostid;
+
+ if (SUCCEED != (ret = DCget_proxy_nodata_win(proxy_diff.hostid, &proxy_diff.nodata_win,
+ &proxy_diff.lastaccess)))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "cannot get proxy communication delay");
+ ret = FAIL;
+ goto out;
+ }
+
+ if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_MORE, value, sizeof(value), NULL))
+ proxy_diff.more_data = atoi(value);
+ else
+ proxy_diff.more_data = ZBX_PROXY_DATA_DONE;
+
+ if (NULL != more)
+ *more = proxy_diff.more_data;
+
+ if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_PROXY_DELAY, value, sizeof(value), NULL))
+ proxy_diff.proxy_delay = atoi(value);
+ else
+ proxy_diff.proxy_delay = 0;
+
+ proxy_diff.flags |= ZBX_FLAGS_PROXY_DIFF_UPDATE_PROXYDELAY;
+ flags_old = proxy_diff.nodata_win.flags;
+ check_proxy_nodata(ts, proxy_status, &proxy_diff); /* first packet can be empty for active proxy */
+
+ zabbix_log(LOG_LEVEL_DEBUG, "%s() flag_win:%d/%d flag:%d proxy_status:%d period_end:%d delay:%d"
+ " timestamp:%d lastaccess:%d proxy_delay:%d more:%d", __func__, proxy_diff.nodata_win.flags,
+ flags_old, (int)proxy_diff.flags, proxy_status, proxy_diff.nodata_win.period_end,
+ ts->sec - proxy_diff.lastaccess, ts->sec, proxy_diff.lastaccess, proxy_diff.proxy_delay,
+ proxy_diff.more_data);
+
+ if (ZBX_FLAGS_PROXY_DIFF_UNSET != proxy_diff.flags)
+ zbx_dc_update_proxy(&proxy_diff);
+
+ if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_INTERFACE_AVAILABILITY, &jp_data))
+ {
+ if (SUCCEED != (ret = process_interfaces_availability_contents(&jp_data, &error_step)))
+ zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
+ }
+
+ flags_old = proxy_diff.nodata_win.flags;
+
+ if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_HISTORY_DATA, &jp_data))
+ {
+ zbx_session_t *session = NULL;
+
+ if (SUCCEED == zbx_json_value_by_name(jp, ZBX_PROTO_TAG_SESSION, value, sizeof(value), NULL))
+ {
+ size_t token_len;
+
+ if (ZBX_SESSION_TOKEN_SIZE != (token_len = strlen(value)))
+ {
+ *error = zbx_dsprintf(*error, "invalid session token length %d", (int)token_len);
+ ret = FAIL;
+ goto out;
+ }
+
+ session = zbx_dc_get_or_create_session(proxy->hostid, value, ZBX_SESSION_TYPE_DATA);
+ }
+
+ if (SUCCEED != (ret = process_history_data_by_itemids(NULL, proxy_item_validator,
+ (void *)&proxy->hostid, &jp_data, session, &proxy_diff.nodata_win, &error_step,
+ ZBX_ITEM_GET_PROCESS)))
+ {
+ zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
+ }
+ }
+
+ if (0 != (proxy_diff.nodata_win.flags & ZBX_PROXY_SUPPRESS_ACTIVE))
+ {
+ check_proxy_nodata_empty(ts, proxy_status, &proxy_diff);
+
+ if (0 < proxy_diff.nodata_win.values_num || flags_old != proxy_diff.nodata_win.flags)
+ proxy_diff.flags |= ZBX_FLAGS_PROXY_DIFF_UPDATE_SUPPRESS_WIN;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "Result of %s() flag_win:%d/%d flag:%d values_num:%d",
+ __func__, proxy_diff.nodata_win.flags, flags_old, (int)proxy_diff.flags,
+ proxy_diff.nodata_win.values_num);
+ }
+
+ if (ZBX_FLAGS_PROXY_DIFF_UNSET != proxy_diff.flags)
+ zbx_dc_update_proxy(&proxy_diff);
+
+ if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_DISCOVERY_DATA, &jp_data))
+ {
+ if (SUCCEED != (ret = process_discovery_data_contents(&jp_data, &error_step)))
+ zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
+ }
+
+ if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_AUTOREGISTRATION, &jp_data))
+ {
+ if (SUCCEED != (ret = process_autoregistration_contents(&jp_data, proxy->hostid, &error_step)))
+ zbx_strcatnl_alloc(error, &error_alloc, &error_offset, error_step);
+ }
+
+ if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_TASKS, &jp_data))
+ process_tasks_contents(&jp_data);
+
+ if (SUCCEED == zbx_json_brackets_by_name(jp, ZBX_PROTO_TAG_PROXY_ACTIVE_AVAIL_DATA, &jp_data))
+ {
+ const char *ptr;
+ zbx_vector_proxy_hostdata_ptr_t host_avails;
+ struct zbx_json_parse jp_host;
+ char buffer[ZBX_KIBIBYTE];
+
+ zbx_vector_proxy_hostdata_ptr_create(&host_avails);
+
+ for (ptr = NULL; NULL != (ptr = zbx_json_next(&jp_data, ptr));)
+ {
+ zbx_proxy_hostdata_t *host;
+
+ if (SUCCEED != zbx_json_brackets_open(ptr, &jp_host))
+ continue;
+
+ if (SUCCEED == zbx_json_value_by_name(&jp_host, ZBX_PROTO_TAG_HOSTID, buffer, sizeof(buffer), NULL))
+ {
+ host = (zbx_proxy_hostdata_t *)zbx_malloc(NULL, sizeof(zbx_proxy_hostdata_t));
+ host->hostid = atoi(buffer);
+ }
+ else
+ continue;
+
+ if (FAIL == zbx_json_value_by_name(&jp_host, ZBX_PROTO_TAG_ACTIVE_STATUS, buffer, sizeof(buffer), NULL))
+ {
+ zbx_free(host);
+ continue;
+ }
+
+ host->status = atoi(buffer);
+
+ zbx_vector_proxy_hostdata_ptr_append(&host_avails, host);
+ }
+
+ if (0 != host_avails.values_num)
+ {
+ unsigned char *data = NULL;
+ zbx_uint32_t data_len;
+ DC_HOST *hosts;
+ int i, *errcodes;
+ zbx_vector_uint64_t hostids;
+ zbx_vector_proxy_hostdata_ptr_t proxy_host_avails;
+
+ zbx_vector_uint64_create(&hostids);
+
+ for (i = 0; i < host_avails.values_num; i++)
+ zbx_vector_uint64_append(&hostids, host_avails.values[i]->hostid);
+
+ hosts = (DC_HOST *)zbx_malloc(NULL, sizeof(DC_HOST) * host_avails.values_num);
+ errcodes = (int *)zbx_malloc(NULL, sizeof(int) * host_avails.values_num);
+ DCconfig_get_hosts_by_hostids(hosts, hostids.values, errcodes, hostids.values_num);
+
+ zbx_vector_uint64_destroy(&hostids);
+
+ zbx_vector_proxy_hostdata_ptr_create(&proxy_host_avails);
+
+ for (i = 0; i < host_avails.values_num; i++)
+ {
+ if (SUCCEED == errcodes[i] && hosts[i].proxy_hostid == proxy->hostid)
+ zbx_vector_proxy_hostdata_ptr_append(&proxy_host_avails, host_avails.values[i]);
+ }
+
+ zbx_free(errcodes);
+ zbx_free(hosts);
+
+ data_len = zbx_availability_serialize_proxy_hostdata(&data, &proxy_host_avails, proxy->hostid);
+ zbx_availability_send(ZBX_IPC_AVAILMAN_PROCESS_PROXY_HOSTDATA, data, data_len, NULL);
+
+ zbx_vector_proxy_hostdata_ptr_destroy(&proxy_host_avails);
+ zbx_vector_proxy_hostdata_ptr_clear_ext(&host_avails, (zbx_proxy_hostdata_ptr_free_func_t)zbx_ptr_free);
+ zbx_free(data);
+ }
+
+ zbx_vector_proxy_hostdata_ptr_destroy(&host_avails);
+ }
+
+out:
+ zbx_free(error_step);
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: flushes lastaccess changes for proxies every *
+ * ZBX_PROXY_LASTACCESS_UPDATE_FREQUENCY seconds *
+ * *
+ ******************************************************************************/
+static void zbx_db_flush_proxy_lastaccess(void)
+{
+ zbx_vector_uint64_pair_t lastaccess;
+
+ zbx_vector_uint64_pair_create(&lastaccess);
+
+ zbx_dc_get_proxy_lastaccess(&lastaccess);
+
+ if (0 != lastaccess.values_num)
+ {
+ char *sql;
+ size_t sql_alloc = 256, sql_offset = 0;
+ int i;
+
+ sql = (char *)zbx_malloc(NULL, sql_alloc);
+
+ DBbegin();
+ zbx_DBbegin_multiple_update(&sql, &sql_alloc, &sql_offset);
+
+ for (i = 0; i < lastaccess.values_num; i++)
+ {
+ zbx_uint64_pair_t *pair = &lastaccess.values[i];
+
+ zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "update host_rtdata"
+ " set lastaccess=%d"
+ " where hostid=" ZBX_FS_UI64 ";\n",
+ (int)pair->second, pair->first);
+
+ DBexecute_overflowed_sql(&sql, &sql_alloc, &sql_offset);
+ }
+
+ zbx_DBend_multiple_update(&sql, &sql_alloc, &sql_offset);
+
+ if (16 < sql_offset) /* in ORACLE always present begin..end; */
+ DBexecute("%s", sql);
+
+ DBcommit();
+
+ zbx_free(sql);
+ }
+
+ zbx_vector_uint64_pair_destroy(&lastaccess);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: updates proxy version and compatibility with server in database *
+ * *
+ * Parameters: proxy - [IN] the proxy to update version for *
+ * diff - [IN] indicates changes to the proxy *
+ * *
+ ******************************************************************************/
+static void db_update_proxy_version(DC_PROXY *proxy, zbx_proxy_diff_t *diff)
+{
+ if (0 != (diff->flags & ZBX_FLAGS_PROXY_DIFF_UPDATE_VERSION))
+ {
+ if (0 != proxy->version_int)
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "proxy \"%s\" protocol version updated from %u.%u to %u.%u",
+ proxy->host,
+ ZBX_COMPONENT_VERSION_MAJOR(proxy->version_int),
+ ZBX_COMPONENT_VERSION_MINOR(proxy->version_int),
+ ZBX_COMPONENT_VERSION_MAJOR(diff->version_int),
+ ZBX_COMPONENT_VERSION_MINOR(diff->version_int));
+ }
+
+ if (ZBX_DB_OK > DBexecute(
+ "update host_rtdata"
+ " set version=%u,compatibility=%u"
+ " where hostid=" ZBX_FS_UI64,
+ ZBX_COMPONENT_VERSION_TO_DEC_FORMAT(diff->version_int), diff->compatibility,
+ diff->hostid))
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "Failed to update proxy version and compatibility with server for"
+ " proxy '%s'.", proxy->host);
+ }
+ }
+}
+
+/******************************************************************************
+ * *
+ * Purpose: gets proxy version compatibility with server version *
+ * *
+ * Parameters: proxy_version - [IN] proxy_version *
+ * *
+ * Return value: proxy version compatibility with server version *
+ * *
+ ******************************************************************************/
+static zbx_proxy_compatibility_t zbx_get_proxy_compatibility(int proxy_version)
+{
+#define SERVER_VERSION ZBX_COMPONENT_VERSION(ZABBIX_VERSION_MAJOR, ZABBIX_VERSION_MINOR, 0)
+
+ if (0 == proxy_version)
+ return ZBX_PROXY_VERSION_UNDEFINED;
+
+ proxy_version = ZBX_COMPONENT_VERSION_WITHOUT_PATCH(proxy_version);
+
+ if (SERVER_VERSION == proxy_version)
+ return ZBX_PROXY_VERSION_CURRENT;
+
+ if (SERVER_VERSION < proxy_version)
+ return ZBX_PROXY_VERSION_UNSUPPORTED;
+#if (ZABBIX_VERSION_MINOR == 0)
+ if (ZABBIX_VERSION_MAJOR == 1 + ZBX_COMPONENT_VERSION_MAJOR(proxy_version))
+ return ZBX_PROXY_VERSION_STATUS_OUTDATED;
+#elif (ZABBIX_VERSION_MINOR > 0)
+ if (ZABBIX_VERSION_MAJOR == ZBX_COMPONENT_VERSION_MAJOR(proxy_version))
+ return ZBX_PROXY_VERSION_OUTDATED;
+#endif
+ return ZBX_PROXY_VERSION_UNSUPPORTED;
+
+#undef SERVER_VERSION
+}
+
+/******************************************************************************
+ * *
+ * Purpose: updates proxy runtime properties in cache and database. *
+ * *
+ * Parameters: proxy - [IN/OUT] the proxy *
+ * version_str - [IN] the proxy version as string *
+ * version_int - [IN] the proxy version in numeric representation *
+ * lastaccess - [IN] the last proxy access time *
+ * compress - [IN] 1 if proxy is using data compression, *
+ * 0 otherwise *
+ * flags_add - [IN] additional flags for update proxy *
+ * *
+ * Comments: The proxy parameter properties are also updated. *
+ * *
+ ******************************************************************************/
+void zbx_update_proxy_data(DC_PROXY *proxy, char *version_str, int version_int, int lastaccess, int compress,
+ zbx_uint64_t flags_add)
+{
+ zbx_proxy_diff_t diff;
+ zbx_proxy_compatibility_t compatibility;
+
+ compatibility = zbx_get_proxy_compatibility(version_int);
+
+ diff.hostid = proxy->hostid;
+ diff.flags = ZBX_FLAGS_PROXY_DIFF_UPDATE | flags_add;
+ diff.version_str = version_str;
+ diff.version_int = version_int;
+ diff.compatibility = compatibility;
+ diff.lastaccess = lastaccess;
+ diff.compress = compress;
+
+ zbx_dc_update_proxy(&diff);
+
+ db_update_proxy_version(proxy, &diff);
+
+ zbx_strlcpy(proxy->version_str, version_str, sizeof(proxy->version_str));
+ proxy->version_int = version_int;
+ proxy->compatibility = compatibility;
+ proxy->auto_compress = compress;
+ proxy->lastaccess = lastaccess;
+
+ if (0 != (diff.flags & ZBX_FLAGS_PROXY_DIFF_UPDATE_COMPRESS))
+ DBexecute("update hosts set auto_compress=%d where hostid=" ZBX_FS_UI64, diff.compress, diff.hostid);
+
+ zbx_db_flush_proxy_lastaccess();
+}
+/******************************************************************************
+ * *
+ * Purpose: flushes last_version_error_time changes runtime *
+ * variable for proxies structures *
+ * *
+ ******************************************************************************/
+static void zbx_update_proxy_lasterror(DC_PROXY *proxy)
+{
+ zbx_proxy_diff_t diff;
+
+ diff.hostid = proxy->hostid;
+ diff.flags = ZBX_FLAGS_PROXY_DIFF_UPDATE_LASTERROR;
+ diff.lastaccess = time(NULL);
+ diff.last_version_error_time = proxy->last_version_error_time;
+
+ zbx_dc_update_proxy(&diff);
+}
+/******************************************************************************
+ * *
+ * Purpose: check server and proxy versions and compatibility rules *
+ * *
+ * Parameters: *
+ * proxy - [IN] the source proxy *
+ * version - [IN] the version of proxy *
+ * *
+ * Return value: *
+ * SUCCEED - no compatibility issue *
+ * FAIL - compatibility check fault *
+ * *
+ ******************************************************************************/
+int zbx_check_protocol_version(DC_PROXY *proxy, int version)
+{
+ zbx_proxy_compatibility_t compatibility;
+
+ compatibility = zbx_get_proxy_compatibility(version);
+
+ /* warn if another proxy version is used and proceed with compatibility rules*/
+ if (ZBX_PROXY_VERSION_CURRENT != compatibility)
+ {
+ int now = zbx_time(), print_log = 0;
+
+ if (proxy->last_version_error_time <= now)
+ {
+ print_log = 1;
+ proxy->last_version_error_time = now + 5 * SEC_PER_MIN;
+ zbx_update_proxy_lasterror(proxy);
+ }
+
+ if (ZBX_PROXY_VERSION_UNSUPPORTED == compatibility)
+ {
+ if (1 == print_log)
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "Proxy \"%s\" version %u.%u.%u is not supported by server"
+ " version %d.%d.%d.", proxy->host,
+ ZBX_COMPONENT_VERSION_MAJOR(version),
+ ZBX_COMPONENT_VERSION_MINOR(version),
+ ZBX_COMPONENT_VERSION_PATCH(version), ZABBIX_VERSION_MAJOR,
+ ZABBIX_VERSION_MINOR, ZABBIX_VERSION_PATCH);
+ }
+ return FAIL;
+ }
+ else if (ZBX_PROXY_VERSION_OUTDATED == compatibility && 1 == print_log)
+ {
+ zabbix_log(LOG_LEVEL_WARNING, "Proxy \"%s\" version %u.%u.%u is outdated, only data collection"
+ " and remote execution is available with server version %d.%d.%d.", proxy->host,
+ ZBX_COMPONENT_VERSION_MAJOR(version), ZBX_COMPONENT_VERSION_MINOR(version),
+ ZBX_COMPONENT_VERSION_PATCH(version), ZABBIX_VERSION_MAJOR,
+ ZABBIX_VERSION_MINOR, ZABBIX_VERSION_PATCH);
+ }
+ else if (ZBX_PROXY_VERSION_UNDEFINED == compatibility)
+ return FAIL;
+ }
+
+ return SUCCEED;
+}
+
diff --git a/src/libs/zbxdbhigh/template.h b/src/libs/zbxdbwrap/template.h
index 9e879474143..9e879474143 100644
--- a/src/libs/zbxdbhigh/template.h
+++ b/src/libs/zbxdbwrap/template.h
diff --git a/src/libs/zbxdbhigh/template_item.c b/src/libs/zbxdbwrap/template_item.c
index 9500bb99dbb..37db1c92c0a 100644
--- a/src/libs/zbxdbhigh/template_item.c
+++ b/src/libs/zbxdbwrap/template_item.c
@@ -20,7 +20,7 @@
#include "zbxdbhigh.h"
#include "log.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "audit/zbxaudit.h"
#include "audit/zbxaudit_item.h"
#include "zbxnum.h"
diff --git a/src/libs/zbxdbwrap/trigger.c b/src/libs/zbxdbwrap/trigger.c
new file mode 100644
index 00000000000..f0f4b81431c
--- /dev/null
+++ b/src/libs/zbxdbwrap/trigger.c
@@ -0,0 +1,754 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#include "zbxdbhigh.h"
+
+#include "log.h"
+#include "zbxdbwrap.h"
+#include "events.h"
+#include "zbxserver.h"
+#include "zbxnum.h"
+
+/* temporary cache of trigger related data */
+typedef struct
+{
+ zbx_uint32_t init;
+ zbx_uint32_t done;
+ zbx_eval_context_t eval_ctx;
+ zbx_eval_context_t eval_ctx_r;
+ zbx_vector_uint64_t hostids;
+}
+zbx_trigger_cache_t;
+
+/* related trigger data caching states */
+typedef enum
+{
+ ZBX_TRIGGER_CACHE_EVAL_CTX,
+ ZBX_TRIGGER_CACHE_EVAL_CTX_R,
+ ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS,
+ ZBX_TRIGGER_CACHE_EVAL_CTX_R_MACROS,
+ ZBX_TRIGGER_CACHE_HOSTIDS,
+}
+zbx_trigger_cache_state_t;
+
+static int db_trigger_expand_macros(const ZBX_DB_TRIGGER *trigger, zbx_eval_context_t *ctx);
+
+/******************************************************************************
+ * *
+ * Purpose: get trigger cache with the requested data cached *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * state - [IN] the required cache state *
+ * *
+ ******************************************************************************/
+static zbx_trigger_cache_t *db_trigger_get_cache(const ZBX_DB_TRIGGER *trigger, zbx_trigger_cache_state_t state)
+{
+ zbx_trigger_cache_t *cache;
+ char *error = NULL;
+ zbx_uint32_t flag = 1 << state;
+ zbx_vector_uint64_t functionids;
+
+ if (NULL == trigger->cache)
+ {
+ cache = (zbx_trigger_cache_t *)zbx_malloc(NULL, sizeof(zbx_trigger_cache_t));
+ cache->init = cache->done = 0;
+ ((ZBX_DB_TRIGGER *)trigger)->cache = cache;
+ }
+ else
+ cache = (zbx_trigger_cache_t *)trigger->cache;
+
+ if (0 != (cache->init & flag))
+ return 0 != (cache->done & flag) ? cache : NULL;
+
+ cache->init |= flag;
+
+ switch (state)
+ {
+ case ZBX_TRIGGER_CACHE_EVAL_CTX:
+ if ('\0' == *trigger->expression)
+ return NULL;
+
+ if (FAIL == zbx_eval_parse_expression(&cache->eval_ctx, trigger->expression,
+ ZBX_EVAL_TRIGGER_EXPRESSION, &error))
+ {
+ zbx_free(error);
+ return NULL;
+ }
+ break;
+ case ZBX_TRIGGER_CACHE_EVAL_CTX_R:
+ if ('\0' == *trigger->recovery_expression)
+ return NULL;
+
+ if (FAIL == zbx_eval_parse_expression(&cache->eval_ctx_r, trigger->recovery_expression,
+ ZBX_EVAL_TRIGGER_EXPRESSION, &error))
+ {
+ zbx_free(error);
+ return NULL;
+ }
+ break;
+ case ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS:
+ if (FAIL == db_trigger_expand_macros(trigger, &cache->eval_ctx))
+ return NULL;
+
+ break;
+ case ZBX_TRIGGER_CACHE_EVAL_CTX_R_MACROS:
+ if (FAIL == db_trigger_expand_macros(trigger, &cache->eval_ctx_r))
+ return NULL;
+
+ break;
+ case ZBX_TRIGGER_CACHE_HOSTIDS:
+ zbx_vector_uint64_create(&cache->hostids);
+ zbx_vector_uint64_create(&functionids);
+ zbx_db_trigger_get_all_functionids(trigger, &functionids);
+ DCget_hostids_by_functionids(&functionids, &cache->hostids);
+ zbx_vector_uint64_destroy(&functionids);
+ break;
+ default:
+ return NULL;
+ }
+
+ cache->done |= flag;
+
+ return cache;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: expand macros in trigger expression/recovery expression *
+ * *
+ ******************************************************************************/
+static int db_trigger_expand_macros(const ZBX_DB_TRIGGER *trigger, zbx_eval_context_t *ctx)
+{
+ int i;
+ ZBX_DB_EVENT db_event;
+ zbx_dc_um_handle_t *um_handle;
+ zbx_trigger_cache_t *cache;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_HOSTIDS)))
+ return FAIL;
+
+ db_event.value = trigger->value;
+ db_event.object = EVENT_OBJECT_TRIGGER;
+
+ um_handle = zbx_dc_open_user_macros();
+
+ (void)zbx_eval_expand_user_macros(ctx, cache->hostids.values, cache->hostids.values_num,
+ (zbx_macro_expand_func_t)zbx_dc_expand_user_macros, um_handle, NULL);
+
+ zbx_dc_close_user_macros(um_handle);
+
+ for (i = 0; i < ctx->stack.values_num; i++)
+ {
+ char *value;
+ zbx_eval_token_t *token = &ctx->stack.values[i];
+
+ switch (token->type)
+ {
+ case ZBX_EVAL_TOKEN_VAR_STR:
+ if (ZBX_VARIANT_NONE != token->value.type)
+ {
+ zbx_variant_convert(&token->value, ZBX_VARIANT_STR);
+ value = token->value.data.str;
+ zbx_variant_set_none(&token->value);
+ break;
+ }
+ value = zbx_substr_unquote(ctx->expression, token->loc.l, token->loc.r);
+ break;
+ case ZBX_EVAL_TOKEN_VAR_MACRO:
+ value = zbx_substr_unquote(ctx->expression, token->loc.l, token->loc.r);
+ break;
+ default:
+ continue;
+ }
+
+ if (SUCCEED == zbx_substitute_simple_macros(NULL, &db_event, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, &value, MACRO_TYPE_TRIGGER_EXPRESSION, NULL, 0))
+ {
+ zbx_variant_clear(&token->value);
+ zbx_variant_set_str(&token->value, value);
+ }
+ else
+ zbx_free(value);
+ }
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: free trigger cache *
+ * *
+ * Parameters: cache - [IN] the trigger cache *
+ * *
+ ******************************************************************************/
+static void trigger_cache_free(zbx_trigger_cache_t *cache)
+{
+ if (0 != (cache->done & (1 << ZBX_TRIGGER_CACHE_EVAL_CTX)))
+ zbx_eval_clear(&cache->eval_ctx);
+
+ if (0 != (cache->done & (1 << ZBX_TRIGGER_CACHE_EVAL_CTX_R)))
+ zbx_eval_clear(&cache->eval_ctx_r);
+
+ if (0 != (cache->done & (1 << ZBX_TRIGGER_CACHE_HOSTIDS)))
+ zbx_vector_uint64_destroy(&cache->hostids);
+
+ zbx_free(cache);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get functionids from trigger expression and recovery expression *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * functionids - [OUT] the extracted functionids *
+ * *
+ * Comments: This function will cache parsed expressions in the trigger. *
+ * *
+ ******************************************************************************/
+void zbx_db_trigger_get_all_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids)
+{
+ zbx_trigger_cache_t *cache;
+
+ if (NULL != (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
+ zbx_eval_get_functionids(&cache->eval_ctx, functionids);
+
+ if (NULL != (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX_R)))
+ zbx_eval_get_functionids(&cache->eval_ctx_r, functionids);
+
+ zbx_vector_uint64_sort(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+ zbx_vector_uint64_uniq(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get functionids from trigger expression *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * functionids - [OUT] the extracted functionids *
+ * *
+ * Comments: This function will cache parsed expressions in the trigger. *
+ * *
+ ******************************************************************************/
+void zbx_db_trigger_get_functionids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *functionids)
+{
+ zbx_trigger_cache_t *cache;
+
+ if (NULL != (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
+ zbx_eval_get_functionids(&cache->eval_ctx, functionids);
+
+ zbx_vector_uint64_sort(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+ zbx_vector_uint64_uniq(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+}
+/******************************************************************************
+ * *
+ * Purpose: get trigger expression constant at the specified location *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * index - [IN] the constant index, starting with 1 *
+ * out - [IN] the constant value, if exists *
+ * *
+ * Return value: SUCCEED - the expression was parsed and constant extracted *
+ * (if the index was valid) *
+ * FAIL - the expression failed to parse *
+ * *
+ * Comments: This function will cache parsed expressions in the trigger. *
+ * *
+ ******************************************************************************/
+int zbx_db_trigger_get_constant(const ZBX_DB_TRIGGER *trigger, int index, char **out)
+{
+ zbx_trigger_cache_t *cache;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS)))
+ return FAIL;
+
+ zbx_eval_get_constant(&cache->eval_ctx, index, out);
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get the Nth function item from trigger expression *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * index - [IN] the function index *
+ * itemid - [IN] the function itemid *
+ * *
+ * Comments: SUCCEED - the itemid was extracted successfully *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+int zbx_db_trigger_get_itemid(const ZBX_DB_TRIGGER *trigger, int index, zbx_uint64_t *itemid)
+{
+ int i, ret = FAIL;
+ zbx_trigger_cache_t *cache;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
+ return FAIL;
+
+ for (i = 0; i < cache->eval_ctx.stack.values_num; i++)
+ {
+ zbx_eval_token_t *token = &cache->eval_ctx.stack.values[i];
+ zbx_uint64_t functionid;
+ DC_FUNCTION function;
+ int errcode;
+
+ if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type || (int)token->opt + 1 != index)
+ continue;
+
+ switch (token->value.type)
+ {
+ case ZBX_VARIANT_UI64:
+ functionid = token->value.data.ui64;
+ break;
+ case ZBX_VARIANT_NONE:
+ if (SUCCEED != zbx_is_uint64_n(cache->eval_ctx.expression + token->loc.l + 1,
+ token->loc.r - token->loc.l - 1, &functionid))
+ {
+ return FAIL;
+ }
+ zbx_variant_set_ui64(&token->value, functionid);
+ break;
+ default:
+ return FAIL;
+ }
+
+ DCconfig_get_functions_by_functionids(&function, &functionid, &errcode, 1);
+
+ if (SUCCEED == errcode)
+ {
+ *itemid = function.itemid;
+ ret = SUCCEED;
+ }
+
+ DCconfig_clean_functions(&function, &errcode, 1);
+ break;
+ }
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get unique itemids of trigger functions in the order they are *
+ * written in expression *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * itemids - [IN] the function itemids *
+ * *
+ ******************************************************************************/
+void zbx_db_trigger_get_itemids(const ZBX_DB_TRIGGER *trigger, zbx_vector_uint64_t *itemids)
+{
+ zbx_vector_uint64_t functionids, functionids_ordered;
+ zbx_trigger_cache_t *cache;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
+ return;
+
+ zbx_vector_uint64_create(&functionids);
+ zbx_vector_uint64_create(&functionids_ordered);
+
+ zbx_eval_get_functionids_ordered(&cache->eval_ctx, &functionids_ordered);
+
+ if (0 != functionids_ordered.values_num)
+ {
+ DC_FUNCTION *functions;
+ int i, *errcodes, index;
+
+ zbx_vector_uint64_append_array(&functionids, functionids_ordered.values,
+ functionids_ordered.values_num);
+
+ zbx_vector_uint64_sort(&functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+ zbx_vector_uint64_uniq(&functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
+
+ functions = (DC_FUNCTION *)zbx_malloc(NULL, sizeof(DC_FUNCTION) * functionids.values_num);
+ errcodes = (int *)zbx_malloc(NULL, sizeof(int) * functionids.values_num);
+
+ DCconfig_get_functions_by_functionids(functions, functionids.values, errcodes,
+ functionids.values_num);
+
+ for (i = 0; i < functionids_ordered.values_num; i++)
+ {
+ if (-1 == (index = zbx_vector_uint64_bsearch(&functionids, functionids_ordered.values[i],
+ ZBX_DEFAULT_UINT64_COMPARE_FUNC)))
+ {
+ THIS_SHOULD_NEVER_HAPPEN;
+ continue;
+ }
+
+ if (SUCCEED != errcodes[index])
+ continue;
+
+ if (FAIL == zbx_vector_uint64_search(itemids, functions[index].itemid,
+ ZBX_DEFAULT_UINT64_COMPARE_FUNC))
+ {
+ zbx_vector_uint64_append(itemids, functions[index].itemid);
+ }
+ }
+
+ DCconfig_clean_functions(functions, errcodes, functionids.values_num);
+ zbx_free(functions);
+ zbx_free(errcodes);
+ }
+
+ zbx_vector_uint64_destroy(&functionids_ordered);
+ zbx_vector_uint64_destroy(&functionids);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get hostids from trigger expression and recovery expression *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * hostids - [OUT] the extracted hostids *
+ * *
+ * Return value: SUCCEED - the hostids vector was returned (but can be empty *
+ * FAIL - otherwise *
+ * *
+ * Comments: This function will cache parsed expressions in the trigger. *
+ * *
+ ******************************************************************************/
+int zbx_db_trigger_get_all_hostids(const ZBX_DB_TRIGGER *trigger, const zbx_vector_uint64_t **hostids)
+{
+ zbx_trigger_cache_t *cache;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_HOSTIDS)))
+ return FAIL;
+
+ *hostids = &cache->hostids;
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: frees resources allocated to store trigger data *
+ * *
+ * Parameters: trigger - *
+ * *
+ ******************************************************************************/
+void zbx_db_trigger_clean(ZBX_DB_TRIGGER *trigger)
+{
+ zbx_free(trigger->description);
+ zbx_free(trigger->expression);
+ zbx_free(trigger->recovery_expression);
+ zbx_free(trigger->comments);
+ zbx_free(trigger->url);
+ zbx_free(trigger->url_name);
+ zbx_free(trigger->opdata);
+ zbx_free(trigger->event_name);
+
+ if (NULL != trigger->cache)
+ trigger_cache_free((zbx_trigger_cache_t *)trigger->cache);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get original trigger expression/recovery expression with expanded *
+ * functions *
+ * *
+ * Parameters: ctx - [IN] the parsed expression *
+ * expression - [OUT] the trigger expression *
+ * *
+ ******************************************************************************/
+static void db_trigger_get_expression(const zbx_eval_context_t *ctx, char **expression)
+{
+ int i;
+ zbx_eval_context_t local_ctx;
+
+ zbx_eval_copy(&local_ctx, ctx, ctx->expression);
+ local_ctx.rules |= ZBX_EVAL_COMPOSE_MASK_ERROR;
+
+ for (i = 0; i < local_ctx.stack.values_num; i++)
+ {
+ zbx_eval_token_t *token = &local_ctx.stack.values[i];
+ zbx_uint64_t functionid;
+ DC_FUNCTION function;
+ DC_ITEM item;
+ int err_func, err_item;
+
+ if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type)
+ {
+ /* reset cached token values to get the original expression */
+ zbx_variant_clear(&token->value);
+ continue;
+ }
+
+ switch (token->value.type)
+ {
+ case ZBX_VARIANT_UI64:
+ functionid = token->value.data.ui64;
+ break;
+ case ZBX_VARIANT_NONE:
+ if (SUCCEED != zbx_is_uint64_n(local_ctx.expression + token->loc.l + 1,
+ token->loc.r - token->loc.l - 1, &functionid))
+ {
+ continue;
+ }
+ break;
+ default:
+ continue;
+ }
+
+ DCconfig_get_functions_by_functionids(&function, &functionid, &err_func, 1);
+
+ if (SUCCEED == err_func)
+ {
+ DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1);
+
+ if (SUCCEED == err_item)
+ {
+ char *func = NULL;
+ size_t func_alloc = 0, func_offset = 0;
+
+ zbx_snprintf_alloc(&func, &func_alloc, &func_offset, "%s(/%s/%s",
+ function.function, item.host.host, item.key_orig);
+
+ if ('\0' != *function.parameter)
+ zbx_snprintf_alloc(&func, &func_alloc, &func_offset, ",%s", function.parameter);
+
+ zbx_chrcpy_alloc(&func, &func_alloc, &func_offset,')');
+
+ zbx_variant_clear(&token->value);
+ zbx_variant_set_str(&token->value, func);
+ DCconfig_clean_items(&item, &err_item, 1);
+ }
+ else
+ {
+ zbx_variant_clear(&token->value);
+ zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "item id:" ZBX_FS_UI64
+ " deleted", function.itemid));
+ }
+
+ DCconfig_clean_functions(&function, &err_func, 1);
+ }
+ else
+ {
+ zbx_variant_clear(&token->value);
+ zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "function id:" ZBX_FS_UI64 " deleted",
+ functionid));
+ }
+ }
+
+ zbx_eval_compose_expression(&local_ctx, expression);
+
+ zbx_eval_clear(&local_ctx);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get original trigger expression with expanded functions *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * expression - [OUT] the trigger expression *
+ * *
+ ******************************************************************************/
+void zbx_db_trigger_get_expression(const ZBX_DB_TRIGGER *trigger, char **expression)
+{
+ zbx_trigger_cache_t *cache;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX)))
+ *expression = zbx_strdup(NULL, trigger->expression);
+ else
+ db_trigger_get_expression(&cache->eval_ctx, expression);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: get original trigger recovery expression with expanded functions *
+ * *
+ * Parameters: trigger - [IN] the trigger *
+ * expression - [OUT] the trigger expression *
+ * *
+ ******************************************************************************/
+void zbx_db_trigger_get_recovery_expression(const ZBX_DB_TRIGGER *trigger, char **expression)
+{
+ zbx_trigger_cache_t *cache;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, ZBX_TRIGGER_CACHE_EVAL_CTX_R)))
+ *expression = zbx_strdup(NULL, trigger->recovery_expression);
+ else
+ db_trigger_get_expression(&cache->eval_ctx_r, expression);
+}
+
+static void evaluate_function_by_id(zbx_uint64_t functionid, char **value, zbx_trigger_func_t eval_func_cb)
+{
+ DC_ITEM item;
+ DC_FUNCTION function;
+ int err_func, err_item;
+
+ DCconfig_get_functions_by_functionids(&function, &functionid, &err_func, 1);
+
+ if (SUCCEED == err_func)
+ {
+ DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1);
+
+ if (SUCCEED == err_item)
+ {
+ char *error = NULL, *parameter = NULL;
+ zbx_variant_t var;
+ zbx_timespec_t ts;
+
+ parameter = zbx_dc_expand_user_macros_in_func_params(function.parameter, item.host.hostid);
+ zbx_timespec(&ts);
+
+ if (SUCCEED == eval_func_cb(&var, &item, function.function, parameter, &ts, &error) &&
+ ZBX_VARIANT_NONE != var.type)
+ {
+ *value = zbx_strdup(NULL, zbx_variant_value_desc(&var));
+ zbx_variant_clear(&var);
+ }
+ else
+ zbx_free(error);
+
+ zbx_free(parameter);
+ DCconfig_clean_items(&item, &err_item, 1);
+ }
+
+ DCconfig_clean_functions(&function, &err_func, 1);
+ }
+
+ if (NULL == *value)
+ *value = zbx_strdup(NULL, "*UNKNOWN*");
+}
+
+static void db_trigger_explain_expression(const zbx_eval_context_t *ctx, char **expression,
+ zbx_trigger_func_t eval_func_cb)
+{
+ int i;
+ zbx_eval_context_t local_ctx;
+
+ zbx_eval_copy(&local_ctx, ctx, ctx->expression);
+ local_ctx.rules |= ZBX_EVAL_COMPOSE_MASK_ERROR;
+
+ for (i = 0; i < local_ctx.stack.values_num; i++)
+ {
+ zbx_eval_token_t *token = &local_ctx.stack.values[i];
+ char *value = NULL;
+ zbx_uint64_t functionid;
+
+ if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type)
+ continue;
+
+ switch (token->value.type)
+ {
+ case ZBX_VARIANT_UI64:
+ functionid = token->value.data.ui64;
+ break;
+ case ZBX_VARIANT_NONE:
+ if (SUCCEED != zbx_is_uint64_n(local_ctx.expression + token->loc.l + 1,
+ token->loc.r - token->loc.l - 1, &functionid))
+ {
+ continue;
+ }
+ break;
+ default:
+ continue;
+ }
+
+ zbx_variant_clear(&token->value);
+ evaluate_function_by_id(functionid, &value, eval_func_cb);
+ zbx_variant_set_str(&token->value, value);
+ }
+
+ zbx_eval_compose_expression(&local_ctx, expression);
+
+ zbx_eval_clear(&local_ctx);
+}
+
+static void db_trigger_get_function_value(const zbx_eval_context_t *ctx, int index, char **value_ret,
+ zbx_trigger_func_t eval_func_cb)
+{
+ int i;
+ zbx_eval_context_t local_ctx;
+
+ zbx_eval_copy(&local_ctx, ctx, ctx->expression);
+
+ for (i = 0; i < local_ctx.stack.values_num; i++)
+ {
+ zbx_eval_token_t *token = &local_ctx.stack.values[i];
+ zbx_uint64_t functionid;
+
+ if (ZBX_EVAL_TOKEN_FUNCTIONID != token->type || (int)token->opt + 1 != index)
+ continue;
+
+ switch (token->value.type)
+ {
+ case ZBX_VARIANT_UI64:
+ functionid = token->value.data.ui64;
+ break;
+ case ZBX_VARIANT_NONE:
+ if (SUCCEED != zbx_is_uint64_n(local_ctx.expression + token->loc.l + 1,
+ token->loc.r - token->loc.l - 1, &functionid))
+ {
+ continue;
+ }
+ break;
+ default:
+ continue;
+ }
+
+ evaluate_function_by_id(functionid, value_ret, eval_func_cb);
+ break;
+ }
+
+ zbx_eval_clear(&local_ctx);
+
+ if (NULL == *value_ret)
+ *value_ret = zbx_strdup(NULL, "*UNKNOWN*");
+}
+
+void zbx_db_trigger_explain_expression(const ZBX_DB_TRIGGER *trigger, char **expression,
+ zbx_trigger_func_t eval_func_cb, int recovery)
+{
+ zbx_trigger_cache_t *cache;
+ zbx_trigger_cache_state_t state;
+ const zbx_eval_context_t *ctx;
+
+ state = (1 == recovery) ? ZBX_TRIGGER_CACHE_EVAL_CTX_R_MACROS : ZBX_TRIGGER_CACHE_EVAL_CTX_MACROS;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, state)))
+ {
+ *expression = zbx_strdup(NULL, "*UNKNOWN*");
+ return;
+ }
+
+ ctx = (1 == recovery) ? &cache->eval_ctx_r : &cache->eval_ctx;
+
+ db_trigger_explain_expression(ctx, expression, eval_func_cb);
+}
+
+void zbx_db_trigger_get_function_value(const ZBX_DB_TRIGGER *trigger, int index, char **value,
+ zbx_trigger_func_t eval_func_cb, int recovery)
+{
+ zbx_trigger_cache_t *cache;
+ zbx_trigger_cache_state_t state;
+ const zbx_eval_context_t *ctx;
+
+ state = (1 == recovery) ? ZBX_TRIGGER_CACHE_EVAL_CTX_R : ZBX_TRIGGER_CACHE_EVAL_CTX;
+
+ if (NULL == (cache = db_trigger_get_cache(trigger, state)))
+ {
+ *value = zbx_strdup(NULL, "*UNKNOWN*");
+ return;
+ }
+
+ ctx = (1 == recovery) ? &cache->eval_ctx_r : &cache->eval_ctx;
+
+ db_trigger_get_function_value(ctx, index, value, eval_func_cb);
+}
diff --git a/src/libs/zbxdbhigh/trigger_dep_linking.c b/src/libs/zbxdbwrap/trigger_dep_linking.c
index eeecce73a24..6bc847ed64b 100644
--- a/src/libs/zbxdbhigh/trigger_dep_linking.c
+++ b/src/libs/zbxdbwrap/trigger_dep_linking.c
@@ -18,7 +18,7 @@
**/
#include "trigger_dep_linking.h"
-#include "zbxdbhigh.h"
+#include "zbxdbwrap.h"
#include "log.h"
#include "audit/zbxaudit_trigger.h"
diff --git a/src/libs/zbxdbhigh/trigger_dep_linking.h b/src/libs/zbxdbwrap/trigger_dep_linking.h
index 1949f5fc4d7..1949f5fc4d7 100644
--- a/src/libs/zbxdbhigh/trigger_dep_linking.h
+++ b/src/libs/zbxdbwrap/trigger_dep_linking.h
diff --git a/src/libs/zbxdbhigh/trigger_linking.c b/src/libs/zbxdbwrap/trigger_linking.c
index 9f378e370a9..e5e0ab153d0 100644
--- a/src/libs/zbxdbhigh/trigger_linking.c
+++ b/src/libs/zbxdbwrap/trigger_linking.c
@@ -18,7 +18,7 @@
**/
#include "trigger_linking.h"
-#include "zbxdbhigh.h"
+#include "zbxdbwrap.h"
#include "trigger_dep_linking.h"
#include "zbxeval.h"
diff --git a/src/libs/zbxdbhigh/trigger_linking.h b/src/libs/zbxdbwrap/trigger_linking.h
index cad6cdde368..cad6cdde368 100644
--- a/src/libs/zbxdbhigh/trigger_linking.h
+++ b/src/libs/zbxdbwrap/trigger_linking.h
diff --git a/src/libs/zbxdiag/diag.c b/src/libs/zbxdiag/diag.c
index 840d48d7380..f2b07d9aaaa 100644
--- a/src/libs/zbxdiag/diag.c
+++ b/src/libs/zbxdiag/diag.c
@@ -22,7 +22,7 @@
#include "zbxjson.h"
#include "zbxalgo.h"
#include "zbxshmem.h"
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "preproc.h"
#include "log.h"
#include "zbxmutexs.h"
diff --git a/src/libs/zbxhistory/history_elastic.c b/src/libs/zbxhistory/history_elastic.c
index 80e0e0da478..a98840cecc2 100644
--- a/src/libs/zbxhistory/history_elastic.c
+++ b/src/libs/zbxhistory/history_elastic.c
@@ -22,7 +22,8 @@
#include "log.h"
#include "zbxalgo.h"
-#include "dbcache.h"
+#include "zbxdb.h"
+#include "zbxstr.h"
#include "zbxnum.h"
/* curl_multi_wait() is supported starting with version 7.28.0 (0x071c00) */
diff --git a/src/libs/zbxhistory/history_sql.c b/src/libs/zbxhistory/history_sql.c
index b439ae6f334..770262cb9ba 100644
--- a/src/libs/zbxhistory/history_sql.c
+++ b/src/libs/zbxhistory/history_sql.c
@@ -22,7 +22,6 @@
#include "zbxalgo.h"
#include "zbxdbhigh.h"
-#include "dbcache.h"
#include "zbxnum.h"
typedef struct
diff --git a/src/libs/zbxjson/Makefile.am b/src/libs/zbxjson/Makefile.am
index ad27f80c98e..f7981730a30 100644
--- a/src/libs/zbxjson/Makefile.am
+++ b/src/libs/zbxjson/Makefile.am
@@ -8,4 +8,6 @@ libzbxjson_a_SOURCES = \
json_parser.c \
json_parser.h \
jsonpath.c \
- jsonpath.h
+ jsonpath.h \
+ jsonobj.c \
+ jsonobj.h
diff --git a/src/libs/zbxjson/json.c b/src/libs/zbxjson/json.c
index e819f23e892..539c4d834bc 100644
--- a/src/libs/zbxjson/json.c
+++ b/src/libs/zbxjson/json.c
@@ -841,7 +841,7 @@ static unsigned int zbx_json_decode_character(const char **p, unsigned char *byt
* string copying failed. *
* *
******************************************************************************/
-static const char *zbx_json_copy_string(const char *p, char *out, size_t size)
+const char *json_copy_string(const char *p, char *out, size_t size)
{
char *start = out;
@@ -920,7 +920,7 @@ const char *zbx_json_decodevalue(const char *p, char *string, size_t size, zbx_j
/* only primitive values are decoded */
return NULL;
default:
- if (0 == (len = json_parse_value(p, NULL)))
+ if (0 == (len = json_parse_value(p, NULL, NULL)))
return NULL;
}
@@ -930,7 +930,7 @@ const char *zbx_json_decodevalue(const char *p, char *string, size_t size, zbx_j
switch (type_local)
{
case ZBX_JSON_TYPE_STRING:
- return zbx_json_copy_string(p, string, size);
+ return json_copy_string(p, string, size);
case ZBX_JSON_TYPE_NULL:
if (0 == size)
return NULL;
@@ -954,7 +954,7 @@ const char *zbx_json_decodevalue_dyn(const char *p, char **string, size_t *strin
/* only primitive values are decoded */
return NULL;
default:
- if (0 == (len = json_parse_value(p, NULL)))
+ if (0 == (len = json_parse_value(p, NULL, NULL)))
return NULL;
}
@@ -970,7 +970,7 @@ const char *zbx_json_decodevalue_dyn(const char *p, char **string, size_t *strin
switch (type_local)
{
case ZBX_JSON_TYPE_STRING:
- return zbx_json_copy_string(p, *string, *string_alloc);
+ return json_copy_string(p, *string, *string_alloc);
case ZBX_JSON_TYPE_NULL:
**string = '\0';
return p + len;
@@ -987,7 +987,7 @@ const char *zbx_json_pair_next(const struct zbx_json_parse *jp, const char *p, c
if (ZBX_JSON_TYPE_STRING != __zbx_json_type(p))
return NULL;
- if (NULL == (p = zbx_json_copy_string(p, name, len)))
+ if (NULL == (p = json_copy_string(p, name, len)))
return NULL;
SKIP_WHITESPACE(p);
@@ -1219,7 +1219,7 @@ int zbx_json_open_path(const struct zbx_json_parse *jp, const char *path, struct
object.start = p;
if (NULL == (object.end = __zbx_json_rbracket(p)))
- object.end = p + json_parse_value(p, NULL) - 1;
+ object.end = p + json_parse_value(p, NULL, NULL) - 1;
}
*out = object;
diff --git a/src/libs/zbxjson/json.h b/src/libs/zbxjson/json.h
index e0c02e174ab..27006bc5f01 100644
--- a/src/libs/zbxjson/json.h
+++ b/src/libs/zbxjson/json.h
@@ -32,4 +32,6 @@
void zbx_set_json_strerror(const char *fmt, ...) __zbx_attr_format_printf(1, 2);
+const char *json_copy_string(const char *p, char *out, size_t size);
+
#endif
diff --git a/src/libs/zbxjson/json_parser.c b/src/libs/zbxjson/json_parser.c
index 403a3ca2753..0ea71203ec8 100644
--- a/src/libs/zbxjson/json_parser.c
+++ b/src/libs/zbxjson/json_parser.c
@@ -21,27 +21,31 @@
#include "zbxcommon.h"
#include "json.h"
-
-static zbx_int64_t json_parse_object(const char *start, char **error);
+#include "jsonobj.h"
/******************************************************************************
* *
* Purpose: Prepares JSON parsing error message *
* *
- * Parameters: message - [IN] the error message *
- * json_buffer - [IN] the failing data fragment *
- * error - [OUT] the parsing error message (can be NULL) *
+ * Parameters: message - [IN] the error message *
+ * ptr - [IN] the failing data fragment *
+ * error - [OUT] the parsing error message (can be NULL) *
* *
* Return value: 0 - the json_error() function always returns 0 value *
* so it can be used to return from failed parses *
* *
******************************************************************************/
-static zbx_int64_t json_error(const char *message, const char *json_buffer, char **error)
+zbx_int64_t json_error(const char *message, const char *ptr, char **error)
{
if (NULL != error)
{
- if (NULL != json_buffer)
- *error = zbx_dsprintf(*error, "%s at: '%s'", message, json_buffer);
+ if (NULL != ptr)
+ {
+ if (128 < strlen(ptr))
+ *error = zbx_dsprintf(*error, "%s at: '%128s...'", message, ptr);
+ else
+ *error = zbx_dsprintf(*error, "%s at: '%s'", message, ptr);
+ }
else
*error = zbx_strdup(*error, message);
}
@@ -54,6 +58,7 @@ static zbx_int64_t json_error(const char *message, const char *json_buffer, char
* Purpose: Parses JSON string value or object name *
* *
* Parameters: start - [IN] the JSON data without leading whitespace *
+ * str - [OUT] the parsed unquoted string (can be NULL) *
* error - [OUT] the parsing error message (can be NULL) *
* *
* Return value: The number of characters parsed. On error 0 is returned and *
@@ -61,7 +66,7 @@ static zbx_int64_t json_error(const char *message, const char *json_buffer, char
* message. *
* *
******************************************************************************/
-static zbx_int64_t json_parse_string(const char *start, char **error)
+static zbx_int64_t json_parse_string(const char *start, char **str, char **error)
{
const char *ptr = start;
@@ -119,6 +124,12 @@ static zbx_int64_t json_parse_string(const char *start, char **error)
ptr++;
}
+ if (NULL != str)
+ {
+ *str = (char *)zbx_malloc(NULL, (size_t)(ptr - start));
+ json_copy_string(start, *str, (size_t)(ptr - start));
+ }
+
return ptr - start + 1;
}
@@ -127,6 +138,7 @@ static zbx_int64_t json_parse_string(const char *start, char **error)
* Purpose: Parses JSON array value *
* *
* Parameters: start - [IN] the JSON data without leading whitespace *
+ * obj - [IN/OUT] the JSON object (can be NULL) *
* error - [OUT] the parsing error message (can be NULL) *
* *
* Return value: The number of characters parsed. On error 0 is returned and *
@@ -134,11 +146,14 @@ static zbx_int64_t json_parse_string(const char *start, char **error)
* message. *
* *
******************************************************************************/
-static zbx_int64_t json_parse_array(const char *start, char **error)
+zbx_int64_t json_parse_array(const char *start, zbx_jsonobj_t *obj, char **error)
{
const char *ptr = start;
zbx_int64_t len;
+ if (NULL != obj)
+ jsonobj_init(obj, ZBX_JSON_TYPE_ARRAY);
+
ptr++;
SKIP_WHITESPACE(ptr);
@@ -146,9 +161,29 @@ static zbx_int64_t json_parse_array(const char *start, char **error)
{
while (1)
{
+ zbx_jsonobj_t *value;
+
+ if (NULL != obj)
+ {
+ value = zbx_malloc(NULL, sizeof(zbx_jsonobj_t));
+ jsonobj_init(value, ZBX_JSON_TYPE_UNKNOWN);
+ }
+ else
+ value = NULL;
+
/* json_parse_value strips leading whitespace, so we don't have to do it here */
- if (0 == (len = json_parse_value(ptr, error)))
+ if (0 == (len = json_parse_value(ptr, value, error)))
+ {
+ if (NULL != obj)
+ {
+ zbx_jsonobj_clear(value);
+ zbx_free(value);
+ }
return 0;
+ }
+
+ if (NULL != obj)
+ zbx_vector_jsonobj_ptr_append(&obj->data.array, value);
ptr += len;
SKIP_WHITESPACE(ptr);
@@ -171,15 +206,16 @@ static zbx_int64_t json_parse_array(const char *start, char **error)
* *
* Purpose: Parses JSON number value *
* *
- * Parameters: start - [IN] the JSON data without leading whitespace *
- * error - [OUT] the parsing error message (can be NULL) *
+ * Parameters: start - [IN] the JSON data without leading whitespace *
+ * number - [OUT] the parsed number (can be NULL) *
+ * error - [OUT] the parsing error message (can be NULL) *
* *
* Return value: The number of characters parsed. On error 0 is returned and *
* error parameter (if not NULL) contains allocated error *
* message. *
* *
******************************************************************************/
-static zbx_int64_t json_parse_number(const char *start, char **error)
+static zbx_int64_t json_parse_number(const char *start, double *number, char **error)
{
const char *ptr = start;
char first_digit;
@@ -235,6 +271,9 @@ static zbx_int64_t json_parse_number(const char *start, char **error)
}
}
+ if (NULL != number)
+ *number = atof(start);
+
return ptr - start;
}
@@ -281,10 +320,12 @@ static zbx_int64_t json_parse_literal(const char *start, const char *text, char
* message. *
* *
******************************************************************************/
-zbx_int64_t json_parse_value(const char *start, char **error)
+zbx_int64_t json_parse_value(const char *start, zbx_jsonobj_t *obj, char **error)
{
const char *ptr = start;
zbx_int64_t len;
+ char *str = NULL;
+ double number;
SKIP_WHITESPACE(ptr);
@@ -293,28 +334,40 @@ zbx_int64_t json_parse_value(const char *start, char **error)
case '\0':
return json_error("unexpected end of object value", NULL, error);
case '"':
- if (0 == (len = json_parse_string(ptr, error)))
+ if (0 == (len = json_parse_string(ptr, (NULL != obj ? &str : NULL), error)))
return 0;
+
+ if (NULL != obj)
+ jsonobj_set_string(obj, str);
break;
case '{':
- if (0 == (len = json_parse_object(ptr, error)))
+ if (0 == (len = json_parse_object(ptr, obj, error)))
return 0;
break;
case '[':
- if (0 == (len = json_parse_array(ptr, error)))
+ if (0 == (len = json_parse_array(ptr, obj, error)))
return 0;
break;
case 't':
if (0 == (len = json_parse_literal(ptr, "true", error)))
return 0;
+
+ if (NULL != obj)
+ jsonobj_set_true(obj);
break;
case 'f':
if (0 == (len = json_parse_literal(ptr, "false", error)))
return 0;
+
+ if (NULL != obj)
+ jsonobj_set_false(obj);
break;
case 'n':
if (0 == (len = json_parse_literal(ptr, "null", error)))
return 0;
+
+ if (NULL != obj)
+ jsonobj_set_null(obj);
break;
case '0':
case '1':
@@ -327,8 +380,12 @@ zbx_int64_t json_parse_value(const char *start, char **error)
case '8':
case '9':
case '-':
- if (0 == (len = json_parse_number(ptr, error)))
+ if (0 == (len = json_parse_number(ptr, (NULL != obj ? &number : NULL), error)))
return 0;
+
+ if (NULL != obj)
+ jsonobj_set_number(obj, number);
+
break;
default:
return json_error("invalid JSON object value starting character", ptr, error);
@@ -342,6 +399,7 @@ zbx_int64_t json_parse_value(const char *start, char **error)
* Purpose: Parses JSON object *
* *
* Parameters: start - [IN] the JSON data *
+ * obj - [IN/OUT] the JSON object (can be NULL) *
* error - [OUT] the parsing error message (can be NULL) *
* *
* Return value: The number of characters parsed. On error 0 is returned and *
@@ -349,10 +407,13 @@ zbx_int64_t json_parse_value(const char *start, char **error)
* message. *
* *
******************************************************************************/
-static zbx_int64_t json_parse_object(const char *start, char **error)
+zbx_int64_t json_parse_object(const char *start, zbx_jsonobj_t *obj, char **error)
{
- const char *ptr = start;
- zbx_int64_t len;
+ const char *ptr = start;
+ zbx_int64_t len;
+
+ if (NULL != obj)
+ jsonobj_init(obj, ZBX_JSON_TYPE_OBJECT);
/* parse object name */
SKIP_WHITESPACE(ptr);
@@ -364,11 +425,15 @@ static zbx_int64_t json_parse_object(const char *start, char **error)
{
while (1)
{
+ zbx_jsonobj_el_t el;
+
if ('"' != *ptr)
return json_error("invalid object name", ptr, error);
+ jsonobj_el_init(&el);
+
/* cannot parse object name, failing */
- if (0 == (len = json_parse_string(ptr, error)))
+ if (0 == (len = json_parse_string(ptr, (NULL != obj ? &el.name : NULL), error)))
return 0;
ptr += len;
@@ -377,11 +442,21 @@ static zbx_int64_t json_parse_object(const char *start, char **error)
SKIP_WHITESPACE(ptr);
if (':' != *ptr)
+ {
+ jsonobj_el_clear(&el);
return json_error("invalid object name/value separator", ptr, error);
+ }
+
ptr++;
- if (0 == (len = json_parse_value(ptr, error)))
+ if (0 == (len = json_parse_value(ptr, (NULL != obj ? &el.value : NULL), error)))
+ {
+ jsonobj_el_clear(&el);
return 0;
+ }
+
+ if (NULL != obj)
+ zbx_hashset_insert(&obj->data.object, &el, sizeof(el));
ptr += len;
@@ -426,11 +501,11 @@ zbx_int64_t zbx_json_validate(const char *start, char **error)
switch (*start)
{
case '{':
- if (0 == (len = json_parse_object(start, error)))
+ if (0 == (len = json_parse_object(start, NULL, error)))
return 0;
break;
case '[':
- if (0 == (len = json_parse_array(start, error)))
+ if (0 == (len = json_parse_array(start, NULL, error)))
return 0;
break;
default:
diff --git a/src/libs/zbxjson/json_parser.h b/src/libs/zbxjson/json_parser.h
index f9fb3bb8cf5..cd54939eb7d 100644
--- a/src/libs/zbxjson/json_parser.h
+++ b/src/libs/zbxjson/json_parser.h
@@ -21,9 +21,15 @@
#define ZABBIX_JSON_PARSER_H
#include "zbxtypes.h"
+#include "jsonobj.h"
zbx_int64_t zbx_json_validate(const char *start, char **error);
-zbx_int64_t json_parse_value(const char *start, char **error);
+zbx_int64_t json_parse_value(const char *start, zbx_jsonobj_t *obj, char **error);
+
+zbx_int64_t json_error(const char *message, const char *ptr, char **error);
+
+zbx_int64_t json_parse_object(const char *start, zbx_jsonobj_t *obj, char **error);
+zbx_int64_t json_parse_array(const char *start, zbx_jsonobj_t *obj, char **error);
#endif
diff --git a/src/libs/zbxjson/jsonobj.c b/src/libs/zbxjson/jsonobj.c
new file mode 100644
index 00000000000..2a7c365284c
--- /dev/null
+++ b/src/libs/zbxjson/jsonobj.c
@@ -0,0 +1,366 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#include "jsonobj.h"
+
+#include "json_parser.h"
+#include "json.h"
+#include "zbxstr.h"
+
+ZBX_PTR_VECTOR_IMPL(jsonobj_ptr, zbx_jsonobj_t *)
+ZBX_VECTOR_IMPL(jsonobj_ref, zbx_jsonobj_ref_t)
+
+/* jsonobject index hashset support */
+
+static zbx_hash_t jsonobj_index_el_hash(const void *v)
+{
+ const zbx_jsonobj_index_el_t *el = (const zbx_jsonobj_index_el_t *)v;
+
+ return ZBX_DEFAULT_STRING_HASH_FUNC(el->value);
+}
+
+static int jsonobj_index_el_compare(const void *v1, const void *v2)
+{
+ const zbx_jsonobj_index_el_t *el1 = (const zbx_jsonobj_index_el_t *)v1;
+ const zbx_jsonobj_index_el_t *el2 = (const zbx_jsonobj_index_el_t *)v2;
+
+ return strcmp(el1->value, el2->value);
+}
+
+/* jsonobject values hashset support */
+
+static zbx_hash_t jsonobj_el_hash(const void *v)
+{
+ const zbx_jsonobj_el_t *el = (const zbx_jsonobj_el_t *)v;
+
+ return ZBX_DEFAULT_STRING_HASH_FUNC(el->name);
+}
+
+static int jsonobj_el_compare(const void *v1, const void *v2)
+{
+ const zbx_jsonobj_el_t *el1 = (const zbx_jsonobj_el_t *)v1;
+ const zbx_jsonobj_el_t *el2 = (const zbx_jsonobj_el_t *)v2;
+
+ return strcmp(el1->name, el2->name);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: initialize json object structure *
+ * *
+ * Parameters: obj - [IN/OUT] the json object to initialize *
+ * type - [IN] the json object type *
+ * *
+ ******************************************************************************/
+void jsonobj_init(zbx_jsonobj_t *obj, zbx_json_type_t type)
+{
+ obj->type = type;
+
+ switch (type)
+ {
+ case ZBX_JSON_TYPE_ARRAY:
+ zbx_vector_jsonobj_ptr_create(&obj->data.array);
+ break;
+ case ZBX_JSON_TYPE_OBJECT:
+ zbx_hashset_create(&obj->data.object, 0, jsonobj_el_hash, jsonobj_el_compare);
+ break;
+ default:
+ memset(&obj->data, 0, sizeof(obj->data));
+ break;
+ }
+
+ obj->index = NULL;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: free resources allocated by json object index element *
+ * *
+ * Parameters: v - [IN] the json index element *
+ * *
+ ******************************************************************************/
+static void jsonobj_index_el_clear(void *v)
+{
+ zbx_jsonobj_index_el_t *el = (zbx_jsonobj_index_el_t *)v;
+ int i;
+
+ zbx_free(el->value);
+ for (i = 0; i < el->objects.values_num; i++)
+ {
+ zbx_free(el->objects.values[i].name);
+
+ if (0 != el->objects.values[i].external)
+ {
+ zbx_jsonobj_clear(el->objects.values[i].value);
+ zbx_free(el->objects.values[i].value);
+ }
+ }
+
+ zbx_vector_jsonobj_ref_destroy(&el->objects);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: initialize json object index *
+ * *
+ * Parameters: obj - [IN/OUT] the json object *
+ * path - [IN] the indexed relative path *
+ * *
+ ******************************************************************************/
+void jsonobj_init_index(zbx_jsonobj_t *obj, const char *path)
+{
+ obj->index = (zbx_jsonobj_index_t *)zbx_malloc(NULL, sizeof(zbx_jsonobj_index_t));
+ obj->index->path = zbx_strdup(NULL, path);
+ zbx_hashset_create_ext(&obj->index->objects, 0, jsonobj_index_el_hash, jsonobj_index_el_compare,
+ jsonobj_index_el_clear, ZBX_DEFAULT_MEM_MALLOC_FUNC, ZBX_DEFAULT_MEM_REALLOC_FUNC,
+ ZBX_DEFAULT_MEM_FREE_FUNC);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: set string value to json object *
+ * *
+ ******************************************************************************/
+void jsonobj_set_string(zbx_jsonobj_t *obj, char *str)
+{
+ obj->type = ZBX_JSON_TYPE_STRING;
+ obj->data.string = str;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: set numeric value to json object *
+ * *
+ ******************************************************************************/
+void jsonobj_set_number(zbx_jsonobj_t *obj, double number)
+{
+ obj->type = ZBX_JSON_TYPE_NUMBER;
+ obj->data.number = number;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: set true value to json object *
+ * *
+ ******************************************************************************/
+void jsonobj_set_true(zbx_jsonobj_t *obj)
+{
+ obj->type = ZBX_JSON_TYPE_TRUE;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: set false value to json object *
+ * *
+ ******************************************************************************/
+void jsonobj_set_false(zbx_jsonobj_t *obj)
+{
+ obj->type = ZBX_JSON_TYPE_FALSE;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: set null value to json object *
+ * *
+ ******************************************************************************/
+void jsonobj_set_null(zbx_jsonobj_t *obj)
+{
+ obj->type = ZBX_JSON_TYPE_NULL;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: initialize json object element *
+ * *
+ ******************************************************************************/
+void jsonobj_el_init(zbx_jsonobj_el_t *el)
+{
+ el->name = NULL;
+ jsonobj_init(&el->value, ZBX_JSON_TYPE_UNKNOWN);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: free resources allocated by json object element *
+ * *
+ ******************************************************************************/
+void jsonobj_el_clear(zbx_jsonobj_el_t *el)
+{
+ zbx_free(el->name);
+ zbx_jsonobj_clear(&el->value);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: free json object *
+ * *
+ ******************************************************************************/
+static void jsonobj_free(zbx_jsonobj_t *obj)
+{
+ zbx_jsonobj_clear(obj);
+ zbx_free(obj);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: free resources allocated by json object *
+ * *
+ ******************************************************************************/
+void zbx_jsonobj_clear(zbx_jsonobj_t *obj)
+{
+ zbx_jsonobj_el_t *el;
+ zbx_hashset_iter_t iter;
+
+ switch (obj->type)
+ {
+ case ZBX_JSON_TYPE_STRING:
+ zbx_free(obj->data.string);
+ break;
+ case ZBX_JSON_TYPE_ARRAY:
+ zbx_vector_jsonobj_ptr_clear_ext(&obj->data.array, jsonobj_free);
+ zbx_vector_jsonobj_ptr_destroy(&obj->data.array);
+ break;
+ case ZBX_JSON_TYPE_OBJECT:
+ zbx_hashset_iter_reset(&obj->data.object, &iter);
+ while (NULL != (el = (zbx_jsonobj_el_t *)zbx_hashset_iter_next(&iter)))
+ {
+ zbx_free(el->name);
+ zbx_jsonobj_clear(&el->value);
+ }
+ zbx_hashset_destroy(&obj->data.object);
+ break;
+ default:
+ break;
+ }
+
+ if (NULL != obj->index)
+ {
+ zbx_free(obj->index->path);
+ zbx_hashset_destroy(&obj->index->objects);
+ zbx_free(obj->index);
+ }
+}
+
+/******************************************************************************
+ * *
+ * Purpose: convert json object to text format *
+ * *
+ ******************************************************************************/
+int zbx_jsonobj_to_string(char **str, size_t *str_alloc, size_t *str_offset, zbx_jsonobj_t *obj)
+{
+ char *tmp, buf[32], delim;
+ int i;
+ zbx_hashset_iter_t iter;
+ zbx_jsonobj_el_t *el;
+
+ switch (obj->type)
+ {
+ case ZBX_JSON_TYPE_TRUE:
+ zbx_strcpy_alloc(str, str_alloc, str_offset, "true");
+ break;
+ case ZBX_JSON_TYPE_FALSE:
+ zbx_strcpy_alloc(str, str_alloc, str_offset, "false");
+ break;
+ case ZBX_JSON_TYPE_NULL:
+ zbx_strcpy_alloc(str, str_alloc, str_offset, "null");
+ break;
+ case ZBX_JSON_TYPE_STRING:
+ tmp = zbx_strdup(NULL, obj->data.string);
+ zbx_json_escape(&tmp);
+ zbx_snprintf_alloc(str, str_alloc, str_offset, "\"%s\"", tmp);
+ zbx_free(tmp);
+ break;
+ case ZBX_JSON_TYPE_NUMBER:
+ zbx_print_double(buf, sizeof(buf), obj->data.number);
+ zbx_strcpy_alloc(str, str_alloc, str_offset, buf);
+ break;
+ case ZBX_JSON_TYPE_ARRAY:
+ delim = '[';
+ for (i = 0; i < obj->data.array.values_num; i++)
+ {
+ zbx_chrcpy_alloc(str, str_alloc, str_offset, delim);
+ delim = ',';
+ zbx_jsonobj_to_string(str, str_alloc, str_offset, obj->data.array.values[i]);
+ }
+ zbx_chrcpy_alloc(str, str_alloc, str_offset, ']');
+ break;
+ case ZBX_JSON_TYPE_OBJECT:
+ delim = '{';
+ zbx_hashset_iter_reset(&obj->data.object, &iter);
+ while (NULL != (el = (zbx_jsonobj_el_t *)zbx_hashset_iter_next(&iter)))
+ {
+ zbx_chrcpy_alloc(str, str_alloc, str_offset, delim);
+ delim = ',';
+
+ tmp = zbx_strdup(NULL, el->name);
+ zbx_json_escape(&tmp);
+ zbx_snprintf_alloc(str, str_alloc, str_offset, "\"%s\"", tmp);
+ zbx_chrcpy_alloc(str, str_alloc, str_offset, ':');
+ zbx_free(tmp);
+
+ zbx_jsonobj_to_string(str, str_alloc, str_offset, &el->value);
+ }
+ zbx_chrcpy_alloc(str, str_alloc, str_offset, '}');
+ break;
+ default:
+ zbx_set_json_strerror("unknown json object with type: %u", obj->type);
+ return FAIL;
+ }
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: parses json formatted data into json object structure *
+ * *
+ ******************************************************************************/
+int zbx_jsonobj_open(const char *data, zbx_jsonobj_t *obj)
+{
+ int ret = FAIL;
+ char *error = NULL;
+
+ switch (*data)
+ {
+ case '{':
+ if (0 == json_parse_object(data, obj, &error))
+ goto out;
+ break;
+ case '[':
+ if (0 == json_parse_array(data, obj, &error))
+ goto out;
+ break;
+ default:
+ /* not json data, failing */
+ jsonobj_init(obj, ZBX_JSON_TYPE_UNKNOWN);
+ (void)json_error("invalid object format, expected opening character '{' or '['", data, &error);
+ goto out;
+ }
+
+ ret = SUCCEED;
+out:
+ if (FAIL == ret)
+ {
+ zbx_jsonobj_clear(obj);
+ zbx_set_json_strerror("%s", error);
+ zbx_free(error);
+ }
+
+ return ret;
+}
diff --git a/src/libs/zbxjson/jsonobj.h b/src/libs/zbxjson/jsonobj.h
new file mode 100644
index 00000000000..dfd12df6b9b
--- /dev/null
+++ b/src/libs/zbxjson/jsonobj.h
@@ -0,0 +1,56 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+#ifndef ZABBIX_JSONOBJ_H
+#define ZABBIX_JSONOBJ_H
+
+#include "zbxjson.h"
+
+typedef struct
+{
+ char *name;
+ zbx_jsonobj_t *value;
+ unsigned char external; /* 1 - the reference is to an external object. */
+ /* 0 - the reference is to a local object which must be freed */
+ /* when reference is destroyed */
+}
+zbx_jsonobj_ref_t;
+
+ZBX_VECTOR_DECL(jsonobj_ref, zbx_jsonobj_ref_t)
+
+typedef struct
+{
+ char *value; /* the value found at indexed path */
+ zbx_vector_jsonobj_ref_t objects; /* the objects matching value at indexed path */
+}
+zbx_jsonobj_index_el_t;
+
+void jsonobj_init(zbx_jsonobj_t *obj, zbx_json_type_t type);
+
+void jsonobj_el_init(zbx_jsonobj_el_t *el);
+void jsonobj_init_index(zbx_jsonobj_t *obj, const char *path);
+void jsonobj_el_clear(zbx_jsonobj_el_t *el);
+
+void jsonobj_set_string(zbx_jsonobj_t *obj, char *str);
+void jsonobj_set_number(zbx_jsonobj_t *obj, double number);
+void jsonobj_set_true(zbx_jsonobj_t *obj);
+void jsonobj_set_false(zbx_jsonobj_t *obj);
+void jsonobj_set_null(zbx_jsonobj_t *obj);
+
+#endif
diff --git a/src/libs/zbxjson/jsonpath.c b/src/libs/zbxjson/jsonpath.c
index b57aff6f8d5..eec2ffc6935 100644
--- a/src/libs/zbxjson/jsonpath.c
+++ b/src/libs/zbxjson/jsonpath.c
@@ -18,7 +18,6 @@
**/
#include "jsonpath.h"
-#include "zbxjson.h"
#include "zbxregexp.h"
#include "zbxvariant.h"
@@ -26,21 +25,17 @@
#include "zbxexpr.h"
#include "json.h"
#include "json_parser.h"
+#include "jsonobj.h"
typedef struct
{
- char *name;
- const char *value;
+ zbx_jsonobj_t *root; /* the root object */
+ zbx_jsonpath_t *path;
+ unsigned char found; /* set to 1 when one object was matched and */
+ /* no more matches are required */
+ zbx_vector_jsonobj_ref_t objects; /* the matched objects */
}
-zbx_json_element_t;
-
-ZBX_VECTOR_DECL(json, zbx_json_element_t)
-ZBX_VECTOR_IMPL(json, zbx_json_element_t)
-
-static int jsonpath_query_object(const struct zbx_json_parse *jp_root, const struct zbx_json_parse *jp,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects);
-static int jsonpath_query_array(const struct zbx_json_parse *jp_root, const struct zbx_json_parse *jp,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects);
+zbx_jsonpath_context_t;
typedef struct
{
@@ -49,6 +44,10 @@ typedef struct
}
zbx_jsonpath_token_def_t;
+static int jsonpath_query_object(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *obj, int path_depth);
+static int jsonpath_query_array(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *array, int path_depth);
+static int jsonpath_str_copy_value(char **str, size_t *str_alloc, size_t *str_offset, zbx_jsonobj_t *obj);
+
/* define token groups and precedence */
static zbx_jsonpath_token_def_t jsonpath_tokens[] = {
{0, 0},
@@ -74,6 +73,7 @@ static zbx_jsonpath_token_def_t jsonpath_tokens[] = {
{ZBX_JSONPATH_TOKEN_GROUP_OPERATOR2, 7} /* ZBX_JSONPATH_TOKEN_OP_REGEXP */
};
+
static int jsonpath_token_precedence(int type)
{
return jsonpath_tokens[type].precedence;
@@ -84,31 +84,118 @@ static int jsonpath_token_group(int type)
return jsonpath_tokens[type].group;
}
-/* json element vector support */
-static void zbx_vector_json_add_element(zbx_vector_json_t *elements, const char *name, const char *value)
+/******************************************************************************
+ * *
+ * Purpose: add external json object reference to a vector *
+ * *
+ * Parameters: refs - [IN/OUT] the json object reference vector *
+ * name - [IN] the json object name or array index *
+ * value - [IN] the json object *
+ * *
+ ******************************************************************************/
+static void zbx_vector_jsonobj_ref_add_object(zbx_vector_jsonobj_ref_t *refs, const char *name,
+ zbx_jsonobj_t *value)
{
- zbx_json_element_t el;
+ zbx_jsonobj_ref_t ref;
- el.name = zbx_strdup(NULL, name);
- el.value = value;
- zbx_vector_json_append(elements, el);
+ ref.name = zbx_strdup(NULL, name);
+ ref.external = 1;
+
+ ref.value = value;
+ zbx_vector_jsonobj_ref_append(refs, ref);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: add internal json object reference to a vector *
+ * *
+ * Parameters: refs - [IN/OUT] the json object reference vector *
+ * name - [IN] the json object name or array index *
+ * str - [IN] the string value of the object *
+ * *
+ * Comments: This function will create json object and add internal reference,*
+ * meaning the object will be destroyed together with its reference.*
+ * *
+ ******************************************************************************/
+static void zbx_vector_jsonobj_ref_add_string(zbx_vector_jsonobj_ref_t *refs, const char *name,
+ const char *str)
+{
+ zbx_jsonobj_ref_t ref;
+
+ ref.name = zbx_strdup(NULL, name);
+ ref.external = 0;
+
+ ref.value = (zbx_jsonobj_t *)zbx_malloc(NULL, sizeof(zbx_jsonobj_t));
+ jsonobj_init(ref.value, ZBX_JSON_TYPE_STRING);
+ jsonobj_set_string(ref.value, zbx_strdup(NULL, str));
+
+ zbx_vector_jsonobj_ref_append(refs, ref);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: add a copy of json object reference to a vector *
+ * *
+ * Parameters: refs - [IN/OUT] the json object reference vector *
+ * ref - [IN] the json object reference *
+ * *
+ * Comments: For internal references a new internal json object will be *
+ * created. *
+ * *
+ ******************************************************************************/
+static void zbx_vector_jsonobj_ref_add(zbx_vector_jsonobj_ref_t *refs, zbx_jsonobj_ref_t *ref)
+{
+ if (0 != ref->external)
+ zbx_vector_jsonobj_ref_add_object(refs, ref->name, ref->value);
+ else
+ zbx_vector_jsonobj_ref_add_string(refs, ref->name, ref->value->data.string);
}
-static void zbx_vector_json_copy(zbx_vector_json_t *dst, const zbx_vector_json_t *src)
+/******************************************************************************
+ * *
+ * Purpose: copy json object references from one vector to other *
+ * *
+ * Parameters: dst - [IN/OUT] the destination json object reference vector *
+ * src - [IN] the source json object reference vector *
+ * *
+ * Comments: For internal references a new internal json object will be *
+ * created. *
+ * *
+ ******************************************************************************/
+static void zbx_vector_jsonobj_ref_copy(zbx_vector_jsonobj_ref_t *dst, const zbx_vector_jsonobj_ref_t *src)
{
int i;
for (i = 0; i < src->values_num; i++)
- zbx_vector_json_add_element(dst, src->values[i].name, src->values[i].value);
+ {
+ if (0 != src->values[i].external)
+ zbx_vector_jsonobj_ref_add_object(dst, src->values[i].name, src->values[i].value);
+ else
+ zbx_vector_jsonobj_ref_add_string(dst, src->values[i].name, src->values[i].value->data.string);
+ }
}
-static void zbx_vector_json_clear_ext(zbx_vector_json_t *elements)
+/******************************************************************************
+ * *
+ * Purpose: free resources allocated by json object reference *
+ * *
+ ******************************************************************************/
+static void zbx_vector_jsonobj_ref_clear_ext(zbx_vector_jsonobj_ref_t *refs)
{
int i;
- for (i = 0; i < elements->values_num; i++)
- zbx_free(elements->values[i].name);
- zbx_vector_json_clear(elements);
+ for (i = 0; i < refs->values_num; i++)
+ {
+ zbx_jsonobj_ref_t *ref = &refs->values[i];
+
+ zbx_free(ref->name);
+ if (0 == ref->external)
+ {
+ zbx_jsonobj_clear(ref->value);
+ zbx_free(ref->value);
+ }
+ }
+ zbx_vector_jsonobj_ref_clear(refs);
}
/******************************************************************************
@@ -215,16 +302,116 @@ static void jsonpath_list_free(zbx_jsonpath_list_node_t *list)
/******************************************************************************
* *
+ * Purpose: append array index to list *
+ * *
+ ******************************************************************************/
+static zbx_jsonpath_list_node_t *jsonpath_list_append_index(zbx_jsonpath_list_node_t *head, int index,
+ int check_duplicate)
+{
+ zbx_jsonpath_list_node_t *node;
+
+ if (0 != check_duplicate)
+ {
+ for (node = head; NULL != node; node = node->next)
+ {
+ int query_index;
+
+ memcpy(&query_index, node->data, sizeof(query_index));
+ if (query_index == index)
+ return head;
+ }
+ }
+
+ node = jsonpath_list_create_node(sizeof(int));
+ node->next = head;
+ memcpy(node->data, &index, sizeof(int));
+
+ return node;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: append name to list *
+ * *
+ ******************************************************************************/
+static zbx_jsonpath_list_node_t *jsonpath_list_append_name(zbx_jsonpath_list_node_t *head, const char *name, size_t len)
+{
+ zbx_jsonpath_list_node_t *node, *new_node;
+
+ new_node = jsonpath_list_create_node(len + 1);
+ jsonpath_unquote(new_node->data, name, len + 1);
+
+ for (node = head; NULL != node; node = node->next)
+ {
+ if (0 == strcmp((char *)new_node->data, (char *)node->data))
+ {
+ zbx_free(new_node);
+ return head;
+ }
+ }
+
+ new_node->next = head;
+
+ return new_node;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: create jsonpath structure and compile json path *
+ * *
+ ******************************************************************************/
+static zbx_jsonpath_t *jsonpath_create_token_jsonpath(const char *text, size_t len)
+{
+ zbx_jsonpath_t *path;
+ char *tmp_text;
+
+ tmp_text = jsonpath_strndup(text, len);
+
+ if ('@' == *tmp_text)
+ *tmp_text = '$';
+
+ path = (zbx_jsonpath_t *)zbx_malloc(NULL, sizeof(zbx_jsonpath_t));
+
+ if (FAIL == zbx_jsonpath_compile(tmp_text, path))
+ {
+ zbx_free(path);
+ goto out;
+ }
+
+ if (1 != path->definite)
+ {
+ zbx_set_json_strerror("only simple path are supported in jsonpath expression: \"%s\"", text);
+ zbx_jsonpath_clear(path);
+ zbx_free(path);
+ goto out;
+ }
+
+ if (ZBX_JSONPATH_SEGMENT_FUNCTION == path->segments[path->segments_num - 1].type)
+ {
+ zbx_set_json_strerror("functions are not supported in jsonpath expression: \"%s\"", text);
+ zbx_jsonpath_clear(path);
+ zbx_free(path);
+ }
+out:
+ zbx_free(tmp_text);
+
+ return path;
+}
+
+/******************************************************************************
+ * *
* Purpose: create jsonpath expression token *
* *
* Parameters: type - [IN] the token type *
* expression - [IN] the expression *
* loc - [IN] the token location in the expression *
* *
- * Return value: The created token (must be freed by the caller). *
+ * Return value: The created token (must be freed by the caller) or *
+ * NULL in the case of error. *
* *
******************************************************************************/
-static zbx_jsonpath_token_t *jsonpath_create_token(int type, const char *expression, const zbx_strloc_t *loc)
+static zbx_jsonpath_token_t *jsonpath_create_token(unsigned char type, const char *expression,
+ const zbx_strloc_t *loc)
{
zbx_jsonpath_token_t *token;
@@ -234,23 +421,46 @@ static zbx_jsonpath_token_t *jsonpath_create_token(int type, const char *express
switch (token->type)
{
case ZBX_JSONPATH_TOKEN_CONST_STR:
- token->data = jsonpath_unquote_dyn(expression + loc->l, loc->r - loc->l + 1);
+ token->text = jsonpath_unquote_dyn(expression + loc->l, loc->r - loc->l + 1);
+ token->path = NULL;
break;
case ZBX_JSONPATH_TOKEN_PATH_ABSOLUTE:
case ZBX_JSONPATH_TOKEN_PATH_RELATIVE:
+ if (NULL == (token->path = jsonpath_create_token_jsonpath(expression + loc->l,
+ loc->r - loc->l + 1)))
+ {
+ zbx_free(token);
+ }
+ else
+ token->text = jsonpath_strndup(expression + loc->l, loc->r - loc->l + 1);
+ break;
case ZBX_JSONPATH_TOKEN_CONST_NUM:
- token->data = jsonpath_strndup(expression + loc->l, loc->r - loc->l + 1);
+ token->text = jsonpath_strndup(expression + loc->l, loc->r - loc->l + 1);
+ token->path = NULL;
break;
default:
- token->data = NULL;
+ token->text = NULL;
+ token->path = NULL;
}
return token;
}
+/******************************************************************************
+ * *
+ * Purpose: free jsonpath expression token *
+ * *
+ ******************************************************************************/
static void jsonpath_token_free(zbx_jsonpath_token_t *token)
{
- zbx_free(token->data);
+ zbx_free(token->text);
+
+ if (NULL != token->path)
+ {
+ zbx_jsonpath_clear(token->path);
+ zbx_free(token->path);
+ }
+
zbx_free(token);
}
@@ -274,16 +484,21 @@ static void jsonpath_reserve(zbx_jsonpath_t *jsonpath, int num)
jsonpath->segments_alloc *= 2;
jsonpath->segments = (zbx_jsonpath_segment_t *)zbx_realloc(jsonpath->segments,
- sizeof(zbx_jsonpath_segment_t) * jsonpath->segments_alloc);
+ sizeof(zbx_jsonpath_segment_t) * (size_t)jsonpath->segments_alloc);
/* Initialize the memory allocated for new segments, as parser can set */
/* detached flag for the next segment, so the memory cannot be initialized */
/* when creating a segment. */
memset(jsonpath->segments + old_alloc, 0,
- (jsonpath->segments_alloc - old_alloc) * sizeof(zbx_jsonpath_segment_t));
+ (size_t)(jsonpath->segments_alloc - old_alloc) * sizeof(zbx_jsonpath_segment_t));
}
}
+/******************************************************************************
+ * *
+ * Purpose: free resource allocated by jsonpath segment *
+ * *
+ ******************************************************************************/
static void jsonpath_segment_clear(zbx_jsonpath_segment_t *segment)
{
switch (segment->type)
@@ -391,7 +606,7 @@ static int jsonpath_next(const char **pnext)
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_parse_substring(const char *start, int *len)
+static int jsonpath_parse_substring(const char *start, size_t *len)
{
const char *ptr;
char quotes;
@@ -400,7 +615,7 @@ static int jsonpath_parse_substring(const char *start, int *len)
{
if (*ptr == quotes)
{
- *len = ptr - start + 1;
+ *len = (size_t)(ptr - start + 1);
return SUCCEED;
}
@@ -429,7 +644,7 @@ static int jsonpath_parse_substring(const char *start, int *len)
* jsonpath filter expressions. *
* *
******************************************************************************/
-static int jsonpath_parse_path(const char *start, int *len)
+static int jsonpath_parse_path(const char *start, size_t *len)
{
const char *ptr = start + 1;
@@ -439,7 +654,7 @@ static int jsonpath_parse_path(const char *start, int *len)
return FAIL;
}
- *len = ptr - start;
+ *len = (size_t)(ptr - start);
return SUCCEED;
}
@@ -454,7 +669,7 @@ static int jsonpath_parse_path(const char *start, int *len)
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_parse_number(const char *start, int *len)
+static int jsonpath_parse_number(const char *start, size_t *len)
{
const char *ptr = start;
char *end;
@@ -474,7 +689,7 @@ static int jsonpath_parse_number(const char *start, int *len)
if (ptr != end || HUGE_VAL == tmp || -HUGE_VAL == tmp || EDOM == errno)
return FAIL;
- *len = (int)(ptr - start);
+ *len = (size_t)(ptr - start);
return SUCCEED;
}
@@ -494,14 +709,14 @@ static int jsonpath_parse_number(const char *start, int *len)
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_expression_next_token(const char *expression, int pos, int prev_group,
+static int jsonpath_expression_next_token(const char *expression, size_t pos, int prev_group,
zbx_jsonpath_token_type_t *type, zbx_strloc_t *loc)
{
- int len;
+ size_t len;
const char *ptr = expression + pos;
SKIP_WHITESPACE(ptr);
- loc->l = ptr - expression;
+ loc->l = (size_t)(ptr - expression);
switch (*ptr)
{
@@ -633,6 +848,139 @@ out:
return zbx_jsonpath_error(ptr);
}
+/* value types on index stack */
+typedef enum
+{
+ ZBX_JSONPATH_CONST = 1, /* constant value - string or number */
+ ZBX_JSONPATH_VALUE, /* result of an operation after which cannot be used in index */
+ ZBX_JSONPATH_PATH, /* relative jsonpath - @.a.b.c */
+ ZBX_JSONPATH_PATH_OP /* result of an operation with jsonpath which still can be used in index */
+}
+zbx_jsonpath_index_value_type_t;
+
+typedef struct
+{
+ zbx_jsonpath_index_value_type_t type;
+ zbx_jsonpath_token_t *index_token;
+ zbx_jsonpath_token_t *value_token;
+}
+zbx_jsonpath_index_value_t;
+
+ZBX_VECTOR_DECL(jpi_value, zbx_jsonpath_index_value_t)
+ZBX_VECTOR_IMPL(jpi_value, zbx_jsonpath_index_value_t)
+
+/******************************************************************************
+ * *
+ * Purpose: analyze expression and set indexing fields if possible *
+ * *
+ * Comments: Expression can be indexed if it contains relative json path *
+ * comparison with constant that is used in and operations. *
+ * This is tested by doing a pseudo evaluation by operand types *
+ * and checking the result type. *
+ * *
+ * So expressions like ?(@.a.b == 1), ?(@.a == "A" and @.b == "B") *
+ * can be indexed (by @.a.b and by @.a) while expressions like *
+ * ?(@.a == @.b), ?(@.a == "A" or @.b == "B") cannot. *
+ * *
+ ******************************************************************************/
+static void jsonpath_expression_prepare_index(zbx_jsonpath_expression_t *exp)
+{
+ int i;
+ zbx_vector_jpi_value_t stack;
+ zbx_jsonpath_index_value_t *left, *right;
+
+ zbx_vector_jpi_value_create(&stack);
+
+ for (i = 0; i < exp->tokens.values_num; i++)
+ {
+ zbx_jsonpath_token_t *token = (zbx_jsonpath_token_t *)exp->tokens.values[i];
+ zbx_jsonpath_index_value_t jpi = {0};
+
+ switch (token->type)
+ {
+ case ZBX_JSONPATH_TOKEN_OP_NOT:
+ if (1 > stack.values_num)
+ goto out;
+ stack.values[stack.values_num - 1].type = ZBX_JSONPATH_VALUE;
+ stack.values[stack.values_num - 1].index_token = NULL;
+ stack.values[stack.values_num - 1].value_token = NULL;
+ continue;
+ case ZBX_JSONPATH_TOKEN_PATH_RELATIVE:
+ jpi.index_token = token;
+ jpi.type = ZBX_JSONPATH_PATH;
+ zbx_vector_jpi_value_append(&stack, jpi);
+ continue;
+ case ZBX_JSONPATH_TOKEN_PATH_ABSOLUTE:
+ jpi.type = ZBX_JSONPATH_VALUE;
+ zbx_vector_jpi_value_append(&stack, jpi);
+ continue;
+ case ZBX_JSONPATH_TOKEN_CONST_STR:
+ case ZBX_JSONPATH_TOKEN_CONST_NUM:
+ jpi.value_token = token;
+ jpi.type = ZBX_JSONPATH_CONST;
+ zbx_vector_jpi_value_append(&stack, jpi);
+ continue;
+ }
+
+ if (2 > stack.values_num)
+ goto out;
+
+ left = &stack.values[stack.values_num - 2];
+ right = &stack.values[stack.values_num - 1];
+ stack.values_num--;
+
+ switch (token->type)
+ {
+ case ZBX_JSONPATH_TOKEN_OP_EQ:
+ if ((ZBX_JSONPATH_PATH == left->type || ZBX_JSONPATH_PATH == right->type) &&
+ (ZBX_JSONPATH_CONST == left->type || ZBX_JSONPATH_CONST == right->type))
+ {
+ left->type = ZBX_JSONPATH_PATH_OP;
+
+ if (ZBX_JSONPATH_CONST == right->type)
+ left->value_token = right->value_token;
+ else
+ left->index_token = right->index_token;
+ }
+ else
+ left->type = ZBX_JSONPATH_VALUE;
+ continue;
+ case ZBX_JSONPATH_TOKEN_OP_AND:
+ if (ZBX_JSONPATH_PATH == left->type)
+ left->type = ZBX_JSONPATH_VALUE;
+
+ if (ZBX_JSONPATH_PATH == right->type)
+ right->type = ZBX_JSONPATH_VALUE;
+
+ if (ZBX_JSONPATH_PATH_OP == left->type && ZBX_JSONPATH_PATH_OP == right->type)
+ continue;
+
+ if ((ZBX_JSONPATH_PATH_OP == left->type || ZBX_JSONPATH_PATH_OP == right->type) &&
+ (ZBX_JSONPATH_VALUE == left->type || ZBX_JSONPATH_VALUE == right->type))
+ {
+ if (ZBX_JSONPATH_PATH_OP != left->type)
+ *left = *right;
+ }
+ else
+ left->type = ZBX_JSONPATH_VALUE;
+ continue;
+ default:
+ left->type = ZBX_JSONPATH_VALUE;
+ left->index_token = NULL;
+ left->value_token = NULL;
+ break;
+ }
+ }
+
+ if (1 == stack.values_num && ZBX_JSONPATH_PATH_OP == stack.values[0].type)
+ {
+ exp->index_token = stack.values[0].index_token;
+ exp->value_token = stack.values[0].value_token;
+ }
+out:
+ zbx_vector_jpi_value_destroy(&stack);
+}
+
/******************************************************************************
* *
* Purpose: parse jsonpath filter expression in format *
@@ -659,7 +1007,7 @@ out:
static int jsonpath_parse_expression(const char *expression, zbx_jsonpath_t *jsonpath, const char **next)
{
int nesting = 1, ret = FAIL;
- zbx_jsonpath_token_t *optoken;
+ zbx_jsonpath_token_t *optoken, *token;
zbx_vector_ptr_t output, operators;
zbx_strloc_t loc = {0, 0};
zbx_jsonpath_token_type_t token_type;
@@ -706,7 +1054,10 @@ static int jsonpath_parse_expression(const char *expression, zbx_jsonpath_t *jso
goto out;
}
- zbx_vector_ptr_append(&output, jsonpath_create_token(token_type, expression, &loc));
+ if (NULL == (token = jsonpath_create_token(token_type, expression, &loc)))
+ goto cleanup;
+
+ zbx_vector_ptr_append(&operators, token);
prev_group = jsonpath_token_group(token_type);
continue;
}
@@ -746,14 +1097,20 @@ static int jsonpath_parse_expression(const char *expression, zbx_jsonpath_t *jso
zbx_vector_ptr_append(&output, optoken);
}
- zbx_vector_ptr_append(&operators, jsonpath_create_token(token_type, expression, &loc));
+ if (NULL == (token = jsonpath_create_token(token_type, expression, &loc)))
+ goto cleanup;
+
+ zbx_vector_ptr_append(&operators, token);
prev_group = jsonpath_token_group(token_type);
continue;
}
if (ZBX_JSONPATH_TOKEN_PAREN_LEFT == token_type)
{
- zbx_vector_ptr_append(&operators, jsonpath_create_token(token_type, expression, &loc));
+ if (NULL == (token = jsonpath_create_token(token_type, expression, &loc)))
+ goto cleanup;
+
+ zbx_vector_ptr_append(&operators, token);
prev_group = ZBX_JSONPATH_TOKEN_GROUP_NONE;
continue;
}
@@ -816,6 +1173,10 @@ out:
zbx_vector_ptr_create(&segment->data.expression.tokens);
zbx_vector_ptr_append_array(&segment->data.expression.tokens, output.values, output.values_num);
+ /* index only json path that has been definite until this point */
+ if (0 != jsonpath->definite)
+ jsonpath_expression_prepare_index(&segment->data.expression);
+
jsonpath->definite = 0;
}
cleanup:
@@ -869,18 +1230,13 @@ static int jsonpath_parse_names(const char *list, zbx_jsonpath_t *jsonpath, cons
}
else if (*start == *end)
{
- zbx_jsonpath_list_node_t *node;
-
if (start + 1 == end)
{
ret = zbx_jsonpath_error(start);
goto out;
}
- node = jsonpath_list_create_node(end - start + 1);
- jsonpath_unquote(node->data, start, end - start + 1);
- node->next = head;
- head = node;
+ head = jsonpath_list_append_name(head, start, (size_t)(end - start));
parsed_name = 1;
start = NULL;
}
@@ -987,19 +1343,13 @@ static int jsonpath_parse_indexes(const char *list, zbx_jsonpath_t *jsonpath, co
if (NULL != start)
{
- int value;
-
if ('-' == *start && end == start + 1)
{
ret = zbx_jsonpath_error(start);
goto out;
}
- node = jsonpath_list_create_node(sizeof(int));
- node->next = head;
- head = node;
- value = atoi(start);
- memcpy(node->data, &value, sizeof(int));
+ head = jsonpath_list_append_index(head, atoi(start), type == ZBX_JSONPATH_SEGMENT_MATCH_LIST);
start = NULL;
parsed_index = 1;
}
@@ -1163,7 +1513,7 @@ static int jsonpath_parse_dot_segment(const char *start, zbx_jsonpath_t *jsonpat
{
zbx_jsonpath_segment_t *segment;
const char *ptr;
- int len;
+ size_t len;
segment = &jsonpath->segments[jsonpath->segments_num];
jsonpath->segments_num++;
@@ -1179,6 +1529,8 @@ static int jsonpath_parse_dot_segment(const char *start, zbx_jsonpath_t *jsonpat
for (ptr = start; 0 != isalnum((unsigned char)*ptr) || '_' == *ptr;)
ptr++;
+ len = (size_t)(ptr - start);
+
if ('(' == *ptr)
{
const char *end = ptr + 1;
@@ -1186,18 +1538,31 @@ static int jsonpath_parse_dot_segment(const char *start, zbx_jsonpath_t *jsonpat
SKIP_WHITESPACE(end);
if (')' == *end)
{
- if (ZBX_CONST_STRLEN("min") == ptr - start && 0 == strncmp(start, "min", ptr - start))
+ if (ZBX_CONST_STRLEN("min") == len && 0 == strncmp(start, "min", len))
+ {
segment->data.function.type = ZBX_JSONPATH_FUNCTION_MIN;
- else if (ZBX_CONST_STRLEN("max") == ptr - start && 0 == strncmp(start, "max", ptr - start))
+ }
+ else if (ZBX_CONST_STRLEN("max") == len && 0 == strncmp(start, "max", len))
+ {
segment->data.function.type = ZBX_JSONPATH_FUNCTION_MAX;
- else if (ZBX_CONST_STRLEN("avg") == ptr - start && 0 == strncmp(start, "avg", ptr - start))
+ }
+ else if (ZBX_CONST_STRLEN("avg") == len && 0 == strncmp(start, "avg", len))
+ {
segment->data.function.type = ZBX_JSONPATH_FUNCTION_AVG;
- else if (ZBX_CONST_STRLEN("length") == ptr - start && 0 == strncmp(start, "length", ptr - start))
+ }
+ else if (ZBX_CONST_STRLEN("length") == len && 0 == strncmp(start, "length", len))
+ {
segment->data.function.type = ZBX_JSONPATH_FUNCTION_LENGTH;
- else if (ZBX_CONST_STRLEN("first") == ptr - start && 0 == strncmp(start, "first", ptr - start))
+ }
+ else if (ZBX_CONST_STRLEN("first") == len && 0 == strncmp(start, "first", len))
+ {
segment->data.function.type = ZBX_JSONPATH_FUNCTION_FIRST;
- else if (ZBX_CONST_STRLEN("sum") == ptr - start && 0 == strncmp(start, "sum", ptr - start))
+ jsonpath->first_match = 1;
+ }
+ else if (ZBX_CONST_STRLEN("sum") == len && 0 == strncmp(start, "sum", len))
+ {
segment->data.function.type = ZBX_JSONPATH_FUNCTION_SUM;
+ }
else
return zbx_jsonpath_error(start);
@@ -1207,7 +1572,7 @@ static int jsonpath_parse_dot_segment(const char *start, zbx_jsonpath_t *jsonpat
}
}
- if (0 < (len = ptr - start))
+ if (0 < len)
{
segment->type = ZBX_JSONPATH_SEGMENT_MATCH_LIST;
segment->data.list.type = ZBX_JSONPATH_LIST_NAME;
@@ -1247,117 +1612,84 @@ static int jsonpath_parse_name_reference(const char *start, zbx_jsonpath_t *json
/******************************************************************************
* *
- * Purpose: convert a pointer to an object/array/value in json data to *
- * json parse structure *
- * *
- * Parameters: pnext - [IN] a pointer to object/array/value data *
- * jp - [OUT] json parse data with start/end set *
- * *
- * Return value: SUCCEED - pointer was converted successfully *
- * FAIL - otherwise *
- * *
- ******************************************************************************/
-static int jsonpath_pointer_to_jp(const char *pnext, struct zbx_json_parse *jp)
-{
- if ('[' == *pnext || '{' == *pnext)
- {
- return zbx_json_brackets_open(pnext, jp);
- }
- else
- {
- jp->start = pnext;
- jp->end = pnext + json_parse_value(pnext, NULL) - 1;
- return SUCCEED;
- }
-}
-
-/******************************************************************************
- * *
* Purpose: perform the rest of jsonpath query on json data *
* *
- * Parameters: jp_root - [IN] the document root *
- * pnext - [IN] a pointer to object/array/value in json data *
- * jsonpath - [IN] the jsonpath *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * obj - [IN] the json object *
* path_depth - [IN] the jsonpath segment to match *
- * objects - [OUT] the matched json elements (name, value) *
* *
* Return value: SUCCEED - the data were queried successfully *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_query_contents(const struct zbx_json_parse *jp_root, const char *pnext,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects)
+static int jsonpath_query_contents(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *obj, int path_depth)
{
- struct zbx_json_parse jp_child;
+ int ret;
- switch (*pnext)
+ switch (obj->type)
{
- case '{':
- if (FAIL == zbx_json_brackets_open(pnext, &jp_child))
- return FAIL;
-
- return jsonpath_query_object(jp_root, &jp_child, jsonpath, path_depth, objects);
- case '[':
- if (FAIL == zbx_json_brackets_open(pnext, &jp_child))
- return FAIL;
-
- return jsonpath_query_array(jp_root, &jp_child, jsonpath, path_depth, objects);
+ case ZBX_JSON_TYPE_OBJECT:
+ ret = jsonpath_query_object(ctx, obj, path_depth);
+ break;
+ case ZBX_JSON_TYPE_ARRAY:
+ ret = jsonpath_query_array(ctx, obj, path_depth);
+ break;
+ default:
+ ret = SUCCEED;
}
- return SUCCEED;
+
+ return ret;
}
/******************************************************************************
* *
* Purpose: query next segment *
* *
- * Parameters: jp_root - [IN] the document root *
+ * Parameters: ctx - [IN] the jsonpath query context *
* name - [IN] name or index of the next json element *
- * pnext - [IN] a pointer to object/array/value in json data *
- * jsonpath - [IN] the jsonpath *
+ * obj - [IN] the current json object *
* path_depth - [IN] the jsonpath segment to match *
- * objects - [OUT] the matched json elements (name, value) *
* *
* Return value: SUCCEED - the segment was queried successfully *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_query_next_segment(const struct zbx_json_parse *jp_root, const char *name, const char *pnext,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects)
+static int jsonpath_query_next_segment(zbx_jsonpath_context_t *ctx, const char *name, zbx_jsonobj_t *obj,
+ int path_depth)
{
/* check if jsonpath end has been reached, so we have found matching data */
/* (functions are processed afterwards) */
- if (++path_depth == jsonpath->segments_num ||
- ZBX_JSONPATH_SEGMENT_FUNCTION == jsonpath->segments[path_depth].type)
+ if (++path_depth == ctx->path->segments_num ||
+ ZBX_JSONPATH_SEGMENT_FUNCTION == ctx->path->segments[path_depth].type)
{
- zbx_vector_json_add_element(objects, name, pnext);
+ if (1 == ctx->path->first_match)
+ ctx->found = 1;
+
+ zbx_vector_jsonobj_ref_add_object(&ctx->objects, name, obj);
return SUCCEED;
}
- /* continue by matching found data against the rest of jsonpath segments */
- return jsonpath_query_contents(jp_root, pnext, jsonpath, path_depth, objects);
+ /* continue by matching found object against the rest of jsonpath segments */
+ return jsonpath_query_contents(ctx, obj, path_depth);
}
/******************************************************************************
* *
- * Purpose: match object value name against jsonpath segment name list *
+ * Purpose: match object contents against jsonpath segment name list *
* *
- * Parameters: jp_root - [IN] the document root *
- * name - [IN] name or index of the next json element *
- * pnext - [IN] a pointer to object value with the specified *
- * name *
- * jsonpath - [IN] the jsonpath *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * parent - [IN] parent json object *
* path_depth - [IN] the jsonpath segment to match *
- * objects - [OUT] the matched json elements (name, value) *
* *
* Return value: SUCCEED - no errors, failed match is not an error *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_match_name(const struct zbx_json_parse *jp_root, const char *name, const char *pnext,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects)
+static int jsonpath_match_name(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *parent, int path_depth)
{
- const zbx_jsonpath_segment_t *segment = &jsonpath->segments[path_depth];
+ const zbx_jsonpath_segment_t *segment = &ctx->path->segments[path_depth];
const zbx_jsonpath_list_node_t *node;
+ zbx_jsonobj_el_t el_local, *el;
/* object contents can match only name list */
if (ZBX_JSONPATH_LIST_NAME != segment->data.list.type)
@@ -1365,11 +1697,11 @@ static int jsonpath_match_name(const struct zbx_json_parse *jp_root, const char
for (node = segment->data.list.values; NULL != node; node = node->next)
{
- if (0 == strcmp(name, node->data))
+ el_local.name = (char *)node->data;
+ if (NULL != (el = (zbx_jsonobj_el_t *)zbx_hashset_search(&parent->data.object, &el_local)))
{
- if (FAIL == jsonpath_query_next_segment(jp_root, name, pnext, jsonpath, path_depth, objects))
+ if (FAIL == jsonpath_query_next_segment(ctx, el->name, &el->value, path_depth))
return FAIL;
- break;
}
}
@@ -1380,8 +1712,8 @@ static int jsonpath_match_name(const struct zbx_json_parse *jp_root, const char
* *
* Purpose: extract value from json data by the specified path *
* *
- * Parameters: jp - [IN] the parent object *
- * path - [IN] the jsonpath (definite) *
+ * Parameters: obj - [IN] the parent object *
+ * path - [IN] the jsonpath *
* value - [OUT] the extracted value *
* *
* Return value: SUCCEED - the value was extracted successfully *
@@ -1389,35 +1721,28 @@ static int jsonpath_match_name(const struct zbx_json_parse *jp_root, const char
* extract *
* *
******************************************************************************/
-static int jsonpath_extract_value(const struct zbx_json_parse *jp, const char *path, zbx_variant_t *value)
+static int jsonpath_extract_value(zbx_jsonobj_t *obj, zbx_jsonpath_t *path, zbx_variant_t *value)
{
- struct zbx_json_parse jp_child;
- char *data = NULL, *tmp_path = NULL;
- size_t data_alloc = 0;
- int ret = FAIL;
+ int ret = FAIL;
+ zbx_jsonpath_context_t ctx;
- if ('@' == *path)
- {
- tmp_path = zbx_strdup(NULL, path);
- *tmp_path = '$';
- path = tmp_path;
- }
+ ctx.path = path;
+ ctx.found = 0;
+ ctx.root = obj;
+ zbx_vector_jsonobj_ref_create(&ctx.objects);
- if (FAIL == zbx_json_open_path(jp, path, &jp_child))
- goto out;
-
- if (NULL == zbx_json_decodevalue_dyn(jp_child.start, &data, &data_alloc, NULL))
+ if (SUCCEED == jsonpath_query_contents(&ctx, obj, 0) && 0 != ctx.objects.values_num)
{
- size_t len = jp_child.end - jp_child.start + 2;
+ char *str = NULL;
+ size_t str_alloc = 0, str_offset = 0;
- data = (char *)zbx_malloc(NULL, len);
- zbx_strlcpy(data, jp_child.start, len);
+ jsonpath_str_copy_value(&str, &str_alloc, &str_offset, ctx.objects.values[0].value);
+ zbx_variant_set_str(value, str);
+ ret = SUCCEED;
}
- zbx_variant_set_str(value, data);
- ret = SUCCEED;
-out:
- zbx_free(tmp_path);
+ zbx_vector_jsonobj_ref_clear_ext(&ctx.objects);
+ zbx_vector_jsonobj_ref_destroy(&ctx.objects);
return ret;
}
@@ -1452,7 +1777,7 @@ static char *jsonpath_expression_to_str(zbx_jsonpath_expression_t *expression)
case ZBX_JSONPATH_TOKEN_PATH_RELATIVE:
case ZBX_JSONPATH_TOKEN_CONST_STR:
case ZBX_JSONPATH_TOKEN_CONST_NUM:
- zbx_strcpy_alloc(&str, &str_alloc, &str_offset, token->data);
+ zbx_strcpy_alloc(&str, &str_alloc, &str_offset, token->text);
break;
case ZBX_JSONPATH_TOKEN_PAREN_LEFT:
zbx_strcpy_alloc(&str, &str_alloc, &str_offset, "(");
@@ -1604,35 +1929,123 @@ static int jsonpath_regexp_match(const char *text, const char *pattern, double *
/******************************************************************************
* *
+ * Purpose: add matched object to the index *
+ * *
+ * Parameters: index - [IN] the parent object index *
+ * name - [IN] the name of objec to add to index *
+ * obj - [IN] the object to add to index *
+ * value - [IN] the object matched by index path *
+ * *
+ ******************************************************************************/
+static void jsonpath_index_append_result(zbx_hashset_t *index, const char *name, zbx_jsonobj_t *obj,
+ zbx_jsonobj_t *value)
+{
+ zbx_jsonobj_index_el_t el_local = {.value = NULL}, *el;
+ size_t value_alloc = 0, value_offset = 0;
+ zbx_jsonobj_ref_t ref;
+
+ jsonpath_str_copy_value(&el_local.value, &value_alloc, &value_offset, value);
+
+ if (NULL == (el = (zbx_jsonobj_index_el_t *)zbx_hashset_search(index, &el_local)))
+ {
+ el = (zbx_jsonobj_index_el_t *)zbx_hashset_insert(index, &el_local, sizeof(el_local));
+ zbx_vector_jsonobj_ref_create(&el->objects);
+ }
+ else
+ zbx_free(el_local.value);
+
+ ref.name = zbx_strdup(NULL, name);
+ ref.value = obj;
+ ref.external = 0;
+ zbx_vector_jsonobj_ref_append(&el->objects, ref);
+}
+
+/******************************************************************************
+ * *
+ * Purpose: index json object using the expression token index path *
+ * *
+ * Parameters: obj - [IN] the object to index *
+ * index_token - [IN] the expression index token (relative path) *
+ * *
+ ******************************************************************************/
+static void jsonpath_create_index(zbx_jsonobj_t *obj, zbx_jsonpath_token_t *index_token)
+{
+ zbx_jsonpath_context_t ctx;
+
+ jsonobj_init_index(obj, index_token->text);
+
+ ctx.root = obj;
+ ctx.path = index_token->path;
+ zbx_vector_jsonobj_ref_create(&ctx.objects);
+
+ if (ZBX_JSON_TYPE_OBJECT == obj->type)
+ {
+ zbx_hashset_iter_t iter;
+ zbx_jsonobj_el_t *el;
+
+ zbx_hashset_iter_reset(&obj->data.object, &iter);
+ while (NULL != (el = (zbx_jsonobj_el_t *)zbx_hashset_iter_next(&iter)))
+ {
+ ctx.found = 0;
+ if (SUCCEED == jsonpath_query_contents(&ctx, &el->value, 0) && 1 == ctx.objects.values_num)
+ {
+ jsonpath_index_append_result(&obj->index->objects, el->name, &el->value,
+ ctx.objects.values[0].value);
+ }
+
+ zbx_vector_jsonobj_ref_clear_ext(&ctx.objects);
+ }
+ }
+ else
+ {
+ int i;
+
+ for (i = 0; i < obj->data.array.values_num; i++)
+ {
+ char name[MAX_ID_LEN + 1];
+ zbx_jsonobj_t *value = obj->data.array.values[i];
+
+ zbx_snprintf(name, sizeof(name), "%d", i);
+
+ ctx.found = 0;
+ if (SUCCEED == jsonpath_query_contents(&ctx, value, 0) && 1 == ctx.objects.values_num)
+ {
+ jsonpath_index_append_result(&obj->index->objects, name, value,
+ ctx.objects.values[0].value);
+ }
+
+ zbx_vector_jsonobj_ref_clear_ext(&ctx.objects);
+ }
+ }
+
+ zbx_vector_jsonobj_ref_destroy(&ctx.objects);
+}
+
+/******************************************************************************
+ * *
* Purpose: match json array element/object value against jsonpath expression *
* *
- * Parameters: jp_root - [IN] the document root *
+ * Parameters: ctx - [IN] the jsonpath query context *
* name - [IN] name or index of the next json element *
- * pnext - [IN] a pointer to array element/object value *
- * jsonpath - [IN] the jsonpath *
+ * obj - [IN] the jsonobject to match *
* path_depth - [IN] the jsonpath segment to match *
- * objects - [OUT] the matched json elements (name, value) *
* *
* Return value: SUCCEED - no errors, failed match is not an error *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_match_expression(const struct zbx_json_parse *jp_root, const char *name, const char *pnext,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects)
+static int jsonpath_match_expression(zbx_jsonpath_context_t *ctx, const char *name, zbx_jsonobj_t *obj,
+ int path_depth)
{
- struct zbx_json_parse jp;
zbx_vector_var_t stack;
int i, ret = SUCCEED;
zbx_jsonpath_segment_t *segment;
zbx_variant_t value, *right;
double res;
- if (SUCCEED != jsonpath_pointer_to_jp(pnext, &jp))
- return FAIL;
-
zbx_vector_var_create(&stack);
- segment = &jsonpath->segments[path_depth];
+ segment = &ctx->path->segments[path_depth];
for (i = 0; i < segment->data.expression.tokens.values_num; i++)
{
@@ -1779,25 +2192,25 @@ static int jsonpath_match_expression(const struct zbx_json_parse *jp_root, const
switch (token->type)
{
case ZBX_JSONPATH_TOKEN_PATH_ABSOLUTE:
- if (FAIL == jsonpath_extract_value(jp_root, token->data, &value))
+ if (FAIL == jsonpath_extract_value(ctx->root, token->path, &value))
zbx_variant_set_none(&value);
zbx_vector_var_append_ptr(&stack, &value);
break;
case ZBX_JSONPATH_TOKEN_PATH_RELATIVE:
/* relative path can be applied only to array or object */
- if ('[' != *jp.start && '{' != *jp.start)
+ if (ZBX_JSON_TYPE_ARRAY != obj->type && ZBX_JSON_TYPE_OBJECT != obj->type)
goto out;
- if (FAIL == jsonpath_extract_value(&jp, token->data, &value))
+ if (FAIL == jsonpath_extract_value(obj, token->path, &value))
zbx_variant_set_none(&value);
zbx_vector_var_append_ptr(&stack, &value);
break;
case ZBX_JSONPATH_TOKEN_CONST_STR:
- zbx_variant_set_str(&value, zbx_strdup(NULL, token->data));
+ zbx_variant_set_str(&value, zbx_strdup(NULL, token->text));
zbx_vector_var_append_ptr(&stack, &value);
break;
case ZBX_JSONPATH_TOKEN_CONST_NUM:
- zbx_variant_set_dbl(&value, atof(token->data));
+ zbx_variant_set_dbl(&value, atof(token->text));
zbx_vector_var_append_ptr(&stack, &value);
break;
case ZBX_JSONPATH_TOKEN_OP_NOT:
@@ -1824,7 +2237,7 @@ static int jsonpath_match_expression(const struct zbx_json_parse *jp_root, const
jsonpath_variant_to_boolean(&stack.values[0]);
if (SUCCEED != zbx_double_compare(stack.values[0].data.dbl, 0.0))
- ret = jsonpath_query_next_segment(jp_root, name, pnext, jsonpath, path_depth, objects);
+ ret = jsonpath_query_next_segment(ctx, name, obj, path_depth);
out:
for (i = 0; i < stack.values_num; i++)
zbx_variant_clear(&stack.values[i]);
@@ -1835,47 +2248,91 @@ out:
/******************************************************************************
* *
+ * Purpose: query indexed object fields for jsonpath segment match *
+ * *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * obj - [IN] the json object to query *
+ * path_depth - [IN] the jsonpath segment to match *
+ * *
+ * Return value: SUCCEED - the object was queried successfully *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int jsonpath_match_indexed_expression(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *obj, int path_depth)
+{
+ zbx_jsonpath_segment_t *segment = &ctx->path->segments[path_depth];
+ zbx_jsonobj_index_el_t index_local, *el;
+
+ index_local.value = segment->data.expression.value_token->text;
+
+ if (NULL != (el = (zbx_jsonobj_index_el_t *)zbx_hashset_search(&obj->index->objects, &index_local)))
+ {
+ int i;
+
+ for (i = 0; i < el->objects.values_num; i++)
+ {
+ jsonpath_match_expression(ctx, el->objects.values[i].name, el->objects.values[i].value,
+ path_depth);
+ }
+ }
+
+ return SUCCEED;
+}
+
+/******************************************************************************
+ * *
* Purpose: query object fields for jsonpath segment match *
* *
- * Parameters: jp_root - [IN] the document root *
- * jp - [IN] the json object to query *
- * jsonpath - [IN] the jsonpath *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * obj - [IN] the json object to query *
* path_depth - [IN] the jsonpath segment to match *
- * objects - [OUT] the matched json elements (name, value) *
* *
* Return value: SUCCEED - the object was queried successfully *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_query_object(const struct zbx_json_parse *jp_root, const struct zbx_json_parse *jp,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects)
+static int jsonpath_query_object(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *obj, int path_depth)
{
- const char *pnext = NULL;
- char name[MAX_STRING_LEN];
const zbx_jsonpath_segment_t *segment;
int ret = SUCCEED;
+ zbx_hashset_iter_t iter;
+ zbx_jsonobj_el_t *el;
+
+ segment = &ctx->path->segments[path_depth];
+
+ if (ZBX_JSONPATH_SEGMENT_MATCH_LIST == segment->type)
+ {
+ ret = jsonpath_match_name(ctx, obj, path_depth);
+ if (FAIL == ret || 1 != segment->detached)
+ return ret;
+ }
+ else if (ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION == segment->type && NULL != segment->data.expression.index_token)
+ {
+ if (NULL == obj->index)
+ jsonpath_create_index(obj, segment->data.expression.index_token);
- segment = &jsonpath->segments[path_depth];
+ if (0 == strcmp(obj->index->path, segment->data.expression.index_token->text))
+ return jsonpath_match_indexed_expression(ctx, obj, path_depth);
+ }
- while (NULL != (pnext = zbx_json_pair_next(jp, pnext, name, sizeof(name))) && SUCCEED == ret)
+ zbx_hashset_iter_reset(&obj->data.object, &iter);
+ while (NULL != (el = (zbx_jsonobj_el_t *)zbx_hashset_iter_next(&iter)) && SUCCEED == ret &&
+ 0 == ctx->found)
{
switch (segment->type)
{
case ZBX_JSONPATH_SEGMENT_MATCH_ALL:
- ret = jsonpath_query_next_segment(jp_root, name, pnext, jsonpath, path_depth, objects);
- break;
- case ZBX_JSONPATH_SEGMENT_MATCH_LIST:
- ret = jsonpath_match_name(jp_root, name, pnext, jsonpath, path_depth, objects);
+ ret = jsonpath_query_next_segment(ctx, el->name, &el->value, path_depth);
break;
case ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION:
- ret = jsonpath_match_expression(jp_root, name, pnext, jsonpath, path_depth, objects);
+ ret = jsonpath_match_expression(ctx, el->name, &el->value, path_depth);
break;
default:
break;
}
if (1 == segment->detached)
- ret = jsonpath_query_contents(jp_root, pnext, jsonpath, path_depth, objects);
+ ret = jsonpath_query_contents(ctx, &el->value, path_depth);
}
return ret;
@@ -1883,25 +2340,19 @@ static int jsonpath_query_object(const struct zbx_json_parse *jp_root, const str
/******************************************************************************
* *
- * Purpose: match array element against segment index list *
+ * Purpose: array elements against segment index list *
* *
- * Parameters: jp_root - [IN] the document root *
- * name - [IN] the json element name (index) *
- * pnext - [IN] a pointer to an array element *
- * jsonpath - [IN] the jsonpath *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * parent - [IN] the json array *
* path_depth - [IN] the jsonpath segment to match *
- * index - [IN] the array element index *
- * elements_num - [IN] the total number of elements in array *
- * objects - [OUT] the matched json elements (name, value) *
* *
* Return value: SUCCEED - no errors, failed match is not an error *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_match_index(const struct zbx_json_parse *jp_root, const char *name, const char *pnext,
- const zbx_jsonpath_t *jsonpath, int path_depth, int index, int elements_num, zbx_vector_json_t *objects)
+static int jsonpath_match_index(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *parent, int path_depth)
{
- const zbx_jsonpath_segment_t *segment = &jsonpath->segments[path_depth];
+ const zbx_jsonpath_segment_t *segment = &ctx->path->segments[path_depth];
const zbx_jsonpath_list_node_t *node;
/* array contents can match only index list */
@@ -1914,11 +2365,20 @@ static int jsonpath_match_index(const struct zbx_json_parse *jp_root, const char
memcpy(&query_index, node->data, sizeof(query_index));
- if ((query_index >= 0 && index == query_index) || index == elements_num + query_index)
+ if (0 > query_index)
+ query_index += parent->data.array.values_num;
+
+ if (query_index >= 0 && query_index < parent->data.array.values_num)
{
- if (FAIL == jsonpath_query_next_segment(jp_root, name, pnext, jsonpath, path_depth, objects))
+ char name[MAX_ID_LEN + 1];
+
+ zbx_snprintf(name, sizeof(name), "%d", query_index);
+
+ if (FAIL == jsonpath_query_next_segment(ctx, name, parent->data.array.values[query_index],
+ path_depth))
+ {
return FAIL;
- break;
+ }
}
}
@@ -1927,38 +2387,37 @@ static int jsonpath_match_index(const struct zbx_json_parse *jp_root, const char
/******************************************************************************
* *
- * Purpose: match array element against segment index range *
+ * Purpose: match array elements against segment index range *
* *
- * Parameters: jp_root - [IN] the document root *
- * name - [IN] the json element name (index) *
- * pnext - [IN] a pointer to an array element *
- * jsonpath - [IN] the jsonpath *
- * path_depth - [IN] the jsonpath segment to match *
- * index - [IN] the array element index *
- * elements_num - [IN] the total number of elements in array *
- * objects - [OUT] the matched json elements (name, value) *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * parent - [IN] the json array *
+ * path_depth - [IN] the jsonpath segment to match *
* *
* Return value: SUCCEED - no errors, failed match is not an error *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_match_range(const struct zbx_json_parse *jp_root, const char *name, const char *pnext,
- const zbx_jsonpath_t *jsonpath, int path_depth, int index, int elements_num, zbx_vector_json_t *objects)
+static int jsonpath_match_range(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *parent, int path_depth)
{
- int start_index, end_index;
- const zbx_jsonpath_segment_t *segment = &jsonpath->segments[path_depth];
+ int i, start_index, end_index, values_num;
+ const zbx_jsonpath_segment_t *segment = &ctx->path->segments[path_depth];
+ values_num = parent->data.array.values_num;
start_index = (0 != (segment->data.range.flags & 0x01) ? segment->data.range.start : 0);
- end_index = (0 != (segment->data.range.flags & 0x02) ? segment->data.range.end : elements_num);
+ end_index = (0 != (segment->data.range.flags & 0x02) ? segment->data.range.end : values_num);
if (0 > start_index)
- start_index += elements_num;
+ start_index += values_num;
if (0 > end_index)
- end_index += elements_num;
+ end_index += values_num;
- if (start_index <= index && end_index > index)
+ for (i = start_index; i < end_index; i++)
{
- if (FAIL == jsonpath_query_next_segment(jp_root, name, pnext, jsonpath, path_depth, objects))
+ char name[MAX_ID_LEN + 1];
+
+ zbx_snprintf(name, sizeof(name), "%d", i);
+
+ if (FAIL == jsonpath_query_next_segment(ctx, name, parent->data.array.values[i], path_depth))
return FAIL;
}
@@ -1967,59 +2426,69 @@ static int jsonpath_match_range(const struct zbx_json_parse *jp_root, const char
/******************************************************************************
* *
- * Purpose: query array elements for jsonpath segment match *
+ * Purpose: query json array for jsonpath segment match *
* *
- * Parameters: jp_root - [IN] the document root *
- * jp - [IN] the json array to query *
- * jsonpath - [IN] the jsonpath *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * array - [IN] the json array to query *
* path_depth - [IN] the jsonpath segment to match *
- * objects - [OUT] the matched json elements (name, value) *
* *
* Return value: SUCCEED - the array was queried successfully *
* FAIL - otherwise *
* *
******************************************************************************/
-static int jsonpath_query_array(const struct zbx_json_parse *jp_root, const struct zbx_json_parse *jp,
- const zbx_jsonpath_t *jsonpath, int path_depth, zbx_vector_json_t *objects)
+static int jsonpath_query_array(zbx_jsonpath_context_t *ctx, zbx_jsonobj_t *array, int path_depth)
{
- const char *pnext = NULL;
- int index = 0, elements_num = 0, ret = SUCCEED;
+ int ret = SUCCEED, i;
zbx_jsonpath_segment_t *segment;
- segment = &jsonpath->segments[path_depth];
+ segment = &ctx->path->segments[path_depth];
- while (NULL != (pnext = zbx_json_next(jp, pnext)))
- elements_num++;
+ switch (segment->type)
+ {
+ case ZBX_JSONPATH_SEGMENT_MATCH_LIST:
+ ret = jsonpath_match_index(ctx, array, path_depth);
+ if (FAIL == ret || 1 != segment->detached)
+ return ret;
+ break;
+ case ZBX_JSONPATH_SEGMENT_MATCH_RANGE:
+ ret = jsonpath_match_range(ctx, array, path_depth);
+ if (FAIL == ret || 1 != segment->detached)
+ return ret;
+ break;
+ case ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION:
+ if (NULL != segment->data.expression.index_token)
+ {
+ if (NULL == array->index)
+ jsonpath_create_index(array, segment->data.expression.index_token);
- while (NULL != (pnext = zbx_json_next(jp, pnext)) && SUCCEED == ret)
+ if (0 == strcmp(array->index->path, segment->data.expression.index_token->text))
+ return jsonpath_match_indexed_expression(ctx, array, path_depth);
+ }
+ break;
+ default:
+ break;
+ }
+
+ for (i = 0; i < array->data.array.values_num && SUCCEED == ret && 0 == ctx->found; i++)
{
char name[MAX_ID_LEN + 1];
- zbx_snprintf(name, sizeof(name), "%d", index);
+ zbx_snprintf(name, sizeof(name), "%d", i);
+
switch (segment->type)
{
case ZBX_JSONPATH_SEGMENT_MATCH_ALL:
- ret = jsonpath_query_next_segment(jp_root, name, pnext, jsonpath, path_depth, objects);
- break;
- case ZBX_JSONPATH_SEGMENT_MATCH_LIST:
- ret = jsonpath_match_index(jp_root, name, pnext, jsonpath, path_depth, index,
- elements_num, objects);
- break;
- case ZBX_JSONPATH_SEGMENT_MATCH_RANGE:
- ret = jsonpath_match_range(jp_root, name, pnext, jsonpath, path_depth, index,
- elements_num, objects);
+ ret = jsonpath_query_next_segment(ctx, name, array->data.array.values[i], path_depth);
break;
case ZBX_JSONPATH_SEGMENT_MATCH_EXPRESSION:
- ret = jsonpath_match_expression(jp_root, name, pnext, jsonpath, path_depth, objects);
+ ret = jsonpath_match_expression(ctx, name, array->data.array.values[i], path_depth);
break;
default:
break;
}
if (1 == segment->detached)
- ret = jsonpath_query_contents(jp_root, pnext, jsonpath, path_depth, objects);
-
- index++;
+ ret = jsonpath_query_contents(ctx, array->data.array.values[i], path_depth);
}
return ret;
@@ -2027,123 +2496,99 @@ static int jsonpath_query_array(const struct zbx_json_parse *jp_root, const stru
/******************************************************************************
* *
- * Purpose: extract JSON element value from data *
- * *
- * Parameters: ptr - [IN] pointer to the element to extract *
- * element - [OUT] the extracted element *
+ * Purpose: get numeric value from json data *
* *
- * Return value: SUCCEED - the element was extracted successfully *
- * FAIL - the pointer was not pointing to a JSON element *
+ * Parameters: obj - [IN] json object *
+ * value - [OUT] the extracted value *
* *
- * Comments: String value element is unquoted, other elements are copied as *
- * is. *
+ * Return value: SUCCEED - the value was extracted successfully *
+ * FAIL - the pointer was not pointing at numeric value *
* *
******************************************************************************/
-static int jsonpath_extract_element(const char *ptr, char **element)
+static int jsonpath_get_numeric_value(const zbx_jsonobj_t *obj, double *value)
{
- size_t element_size = 0;
-
- if (NULL == zbx_json_decodevalue_dyn(ptr, element, &element_size, NULL))
+ switch (obj->type)
{
- struct zbx_json_parse jp;
-
- if (SUCCEED != zbx_json_brackets_open(ptr, &jp))
+ case ZBX_JSON_TYPE_NUMBER:
+ *value = obj->data.number;
+ return SUCCEED;
+ case ZBX_JSON_TYPE_STRING:
+ if (SUCCEED == zbx_is_double(obj->data.string, value))
+ return SUCCEED;
+ zbx_set_json_strerror("array value is not a number or out of range: %s", obj->data.string);
+ return FAIL;
+ default:
+ zbx_set_json_strerror("array value type is not a number or string");
return FAIL;
-
- *element = jsonpath_strndup(jp.start, jp.end - jp.start + 1);
}
-
- return SUCCEED;
}
/******************************************************************************
* *
- * Purpose: extract numeric value from json data *
- * *
- * Parameters: ptr - [IN] pointer to the value to extract *
- * value - [OUT] the extracted value *
+ * Purpose: get value from json data *
* *
* Return value: SUCCEED - the value was extracted successfully *
* FAIL - the pointer was not pointing at numeric value *
* *
******************************************************************************/
-static int jsonpath_extract_numeric_value(const char *ptr, double *value)
+static int jsonpath_str_copy_value(char **str, size_t *str_alloc, size_t *str_offset, zbx_jsonobj_t *obj)
{
- char buffer[MAX_STRING_LEN];
-
- if (NULL == zbx_json_decodevalue(ptr, buffer, sizeof(buffer), NULL) ||
- SUCCEED != zbx_is_double(buffer, value))
+ switch (obj->type)
{
- zbx_set_json_strerror("array value is not a number or out of range starting with: %s", ptr);
- return FAIL;
+ case ZBX_JSON_TYPE_STRING:
+ zbx_strcpy_alloc(str, str_alloc, str_offset, obj->data.string);
+ return SUCCEED;
+ break;
+ default:
+ return zbx_jsonobj_to_string(str, str_alloc, str_offset, obj);
}
-
- return SUCCEED;
}
/******************************************************************************
* *
* Purpose: apply jsonpath function to the extracted object list *
* *
- * Parameters: objects - [IN] the matched json elements (name, value) *
+ * Parameters: in - [IN] the matched objects *
* type - [IN] the function type *
- * definite_path - [IN] 1 - if the path is definite (pointing at *
- * single object) *
- * 0 - otherwise *
- * output - [OUT] the output value *
+ * definite_path - [IN/OUT] 1 - if the path is definite (pointing *
+ * at single object) *
+ * 0 - otherwise *
+ * out - [OUT] the result objects *
* *
* Return value: SUCCEED - the function was applied successfully *
* FAIL - invalid input data for the function or internal *
* json error *
* *
******************************************************************************/
-static int jsonpath_apply_function(const zbx_vector_json_t *objects, zbx_jsonpath_function_type_t type,
- int definite_path, char **output)
+static int jsonpath_apply_function(const zbx_vector_jsonobj_ref_t *in, zbx_jsonpath_function_type_t type,
+ int *definite_path, zbx_vector_jsonobj_ref_t *out)
{
- int i, ret = FAIL;
- zbx_vector_json_t objects_tmp;
- double result;
+ int i, ret = FAIL;
+ double result;
+ zbx_vector_jsonobj_ref_t tmp;
+ char buffer[64];
- zbx_vector_json_create(&objects_tmp);
+ zbx_vector_jsonobj_ref_create(&tmp);
if (ZBX_JSONPATH_FUNCTION_NAME == type)
{
- if (0 == objects->values_num)
+ if (0 == in->values_num)
{
zbx_set_json_strerror("cannot extract name from empty result");
goto out;
}
- /* For definite paths we have single output value, so return its name. */
- /* Otherwise return array of all output element names. */
- if (0 == definite_path)
- {
- struct zbx_json j;
-
- /* reserve some space for output json, 1k being large enough to satisfy most queries */
- zbx_json_initarray(&j, 1024);
- for (i = 0; i < objects->values_num; i++)
- zbx_json_addstring(&j, NULL, objects->values[i].name, ZBX_JSON_TYPE_STRING);
-
- zbx_json_close(&j);
- *output = zbx_strdup(NULL, j.buffer);
- zbx_json_clean(&j);
- }
- else
- *output = zbx_strdup(NULL, objects->values[0].name);
+ for (i = 0; i < in->values_num; i++)
+ zbx_vector_jsonobj_ref_add_string(out, "", in->values[i].name);
ret = SUCCEED;
goto out;
}
/* convert definite path result to object array if possible */
- if (0 != definite_path)
+ if (0 != *definite_path)
{
- const char *pnext;
- struct zbx_json_parse jp;
- int index = 0;
-
- if (0 == objects->values_num || '[' != *objects->values[0].value)
+ if (0 == in->values_num || ZBX_JSON_TYPE_ARRAY != in->values[0].value->type)
{
/* all functions can be applied only to arrays */
/* attempt to apply a function to non-array will fail */
@@ -2151,51 +2596,51 @@ static int jsonpath_apply_function(const zbx_vector_json_t *objects, zbx_jsonpat
goto out;
}
- if (FAIL == zbx_json_brackets_open(objects->values[0].value, &jp))
- goto out;
-
- for (pnext = NULL; NULL != (pnext = zbx_json_next(&jp, pnext));)
+ for (i = 0; i < in->values[0].value->data.array.values_num; i++)
{
char name[MAX_ID_LEN + 1];
- zbx_snprintf(name, sizeof(name), "%d", index++);
- zbx_vector_json_add_element(&objects_tmp, name, pnext);
+ zbx_snprintf(name, sizeof(name), "%d", i);
+ zbx_vector_jsonobj_ref_add_object(&tmp, name, in->values[0].value->data.array.values[i]);
}
- objects = &objects_tmp;
+ in = &tmp;
+ *definite_path = 0;
}
if (ZBX_JSONPATH_FUNCTION_LENGTH == type)
{
- *output = zbx_dsprintf(NULL, "%d", objects->values_num);
+ zbx_snprintf(buffer, sizeof(buffer), "%d", in->values_num);
+ zbx_vector_jsonobj_ref_add_string(out, "", buffer);
+ *definite_path = 1;
ret = SUCCEED;
goto out;
}
if (ZBX_JSONPATH_FUNCTION_FIRST == type)
{
- if (0 < objects->values_num)
- ret = jsonpath_extract_element(objects->values[0].value, output);
- else
- ret = SUCCEED;
+ if (0 < in->values_num)
+ zbx_vector_jsonobj_ref_add(out, &in->values[0]);
+ *definite_path = 1;
+ ret = SUCCEED;
goto out;
}
- if (0 == objects->values_num)
+ if (0 == in->values_num)
{
zbx_set_json_strerror("cannot apply aggregation function to empty array");
goto out;
}
- if (FAIL == jsonpath_extract_numeric_value(objects->values[0].value, &result))
+ if (FAIL == jsonpath_get_numeric_value(in->values[0].value, &result))
goto out;
- for (i = 1; i < objects->values_num; i++)
+ for (i = 1; i < in->values_num; i++)
{
double value;
- if (FAIL == jsonpath_extract_numeric_value(objects->values[i].value, &value))
+ if (FAIL == jsonpath_get_numeric_value(in->values[i].value, &value))
goto out;
switch (type)
@@ -2218,19 +2663,22 @@ static int jsonpath_apply_function(const zbx_vector_json_t *objects, zbx_jsonpat
}
if (ZBX_JSONPATH_FUNCTION_AVG == type)
- result /= objects->values_num;
+ result /= in->values_num;
- *output = zbx_dsprintf(NULL, ZBX_FS_DBL, result);
- if (SUCCEED != zbx_is_double(*output, NULL))
+ zbx_print_double(buffer, sizeof(buffer), result);
+ if (SUCCEED != zbx_is_double(buffer, NULL))
{
- zbx_set_json_strerror("invalid function result: %s", *output);
+ zbx_set_json_strerror("invalid function result: %s", buffer);
goto out;
}
- zbx_del_zeros(*output);
+
+ zbx_del_zeros(buffer);
+ zbx_vector_jsonobj_ref_add_string(out, "", buffer);
+ *definite_path = 1;
ret = SUCCEED;
out:
- zbx_vector_json_clear_ext(&objects_tmp);
- zbx_vector_json_destroy(&objects_tmp);
+ zbx_vector_jsonobj_ref_clear_ext(&tmp);
+ zbx_vector_jsonobj_ref_destroy(&tmp);
return ret;
}
@@ -2239,58 +2687,47 @@ out:
* *
* Purpose: apply jsonpath function to the extracted object list *
* *
- * Parameters: jp_root - [IN] the document root *
- * objects - [IN] the matched json elements (name, value) *
- * jsonpath - [IN] the jsonpath *
- * path_depth - [IN] the jsonpath segment to match *
- * output - [OUT] the output value *
+ * Parameters: ctx - [IN] the jsonpath query context *
+ * path_depth - [IN] the jsonpath segment to match *
+ * definite_path - [IN/OUT] *
+ * out - [OUT] the result object *
* *
* Return value: SUCCEED - the function was applied successfully *
* FAIL - invalid input data for the function or internal *
* json error *
* *
******************************************************************************/
-static int jsonpath_apply_functions(const struct zbx_json_parse *jp_root, const zbx_vector_json_t *objects,
- const zbx_jsonpath_t *jsonpath, int path_depth, char **output)
+static int jsonpath_apply_functions(zbx_jsonpath_context_t *ctx, int path_depth, int *definite_path,
+ zbx_vector_jsonobj_ref_t *out)
{
- int ret, definite_path;
- zbx_vector_json_t input;
- char *input_json = NULL;
+ int ret;
+ zbx_vector_jsonobj_ref_t in;
- zbx_vector_json_create(&input);
+ zbx_vector_jsonobj_ref_create(&in);
/* when functions are applied directly to the json document (at the start of the jsonpath ) */
/* it makes all document as input object */
if (0 == path_depth)
- zbx_vector_json_add_element(&input, "", jp_root->start);
+ zbx_vector_jsonobj_ref_add_object(&in, "", ctx->root);
else
- zbx_vector_json_copy(&input, objects);
-
- definite_path = jsonpath->definite;
+ zbx_vector_jsonobj_ref_copy(&in, &ctx->objects);
for (;;)
{
- ret = jsonpath_apply_function(&input, jsonpath->segments[path_depth++].data.function.type,
- definite_path, output);
+ ret = jsonpath_apply_function(&in, ctx->path->segments[path_depth++].data.function.type,
+ definite_path, out);
- zbx_vector_json_clear_ext(&input);
- zbx_free(input_json);
+ zbx_vector_jsonobj_ref_clear_ext(&in);
- if (SUCCEED != ret || path_depth == jsonpath->segments_num)
+ if (SUCCEED != ret || path_depth == ctx->path->segments_num)
break;
- if (NULL != *output)
- {
- zbx_vector_json_add_element(&input, "", *output);
- input_json = *output;
- *output = NULL;
- }
-
- /* functions return single value, so for the next functions path becomes definite */
- definite_path = 1;
+ zbx_vector_jsonobj_ref_copy(&in, out);
+ zbx_vector_jsonobj_ref_clear_ext(out);
}
- zbx_vector_json_destroy(&input);
+ zbx_vector_jsonobj_ref_clear_ext(&in);
+ zbx_vector_jsonobj_ref_destroy(&in);
return ret;
}
@@ -2299,49 +2736,37 @@ static int jsonpath_apply_functions(const struct zbx_json_parse *jp_root, const
* *
* Purpose: format query result, depending on jsonpath type *
* *
- * Parameters: objects - [IN] the matched json elements (name, value) *
- * jsonpath - [IN] the jsonpath used to acquire result *
- * output - [OUT] the output value *
+ * Parameters: objects - [IN] the matched json refs (name, value) *
+ * definite_path - [IN] the jsonpath definite flag *
+ * output - [OUT] the output value *
* *
* Return value: SUCCEED - the result was formatted successfully *
* FAIL - invalid result data (internal json error) *
* *
******************************************************************************/
-static int jsonpath_format_query_result(const zbx_vector_json_t *objects, zbx_jsonpath_t *jsonpath, char **output)
+static int jsonpath_format_query_result(const zbx_vector_jsonobj_ref_t *objects, int definite_path, char **output)
{
size_t output_offset = 0, output_alloc;
int i;
+ char delim;
if (0 == objects->values_num)
return SUCCEED;
- if (1 == jsonpath->definite)
- {
- return jsonpath_extract_element(objects->values[0].value, output);
- }
+ if (1 == definite_path)
+ return jsonpath_str_copy_value(output, &output_alloc, &output_offset, objects->values[0].value);
/* reserve 32 bytes per returned object plus array start/end [] and terminating zero */
- output_alloc = objects->values_num * 32 + 3;
+ output_alloc = (size_t)objects->values_num * 32 + 3;
*output = (char *)zbx_malloc(NULL, output_alloc);
- zbx_chrcpy_alloc(output, &output_alloc, &output_offset, '[');
+ delim = '[';
for (i = 0; i < objects->values_num; i++)
{
- struct zbx_json_parse jp;
-
- if (FAIL == jsonpath_pointer_to_jp(objects->values[i].value, &jp))
- {
- zbx_set_json_strerror("cannot format query result, unrecognized json part starting with: %s",
- objects->values[i].value);
- zbx_free(*output);
- return FAIL;
- }
-
- if (0 != i)
- zbx_chrcpy_alloc(output, &output_alloc, &output_offset, ',');
-
- zbx_strncpy_alloc(output, &output_alloc, &output_offset, jp.start, jp.end - jp.start + 1);
+ zbx_chrcpy_alloc(output, &output_alloc, &output_offset, delim);
+ zbx_jsonobj_to_string(output, &output_alloc, &output_offset, objects->values[i].value);
+ delim = ',';
}
zbx_chrcpy_alloc(output, &output_alloc, &output_offset, ']');
@@ -2364,7 +2789,7 @@ void zbx_jsonpath_clear(zbx_jsonpath_t *jsonpath)
* Purpose: compile jsonpath to be used in queries *
* *
* Parameters: path - [IN] the path to parse *
- * jsonpath - [IN/OUT] the compiled jsonpath *
+ * jsonpath - [IN/OUT] the compiled jsonpath *
* *
* Return value: SUCCEED - the segment was parsed successfully *
* FAIL - otherwise *
@@ -2386,6 +2811,7 @@ int zbx_jsonpath_compile(const char *path, zbx_jsonpath_t *jsonpath)
memset(&jpquery, 0, sizeof(zbx_jsonpath_t));
jsonpath_reserve(&jpquery, 4);
jpquery.definite = 1;
+ jpquery.first_match = 0;
for (ptr++; '\0' != *ptr; ptr = next)
{
@@ -2453,7 +2879,10 @@ int zbx_jsonpath_compile(const char *path, zbx_jsonpath_t *jsonpath)
ret = zbx_jsonpath_error(ptr);
if (SUCCEED == ret)
+ {
+ jpquery.first_match |= jpquery.definite;
*jsonpath = jpquery;
+ }
else
zbx_jsonpath_clear(&jpquery);
@@ -2472,37 +2901,89 @@ int zbx_jsonpath_compile(const char *path, zbx_jsonpath_t *jsonpath)
* being counted as successful query) *
* FAIL - otherwise *
* *
+ * Comments: This function is for compatibility purposes. Where possible the *
+ * zbx_jsonobj_query() function must be used. *
+ * *
******************************************************************************/
int zbx_jsonpath_query(const struct zbx_json_parse *jp, const char *path, char **output)
{
+ int ret;
+ zbx_jsonobj_t obj;
+
+ if (SUCCEED != zbx_jsonobj_open(jp->start, &obj))
+ return FAIL;
+
+ ret = zbx_jsonobj_query(&obj, path, output);
+
+ zbx_jsonobj_clear(&obj);
+
+ return ret;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: perform jsonpath query on the specified json object *
+ * *
+ * Parameters: obj - [IN] the json object *
+ * path - [IN] the jsonpath *
+ * output - [OUT] the output value *
+ * *
+ * Return value: SUCCEED - the query was performed successfully (empty result *
+ * being counted as successful query) *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+int zbx_jsonobj_query(zbx_jsonobj_t *obj, const char *path, char **output)
+{
+ zbx_jsonpath_context_t ctx;
zbx_jsonpath_t jsonpath;
- int path_depth = 0, ret = SUCCEED;
- zbx_vector_json_t objects;
+ int ret = SUCCEED;
if (FAIL == zbx_jsonpath_compile(path, &jsonpath))
return FAIL;
- zbx_vector_json_create(&objects);
+ ctx.found = 0;
+ ctx.root = obj;
+ ctx.path = &jsonpath;
+ zbx_vector_jsonobj_ref_create(&ctx.objects);
- if ('{' == *jp->start)
- ret = jsonpath_query_object(jp, jp, &jsonpath, path_depth, &objects);
- else if ('[' == *jp->start)
- ret = jsonpath_query_array(jp, jp, &jsonpath, path_depth, &objects);
+ switch (obj->type)
+ {
+ case ZBX_JSON_TYPE_OBJECT:
+ ret = jsonpath_query_object(&ctx, obj, 0);
+ break;
+ case ZBX_JSON_TYPE_ARRAY:
+ ret = jsonpath_query_array(&ctx, obj, 0);
+ break;
+ default:
+ break;
+ }
if (SUCCEED == ret)
{
+ zbx_vector_jsonobj_ref_t out;
+ int definite_path = jsonpath.definite, path_depth;
+
+ zbx_vector_jsonobj_ref_create(&out);
+
path_depth = jsonpath.segments_num;
while (0 < path_depth && ZBX_JSONPATH_SEGMENT_FUNCTION == jsonpath.segments[path_depth - 1].type)
path_depth--;
if (path_depth < jsonpath.segments_num)
- ret = jsonpath_apply_functions(jp, &objects, &jsonpath, path_depth, output);
+ {
+ if (SUCCEED == (ret = jsonpath_apply_functions(&ctx, path_depth, &definite_path, &out)))
+ ret = jsonpath_format_query_result(&out, definite_path, output);
+ }
else
- ret = jsonpath_format_query_result(&objects, &jsonpath, output);
+ ret = jsonpath_format_query_result(&ctx.objects, definite_path, output);
+
+ zbx_vector_jsonobj_ref_clear_ext(&out);
+ zbx_vector_jsonobj_ref_destroy(&out);
}
- zbx_vector_json_clear_ext(&objects);
- zbx_vector_json_destroy(&objects);
+ zbx_vector_jsonobj_ref_clear_ext(&ctx.objects);
+ zbx_vector_jsonobj_ref_destroy(&ctx.objects);
zbx_jsonpath_clear(&jsonpath);
return ret;
diff --git a/src/libs/zbxjson/jsonpath.h b/src/libs/zbxjson/jsonpath.h
index 3a5be7c9413..644aef6aa4a 100644
--- a/src/libs/zbxjson/jsonpath.h
+++ b/src/libs/zbxjson/jsonpath.h
@@ -20,7 +20,9 @@
#ifndef ZABBIX_JSONPATH_H
#define ZABBIX_JSONPATH_H
-#include "zbxalgo.h"
+#include "zbxjson.h"
+
+typedef struct zbx_jsonpath_token zbx_jsonpath_token_t;
typedef enum
{
@@ -78,10 +80,19 @@ typedef struct
}
zbx_jsonpath_range_t;
+typedef enum
+{
+ ZBX_JSONPATH_EXPRESSION_INDEX_TRUE,
+ ZBX_JSONPATH_EXPRESSION_INDEX_FALSE,
+}
+zbx_json_path_expression_index_t;
+
/* expression tokens in postfix notation */
typedef struct
{
zbx_vector_ptr_t tokens;
+ zbx_jsonpath_token_t *index_token; /* relative path token that is used to index parent object */
+ zbx_jsonpath_token_t *value_token; /* the index value token */
}
zbx_jsonpath_expression_t;
@@ -150,11 +161,11 @@ typedef enum
}
zbx_jsonpath_token_type_t;
-typedef struct
+struct zbx_jsonpath_token
{
unsigned char type;
- char *data;
-}
-zbx_jsonpath_token_t;
+ char *text;
+ zbx_jsonpath_t *path;
+};
#endif
diff --git a/src/libs/zbxlog/log.c b/src/libs/zbxlog/log.c
index 41f166b0998..6d917d4ecfc 100644
--- a/src/libs/zbxlog/log.c
+++ b/src/libs/zbxlog/log.c
@@ -36,6 +36,17 @@ static int log_type = LOG_TYPE_UNDEFINED;
static zbx_mutex_t log_access = ZBX_MUTEX_NULL;
int zbx_log_level = LOG_LEVEL_WARNING;
+static int config_log_file_size = -1; /* max log file size in MB */
+
+static int get_config_log_file_size(void)
+{
+ if (-1 != config_log_file_size)
+ return config_log_file_size;
+
+ THIS_SHOULD_NEVER_HAPPEN;
+ exit(EXIT_FAILURE);
+}
+
#ifdef _WINDOWS
# define LOCK_LOG zbx_mutex_lock(log_access)
# define UNLOCK_LOG zbx_mutex_unlock(log_access)
@@ -159,7 +170,7 @@ static void rotate_log(const char *filename)
new_size = buf.st_size;
- if (0 != CONFIG_LOG_FILE_SIZE && (zbx_uint64_t)CONFIG_LOG_FILE_SIZE * ZBX_MEBIBYTE < new_size)
+ if (0 != get_config_log_file_size() && (zbx_uint64_t)get_config_log_file_size() * ZBX_MEBIBYTE < new_size)
{
char filename_old[MAX_STRING_LEN];
@@ -291,10 +302,14 @@ void zbx_handle_log(void)
UNLOCK_LOG;
}
-int zabbix_open_log(int type, int level, const char *filename, char **error)
+int zabbix_open_log(const zbx_config_log_t *log_file_cfg, int level, char **error)
{
+ const char *filename = log_file_cfg->log_file_name;
+ int type = log_file_cfg->log_type;
+
log_type = type;
zbx_log_level = level;
+ config_log_file_size = log_file_cfg->log_file_size;
if (LOG_TYPE_SYSTEM == type)
{
@@ -323,7 +338,8 @@ int zabbix_open_log(int type, int level, const char *filename, char **error)
if (NULL == (log_file = fopen(filename, "a+")))
{
- *error = zbx_dsprintf(*error, "unable to open log file [%s]: %s", filename, zbx_strerror(errno));
+ *error = zbx_dsprintf(*error, "unable to open log file [%s]: %s", filename,
+ zbx_strerror(errno));
return FAIL;
}
@@ -387,7 +403,7 @@ void __zbx_zabbix_log(int level, const char *fmt, ...)
LOCK_LOG;
- if (0 != CONFIG_LOG_FILE_SIZE)
+ if (0 != get_config_log_file_size())
rotate_log(log_filename);
if (NULL != (log_file = fopen(log_filename, "a+")))
@@ -577,15 +593,16 @@ int zbx_get_log_type(const char *logtype)
return LOG_TYPE_UNDEFINED;
}
-int zbx_validate_log_parameters(ZBX_TASK_EX *task)
+int zbx_validate_log_parameters(ZBX_TASK_EX *task, const zbx_config_log_t *log_file_cfg)
{
- if (LOG_TYPE_UNDEFINED == CONFIG_LOG_TYPE)
+ if (LOG_TYPE_UNDEFINED == log_file_cfg->log_type)
{
- zabbix_log(LOG_LEVEL_CRIT, "invalid \"LogType\" configuration parameter: '%s'", CONFIG_LOG_TYPE_STR);
+ zabbix_log(LOG_LEVEL_CRIT, "invalid \"LogType\" configuration parameter: '%s'",
+ log_file_cfg->log_type_str);
return FAIL;
}
- if (LOG_TYPE_CONSOLE == CONFIG_LOG_TYPE && 0 == (task->flags & ZBX_TASK_FLAG_FOREGROUND) &&
+ if (LOG_TYPE_CONSOLE == log_file_cfg->log_type && 0 == (task->flags & ZBX_TASK_FLAG_FOREGROUND) &&
ZBX_TASK_START == task->task)
{
zabbix_log(LOG_LEVEL_CRIT, "\"LogType\" \"console\" parameter can only be used with the"
@@ -593,7 +610,8 @@ int zbx_validate_log_parameters(ZBX_TASK_EX *task)
return FAIL;
}
- if (LOG_TYPE_FILE == CONFIG_LOG_TYPE && (NULL == CONFIG_LOG_FILE || '\0' == *CONFIG_LOG_FILE))
+ if (LOG_TYPE_FILE == log_file_cfg->log_type && (NULL == log_file_cfg->log_file_name || '\0' ==
+ *log_file_cfg->log_file_name))
{
zabbix_log(LOG_LEVEL_CRIT, "\"LogType\" \"file\" parameter requires \"LogFile\" parameter to be set");
return FAIL;
diff --git a/src/libs/zbxnix/daemon.c b/src/libs/zbxnix/daemon.c
index 3cd11018e0a..740ba4f6f5d 100644
--- a/src/libs/zbxnix/daemon.c
+++ b/src/libs/zbxnix/daemon.c
@@ -324,12 +324,15 @@ static void set_daemon_signal_handlers(void)
* name of PID file *
* zbx_on_exit_cb_arg - callback function called when terminating *
* signal handler *
+ * config_log_type - [IN] *
+ * config_log_file - [IN] *
* *
* Comments: it doesn't allow running under 'root' if allow_root is zero *
* *
******************************************************************************/
int zbx_daemon_start(int allow_root, const char *user, unsigned int flags,
- zbx_get_pid_file_pathname_f get_pid_file_cb, zbx_on_exit_t zbx_on_exit_cb_arg)
+ zbx_get_pid_file_pathname_f get_pid_file_cb, zbx_on_exit_t zbx_on_exit_cb_arg, int config_log_type,
+ const char *config_log_file)
{
struct passwd *pwd;
@@ -423,7 +426,7 @@ int zbx_daemon_start(int allow_root, const char *user, unsigned int flags,
if (-1 == chdir("/")) /* this is to eliminate warning: ignoring return value of chdir */
assert(0);
- if (FAIL == zbx_redirect_stdio(LOG_TYPE_FILE == CONFIG_LOG_TYPE ? CONFIG_LOG_FILE : NULL))
+ if (FAIL == zbx_redirect_stdio(LOG_TYPE_FILE == config_log_type ? config_log_file : NULL))
exit(EXIT_FAILURE);
}
diff --git a/src/libs/zbxnum/num.c b/src/libs/zbxnum/num.c
index 9c06ffa138f..0ad81ad3315 100644
--- a/src/libs/zbxnum/num.c
+++ b/src/libs/zbxnum/num.c
@@ -294,7 +294,7 @@ int zbx_is_double(const char *str, double *value)
}
#if defined(_WINDOWS) || defined(__MINGW32__)
-int _wis_uint(const wchar_t *wide_string)
+int zbx_wis_uint(const wchar_t *wide_string)
{
const wchar_t *wide_char = wide_string;
diff --git a/src/libs/zbxserver/Makefile.am b/src/libs/zbxserver/Makefile.am
index 2ade3d4dc3f..d06eb248327 100644
--- a/src/libs/zbxserver/Makefile.am
+++ b/src/libs/zbxserver/Makefile.am
@@ -21,4 +21,4 @@ libzbxserver_a_SOURCES = \
calc_checks_eval.c \
evaluate_simple.c
-libzbxserver_a_CFLAGS = -I$(top_srcdir)/src/libs/zbxdbcache $(LIBXML2_CFLAGS)
+libzbxserver_a_CFLAGS = $(LIBXML2_CFLAGS)
diff --git a/src/libs/zbxserver/calc_checks_eval.c b/src/libs/zbxserver/calc_checks_eval.c
index d7c06b854a2..b8c9b62108f 100644
--- a/src/libs/zbxserver/calc_checks_eval.c
+++ b/src/libs/zbxserver/calc_checks_eval.c
@@ -20,7 +20,7 @@
#include "zbxserver.h"
#include "log.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "evalfunc.h"
#include "zbxeval.h"
#include "expression.h"
diff --git a/src/libs/zbxserver/evalfunc.c b/src/libs/zbxserver/evalfunc.c
index cc2bf8048c7..ce8886000c0 100644
--- a/src/libs/zbxserver/evalfunc.c
+++ b/src/libs/zbxserver/evalfunc.c
@@ -23,7 +23,7 @@
#include "log.h"
#include "zbxregexp.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "zbxtrends.h"
#include "anomalystl.h"
#include "zbxnum.h"
diff --git a/src/libs/zbxserver/evalfunc.h b/src/libs/zbxserver/evalfunc.h
index d831bbb6be9..241b38ec9c8 100644
--- a/src/libs/zbxserver/evalfunc.h
+++ b/src/libs/zbxserver/evalfunc.h
@@ -21,7 +21,7 @@
#define ZABBIX_EVALFUNC_H
#include "zbxtypes.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int zbx_evaluatable_for_notsupported(const char *fn);
int zbx_evaluate_RATE(zbx_variant_t *value, DC_ITEM *item, const char *parameters, const zbx_timespec_t *ts,
diff --git a/src/libs/zbxserver/expression.c b/src/libs/zbxserver/expression.c
index 7156646809f..a6cba156ae6 100644
--- a/src/libs/zbxserver/expression.c
+++ b/src/libs/zbxserver/expression.c
@@ -25,7 +25,8 @@
#include "zbxregexp.h"
#include "zbxvariant.h"
#include "zbxeval.h"
-#include "valuecache.h"
+#include "zbxdbwrap.h"
+#include "zbxcachevalue.h"
#include "macrofunc.h"
#include "zbxxml.h"
#include "zbxstr.h"
diff --git a/src/libs/zbxserver/get_host_from_event.h b/src/libs/zbxserver/get_host_from_event.h
index 92833d07320..fe9cfed34e9 100644
--- a/src/libs/zbxserver/get_host_from_event.h
+++ b/src/libs/zbxserver/get_host_from_event.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_GET_HOST_FROM_EVENT_H
#define ZABBIX_GET_HOST_FROM_EVENT_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int get_host_from_event(const ZBX_DB_EVENT *event, DC_HOST *host, char *error, size_t max_error_len);
diff --git a/src/libs/zbxserver/zabbix_stats.c b/src/libs/zbxserver/zabbix_stats.c
index 387366cded8..1cea6932209 100644
--- a/src/libs/zbxserver/zabbix_stats.c
+++ b/src/libs/zbxserver/zabbix_stats.c
@@ -20,7 +20,7 @@
#include "zbxstats.h"
#include "zbxcommon.h"
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "zbxself.h"
#include "../../zabbix_server/vmware/vmware.h"
#include "preproc.h"
diff --git a/src/libs/zbxsysinfo/aix/inodes.c b/src/libs/zbxsysinfo/aix/inodes.c
index 46b4801e2bd..77e631060bc 100644
--- a/src/libs/zbxsysinfo/aix/inodes.c
+++ b/src/libs/zbxsysinfo/aix/inodes.c
@@ -65,8 +65,8 @@ int get_fs_inode_stat(const char *fs, zbx_uint64_t *itotal, zbx_uint64_t *ifree,
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
return SYSINFO_RET_OK;
diff --git a/src/libs/zbxsysinfo/common/dir.c b/src/libs/zbxsysinfo/common/dir.c
index 79be22d7297..a207e627147 100644
--- a/src/libs/zbxsysinfo/common/dir.c
+++ b/src/libs/zbxsysinfo/common/dir.c
@@ -28,7 +28,7 @@
#include "log.h"
#if defined(_WINDOWS) || defined(__MINGW32__)
-# include "disk.h"
+# include "zbxwin32.h"
#endif
/******************************************************************************
@@ -590,7 +590,7 @@ static int vfs_dir_size_local(AGENT_REQUEST *request, AGENT_RESULT *result, HAND
goto err2;
}
- if (SIZE_MODE_DISK == mode && 0 == (cluster_size = get_cluster_size(item->path, &error)))
+ if (SIZE_MODE_DISK == mode && 0 == (cluster_size = zbx_get_cluster_size(item->path, &error)))
{
SET_MSG_RESULT(result, error);
list.values_num++;
diff --git a/src/libs/zbxsysinfo/common/system.c b/src/libs/zbxsysinfo/common/system.c
index 6222cee571e..40dc805201a 100644
--- a/src/libs/zbxsysinfo/common/system.c
+++ b/src/libs/zbxsysinfo/common/system.c
@@ -25,7 +25,7 @@
#if defined(_WINDOWS) || defined(__MINGW32__)
# include "zbxsysinfo.h"
-# include "perfmon.h"
+# include "zbxwin32.h"
# pragma comment(lib, "user32.lib")
#endif
@@ -83,8 +83,8 @@ int system_users_num(AGENT_REQUEST *request, AGENT_RESULT *result)
ZBX_UNUSED(request);
zbx_snprintf(counter_path, sizeof(counter_path), "\\%u\\%u",
- (unsigned int)get_builtin_object_index(PCI_TOTAL_SESSIONS),
- (unsigned int)get_builtin_counter_index(PCI_TOTAL_SESSIONS));
+ (unsigned int)zbx_get_builtin_object_index(PCI_TOTAL_SESSIONS),
+ (unsigned int)zbx_get_builtin_counter_index(PCI_TOTAL_SESSIONS));
request_tmp.nparam = 1;
request_tmp.params = zbx_malloc(NULL, request_tmp.nparam * sizeof(char *));
diff --git a/src/libs/zbxsysinfo/freebsd/inodes.c b/src/libs/zbxsysinfo/freebsd/inodes.c
index 6824e7f5e5c..697e50e5155 100644
--- a/src/libs/zbxsysinfo/freebsd/inodes.c
+++ b/src/libs/zbxsysinfo/freebsd/inodes.c
@@ -57,8 +57,8 @@ int get_fs_inode_stat(const char *fs, zbx_uint64_t *itotal, zbx_uint64_t *ifree,
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
return SYSINFO_RET_OK;
diff --git a/src/libs/zbxsysinfo/hpux/inodes.c b/src/libs/zbxsysinfo/hpux/inodes.c
index 01e4358b196..509fee26cba 100644
--- a/src/libs/zbxsysinfo/hpux/inodes.c
+++ b/src/libs/zbxsysinfo/hpux/inodes.c
@@ -57,8 +57,8 @@ int get_fs_inode_stat(const char *fs, zbx_uint64_t *itotal, zbx_uint64_t *ifree,
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
return SYSINFO_RET_OK;
diff --git a/src/libs/zbxsysinfo/linux/diskio.c b/src/libs/zbxsysinfo/linux/diskio.c
index 4464a09c8d2..cc356549508 100644
--- a/src/libs/zbxsysinfo/linux/diskio.c
+++ b/src/libs/zbxsysinfo/linux/diskio.c
@@ -357,6 +357,8 @@ int vfs_dev_discovery(AGENT_REQUEST *request, AGENT_RESULT *result)
zbx_fclose(f);
}
+ else
+ continue;
if (0 == devtype_found)
{
diff --git a/src/libs/zbxsysinfo/linux/hardware.c b/src/libs/zbxsysinfo/linux/hardware.c
index d8eff864d47..8ebd7086a47 100644
--- a/src/libs/zbxsysinfo/linux/hardware.c
+++ b/src/libs/zbxsysinfo/linux/hardware.c
@@ -496,7 +496,12 @@ int system_hw_cpu(AGENT_REQUEST *request, AGENT_RESULT *result)
filter))
{
ret = SYSINFO_RET_OK;
- sscanf(tmp, ZBX_FS_UI64, &curfreq);
+ if (1 != sscanf(tmp, ZBX_FS_UI64, &curfreq))
+ {
+ zbx_fclose(f);
+ SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot obtain CPU frequency."));
+ return SYSINFO_RET_FAIL;
+ }
}
}
diff --git a/src/libs/zbxsysinfo/linux/inodes.c b/src/libs/zbxsysinfo/linux/inodes.c
index 0ea0c231ed9..c29da19eae1 100644
--- a/src/libs/zbxsysinfo/linux/inodes.c
+++ b/src/libs/zbxsysinfo/linux/inodes.c
@@ -77,9 +77,10 @@ while(0)
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
+
return SYSINFO_RET_OK;
#undef ZBX_STATFS
#undef ZBX_FFREE
diff --git a/src/libs/zbxsysinfo/linux/proc.c b/src/libs/zbxsysinfo/linux/proc.c
index f2e80c49d09..01b602af9a2 100644
--- a/src/libs/zbxsysinfo/linux/proc.c
+++ b/src/libs/zbxsysinfo/linux/proc.c
@@ -1881,11 +1881,12 @@ int proc_get(AGENT_REQUEST *request, AGENT_RESULT *result)
if (SUCCEED != get_cmdline(f_cmd, &cmdline, &l))
continue;
- read_value_from_proc_file(f_status, 0, "Name", PROC_VAL_TYPE_TEXT, NULL, &prname);
+ if (SUCCEED != read_value_from_proc_file(f_status, 0, "Name", PROC_VAL_TYPE_TEXT, NULL, &prname))
+ continue;
if ('\0' != *cmdline)
{
- char *p, *pend, sep;
+ char *p, *pend, sep = 0;
size_t len;
if (NULL != (pend = strpbrk(cmdline, " :")))
diff --git a/src/libs/zbxsysinfo/netbsd/inodes.c b/src/libs/zbxsysinfo/netbsd/inodes.c
index 01e4358b196..509fee26cba 100644
--- a/src/libs/zbxsysinfo/netbsd/inodes.c
+++ b/src/libs/zbxsysinfo/netbsd/inodes.c
@@ -57,8 +57,8 @@ int get_fs_inode_stat(const char *fs, zbx_uint64_t *itotal, zbx_uint64_t *ifree,
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
return SYSINFO_RET_OK;
diff --git a/src/libs/zbxsysinfo/openbsd/inodes.c b/src/libs/zbxsysinfo/openbsd/inodes.c
index 01e4358b196..509fee26cba 100644
--- a/src/libs/zbxsysinfo/openbsd/inodes.c
+++ b/src/libs/zbxsysinfo/openbsd/inodes.c
@@ -57,8 +57,8 @@ int get_fs_inode_stat(const char *fs, zbx_uint64_t *itotal, zbx_uint64_t *ifree,
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
return SYSINFO_RET_OK;
diff --git a/src/libs/zbxsysinfo/osf/inodes.c b/src/libs/zbxsysinfo/osf/inodes.c
index 81c236c737c..51513fd9bf5 100644
--- a/src/libs/zbxsysinfo/osf/inodes.c
+++ b/src/libs/zbxsysinfo/osf/inodes.c
@@ -75,13 +75,7 @@ static int vfs_fs_inode_local(AGENT_REQUEST *request, AGENT_RESULT *result)
#ifdef HAVE_SYS_STATVFS_H
total -= s.f_ffree - s.f_favail;
#endif
- if (0 != total)
- SET_DBL_RESULT(result, (double)(100.0 * s.ZBX_FFREE) / total);
- else
- {
- SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot calculate percentage because total is zero."));
- return SYSINFO_RET_FAIL;
- }
+ SET_DBL_RESULT(result, 0 != total ? (double)(100.0 * s.ZBX_FFREE) / total : 100.0);
}
else if (0 == strcmp(mode, "pused"))
{
@@ -89,15 +83,7 @@ static int vfs_fs_inode_local(AGENT_REQUEST *request, AGENT_RESULT *result)
#ifdef HAVE_SYS_STATVFS_H
total -= s.f_ffree - s.f_favail;
#endif
- if (0 != total)
- {
- SET_DBL_RESULT(result, 100.0 - (double)(100.0 * s.ZBX_FFREE) / total);
- }
- else
- {
- SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot calculate percentage because total is zero."));
- return SYSINFO_RET_FAIL;
- }
+ SET_DBL_RESULT(result, 0 != total ? 100.0 - (double)(100.0 * s.ZBX_FFREE) / total : 0.0);
}
else
{
diff --git a/src/libs/zbxsysinfo/osx/inodes.c b/src/libs/zbxsysinfo/osx/inodes.c
index 8bd59aeb155..cd257f83da3 100644
--- a/src/libs/zbxsysinfo/osx/inodes.c
+++ b/src/libs/zbxsysinfo/osx/inodes.c
@@ -57,8 +57,8 @@ int get_fs_inode_stat(const char *fs, zbx_uint64_t *itotal, zbx_uint64_t *ifree,
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
return SYSINFO_RET_OK;
diff --git a/src/libs/zbxsysinfo/solaris/inodes.c b/src/libs/zbxsysinfo/solaris/inodes.c
index 5c7cc6bac73..317934e5ae5 100644
--- a/src/libs/zbxsysinfo/solaris/inodes.c
+++ b/src/libs/zbxsysinfo/solaris/inodes.c
@@ -56,8 +56,8 @@ int get_fs_inode_stat(const char *fs, zbx_uint64_t *itotal, zbx_uint64_t *ifree,
}
else if (NULL != mode && (0 == strcmp(mode, "pfree") || 0 == strcmp(mode, "pused")))
{
- *error = zbx_strdup(NULL, "Cannot calculate percentage because total is zero.");
- return SYSINFO_RET_FAIL;
+ *pfree = 100.0;
+ *pused = 0.0;
}
return SYSINFO_RET_OK;
diff --git a/src/libs/zbxsysinfo/sysinfo.h b/src/libs/zbxsysinfo/sysinfo.h
index ba6474293a9..384fbe09c93 100644
--- a/src/libs/zbxsysinfo/sysinfo.h
+++ b/src/libs/zbxsysinfo/sysinfo.h
@@ -176,10 +176,10 @@ int perf_counter(AGENT_REQUEST *request, AGENT_RESULT *result);
int perf_counter_en(AGENT_REQUEST *request, AGENT_RESULT *result);
int perf_instance_discovery(AGENT_REQUEST *request, AGENT_RESULT *result);
int perf_instance_discovery_en(AGENT_REQUEST *request, AGENT_RESULT *result);
-int service_discovery(AGENT_REQUEST *request, AGENT_RESULT *result);
-int service_info(AGENT_REQUEST *request, AGENT_RESULT *result);
-int service_state(AGENT_REQUEST *request, AGENT_RESULT *result);
-int services(AGENT_REQUEST *request, AGENT_RESULT *result);
+int discover_services(AGENT_REQUEST *request, AGENT_RESULT *result);
+int get_service_info(AGENT_REQUEST *request, AGENT_RESULT *result);
+int get_service_state(AGENT_REQUEST *request, AGENT_RESULT *result);
+int get_list_of_services(AGENT_REQUEST *request, AGENT_RESULT *result);
int proc_info(AGENT_REQUEST *request, AGENT_RESULT *result);
int net_if_list(AGENT_REQUEST *request, AGENT_RESULT *result);
int wmi_get(AGENT_REQUEST *request, AGENT_RESULT *result);
diff --git a/src/libs/zbxsysinfo/win32/pdhmon.c b/src/libs/zbxsysinfo/win32/pdhmon.c
index e6787bebed2..2f2cdb4cdfc 100644
--- a/src/libs/zbxsysinfo/win32/pdhmon.c
+++ b/src/libs/zbxsysinfo/win32/pdhmon.c
@@ -104,7 +104,7 @@ static int perf_counter_ex(const char *function, AGENT_REQUEST *request, AGENT_R
goto out;
}
- if (FAIL == check_counter_path(counterpath, PERF_COUNTER_LANG_DEFAULT == lang))
+ if (FAIL == zbx_check_counter_path(counterpath, PERF_COUNTER_LANG_DEFAULT == lang))
{
SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid performance counter path."));
goto out;
diff --git a/src/libs/zbxsysinfo/win32/proc.c b/src/libs/zbxsysinfo/win32/proc.c
index dedbea03361..ed7babb04d1 100644
--- a/src/libs/zbxsysinfo/win32/proc.c
+++ b/src/libs/zbxsysinfo/win32/proc.c
@@ -73,7 +73,10 @@ static int zbx_get_process_username(HANDLE hProcess, char *userName, char *sid)
int iUse, res = FAIL;
/* clean result; */
- *userName = *sid = '\0';
+ *userName = '\0';
+
+ if (NULL != sid)
+ *sid = '\0';
/* open the processes token */
if (0 == OpenProcessToken(hProcess, TOKEN_QUERY, &tok))
diff --git a/src/libs/zbxsysinfo/win32/services.c b/src/libs/zbxsysinfo/win32/services.c
index c80b911ccf3..c3a24fd0ec2 100644
--- a/src/libs/zbxsysinfo/win32/services.c
+++ b/src/libs/zbxsysinfo/win32/services.c
@@ -254,7 +254,7 @@ static zbx_startup_type_t get_service_startup_type(SC_HANDLE h_srv, QUERY_SERVIC
}
}
-int service_discovery(AGENT_REQUEST *request, AGENT_RESULT *result)
+int discover_services(AGENT_REQUEST *request, AGENT_RESULT *result)
{
ENUM_SERVICE_STATUS_PROCESS *ssp = NULL;
SC_HANDLE h_mgr;
@@ -391,7 +391,7 @@ next:
return SYSINFO_RET_OK;
}
-int service_info(AGENT_REQUEST *request, AGENT_RESULT *result)
+int get_service_info(AGENT_REQUEST *request, AGENT_RESULT *result)
{
#define ZBX_SRV_PARAM_STATE 0x01
#define ZBX_SRV_PARAM_DISPLAYNAME 0x02
@@ -550,7 +550,7 @@ int service_info(AGENT_REQUEST *request, AGENT_RESULT *result)
#undef ZBX_NON_EXISTING_SRV
}
-int service_state(AGENT_REQUEST *request, AGENT_RESULT *result)
+int get_service_state(AGENT_REQUEST *request, AGENT_RESULT *result)
{
SC_HANDLE mgr, service;
char *name;
@@ -657,7 +657,8 @@ static int check_service_starttype(SC_HANDLE h_srv, int start_type)
*/
#define ZBX_SRV_STATE_ALL 0x007f /* ZBX_SRV_STATE_STOPPED | ZBX_SRV_STATE_STARTED
*/
-static int check_service_state(SC_HANDLE h_srv, int service_state)
+
+static int get_service_state_local(SC_HANDLE h_srv, int service_state)
{
SERVICE_STATUS status;
@@ -699,7 +700,7 @@ static int check_service_state(SC_HANDLE h_srv, int service_state)
return FAIL;
}
-int services(AGENT_REQUEST *request, AGENT_RESULT *result)
+int get_list_of_services(AGENT_REQUEST *request, AGENT_RESULT *result)
{
int start_type, service_state;
char *type, *state, *exclude, *buf = NULL, *utf8;
@@ -776,7 +777,7 @@ int services(AGENT_REQUEST *request, AGENT_RESULT *result)
if (SUCCEED == check_service_starttype(h_srv, start_type))
{
- if (SUCCEED == check_service_state(h_srv, service_state))
+ if (SUCCEED == get_service_state_local(h_srv, service_state))
{
utf8 = zbx_unicode_to_utf8(ssp[i].lpServiceName);
@@ -811,17 +812,3 @@ int services(AGENT_REQUEST *request, AGENT_RESULT *result)
return SYSINFO_RET_OK;
}
-#undef ZBX_SRV_STARTTYPE_ALL
-#undef ZBX_SRV_STARTTYPE_AUTOMATIC
-#undef ZBX_SRV_STARTTYPE_MANUAL
-#undef ZBX_SRV_STARTTYPE_DISABLED
-
-#undef ZBX_SRV_STATE_STOPPED
-#undef ZBX_SRV_STATE_START_PENDING
-#undef ZBX_SRV_STATE_STOP_PENDING
-#undef ZBX_SRV_STATE_RUNNING
-#undef ZBX_SRV_STATE_CONTINUE_PENDING
-#undef ZBX_SRV_STATE_PAUSE_PENDING
-#undef ZBX_SRV_STATE_PAUSED
-#undef ZBX_SRV_STATE_STARTED
-#undef ZBX_SRV_STATE_ALL
diff --git a/src/libs/zbxsysinfo/win32/system.c b/src/libs/zbxsysinfo/win32/system.c
index 99cdef09897..cc35553090c 100644
--- a/src/libs/zbxsysinfo/win32/system.c
+++ b/src/libs/zbxsysinfo/win32/system.c
@@ -24,7 +24,7 @@
#include "cfg.h"
#include "zbxtime.h"
-#include "perfmon.h"
+#include "zbxwin32.h"
#pragma comment(lib, "user32.lib")
diff --git a/src/libs/zbxsysinfo/win32/uptime.c b/src/libs/zbxsysinfo/win32/uptime.c
index 91d047ea627..d264c3c9f61 100644
--- a/src/libs/zbxsysinfo/win32/uptime.c
+++ b/src/libs/zbxsysinfo/win32/uptime.c
@@ -20,7 +20,7 @@
#include "zbxsysinfo.h"
#include "../sysinfo.h"
-#include "perfmon.h"
+#include "zbxwin32.h"
int system_uptime(AGENT_REQUEST *request, AGENT_RESULT *result)
{
@@ -29,8 +29,8 @@ int system_uptime(AGENT_REQUEST *request, AGENT_RESULT *result)
int ret;
zbx_snprintf(counter_path, sizeof(counter_path), "\\%u\\%u",
- (unsigned int)get_builtin_object_index(PCI_SYSTEM_UP_TIME),
- (unsigned int)get_builtin_counter_index(PCI_SYSTEM_UP_TIME));
+ (unsigned int)zbx_get_builtin_object_index(PCI_SYSTEM_UP_TIME),
+ (unsigned int)zbx_get_builtin_counter_index(PCI_SYSTEM_UP_TIME));
request_tmp.nparam = 1;
request_tmp.params = zbx_malloc(NULL, request_tmp.nparam * sizeof(char *));
diff --git a/src/libs/zbxsysinfo/win32/win32.c b/src/libs/zbxsysinfo/win32/win32.c
index 3357f46d566..65ec0854913 100644
--- a/src/libs/zbxsysinfo/win32/win32.c
+++ b/src/libs/zbxsysinfo/win32/win32.c
@@ -56,10 +56,10 @@ ZBX_METRIC parameters_specific[] =
{"system.uname", 0, system_uname, NULL},
- {"service.discovery", 0, service_discovery, NULL},
- {"service.info", CF_HAVEPARAMS, service_info, ZABBIX_SERVICE_NAME},
- {"service_state", CF_HAVEPARAMS, service_state, ZABBIX_SERVICE_NAME},
- {"services", CF_HAVEPARAMS, services, NULL},
+ {"service.discovery", 0, discover_services, NULL},
+ {"service.info", CF_HAVEPARAMS, get_service_info, ZABBIX_SERVICE_NAME},
+ {"service_state", CF_HAVEPARAMS, get_service_state, ZABBIX_SERVICE_NAME},
+ {"services", CF_HAVEPARAMS, get_list_of_services, NULL},
{"perf_counter", CF_HAVEPARAMS, perf_counter, "\\System\\Processes"},
{"perf_counter_en", CF_HAVEPARAMS, perf_counter_en, "\\System\\Processes"},
{"perf_instance.discovery", CF_HAVEPARAMS, perf_instance_discovery, "Processor"},
diff --git a/src/libs/zbxwin32/disk.c b/src/libs/zbxwin32/disk.c
index 7b88dc80b68..da2bdebe1be 100644
--- a/src/libs/zbxwin32/disk.c
+++ b/src/libs/zbxwin32/disk.c
@@ -17,6 +17,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
+#include "zbxwin32.h"
+
#include "zbxstr.h"
#include "log.h"
@@ -32,7 +34,7 @@
* On error, 0 is returned. *
* *
******************************************************************************/
-zbx_uint64_t get_cluster_size(const char *path, char **error)
+zbx_uint64_t zbx_get_cluster_size(const char *path, char **error)
{
wchar_t *disk = NULL, *wpath = NULL;
unsigned long sectors_per_cluster, bytes_per_sector, path_length;
diff --git a/src/libs/zbxwin32/fatal.c b/src/libs/zbxwin32/fatal.c
index 9e040c6dca5..7c684fb9615 100644
--- a/src/libs/zbxwin32/fatal.c
+++ b/src/libs/zbxwin32/fatal.c
@@ -17,6 +17,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
+#include "zbxwin32.h"
+
#include "zbxstr.h"
#include "log.h"
@@ -25,28 +27,35 @@
#pragma comment(lib, "DbgHelp.lib")
-#define STACKWALK_MAX_NAMELEN 4096
-
-#define ZBX_LSHIFT(value, bits) (((unsigned __int64)value) << bits)
-
-extern const char *progname;
+typedef BOOL (WINAPI *SymGetLineFromAddrW64_func_t)(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
+typedef BOOL (WINAPI *SymFromAddr_func_t)(HANDLE a, DWORD64 b , PDWORD64 c, PSYMBOL_INFO d);
#ifdef _M_X64
-
-#define ZBX_IMAGE_FILE_MACHINE IMAGE_FILE_MACHINE_AMD64
-
static void print_register(const char *name, unsigned __int64 value)
{
zabbix_log(LOG_LEVEL_CRIT, "%-7s = %16I64x = %20I64u = %20I64d", name, value, value, value);
}
+#else
+static void print_register(const char *name, unsigned __int32 value)
+{
+ zabbix_log(LOG_LEVEL_CRIT, "%-7s = %16lx = %20lu = %20ld", name, value, value, value);
+}
+#endif
static void print_fatal_info(CONTEXT *pctx)
{
zabbix_log(LOG_LEVEL_CRIT, "====== Fatal information: ======");
+#ifdef _M_X64
zabbix_log(LOG_LEVEL_CRIT, "Program counter: 0x%08lx", pctx->Rip);
+#else
+ zabbix_log(LOG_LEVEL_CRIT, "Program counter: 0x%04x", pctx->Eip);
+#endif
zabbix_log(LOG_LEVEL_CRIT, "=== Registers: ===");
+#define ZBX_LSHIFT(value, bits) (((unsigned __int64)value) << bits)
+
+#ifdef _M_X64
print_register("r8", pctx->R8);
print_register("r9", pctx->R9);
print_register("r10", pctx->R10);
@@ -68,24 +77,7 @@ static void print_fatal_info(CONTEXT *pctx)
print_register("rsp", pctx->Rsp);
print_register("efl", pctx->EFlags);
print_register("csgsfs", ZBX_LSHIFT(pctx->SegCs, 24) | ZBX_LSHIFT(pctx->SegGs, 16) | ZBX_LSHIFT(pctx->SegFs, 8));
-}
-
#else
-
-#define ZBX_IMAGE_FILE_MACHINE IMAGE_FILE_MACHINE_I386
-
-static void print_register(const char *name, unsigned __int32 value)
-{
- zabbix_log(LOG_LEVEL_CRIT, "%-7s = %16lx = %20lu = %20ld", name, value, value, value);
-}
-
-static void print_fatal_info(CONTEXT *pctx)
-{
- zabbix_log(LOG_LEVEL_CRIT, "====== Fatal information: ======");
-
- zabbix_log(LOG_LEVEL_CRIT, "Program counter: 0x%04x", pctx->Eip);
- zabbix_log(LOG_LEVEL_CRIT, "=== Registers: ===");
-
print_register("edi", pctx->Edi);
print_register("esi", pctx->Esi);
print_register("ebp", pctx->Ebp);
@@ -98,12 +90,12 @@ static void print_fatal_info(CONTEXT *pctx)
print_register("esp", pctx->Esp);
print_register("efl", pctx->EFlags);
print_register("csgsfs", ZBX_LSHIFT(pctx->SegCs, 24) | ZBX_LSHIFT(pctx->SegGs, 16) | ZBX_LSHIFT(pctx->SegFs, 8));
-}
-
#endif
-typedef BOOL (WINAPI *SymGetLineFromAddrW64_func_t)(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
-typedef BOOL (WINAPI *SymFromAddr_func_t)(HANDLE a, DWORD64 b , PDWORD64 c, PSYMBOL_INFO d);
+#undef ZBX_LSHIFT
+}
+
+static zbx_get_progname_f get_progname_cb = NULL;
void zbx_backtrace(void)
{
@@ -154,7 +146,7 @@ static void print_backtrace(CONTEXT *pctx)
process_name = zbx_unicode_to_utf8(szProcessName);
- if (NULL != (ptr = strstr(process_name, progname)))
+ if (NULL != (ptr = strstr(process_name, get_progname_cb())))
zbx_strncpy_alloc(&process_path, &path_alloc, &path_offset, process_name, ptr - process_name);
}
@@ -181,6 +173,12 @@ static void print_backtrace(CONTEXT *pctx)
scount = s;
ctxcount = ctx;
+#ifdef _M_X64
+#define ZBX_IMAGE_FILE_MACHINE IMAGE_FILE_MACHINE_AMD64
+#else
+#define ZBX_IMAGE_FILE_MACHINE IMAGE_FILE_MACHINE_I386
+#endif
+
/* get number of frames, ctxcount may be modified during StackWalk64() calls */
while (TRUE == StackWalk64(ZBX_IMAGE_FILE_MACHINE, hProcess, hThread, &scount, &ctxcount, NULL, NULL, NULL,
NULL))
@@ -223,6 +221,8 @@ static void print_backtrace(CONTEXT *pctx)
break;
}
+#undef ZBX_IMAGE_FILE_MACHINE
+
SymCleanup(hProcess);
zbx_free(frame);
@@ -231,6 +231,11 @@ static void print_backtrace(CONTEXT *pctx)
zbx_free(pSym);
}
+void zbx_init_library_win32(zbx_get_progname_f get_progname)
+{
+ get_progname_cb = get_progname;
+}
+
int zbx_win_exception_filter(struct _EXCEPTION_POINTERS *ep)
{
zabbix_log(LOG_LEVEL_CRIT, "Unhandled exception %x detected at 0x%p. Crashing ...",
diff --git a/src/libs/zbxwin32/perfmon.c b/src/libs/zbxwin32/perfmon.c
index 661b6af2fa2..9958556ba0f 100644
--- a/src/libs/zbxwin32/perfmon.c
+++ b/src/libs/zbxwin32/perfmon.c
@@ -17,9 +17,10 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "perfmon.h"
+#include "zbxwin32.h"
#include "zbxstr.h"
+#include "zbxnum.h"
#include "stats.h"
#include "log.h"
@@ -230,7 +231,7 @@ PDH_STATUS zbx_PdhGetRawCounterValue(const char *function, const char *counterpa
* sleep 1 second to get the second raw value. *
* *
******************************************************************************/
-PDH_STATUS calculate_counter_value(const char *function, const char *counterpath,
+PDH_STATUS zbx_calculate_counter_value(const char *function, const char *counterpath,
zbx_perf_counter_lang_t lang, double *value)
{
PDH_HQUERY query;
@@ -300,7 +301,7 @@ close_query:
* installations for the same names *
* *
******************************************************************************/
-DWORD get_builtin_object_index(zbx_builtin_counter_ref_t counter_ref)
+DWORD zbx_get_builtin_object_index(zbx_builtin_counter_ref_t counter_ref)
{
return builtin_object_map[builtin_counter_map[counter_ref].object].pdhIndex;
}
@@ -316,7 +317,7 @@ DWORD get_builtin_object_index(zbx_builtin_counter_ref_t counter_ref)
* installations for the same names *
* *
******************************************************************************/
-DWORD get_builtin_counter_index(zbx_builtin_counter_ref_t counter_ref)
+DWORD zbx_get_builtin_counter_index(zbx_builtin_counter_ref_t counter_ref)
{
return builtin_counter_map[counter_ref].pdhIndex;
}
@@ -340,7 +341,7 @@ DWORD get_builtin_counter_index(zbx_builtin_counter_ref_t counter_ref)
* by the caller. *
* *
******************************************************************************/
-wchar_t *get_all_counter_names(HKEY reg_key, wchar_t *reg_value_name)
+wchar_t *zbx_get_all_counter_names(HKEY reg_key, wchar_t *reg_value_name)
{
wchar_t *buffer = NULL;
DWORD buffer_size = 0;
@@ -508,7 +509,7 @@ out:
* initialization from init_perf_collector(). *
* *
******************************************************************************/
-int init_builtin_counter_indexes(void)
+int zbx_init_builtin_counter_indexes(void)
{
int ret = SUCCEED, i;
wchar_t *counter_text, *eng_names, *counter_base;
@@ -526,7 +527,7 @@ int init_builtin_counter_indexes(void)
/* Get buffer holding a list of performance counter indexes and English counter names. */
/* L"Counter" stores names, L"Help" stores descriptions ("Help" is not used). */
- if (NULL == (counter_base = eng_names = get_all_counter_names(HKEY_PERFORMANCE_TEXT, L"Counter")))
+ if (NULL == (counter_base = eng_names = zbx_get_all_counter_names(HKEY_PERFORMANCE_TEXT, L"Counter")))
{
ret = FAIL;
goto out;
@@ -568,7 +569,7 @@ int init_builtin_counter_indexes(void)
builtin_counter_map[i].minSupported_dwMajorVersion && vi->dwMinorVersion >=
builtin_counter_map[i].minSupported_dwMinorVersion && 0 ==
wcscmp(builtin_counter_map[i].eng_name, counter_text) && SUCCEED ==
- validate_object_counter(get_builtin_object_index(i), counter_index))
+ validate_object_counter(zbx_get_builtin_object_index(i), counter_index))
{
builtin_counter_map[i].pdhIndex = counter_index;
break;
@@ -617,7 +618,7 @@ out:
* installations for the same names *
* *
******************************************************************************/
-wchar_t *get_counter_name(DWORD pdhIndex)
+wchar_t *zbx_get_counter_name(DWORD pdhIndex)
{
zbx_perf_counter_id_t *counterName;
@@ -656,7 +657,7 @@ wchar_t *get_counter_name(DWORD pdhIndex)
return counterName->name;
}
-int check_counter_path(char *counterPath, int convert_from_numeric)
+int zbx_check_counter_path(char *counterPath, int convert_from_numeric)
{
PDH_COUNTER_PATH_ELEMENTS *cpe = NULL;
PDH_STATUS status;
@@ -687,15 +688,15 @@ int check_counter_path(char *counterPath, int convert_from_numeric)
if (0 != convert_from_numeric)
{
- int is_numeric = (SUCCEED == _wis_uint(cpe->szObjectName) ? 0x01 : 0);
- is_numeric |= (SUCCEED == _wis_uint(cpe->szCounterName) ? 0x02 : 0);
+ int is_numeric = (SUCCEED == zbx_wis_uint(cpe->szObjectName) ? 0x01 : 0);
+ is_numeric |= (SUCCEED == zbx_wis_uint(cpe->szCounterName) ? 0x02 : 0);
if (0 != is_numeric)
{
if (0x01 & is_numeric)
- cpe->szObjectName = get_counter_name(_wtoi(cpe->szObjectName));
+ cpe->szObjectName = zbx_get_counter_name(_wtoi(cpe->szObjectName));
if (0x02 & is_numeric)
- cpe->szCounterName = get_counter_name(_wtoi(cpe->szCounterName));
+ cpe->szCounterName = zbx_get_counter_name(_wtoi(cpe->szCounterName));
if (ERROR_SUCCESS != zbx_PdhMakeCounterPath(__func__, cpe, counterPath))
goto clean;
diff --git a/src/libs/zbxwin32/service.c b/src/libs/zbxwinservice/service.c
index 767591843b4..c83f3510185 100644
--- a/src/libs/zbxwin32/service.c
+++ b/src/libs/zbxwinservice/service.c
@@ -23,7 +23,6 @@
#include "cfg.h"
#include "log.h"
#include "zbxconf.h"
-#include "perfmon.h"
#define EVENTLOG_REG_PATH TEXT("SYSTEM\\CurrentControlSet\\Services\\EventLog\\")
@@ -117,6 +116,9 @@ static VOID WINAPI ServiceEntry(DWORD argc, wchar_t **argv)
{
wchar_t *wservice_name;
+ ZBX_UNUSED(argc);
+ ZBX_UNUSED(argv);
+
wservice_name = zbx_utf8_to_unicode(ZABBIX_SERVICE_NAME);
serviceHandle = RegisterServiceCtrlHandler(wservice_name, ServiceCtrlHandler);
zbx_free(wservice_name);
@@ -140,7 +142,7 @@ static VOID WINAPI ServiceEntry(DWORD argc, wchar_t **argv)
MAIN_ZABBIX_ENTRY(0);
}
-void service_start(int flags)
+void zbx_service_start(int flags)
{
int ret;
static SERVICE_TABLE_ENTRY serviceTable[2];
@@ -425,7 +427,7 @@ int ZabbixStopService(void)
return ret;
}
-void set_parent_signal_handler(zbx_on_exit_t zbx_on_exit_cb_arg)
+void zbx_set_parent_signal_handler(zbx_on_exit_t zbx_on_exit_cb_arg)
{
zbx_on_exit_cb = zbx_on_exit_cb_arg;
signal(SIGINT, parent_signal_handler);
diff --git a/src/zabbix_agent/Makefile.am b/src/zabbix_agent/Makefile.am
index 7faa9ad9a17..39ce4441557 100644
--- a/src/zabbix_agent/Makefile.am
+++ b/src/zabbix_agent/Makefile.am
@@ -54,7 +54,6 @@ zabbix_agentd_LDADD = \
$(top_builddir)/src/libs/zbxsysinfo/alias/libalias.a \
$(top_builddir)/src/libs/zbxlog/libzbxlog.a \
$(top_builddir)/src/libs/zbxregexp/libzbxregexp.a \
- $(top_builddir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_builddir)/src/libs/zbxthreads/libzbxthreads.a \
$(top_builddir)/src/libs/zbxmutexs/libzbxmutexs.a \
$(top_builddir)/src/libs/zbxnix/libzbxnix.a \
@@ -62,6 +61,7 @@ zabbix_agentd_LDADD = \
$(top_builddir)/src/libs/zbxcommshigh/libzbxcommshigh.a \
$(top_builddir)/src/libs/zbxconf/libzbxconf.a \
$(top_builddir)/src/libs/zbxjson/libzbxjson.a \
+ $(top_builddir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_builddir)/src/libs/zbxvariant/libzbxvariant.a \
$(top_builddir)/src/libs/zbxcommon/libzbxcommon.a \
$(top_builddir)/src/libs/zbxgetopt/libzbxgetopt.a \
diff --git a/src/zabbix_agent/cpustat.c b/src/zabbix_agent/cpustat.c
index 2bdc991ed6d..4f465d8021b 100644
--- a/src/zabbix_agent/cpustat.c
+++ b/src/zabbix_agent/cpustat.c
@@ -136,11 +136,11 @@ int init_cpu_collector(ZBX_CPUS_STAT_DATA *pcpus)
#ifdef _WINDOWS
cpe.szMachineName = NULL;
- cpe.szObjectName = get_builtin_object_name(PCI_PROCESSOR_TIME);
+ cpe.szObjectName = zbx_get_builtin_object_name(PCI_PROCESSOR_TIME);
cpe.szInstanceName = cpu;
cpe.szParentInstance = NULL;
cpe.dwInstanceIndex = (DWORD)-1;
- cpe.szCounterName = get_builtin_counter_name(PCI_PROCESSOR_TIME);
+ cpe.szCounterName = zbx_get_builtin_counter_name(PCI_PROCESSOR_TIME);
/* 64 logical CPUs (threads) is a hard limit for 32-bit Windows systems and some old 64-bit versions, */
/* such as Windows Vista. Systems with <= 64 threads will always have one processor group, which means */
@@ -190,8 +190,8 @@ int init_cpu_collector(ZBX_CPUS_STAT_DATA *pcpus)
pcpus->count, cpu_groups);
- cpe.szObjectName = get_builtin_object_name(PCI_INFORMATION_PROCESSOR_TIME);
- cpe.szCounterName = get_builtin_counter_name(PCI_INFORMATION_PROCESSOR_TIME);
+ cpe.szObjectName = zbx_get_builtin_object_name(PCI_INFORMATION_PROCESSOR_TIME);
+ cpe.szCounterName = zbx_get_builtin_counter_name(PCI_INFORMATION_PROCESSOR_TIME);
/* This doesn't seem to be well documented but it looks like Windows treats Processor Information */
/* object differently on NUMA-enabled systems. First index for the object may either mean logical */
@@ -232,9 +232,9 @@ int init_cpu_collector(ZBX_CPUS_STAT_DATA *pcpus)
}
}
- cpe.szObjectName = get_builtin_object_name(PCI_PROCESSOR_QUEUE_LENGTH);
+ cpe.szObjectName = zbx_get_builtin_object_name(PCI_PROCESSOR_QUEUE_LENGTH);
cpe.szInstanceName = NULL;
- cpe.szCounterName = get_builtin_counter_name(PCI_PROCESSOR_QUEUE_LENGTH);
+ cpe.szCounterName = zbx_get_builtin_counter_name(PCI_PROCESSOR_QUEUE_LENGTH);
if (ERROR_SUCCESS != zbx_PdhMakeCounterPath(__func__, &cpe, counterPath))
goto clean;
diff --git a/src/zabbix_agent/cpustat.h b/src/zabbix_agent/cpustat.h
index c4ffc5f6599..fe58eeb77f5 100644
--- a/src/zabbix_agent/cpustat.h
+++ b/src/zabbix_agent/cpustat.h
@@ -24,7 +24,7 @@
#include "zbxalgo.h"
#ifdef _WINDOWS
-# include "perfmon.h"
+# include "zbxwin32.h"
typedef struct
{
diff --git a/src/zabbix_agent/perfstat.c b/src/zabbix_agent/perfstat.c
index bc1d23619da..3f846f94d79 100644
--- a/src/zabbix_agent/perfstat.c
+++ b/src/zabbix_agent/perfstat.c
@@ -249,8 +249,8 @@ static int set_object_names(void)
if (TRUE == refresh)
ppsd.lastrefresh_objects = time(NULL);
- if (NULL == (p_eng = names_eng = get_all_counter_names(HKEY_PERFORMANCE_TEXT, L"Counter")) ||
- NULL == (p_loc = names_loc = get_all_counter_names(HKEY_PERFORMANCE_NLSTEXT, L"Counter")))
+ if (NULL == (p_eng = names_eng = zbx_get_all_counter_names(HKEY_PERFORMANCE_TEXT, L"Counter")) ||
+ NULL == (p_loc = names_loc = zbx_get_all_counter_names(HKEY_PERFORMANCE_NLSTEXT, L"Counter")))
{
goto out;
}
@@ -448,7 +448,7 @@ int init_perf_collector(zbx_threadedness_t threadedness, char **error)
ppsd.lastrefresh_objects = 0;
ppsd.lastupdate_names = 0;
- if (SUCCEED != init_builtin_counter_indexes())
+ if (SUCCEED != zbx_init_builtin_counter_indexes())
{
*error = zbx_strdup(*error, "cannot initialize built-in counter indexes");
goto out;
@@ -680,7 +680,7 @@ out:
if (NULL != counterpath)
{
/* request counter value directly from Windows performance counters */
- PDH_STATUS pdh_status = calculate_counter_value(__func__, counterpath, perfs->lang, value);
+ PDH_STATUS pdh_status = zbx_calculate_counter_value(__func__, counterpath, perfs->lang, value);
if (PDH_NOT_IMPLEMENTED == pdh_status)
*error = zbx_strdup(*error, "Counter is not supported for this Microsoft Windows version");
@@ -756,7 +756,7 @@ out:
if (SUCCEED != ret && NULL != perfs)
{
/* request counter value directly from Windows performance counters */
- if (ERROR_SUCCESS == calculate_counter_value(__func__, counterpath, lang, value))
+ if (ERROR_SUCCESS == zbx_calculate_counter_value(__func__, counterpath, lang, value))
ret = SUCCEED;
}
diff --git a/src/zabbix_agent/perfstat.h b/src/zabbix_agent/perfstat.h
index 8b2ff9474a0..525f6af2b16 100644
--- a/src/zabbix_agent/perfstat.h
+++ b/src/zabbix_agent/perfstat.h
@@ -24,7 +24,7 @@
# error "This module is only available for Windows OS"
#endif
-#include "perfmon.h"
+#include "zbxwin32.h"
zbx_perf_counter_data_t *add_perf_counter(const char *name, const char *counterpath, int interval,
zbx_perf_counter_lang_t lang, char **error);
diff --git a/src/zabbix_agent/zabbix_agentd.c b/src/zabbix_agent/zabbix_agentd.c
index 47b3b0c74da..59a5446b826 100644
--- a/src/zabbix_agent/zabbix_agentd.c
+++ b/src/zabbix_agent/zabbix_agentd.c
@@ -86,6 +86,7 @@ int CONFIG_HEARTBEAT_FREQUENCY = 60;
#include "stats.h"
#ifdef _WINDOWS
# include "perfstat.h"
+# include "zbxwin32.h"
#else
# include "zbxnix.h"
#endif
@@ -242,6 +243,13 @@ static unsigned char get_program_type(void)
return program_type;
}
+#if defined(_WINDOWS) || defined(__MINGW32__)
+static const char *get_progname(void)
+{
+ return progname;
+}
+#endif
+
static zbx_thread_activechk_args *config_active_args = NULL;
int CONFIG_ALERTER_FORKS = 0;
@@ -282,11 +290,12 @@ int CONFIG_TRIGGERHOUSEKEEPER_FORKS = 0;
static char *config_file = NULL;
static int config_allow_root = 0;
+static zbx_config_log_t log_file_cfg = {NULL, NULL, LOG_TYPE_UNDEFINED, 1};
+
char *opt = NULL;
#ifdef _WINDOWS
void zbx_co_uninitialize();
-int zbx_win_exception_filter(struct _EXCEPTION_POINTERS *ep);
#endif
int get_process_info_by_thread(int local_server_num, unsigned char *local_process_type, int *local_process_num);
@@ -598,8 +607,8 @@ static void set_defaults(void)
if (NULL == CONFIG_PID_FILE)
CONFIG_PID_FILE = (char *)"/tmp/zabbix_agentd.pid";
#endif
- if (NULL == CONFIG_LOG_TYPE_STR)
- CONFIG_LOG_TYPE_STR = zbx_strdup(CONFIG_LOG_TYPE_STR, ZBX_OPTION_LOGTYPE_FILE);
+ if (NULL == log_file_cfg.log_type_str)
+ log_file_cfg.log_type_str = zbx_strdup(log_file_cfg.log_type_str, ZBX_OPTION_LOGTYPE_FILE);
}
/******************************************************************************
@@ -675,7 +684,7 @@ static void zbx_validate_config(ZBX_TASK_EX *task)
err = 1;
}
- if (SUCCEED != zbx_validate_log_parameters(task))
+ if (SUCCEED != zbx_validate_log_parameters(task, &log_file_cfg))
err = 1;
#if !(defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL))
@@ -848,11 +857,11 @@ static void zbx_load_config(int requirement, ZBX_TASK_EX *task)
{"PidFile", &CONFIG_PID_FILE, TYPE_STRING,
PARM_OPT, 0, 0},
#endif
- {"LogType", &CONFIG_LOG_TYPE_STR, TYPE_STRING,
+ {"LogType", &log_file_cfg.log_type_str, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING,
+ {"LogFile", &log_file_cfg.log_file_name, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT,
+ {"LogFileSize", &log_file_cfg.log_file_size, TYPE_INT,
PARM_OPT, 0, 1024},
{"Timeout", &CONFIG_TIMEOUT, TYPE_INT,
PARM_OPT, 1, 30},
@@ -961,7 +970,7 @@ static void zbx_load_config(int requirement, ZBX_TASK_EX *task)
set_defaults();
- CONFIG_LOG_TYPE = zbx_get_log_type(CONFIG_LOG_TYPE_STR);
+ log_file_cfg.log_type = zbx_get_log_type(log_file_cfg.log_type_str);
zbx_vector_str_create(&hostnames);
parse_hostnames(CONFIG_HOSTNAMES, &hostnames);
@@ -1097,7 +1106,7 @@ int MAIN_ZABBIX_ENTRY(int flags)
exit(EXIT_FAILURE);
}
#endif
- if (SUCCEED != zabbix_open_log(CONFIG_LOG_TYPE, CONFIG_LOG_LEVEL, CONFIG_LOG_FILE, &error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, CONFIG_LOG_LEVEL, &error))
{
zbx_error("cannot open log: %s", error);
zbx_free(error);
@@ -1248,7 +1257,7 @@ int MAIN_ZABBIX_ENTRY(int flags)
}
#ifdef _WINDOWS
- set_parent_signal_handler(zbx_on_exit); /* must be called after all threads are created */
+ zbx_set_parent_signal_handler(zbx_on_exit); /* must be called after all threads are created */
/* wait for an exiting thread */
res = WaitForMultipleObjectsEx(threads_num, threads, FALSE, INFINITE, FALSE);
@@ -1339,7 +1348,11 @@ int main(int argc, char **argv)
char *error = NULL;
#ifdef _WINDOWS
int ret;
-
+#endif
+#if defined(_WINDOWS) || defined(__MINGW32__)
+ zbx_init_library_win32(&get_progname);
+#endif
+#ifdef _WINDOWS
/* Provide, so our process handles errors instead of the system itself. */
/* Attention!!! */
/* The system does not display the critical-error-handler message box. */
@@ -1491,9 +1504,10 @@ int main(int argc, char **argv)
}
#if defined(ZABBIX_SERVICE)
- service_start(t.flags);
+ zbx_service_start(t.flags);
#elif defined(ZABBIX_DAEMON)
- zbx_daemon_start(config_allow_root, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit);
+ zbx_daemon_start(config_allow_root, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit,
+ log_file_cfg.log_type, log_file_cfg.log_file_name);
#endif
exit(EXIT_SUCCESS);
}
diff --git a/src/zabbix_agent/zbxconf.c b/src/zabbix_agent/zbxconf.c
index 8be84467eef..b36d58566a5 100644
--- a/src/zabbix_agent/zbxconf.c
+++ b/src/zabbix_agent/zbxconf.c
@@ -185,7 +185,7 @@ void load_perf_counters(const char **def_lines, const char **eng_lines)
zbx_unicode_to_utf8_static(wcounterPath, counterpath, PDH_MAX_COUNTER_PATH);
zbx_free(wcounterPath);
- if (FAIL == check_counter_path(counterpath, lang == PERF_COUNTER_LANG_DEFAULT))
+ if (FAIL == zbx_check_counter_path(counterpath, lang == PERF_COUNTER_LANG_DEFAULT))
{
error = zbx_strdup(error, "Invalid counter path.");
goto pc_fail;
diff --git a/src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java b/src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java
index 9ff9e9cab5e..d282d4d8191 100644
--- a/src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java
+++ b/src/zabbix_java/src/com/zabbix/gateway/GeneralInformation.java
@@ -22,9 +22,9 @@ package com.zabbix.gateway;
class GeneralInformation
{
static final String APPLICATION_NAME = "Zabbix Java Gateway";
- static final String REVISION_DATE = "27 October 2022";
+ static final String REVISION_DATE = "8 November 2022";
static final String REVISION = "{ZABBIX_REVISION}";
- static final String VERSION = "6.4.0beta3";
+ static final String VERSION = "6.4.0beta4";
static void printVersion()
{
diff --git a/src/zabbix_js/zabbix_js.c b/src/zabbix_js/zabbix_js.c
index 01b618c6030..06d1bbea1b9 100644
--- a/src/zabbix_js/zabbix_js.c
+++ b/src/zabbix_js/zabbix_js.c
@@ -119,15 +119,16 @@ static char *read_file(const char *filename, char **error)
int main(int argc, char **argv)
{
- int ret = FAIL, loglevel = LOG_LEVEL_WARNING, timeout = 0;
- char *script_file = NULL, *input_file = NULL, *param = NULL, ch, *script = NULL, *error = NULL,
- *result = NULL, script_error[MAX_STRING_LEN];
+ int ret = FAIL, loglevel = LOG_LEVEL_WARNING, timeout = 0;
+ char *script_file = NULL, *input_file = NULL, *param = NULL, ch, *script = NULL,
+ *error = NULL, *result = NULL, script_error[MAX_STRING_LEN];
+ zbx_config_log_t log_file_cfg = {NULL, NULL, LOG_TYPE_UNDEFINED, 0};
/* see description of 'optarg' in 'man 3 getopt' */
- char *zbx_optarg = NULL;
+ char *zbx_optarg = NULL;
/* see description of 'optind' in 'man 3 getopt' */
- int zbx_optind = 0;
+ int zbx_optind = 0;
progname = get_program_name(argv[0]);
@@ -175,7 +176,7 @@ int main(int argc, char **argv)
goto clean;
}
- if (SUCCEED != zabbix_open_log(LOG_TYPE_UNDEFINED, loglevel, NULL, &error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, loglevel, &error))
{
zbx_error("cannot open log: %s", error);
goto clean;
diff --git a/src/zabbix_proxy/Makefile.am b/src/zabbix_proxy/Makefile.am
index ad65c573998..d9409a5df7d 100644
--- a/src/zabbix_proxy/Makefile.am
+++ b/src/zabbix_proxy/Makefile.am
@@ -58,8 +58,10 @@ zabbix_proxy_LDADD = \
$(top_builddir)/src/libs/zbxsysinfo/$(ARCH)/libspechostnamesysinfo.a \
$(top_builddir)/src/libs/zbxsysinfo/alias/libalias.a \
$(top_builddir)/src/libs/zbxlog/libzbxlog.a \
- $(top_builddir)/src/libs/zbxdbcache/libzbxdbcache.a \
$(top_builddir)/src/libs/zbxserver/libzbxserver.a \
+ $(top_builddir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_builddir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_builddir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
stats/libzbxserver_proxy.a \
$(top_builddir)/src/libs/zbxeval/libzbxeval.a \
$(top_builddir)/src/libs/zbxserialize/libzbxserialize.a \
@@ -84,6 +86,7 @@ zabbix_proxy_LDADD = \
$(top_builddir)/src/libs/zbxicmpping/libzbxicmpping.a \
$(top_builddir)/src/libs/zbxdbupgrade/libzbxdbupgrade.a \
$(top_builddir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_builddir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_builddir)/src/libs/zbxdbschema/libzbxdbschema.a \
$(top_builddir)/src/libs/zbxdb/libzbxdb.a \
$(top_builddir)/src/libs/zbxmodules/libzbxmodules.a \
diff --git a/src/zabbix_proxy/datasender/datasender.c b/src/zabbix_proxy/datasender/datasender.c
index 50ef6e9cdcd..010cf551306 100644
--- a/src/zabbix_proxy/datasender/datasender.c
+++ b/src/zabbix_proxy/datasender/datasender.c
@@ -20,10 +20,10 @@
#include "datasender.h"
#include "zbxcommshigh.h"
-#include "zbxdbhigh.h"
#include "log.h"
#include "zbxnix.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
+#include "zbxcachehistory.h"
#include "zbxself.h"
#include "zbxtasks.h"
#include "zbxcompress.h"
diff --git a/src/zabbix_proxy/housekeeper/housekeeper.c b/src/zabbix_proxy/housekeeper/housekeeper.c
index 3573d5635f3..09d787abcc2 100644
--- a/src/zabbix_proxy/housekeeper/housekeeper.c
+++ b/src/zabbix_proxy/housekeeper/housekeeper.c
@@ -22,7 +22,7 @@
#include "log.h"
#include "zbxnix.h"
#include "zbxself.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxrtc.h"
#include "zbxnum.h"
#include "zbxtime.h"
diff --git a/src/zabbix_proxy/proxy.c b/src/zabbix_proxy/proxy.c
index 173a2751d0a..d4e990b8a01 100644
--- a/src/zabbix_proxy/proxy.c
+++ b/src/zabbix_proxy/proxy.c
@@ -17,10 +17,11 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "cfg.h"
#include "zbxdbhigh.h"
+#include "zbxcacheconfig.h"
#include "zbxdbupgrade.h"
#include "log.h"
#include "zbxgetopt.h"
@@ -297,6 +298,8 @@ int CONFIG_DOUBLE_PRECISION = ZBX_DB_DBL_PRECISION_ENABLED;
static char *config_file = NULL;
static int config_allow_root = 0;
+static zbx_config_log_t log_file_cfg = {NULL, NULL, LOG_TYPE_UNDEFINED, 1};
+
zbx_vector_ptr_t zbx_addrs;
int get_process_info_by_thread(int local_server_num, unsigned char *local_process_type, int *local_process_num);
@@ -502,8 +505,8 @@ static void zbx_set_defaults(void)
program_type = ZBX_PROGRAM_TYPE_PROXY_PASSIVE;
}
- if (NULL == CONFIG_LOG_TYPE_STR)
- CONFIG_LOG_TYPE_STR = zbx_strdup(CONFIG_LOG_TYPE_STR, ZBX_OPTION_LOGTYPE_FILE);
+ if (NULL == log_file_cfg.log_type_str)
+ log_file_cfg.log_type_str = zbx_strdup(log_file_cfg.log_type_str, ZBX_OPTION_LOGTYPE_FILE);
if (NULL == CONFIG_SOCKET_PATH)
CONFIG_SOCKET_PATH = zbx_strdup(CONFIG_SOCKET_PATH, "/tmp");
@@ -609,7 +612,7 @@ static void zbx_validate_config(ZBX_TASK_EX *task)
/* because they have non-zero default values */
#endif
- if (SUCCEED != zbx_validate_log_parameters(task))
+ if (SUCCEED != zbx_validate_log_parameters(task, &log_file_cfg))
err = 1;
#if !(defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL))
@@ -778,11 +781,11 @@ static void zbx_load_config(ZBX_TASK_EX *task)
PARM_OPT, 0, 5},
{"PidFile", &CONFIG_PID_FILE, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogType", &CONFIG_LOG_TYPE_STR, TYPE_STRING,
+ {"LogType", &log_file_cfg.log_type_str, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING,
+ {"LogFile", &log_file_cfg.log_file_name, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT,
+ {"LogFileSize", &log_file_cfg.log_file_size, TYPE_INT,
PARM_OPT, 0, 1024},
{"ExternalScripts", &CONFIG_EXTERNALSCRIPTS, TYPE_STRING,
PARM_OPT, 0, 0},
@@ -910,7 +913,7 @@ static void zbx_load_config(ZBX_TASK_EX *task)
zbx_set_defaults();
- CONFIG_LOG_TYPE = zbx_get_log_type(CONFIG_LOG_TYPE_STR);
+ log_file_cfg.log_type = zbx_get_log_type(log_file_cfg.log_type_str);
zbx_validate_config(task);
@@ -1117,7 +1120,8 @@ int main(int argc, char **argv)
exit(SUCCEED == ret ? EXIT_SUCCESS : EXIT_FAILURE);
}
- return zbx_daemon_start(config_allow_root, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit);
+ return zbx_daemon_start(config_allow_root, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit,
+ log_file_cfg.log_type, log_file_cfg.log_file_name);
}
static void zbx_check_db(void)
@@ -1141,7 +1145,7 @@ static void proxy_db_init(void)
zbx_stat_t db_stat;
#endif
- if (SUCCEED != DBinit(&error))
+ if (SUCCEED != DBinit(DCget_nextid, program_type, &error))
{
zabbix_log(LOG_LEVEL_CRIT, "cannot initialize database: %s", error);
zbx_free(error);
@@ -1230,7 +1234,7 @@ int MAIN_ZABBIX_ENTRY(int flags)
exit(EXIT_FAILURE);
}
- if (SUCCEED != zabbix_open_log(CONFIG_LOG_TYPE, CONFIG_LOG_LEVEL, CONFIG_LOG_FILE, &error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, CONFIG_LOG_LEVEL, &error))
{
zbx_error("cannot open log:%s", error);
zbx_free(error);
diff --git a/src/zabbix_proxy/proxyconfig/proxyconfig.c b/src/zabbix_proxy/proxyconfig/proxyconfig.c
index 8f612ff121e..0883fdf4611 100644
--- a/src/zabbix_proxy/proxyconfig/proxyconfig.c
+++ b/src/zabbix_proxy/proxyconfig/proxyconfig.c
@@ -21,7 +21,7 @@
#include "log.h"
#include "zbxnix.h"
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "zbxself.h"
#include "zbxtime.h"
diff --git a/src/zabbix_proxy/proxyconfigwrite/proxyconfig_write.c b/src/zabbix_proxy/proxyconfigwrite/proxyconfig_write.c
index e364e87d80d..56c1dbc4ce0 100644
--- a/src/zabbix_proxy/proxyconfigwrite/proxyconfig_write.c
+++ b/src/zabbix_proxy/proxyconfigwrite/proxyconfig_write.c
@@ -19,7 +19,7 @@
#include "proxyconfig_write.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "zbxdbhigh.h"
#include "zbxcommshigh.h"
#include "zbxrtc.h"
diff --git a/src/zabbix_proxy/rtc/rtc_proxy.c b/src/zabbix_proxy/rtc/rtc_proxy.c
index 5cad4e207e7..b3eb9bbd94c 100644
--- a/src/zabbix_proxy/rtc/rtc_proxy.c
+++ b/src/zabbix_proxy/rtc/rtc_proxy.c
@@ -19,7 +19,7 @@
#include "rtc_proxy.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "zbx_rtc_constants.h"
extern int CONFIG_PROXYMODE;
diff --git a/src/zabbix_proxy/stats/zabbix_stats_proxy.c b/src/zabbix_proxy/stats/zabbix_stats_proxy.c
index 2ab441acc48..5a8548ac0ac 100644
--- a/src/zabbix_proxy/stats/zabbix_stats_proxy.c
+++ b/src/zabbix_proxy/stats/zabbix_stats_proxy.c
@@ -18,7 +18,7 @@
**/
#include "zabbix_stats.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "zbxcomms.h"
#include "zbxjson.h"
#include "zbxstr.h"
diff --git a/src/zabbix_proxy/taskmanager/taskmanager.c b/src/zabbix_proxy/taskmanager/taskmanager.c
index caecbd7374d..321469bd948 100644
--- a/src/zabbix_proxy/taskmanager/taskmanager.c
+++ b/src/zabbix_proxy/taskmanager/taskmanager.c
@@ -29,8 +29,8 @@
#include "log.h"
#include "zbxdiag.h"
#include "zbxrtc.h"
-#include "proxy.h"
-#include "dbcache.h"
+#include "zbxdbwrap.h"
+#include "zbxcacheconfig.h"
#include "zbxnum.h"
#include "zbxtime.h"
#include "zbx_rtc_constants.h"
diff --git a/src/zabbix_sender/zabbix_sender.c b/src/zabbix_sender/zabbix_sender.c
index 123e79d1c67..269a940f95a 100644
--- a/src/zabbix_sender/zabbix_sender.c
+++ b/src/zabbix_sender/zabbix_sender.c
@@ -1497,6 +1497,7 @@ int main(int argc, char **argv)
char *error = NULL;
int total_count = 0, succeed_count = 0, ret = FAIL, timestamp, ns;
zbx_thread_sendval_args *sendval_args = NULL;
+ zbx_config_log_t log_file_cfg = {NULL, NULL, LOG_TYPE_UNDEFINED, 0};
zbx_config_tls = zbx_config_tls_new();
@@ -1514,7 +1515,7 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
#endif
- if (SUCCEED != zabbix_open_log(LOG_TYPE_UNDEFINED, CONFIG_LOG_LEVEL, NULL, &error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, CONFIG_LOG_LEVEL, &error))
{
zbx_error("cannot open log: %s", error);
zbx_free(error);
diff --git a/src/zabbix_server/Makefile.am b/src/zabbix_server/Makefile.am
index a1f10269f80..ca7a24f4b8b 100644
--- a/src/zabbix_server/Makefile.am
+++ b/src/zabbix_server/Makefile.am
@@ -48,7 +48,9 @@ libzbxserver_a_SOURCES = \
libzbxserver_a_CFLAGS = \
-DZABBIX_DAEMON \
- -I$(top_srcdir)/src/libs/zbxdbcache \
+ -I$(top_srcdir)/src/libs/zbxcacheconfig \
+ -I$(top_srcdir)/src/libs/zbxcachehistory \
+ -I$(top_srcdir)/src/libs/zbxcachevalue \
$(TLS_CFLAGS)
zabbix_server_SOURCES = server.c
@@ -93,8 +95,13 @@ zabbix_server_LDADD = \
$(top_builddir)/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
$(top_builddir)/src/libs/zbxsysinfo/alias/libalias.a \
$(top_builddir)/src/libs/zbxlog/libzbxlog.a \
- $(top_builddir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_builddir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_builddir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_builddir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_builddir)/src/libs/zbxserver/libzbxserver.a \
+ $(top_builddir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_builddir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_builddir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
preprocessor/libpreprocessor.a \
$(top_builddir)/src/libs/zbxvariant/libzbxvariant.a \
$(top_builddir)/src/libs/zbxeval/libzbxeval.a \
@@ -105,7 +112,6 @@ zabbix_server_LDADD = \
$(top_builddir)/src/libs/zbxself/libzbxself.a \
$(top_builddir)/src/libs/zbxself/libzbxself_server.a \
$(top_builddir)/src/libs/zbxipcservice/libzbxipcservice.a \
- $(top_builddir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_builddir)/src/libs/zbxthreads/libzbxthreads.a \
$(top_builddir)/src/libs/zbxmutexs/libzbxmutexs.a \
$(top_builddir)/src/libs/zbxconf/libzbxconf.a \
@@ -117,6 +123,7 @@ zabbix_server_LDADD = \
$(top_builddir)/src/libs/zbxcommshigh/libzbxcommshigh.a \
$(top_builddir)/src/libs/zbxxml/libzbxxml.a \
$(top_builddir)/src/libs/zbxjson/libzbxjson.a \
+ $(top_builddir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_builddir)/src/libs/zbxvault/libzbxvault.a \
$(top_builddir)/src/libs/zbxcyberark/libzbxcyberark.a \
$(top_builddir)/src/libs/zbxhashicorp/libzbxhashicorp.a \
@@ -126,6 +133,7 @@ zabbix_server_LDADD = \
$(top_builddir)/src/libs/zbxicmpping/libzbxicmpping.a \
$(top_builddir)/src/libs/zbxdbupgrade/libzbxdbupgrade.a \
$(top_builddir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_builddir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_builddir)/src/libs/zbxdbschema/libzbxdbschema.a \
$(top_builddir)/src/libs/zbxdb/libzbxdb.a \
$(top_builddir)/src/libs/zbxmodules/libzbxmodules.a \
diff --git a/src/zabbix_server/actions.c b/src/zabbix_server/actions.c
index 02880e50e0d..0fda368e4eb 100644
--- a/src/zabbix_server/actions.c
+++ b/src/zabbix_server/actions.c
@@ -26,6 +26,7 @@
#include "audit/zbxaudit.h"
#include "zbxnum.h"
#include "zbxip.h"
+#include "zbxdbwrap.h"
/******************************************************************************
* *
diff --git a/src/zabbix_server/alerter/alert_syncer.c b/src/zabbix_server/alerter/alert_syncer.c
index 13a1baf8bfc..f39a1d22a34 100644
--- a/src/zabbix_server/alerter/alert_syncer.c
+++ b/src/zabbix_server/alerter/alert_syncer.c
@@ -25,7 +25,7 @@
#include "log.h"
#include "alerter_protocol.h"
#include "zbxservice.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxnum.h"
#include "zbxtime.h"
#include "zbxexpr.h"
diff --git a/src/zabbix_server/alerter/alerter.c b/src/zabbix_server/alerter/alerter.c
index 37723179f6f..2c2308e35fa 100644
--- a/src/zabbix_server/alerter/alerter.c
+++ b/src/zabbix_server/alerter/alerter.c
@@ -25,7 +25,7 @@
#include "zbxself.h"
#include "zbxexec.h"
#include "zbxipcservice.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "alerter_protocol.h"
#include "zbxembed.h"
#include "zbxhash.h"
diff --git a/src/zabbix_server/dbconfig/Makefile.am b/src/zabbix_server/dbconfig/Makefile.am
index 279f9f08e16..a0c642ab807 100644
--- a/src/zabbix_server/dbconfig/Makefile.am
+++ b/src/zabbix_server/dbconfig/Makefile.am
@@ -6,4 +6,7 @@ libzbxdbconfig_a_SOURCES = \
dbconfig.c \
dbconfig.h
-libzbxdbconfig_a_CFLAGS = -I$(top_srcdir)/src/libs/zbxdbcache
+libzbxdbconfig_a_CFLAGS = \
+ -I$(top_srcdir)/src/libs/zbxcacheconfig \
+ -I$(top_srcdir)/src/libs/zbxcachehistory \
+ -I$(top_srcdir)/src/libs/zbxcachevalue
diff --git a/src/zabbix_server/dbconfig/dbconfig.c b/src/zabbix_server/dbconfig/dbconfig.c
index 4adf29693ec..a973e6323c1 100644
--- a/src/zabbix_server/dbconfig/dbconfig.c
+++ b/src/zabbix_server/dbconfig/dbconfig.c
@@ -22,11 +22,11 @@
#include "zbxnix.h"
#include "zbxself.h"
#include "log.h"
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "zbxrtc.h"
#include "zbxtime.h"
#include "zbx_rtc_constants.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
extern int CONFIG_CONFSYNCER_FREQUENCY;
extern unsigned char program_type;
diff --git a/src/zabbix_server/dbsyncer/dbsyncer.c b/src/zabbix_server/dbsyncer/dbsyncer.c
index 75853919921..060e9758642 100644
--- a/src/zabbix_server/dbsyncer/dbsyncer.c
+++ b/src/zabbix_server/dbsyncer/dbsyncer.c
@@ -23,7 +23,7 @@
#include "zbxnix.h"
#include "zbxself.h"
#include "zbxtime.h"
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "zbxexport.h"
extern int CONFIG_HISTSYNCER_FREQUENCY;
diff --git a/src/zabbix_server/diag/diag_server.c b/src/zabbix_server/diag/diag_server.c
index 3864613a711..09f2afa0794 100644
--- a/src/zabbix_server/diag/diag_server.c
+++ b/src/zabbix_server/diag/diag_server.c
@@ -20,7 +20,7 @@
#include "zbxdiag.h"
#include "diag_server.h"
-#include "../../libs/zbxdbcache/valuecache.h"
+#include "zbxcachevalue.h"
#include "zbxlld.h"
#include "zbxalert.h"
#include "zbxtime.h"
diff --git a/src/zabbix_server/escalator/escalator.c b/src/zabbix_server/escalator/escalator.c
index 852e7aeb58f..96ad3046ac7 100644
--- a/src/zabbix_server/escalator/escalator.c
+++ b/src/zabbix_server/escalator/escalator.c
@@ -32,6 +32,7 @@
#include "zbxnum.h"
#include "zbxtime.h"
#include "zbxexpr.h"
+#include "zbxdbwrap.h"
extern int CONFIG_ESCALATOR_FORKS;
diff --git a/src/zabbix_server/events.c b/src/zabbix_server/events.c
index 17a20b8fd00..5152d181513 100644
--- a/src/zabbix_server/events.c
+++ b/src/zabbix_server/events.c
@@ -27,6 +27,7 @@
#include "zbxservice.h"
#include "zbxnum.h"
#include "zbxexpr.h"
+#include "zbxdbwrap.h"
/* event recovery data */
typedef struct
diff --git a/src/zabbix_server/housekeeper/history_compress.h b/src/zabbix_server/housekeeper/history_compress.h
index c7cd4ba14c9..16e6ab9f043 100644
--- a/src/zabbix_server/housekeeper/history_compress.h
+++ b/src/zabbix_server/housekeeper/history_compress.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_HISTORY_COMPRESSION_H
#define ZABBIX_HISTORY_COMPRESSION_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
void hk_history_compression_init(void);
void hk_history_compression_update(zbx_config_db_t *cfg);
diff --git a/src/zabbix_server/ipmi/checks_ipmi.h b/src/zabbix_server/ipmi/checks_ipmi.h
index 54b537b753f..900dbba4a5e 100644
--- a/src/zabbix_server/ipmi/checks_ipmi.h
+++ b/src/zabbix_server/ipmi/checks_ipmi.h
@@ -24,7 +24,7 @@
#ifdef HAVE_OPENIPMI
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxsysinfo.h"
int zbx_init_ipmi_handler(void);
diff --git a/src/zabbix_server/ipmi/ipmi.h b/src/zabbix_server/ipmi/ipmi.h
index fb476417363..cea3f615000 100644
--- a/src/zabbix_server/ipmi/ipmi.h
+++ b/src/zabbix_server/ipmi/ipmi.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_IPMI_H
#define ZABBIX_IPMI_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxtypes.h"
#include "config.h"
diff --git a/src/zabbix_server/lld/lld.c b/src/zabbix_server/lld/lld.c
index 8c2ecc771cb..3af8d4a0397 100644
--- a/src/zabbix_server/lld/lld.c
+++ b/src/zabbix_server/lld/lld.c
@@ -18,7 +18,7 @@
**/
#include "lld.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "zbxserver.h"
#include "log.h"
diff --git a/src/zabbix_server/lld/lld.h b/src/zabbix_server/lld/lld.h
index f9ec2024da6..46720af4a23 100644
--- a/src/zabbix_server/lld/lld.h
+++ b/src/zabbix_server/lld/lld.h
@@ -260,4 +260,6 @@ typedef void (*get_object_info_f)(const void *object, zbx_uint64_t *id, int *dis
void lld_remove_lost_objects(const char *table, const char *id_name, const zbx_vector_ptr_t *objects,
int lifetime, int lastcheck, delete_ids_f cb, get_object_info_f cb_info);
+int lld_process_discovery_rule(zbx_uint64_t lld_ruleid, const char *value, char **error);
+
#endif
diff --git a/src/zabbix_server/lld/lld_graph.c b/src/zabbix_server/lld/lld_graph.c
index 9a7334a016b..b708791a720 100644
--- a/src/zabbix_server/lld/lld_graph.c
+++ b/src/zabbix_server/lld/lld_graph.c
@@ -19,6 +19,7 @@
#include "lld.h"
#include "zbxserver.h"
+#include "zbxdbwrap.h"
#include "log.h"
#include "audit/zbxaudit.h"
diff --git a/src/zabbix_server/lld/lld_host.c b/src/zabbix_server/lld/lld_host.c
index 12cfcbbf118..1e1a96c55b2 100644
--- a/src/zabbix_server/lld/lld_host.c
+++ b/src/zabbix_server/lld/lld_host.c
@@ -26,6 +26,7 @@
#include "audit/zbxaudit.h"
#include "audit/zbxaudit_host.h"
#include "zbxnum.h"
+#include "zbxdbwrap.h"
/* host macro discovery state */
#define ZBX_USERMACRO_MANUAL 0
diff --git a/src/zabbix_server/lld/lld_item.c b/src/zabbix_server/lld/lld_item.c
index d1cf75e32b7..5a88396fd9d 100644
--- a/src/zabbix_server/lld/lld_item.c
+++ b/src/zabbix_server/lld/lld_item.c
@@ -26,6 +26,7 @@
#include "zbxprometheus.h"
#include "zbxxml.h"
#include "zbxnum.h"
+#include "zbxdbwrap.h"
#include "audit/zbxaudit.h"
#include "audit/zbxaudit_item.h"
diff --git a/src/zabbix_server/lld/lld_trigger.c b/src/zabbix_server/lld/lld_trigger.c
index 1aec3db991c..9f9612f5296 100644
--- a/src/zabbix_server/lld/lld_trigger.c
+++ b/src/zabbix_server/lld/lld_trigger.c
@@ -25,6 +25,7 @@
#include "audit/zbxaudit.h"
#include "audit/zbxaudit_trigger.h"
#include "zbxnum.h"
+#include "zbxdbwrap.h"
typedef struct
{
diff --git a/src/zabbix_server/lld/lld_worker.c b/src/zabbix_server/lld/lld_worker.c
index a6f9828afaa..1efea25c6fc 100644
--- a/src/zabbix_server/lld/lld_worker.c
+++ b/src/zabbix_server/lld/lld_worker.c
@@ -18,15 +18,16 @@
**/
#include "lld_worker.h"
+#include "lld.h"
#include "zbxnix.h"
#include "log.h"
#include "zbxipcservice.h"
#include "zbxself.h"
-#include "proxy.h"
#include "../events.h"
#include "lld_protocol.h"
#include "zbxtime.h"
+#include "zbxdbwrap.h"
extern unsigned char program_type;
diff --git a/src/zabbix_server/lld/lld_worker.h b/src/zabbix_server/lld/lld_worker.h
index 27ef4737b5a..809755ab3c1 100644
--- a/src/zabbix_server/lld/lld_worker.h
+++ b/src/zabbix_server/lld/lld_worker.h
@@ -17,8 +17,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#ifndef ZABBIX_LLD_H
-#define ZABBIX_LLD_H
+#ifndef ZABBIX_LLD_WORKER_H
+#define ZABBIX_LLD_WORKER_H
#include "zbxthreads.h"
diff --git a/src/zabbix_server/operations.c b/src/zabbix_server/operations.c
index be44b3055a6..197fd6f809b 100644
--- a/src/zabbix_server/operations.c
+++ b/src/zabbix_server/operations.c
@@ -24,6 +24,7 @@
#include "audit/zbxaudit.h"
#include "audit/zbxaudit_host.h"
#include "zbxnum.h"
+#include "zbxdbwrap.h"
typedef enum
{
diff --git a/src/zabbix_server/operations.h b/src/zabbix_server/operations.h
index 4476e3609ac..7dfa6eea3f6 100644
--- a/src/zabbix_server/operations.h
+++ b/src/zabbix_server/operations.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_OPERATIONS_H
#define ZABBIX_OPERATIONS_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
extern int CONFIG_TIMEOUT;
diff --git a/src/zabbix_server/poller/Makefile.am b/src/zabbix_server/poller/Makefile.am
index e8186ee61f6..923c97a735f 100644
--- a/src/zabbix_server/poller/Makefile.am
+++ b/src/zabbix_server/poller/Makefile.am
@@ -46,10 +46,15 @@ libzbxpoller_proxy_a_SOURCES = \
libzbxpoller_a_CFLAGS = \
-I$(top_srcdir)/src/libs/zbxsysinfo/simple \
- -I$(top_srcdir)/src/libs/zbxdbcache \
+ -I$(top_srcdir)/src/libs/zbxcacheconfig \
+ -I$(top_srcdir)/src/libs/zbxcachehistory \
+ -I$(top_srcdir)/src/libs/zbxcachevalue \
$(SNMP_CFLAGS) \
$(SSH2_CFLAGS) \
$(SSH_CFLAGS) \
$(LIBXML2_CFLAGS)
-libzbxpoller_server_a_CFLAGS = -I$(top_srcdir)/src/libs/zbxdbcache
+libzbxpoller_server_a_CFLAGS = \
+ -I$(top_srcdir)/src/libs/zbxcacheconfig \
+ -I$(top_srcdir)/src/libs/zbxcachehistory \
+ -I$(top_srcdir)/src/libs/zbxcachevalue
diff --git a/src/zabbix_server/poller/checks_agent.h b/src/zabbix_server/poller/checks_agent.h
index 66e33925a6b..94ed2e3a625 100644
--- a/src/zabbix_server/poller/checks_agent.h
+++ b/src/zabbix_server/poller/checks_agent.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_CHECKS_AGENT_H
#define ZABBIX_CHECKS_AGENT_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "module.h"
extern char *CONFIG_SOURCE_IP;
diff --git a/src/zabbix_server/poller/checks_calculated.h b/src/zabbix_server/poller/checks_calculated.h
index 328e0d45994..75fc58d4ca7 100644
--- a/src/zabbix_server/poller/checks_calculated.h
+++ b/src/zabbix_server/poller/checks_calculated.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_CHECKS_CALCULATED_H
#define ZABBIX_CHECKS_CALCULATED_H
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "module.h"
int get_value_calculated(DC_ITEM *dc_item, AGENT_RESULT *result);
diff --git a/src/zabbix_server/poller/checks_db.h b/src/zabbix_server/poller/checks_db.h
index e37716a3383..72d73600016 100644
--- a/src/zabbix_server/poller/checks_db.h
+++ b/src/zabbix_server/poller/checks_db.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_CHECKS_DB_H
#define ZABBIX_CHECKS_DB_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#ifdef HAVE_UNIXODBC
int get_value_db(const DC_ITEM *item, AGENT_RESULT *result);
diff --git a/src/zabbix_server/poller/checks_external.h b/src/zabbix_server/poller/checks_external.h
index 7e6f2327ba1..e6b775b7fe4 100644
--- a/src/zabbix_server/poller/checks_external.h
+++ b/src/zabbix_server/poller/checks_external.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_CHECKS_EXTERNAL_H
#define ZABBIX_CHECKS_EXTERNAL_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "module.h"
int get_value_external(const DC_ITEM *item, AGENT_RESULT *result);
diff --git a/src/zabbix_server/poller/checks_http.c b/src/zabbix_server/poller/checks_http.c
index 6aabf6410f7..32a886c0fdd 100644
--- a/src/zabbix_server/poller/checks_http.c
+++ b/src/zabbix_server/poller/checks_http.c
@@ -21,7 +21,7 @@
#include "zbxhttp.h"
#include "zbxjson.h"
#include "log.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#ifdef HAVE_LIBCURL
diff --git a/src/zabbix_server/poller/checks_http.h b/src/zabbix_server/poller/checks_http.h
index 3e5d392cd23..1cdf3e7a10a 100644
--- a/src/zabbix_server/poller/checks_http.h
+++ b/src/zabbix_server/poller/checks_http.h
@@ -24,7 +24,7 @@
#include "module.h"
#ifdef HAVE_LIBCURL
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int get_value_http(const DC_ITEM *item, AGENT_RESULT *result);
#endif
diff --git a/src/zabbix_server/poller/checks_internal.h b/src/zabbix_server/poller/checks_internal.h
index b381f8c4ee3..b1172bdf494 100644
--- a/src/zabbix_server/poller/checks_internal.h
+++ b/src/zabbix_server/poller/checks_internal.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_CHECKS_INTERNAL_H
#define ZABBIX_CHECKS_INTERNAL_H
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "zbxcomms.h"
extern int CONFIG_SERVER_STARTUP_TIME;
diff --git a/src/zabbix_server/poller/checks_internal_proxy.c b/src/zabbix_server/poller/checks_internal_proxy.c
index 6915d35d68d..8bb45b829f0 100644
--- a/src/zabbix_server/poller/checks_internal_proxy.c
+++ b/src/zabbix_server/poller/checks_internal_proxy.c
@@ -18,7 +18,7 @@
**/
#include "zbxcommon.h"
-#include "dbcache.h"
+#include "zbxcachehistory.h"
#include "checks_internal.h"
/******************************************************************************
diff --git a/src/zabbix_server/poller/checks_internal_server.c b/src/zabbix_server/poller/checks_internal_server.c
index 7dd548db690..f20e45fce08 100644
--- a/src/zabbix_server/poller/checks_internal_server.c
+++ b/src/zabbix_server/poller/checks_internal_server.c
@@ -18,9 +18,9 @@
**/
#include "zbxcommon.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "zbxlld.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxha.h"
#include "zbxjson.h"
#include "zbxtime.h"
diff --git a/src/zabbix_server/poller/checks_java.h b/src/zabbix_server/poller/checks_java.h
index 2365e82d129..43f61cd0cfe 100644
--- a/src/zabbix_server/poller/checks_java.h
+++ b/src/zabbix_server/poller/checks_java.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_CHECKS_JAVA_H
#define ZABBIX_CHECKS_JAVA_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#define ZBX_JAVA_GATEWAY_REQUEST_INTERNAL 0
#define ZBX_JAVA_GATEWAY_REQUEST_JMX 1
diff --git a/src/zabbix_server/poller/checks_script.h b/src/zabbix_server/poller/checks_script.h
index 988fdeaa447..4d23e46fac3 100644
--- a/src/zabbix_server/poller/checks_script.h
+++ b/src/zabbix_server/poller/checks_script.h
@@ -21,7 +21,7 @@
#define ZABBIX_CHECKS_SCRIPT_H
#include "module.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
void scriptitem_es_engine_init(void);
void scriptitem_es_engine_destroy(void);
diff --git a/src/zabbix_server/poller/checks_simple.h b/src/zabbix_server/poller/checks_simple.h
index d2d56eb3756..0eae4ac1a01 100644
--- a/src/zabbix_server/poller/checks_simple.h
+++ b/src/zabbix_server/poller/checks_simple.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_CHECKS_SIMPLE_H
#define ZABBIX_CHECKS_SIMPLE_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "module.h"
#include "zbxalgo.h"
diff --git a/src/zabbix_server/poller/checks_simple_vmware.c b/src/zabbix_server/poller/checks_simple_vmware.c
index f2bfbe6e618..14a13ba2872 100644
--- a/src/zabbix_server/poller/checks_simple_vmware.c
+++ b/src/zabbix_server/poller/checks_simple_vmware.c
@@ -4299,7 +4299,7 @@ int check_vcenter_vm_discovery(AGENT_REQUEST *request, const char *username, con
rpool_cmp.id = vm->props[ZBX_VMWARE_VMPROP_RESOURCEPOOL];
if (FAIL != (idx = zbx_vector_vmware_resourcepool_bsearch(&service->data->resourcepools,
- &rpool_cmp, vmware_resourcepool_compare_id)))
+ &rpool_cmp, ZBX_DEFAULT_STR_PTR_COMPARE_FUNC)))
{
zbx_json_addstring(&json_data, "{#VM.RPOOL.PATH}", ZBX_NULL2EMPTY_STR(
service->data->resourcepools.values[idx]->path),
@@ -5817,7 +5817,7 @@ static int check_vcenter_rp_common(const char *url, const char *username, const
rp_cmp.id = (char *)rpid;
if (FAIL == zbx_vector_vmware_resourcepool_bsearch(&service->data->resourcepools, &rp_cmp,
- vmware_resourcepool_compare_id))
+ ZBX_DEFAULT_STR_PTR_COMPARE_FUNC))
{
SET_MSG_RESULT(result, zbx_strdup(NULL, "Unknown resource pool id."));
goto unlock;
diff --git a/src/zabbix_server/poller/checks_simple_vmware.h b/src/zabbix_server/poller/checks_simple_vmware.h
index 4923196f3b5..ce78bd45e2a 100644
--- a/src/zabbix_server/poller/checks_simple_vmware.h
+++ b/src/zabbix_server/poller/checks_simple_vmware.h
@@ -25,7 +25,7 @@
#if defined(HAVE_LIBXML2) && defined(HAVE_LIBCURL)
#include "module.h"
#include "zbxalgo.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int check_vcenter_cluster_alarms_get(AGENT_REQUEST *request, const char *username, const char *password,
AGENT_RESULT *result);
diff --git a/src/zabbix_server/poller/checks_snmp.h b/src/zabbix_server/poller/checks_snmp.h
index 5f8e4432f91..5e1c5ed5085 100644
--- a/src/zabbix_server/poller/checks_snmp.h
+++ b/src/zabbix_server/poller/checks_snmp.h
@@ -22,7 +22,7 @@
#include "config.h"
#include "module.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
extern char *CONFIG_SOURCE_IP;
extern int CONFIG_TIMEOUT;
diff --git a/src/zabbix_server/poller/checks_ssh.h b/src/zabbix_server/poller/checks_ssh.h
index 529fa517e0a..5554b2ea330 100644
--- a/src/zabbix_server/poller/checks_ssh.h
+++ b/src/zabbix_server/poller/checks_ssh.h
@@ -24,7 +24,7 @@
#include "config.h"
#if defined(HAVE_SSH2) || defined(HAVE_SSH)
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int get_value_ssh(DC_ITEM *item, AGENT_RESULT *result);
#endif /* defined(HAVE_SSH2) || defined(HAVE_SSH)*/
diff --git a/src/zabbix_server/poller/checks_telnet.h b/src/zabbix_server/poller/checks_telnet.h
index 9c5b56a32da..265687bb391 100644
--- a/src/zabbix_server/poller/checks_telnet.h
+++ b/src/zabbix_server/poller/checks_telnet.h
@@ -21,7 +21,7 @@
#define ZABBIX_CHECKS_TELNET_H
#include "module.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int get_value_telnet(DC_ITEM *item, AGENT_RESULT *result);
diff --git a/src/zabbix_server/poller/poller.h b/src/zabbix_server/poller/poller.h
index 3d71f519bc9..f971d22d027 100644
--- a/src/zabbix_server/poller/poller.h
+++ b/src/zabbix_server/poller/poller.h
@@ -21,7 +21,7 @@
#define ZABBIX_POLLER_H
#include "zbxthreads.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxcomms.h"
typedef struct
diff --git a/src/zabbix_server/poller/ssh_run.h b/src/zabbix_server/poller/ssh_run.h
index 2fa4b5f9fe9..7013f0845ce 100644
--- a/src/zabbix_server/poller/ssh_run.h
+++ b/src/zabbix_server/poller/ssh_run.h
@@ -24,7 +24,7 @@
#include "module.h"
#if defined(HAVE_SSH2) || defined(HAVE_SSH)
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int ssh_run(DC_ITEM *item, AGENT_RESULT *result, const char *encoding);
#endif /* defined(HAVE_SSH2) || defined(HAVE_SSH)*/
diff --git a/src/zabbix_server/poller/telnet_run.h b/src/zabbix_server/poller/telnet_run.h
index 149e16f325c..5cb4601402a 100644
--- a/src/zabbix_server/poller/telnet_run.h
+++ b/src/zabbix_server/poller/telnet_run.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_TELNET_RUN_H
#define ZABBIX_TELNET_RUN_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int telnet_run(DC_ITEM *item, AGENT_RESULT *result, const char *encoding);
diff --git a/src/zabbix_server/postinit.c b/src/zabbix_server/postinit.c
index 09a0ef0012d..ed563a777d6 100644
--- a/src/zabbix_server/postinit.c
+++ b/src/zabbix_server/postinit.c
@@ -24,7 +24,8 @@
#include "zbxtasks.h"
#include "log.h"
#include "zbxnum.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
+#include "zbxdbwrap.h"
#define ZBX_HIST_MACRO_NONE (-1)
#define ZBX_HIST_MACRO_ITEM_VALUE 0
diff --git a/src/zabbix_server/preprocessor/item_preproc.c b/src/zabbix_server/preprocessor/item_preproc.c
index 065eb31ae2e..ae511b94532 100644
--- a/src/zabbix_server/preprocessor/item_preproc.c
+++ b/src/zabbix_server/preprocessor/item_preproc.c
@@ -934,7 +934,8 @@ static int item_preproc_regsub(zbx_variant_t *value, const char *params, char **
* *
* Purpose: execute jsonpath query *
* *
- * Parameters: value - [IN/OUT] the value to process *
+ * Parameters: cache - [IN] the preprocessing cache *
+ * value - [IN/OUT] the value to process *
* params - [IN] the operation parameters *
* errmsg - [OUT] error message *
* *
@@ -942,18 +943,59 @@ static int item_preproc_regsub(zbx_variant_t *value, const char *params, char **
* FAIL - otherwise *
* *
******************************************************************************/
-static int item_preproc_jsonpath_op(zbx_variant_t *value, const char *params, char **errmsg)
+static int item_preproc_jsonpath_op(zbx_preproc_cache_t *cache, zbx_variant_t *value, const char *params,
+ char **errmsg)
{
- struct zbx_json_parse jp;
- char *data = NULL;
+ char *data = NULL;
- if (FAIL == item_preproc_convert_value(value, ZBX_VARIANT_STR, errmsg))
- return FAIL;
+ if (NULL == cache)
+ {
+ zbx_jsonobj_t obj;
+
+ if (FAIL == item_preproc_convert_value(value, ZBX_VARIANT_STR, errmsg))
+ return FAIL;
- if (FAIL == zbx_json_open(value->data.str, &jp) || FAIL == zbx_jsonpath_query(&jp, params, &data))
+ if (FAIL == zbx_jsonobj_open(value->data.str, &obj))
+ {
+ *errmsg = zbx_strdup(*errmsg, zbx_json_strerror());
+ return FAIL;
+ }
+
+ if (FAIL == zbx_jsonobj_query(&obj, params, &data))
+ {
+ zbx_jsonobj_clear(&obj);
+ *errmsg = zbx_strdup(*errmsg, zbx_json_strerror());
+ return FAIL;
+ }
+
+ zbx_jsonobj_clear(&obj);
+ }
+ else
{
- *errmsg = zbx_strdup(*errmsg, zbx_json_strerror());
- return FAIL;
+ zbx_jsonobj_t *obj;
+
+ if (NULL == (obj = (zbx_jsonobj_t *)zbx_preproc_cache_get(cache, ZBX_PREPROC_JSONPATH)))
+ {
+ if (FAIL == item_preproc_convert_value(value, ZBX_VARIANT_STR, errmsg))
+ return FAIL;
+
+ obj = (zbx_jsonobj_t *)zbx_malloc(NULL, sizeof(zbx_jsonobj_t));
+
+ if (SUCCEED != zbx_jsonobj_open(value->data.str, obj))
+ {
+ *errmsg = zbx_strdup(*errmsg, zbx_json_strerror());
+ zbx_free(obj);
+ return FAIL;
+ }
+
+ zbx_preproc_cache_put(cache, ZBX_PREPROC_JSONPATH, obj);
+ }
+
+ if (FAIL == zbx_jsonobj_query(obj, params, &data))
+ {
+ *errmsg = zbx_strdup(*errmsg, zbx_json_strerror());
+ return FAIL;
+ }
}
if (NULL == data)
@@ -972,7 +1014,8 @@ static int item_preproc_jsonpath_op(zbx_variant_t *value, const char *params, ch
* *
* Purpose: execute jsonpath query *
* *
- * Parameters: value - [IN/OUT] the value to process *
+ * Parameters: cache - [IN] the preprocessing cache *
+ * value - [IN/OUT] the value to process *
* params - [IN] the operation parameters *
* errmsg - [OUT] error message *
* *
@@ -980,11 +1023,12 @@ static int item_preproc_jsonpath_op(zbx_variant_t *value, const char *params, ch
* FAIL - otherwise *
* *
******************************************************************************/
-static int item_preproc_jsonpath(zbx_variant_t *value, const char *params, char **errmsg)
+static int item_preproc_jsonpath(zbx_preproc_cache_t *cache, zbx_variant_t *value, const char *params,
+ char **errmsg)
{
char *err = NULL;
- if (SUCCEED == item_preproc_jsonpath_op(value, params, &err))
+ if (SUCCEED == item_preproc_jsonpath_op(cache, value, params, &err))
return SUCCEED;
*errmsg = zbx_dsprintf(*errmsg, "cannot extract value from json by path \"%s\": %s", params, err);
@@ -1571,7 +1615,8 @@ fail:
* *
* Purpose: parse Prometheus format metrics *
* *
- * Parameters: value - [IN/OUT] the value to process *
+ * Parameters: cache - [IN] the preprocessing cache *
+ * value - [IN/OUT] the value to process *
* params - [IN] the operation parameters *
* errmsg - [OUT] error message *
* *
@@ -2148,7 +2193,7 @@ int zbx_item_preproc(zbx_preproc_cache_t *cache, unsigned char value_type, zbx_v
ret = item_preproc_xpath(value, op->params, error);
break;
case ZBX_PREPROC_JSONPATH:
- ret = item_preproc_jsonpath(value, op->params, error);
+ ret = item_preproc_jsonpath(cache, value, op->params, error);
break;
case ZBX_PREPROC_VALIDATE_RANGE:
ret = item_preproc_validate_range(value_type, value, op->params, error);
diff --git a/src/zabbix_server/preprocessor/item_preproc.h b/src/zabbix_server/preprocessor/item_preproc.h
index 31dfbd7d138..5db45d64dde 100644
--- a/src/zabbix_server/preprocessor/item_preproc.h
+++ b/src/zabbix_server/preprocessor/item_preproc.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_ITEM_PREPROC_H
#define ZABBIX_ITEM_PREPROC_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "preproc.h"
#define ZBX_PREPROC_MAX_PACKET_SIZE (ZBX_MEBIBYTE * 128)
diff --git a/src/zabbix_server/preprocessor/preproc_cache.c b/src/zabbix_server/preprocessor/preproc_cache.c
index 9b7cff0731e..556f58e53e9 100644
--- a/src/zabbix_server/preprocessor/preproc_cache.c
+++ b/src/zabbix_server/preprocessor/preproc_cache.c
@@ -95,6 +95,11 @@ void zbx_preproc_cache_clear(zbx_preproc_cache_t *cache)
case ZBX_PREPROC_PROMETHEUS_PATTERN:
zbx_prometheus_clear((zbx_prometheus_t *)cache->refs.values[i].impl);
zbx_free(cache->refs.values[i].impl);
+ break;
+ case ZBX_PREPROC_JSONPATH:
+ zbx_jsonobj_clear((zbx_jsonobj_t *)cache->refs.values[i].impl);
+ zbx_free(cache->refs.values[i].impl);
+ break;
}
}
diff --git a/src/zabbix_server/preprocessor/preproc_worker.c b/src/zabbix_server/preprocessor/preproc_worker.c
index 8fe8d436786..30bd514e637 100644
--- a/src/zabbix_server/preprocessor/preproc_worker.c
+++ b/src/zabbix_server/preprocessor/preproc_worker.c
@@ -115,6 +115,88 @@ static void worker_format_result(int step, const zbx_preproc_result_t *result, c
}
}
+/* mock field to estimate how much data can be stored in characters, bytes or both, */
+/* depending on database backend */
+
+typedef struct
+{
+ int bytes_num;
+ int chars_num;
+}
+zbx_db_mock_field_t;
+
+/******************************************************************************
+ * *
+ * Purpose: initializes mock field *
+ * *
+ * Parameters: field - [OUT] the field data *
+ * field_type - [IN] the field type in database schema *
+ * field_len - [IN] the field size in database schema *
+ * *
+ ******************************************************************************/
+static void zbx_db_mock_field_init(zbx_db_mock_field_t *field, int field_type, int field_len)
+{
+ switch (field_type)
+ {
+ case ZBX_TYPE_CHAR:
+#if defined(HAVE_ORACLE)
+ field->chars_num = field_len;
+ field->bytes_num = 4000;
+#else
+ field->chars_num = field_len;
+ field->bytes_num = -1;
+#endif
+ return;
+ }
+
+ THIS_SHOULD_NEVER_HAPPEN;
+
+ field->chars_num = 0;
+ field->bytes_num = 0;
+}
+
+/******************************************************************************
+ * *
+ * Purpose: 'appends' text to the field, if successful the character/byte *
+ * limits are updated *
+ * *
+ * Parameters: field - [IN/OUT] the mock field *
+ * text - [IN] the text to append *
+ * *
+ * Return value: SUCCEED - the field had enough space to append the text *
+ * FAIL - otherwise *
+ * *
+ ******************************************************************************/
+static int zbx_db_mock_field_append(zbx_db_mock_field_t *field, const char *text)
+{
+ int bytes_num, chars_num;
+
+ if (-1 != field->bytes_num)
+ {
+ bytes_num = strlen(text);
+ if (bytes_num > field->bytes_num)
+ return FAIL;
+ }
+ else
+ bytes_num = 0;
+
+ if (-1 != field->chars_num)
+ {
+ chars_num = zbx_strlen_utf8(text);
+ if (chars_num > field->chars_num)
+ return FAIL;
+ }
+ else
+ chars_num = 0;
+
+ field->bytes_num -= bytes_num;
+ field->chars_num -= chars_num;
+
+ return SUCCEED;
+}
+
+
+
/******************************************************************************
* *
* Purpose: formats preprocessing error message *
diff --git a/src/zabbix_server/proxyconfigread/proxyconfig_read.c b/src/zabbix_server/proxyconfigread/proxyconfig_read.c
index 4948ad076e4..a524f62e6b8 100644
--- a/src/zabbix_server/proxyconfigread/proxyconfig_read.c
+++ b/src/zabbix_server/proxyconfigread/proxyconfig_read.c
@@ -19,7 +19,7 @@
#include "proxyconfig_read.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "zbxdbhigh.h"
#include "libs/zbxkvs/kvs.h"
#include "libs/zbxvault/vault.h"
diff --git a/src/zabbix_server/proxyconfigread/proxyconfig_read.h b/src/zabbix_server/proxyconfigread/proxyconfig_read.h
index e77b7de6980..a76aa8b61cd 100644
--- a/src/zabbix_server/proxyconfigread/proxyconfig_read.h
+++ b/src/zabbix_server/proxyconfigread/proxyconfig_read.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_PROXYCONFIG_READ_H
#define ZABBIX_PROXYCONFIG_READ_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
typedef enum {
ZBX_PROXYCONFIG_STATUS_EMPTY,
diff --git a/src/zabbix_server/proxypoller/proxypoller.c b/src/zabbix_server/proxypoller/proxypoller.c
index 6d0a0c3609b..d5205941948 100644
--- a/src/zabbix_server/proxypoller/proxypoller.c
+++ b/src/zabbix_server/proxypoller/proxypoller.c
@@ -19,7 +19,7 @@
#include "proxypoller.h"
#include "zbxserver.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "zbxnix.h"
#include "zbxself.h"
diff --git a/src/zabbix_server/scripts/scripts.h b/src/zabbix_server/scripts/scripts.h
index 344fb37335d..f94c7d4ace5 100644
--- a/src/zabbix_server/scripts/scripts.h
+++ b/src/zabbix_server/scripts/scripts.h
@@ -20,7 +20,7 @@
#ifndef ZABBIX_SCRIPTS_H
#define ZABBIX_SCRIPTS_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
void zbx_script_init(zbx_script_t *script);
void zbx_script_clean(zbx_script_t *script);
diff --git a/src/zabbix_server/server.c b/src/zabbix_server/server.c
index 822401ee2f8..4aa10ffa80f 100644
--- a/src/zabbix_server/server.c
+++ b/src/zabbix_server/server.c
@@ -62,7 +62,7 @@
#include "reporter/report_manager.h"
#include "reporter/report_writer.h"
#include "events.h"
-#include "../libs/zbxdbcache/valuecache.h"
+#include "zbxcachevalue.h"
#include "setproctitle.h"
#include "zbxhistory.h"
#include "postinit.h"
@@ -338,6 +338,8 @@ int CONFIG_SERVICEMAN_SYNC_FREQUENCY = 60;
static char *config_file = NULL;
static int config_allow_root = 0;
+static zbx_config_log_t log_file_cfg = {NULL, NULL, LOG_TYPE_UNDEFINED, 1};
+
struct zbx_db_version_info_t db_version_info;
int get_process_info_by_thread(int local_server_num, unsigned char *local_process_type, int *local_process_num);
@@ -576,8 +578,8 @@ static void zbx_set_defaults(void)
CONFIG_MAX_HOUSEKEEPER_DELETE = 0;
#endif
- if (NULL == CONFIG_LOG_TYPE_STR)
- CONFIG_LOG_TYPE_STR = zbx_strdup(CONFIG_LOG_TYPE_STR, ZBX_OPTION_LOGTYPE_FILE);
+ if (NULL == log_file_cfg.log_type_str)
+ log_file_cfg.log_type_str = zbx_strdup(log_file_cfg.log_type_str, ZBX_OPTION_LOGTYPE_FILE);
if (NULL == CONFIG_SOCKET_PATH)
CONFIG_SOCKET_PATH = zbx_strdup(CONFIG_SOCKET_PATH, "/tmp");
@@ -686,7 +688,7 @@ static void zbx_validate_config(ZBX_TASK_EX *task)
/* because they have non-zero default values */
#endif
- if (SUCCEED != zbx_validate_log_parameters(task))
+ if (SUCCEED != zbx_validate_log_parameters(task, &log_file_cfg))
err = 1;
#if !(defined(HAVE_GNUTLS) || defined(HAVE_OPENSSL))
@@ -815,11 +817,11 @@ static void zbx_load_config(ZBX_TASK_EX *task)
PARM_OPT, 0, 5},
{"PidFile", &CONFIG_PID_FILE, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogType", &CONFIG_LOG_TYPE_STR, TYPE_STRING,
+ {"LogType", &log_file_cfg.log_type_str, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFile", &CONFIG_LOG_FILE, TYPE_STRING,
+ {"LogFile", &log_file_cfg.log_file_name, TYPE_STRING,
PARM_OPT, 0, 0},
- {"LogFileSize", &CONFIG_LOG_FILE_SIZE, TYPE_INT,
+ {"LogFileSize", &log_file_cfg.log_file_size, TYPE_INT,
PARM_OPT, 0, 1024},
{"AlertScriptsPath", &CONFIG_ALERT_SCRIPTS_PATH, TYPE_STRING,
PARM_OPT, 0, 0},
@@ -967,7 +969,7 @@ static void zbx_load_config(ZBX_TASK_EX *task)
parse_cfg_file(config_file, cfg, ZBX_CFG_FILE_REQUIRED, ZBX_CFG_STRICT, ZBX_CFG_EXIT_FAILURE);
zbx_set_defaults();
- CONFIG_LOG_TYPE = zbx_get_log_type(CONFIG_LOG_TYPE_STR);
+ log_file_cfg.log_type = zbx_get_log_type(log_file_cfg.log_type_str);
zbx_validate_config(task);
#if defined(HAVE_MYSQL) || defined(HAVE_POSTGRESQL)
@@ -1176,7 +1178,8 @@ int main(int argc, char **argv)
exit(SUCCEED == ret ? EXIT_SUCCESS : EXIT_FAILURE);
}
- return zbx_daemon_start(config_allow_root, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit);
+ return zbx_daemon_start(config_allow_root, CONFIG_USER, t.flags, get_pid_file_path, zbx_on_exit,
+ log_file_cfg.log_type, log_file_cfg.log_file_name);
}
static void zbx_check_db(void)
@@ -1547,7 +1550,7 @@ static int server_restart_logger(char **error)
if (SUCCEED != zbx_locks_create(error))
return FAIL;
- if (SUCCEED != zabbix_open_log(CONFIG_LOG_TYPE, CONFIG_LOG_LEVEL, CONFIG_LOG_FILE, error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, CONFIG_LOG_LEVEL, error))
return FAIL;
return SUCCEED;
@@ -1667,7 +1670,7 @@ int MAIN_ZABBIX_ENTRY(int flags)
exit(EXIT_FAILURE);
}
- if (SUCCEED != zabbix_open_log(CONFIG_LOG_TYPE, CONFIG_LOG_LEVEL, CONFIG_LOG_FILE, &error))
+ if (SUCCEED != zabbix_open_log(&log_file_cfg, CONFIG_LOG_LEVEL, &error))
{
zbx_error("cannot open log: %s", error);
zbx_free(error);
@@ -1784,6 +1787,13 @@ int MAIN_ZABBIX_ENTRY(int flags)
exit(EXIT_FAILURE);
}
+ if (SUCCEED != DBinit(DCget_nextid, program_type, &error))
+ {
+ zabbix_log(LOG_LEVEL_CRIT, "cannot initialize database: %s", error);
+ zbx_free(error);
+ exit(EXIT_FAILURE);
+ }
+
if (ZBX_DB_UNKNOWN == (db_type = zbx_db_get_database_type()))
{
zabbix_log(LOG_LEVEL_CRIT, "cannot use database \"%s\": database is not a Zabbix database",
diff --git a/src/zabbix_server/snmptrapper/snmptrapper.c b/src/zabbix_server/snmptrapper/snmptrapper.c
index 5a80734cfb4..41308f59b9b 100644
--- a/src/zabbix_server/snmptrapper/snmptrapper.c
+++ b/src/zabbix_server/snmptrapper/snmptrapper.c
@@ -19,7 +19,7 @@
#include "snmptrapper.h"
#include "zbxserver.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "zbxself.h"
#include "zbxnix.h"
diff --git a/src/zabbix_server/stats/Makefile.am b/src/zabbix_server/stats/Makefile.am
index 3f7c866691b..e82bf28ea87 100644
--- a/src/zabbix_server/stats/Makefile.am
+++ b/src/zabbix_server/stats/Makefile.am
@@ -6,4 +6,7 @@ libzbxserver_server_a_SOURCES = \
zabbix_stats.h \
zabbix_stats_server.c
-libzbxserver_server_a_CFLAGS = -I$(top_srcdir)/src/libs/zbxdbcache
+libzbxserver_server_a_CFLAGS = \
+ -I$(top_srcdir)/src/libs/zbxcacheconfig \
+ -I$(top_srcdir)/src/libs/zbxcachehistory \
+ -I$(top_srcdir)/src/libs/zbxcachevalue
diff --git a/src/zabbix_server/stats/zabbix_stats_server.c b/src/zabbix_server/stats/zabbix_stats_server.c
index 566c6405279..39c9a7b6a9b 100644
--- a/src/zabbix_server/stats/zabbix_stats_server.c
+++ b/src/zabbix_server/stats/zabbix_stats_server.c
@@ -20,8 +20,8 @@
#include "zabbix_stats.h"
#include "zbxcommon.h"
-#include "dbcache.h"
-#include "valuecache.h"
+#include "zbxcacheconfig.h"
+#include "zbxcachevalue.h"
#include "zbxlld.h"
#include "log.h"
#include "zbxtrends.h"
diff --git a/src/zabbix_server/taskmanager/taskmanager.c b/src/zabbix_server/taskmanager/taskmanager.c
index 2f3653afbb3..4ef312d24e8 100644
--- a/src/zabbix_server/taskmanager/taskmanager.c
+++ b/src/zabbix_server/taskmanager/taskmanager.c
@@ -23,7 +23,7 @@
#include "zbxnix.h"
#include "zbxself.h"
#include "log.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxtasks.h"
#include "../events.h"
#include "../actions.h"
@@ -34,7 +34,6 @@
#include "zbxrtc.h"
#include "audit/zbxaudit.h"
#include "audit/zbxaudit_proxy.h"
-#include "dbcache.h"
#include "zbxnum.h"
#include "zbxtime.h"
#include "zbxversion.h"
diff --git a/src/zabbix_server/timer/timer.c b/src/zabbix_server/timer/timer.c
index 56e8feee12b..2392a926785 100644
--- a/src/zabbix_server/timer/timer.c
+++ b/src/zabbix_server/timer/timer.c
@@ -20,7 +20,7 @@
#include "timer.h"
#include "log.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxnix.h"
#include "zbxself.h"
#include "zbxnum.h"
diff --git a/src/zabbix_server/trapper/nodecommand.c b/src/zabbix_server/trapper/nodecommand.c
index ff6e3fdcaa7..74cc01e5960 100644
--- a/src/zabbix_server/trapper/nodecommand.c
+++ b/src/zabbix_server/trapper/nodecommand.c
@@ -27,6 +27,7 @@
#include "audit/zbxaudit.h"
#include "../../libs/zbxserver/get_host_from_event.h"
#include "../../libs/zbxserver/zabbix_users.h"
+#include "zbxdbwrap.h"
/******************************************************************************
* *
diff --git a/src/zabbix_server/trapper/proxydata.c b/src/zabbix_server/trapper/proxydata.c
index e964a3ff40b..2fe95123d93 100644
--- a/src/zabbix_server/trapper/proxydata.c
+++ b/src/zabbix_server/trapper/proxydata.c
@@ -18,9 +18,9 @@
**/
#include "proxydata.h"
-#include "proxy.h"
-#include "zbxdbhigh.h"
+#include "zbxdbwrap.h"
+#include "zbxcachehistory.h"
#include "log.h"
#include "zbxtasks.h"
#include "zbxmutexs.h"
diff --git a/src/zabbix_server/trapper/proxydata.h b/src/zabbix_server/trapper/proxydata.h
index b7ee7f6b3ad..460a2db25d4 100644
--- a/src/zabbix_server/trapper/proxydata.h
+++ b/src/zabbix_server/trapper/proxydata.h
@@ -21,7 +21,7 @@
#define ZABBIX_PROXYDATA_H
#include "zbxjson.h"
-#include "dbcache.h"
+#include "zbxcachehistory.h"
extern int CONFIG_TIMEOUT;
extern int CONFIG_TRAPPER_TIMEOUT;
diff --git a/src/zabbix_server/trapper/trapper.c b/src/zabbix_server/trapper/trapper.c
index 8f592825934..df1ee54ff09 100644
--- a/src/zabbix_server/trapper/trapper.c
+++ b/src/zabbix_server/trapper/trapper.c
@@ -19,7 +19,7 @@
#include "trapper.h"
#include "zbxserver.h"
-#include "proxy.h"
+#include "zbxdbwrap.h"
#include "log.h"
#include "zbxself.h"
@@ -75,6 +75,13 @@ typedef struct
}
zbx_entry_attribute_t;
+typedef enum
+{
+ ZBX_COUNTER_TYPE_UI64,
+ ZBX_COUNTER_TYPE_DBL
+}
+zbx_counter_type_t;
+
typedef struct
{
zbx_entry_info_t *info;
diff --git a/src/zabbix_server/trapper/trapper_expressions_evaluate.c b/src/zabbix_server/trapper/trapper_expressions_evaluate.c
index 5c484e33389..54c5a0a82cb 100644
--- a/src/zabbix_server/trapper/trapper_expressions_evaluate.c
+++ b/src/zabbix_server/trapper/trapper_expressions_evaluate.c
@@ -21,7 +21,7 @@
#include "zbxalgo.h"
#include "zbxnum.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "trapper_auth.h"
#include "zbxcommshigh.h"
diff --git a/src/zabbix_server/vmware/vmware.c b/src/zabbix_server/vmware/vmware.c
index c945040cd45..5e57a4d02ea 100644
--- a/src/zabbix_server/vmware/vmware.c
+++ b/src/zabbix_server/vmware/vmware.c
@@ -239,6 +239,21 @@ static zbx_hashset_t evt_msg_strpool;
static zbx_uint64_t evt_req_chunk_size;
+/* the vmware resource pool chunk */
+typedef struct
+{
+ char *id;
+ char *first_parentid;
+ char *name;
+ const char *path;
+ const char *parentid;
+ unsigned char parent_is_rp;
+}
+zbx_vmware_rpool_chunk_t;
+
+ZBX_PTR_VECTOR_DECL(vmware_rpool_chunk, zbx_vmware_rpool_chunk_t *)
+ZBX_PTR_VECTOR_IMPL(vmware_rpool_chunk, zbx_vmware_rpool_chunk_t *)
+
/*
* SOAP support
*/
@@ -500,17 +515,6 @@ static zbx_vmware_propmap_t vm_propmap[] = {
ZBX_XPATH_PROP_OBJECT_ID(ZBX_VMWARE_SOAP_FOLDER, "[text()='" id "']") "/" \
ZBX_XPATH_PROP_NAME_NODE("parent") "[@type='Folder']"
-#define ZBX_XPATH_GET_RESOURCEPOOL_NAME(id) \
- ZBX_XPATH_GET_OBJECT_NAME(ZBX_VMWARE_SOAP_RESOURCEPOOL, id)
-
-#define ZBX_XPATH_GET_RESOURCEPOOL_PARENTID(id) \
- ZBX_XPATH_PROP_OBJECT_ID(ZBX_VMWARE_SOAP_RESOURCEPOOL, "[text()='" id "']") "/" \
- ZBX_XPATH_PROP_NAME_NODE("parent") "[@type='ResourcePool']"
-
-#define ZBX_XPATH_GET_NON_RESOURCEPOOL_PARENTID(id) \
- ZBX_XPATH_PROP_OBJECT_ID(ZBX_VMWARE_SOAP_RESOURCEPOOL, "[text()='" id "']") "/" \
- ZBX_XPATH_PROP_NAME_NODE("parent") "[@type!='ResourcePool']"
-
/* hypervisor hashset support */
static zbx_hash_t vmware_hv_hash(const void *data)
{
@@ -2375,6 +2379,22 @@ static void vmware_datacenter_free(zbx_vmware_datacenter_t *datacenter)
/******************************************************************************
* *
+ * Purpose: frees resources allocated to store rp_chunk data *
+ * *
+ * Parameters: rp_chunk - [IN] the resourcepool chunk *
+ * *
+ ******************************************************************************/
+static void vmware_rp_chunk_free(zbx_vmware_rpool_chunk_t *rp_chunk)
+{
+ zbx_free(rp_chunk->id);
+ zbx_free(rp_chunk->name);
+ zbx_free(rp_chunk->first_parentid);
+ /* path and parent are not cleared */
+ zbx_free(rp_chunk);
+}
+
+/******************************************************************************
+ * *
* Purpose: frees resources allocated to store resourcepool data *
* *
* Parameters: resourcepool - [IN] the resourcepool *
@@ -2864,14 +2884,15 @@ typedef struct
zbx_property_collection_iter;
static int zbx_property_collection_init(CURL *easyhandle, const char *property_collection_query,
- const char *property_collector, zbx_property_collection_iter **iter, xmlDoc **xdoc, char **error)
+ const char *property_collector, const char *fn_parent, zbx_property_collection_iter **iter,
+ xmlDoc **xdoc, char **error)
{
*iter = (zbx_property_collection_iter *)zbx_malloc(*iter, sizeof(zbx_property_collection_iter));
(*iter)->property_collector = property_collector;
(*iter)->easyhandle = easyhandle;
(*iter)->token = NULL;
- if (SUCCEED != zbx_soap_post(__func__, (*iter)->easyhandle, property_collection_query, xdoc, &(*iter)->token,
+ if (SUCCEED != zbx_soap_post(fn_parent, (*iter)->easyhandle, property_collection_query, xdoc, &(*iter)->token,
error))
{
return FAIL;
@@ -2880,7 +2901,8 @@ static int zbx_property_collection_init(CURL *easyhandle, const char *property_c
return SUCCEED;
}
-static int zbx_property_collection_next(zbx_property_collection_iter *iter, xmlDoc **xdoc, char **error)
+static int zbx_property_collection_next(const char *fn_parent, zbx_property_collection_iter *iter, xmlDoc **xdoc,
+ char **error)
{
# define ZBX_POST_CONTINUE_RETRIEVE_PROPERTIES \
ZBX_POST_VSPHERE_HEADER \
@@ -2904,7 +2926,7 @@ static int zbx_property_collection_next(zbx_property_collection_iter *iter, xmlD
zbx_snprintf(post, sizeof(post), ZBX_POST_CONTINUE_RETRIEVE_PROPERTIES, iter->property_collector, token_esc);
zbx_free(token_esc);
- if (SUCCEED != zbx_soap_post(__func__, iter->easyhandle, post, xdoc, NULL, error))
+ if (SUCCEED != zbx_soap_post(fn_parent, iter->easyhandle, post, xdoc, NULL, error))
return FAIL;
zbx_free(iter->token);
@@ -3989,83 +4011,6 @@ out:
/******************************************************************************
* *
- * Purpose: get resource pool parentid and path (chain of resource pool *
- * names divided by '/') *
- * *
- * Parameters: xdoc - [IN] the xml with all vm details *
- * r_id - [IN] the resource pool id *
- * parentid - [OUT] the resource pool parent id *
- * path - [OUT] the resource pool path *
- * *
- * Return value: SUCCEED - the operation has completed successfully *
- * FAIL - the operation has failed *
- * *
- ******************************************************************************/
-static int vmware_service_get_resourcepool_data(xmlDoc *xdoc, const char *r_id, char **parentid, char **path)
-{
- char tmp[MAX_STRING_LEN], *id, *name;
- int ret = SUCCEED;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() resource pool id:'%s'", __func__, r_id);
- id = zbx_strdup(NULL, r_id);
- *path = *parentid = NULL;
-
- do
- {
- char *id_esc;
-
- id_esc = zbx_xml_escape_dyn(id);
- zbx_free(id);
- zbx_snprintf(tmp, sizeof(tmp), ZBX_XPATH_GET_RESOURCEPOOL_NAME("%s"), id_esc);
-
- if (NULL == (name = zbx_xml_doc_read_value(xdoc , tmp)))
- {
- zbx_free(*parentid);
- zbx_free(*path);
- zbx_free(id_esc);
- ret = FAIL;
- break;
- }
-
- zbx_snprintf(tmp, sizeof(tmp), ZBX_XPATH_GET_RESOURCEPOOL_PARENTID("%s"), id_esc);
- id = zbx_xml_doc_read_value(xdoc , tmp);
-
- if (NULL != id) /* we do not include the last default 'ResourcePool' */
- {
- if (NULL == *path)
- {
- *path = name;
- name = NULL;
- }
- else
- *path = zbx_dsprintf(*path, "%s/%s", name, *path);
-
- }
- else
- zbx_snprintf(tmp, sizeof(tmp), ZBX_XPATH_GET_NON_RESOURCEPOOL_PARENTID("%s"), id_esc);
-
- zbx_free(id_esc);
- zbx_free(name);
- }
- while (NULL != id);
-
- if (SUCCEED == ret)
- {
- if (NULL != *path && NULL == (*parentid = zbx_xml_doc_read_value(xdoc , tmp)))
- zbx_free(*path);
-
- if (NULL == *path)
- ret = FAIL;
- }
-
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s resource pool path: '%s', parentid: '%s'", __func__,
- zbx_result_string(ret), ZBX_NULL2EMPTY_STR(*path), ZBX_NULL2EMPTY_STR(*parentid));
-
- return ret;
-}
-
-/******************************************************************************
- * *
* Purpose: get alarm details *
* *
* Parameters: service - [IN] the vmware service *
@@ -4363,7 +4308,7 @@ static zbx_vmware_vm_t *vmware_service_create_vm(zbx_vmware_service_t *service,
rpool_cmp.id = vm->props[ZBX_VMWARE_VMPROP_RESOURCEPOOL];
if (FAIL != (i = zbx_vector_vmware_resourcepool_bsearch(rpools, &rpool_cmp,
- vmware_resourcepool_compare_id)))
+ ZBX_DEFAULT_STR_PTR_COMPARE_FUNC)))
{
rpools->values[i]->vm_num += 1;
}
@@ -5279,7 +5224,7 @@ static int vmware_service_hv_disks_get_info(const zbx_vmware_service_t *service,
zbx_free(hvid_esc);
zbx_free(scsi_req);
- if (SUCCEED != (ret = zbx_property_collection_init(easyhandle, tmp, pcollecter, &iter, &doc, error)))
+ if (SUCCEED != (ret = zbx_property_collection_init(easyhandle, tmp, pcollecter, __func__, &iter, &doc, error)))
goto out;
updated += vmware_service_hv_disks_parse_info(doc, dss, disks_info);
@@ -5289,7 +5234,7 @@ static int vmware_service_hv_disks_get_info(const zbx_vmware_service_t *service,
zbx_xml_free_doc(doc);
doc = NULL;
- if (SUCCEED != (ret = zbx_property_collection_next(iter, &doc, error)))
+ if (SUCCEED != (ret = zbx_property_collection_next(__func__, iter, &doc, error)))
goto out;
updated += vmware_service_hv_disks_parse_info(doc, dss, disks_info);
@@ -5306,7 +5251,8 @@ static int vmware_service_hv_disks_get_info(const zbx_vmware_service_t *service,
"<ns0:pathSet>config.vsanHostConfig.storageInfo.diskMapping</ns0:pathSet>", hvid_esc);
zbx_free(hvid_esc);
- if (SUCCEED != (ret = zbx_property_collection_init(easyhandle, tmp, pcollecter, &iter, &doc_dinfo, &err)))
+ if (SUCCEED != (ret = zbx_property_collection_init(easyhandle, tmp, pcollecter, __func__, &iter, &doc_dinfo,
+ &err)))
{
zabbix_log(LOG_LEVEL_DEBUG, "%s() cannot get vsan disk_info:%s", __func__, err);
zbx_str_free(err);
@@ -5320,7 +5266,7 @@ static int vmware_service_hv_disks_get_info(const zbx_vmware_service_t *service,
zbx_xml_free_doc(doc_dinfo);
doc_dinfo = NULL;
- if (SUCCEED != (ret = zbx_property_collection_next(iter, &doc_dinfo, error)))
+ if (SUCCEED != (ret = zbx_property_collection_next(__func__, iter, &doc_dinfo, error)))
goto out;
updated_vsan += vmware_service_hv_vsan_parse_info(doc_dinfo, vsan_uuid, disks_info);
@@ -5862,7 +5808,7 @@ static int vmware_hv_ds_access_update(zbx_vmware_service_t *service, CURL *easyh
zbx_snprintf(tmp, sizeof(tmp), ZBX_POST_HV_DS_ACCESS, pcollector, hvid_esc, hvid_esc, hvid_esc, hvid_esc);
zbx_free(hvid_esc);
- if (SUCCEED != zbx_property_collection_init(easyhandle, tmp, pcollector, &iter, &doc, error))
+ if (SUCCEED != zbx_property_collection_init(easyhandle, tmp, pcollector, __func__, &iter, &doc, error))
goto out;
updated += vmware_hv_ds_access_parse(doc, hv_dss, hv_uuid, hv_id, dss);
@@ -5872,7 +5818,7 @@ static int vmware_hv_ds_access_update(zbx_vmware_service_t *service, CURL *easyh
zbx_xml_free_doc(doc);
doc = NULL;
- if (SUCCEED != zbx_property_collection_next(iter, &doc, error))
+ if (SUCCEED != zbx_property_collection_next(__func__, iter, &doc, error))
goto out;
updated += vmware_hv_ds_access_parse(doc, hv_dss, hv_uuid, hv_id, dss);
@@ -6007,19 +5953,6 @@ static const char *vmware_hv_vsan_uuid(zbx_vector_vmware_datastore_t *dss, zbx_v
/******************************************************************************
* *
- * Purpose: sorting function to sort Resource pool names vector by name *
- * *
- ******************************************************************************/
-int vmware_resourcepool_compare_id(const void *r1, const void *r2)
-{
- const zbx_vmware_resourcepool_t *rp1 = *(const zbx_vmware_resourcepool_t * const *)r1;
- const zbx_vmware_resourcepool_t *rp2 = *(const zbx_vmware_resourcepool_t * const *)r2;
-
- return strcmp(rp1->id, rp2->id);
-}
-
-/******************************************************************************
- * *
* Function: vmware_service_init_hv *
* *
* Purpose: initialize vmware hypervisor object *
@@ -6600,7 +6533,7 @@ static int vmware_service_get_hv_ds_dc_dvs_list(const zbx_vmware_service_t *serv
zbx_snprintf(tmp, sizeof(tmp), ZBX_POST_VCENTER_HV_DS_LIST, pcollector,
vmware_service_objects[service->type].root_folder);
- if (SUCCEED != zbx_property_collection_init(easyhandle, tmp, pcollector, &iter, &doc, error))
+ if (SUCCEED != zbx_property_collection_init(easyhandle, tmp, pcollector, __func__, &iter, &doc, error))
goto out;
if (ZBX_VMWARE_TYPE_VCENTER == service->type)
@@ -6625,7 +6558,7 @@ static int vmware_service_get_hv_ds_dc_dvs_list(const zbx_vmware_service_t *serv
zbx_xml_free_doc(doc);
doc = NULL;
- if (SUCCEED != zbx_property_collection_next(iter, &doc, error))
+ if (SUCCEED != zbx_property_collection_next(__func__, iter, &doc, error))
goto out;
if (ZBX_VMWARE_TYPE_VCENTER == service->type)
@@ -7366,15 +7299,256 @@ out:
* *
* Purpose: retrieves a list of vmware service clusters and resource pools *
* *
+ * Parameters: service - [IN] the vmware service *
+ * easyhandle - [IN] the CURL handle *
+ * cluster_data - [OUT] a pointer to the output variable *
+ * clusters - [OUT] a pointer to the resulting clusters *
+ * vector *
+ * rp_chunks - [OUT] a pointer to the resulting resource pool *
+ * vector *
+ * alarms_data - [OUT] the vector with all alarms *
+ * error - [OUT] the error message in the case of failure *
+ * *
+ * Return value: SUCCEED - the operation has completed successfully *
+ * FAIL - the operation has failed *
+ * *
+ ******************************************************************************/
+static int vmware_service_process_cluster_data(zbx_vmware_service_t *service, CURL *easyhandle,
+ xmlDoc *cluster_data, zbx_vector_ptr_t *clusters, zbx_vector_vmware_rpool_chunk_t *rp_chunks,
+ zbx_vmware_alarms_data_t *alarms_data, char **error)
+{
+#define ZBX_XPATH_GET_RESOURCEPOOL_PARENTID \
+ ZBX_XPATH_PROP_NAME_NODE("parent") "[@type='ResourcePool']"
+#define ZBX_XPATH_GET_NON_RESOURCEPOOL_PARENTID \
+ ZBX_XPATH_PROP_NAME_NODE("parent") "[@type!='ResourcePool']"
+
+ int ret, i;
+ char *id_esc, tmp[MAX_STRING_LEN * 2];
+ zbx_vmware_cluster_t *cluster;
+ zbx_vector_str_t rp_ids, ids;
+ xmlNode *node;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
+
+ zbx_vector_str_create(&ids);
+
+ zbx_xml_read_values(cluster_data, ZBX_XPATH_OBJS_BY_TYPE(ZBX_VMWARE_SOAP_CLUSTER), &ids);
+ zbx_vector_ptr_reserve(clusters, (size_t)(clusters->values_alloc + ids.values_num));
+
+ for (i = 0; i < ids.values_num; i++)
+ {
+ char *name;
+
+ id_esc = zbx_xml_escape_dyn(ids.values[i]);
+ zbx_snprintf(tmp, sizeof(tmp), ZBX_XPATH_PROP_OBJECT_ID(ZBX_VMWARE_SOAP_CLUSTER, "[text()='%s']"),
+ id_esc);
+ zbx_str_free(id_esc);
+
+ if (NULL == (node = zbx_xml_doc_get(cluster_data, tmp)) ||
+ NULL == (name = zbx_xml_node_read_value(cluster_data, node,
+ ZBX_XPATH_PROP_NAME_NODE("name"))))
+ {
+ continue;
+ }
+
+ cluster = (zbx_vmware_cluster_t *)zbx_malloc(NULL, sizeof(zbx_vmware_cluster_t));
+ cluster->id = zbx_strdup(NULL, ids.values[i]);
+ cluster->name = name;
+ cluster->status = NULL;
+ zbx_vector_str_create(&cluster->dss_uuid);
+ zbx_vector_str_create(&cluster->alarm_ids);
+
+ if (SUCCEED != vmware_service_get_alarms_data(__func__, service, easyhandle, cluster_data,
+ zbx_xml_node_get(cluster_data, node, ZBX_XPATH_PROP_NAME_NODE("triggeredAlarmState")),
+ &cluster->alarm_ids, alarms_data, error))
+ {
+ vmware_cluster_free(cluster);
+ ret = FAIL;
+ goto out;
+ }
+
+ zbx_vector_ptr_append(clusters, cluster);
+ }
+
+ zbx_vector_str_create(&rp_ids);
+ zbx_xml_read_values(cluster_data, ZBX_XPATH_OBJS_BY_TYPE(ZBX_VMWARE_SOAP_RESOURCEPOOL), &rp_ids);
+ zbx_vector_vmware_rpool_chunk_reserve(rp_chunks, (size_t)(rp_chunks->values_num + rp_ids.values_num));
+
+ for (i = 0; i < rp_ids.values_num; i++)
+ {
+ zbx_vmware_rpool_chunk_t *rp_chunk;
+
+ rp_chunk = (zbx_vmware_rpool_chunk_t *)zbx_malloc(NULL, sizeof(zbx_vmware_rpool_chunk_t));
+
+ id_esc = zbx_xml_escape_dyn(rp_ids.values[i]);
+ zbx_snprintf(tmp, sizeof(tmp), ZBX_XPATH_PROP_OBJECT_ID(ZBX_VMWARE_SOAP_RESOURCEPOOL, "[text()='%s']"),
+ id_esc);
+ zbx_str_free(id_esc);
+
+ if (NULL == (node = zbx_xml_doc_get(cluster_data, tmp)) || NULL == (
+ rp_chunk->name = zbx_xml_node_read_value(cluster_data, node,
+ ZBX_XPATH_PROP_NAME_NODE("name"))))
+ {
+ zbx_free(rp_chunk);
+ continue;
+ }
+
+ if (NULL == (rp_chunk->first_parentid = zbx_xml_node_read_value(cluster_data , node,
+ ZBX_XPATH_GET_RESOURCEPOOL_PARENTID)))
+ {
+ if (NULL == (rp_chunk->first_parentid = zbx_xml_node_read_value(cluster_data , node,
+ ZBX_XPATH_GET_NON_RESOURCEPOOL_PARENTID)))
+ {
+ zbx_free(rp_chunk->name);
+ zbx_free(rp_chunk);
+ continue;
+ }
+
+ rp_chunk->parent_is_rp = 0;
+ }
+ else
+ rp_chunk->parent_is_rp = 1;
+
+ rp_chunk->id = zbx_strdup(NULL, rp_ids.values[i]);
+ rp_chunk->path = rp_chunk->parentid = NULL;
+ zbx_vector_vmware_rpool_chunk_append(rp_chunks, rp_chunk);
+ }
+
+ zbx_vector_str_clear_ext(&rp_ids, zbx_str_free);
+ zbx_vector_str_destroy(&rp_ids);
+
+ ret = SUCCEED;
+out:
+ zbx_vector_str_clear_ext(&ids, zbx_str_free);
+ zbx_vector_str_destroy(&ids);
+
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s cl:%d rp:%d", __func__, zbx_result_string(ret),
+ clusters->values_num, rp_chunks->values_num);
+
+ return ret;
+
+#undef ZBX_XPATH_GET_RESOURCEPOOL_PARENTID
+#undef ZBX_XPATH_GET_NON_RESOURCEPOOL_PARENTID
+}
+
+/******************************************************************************
+ * *
+ * Purpose: retrieves status of the specified vmware cluster *
+ * *
* Parameters: easyhandle - [IN] the CURL handle *
- * data - [OUT] a pointer to the output variable *
+ * datastores - [IN] all available Datastores *
+ * cluster - [IN/OUT] the cluster *
+ * cq_values - [IN/OUT] the vector with custom query entries *
* error - [OUT] the error message in the case of failure *
* *
* Return value: SUCCEED - the operation has completed successfully *
* FAIL - the operation has failed *
* *
******************************************************************************/
-static int vmware_service_get_cluster_data(CURL *easyhandle, xmlDoc **data, char **error)
+static int vmware_service_get_cluster_state(CURL *easyhandle, const zbx_vector_vmware_datastore_t *datastores,
+ zbx_vmware_cluster_t *cluster, zbx_vector_cq_value_t *cq_values, char **error)
+{
+# define ZBX_POST_VMWARE_CLUSTER_STATUS \
+ ZBX_POST_VSPHERE_HEADER \
+ "<ns0:RetrievePropertiesEx>" \
+ "<ns0:_this type=\"PropertyCollector\">propertyCollector</ns0:_this>" \
+ "<ns0:specSet>" \
+ "<ns0:propSet>" \
+ "<ns0:type>ClusterComputeResource</ns0:type>" \
+ "<ns0:all>false</ns0:all>" \
+ "<ns0:pathSet>summary.overallStatus</ns0:pathSet>" \
+ "<ns0:pathSet>datastore</ns0:pathSet>" \
+ "%s" \
+ "</ns0:propSet>" \
+ "<ns0:objectSet>" \
+ "<ns0:obj type=\"ClusterComputeResource\">%s</ns0:obj>" \
+ "</ns0:objectSet>" \
+ "</ns0:specSet>" \
+ "<ns0:options></ns0:options>" \
+ "</ns0:RetrievePropertiesEx>" \
+ ZBX_POST_VSPHERE_FOOTER
+
+ char *tmp, *clusterid_esc, *cq_prop;
+ int i, ret;
+ xmlDoc *doc = NULL;
+ zbx_vector_cq_value_t cqvs;
+ zbx_vector_str_t ids;
+
+ zabbix_log(LOG_LEVEL_DEBUG, "In %s() clusterid:'%s'", __func__, cluster->id);
+
+ zbx_vector_str_create(&ids);
+ zbx_vector_cq_value_create(&cqvs);
+ clusterid_esc = zbx_xml_escape_dyn(cluster->id);
+ cq_prop = vmware_cq_prop_soap_request(cq_values, ZBX_VMWARE_SOAP_CLUSTER, cluster->id, &cqvs);
+
+ tmp = zbx_dsprintf(NULL, ZBX_POST_VMWARE_CLUSTER_STATUS, cq_prop, clusterid_esc);
+
+ zbx_str_free(cq_prop);
+ zbx_str_free(clusterid_esc);
+ ret = zbx_soap_post(__func__, easyhandle, tmp, &doc, NULL, error);
+ zbx_str_free(tmp);
+
+ if (FAIL == ret)
+ goto out;
+
+ cluster->status = zbx_xml_doc_read_value(doc, ZBX_XPATH_PROP_NAME("summary.overallStatus"));
+
+ if (0 != cqvs.values_num)
+ vmware_service_cq_prop_value(__func__, doc, &cqvs);
+
+ zbx_xml_read_values(doc, ZBX_XPATH_PROP_NAME("datastore") "/*", &ids);
+
+ for (i = 0; i < ids.values_num; i++)
+ {
+ int j;
+ zbx_vmware_datastore_t ds_cmp;
+
+ ds_cmp.id = ids.values[i];
+
+ if (FAIL == (j = zbx_vector_vmware_datastore_bsearch(datastores, &ds_cmp, vmware_ds_id_compare)))
+ {
+ zabbix_log(LOG_LEVEL_DEBUG, "%s(): Datastore \"%s\" not found on cluster \"%s\".", __func__,
+ ds_cmp.id, cluster->id);
+ continue;
+ }
+
+ zbx_vector_str_append(&cluster->dss_uuid, zbx_strdup(NULL, datastores->values[j]->uuid));
+ }
+out:
+ zbx_vector_cq_value_destroy(&cqvs);
+ zbx_vector_str_clear_ext(&ids, zbx_str_free);
+ zbx_vector_str_destroy(&ids);
+ zbx_xml_free_doc(doc);
+ zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
+
+ return ret;
+
+# undef ZBX_POST_VMWARE_CLUSTER_STATUS
+}
+
+/******************************************************************************
+ * *
+ * Purpose: creates lists of vmware cluster and resource pool objects *
+ * *
+ * Parameters: service - [IN] the vmware service *
+ * easyhandle - [IN] the CURL handle *
+ * datastores - [IN] all available Datastores *
+ * cq_values - [IN/OUT] the vector with custom query entries *
+ * clusters - [OUT] a pointer to the resulting clusters *
+ * vector *
+ * resourcepools - [OUT] a pointer to the resulting resource pool *
+ * vector *
+ * alarms_data - [OUT] the vector with all alarms *
+ * error - [OUT] the error message in the case of failure *
+ * *
+ * Return value: SUCCEED - the operation has completed successfully *
+ * FAIL - the operation has failed *
+ * *
+ ******************************************************************************/
+static int vmware_service_get_clusters_and_resourcepools(zbx_vmware_service_t *service, CURL *easyhandle,
+ const zbx_vector_vmware_datastore_t *datastores, zbx_vector_cq_value_t *cq_values,
+ zbx_vector_ptr_t *clusters, zbx_vector_vmware_resourcepool_t *resourcepools,
+ zbx_vmware_alarms_data_t *alarms_data, char **error)
{
# define ZBX_POST_VCENTER_CLUSTER \
ZBX_POST_VSPHERE_HEADER \
@@ -7384,15 +7558,9 @@ static int vmware_service_get_cluster_data(CURL *easyhandle, xmlDoc **data, char
"<ns0:propSet>" \
"<ns0:type>ClusterComputeResource</ns0:type>" \
"<ns0:pathSet>name</ns0:pathSet>" \
- "<ns0:pathSet>resourcePool</ns0:pathSet>" \
"<ns0:pathSet>triggeredAlarmState</ns0:pathSet>" \
"</ns0:propSet>" \
"<ns0:propSet>" \
- "<ns0:type>ComputeResource</ns0:type>" \
- "<ns0:pathSet>resourcePool</ns0:pathSet>" \
- "<ns0:pathSet>name</ns0:pathSet>" \
- "</ns0:propSet>" \
- "<ns0:propSet>" \
"<ns0:type>ResourcePool</ns0:type>" \
"<ns0:pathSet>resourcePool</ns0:pathSet>" \
"<ns0:pathSet>name</ns0:pathSet>" \
@@ -7521,243 +7689,118 @@ static int vmware_service_get_cluster_data(CURL *easyhandle, xmlDoc **data, char
"</ns0:RetrievePropertiesEx>" \
ZBX_POST_VSPHERE_FOOTER
- int ret = FAIL;
+ int i, ret = FAIL;
+ xmlDoc *cluster_data = NULL;
+ zbx_property_collection_iter *iter = NULL;
+ zbx_vector_vmware_rpool_chunk_t rp_chunks;
+ zbx_vector_ptr_t cl_chunks;
zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
- if (SUCCEED != zbx_soap_post(__func__, easyhandle, ZBX_POST_VCENTER_CLUSTER, data, NULL, error))
- goto out;
-
- ret = SUCCEED;
-out:
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
-
- return ret;
-
-# undef ZBX_POST_VCENTER_CLUSTER
-}
-
-/******************************************************************************
- * *
- * Purpose: retrieves status of the specified vmware cluster *
- * *
- * Parameters: easyhandle - [IN] the CURL handle *
- * clusterid - [IN] the cluster id *
- * datastores - [IN] all available Datastores *
- * cq_values - [IN/OUT] the vector with custom query entries *
- * status - [OUT] a pointer to the output variable *
- * dss - [OUT] a list of DS available for cluster *
- * error - [OUT] the error message in the case of failure *
- * *
- * Return value: SUCCEED - the operation has completed successfully *
- * FAIL - the operation has failed *
- * *
- ******************************************************************************/
-static int vmware_service_get_cluster_state(CURL *easyhandle, const char *clusterid,
- const zbx_vector_vmware_datastore_t *datastores, zbx_vector_cq_value_t *cq_values, char **status,
- zbx_vector_str_t *dss, char **error)
-{
-# define ZBX_POST_VMWARE_CLUSTER_STATUS \
- ZBX_POST_VSPHERE_HEADER \
- "<ns0:RetrievePropertiesEx>" \
- "<ns0:_this type=\"PropertyCollector\">propertyCollector</ns0:_this>" \
- "<ns0:specSet>" \
- "<ns0:propSet>" \
- "<ns0:type>ClusterComputeResource</ns0:type>" \
- "<ns0:all>false</ns0:all>" \
- "<ns0:pathSet>summary.overallStatus</ns0:pathSet>" \
- "<ns0:pathSet>datastore</ns0:pathSet>" \
- "%s" \
- "</ns0:propSet>" \
- "<ns0:objectSet>" \
- "<ns0:obj type=\"ClusterComputeResource\">%s</ns0:obj>" \
- "</ns0:objectSet>" \
- "</ns0:specSet>" \
- "<ns0:options></ns0:options>" \
- "</ns0:RetrievePropertiesEx>" \
- ZBX_POST_VSPHERE_FOOTER
-
- char *tmp, *clusterid_esc, *cq_prop;
- int i, ret = FAIL;
- xmlDoc *doc = NULL;
- zbx_vector_cq_value_t cqvs;
- zbx_vector_str_t ids;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s() clusterid:'%s'", __func__, clusterid);
-
- zbx_vector_str_create(&ids);
- zbx_vector_cq_value_create(&cqvs);
- clusterid_esc = zbx_xml_escape_dyn(clusterid);
- cq_prop = vmware_cq_prop_soap_request(cq_values, ZBX_VMWARE_SOAP_CLUSTER, clusterid, &cqvs);
-
- tmp = zbx_dsprintf(NULL, ZBX_POST_VMWARE_CLUSTER_STATUS, cq_prop, clusterid_esc);
-
- zbx_str_free(cq_prop);
- zbx_str_free(clusterid_esc);
- ret = zbx_soap_post(__func__, easyhandle, tmp, &doc, NULL, error);
- zbx_str_free(tmp);
-
- if (FAIL == ret)
+ if (SUCCEED != zbx_property_collection_init(easyhandle, ZBX_POST_VCENTER_CLUSTER, "propertyCollector",
+ __func__, &iter, &cluster_data, error))
+ {
goto out;
+ }
- *status = zbx_xml_doc_read_value(doc, ZBX_XPATH_PROP_NAME("summary.overallStatus"));
-
- if (0 != cqvs.values_num)
- vmware_service_cq_prop_value(__func__, doc, &cqvs);
+ zbx_vector_vmware_rpool_chunk_create(&rp_chunks);
+ zbx_vector_ptr_create(&cl_chunks);
- zbx_xml_read_values(doc, ZBX_XPATH_PROP_NAME("datastore") "/*", &ids);
+ if (SUCCEED != vmware_service_process_cluster_data(service, easyhandle, cluster_data, &cl_chunks, &rp_chunks,
+ alarms_data, error))
+ {
+ goto clean;
+ }
- for (i = 0; i < ids.values_num; i++)
+ while (NULL != iter->token)
{
- int j;
- zbx_vmware_datastore_t ds_cmp;
+ zbx_xml_free_doc(cluster_data);
+ cluster_data = NULL;
- ds_cmp.id = ids.values[i];
+ if (SUCCEED != zbx_property_collection_next(__func__, iter, &cluster_data, error))
+ goto clean;
- if (FAIL == (j = zbx_vector_vmware_datastore_bsearch(datastores, &ds_cmp, vmware_ds_id_compare)))
+ if (SUCCEED != vmware_service_process_cluster_data(service, easyhandle, cluster_data, &cl_chunks,
+ &rp_chunks, alarms_data, error))
{
- zabbix_log(LOG_LEVEL_DEBUG, "%s(): Datastore \"%s\" not found on cluster \"%s\".", __func__,
- ds_cmp.id, clusterid);
- continue;
+ goto clean;
}
-
- zbx_vector_str_append(dss, zbx_strdup(NULL, datastores->values[j]->uuid));
}
-out:
- zbx_vector_cq_value_destroy(&cqvs);
- zbx_vector_str_clear_ext(&ids, zbx_str_free);
- zbx_vector_str_destroy(&ids);
- zbx_xml_free_doc(doc);
- zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __func__, zbx_result_string(ret));
- return ret;
+ zbx_vector_vmware_rpool_chunk_sort(&rp_chunks, ZBX_DEFAULT_STR_PTR_COMPARE_FUNC);
-# undef ZBX_POST_VMWARE_CLUSTER_STATUS
-}
-
-/******************************************************************************
- * *
- * Purpose: creates lists of vmware cluster and resource pool objects *
- * *
- * Parameters: service - [IN] the vmware service *
- * easyhandle - [IN] the CURL handle *
- * datastores - [IN] all available Datastores *
- * cq_values - [IN/OUT] the vector with custom query entries *
- * clusters - [OUT] a pointer to the resulting clusters *
- * vector *
- * resourcepools - [OUT] a pointer to the resulting resource pool *
- * vector *
- * alarms_data - [OUT] the vector with all alarms *
- * error - [OUT] the error message in the case of failure *
- * *
- * Return value: SUCCEED - the operation has completed successfully *
- * FAIL - the operation has failed *
- * *
- ******************************************************************************/
-static int vmware_service_get_clusters_and_resourcepools(zbx_vmware_service_t *service, CURL *easyhandle,
- const zbx_vector_vmware_datastore_t *datastores, zbx_vector_cq_value_t *cq_values,
- zbx_vector_ptr_t *clusters, zbx_vector_vmware_resourcepool_t *resourcepools,
- zbx_vmware_alarms_data_t *alarms_data, char **error)
-{
- char xpath[MAX_STRING_LEN];
- int i, ret = FAIL;
- xmlDoc *cluster_data = NULL;
- zbx_vector_str_t ids, rpools_all, rpools_uniq, dss;
- zbx_vmware_cluster_t *cluster;
-
- zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
-
- zbx_vector_str_create(&ids);
- zbx_vector_str_create(&dss);
-
- if (SUCCEED != vmware_service_get_cluster_data(easyhandle, &cluster_data, error))
- goto out;
-
- zbx_xml_read_values(cluster_data, ZBX_XPATH_OBJS_BY_TYPE(ZBX_VMWARE_SOAP_CLUSTER), &ids);
- zbx_vector_ptr_reserve(clusters, (size_t)(ids.values_num + clusters->values_alloc));
-
- for (i = 0; i < ids.values_num; i++)
+ for (i = 0; i < rp_chunks.values_num; i++)
{
- char *status, *name;
-
- zbx_snprintf(xpath, sizeof(xpath), ZBX_XPATH_PROP_OBJECT_ID(ZBX_VMWARE_SOAP_CLUSTER, "[text()='%s']")
- "/" ZBX_XPATH_PROP_NAME_NODE("name"), ids.values[i]);
+ int k;
+ zbx_vmware_resourcepool_t *rpool;
+ zbx_vmware_rpool_chunk_t rp_parent, *rp_chunk = rp_chunks.values[i];
- if (NULL == (name = zbx_xml_doc_read_value(cluster_data, xpath)))
+ if (0 == rp_chunk->parent_is_rp) /* skipped the top (default) resource pool name */
continue;
- if (SUCCEED != vmware_service_get_cluster_state(easyhandle, ids.values[i], datastores, cq_values,
- &status, &dss, error))
- {
- zbx_free(name);
- goto out;
- }
+ rpool = (zbx_vmware_resourcepool_t*)zbx_malloc(NULL, sizeof(zbx_vmware_resourcepool_t));
+ rpool->id = zbx_strdup(NULL, rp_chunk->id);
+ rpool->path = zbx_strdup(NULL, rp_chunk->name);
+ rpool->vm_num = 0;
- cluster = (zbx_vmware_cluster_t *)zbx_malloc(NULL, sizeof(zbx_vmware_cluster_t));
- cluster->id = zbx_strdup(NULL, ids.values[i]);
- cluster->name = name;
- cluster->status = status;
- zbx_vector_str_create(&cluster->dss_uuid);
- zbx_vector_str_append_array(&cluster->dss_uuid, dss.values, dss.values_num);
- zbx_vector_str_clear(&dss);
- zbx_vector_str_create(&cluster->alarm_ids);
+ rp_parent.id = rp_chunk->first_parentid;
- if (FAIL == vmware_service_get_alarms_data(__func__, service, easyhandle, cluster_data, NULL,
- &cluster->alarm_ids, alarms_data, error))
+ while (FAIL != (k = zbx_vector_vmware_rpool_chunk_bsearch(&rp_chunks, &rp_parent,
+ ZBX_DEFAULT_STR_PTR_COMPARE_FUNC)))
{
- vmware_cluster_free(cluster);
- goto out;
+ zbx_vmware_rpool_chunk_t *rp_next = rp_chunks.values[k];
+
+ if (NULL != rp_next->path)
+ rpool->path = zbx_dsprintf(rpool->path, "%s/%s", rp_next->path, rpool->path);
+
+ if (0 == rp_next->parent_is_rp || NULL != rp_next->path)
+ {
+ rpool->parentid = zbx_strdup(NULL, 0 == rp_next->parent_is_rp ?
+ rp_next->first_parentid : rp_next->parentid);
+ zbx_vector_vmware_resourcepool_append(resourcepools, rpool);
+ rp_chunk->path = rpool->path;
+ rp_chunk->parentid = rpool->parentid;
+ break;
+ }
+
+ rpool->path = zbx_dsprintf(rpool->path, "%s/%s", rp_next->name, rpool->path);
+ rp_parent.id = rp_next->first_parentid;
}
- zbx_vector_ptr_append(clusters, cluster);
+ /* free rpool if it was not added to resourcepool vector */
+ if (NULL == rp_chunk->path)
+ vmware_resourcepool_free(rpool);
}
- /* Add resource pools */
-
- zbx_vector_str_create(&rpools_all);
- zbx_vector_str_create(&rpools_uniq);
- zbx_xml_read_values(cluster_data, "//*[@type='ResourcePool']", &rpools_all);
- zbx_vector_str_sort(&rpools_all, ZBX_DEFAULT_STR_COMPARE_FUNC);
- zbx_vector_str_append_array(&rpools_uniq, rpools_all.values, rpools_all.values_num);
- zbx_vector_str_uniq(&rpools_uniq, ZBX_DEFAULT_STR_COMPARE_FUNC);
- zbx_vector_vmware_resourcepool_reserve(resourcepools, (size_t)rpools_all.values_num);
+ zbx_vector_vmware_resourcepool_sort(resourcepools, ZBX_DEFAULT_STR_PTR_COMPARE_FUNC);
+ zbx_vector_ptr_reserve(clusters, (size_t)(clusters->values_alloc + cl_chunks.values_num));
- for (i = 0; i < rpools_uniq.values_num; i++)
+ for (i = cl_chunks.values_num - 1; i >= 0 ; i--)
{
- zbx_vmware_resourcepool_t *rpool;
- char *path, *parentid;
- const char *id = rpools_uniq.values[i];
+ zbx_vmware_cluster_t *cluster = (zbx_vmware_cluster_t*)(cl_chunks.values[i]);
- if (SUCCEED != vmware_service_get_resourcepool_data(cluster_data, id, &parentid, &path))
- {
- zabbix_log(LOG_LEVEL_DEBUG, "%s(): cannot find resource pool name for id:%s", __func__, id);
- continue;
- }
+ if (SUCCEED != vmware_service_get_cluster_state(easyhandle, datastores, cluster, cq_values, error))
+ goto clean;
- rpool = (zbx_vmware_resourcepool_t *)zbx_malloc(NULL, sizeof(zbx_vmware_resourcepool_t));
- rpool->id = zbx_strdup(NULL, id);
- rpool->path = path;
- rpool->parentid = parentid;
- rpool->vm_num = 0;
- zbx_vector_vmware_resourcepool_append(resourcepools, rpool);
+ zbx_vector_ptr_append(clusters, cluster);
+ zbx_vector_ptr_remove_noorder(&cl_chunks, i);
}
- zbx_vector_vmware_resourcepool_sort(resourcepools, vmware_resourcepool_compare_id);
- zbx_vector_str_clear_ext(&rpools_all, zbx_str_free);
- zbx_vector_str_destroy(&rpools_all);
- zbx_vector_str_destroy(&rpools_uniq);
-
ret = SUCCEED;
-out:
+clean:
zbx_xml_free_doc(cluster_data);
- zbx_vector_str_clear_ext(&ids, zbx_str_free);
- zbx_vector_str_destroy(&ids);
- zbx_vector_str_destroy(&dss);
+ zbx_vector_vmware_rpool_chunk_clear_ext(&rp_chunks, vmware_rp_chunk_free);
+ zbx_vector_vmware_rpool_chunk_destroy(&rp_chunks);
+ zbx_vector_ptr_clear_ext(&cl_chunks, (zbx_clean_func_t)vmware_cluster_free);
+ zbx_vector_ptr_destroy(&cl_chunks);
+out:
+ zbx_property_collection_free(iter);
zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s found cl:%d rp:%d", __func__, zbx_result_string(ret),
clusters->values_num, resourcepools->values_num);
return ret;
+# undef ZBX_POST_VCENTER_CLUSTER
}
/******************************************************************************
diff --git a/src/zabbix_server/vmware/vmware.h b/src/zabbix_server/vmware/vmware.h
index 15adb060d09..68e95685654 100644
--- a/src/zabbix_server/vmware/vmware.h
+++ b/src/zabbix_server/vmware/vmware.h
@@ -341,7 +341,6 @@ typedef struct
}
zbx_vmware_resourcepool_t;
-int vmware_resourcepool_compare_id(const void *r1, const void *r2);
ZBX_PTR_VECTOR_DECL(vmware_resourcepool, zbx_vmware_resourcepool_t *)
/* the vmware eventlog state */
diff --git a/src/zabbix_server/vmware/vmware_rest.c b/src/zabbix_server/vmware/vmware_rest.c
index 19665791ae5..78245603fda 100644
--- a/src/zabbix_server/vmware/vmware_rest.c
+++ b/src/zabbix_server/vmware/vmware_rest.c
@@ -510,8 +510,8 @@ static void vmware_service_rest_logout(CURL *easyhandle, ZBX_HTTPPAGE *page)
zbx_snprintf(tmp, sizeof(tmp),"%s/session", page->url);
if (CURLE_OK != (err = curl_easy_setopt(easyhandle, opt = CURLOPT_URL, tmp)) ||
- CURLE_OK != (err = curl_easy_setopt(easyhandle, opt = CURLOPT_CUSTOMREQUEST, "DELETE")) ||
- CURLE_OK != (err = curl_easy_setopt(easyhandle, opt = CURLOPT_POST, 0L)))
+ CURLE_OK != (err = curl_easy_setopt(easyhandle, opt = CURLOPT_POST, 0L)) ||
+ CURLE_OK != (err = curl_easy_setopt(easyhandle, opt = CURLOPT_CUSTOMREQUEST, "DELETE")))
{
zabbix_log(LOG_LEVEL_DEBUG, "%s() cannot set cURL option %d: %s.",
__func__, (int)opt, curl_easy_strerror(err));
diff --git a/templates/app/kubernetes_http/kubernetes_kubelet_http/README.md b/templates/app/kubernetes_http/kubernetes_kubelet_http/README.md
index fe39f4f53bb..198adc7d911 100644
--- a/templates/app/kubernetes_http/kubernetes_kubelet_http/README.md
+++ b/templates/app/kubernetes_http/kubernetes_kubelet_http/README.md
@@ -3,7 +3,7 @@
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor Kubernetes Controller manager by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
@@ -20,7 +20,7 @@ This template was tested on:
## Setup
-> See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/http) for basic instructions.
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/http) for basic instructions.
Internal service metrics are collected from /metrics endpoint.
Template needs to use Authorization via API token.
@@ -54,7 +54,7 @@ There are no template links in this template.
|Container memory discovery | |DEPENDENT |kube.kubelet.container.memory.cache.discovery<p>**Preprocessing**:</p><p>- PROMETHEUS_TO_JSON<p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Pods discovery | |DEPENDENT |kube.kubelet.pods.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|REST client requests discovery | |DEPENDENT |kube.kubelet.rest.requests.discovery<p>**Preprocessing**:</p><p>- PROMETHEUS_TO_JSON<p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
-|Runtime operations discovery | |DEPENDENT |kube.kubelet.runtime_operations_bucket.discovery<p>**Preprocessing**:</p><p>- PROMETHEUS_TO_JSON: `{__name__=~ "kubelet_runtime_operations_*", operation_type =~ ".*"}`</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p><p>**Overrides:**</p><p>bucket item<br> - {#TYPE} MATCHES_REGEX `buckets`<br> - ITEM_PROTOTYPE LIKE `bucket` - DISCOVER</p><p>total item<br> - {#TYPE} MATCHES_REGEX `totals`<br> - ITEM_PROTOTYPE NOT_LIKE `bucket` - DISCOVER</p> |
+|Runtime operations discovery | |DEPENDENT |kube.kubelet.runtime_operations_bucket.discovery<p>**Preprocessing**:</p><p>- PROMETHEUS_TO_JSON: `{__name__=~ "kubelet_runtime_operations_*", operation_type =~ ".*"}`</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p><p>**Overrides:**</p><p>bucket item<br> - {#TYPE} MATCHES_REGEX `buckets`<br> - ITEM_PROTOTYPE LIKE `bucket`<br> - DISCOVER</p><p>total item<br> - {#TYPE} MATCHES_REGEX `totals`<br> - ITEM_PROTOTYPE NOT_LIKE `bucket`<br> - DISCOVER</p> |
## Items collected
@@ -81,7 +81,7 @@ There are no template links in this template.
|Kubernetes |Kubernetes: Namespace [{#NAMESPACE}] Pod [{#NAME}] CPU: Load average, 10s |<p>Pods cpu load average over the last 10 seconds.</p> |DEPENDENT |kube.pod.container_cpu_load_average_10s[{#NAMESPACE}/{#NAME}]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `container_cpu_load_average_10s{pod="{#NAME}", namespace="{#NAMESPACE}"}`: `function`: `sum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
|Kubernetes |Kubernetes: Namespace [{#NAMESPACE}] Pod [{#NAME}] CPU: System seconds, total |<p>The number of cores used for system time.</p> |DEPENDENT |kube.pod.container_cpu_system_seconds_total[{#NAMESPACE}/{#NAME}]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `container_cpu_system_seconds_total{pod="{#NAME}", namespace="{#NAMESPACE}"}`: `function`: `sum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
|Kubernetes |Kubernetes: Namespace [{#NAMESPACE}] Pod [{#NAME}] CPU: User seconds, total |<p>The number of cores used for user time.</p> |DEPENDENT |kube.pod.container_cpu_user_seconds_total[{#NAMESPACE}/{#NAME}]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `container_cpu_user_seconds_total{pod="{#NAME}", namespace="{#NAMESPACE}"}`: `function`: `sum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
-|Kubernetes |Kubernetes: Namespace [{#NAMESPACE}] Pod [{#NAME}] CPU: Load average, 10s |<p>Number of HTTP requests, partitioned by status code, method, and host.</p> |DEPENDENT |kube.kubelet.rest.requests["{#CODE}", "{#HOST}", "{#METHOD}"]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `rest_client_requests_total{code="{#CODE}", host="{#HOST}", method="{#METHOD}"}`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
+|Kubernetes |Kubernetes: Host [{#HOST}] Request method [{#METHOD}] Code:[{#CODE}] |<p>Number of HTTP requests, partitioned by status code, method, and host.</p> |DEPENDENT |kube.kubelet.rest.requests["{#CODE}", "{#HOST}", "{#METHOD}"]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `rest_client_requests_total{code="{#CODE}", host="{#HOST}", method="{#METHOD}"}`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Kubernetes |Kubernetes: Namespace [{#NAMESPACE}] Pod [{#POD}] Container [{#CONTAINER}]: Memory page cache |<p>Number of bytes of page cache memory.</p> |DEPENDENT |kube.kubelet.container.memory.cache["{#CONTAINER}", "{#NAMESPACE}", "{#POD}"]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `container_memory_cache{container="{#CONTAINER}", namespace="{#NAMESPACE}", pod="{#POD}"}`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Kubernetes |Kubernetes: Namespace [{#NAMESPACE}] Pod [{#POD}] Container [{#CONTAINER}]: Memory max usage |<p>Maximum memory usage recorded in bytes.</p> |DEPENDENT |kube.kubelet.container.memory.max_usage["{#CONTAINER}", "{#NAMESPACE}", "{#POD}"]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `container_memory_max_usage_bytes{container="{#CONTAINER}", namespace="{#NAMESPACE}", pod="{#POD}"}`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Kubernetes |Kubernetes: Namespace [{#NAMESPACE}] Pod [{#POD}] Container [{#CONTAINER}]: RSS |<p>Size of RSS in bytes.</p> |DEPENDENT |kube.kubelet.container.memory.rss["{#CONTAINER}", "{#NAMESPACE}", "{#POD}"]<p>**Preprocessing**:</p><p>- PROMETHEUS_PATTERN: `container_memory_rss{container="{#CONTAINER}", namespace="{#NAMESPACE}", pod="{#POD}"}`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
@@ -96,7 +96,7 @@ There are no template links in this template.
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).
diff --git a/templates/app/kubernetes_http/kubernetes_kubelet_http/template_kubernetes_kubelet.yaml b/templates/app/kubernetes_http/kubernetes_kubelet_http/template_kubernetes_kubelet.yaml
index 71308f66177..935b56ab4bc 100644
--- a/templates/app/kubernetes_http/kubernetes_kubelet_http/template_kubernetes_kubelet.yaml
+++ b/templates/app/kubernetes_http/kubernetes_kubelet_http/template_kubernetes_kubelet.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:33:38Z'
+ version: '6.4'
+ date: '2022-10-21T14:38:22Z'
template_groups:
-
uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
@@ -18,7 +18,7 @@ zabbix_export:
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Applications
@@ -649,7 +649,7 @@ zabbix_export:
item_prototypes:
-
uuid: c569ce73bfb44098be3ceb8d016e3d24
- name: 'Kubernetes: Namespace [{#NAMESPACE}] Pod [{#NAME}] CPU: Load average, 10s'
+ name: 'Kubernetes: Host [{#HOST}] Request method [{#METHOD}] Code:[{#CODE}]'
type: DEPENDENT
key: 'kube.kubelet.rest.requests["{#CODE}", "{#HOST}", "{#METHOD}"]'
delay: '0'
@@ -923,7 +923,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: bucket
- status: ENABLED
discover: DISCOVER
-
name: 'total item'
@@ -939,7 +938,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: NOT_LIKE
value: bucket
- status: ENABLED
discover: DISCOVER
tags:
-
diff --git a/templates/app/kubernetes_http/kubernetes_state_http/README.md b/templates/app/kubernetes_http/kubernetes_state_http/README.md
index 1066876a235..8da0f121d8a 100644
--- a/templates/app/kubernetes_http/kubernetes_state_http/README.md
+++ b/templates/app/kubernetes_http/kubernetes_state_http/README.md
@@ -227,7 +227,7 @@ There are no template links in this template.
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).
diff --git a/templates/app/kubernetes_http/kubernetes_state_http/template_kubernetes_state.yaml b/templates/app/kubernetes_http/kubernetes_state_http/template_kubernetes_state.yaml
index dfdc2745a3e..556c14fc855 100644
--- a/templates/app/kubernetes_http/kubernetes_state_http/template_kubernetes_state.yaml
+++ b/templates/app/kubernetes_http/kubernetes_state_http/template_kubernetes_state.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-10-18T08:41:16Z'
+ date: '2022-10-21T14:35:40Z'
template_groups:
-
uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
@@ -636,13 +636,19 @@ zabbix_export:
result.response.items.forEach(function (ep) {
if (ep.metadata.name === Kube.params.state_endpoint_name && Array.isArray(ep.subsets)) {
if (typeof ep.subsets[0].addresses !== 'undefined') {
- var subset = ep.subsets[0];
-
- endpoint = {
- address: subset.addresses[0].ip,
- port: port = subset.ports.filter(function (port) {
+ var port, addr
+ ep.subsets.forEach(function(subset){
+ var lp = subset.ports.filter(function (port) {
return port.name === 'http';
- })[0].port || 8080
+ })
+ if (lp.length) {
+ port = lp[0].port
+ addr = subset.addresses[0].ip
+ }
+ })
+ endpoint = {
+ address: addr || ep.subsets[0].addresses[0].ip,
+ port: port || 8080
}
}
}
diff --git a/templates/app/opnsense_snmp/README.md b/templates/app/opnsense_snmp/README.md
index b1a3176a6b7..7a684258d6b 100644
--- a/templates/app/opnsense_snmp/README.md
+++ b/templates/app/opnsense_snmp/README.md
@@ -1,9 +1,9 @@
-# OPNsense SNMP
+# OPNsense by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
Template for monitoring OPNsense by SNMP
This template was tested on:
@@ -115,21 +115,21 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/OPNsense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/OPNsense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/OPNsense SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])) and last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/OPNsense SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/OPNsense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/OPNsense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/OPNsense SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])) and last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/OPNsense SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
-|OPNsense: Packet filter is not running |<p>Please check PF status.</p> |`last(/OPNsense SNMP/opnsense.pf.status)<>1` |HIGH | |
-|OPNsense: State table usage is high |<p>Please check the number of connections.</p> |`min(/OPNsense SNMP/opnsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}` |WARNING | |
-|OPNsense: Source tracking table usage is high |<p>Please check the number of sticky connections.</p> |`min(/OPNsense SNMP/opnsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}` |WARNING | |
-|OPNsense: DHCP server is not running |<p>Please check DHCP server settings.</p> |`last(/OPNsense SNMP/opnsense.dhcpd.status)=0` |AVERAGE | |
-|OPNsense: DNS server is not running |<p>Please check DNS server settings.</p> |`last(/OPNsense SNMP/opnsense.dns.status)=0` |AVERAGE | |
-|OPNsense: Web server is not running |<p>Please check lighttpd service status.</p> |`last(/OPNsense SNMP/opnsense.lighttpd.status)=0` |AVERAGE | |
-|OPNsense: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/OPNsense SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/OPNsense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/OPNsense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/OPNsense by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/OPNsense by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/OPNsense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/OPNsense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/OPNsense by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/OPNsense by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
+|OPNsense: Packet filter is not running |<p>Please check PF status.</p> |`last(/OPNsense by SNMP/opnsense.pf.status)<>1` |HIGH | |
+|OPNsense: State table usage is high |<p>Please check the number of connections.</p> |`min(/OPNsense by SNMP/opnsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}` |WARNING | |
+|OPNsense: Source tracking table usage is high |<p>Please check the number of sticky connections.</p> |`min(/OPNsense by SNMP/opnsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}` |WARNING | |
+|OPNsense: DHCP server is not running |<p>Please check DHCP server settings.</p> |`last(/OPNsense by SNMP/opnsense.dhcpd.status)=0` |AVERAGE | |
+|OPNsense: DNS server is not running |<p>Please check DNS server settings.</p> |`last(/OPNsense by SNMP/opnsense.dns.status)=0` |AVERAGE | |
+|OPNsense: Web server is not running |<p>Please check lighttpd service status.</p> |`last(/OPNsense by SNMP/opnsense.lighttpd.status)=0` |AVERAGE | |
+|OPNsense: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/OPNsense by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/app/opnsense_snmp/template_app_opnsense_snmp.yaml b/templates/app/opnsense_snmp/template_app_opnsense_snmp.yaml
index 2e828854efa..ea6ad96c8cc 100644
--- a/templates/app/opnsense_snmp/template_app_opnsense_snmp.yaml
+++ b/templates/app/opnsense_snmp/template_app_opnsense_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-17T11:03:51Z'
+ date: '2022-10-27T14:29:36Z'
template_groups:
-
uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 0c94915edb4c41bf8c627dddb4f68f5a
- template: 'OPNsense SNMP'
- name: 'OPNsense SNMP'
+ template: 'OPNsense by SNMP'
+ name: 'OPNsense by SNMP'
description: |
Template for monitoring OPNsense by SNMP
Setup:
@@ -59,7 +59,7 @@ zabbix_export:
triggers:
-
uuid: fba46d0094bc4f0e98537ceca27dd6bc
- expression: 'last(/OPNsense SNMP/opnsense.dhcpd.status)=0'
+ expression: 'last(/OPNsense by SNMP/opnsense.dhcpd.status)=0'
name: 'OPNsense: DHCP server is not running'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -94,7 +94,7 @@ zabbix_export:
triggers:
-
uuid: 0e2cbbbd999d476a84cb93a9b7ef42d6
- expression: 'last(/OPNsense SNMP/opnsense.dns.status)=0'
+ expression: 'last(/OPNsense by SNMP/opnsense.dns.status)=0'
name: 'OPNsense: DNS server is not running'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -129,7 +129,7 @@ zabbix_export:
triggers:
-
uuid: 7864dec91012436f89b728019bf99fda
- expression: 'last(/OPNsense SNMP/opnsense.lighttpd.status)=0'
+ expression: 'last(/OPNsense by SNMP/opnsense.lighttpd.status)=0'
name: 'OPNsense: Web server is not running'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -286,7 +286,7 @@ zabbix_export:
triggers:
-
uuid: 42d9a74d984d4ac2bf778be74cd8588f
- expression: 'last(/OPNsense SNMP/opnsense.pf.status)<>1'
+ expression: 'last(/OPNsense by SNMP/opnsense.pf.status)<>1'
name: 'OPNsense: Packet filter is not running'
opdata: 'Current running state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -354,7 +354,7 @@ zabbix_export:
triggers:
-
uuid: d1f03d136f30401b8f70cbc3196446ee
- expression: 'min(/OPNsense SNMP/opnsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}'
+ expression: 'min(/OPNsense by SNMP/opnsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}'
name: 'OPNsense: Source tracking table usage is high'
event_name: 'OPNsense: Source tracking table usage more than {$SOURCE.TRACKING.TABLE.UTIL.MAX}.'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -409,7 +409,7 @@ zabbix_export:
triggers:
-
uuid: f31e301def314e9b81ee0f8a26dc1e37
- expression: 'min(/OPNsense SNMP/opnsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}'
+ expression: 'min(/OPNsense by SNMP/opnsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}'
name: 'OPNsense: State table usage is high'
event_name: 'OPNsense: State table usage more than {$STATE.TABLE.UTIL.MAX}.'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -443,7 +443,7 @@ zabbix_export:
triggers:
-
uuid: f2cb074945624a8184ceb1ab3d3b2f52
- expression: 'max(/OPNsense SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/OPNsense by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'OPNsense: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -700,9 +700,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5a58e9ffee1f45c4a4f859c1f0b7c2dc
- expression: 'min(/OPNsense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/OPNsense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/OPNsense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/OPNsense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate'
event_name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -711,7 +711,7 @@ zabbix_export:
dependencies:
-
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1051,9 +1051,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9d6dafdae44343f1a4e0934ec44da7b3
- expression: 'min(/OPNsense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/OPNsense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/OPNsense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/OPNsense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate'
event_name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -1062,7 +1062,7 @@ zabbix_export:
dependencies:
-
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1310,7 +1310,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4a189b213b8e40589be007367361d70e
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1355,21 +1355,21 @@ zabbix_export:
-
uuid: e351276dfe6a43db88bdb437d2ef4a8e
expression: |
- change(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/OPNsense SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/OPNsense by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1377,7 +1377,7 @@ zabbix_export:
dependencies:
-
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1385,10 +1385,10 @@ zabbix_export:
-
uuid: d9a23c4dee9c4fd0862748923d656023
expression: |
- (avg(/OPNsense SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/OPNsense by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/OPNsense SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/OPNsense by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage'
event_name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1397,7 +1397,7 @@ zabbix_export:
dependencies:
-
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1405,10 +1405,10 @@ zabbix_export:
-
uuid: 4c120cefd9dd4f8aa257023610b3ed19
expression: |
- (avg(/OPNsense SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/OPNsense by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/OPNsense SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/OPNsense by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/OPNsense by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage'
event_name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1417,7 +1417,7 @@ zabbix_export:
dependencies:
-
name: 'OPNsense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/OPNsense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1430,53 +1430,53 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.pass.v4.bps[{#SNMPINDEX}]'
-
sortorder: '1'
color: F63100
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.block.v4.bps[{#SNMPINDEX}]'
-
sortorder: '2'
color: 2774A4
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.pass.v6.bps[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.block.v6.bps[{#SNMPINDEX}]'
-
sortorder: '4'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.pass.v4.pps[{#SNMPINDEX}]'
-
sortorder: '5'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.block.v4.pps[{#SNMPINDEX}]'
-
sortorder: '6'
color: AC8C14
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.pass.v6.pps[{#SNMPINDEX}]'
-
sortorder: '7'
color: 611F27
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.block.v6.pps[{#SNMPINDEX}]'
-
uuid: ab44b919a9d94955b27bf9a4499e4bf5
@@ -1486,42 +1486,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: 21b603de7402416fb2f472e56010f5f6
@@ -1530,53 +1530,53 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.pass.v4.bps[{#SNMPINDEX}]'
-
sortorder: '1'
color: F63100
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.block.v4.bps[{#SNMPINDEX}]'
-
sortorder: '2'
color: 2774A4
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.pass.v6.bps[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.block.v6.bps[{#SNMPINDEX}]'
-
sortorder: '4'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.pass.v4.pps[{#SNMPINDEX}]'
-
sortorder: '5'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.block.v4.pps[{#SNMPINDEX}]'
-
sortorder: '6'
color: AC8C14
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.pass.v6.pps[{#SNMPINDEX}]'
-
sortorder: '7'
color: 611F27
yaxisside: RIGHT
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: 'net.if.out.block.v6.pps[{#SNMPINDEX}]'
tags:
-
@@ -2589,35 +2589,35 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: opnsense.packets.match
-
sortorder: '1'
color: 2774A4
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: opnsense.packets.bad.offset
-
sortorder: '2'
color: F63100
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: opnsense.packets.fragment
-
sortorder: '3'
color: A54F10
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: opnsense.packets.short
-
sortorder: '4'
color: FC6EA3
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: opnsense.packets.normalize
-
sortorder: '5'
color: 6C59DC
item:
- host: 'OPNsense SNMP'
+ host: 'OPNsense by SNMP'
key: opnsense.packets.mem.drop
diff --git a/templates/app/pfsense_snmp/README.md b/templates/app/pfsense_snmp/README.md
index ab74e4393c4..00467a0d56d 100644
--- a/templates/app/pfsense_snmp/README.md
+++ b/templates/app/pfsense_snmp/README.md
@@ -1,9 +1,9 @@
-# PFSense SNMP
+# PFSense by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
Template for monitoring pfSense by SNMP
This template was tested on:
@@ -12,7 +12,7 @@ This template was tested on:
## Setup
-> See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
1. Import template into Zabbix
2. Enable SNMP daemon at Services in pfSense web interface https://docs.netgate.com/pfsense/en/latest/services/snmp.html
@@ -110,21 +110,21 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/PFSense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/PFSense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/PFSense SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])) and last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/PFSense SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/PFSense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/PFSense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/PFSense SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])) and last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/PFSense SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|PFSense: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
-|PFSense: Packet filter is not running |<p>Please check PF status.</p> |`last(/PFSense SNMP/pfsense.pf.status)<>1` |HIGH | |
-|PFSense: State table usage is high |<p>Please check the number of connections https://docs.netgate.com/pfsense/en/latest/config/advanced-firewall-nat.html#config-advanced-firewall-maxstates</p> |`min(/PFSense SNMP/pfsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}` |WARNING | |
-|PFSense: Source tracking table usage is high |<p>Please check the number of sticky connections https://docs.netgate.com/pfsense/en/latest/monitoring/status/firewall-states-sources.html</p> |`min(/PFSense SNMP/pfsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}` |WARNING | |
-|PFSense: DHCP server is not running |<p>Please check DHCP server settings https://docs.netgate.com/pfsense/en/latest/services/dhcp/index.html</p> |`last(/PFSense SNMP/pfsense.dhcpd.status)=0` |AVERAGE | |
-|PFSense: DNS server is not running |<p>Please check DNS server settings https://docs.netgate.com/pfsense/en/latest/services/dns/index.html</p> |`last(/PFSense SNMP/pfsense.dns.status)=0` |AVERAGE | |
-|PFSense: Web server is not running |<p>Please check nginx service status.</p> |`last(/PFSense SNMP/pfsense.nginx.status)=0` |AVERAGE | |
-|PFSense: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/PFSense SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/PFSense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/PFSense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/PFSense by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/PFSense by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/PFSense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/PFSense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|PFSense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/PFSense by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/PFSense by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|PFSense: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
+|PFSense: Packet filter is not running |<p>Please check PF status.</p> |`last(/PFSense by SNMP/pfsense.pf.status)<>1` |HIGH | |
+|PFSense: State table usage is high |<p>Please check the number of connections https://docs.netgate.com/pfsense/en/latest/config/advanced-firewall-nat.html#config-advanced-firewall-maxstates</p> |`min(/PFSense by SNMP/pfsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}` |WARNING | |
+|PFSense: Source tracking table usage is high |<p>Please check the number of sticky connections https://docs.netgate.com/pfsense/en/latest/monitoring/status/firewall-states-sources.html</p> |`min(/PFSense by SNMP/pfsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}` |WARNING | |
+|PFSense: DHCP server is not running |<p>Please check DHCP server settings https://docs.netgate.com/pfsense/en/latest/services/dhcp/index.html</p> |`last(/PFSense by SNMP/pfsense.dhcpd.status)=0` |AVERAGE | |
+|PFSense: DNS server is not running |<p>Please check DNS server settings https://docs.netgate.com/pfsense/en/latest/services/dns/index.html</p> |`last(/PFSense by SNMP/pfsense.dns.status)=0` |AVERAGE | |
+|PFSense: Web server is not running |<p>Please check nginx service status.</p> |`last(/PFSense by SNMP/pfsense.nginx.status)=0` |AVERAGE | |
+|PFSense: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/PFSense by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/app/pfsense_snmp/template_app_pfsense_snmp.yaml b/templates/app/pfsense_snmp/template_app_pfsense_snmp.yaml
index 44cd017f366..d3cd232ac49 100644
--- a/templates/app/pfsense_snmp/template_app_pfsense_snmp.yaml
+++ b/templates/app/pfsense_snmp/template_app_pfsense_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-08T11:23:14Z'
+ version: '6.4'
+ date: '2022-10-27T14:28:41Z'
template_groups:
-
uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 16f281aeb8904d3db8b66dda94611fcc
- template: 'PFSense SNMP'
- name: 'PFSense SNMP'
+ template: 'PFSense by SNMP'
+ name: 'PFSense by SNMP'
description: |
Template for monitoring pfSense by SNMP
Setup:
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 80fc3672290d45d49c250ccc120f3606
- expression: 'last(/PFSense SNMP/pfsense.dhcpd.status)=0'
+ expression: 'last(/PFSense by SNMP/pfsense.dhcpd.status)=0'
name: 'PFSense: DHCP server is not running'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -88,7 +88,7 @@ zabbix_export:
triggers:
-
uuid: 67b862f6aa3a4833af44d513aad517b5
- expression: 'last(/PFSense SNMP/pfsense.dns.status)=0'
+ expression: 'last(/PFSense by SNMP/pfsense.dns.status)=0'
name: 'PFSense: DNS server is not running'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -123,7 +123,7 @@ zabbix_export:
triggers:
-
uuid: 9f7a47055ee64edcbb70b047a35f7774
- expression: 'last(/PFSense SNMP/pfsense.nginx.status)=0'
+ expression: 'last(/PFSense by SNMP/pfsense.nginx.status)=0'
name: 'PFSense: Web server is not running'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -280,7 +280,7 @@ zabbix_export:
triggers:
-
uuid: 4a7ff4c437054ce88c6c069ffcb6434f
- expression: 'last(/PFSense SNMP/pfsense.pf.status)<>1'
+ expression: 'last(/PFSense by SNMP/pfsense.pf.status)<>1'
name: 'PFSense: Packet filter is not running'
opdata: 'Current running state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -348,7 +348,7 @@ zabbix_export:
triggers:
-
uuid: 7983ee28646d4327ae0814c88c7b213f
- expression: 'min(/PFSense SNMP/pfsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}'
+ expression: 'min(/PFSense by SNMP/pfsense.source.tracking.table.pused,#3)>{$SOURCE.TRACKING.TABLE.UTIL.MAX}'
name: 'PFSense: Source tracking table usage is high'
event_name: 'PFSense: Source tracking table usage more than {$SOURCE.TRACKING.TABLE.UTIL.MAX}.'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -403,7 +403,7 @@ zabbix_export:
triggers:
-
uuid: ce0e7dec597e4148abd9b699c787decd
- expression: 'min(/PFSense SNMP/pfsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}'
+ expression: 'min(/PFSense by SNMP/pfsense.state.table.pused,#3)>{$STATE.TABLE.UTIL.MAX}'
name: 'PFSense: State table usage is high'
event_name: 'PFSense: State table usage more than {$STATE.TABLE.UTIL.MAX}.'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -437,7 +437,7 @@ zabbix_export:
triggers:
-
uuid: d06bdb79a48c438798286a89680eb3e1
- expression: 'max(/PFSense SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/PFSense by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'PFSense: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -694,9 +694,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f5cbc2b7d91f4fa5aab8eb96d8a0550f
- expression: 'min(/PFSense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/PFSense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/PFSense SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/PFSense by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate'
event_name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -705,7 +705,7 @@ zabbix_export:
dependencies:
-
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1045,9 +1045,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5fb5f37490d04dbc8e0553c6aa881547
- expression: 'min(/PFSense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/PFSense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/PFSense SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/PFSense by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate'
event_name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -1056,7 +1056,7 @@ zabbix_export:
dependencies:
-
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1304,7 +1304,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d4392162d62541aeb148718ddd7f5d57
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1349,21 +1349,21 @@ zabbix_export:
-
uuid: eb3090605ba14407a91736ac9768d65a
expression: |
- change(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/PFSense SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/PFSense by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1371,7 +1371,7 @@ zabbix_export:
dependencies:
-
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1379,10 +1379,10 @@ zabbix_export:
-
uuid: 90c99a9c4ce44b3ca929c4b3200286fb
expression: |
- (avg(/PFSense SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/PFSense by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/PFSense SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/PFSense by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage'
event_name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1391,7 +1391,7 @@ zabbix_export:
dependencies:
-
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1399,10 +1399,10 @@ zabbix_export:
-
uuid: 6be52ce31bab4250b421de1bfe84263c
expression: |
- (avg(/PFSense SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/PFSense by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/PFSense SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/PFSense by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/PFSense by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage'
event_name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1411,7 +1411,7 @@ zabbix_export:
dependencies:
-
name: 'PFSense: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/PFSense by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1424,53 +1424,53 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.pass.v4.bps[{#SNMPINDEX}]'
-
sortorder: '1'
color: F63100
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.block.v4.bps[{#SNMPINDEX}]'
-
sortorder: '2'
color: 2774A4
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.pass.v6.bps[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.block.v6.bps[{#SNMPINDEX}]'
-
sortorder: '4'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.pass.v4.pps[{#SNMPINDEX}]'
-
sortorder: '5'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.block.v4.pps[{#SNMPINDEX}]'
-
sortorder: '6'
color: AC8C14
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.pass.v6.pps[{#SNMPINDEX}]'
-
sortorder: '7'
color: 611F27
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.block.v6.pps[{#SNMPINDEX}]'
-
uuid: 3acc01b7ad11441ca2ea4dab13274efa
@@ -1480,42 +1480,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: 58b7aa7618274c9e9285d4c0b63c2ca8
@@ -1524,53 +1524,53 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.pass.v4.bps[{#SNMPINDEX}]'
-
sortorder: '1'
color: F63100
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.block.v4.bps[{#SNMPINDEX}]'
-
sortorder: '2'
color: 2774A4
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.pass.v6.bps[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.block.v6.bps[{#SNMPINDEX}]'
-
sortorder: '4'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.pass.v4.pps[{#SNMPINDEX}]'
-
sortorder: '5'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.block.v4.pps[{#SNMPINDEX}]'
-
sortorder: '6'
color: AC8C14
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.pass.v6.pps[{#SNMPINDEX}]'
-
sortorder: '7'
color: 611F27
yaxisside: RIGHT
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: 'net.if.out.block.v6.pps[{#SNMPINDEX}]'
tags:
-
@@ -2583,35 +2583,35 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: pfsense.packets.match
-
sortorder: '1'
color: 2774A4
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: pfsense.packets.bad.offset
-
sortorder: '2'
color: F63100
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: pfsense.packets.fragment
-
sortorder: '3'
color: A54F10
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: pfsense.packets.short
-
sortorder: '4'
color: FC6EA3
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: pfsense.packets.normalize
-
sortorder: '5'
color: 6C59DC
item:
- host: 'PFSense SNMP'
+ host: 'PFSense by SNMP'
key: pfsense.packets.mem.drop
diff --git a/templates/app/rabbitmq_agent/template_app_rabbitmq_agent.yaml b/templates/app/rabbitmq_agent/template_app_rabbitmq_agent.yaml
index bff4740c842..dedb1a44a40 100644
--- a/templates/app/rabbitmq_agent/template_app_rabbitmq_agent.yaml
+++ b/templates/app/rabbitmq_agent/template_app_rabbitmq_agent.yaml
@@ -1099,8 +1099,6 @@ zabbix_export:
name: 'RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON}'
key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"]'
history: 7d
- username: '{$RABBITMQ.API.USER}'
- password: '{$RABBITMQ.API.PASSWORD}'
description: 'Responds a 200 OK if there are no alarms in effect in the cluster, otherwise responds with a 503 Service Unavailable.'
valuemap:
name: 'RabbitMQ healthcheck'
@@ -1122,9 +1120,6 @@ zabbix_export:
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 3h
- url: '{$RABBITMQ.API.SCHEME}://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/health/checks/alarms'
- status_codes: '200,503,404'
- retrieve_mode: HEADERS
tags:
-
tag: component
@@ -1992,8 +1987,6 @@ zabbix_export:
name: 'RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON}'
key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/certificate-expiration/1/months{#SINGLETON}"]'
history: 7d
- username: '{$RABBITMQ.API.USER}'
- password: '{$RABBITMQ.API.PASSWORD}'
description: 'Checks the expiration date on the certificates for every listener configured to use TLS. Responds a 200 OK if all certificates are valid (have not expired), otherwise responds with a 503 Service Unavailable.'
valuemap:
name: 'RabbitMQ healthcheck'
@@ -2015,8 +2008,6 @@ zabbix_export:
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 3h
- status_codes: '200,503,404'
- retrieve_mode: HEADERS
tags:
-
tag: component
@@ -2041,8 +2032,6 @@ zabbix_export:
name: 'RabbitMQ: Healthcheck: local alarms in effect on this node{#SINGLETON}'
key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/local-alarms{#SINGLETON}"]'
history: 7d
- username: '{$RABBITMQ.API.USER}'
- password: '{$RABBITMQ.API.PASSWORD}'
description: 'Responds a 200 OK if there are no local alarms in effect on the target node, otherwise responds with a 503 Service Unavailable.'
valuemap:
name: 'RabbitMQ healthcheck'
@@ -2064,8 +2053,6 @@ zabbix_export:
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 3h
- status_codes: '200,503,404'
- retrieve_mode: HEADERS
tags:
-
tag: component
@@ -2090,8 +2077,6 @@ zabbix_export:
name: 'RabbitMQ: Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON}'
key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-mirror-sync-critical{#SINGLETON}"]'
history: 7d
- username: '{$RABBITMQ.API.USER}'
- password: '{$RABBITMQ.API.PASSWORD}'
description: 'Checks if there are classic mirrored queues without synchronized mirrors online (queues that would potentially lose data if the target node is shut down). Responds a 200 OK if there are no such classic mirrored queues, otherwise responds with a 503 Service Unavailable.'
valuemap:
name: 'RabbitMQ healthcheck'
@@ -2113,8 +2098,6 @@ zabbix_export:
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 3h
- status_codes: '200,503,404'
- retrieve_mode: HEADERS
tags:
-
tag: component
@@ -2139,8 +2122,6 @@ zabbix_export:
name: 'RabbitMQ: Healthcheck: queues with minimum online quorum{#SINGLETON}'
key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-quorum-critical{#SINGLETON}"]'
history: 7d
- username: '{$RABBITMQ.API.USER}'
- password: '{$RABBITMQ.API.PASSWORD}'
description: 'Checks if there are quorum queues with minimum online quorum (queues that would lose their quorum and availability if the target node is shut down). Responds a 200 OK if there are no such quorum queues, otherwise responds with a 503 Service Unavailable.'
valuemap:
name: 'RabbitMQ healthcheck'
@@ -2162,8 +2143,6 @@ zabbix_export:
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 3h
- status_codes: '200,503,404'
- retrieve_mode: HEADERS
tags:
-
tag: component
@@ -2188,8 +2167,6 @@ zabbix_export:
name: 'RabbitMQ: Healthcheck: virtual hosts on this node{#SINGLETON}'
key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/virtual-hosts{#SINGLETON}"]'
history: 7d
- username: '{$RABBITMQ.API.USER}'
- password: '{$RABBITMQ.API.PASSWORD}'
description: 'Responds a 200 OK if all virtual hosts and running on the target node, otherwise responds with a 503 Service Unavailable.'
valuemap:
name: 'RabbitMQ healthcheck'
@@ -2211,8 +2188,6 @@ zabbix_export:
type: DISCARD_UNCHANGED_HEARTBEAT
parameters:
- 3h
- status_codes: '200,503,404'
- retrieve_mode: HEADERS
tags:
-
tag: component
diff --git a/templates/app/squid_snmp/README.md b/templates/app/squid_snmp/README.md
index 83c1699cbaf..32ee1ac64f2 100644
--- a/templates/app/squid_snmp/README.md
+++ b/templates/app/squid_snmp/README.md
@@ -1,9 +1,9 @@
-# Squid SNMP
+# Squid by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
This template was tested on:
@@ -11,7 +11,7 @@ This template was tested on:
## Setup
-> See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
### Setup Squid
Enable SNMP support following [official documentation](https://wiki.squid-cache.org/Features/Snmp).
@@ -23,11 +23,11 @@ snmp_access allow <zbx_acl_name> <zabbix_server_ip>
```
### Setup Zabbix
-1\. [Import](https://www.zabbix.com/documentation/6.2/manual/xml_export_import/templates) the template [template_app_squid_snmp.yaml](template_app_squid_snmp.yaml) into Zabbix.
+1\. [Import](https://www.zabbix.com/documentation/6.4/manual/xml_export_import/templates) the template [template_app_squid_snmp.yaml](template_app_squid_snmp.yaml) into Zabbix.
2\. Set values for {$SQUID.SNMP.COMMUNITY}, {$SQUID.SNMP.PORT} and {$SQUID.HTTP.PORT} as configured in squid.conf.
-3\. [Link](https://www.zabbix.com/documentation/6.2/manual/config/templates/linking) the imported template to a host with Squid.
+3\. [Link](https://www.zabbix.com/documentation/6.4/manual/config/templates/linking) the imported template to a host with Squid.
4\. Add SNMPv2 interface to Squid host. Set **Port** as {$SQUID.SNMP.PORT} and **SNMP community** as {$SQUID.SNMP.COMMUNITY}.
@@ -116,17 +116,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Squid: Port {$SQUID.HTTP.PORT} is down |<p>-</p> |`last(/Squid SNMP/net.tcp.service[tcp,,{$SQUID.HTTP.PORT}])=0` |AVERAGE |<p>Manual close: YES</p> |
-|Squid: Squid has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/Squid SNMP/squid[cacheUptime])<10m` |INFO |<p>Manual close: YES</p> |
-|Squid: Squid version has been changed |<p>Squid version has changed. Ack to close.</p> |`last(/Squid SNMP/squid[cacheVersionId],#1)<>last(/Squid SNMP/squid[cacheVersionId],#2) and length(last(/Squid SNMP/squid[cacheVersionId]))>0` |INFO |<p>Manual close: YES</p> |
-|Squid: Swap usage is more than low watermark |<p>-</p> |`last(/Squid SNMP/squid[cacheCurrentSwapSize])>last(/Squid SNMP/squid[cacheSwapLowWM])*last(/Squid SNMP/squid[cacheSwapMaxSize])/100` |WARNING | |
-|Squid: Swap usage is more than high watermark |<p>-</p> |`last(/Squid SNMP/squid[cacheCurrentSwapSize])>last(/Squid SNMP/squid[cacheSwapHighWM])*last(/Squid SNMP/squid[cacheSwapMaxSize])/100` |HIGH | |
-|Squid: Squid is running out of file descriptors |<p>-</p> |`last(/Squid SNMP/squid[cacheCurrentUnusedFDescrCnt])<{$SQUID.FILE.DESC.WARN.MIN}` |WARNING | |
-|Squid: High sys page faults rate |<p>-</p> |`avg(/Squid SNMP/squid[cacheSysPageFaults],5m)>avg(/Squid SNMP/squid[cacheProtoClientHttpRequests],5m)/100*{$SQUID.PAGE.FAULT.WARN}` |WARNING | |
+|Squid: Port {$SQUID.HTTP.PORT} is down |<p>-</p> |`last(/Squid by SNMP/net.tcp.service[tcp,,{$SQUID.HTTP.PORT}])=0` |AVERAGE |<p>Manual close: YES</p> |
+|Squid: Squid has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/Squid by SNMP/squid[cacheUptime])<10m` |INFO |<p>Manual close: YES</p> |
+|Squid: Squid version has been changed |<p>Squid version has changed. Ack to close.</p> |`last(/Squid by SNMP/squid[cacheVersionId],#1)<>last(/Squid by SNMP/squid[cacheVersionId],#2) and length(last(/Squid by SNMP/squid[cacheVersionId]))>0` |INFO |<p>Manual close: YES</p> |
+|Squid: Swap usage is more than low watermark |<p>-</p> |`last(/Squid by SNMP/squid[cacheCurrentSwapSize])>last(/Squid by SNMP/squid[cacheSwapLowWM])*last(/Squid by SNMP/squid[cacheSwapMaxSize])/100` |WARNING | |
+|Squid: Swap usage is more than high watermark |<p>-</p> |`last(/Squid by SNMP/squid[cacheCurrentSwapSize])>last(/Squid by SNMP/squid[cacheSwapHighWM])*last(/Squid by SNMP/squid[cacheSwapMaxSize])/100` |HIGH | |
+|Squid: Squid is running out of file descriptors |<p>-</p> |`last(/Squid by SNMP/squid[cacheCurrentUnusedFDescrCnt])<{$SQUID.FILE.DESC.WARN.MIN}` |WARNING | |
+|Squid: High sys page faults rate |<p>-</p> |`avg(/Squid by SNMP/squid[cacheSysPageFaults],5m)>avg(/Squid by SNMP/squid[cacheProtoClientHttpRequests],5m)/100*{$SQUID.PAGE.FAULT.WARN}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/409339-discussion-thread-for-official-zabbix-template-squid).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/409339-discussion-thread-for-official-zabbix-template-squid).
diff --git a/templates/app/squid_snmp/template_app_squid_snmp.yaml b/templates/app/squid_snmp/template_app_squid_snmp.yaml
index 38c1bee2cdd..064a016f4f9 100644
--- a/templates/app/squid_snmp/template_app_squid_snmp.yaml
+++ b/templates/app/squid_snmp/template_app_squid_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:45Z'
+ version: '6.4'
+ date: '2022-10-27T14:30:53Z'
template_groups:
-
uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
@@ -8,14 +8,14 @@ zabbix_export:
templates:
-
uuid: 8e5236f799b347a8ae90a979198be85e
- template: 'Squid SNMP'
- name: 'Squid SNMP'
+ template: 'Squid by SNMP'
+ name: 'Squid by SNMP'
description: |
Template for monitoring Squid caching proxy via SNMP
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/409339-discussion-thread-for-official-zabbix-template-squid
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Applications
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 7e0f0a9e8a9d4f6193946e4f8cd4a2e3
- expression: 'last(/Squid SNMP/net.tcp.service[tcp,,{$SQUID.HTTP.PORT}])=0'
+ expression: 'last(/Squid by SNMP/net.tcp.service[tcp,,{$SQUID.HTTP.PORT}])=0'
name: 'Squid: Port {$SQUID.HTTP.PORT} is down'
priority: AVERAGE
manual_close: 'YES'
@@ -169,7 +169,7 @@ zabbix_export:
triggers:
-
uuid: 40c41c87e46443f886506da5e580657e
- expression: 'last(/Squid SNMP/squid[cacheCurrentUnusedFDescrCnt])<{$SQUID.FILE.DESC.WARN.MIN}'
+ expression: 'last(/Squid by SNMP/squid[cacheCurrentUnusedFDescrCnt])<{$SQUID.FILE.DESC.WARN.MIN}'
name: 'Squid: Squid is running out of file descriptors'
event_name: 'Squid: Squid is running out of file descriptors (<{$SQUID.FILE.DESC.WARN.MIN})'
priority: WARNING
@@ -1053,7 +1053,7 @@ zabbix_export:
triggers:
-
uuid: 89efc9400197427fa718395286dd3583
- expression: 'last(/Squid SNMP/squid[cacheUptime])<10m'
+ expression: 'last(/Squid by SNMP/squid[cacheUptime])<10m'
name: 'Squid: Squid has been restarted'
event_name: 'Squid: Squid has been restarted (uptime < 10m)'
priority: INFO
@@ -1085,7 +1085,7 @@ zabbix_export:
triggers:
-
uuid: c5991152d2da4df7ae0d978233c5a859
- expression: 'last(/Squid SNMP/squid[cacheVersionId],#1)<>last(/Squid SNMP/squid[cacheVersionId],#2) and length(last(/Squid SNMP/squid[cacheVersionId]))>0'
+ expression: 'last(/Squid by SNMP/squid[cacheVersionId],#1)<>last(/Squid by SNMP/squid[cacheVersionId],#2) and length(last(/Squid by SNMP/squid[cacheVersionId]))>0'
name: 'Squid: Squid version has been changed'
event_name: 'Squid: Version has changed (new version: {ITEM.VALUE})'
priority: INFO
@@ -1137,7 +1137,7 @@ zabbix_export:
triggers:
-
uuid: 89a1cfe0f02f4da880f197c2e5605db8
- expression: 'avg(/Squid SNMP/squid[cacheSysPageFaults],5m)>avg(/Squid SNMP/squid[cacheProtoClientHttpRequests],5m)/100*{$SQUID.PAGE.FAULT.WARN}'
+ expression: 'avg(/Squid by SNMP/squid[cacheSysPageFaults],5m)>avg(/Squid by SNMP/squid[cacheProtoClientHttpRequests],5m)/100*{$SQUID.PAGE.FAULT.WARN}'
name: 'Squid: High sys page faults rate'
event_name: 'Squid: High sys page faults rate (>{$SQUID.PAGE.FAULT.WARN}% of received HTTP requests)'
priority: WARNING
@@ -1147,7 +1147,7 @@ zabbix_export:
value: performance
-
uuid: 5676f1e02dc7413fb1a34543ccaf1384
- expression: 'last(/Squid SNMP/squid[cacheCurrentSwapSize])>last(/Squid SNMP/squid[cacheSwapHighWM])*last(/Squid SNMP/squid[cacheSwapMaxSize])/100'
+ expression: 'last(/Squid by SNMP/squid[cacheCurrentSwapSize])>last(/Squid by SNMP/squid[cacheSwapHighWM])*last(/Squid by SNMP/squid[cacheSwapMaxSize])/100'
name: 'Squid: Swap usage is more than high watermark'
event_name: 'Squid: Swap usage is more than high watermark (>{ITEM.VALUE2}%)'
opdata: 'Used: {ITEM.LASTVALUE1}'
@@ -1161,7 +1161,7 @@ zabbix_export:
value: performance
-
uuid: 2cf87472ebf74239bb782580448f696c
- expression: 'last(/Squid SNMP/squid[cacheCurrentSwapSize])>last(/Squid SNMP/squid[cacheSwapLowWM])*last(/Squid SNMP/squid[cacheSwapMaxSize])/100'
+ expression: 'last(/Squid by SNMP/squid[cacheCurrentSwapSize])>last(/Squid by SNMP/squid[cacheSwapLowWM])*last(/Squid by SNMP/squid[cacheSwapMaxSize])/100'
name: 'Squid: Swap usage is more than low watermark'
event_name: 'Squid: Swap usage is more than low watermark (>{ITEM.VALUE2}%)'
opdata: 'Used: {ITEM.LASTVALUE1}'
@@ -1181,13 +1181,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheDnsRequests]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheDnsReplies]'
-
uuid: e301cc76e0ff4e22bc66a46b19230c33
@@ -1196,19 +1196,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheFqdnRequests]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheFqdnHits]'
-
sortorder: '2'
color: F63100
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheFqdnMisses]'
-
uuid: 22556883f0a04b6999013d1a5ce58382
@@ -1217,19 +1217,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheCurrentFileDescrCnt]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheCurrentUnusedFDescrCnt]'
-
sortorder: '2'
color: F63100
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheCurrentResFileDescrCnt]'
-
uuid: 647af850b9914d7b803c7f509f4c4f71
@@ -1238,13 +1238,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpInKb]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpOutKb]'
-
uuid: c3d9ac16b3e24067b1041b93ee8aaebe
@@ -1253,19 +1253,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheIpRequests]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheIpHits]'
-
sortorder: '2'
color: F63100
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheIpMisses]'
-
uuid: 7b9f0d0f6558432b83375e2fcd082812
@@ -1274,19 +1274,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheMaxResSize]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheMemMaxSize]'
-
sortorder: '2'
color: F63100
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheMemUsage]'
-
uuid: d4b916fb3ea14e55b3e9799b85d8e40b
@@ -1295,13 +1295,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheNumObjCount]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheCurrentUnlinkRequests]'
-
uuid: af823298924d47b09e17eeff093da448
@@ -1310,71 +1310,71 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpAllSvcTime.5]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpAllSvcTime.60]'
-
sortorder: '2'
color: F63100
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpMissSvcTime.5]'
-
sortorder: '3'
color: A54F10
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpMissSvcTime.60]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpHitSvcTime.5]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheHttpHitSvcTime.60]'
-
sortorder: '6'
color: AC8C14
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheIcpQuerySvcTime.5]'
-
sortorder: '7'
color: 611F27
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheIcpQuerySvcTime.60]'
-
sortorder: '8'
color: F230E0
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheIcpReplySvcTime.5]'
-
sortorder: '9'
color: FFAD40
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheIcpReplySvcTime.60]'
-
sortorder: '10'
color: 40CDFF
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheDnsSvcTime.5]'
-
sortorder: '11'
color: 40FFA0
item:
- host: 'Squid SNMP'
+ host: 'Squid by SNMP'
key: 'squid[cacheDnsSvcTime.60]'
diff --git a/templates/app/truenas_snmp/README.md b/templates/app/truenas_snmp/README.md
index a0fcb43213e..832aadc1905 100644
--- a/templates/app/truenas_snmp/README.md
+++ b/templates/app/truenas_snmp/README.md
@@ -1,9 +1,9 @@
-# TrueNAS SNMP
+# TrueNAS by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
Template for monitoring TrueNAS by SNMP
This template was tested on:
@@ -12,7 +12,7 @@ This template was tested on:
## Setup
-> See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
1. Import template into Zabbix
2. Enable SNMP daemon at Services in TrueNAS web interface https://www.truenas.com/docs/core/services/snmp
@@ -168,32 +168,32 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|TrueNAS: Load average is too high |<p>Per CPU load average is too high. Your system may be slow to respond.</p> |`min(/TrueNAS SNMP/system.cpu.load.avg1,5m)/last(/TrueNAS SNMP/system.cpu.num)>{$LOAD_AVG_PER_CPU.MAX.WARN} and last(/TrueNAS SNMP/system.cpu.load.avg5)>0 and last(/TrueNAS SNMP/system.cpu.load.avg15)>0 ` |AVERAGE | |
-|TrueNAS: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/TrueNAS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Load average is too high</p> |
-|TrueNAS: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/TrueNAS SNMP/system.name,#1)<>last(/TrueNAS SNMP/system.name,#2) and length(last(/TrueNAS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|TrueNAS: Lack of available memory |<p>The system is running out of memory.</p> |`min(/TrueNAS SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS SNMP/vm.memory.total)>0` |AVERAGE | |
-|TrueNAS: High memory utilization |<p>The system is running out of free memory.</p> |`min(/TrueNAS SNMP/vm.memory.util,5m)>{$MEMORY.UTIL.MAX}` |AVERAGE |<p>**Depends on**:</p><p>- TrueNAS: Lack of available memory</p> |
-|TrueNAS: High swap space usage |<p>This trigger is ignored, if there is no swap configured.</p> |`min(/TrueNAS SNMP/system.swap.pfree,5m)<{$SWAP.PFREE.MIN.WARN} and last(/TrueNAS SNMP/system.swap.total)>0` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: High memory utilization</p><p>- TrueNAS: Lack of available memory</p> |
-|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/TrueNAS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/TrueNAS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/TrueNAS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/TrueNAS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/TrueNAS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/TrueNAS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/TrueNAS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/TrueNAS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
-|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
-|TrueNAS: Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/TrueNAS SNMP/icmpping,#3)=0` |HIGH | |
-|TrueNAS: High ICMP ping loss |<p>ICMP packets loss detected.</p> |`min(/TrueNAS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TrueNAS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Unavailable by ICMP ping</p> |
-|TrueNAS: High ICMP ping response time |<p>Average ICMP response time is too big.</p> |`avg(/TrueNAS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Unavailable by ICMP ping</p> |
-|TrueNAS: has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/TrueNAS SNMP/system.uptime)<10m` |INFO |<p>Manual close: YES</p> |
-|TrueNAS: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/TrueNAS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Unavailable by ICMP ping</p> |
-|TrueNAS: Pool [{#POOLNAME}]: Very high space usage |<p>Two conditions should match: First, space utilization should be above {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"}%.</p><p>Second condition: The pool free space is less than {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}.</p> |`min(/TrueNAS SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"} and last(/TrueNAS SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}` |AVERAGE | |
-|TrueNAS: Pool [{#POOLNAME}]: High space usage |<p>Two conditions should match: First, space utilization should be above {$ZPOOL.PUSED.MAX.WARN:"{#POOLNAME}"}%.</p><p>Second condition: The pool free space is less than {$ZPOOL.FREE.MIN.WARN:"{#POOLNAME}"}.</p> |`min(/TrueNAS SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.WARN:"{#POOLNAME}"} and last(/TrueNAS SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.WARN:"{#POOLNAME}"}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Pool [{#POOLNAME}]: Very high space usage</p> |
-|TrueNAS: Pool [{#POOLNAME}]: Status is not online |<p>Please check pool status.</p> |`last(/TrueNAS SNMP/truenas.zpool.health[{#POOLNAME}]) <> 0` |AVERAGE | |
-|TrueNAS: Dataset [{#DATASET_NAME}]: Very high space usage |<p>Two conditions should match: First, space utilization should be above {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"}%.</p><p>Second condition: The dataset free space is less than {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}.</p> |`min(/TrueNAS SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"} and last(/TrueNAS SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}` |AVERAGE | |
-|TrueNAS: Dataset [{#DATASET_NAME}]: High space usage |<p>Two conditions should match: First, space utilization should be above {$DATASET.PUSED.MAX.WARN:"{#DATASET_NAME}"}%.</p><p>Second condition: The dataset free space is less than {$DATASET.FREE.MIN.WARN:"{#POOLNAME}"}.</p> |`min(/TrueNAS SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.WARN:"{#DATASET_NAME}"} and last(/TrueNAS SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.WARN:"{#POOLNAME}"}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Dataset [{#DATASET_NAME}]: Very high space usage</p> |
-|TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high |<p>Disk temperature is high.</p> |`avg(/TrueNAS SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.CRIT:"{#DISK_NAME}"}` |AVERAGE | |
-|TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high |<p>Disk temperature is high.</p> |`avg(/TrueNAS SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.WARN:"{#DISK_NAME}"}` |WARNING | |
+|TrueNAS: Load average is too high |<p>Per CPU load average is too high. Your system may be slow to respond.</p> |`min(/TrueNAS by SNMP/system.cpu.load.avg1,5m)/last(/TrueNAS by SNMP/system.cpu.num)>{$LOAD_AVG_PER_CPU.MAX.WARN} and last(/TrueNAS by SNMP/system.cpu.load.avg5)>0 and last(/TrueNAS by SNMP/system.cpu.load.avg15)>0 ` |AVERAGE | |
+|TrueNAS: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/TrueNAS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Load average is too high</p> |
+|TrueNAS: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/TrueNAS by SNMP/system.name,#1)<>last(/TrueNAS by SNMP/system.name,#2) and length(last(/TrueNAS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|TrueNAS: Lack of available memory |<p>The system is running out of memory.</p> |`min(/TrueNAS by SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS by SNMP/vm.memory.total)>0` |AVERAGE | |
+|TrueNAS: High memory utilization |<p>The system is running out of free memory.</p> |`min(/TrueNAS by SNMP/vm.memory.util,5m)>{$MEMORY.UTIL.MAX}` |AVERAGE |<p>**Depends on**:</p><p>- TrueNAS: Lack of available memory</p> |
+|TrueNAS: High swap space usage |<p>This trigger is ignored, if there is no swap configured.</p> |`min(/TrueNAS by SNMP/system.swap.pfree,5m)<{$SWAP.PFREE.MIN.WARN} and last(/TrueNAS by SNMP/system.swap.total)>0` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: High memory utilization</p><p>- TrueNAS: Lack of available memory</p> |
+|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/TrueNAS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/TrueNAS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/TrueNAS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/TrueNAS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/TrueNAS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/TrueNAS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/TrueNAS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/TrueNAS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down</p> |
+|TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
+|TrueNAS: Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/TrueNAS by SNMP/icmpping,#3)=0` |HIGH | |
+|TrueNAS: High ICMP ping loss |<p>ICMP packets loss detected.</p> |`min(/TrueNAS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TrueNAS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Unavailable by ICMP ping</p> |
+|TrueNAS: High ICMP ping response time |<p>Average ICMP response time is too big.</p> |`avg(/TrueNAS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Unavailable by ICMP ping</p> |
+|TrueNAS: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/TrueNAS by SNMP/system.uptime)<10m` |INFO |<p>Manual close: YES</p> |
+|TrueNAS: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/TrueNAS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Unavailable by ICMP ping</p> |
+|TrueNAS: Pool [{#POOLNAME}]: Very high space usage |<p>Two conditions should match: First, space utilization should be above {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"}%.</p><p>Second condition: The pool free space is less than {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}.</p> |`min(/TrueNAS by SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"} and last(/TrueNAS by SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}` |AVERAGE | |
+|TrueNAS: Pool [{#POOLNAME}]: High space usage |<p>Two conditions should match: First, space utilization should be above {$ZPOOL.PUSED.MAX.WARN:"{#POOLNAME}"}%.</p><p>Second condition: The pool free space is less than {$ZPOOL.FREE.MIN.WARN:"{#POOLNAME}"}.</p> |`min(/TrueNAS by SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.WARN:"{#POOLNAME}"} and last(/TrueNAS by SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.WARN:"{#POOLNAME}"}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Pool [{#POOLNAME}]: Very high space usage</p> |
+|TrueNAS: Pool [{#POOLNAME}]: Status is not online |<p>Please check pool status.</p> |`last(/TrueNAS by SNMP/truenas.zpool.health[{#POOLNAME}]) <> 0` |AVERAGE | |
+|TrueNAS: Dataset [{#DATASET_NAME}]: Very high space usage |<p>Two conditions should match: First, space utilization should be above {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"}%.</p><p>Second condition: The dataset free space is less than {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}.</p> |`min(/TrueNAS by SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"} and last(/TrueNAS by SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}` |AVERAGE | |
+|TrueNAS: Dataset [{#DATASET_NAME}]: High space usage |<p>Two conditions should match: First, space utilization should be above {$DATASET.PUSED.MAX.WARN:"{#DATASET_NAME}"}%.</p><p>Second condition: The dataset free space is less than {$DATASET.FREE.MIN.WARN:"{#POOLNAME}"}.</p> |`min(/TrueNAS by SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.WARN:"{#DATASET_NAME}"} and last(/TrueNAS by SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.WARN:"{#POOLNAME}"}` |WARNING |<p>**Depends on**:</p><p>- TrueNAS: Dataset [{#DATASET_NAME}]: Very high space usage</p> |
+|TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high |<p>Disk temperature is high.</p> |`avg(/TrueNAS by SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.CRIT:"{#DISK_NAME}"}` |AVERAGE | |
+|TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high |<p>Disk temperature is high.</p> |`avg(/TrueNAS by SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.WARN:"{#DISK_NAME}"}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/app/truenas_snmp/template_app_truenas_snmp.yaml b/templates/app/truenas_snmp/template_app_truenas_snmp.yaml
index c4cf549481c..152dbd22e0c 100644
--- a/templates/app/truenas_snmp/template_app_truenas_snmp.yaml
+++ b/templates/app/truenas_snmp/template_app_truenas_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:37:43Z'
+ version: '6.4'
+ date: '2022-10-27T14:32:23Z'
template_groups:
-
uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 28e31ef9402d4c1ba2fbc730a288d2d8
- template: 'TrueNAS SNMP'
- name: 'TrueNAS SNMP'
+ template: 'TrueNAS by SNMP'
+ name: 'TrueNAS by SNMP'
description: |
Template for monitoring TrueNAS by SNMP
Setup:
@@ -25,7 +25,7 @@ zabbix_export:
UCD-SNMP-MIB
FREENAS-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Applications
@@ -52,7 +52,7 @@ zabbix_export:
triggers:
-
uuid: 91468c2218da45b3b1de62575471094e
- expression: 'max(/TrueNAS SNMP/icmpping,#3)=0'
+ expression: 'max(/TrueNAS by SNMP/icmpping,#3)=0'
name: 'TrueNAS: Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -79,7 +79,7 @@ zabbix_export:
triggers:
-
uuid: e6a39a1bc5d54f49aacc811f6942ef2b
- expression: 'min(/TrueNAS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TrueNAS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/TrueNAS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TrueNAS by SNMP/icmppingloss,5m)<100'
name: 'TrueNAS: High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -87,7 +87,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Unavailable by ICMP ping'
- expression: 'max(/TrueNAS SNMP/icmpping,#3)=0'
+ expression: 'max(/TrueNAS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -114,7 +114,7 @@ zabbix_export:
triggers:
-
uuid: 4931e6a368b841eeb846b8bc59fea513
- expression: 'avg(/TrueNAS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/TrueNAS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'TrueNAS: High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -122,7 +122,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Unavailable by ICMP ping'
- expression: 'max(/TrueNAS SNMP/icmpping,#3)=0'
+ expression: 'max(/TrueNAS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -330,7 +330,7 @@ zabbix_export:
triggers:
-
uuid: d931601db9244884b6e411d4be2c297e
- expression: 'last(/TrueNAS SNMP/system.name,#1)<>last(/TrueNAS SNMP/system.name,#2) and length(last(/TrueNAS SNMP/system.name))>0'
+ expression: 'last(/TrueNAS by SNMP/system.name,#1)<>last(/TrueNAS by SNMP/system.name,#2) and length(last(/TrueNAS by SNMP/system.name))>0'
name: 'TrueNAS: System name has changed'
event_name: 'TrueNAS: System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -453,9 +453,9 @@ zabbix_export:
triggers:
-
uuid: 7ea3e6590e28476ea9876e26546af2d3
- expression: 'last(/TrueNAS SNMP/system.uptime)<10m'
- name: 'TrueNAS: has been restarted'
- event_name: 'TrueNAS: has been restarted (uptime < 10m)'
+ expression: 'last(/TrueNAS by SNMP/system.uptime)<10m'
+ name: 'TrueNAS: Host has been restarted'
+ event_name: 'TrueNAS: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
description: 'Uptime is less than 10 minutes.'
manual_close: 'YES'
@@ -960,7 +960,7 @@ zabbix_export:
triggers:
-
uuid: 3ee054e3d944441d9fd174e13b6a59ee
- expression: 'min(/TrueNAS SNMP/vm.memory.util,5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/TrueNAS by SNMP/vm.memory.util,5m)>{$MEMORY.UTIL.MAX}'
name: 'TrueNAS: High memory utilization'
event_name: 'TrueNAS: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -968,7 +968,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Lack of available memory'
- expression: 'min(/TrueNAS SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS SNMP/vm.memory.total)>0'
+ expression: 'min(/TrueNAS by SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS by SNMP/vm.memory.total)>0'
tags:
-
tag: scope
@@ -1000,7 +1000,7 @@ zabbix_export:
triggers:
-
uuid: 207abb1786ea4a39a7d569e54ee7cdb2
- expression: 'max(/TrueNAS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/TrueNAS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'TrueNAS: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1008,7 +1008,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Unavailable by ICMP ping'
- expression: 'max(/TrueNAS SNMP/icmpping,#3)=0'
+ expression: 'max(/TrueNAS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -1199,7 +1199,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 776551cd5322405e8d7c2b9c30b3a82b
- expression: 'min(/TrueNAS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/TrueNAS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: 'TrueNAS: High CPU utilization'
event_name: 'TrueNAS: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -1209,9 +1209,9 @@ zabbix_export:
-
name: 'TrueNAS: Load average is too high'
expression: |
- min(/TrueNAS SNMP/system.cpu.load.avg1,5m)/last(/TrueNAS SNMP/system.cpu.num)>{$LOAD_AVG_PER_CPU.MAX.WARN}
- and last(/TrueNAS SNMP/system.cpu.load.avg5)>0
- and last(/TrueNAS SNMP/system.cpu.load.avg15)>0
+ min(/TrueNAS by SNMP/system.cpu.load.avg1,5m)/last(/TrueNAS by SNMP/system.cpu.num)>{$LOAD_AVG_PER_CPU.MAX.WARN}
+ and last(/TrueNAS by SNMP/system.cpu.load.avg5)>0
+ and last(/TrueNAS by SNMP/system.cpu.load.avg15)>0
tags:
-
tag: scope
@@ -1227,31 +1227,31 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'system.cpu.system[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'system.cpu.user[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'system.cpu.nice[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'system.cpu.iowait[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'system.cpu.interrupt[{#SNMPINDEX}]'
-
uuid: 11de3174f0e24212bedd1ef81429db9d
@@ -1263,7 +1263,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'system.cpu.util[{#SNMPINDEX}]'
master_item:
key: system.cpu.num
@@ -1397,9 +1397,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 89a43ff26b204fceb91108740ece1ee3
- expression: 'min(/TrueNAS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/TrueNAS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/TrueNAS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High input error rate'
event_name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -1408,7 +1408,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1500,9 +1500,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c1cfeff568e2421ba06648ca55bcfef5
- expression: 'min(/TrueNAS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/TrueNAS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/TrueNAS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High output error rate'
event_name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -1511,7 +1511,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1612,7 +1612,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ba6767729f78405aba8d09bf14b3a0fa
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1657,21 +1657,21 @@ zabbix_export:
-
uuid: fcc3734390c645f3a4ad5d694675fa3a
expression: |
- change(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/TrueNAS SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/TrueNAS by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1679,7 +1679,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1687,10 +1687,10 @@ zabbix_export:
-
uuid: 94adfef34fca4421b88f9253de55554e
expression: |
- (avg(/TrueNAS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/TrueNAS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/TrueNAS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/TrueNAS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage'
event_name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1699,7 +1699,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1707,10 +1707,10 @@ zabbix_export:
-
uuid: 9ed09a6968b0416d9ac556ca35a04db4
expression: |
- (avg(/TrueNAS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/TrueNAS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/TrueNAS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/TrueNAS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TrueNAS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage'
event_name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1719,7 +1719,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Interface [{#IFNAME}({#IFALIAS})]: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/TrueNAS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1733,42 +1733,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: b3906a308e4c4631a96a4aa188d22c74
@@ -1810,7 +1810,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fda99a2e62064414af85c1137cbf0aef
- expression: 'avg(/TrueNAS SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.CRIT:"{#DISK_NAME}"}'
+ expression: 'avg(/TrueNAS by SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.CRIT:"{#DISK_NAME}"}'
name: 'TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high'
event_name: 'TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high (over {$TEMPERATURE.MAX.CRIT:"{#DISK_NAME}"}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1822,7 +1822,7 @@ zabbix_export:
value: notice
-
uuid: 73194e7637a84dca976b218e9f4248c2
- expression: 'avg(/TrueNAS SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.WARN:"{#DISK_NAME}"}'
+ expression: 'avg(/TrueNAS by SNMP/truenas.disk.temp[{#DISK_NAME}],5m) > {$TEMPERATURE.MAX.WARN:"{#DISK_NAME}"}'
name: 'TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high'
event_name: 'TrueNAS: Disk [{#DISK_NAME}]: Average disk temperature is too high (over {$TEMPERATURE.MAX.WARN:"{#DISK_NAME}"}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1951,7 +1951,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f759e058ef5345d884662f51db0c222e
- expression: 'min(/TrueNAS SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.WARN:"{#DATASET_NAME}"} and last(/TrueNAS SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.WARN:"{#POOLNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.WARN:"{#DATASET_NAME}"} and last(/TrueNAS by SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.WARN:"{#POOLNAME}"}'
name: 'TrueNAS: Dataset [{#DATASET_NAME}]: High space usage'
event_name: 'TrueNAS: Dataset [{#DATASET_NAME}]: High space usage (more than {$DATASET.PUSED.MAX.WARN:"{#DATASET_NAME}"}% used)'
opdata: 'Current usage: {ITEM.LASTVALUE1}'
@@ -1962,7 +1962,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Dataset [{#DATASET_NAME}]: Very high space usage'
- expression: 'min(/TrueNAS SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"} and last(/TrueNAS SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"} and last(/TrueNAS by SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}'
tags:
-
tag: scope
@@ -1972,7 +1972,7 @@ zabbix_export:
value: performance
-
uuid: f0e37c1f63aa4e3090c0dc8c4f0dfe9b
- expression: 'min(/TrueNAS SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"} and last(/TrueNAS SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/truenas.dataset.pused[{#DATASET_NAME}],5m) > {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"} and last(/TrueNAS by SNMP/truenas.dataset.avail[{#DATASET_NAME}]) < {$DATASET.FREE.MIN.CRIT:"{#POOLNAME}"}'
name: 'TrueNAS: Dataset [{#DATASET_NAME}]: Very high space usage'
event_name: 'TrueNAS: Dataset [{#DATASET_NAME}]: Very high space usage (more than {$DATASET.PUSED.MAX.CRIT:"{#DATASET_NAME}"}% used)'
opdata: 'Current usage: {ITEM.LASTVALUE1}'
@@ -2001,14 +2001,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.dataset.size.total[{#DATASET_NAME}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.dataset.used[{#DATASET_NAME}]'
preprocessing:
-
@@ -2077,7 +2077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 676c2abdd102484a92db3501ccc2ca51
- expression: 'last(/TrueNAS SNMP/truenas.zpool.health[{#POOLNAME}]) <> 0'
+ expression: 'last(/TrueNAS by SNMP/truenas.zpool.health[{#POOLNAME}]) <> 0'
name: 'TrueNAS: Pool [{#POOLNAME}]: Status is not online'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2260,7 +2260,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 18eef491c14b4f768400b4acca5c7e80
- expression: 'min(/TrueNAS SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.WARN:"{#POOLNAME}"} and last(/TrueNAS SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.WARN:"{#POOLNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.WARN:"{#POOLNAME}"} and last(/TrueNAS by SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.WARN:"{#POOLNAME}"}'
name: 'TrueNAS: Pool [{#POOLNAME}]: High space usage'
event_name: 'TrueNAS: Pool [{#POOLNAME}]: High space usage (more than {$ZPOOL.PUSED.MAX.WARN:"{#POOLNAME}"}% used)'
opdata: 'Current usage: {ITEM.LASTVALUE1}'
@@ -2271,7 +2271,7 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: Pool [{#POOLNAME}]: Very high space usage'
- expression: 'min(/TrueNAS SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"} and last(/TrueNAS SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"} and last(/TrueNAS by SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}'
tags:
-
tag: scope
@@ -2281,7 +2281,7 @@ zabbix_export:
value: performance
-
uuid: ab01140b8a724c1cbb79be032de8c8b5
- expression: 'min(/TrueNAS SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"} and last(/TrueNAS SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}'
+ expression: 'min(/TrueNAS by SNMP/truenas.zpool.pused[{#POOLNAME}],5m) > {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"} and last(/TrueNAS by SNMP/truenas.zpool.avail[{#POOLNAME}]) < {$ZPOOL.FREE.MIN.CRIT:"{#POOLNAME}"}'
name: 'TrueNAS: Pool [{#POOLNAME}]: Very high space usage'
event_name: 'TrueNAS: Pool [{#POOLNAME}]: Very high space usage (more than {$ZPOOL.PUSED.MAX.CRIT:"{#POOLNAME}"}% used)'
opdata: 'Current usage: {ITEM.LASTVALUE1}'
@@ -2304,14 +2304,14 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.zpool.read.bytes[{#POOLNAME}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.zpool.write.bytes[{#POOLNAME}]'
-
uuid: 497e60420e314ec3a3de904042ae4756
@@ -2326,14 +2326,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.zpool.size.total[{#POOLNAME}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.zpool.used[{#POOLNAME}]'
preprocessing:
-
@@ -2436,14 +2436,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.zvol.size.total[{#ZVOL_NAME}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'truenas.zvol.used[{#ZVOL_NAME}]'
preprocessing:
-
@@ -2546,14 +2546,14 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'vfs.dev.read.rate[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: 'vfs.dev.write.rate[{#SNMPINDEX}]'
tags:
-
@@ -3647,7 +3647,7 @@ zabbix_export:
triggers:
-
uuid: 6c1708d53693435c87cd27f1568345c1
- expression: 'min(/TrueNAS SNMP/system.swap.pfree,5m)<{$SWAP.PFREE.MIN.WARN} and last(/TrueNAS SNMP/system.swap.total)>0'
+ expression: 'min(/TrueNAS by SNMP/system.swap.pfree,5m)<{$SWAP.PFREE.MIN.WARN} and last(/TrueNAS by SNMP/system.swap.total)>0'
name: 'TrueNAS: High swap space usage'
event_name: 'TrueNAS: High swap space usage (less than {$SWAP.PFREE.MIN.WARN}% free)'
opdata: 'Free: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
@@ -3656,10 +3656,10 @@ zabbix_export:
dependencies:
-
name: 'TrueNAS: High memory utilization'
- expression: 'min(/TrueNAS SNMP/vm.memory.util,5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/TrueNAS by SNMP/vm.memory.util,5m)>{$MEMORY.UTIL.MAX}'
-
name: 'TrueNAS: Lack of available memory'
- expression: 'min(/TrueNAS SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS SNMP/vm.memory.total)>0'
+ expression: 'min(/TrueNAS by SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS by SNMP/vm.memory.total)>0'
tags:
-
tag: scope
@@ -3669,7 +3669,7 @@ zabbix_export:
value: performance
-
uuid: 0a04cc4789a14f1090232fce196c0e4d
- expression: 'min(/TrueNAS SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS SNMP/vm.memory.total)>0'
+ expression: 'min(/TrueNAS by SNMP/vm.memory.available,5m)<{$MEMORY.AVAILABLE.MIN} and last(/TrueNAS by SNMP/vm.memory.total)>0'
name: 'TrueNAS: Lack of available memory'
event_name: 'TrueNAS: Lack of available memory (<{$MEMORY.AVAILABLE.MIN} of {ITEM.VALUE2})'
opdata: 'Available: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
@@ -3685,9 +3685,9 @@ zabbix_export:
-
uuid: c923ea2cc04848de911ad9a41defaff6
expression: |
- min(/TrueNAS SNMP/system.cpu.load.avg1,5m)/last(/TrueNAS SNMP/system.cpu.num)>{$LOAD_AVG_PER_CPU.MAX.WARN}
- and last(/TrueNAS SNMP/system.cpu.load.avg5)>0
- and last(/TrueNAS SNMP/system.cpu.load.avg15)>0
+ min(/TrueNAS by SNMP/system.cpu.load.avg1,5m)/last(/TrueNAS by SNMP/system.cpu.num)>{$LOAD_AVG_PER_CPU.MAX.WARN}
+ and last(/TrueNAS by SNMP/system.cpu.load.avg5)>0
+ and last(/TrueNAS by SNMP/system.cpu.load.avg15)>0
name: 'TrueNAS: Load average is too high'
event_name: 'TrueNAS: Load average is too high (per CPU load over {$LOAD_AVG_PER_CPU.MAX.WARN} for 5m)'
opdata: 'Load averages(1m 5m 15m): ({ITEM.LASTVALUE1} {ITEM.LASTVALUE3} {ITEM.LASTVALUE4}), # of CPUs: {ITEM.LASTVALUE2}'
@@ -3707,13 +3707,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: truenas.zfs.arc.hit.ratio
-
sortorder: '1'
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: truenas.zfs.arc.miss.ratio
-
uuid: 977c98430b1241988206b56b3fc40091
@@ -3722,13 +3722,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.cpu.switches
-
sortorder: '1'
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.cpu.intr
-
uuid: 5c95f63eaaf049cab4884b2785c5d382
@@ -3739,14 +3739,14 @@ zabbix_export:
drawtype: BOLD_LINE
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: vm.memory.total
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: vm.memory.available
-
uuid: a36f52864942457894638adef660a775
@@ -3758,7 +3758,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: vm.memory.util
-
uuid: bd67954025d145c8a0eb2f21d53a52f5
@@ -3767,13 +3767,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.swap.free
-
sortorder: '1'
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.swap.total
-
uuid: f7a0b78f1f814e2b94cec941168eafaa
@@ -3783,24 +3783,24 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.cpu.load.avg1
-
sortorder: '1'
color: 2774A4
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.cpu.load.avg5
-
sortorder: '2'
color: F63100
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.cpu.load.avg15
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'TrueNAS SNMP'
+ host: 'TrueNAS by SNMP'
key: system.cpu.num
diff --git a/templates/app/wildfly_server_jmx/README.md b/templates/app/wildfly_server_jmx/README.md
index 05f3170bd91..0202fc30173 100644
--- a/templates/app/wildfly_server_jmx/README.md
+++ b/templates/app/wildfly_server_jmx/README.md
@@ -3,7 +3,7 @@
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.2 and higher.
Official JMX Template for WildFly server.
@@ -86,7 +86,7 @@ There are no template links in this template.
|WildFly |WildFly {#JMX_DATA_SOURCE}: Cache delete, rate |<p>The number of statements discarded from the cache per second.</p> |JMX |jmx["{#JMXOBJ}",PreparedStatementCacheDeleteCount]<p>**Preprocessing**:</p><p>- CHANGE_PER_SECOND</p> |
|WildFly |WildFly {#JMX_DATA_SOURCE}: Cache hit, rate |<p>The number of times that statements from the cache were used per second.</p> |JMX |jmx["{#JMXOBJ}",PreparedStatementCacheHitCount]<p>**Preprocessing**:</p><p>- CHANGE_PER_SECOND</p> |
|WildFly |WildFly {#JMX_DATA_SOURCE}: Cache miss, rate |<p>The number of times that a statement request could not be satisfied with a statement from the cache per second.</p> |JMX |jmx["{#JMXOBJ}",PreparedStatementCacheMissCount]<p>**Preprocessing**:</p><p>- CHANGE_PER_SECOND</p> |
-|WildFly |WildFly {#JMX_DATA_SOURCE}: Statistics enabled |<p>Define whether runtime statistics are enabled or not.</p> |JMX |jmx["{#JMXOBJ}",statisticsEnabled]<p>**Preprocessing**:</p><p>- BOOL_TO_DECIMAL</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
+|WildFly |WildFly {#JMX_DATA_SOURCE}: Statistics enabled |<p>Define whether runtime statistics are enabled or not.</p> |JMX |jmx["{#JMXOBJ}",statisticsEnabled, "JDBC"]<p>**Preprocessing**:</p><p>- BOOL_TO_DECIMAL</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Active |<p>The number of open connections.</p> |JMX |jmx["{#JMXOBJ}",ActiveCount] |
|WildFly |WildFly {#JMX_DATA_SOURCE}: Connections: Available |<p>The available count.</p> |JMX |jmx["{#JMXOBJ}",AvailableCount] |
|WildFly |WildFly {#JMX_DATA_SOURCE}: Blocking time, avg |<p>Average Blocking Time for pool.</p> |JMX |jmx["{#JMXOBJ}",AverageBlockingTime] |
@@ -128,11 +128,11 @@ There are no template links in this template.
|----|-----------|----|----|----|
|WildFly: Server needs to restart for configuration change. |<p>-</p> |`find(/WildFly Server by JMX/jmx["jboss.as:management-root=server","runtimeConfigurationState"],,"like","ok")=0` |WARNING | |
|WildFly: Server controller is not in RUNNING state |<p>-</p> |`find(/WildFly Server by JMX/jmx["jboss.as:management-root=server","serverState"],,"like","running")=0` |WARNING |<p>**Depends on**:</p><p>- WildFly: Server needs to restart for configuration change.</p> |
-|WildFly: Version has changed |<p>WildFly version has changed. Ack to close.</p> |`last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"],#1)<>last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"],#2) and length(last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"]))>0` |INFO |<p>Manual close: YES</p> |
-|WildFly: has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/WildFly Server by JMX/jmx["java.lang:type=Runtime","Uptime"])<10m` |INFO |<p>Manual close: YES</p> |
+|WildFly: Version has changed |<p>The WildFly version has changed. Perform Ack to close.</p> |`last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"],#1)<>last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"],#2) and length(last(/WildFly Server by JMX/jmx["jboss.as:management-root=server","productVersion"]))>0` |INFO |<p>Manual close: YES</p> |
+|WildFly: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/WildFly Server by JMX/jmx["java.lang:type=Runtime","Uptime"])<10m` |INFO |<p>Manual close: YES</p> |
|WildFly: Failed to fetch info data |<p>Zabbix has not received data for items for the last 15 minutes</p> |`nodata(/WildFly Server by JMX/jmx["java.lang:type=Runtime","Uptime"],15m)=1` |WARNING | |
|WildFly deployment [{#DEPLOYMENT}]: Deployment status has changed |<p>Deployment status has changed. Ack to close.</p> |`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",status],#1)<>last(/WildFly Server by JMX/jmx["{#JMXOBJ}",status],#2) and length(last(/WildFly Server by JMX/jmx["{#JMXOBJ}",status]))>0` |WARNING |<p>Manual close: YES</p> |
-|WildFly {#JMX_DATA_SOURCE}: JDBC monitoring statistic is not enabled |<p>-</p> |`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled])=0` |INFO | |
+|WildFly {#JMX_DATA_SOURCE}: JDBC monitoring statistic is not enabled |<p>-</p> |`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled, "JDBC"])=0` |INFO | |
|WildFly {#JMX_DATA_SOURCE}: There are no active connections for 5m |<p>-</p> |`max(/WildFly Server by JMX/jmx["{#JMXOBJ}",ActiveCount],5m)=0` |WARNING | |
|WildFly {#JMX_DATA_SOURCE}: Connection usage is too high |<p>-</p> |`min(/WildFly Server by JMX/jmx["{#JMXOBJ}",InUseCount],5m)/last(/WildFly Server by JMX/jmx["{#JMXOBJ}",AvailableCount])*100>{$WILDFLY.CONN.USAGE.WARN.MAX}` |HIGH | |
|WildFly {#JMX_DATA_SOURCE}: Pools monitoring statistic is not enabled |<p>Zabbix has not received data for items for the last 15 minutes</p> |`last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled])=0` |INFO | |
@@ -142,7 +142,7 @@ There are no template links in this template.
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).
diff --git a/templates/app/wildfly_server_jmx/template_app_wildfly_server_jmx.yaml b/templates/app/wildfly_server_jmx/template_app_wildfly_server_jmx.yaml
index d914f2db55e..41600d586e8 100644
--- a/templates/app/wildfly_server_jmx/template_app_wildfly_server_jmx.yaml
+++ b/templates/app/wildfly_server_jmx/template_app_wildfly_server_jmx.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.2'
- date: '2022-06-07T19:37:55Z'
+ date: '2022-11-01T16:07:09Z'
template_groups:
-
uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
@@ -18,7 +18,7 @@ zabbix_export:
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Applications
@@ -58,8 +58,8 @@ zabbix_export:
-
uuid: 71db189440ec4355aa06262e3200d47e
expression: 'last(/WildFly Server by JMX/jmx["java.lang:type=Runtime","Uptime"])<10m'
- name: 'WildFly: has been restarted'
- event_name: 'WildFly: has been restarted (uptime < 10m)'
+ name: 'WildFly: Host has been restarted'
+ event_name: 'WildFly: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
description: 'Uptime is less than 10 minutes.'
manual_close: 'YES'
@@ -160,7 +160,7 @@ zabbix_export:
name: 'WildFly: Version has changed'
event_name: 'WildFly: Version has changed (new version: {ITEM.VALUE})'
priority: INFO
- description: 'WildFly version has changed. Ack to close.'
+ description: 'The WildFly version has changed. Perform Ack to close.'
manual_close: 'YES'
tags:
-
@@ -772,7 +772,7 @@ zabbix_export:
uuid: 81dbce02ad4d492ebebd1a205bea1b43
name: 'WildFly {#JMX_DATA_SOURCE}: Statistics enabled'
type: JMX
- key: 'jmx["{#JMXOBJ}",statisticsEnabled]'
+ key: 'jmx["{#JMXOBJ}",statisticsEnabled, "JDBC"]'
history: 7d
username: '{$WILDFLY.USER}'
password: '{$WILDFLY.PASSWORD}'
@@ -796,6 +796,16 @@ zabbix_export:
-
tag: datasource
value: '{#JMX_DATA_SOURCE}'
+ trigger_prototypes:
+ -
+ uuid: 2996a48892a640d69154de332c673755
+ expression: 'last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled, "JDBC"])=0'
+ name: 'WildFly {#JMX_DATA_SOURCE}: JDBC monitoring statistic is not enabled'
+ priority: INFO
+ tags:
+ -
+ tag: scope
+ value: notice
graph_prototypes:
-
uuid: 322b26787ab444db90a1be3da2717dd2
@@ -1178,15 +1188,6 @@ zabbix_export:
value: '{#JMX_DATA_SOURCE}'
trigger_prototypes:
-
- uuid: 2996a48892a640d69154de332c673755
- expression: 'last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled])=0'
- name: 'WildFly {#JMX_DATA_SOURCE}: JDBC monitoring statistic is not enabled'
- priority: INFO
- tags:
- -
- tag: scope
- value: notice
- -
uuid: 4ea71ba3572647b29a60077bc511052a
expression: 'last(/WildFly Server by JMX/jmx["{#JMXOBJ}",statisticsEnabled])=0'
name: 'WildFly {#JMX_DATA_SOURCE}: Pools monitoring statistic is not enabled'
diff --git a/templates/cloud/azure_http/README.md b/templates/cloud/azure_http/README.md
index 929c1d2e46e..5438a7a88fc 100644
--- a/templates/cloud/azure_http/README.md
+++ b/templates/cloud/azure_http/README.md
@@ -6,6 +6,7 @@
For Zabbix version: 6.4 and higher.
This template is designed to monitor Microsoft Azure by HTTP.
It works without any external scripts and uses the script item.
+Currently the template supports discovery of virtual machines (VMs), MySQL and PosgtreSQL servers.
## Setup
@@ -18,7 +19,7 @@ It works without any external scripts and uses the script item.
See [Azure documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) for more details.
2. Link the template to a host.
-3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID} and {$AZURE.SUBSCRIPTION_ID}.
+3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, and {$AZURE.SUBSCRIPTION_ID}.
## Zabbix configuration
@@ -30,11 +31,15 @@ No specific Zabbix configuration is required.
|----|-----------|-------|
|{$AZURE.APP_ID} |<p>Microsoft Azure app ID.</p> |`` |
|{$AZURE.DATA.TIMEOUT} |<p>A response timeout for API.</p> |`15s` |
-|{$AZURE.MYSQL.DB.LOCATION.MATCHES} |<p>This macro is used in MySQL servers discovery rules.</p> |`.*` |
-|{$AZURE.MYSQL.DB.LOCATION.NOT_MATCHES} |<p>This macro is used in MySQL servers discovery rules.</p> |`CHANGE_IF_NEEDED` |
-|{$AZURE.MYSQL.DB.NAME.MATCHES} |<p>This macro is used in MySQL servers discovery rules.</p> |`.*` |
-|{$AZURE.MYSQL.DB.NAME.NOT_MATCHES} |<p>This macro is used in MySQL servers discovery rules.</p> |`CHANGE_IF_NEEDED` |
+|{$AZURE.MYSQL.DB.LOCATION.MATCHES} |<p>This macro is used in MySQL servers discovery rule.</p> |`.*` |
+|{$AZURE.MYSQL.DB.LOCATION.NOT_MATCHES} |<p>This macro is used in MySQL servers discovery rule.</p> |`CHANGE_IF_NEEDED` |
+|{$AZURE.MYSQL.DB.NAME.MATCHES} |<p>This macro is used in MySQL servers discovery rule.</p> |`.*` |
+|{$AZURE.MYSQL.DB.NAME.NOT_MATCHES} |<p>This macro is used in MySQL servers discovery rule.</p> |`CHANGE_IF_NEEDED` |
|{$AZURE.PASSWORD} |<p>Microsoft Azure password.</p> |`` |
+|{$AZURE.PGSQL.DB.LOCATION.MATCHES} |<p>This macro is used in PostgreSQL servers discovery rule.</p> |`.*` |
+|{$AZURE.PGSQL.DB.LOCATION.NOT_MATCHES} |<p>This macro is used in PostgreSQL servers discovery rule.</p> |`CHANGE_IF_NEEDED` |
+|{$AZURE.PGSQL.DB.NAME.MATCHES} |<p>This macro is used in PostgreSQL servers discovery rule.</p> |`.*` |
+|{$AZURE.PGSQL.DB.NAME.NOT_MATCHES} |<p>This macro is used in PostgreSQL servers discovery rule.</p> |`CHANGE_IF_NEEDED` |
|{$AZURE.RESOURCE_GROUP.MATCHES} |<p>This macro is used in discovery rules.</p> |`.*` |
|{$AZURE.RESOURCE_GROUP.NOT_MATCHES} |<p>This macro is used in discovery rules.</p> |`CHANGE_IF_NEEDED` |
|{$AZURE.SUBSCRIPTION_ID} |<p>Microsoft Azure subscription ID.</p> |`` |
@@ -53,13 +58,14 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|MySQL servers discovery |<p>The list of the MySQL servers is provided by the subscription.</p> |DEPENDENT |azure.mysql.servers.discovery<p>**Preprocessing**:</p><p>- JSONPATH: `$.resources.value`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `6h`</p><p>**Filter**:</p>AND <p>- {#TYPE} MATCHES_REGEX `^Microsoft.DBforMySQL`</p><p>- {#NAME} MATCHES_REGEX `{$AZURE.MYSQL.DB.NAME.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$AZURE.MYSQL.DB.NAME.NOT_MATCHES}`</p><p>- {#LOCATION} MATCHES_REGEX `{$AZURE.MYSQL.DB.LOCATION.MATCHES}`</p><p>- {#LOCATION} NOT_MATCHES_REGEX `{$AZURE.MYSQL.DB.LOCATION.NOT_MATCHES}`</p><p>- {#GROUP} MATCHES_REGEX `{$AZURE.RESOURCE_GROUP.MATCHES}`</p><p>- {#GROUP} NOT_MATCHES_REGEX `{$AZURE.RESOURCE_GROUP.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Flexible server<br> - {#TYPE} MATCHES_REGEX `Microsoft.DBforMySQL/flexibleServers`<br> - HOST_PROTOTYPE REGEXP ``</p><p>Single server<br> - {#TYPE} MATCHES_REGEX `Microsoft.DBforMySQL/servers`<br> - HOST_PROTOTYPE REGEXP ``</p> |
+|PostgreSQL servers discovery |<p>The list of the PostgreSQL servers is provided by the subscription.</p> |DEPENDENT |azure.pgsql.servers.discovery<p>**Preprocessing**:</p><p>- JSONPATH: `$.resources.value`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `6h`</p><p>**Filter**:</p>AND <p>- {#TYPE} MATCHES_REGEX `^Microsoft.DBforPostgreSQL`</p><p>- {#NAME} MATCHES_REGEX `{$AZURE.PGSQL.DB.NAME.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$AZURE.PGSQL.DB.NAME.NOT_MATCHES}`</p><p>- {#LOCATION} MATCHES_REGEX `{$AZURE.PGSQL.DB.LOCATION.MATCHES}`</p><p>- {#LOCATION} NOT_MATCHES_REGEX `{$AZURE.PGSQL.DB.LOCATION.NOT_MATCHES}`</p><p>- {#GROUP} MATCHES_REGEX `{$AZURE.RESOURCE_GROUP.MATCHES}`</p><p>- {#GROUP} NOT_MATCHES_REGEX `{$AZURE.RESOURCE_GROUP.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Flexible server<br> - {#TYPE} MATCHES_REGEX `Microsoft.DBforPostgreSQL/flexibleServers`<br> - HOST_PROTOTYPE REGEXP ``</p><p>Single server<br> - {#TYPE} MATCHES_REGEX `Microsoft.DBforPostgreSQL/servers`<br> - HOST_PROTOTYPE REGEXP ``</p> |
|Virtual machines discovery |<p>The list of the virtual machines is provided by the subscription.</p> |DEPENDENT |azure.vm.discovery<p>**Preprocessing**:</p><p>- JSONPATH: `$.resources.value`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `6h`</p><p>**Filter**:</p>AND <p>- {#TYPE} MATCHES_REGEX `^Microsoft.Compute/virtualMachines$`</p><p>- {#NAME} MATCHES_REGEX `{$AZURE.VM.NAME.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$AZURE.VM.NAME.NOT_MATCHES}`</p><p>- {#LOCATION} MATCHES_REGEX `{$AZURE.VM.LOCATION.MATCHES}`</p><p>- {#LOCATION} NOT_MATCHES_REGEX `{$AZURE.VM.LOCATION.NOT_MATCHES}`</p><p>- {#GROUP} MATCHES_REGEX `{$AZURE.RESOURCE_GROUP.MATCHES}`</p><p>- {#GROUP} NOT_MATCHES_REGEX `{$AZURE.RESOURCE_GROUP.NOT_MATCHES}`</p> |
## Items collected
|Group|Name|Description|Type|Key and additional info|
|-----|----|-----------|----|---------------------|
-|Azure |Azure: Get resources |<p>The result of API requests is in the JSON.</p> |SCRIPT |azure.get.resources<p>**Expression**:</p>`The text is too long. Please see the template.` |
+|Azure |Azure: Get resources |<p>The result of API requests is expressed in the JSON.</p> |SCRIPT |azure.get.resources<p>**Expression**:</p>`The text is too long. Please see the template.` |
|Azure |Azure: Get errors |<p>A list of errors from API requests.</p> |DEPENDENT |azure.get.errors<p>**Preprocessing**:</p><p>- JSONPATH: `$.errors`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
## Triggers
@@ -72,7 +78,7 @@ There are no template links in this template.
Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
# Azure virtual machine by HTTP
@@ -93,7 +99,7 @@ It works without any external scripts and uses the script item.
See [Azure documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) for more details.
2. Link the template to a host.
-3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.
+3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
## Zabbix configuration
@@ -109,7 +115,7 @@ No specific Zabbix configuration is required.
|{$AZURE.RESOURCE_ID} |<p>Microsoft Azure virtual machine ID.</p> |`` |
|{$AZURE.SUBSCRIPTION_ID} |<p>Microsoft Azure subscription ID.</p> |`` |
|{$AZURE.TENANT_ID} |<p>Microsoft Azure tenant ID.</p> |`` |
-|{$AZURE.VM.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization in %.</p> |`90` |
+|{$AZURE.VM.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization expressed in %.</p> |`90` |
## Template links
@@ -122,7 +128,7 @@ There are no template links in this template.
|Group|Name|Description|Type|Key and additional info|
|-----|----|-----------|----|---------------------|
-|Azure |Azure: Get data |<p>The result of API requests is in the JSON.</p> |SCRIPT |azure.vm.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
+|Azure |Azure: Get data |<p>The result of API requests is expressed in the JSON.</p> |SCRIPT |azure.vm.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
|Azure |Azure: Get errors |<p>A list of errors from API requests.</p> |DEPENDENT |azure.vm.data.errors<p>**Preprocessing**:</p><p>- JSONPATH: `$.errors`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
|Azure |Azure: Availability state |<p>The availability status of the resource.</p> |DEPENDENT |azure.vm.availability.state<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.availabilityState`</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- STR_REPLACE: `Available 0`</p><p>- STR_REPLACE: `Degraded 1`</p><p>- STR_REPLACE: `Unavailable 2`</p><p>- STR_REPLACE: `Unknown 3`</p><p>- IN_RANGE: `0 3 `</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
|Azure |Azure: Availability status detailed |<p>The summary description of the availability status.</p> |DEPENDENT |azure.vm.availability.details<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.summary`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
@@ -183,13 +189,13 @@ There are no template links in this template.
|Azure: Virtual machine is unavailable |<p>The resource state is unavailable.</p> |`last(/Azure virtual machine by HTTP/azure.vm.availability.state)=2` |HIGH | |
|Azure: Virtual machine is degraded |<p>The resource is in degraded state.</p> |`last(/Azure virtual machine by HTTP/azure.vm.availability.state)=1` |AVERAGE | |
|Azure: Virtual machine is in unknown state |<p>The resource state is unknown.</p> |`last(/Azure virtual machine by HTTP/azure.vm.availability.state)=3` |WARNING | |
-|Azure: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure virtual machine by HTTP/azure.vm.cpu.percentage,5m)>{$AZURE.VM.CPU.UTIL.CRIT}` |HIGH | |
+|Azure: High CPU utilization |<p>The CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure virtual machine by HTTP/azure.vm.cpu.percentage,5m)>{$AZURE.VM.CPU.UTIL.CRIT}` |HIGH | |
## Feedback
Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
# Azure MySQL flexible server by HTTP
@@ -210,7 +216,7 @@ It works without any external scripts and uses the script item.
See [Azure documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) for more details.
2. Link the template to a host.
-3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.
+3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
## Zabbix configuration
@@ -223,10 +229,9 @@ No specific Zabbix configuration is required.
|{$AZURE.APP_ID} |<p>Microsoft Azure app ID.</p> |`` |
|{$AZURE.DATA.TIMEOUT} |<p>A response timeout for API.</p> |`60s` |
|{$AZURE.DB.ABORTED_CONN.MAX.WARN} |<p>The number of failed attempts to connect to the MySQL server for trigger expression.</p> |`25` |
-|{$AZURE.DB.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization in %.</p> |`90` |
-|{$AZURE.DB.MEMORY.UTIL.CRIT} |<p>The critical threshold of the memory utilization in %.</p> |`90` |
-|{$AZURE.DB.STORAGE.PUSED.CRIT} |<p>The critical threshold of the storage utilization in %.</p> |`90` |
-|{$AZURE.DB.STORAGE.PUSED.WARN} |<p>The warning threshold of the storage utilization in %.</p> |`80` |
+|{$AZURE.DB.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.CRIT} |<p>The critical threshold of the storage utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.WARN} |<p>The warning threshold of the storage utilization expressed in %.</p> |`80` |
|{$AZURE.PASSWORD} |<p>Microsoft Azure password.</p> |`` |
|{$AZURE.RESOURCE_ID} |<p>Microsoft Azure virtual machine ID.</p> |`` |
|{$AZURE.SUBSCRIPTION_ID} |<p>Microsoft Azure subscription ID.</p> |`` |
@@ -243,7 +248,7 @@ There are no template links in this template.
|Group|Name|Description|Type|Key and additional info|
|-----|----|-----------|----|---------------------|
-|Azure |Azure MySQL: Get data |<p>The result of API requests is in the JSON.</p> |SCRIPT |azure.db.mysql.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
+|Azure |Azure MySQL: Get data |<p>The result of API requests is expressed in the JSON.</p> |SCRIPT |azure.db.mysql.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
|Azure |Azure MySQL: Get errors |<p>A list of errors from API requests.</p> |DEPENDENT |azure.db.mysql.data.errors<p>**Preprocessing**:</p><p>- JSONPATH: `$.errors`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
|Azure |Azure MySQL: Availability state |<p>The availability status of the resource.</p> |DEPENDENT |azure.db.mysql.availability.state<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.availabilityState`</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- STR_REPLACE: `Available 0`</p><p>- STR_REPLACE: `Degraded 1`</p><p>- STR_REPLACE: `Unavailable 2`</p><p>- STR_REPLACE: `Unknown 3`</p><p>- IN_RANGE: `0 3 `</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
|Azure |Azure MySQL: Availability status detailed |<p>The summary description of the availability status.</p> |DEPENDENT |azure.db.mysql.availability.details<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.summary`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
@@ -256,11 +261,11 @@ There are no template links in this template.
|Azure |Azure MySQL: Connections aborted |<p>The count of aborted connections.</p> |DEPENDENT |azure.db.mysql.connections.aborted<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.aborted_connections.total`</p> |
|Azure |Azure MySQL: Queries |<p>The count of queries.</p> |DEPENDENT |azure.db.mysql.queries<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.Queries.total`</p> |
|Azure |Azure MySQL: IO consumption percent |<p>The IO percent.</p> |DEPENDENT |azure.db.mysql.io.consumption.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.io_consumption_percent.maximum`</p> |
-|Azure |Azure MySQL: Storage percent |<p>Storage utilization in %.</p> |DEPENDENT |azure.db.mysql.storage.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_percent.maximum`</p> |
-|Azure |Azure MySQL: Storage used |<p>Used storage space in bytes.</p> |DEPENDENT |azure.db.mysql.storage.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_used.maximum`</p> |
-|Azure |Azure MySQL: Storage limit |<p>The storage limit in bytes.</p> |DEPENDENT |azure.db.mysql.storage.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_limit.maximum`</p> |
-|Azure |Azure MySQL: Backup storage used |<p>The backup storage used in bytes.</p> |DEPENDENT |azure.db.mysql.storage.backup.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.backup_storage_used.maximum`</p> |
-|Azure |Azure MySQL: Replication lag |<p>Replication lag in seconds.</p> |DEPENDENT |azure.db.mysql.replication.lag<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.replication_lag.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure MySQL: Storage percent |<p>The storage utilization expressed in %.</p> |DEPENDENT |azure.db.mysql.storage.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_percent.maximum`</p> |
+|Azure |Azure MySQL: Storage used |<p>Used storage space expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_used.maximum`</p> |
+|Azure |Azure MySQL: Storage limit |<p>The storage limit expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_limit.maximum`</p> |
+|Azure |Azure MySQL: Backup storage used |<p>Used backup storage expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.backup.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.backup_storage_used.maximum`</p> |
+|Azure |Azure MySQL: Replication lag |<p>The replication lag expressed in seconds.</p> |DEPENDENT |azure.db.mysql.replication.lag<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.replication_lag.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
|Azure |Azure MySQL: CPU credits remaining |<p>Remaining CPU credits.</p> |DEPENDENT |azure.db.mysql.cpu.credits.remaining<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.cpu_credits_remaining.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
|Azure |Azure MySQL: CPU credits consumed |<p>Consumed CPU credits.</p> |DEPENDENT |azure.db.mysql.cpu.credits.consumed<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.cpu_credits_consumed.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
@@ -272,7 +277,7 @@ There are no template links in this template.
|Azure MySQL: MySQL server is unavailable |<p>The resource state is unavailable.</p> |`last(/Azure MySQL flexible server by HTTP/azure.db.mysql.availability.state)=2` |HIGH | |
|Azure MySQL: MySQL server is degraded |<p>The resource is in degraded state.</p> |`last(/Azure MySQL flexible server by HTTP/azure.db.mysql.availability.state)=1` |AVERAGE | |
|Azure MySQL: MySQL server is in unknown state |<p>The resource state is unknown.</p> |`last(/Azure MySQL flexible server by HTTP/azure.db.mysql.availability.state)=3` |WARNING | |
-|Azure MySQL: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure MySQL flexible server by HTTP/azure.db.mysql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}` |HIGH | |
+|Azure MySQL: High CPU utilization |<p>The CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure MySQL flexible server by HTTP/azure.db.mysql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}` |HIGH | |
|Azure MySQL: Server has aborted connections |<p>The number of failed attempts to connect to the MySQL server is more than {$AZURE.DB.ABORTED_CONN.MAX.WARN}.</p> |`min(/Azure MySQL flexible server by HTTP/azure.db.mysql.connections.aborted,5m)>{$AZURE.DB.ABORTED_CONN.MAX.WARN}` |AVERAGE | |
|Azure MySQL: Storage space is critically low |<p>Critical utilization of the storage space.</p> |`last(/Azure MySQL flexible server by HTTP/azure.db.mysql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.CRIT}` |AVERAGE | |
|Azure MySQL: Storage space is low |<p>High utilization of the storage space.</p> |`last(/Azure MySQL flexible server by HTTP/azure.db.mysql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.WARN}` |WARNING | |
@@ -281,7 +286,7 @@ There are no template links in this template.
Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
# Azure MySQL single server by HTTP
@@ -302,7 +307,7 @@ It works without any external scripts and uses the script item.
See [Azure documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) for more details.
2. Link the template to a host.
-3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.
+3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
## Zabbix configuration
@@ -314,11 +319,11 @@ No specific Zabbix configuration is required.
|----|-----------|-------|
|{$AZURE.APP_ID} |<p>Microsoft Azure app ID.</p> |`` |
|{$AZURE.DATA.TIMEOUT} |<p>A response timeout for API.</p> |`60s` |
-|{$AZURE.DB.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization in %.</p> |`90` |
+|{$AZURE.DB.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization expressed in %.</p> |`90` |
|{$AZURE.DB.FAILED_CONN.MAX.WARN} |<p>The number of failed attempts to connect to the MySQL server for trigger expression.</p> |`25` |
-|{$AZURE.DB.MEMORY.UTIL.CRIT} |<p>The critical threshold of the memory utilization in %.</p> |`90` |
-|{$AZURE.DB.STORAGE.PUSED.CRIT} |<p>The critical threshold of the storage utilization in %.</p> |`90` |
-|{$AZURE.DB.STORAGE.PUSED.WARN} |<p>The warning threshold of the storage utilization in %.</p> |`80` |
+|{$AZURE.DB.MEMORY.UTIL.CRIT} |<p>The critical threshold of the memory utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.CRIT} |<p>The critical threshold of the storage utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.WARN} |<p>The warning threshold of the storage utilization expressed in %.</p> |`80` |
|{$AZURE.PASSWORD} |<p>Microsoft Azure password.</p> |`` |
|{$AZURE.RESOURCE_ID} |<p>Microsoft Azure virtual machine ID.</p> |`` |
|{$AZURE.SUBSCRIPTION_ID} |<p>Microsoft Azure subscription ID.</p> |`` |
@@ -335,7 +340,7 @@ There are no template links in this template.
|Group|Name|Description|Type|Key and additional info|
|-----|----|-----------|----|---------------------|
-|Azure |Azure MySQL: Get data |<p>The result of API requests is in the JSON.</p> |SCRIPT |azure.db.mysql.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
+|Azure |Azure MySQL: Get data |<p>The result of API requests is expressed in the JSON.</p> |SCRIPT |azure.db.mysql.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
|Azure |Azure MySQL: Get errors |<p>A list of errors from API requests.</p> |DEPENDENT |azure.db.mysql.data.errors<p>**Preprocessing**:</p><p>- JSONPATH: `$.errors`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
|Azure |Azure MySQL: Availability state |<p>The availability status of the resource.</p> |DEPENDENT |azure.db.mysql.availability.state<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.availabilityState`</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- STR_REPLACE: `Available 0`</p><p>- STR_REPLACE: `Degraded 1`</p><p>- STR_REPLACE: `Unavailable 2`</p><p>- STR_REPLACE: `Unknown 3`</p><p>- IN_RANGE: `0 3 `</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
|Azure |Azure MySQL: Availability status detailed |<p>The summary description of the availability status.</p> |DEPENDENT |azure.db.mysql.availability.details<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.summary`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
@@ -346,14 +351,14 @@ There are no template links in this template.
|Azure |Azure MySQL: Connections active |<p>The count of active connections.</p> |DEPENDENT |azure.db.mysql.connections.active<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.active_connections.average`</p> |
|Azure |Azure MySQL: Connections failed |<p>The count of failed connections.</p> |DEPENDENT |azure.db.mysql.connections.failed<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.connections_failed.total`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
|Azure |Azure MySQL: IO consumption percent |<p>The IO percent.</p> |DEPENDENT |azure.db.mysql.io.consumption.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.io_consumption_percent.average`</p> |
-|Azure |Azure MySQL: Storage percent |<p>Storage utilization in %.</p> |DEPENDENT |azure.db.mysql.storage.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_percent.average`</p> |
-|Azure |Azure MySQL: Storage used |<p>Used storage space in bytes.</p> |DEPENDENT |azure.db.mysql.storage.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_used.average`</p> |
-|Azure |Azure MySQL: Storage limit |<p>The storage limit in bytes.</p> |DEPENDENT |azure.db.mysql.storage.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_limit.maximum`</p> |
-|Azure |Azure MySQL: Backup storage used |<p>The backup storage used in bytes.</p> |DEPENDENT |azure.db.mysql.storage.backup.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.backup_storage_used.average`</p> |
-|Azure |Azure MySQL: Replication lag |<p>Replication lag in seconds.</p> |DEPENDENT |azure.db.mysql.replication.lag<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.seconds_behind_master.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
-|Azure |Azure MySQL: Server log storage percent |<p>The storage utilization by a server log in %.</p> |DEPENDENT |azure.db.mysql.storage.server.log.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_percent.average`</p> |
-|Azure |Azure MySQL: Server log storage used |<p>The storage space used by a server log in bytes.</p> |DEPENDENT |azure.db.mysql.storage.server.log.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_usage.average`</p> |
-|Azure |Azure MySQL: Server log storage limit |<p>The storage limit of server log in bytes.</p> |DEPENDENT |azure.db.mysql.storage.server.log.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_limit.maximum`</p> |
+|Azure |Azure MySQL: Storage percent |<p>The storage utilization expressed in %.</p> |DEPENDENT |azure.db.mysql.storage.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_percent.average`</p> |
+|Azure |Azure MySQL: Storage used |<p>Used storage space expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_used.average`</p> |
+|Azure |Azure MySQL: Storage limit |<p>The storage limit expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_limit.maximum`</p> |
+|Azure |Azure MySQL: Backup storage used |<p>Used backup storage expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.backup.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.backup_storage_used.average`</p> |
+|Azure |Azure MySQL: Replication lag |<p>The replication lag expressed in seconds.</p> |DEPENDENT |azure.db.mysql.replication.lag<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.seconds_behind_master.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure MySQL: Server log storage percent |<p>The storage utilization by a server log expressed in %.</p> |DEPENDENT |azure.db.mysql.storage.server.log.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_percent.average`</p> |
+|Azure |Azure MySQL: Server log storage used |<p>The storage space used by a server log expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.server.log.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_usage.average`</p> |
+|Azure |Azure MySQL: Server log storage limit |<p>The storage limit of a server log expressed in bytes.</p> |DEPENDENT |azure.db.mysql.storage.server.log.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_limit.maximum`</p> |
## Triggers
@@ -363,7 +368,7 @@ There are no template links in this template.
|Azure MySQL: MySQL server is unavailable |<p>The resource state is unavailable.</p> |`last(/Azure MySQL single server by HTTP/azure.db.mysql.availability.state)=2` |HIGH | |
|Azure MySQL: MySQL server is degraded |<p>The resource is in degraded state.</p> |`last(/Azure MySQL single server by HTTP/azure.db.mysql.availability.state)=1` |AVERAGE | |
|Azure MySQL: MySQL server is in unknown state |<p>The resource state is unknown.</p> |`last(/Azure MySQL single server by HTTP/azure.db.mysql.availability.state)=3` |WARNING | |
-|Azure MySQL: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure MySQL single server by HTTP/azure.db.mysql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}` |HIGH | |
+|Azure MySQL: High CPU utilization |<p>The CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure MySQL single server by HTTP/azure.db.mysql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}` |HIGH | |
|Azure MySQL: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Azure MySQL single server by HTTP/azure.db.mysql.memory.percentage,5m)>{$AZURE.DB.MEMORY.UTIL.CRIT}` |AVERAGE | |
|Azure MySQL: Server has failed connections |<p>The number of failed attempts to connect to the MySQL server is more than {$AZURE.DB.FAILED_CONN.MAX.WARN}.</p> |`min(/Azure MySQL single server by HTTP/azure.db.mysql.connections.failed,5m)>{$AZURE.DB.FAILED_CONN.MAX.WARN}` |AVERAGE | |
|Azure MySQL: Storage space is critically low |<p>Critical utilization of the storage space.</p> |`last(/Azure MySQL single server by HTTP/azure.db.mysql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.CRIT}` |AVERAGE | |
@@ -373,5 +378,192 @@ There are no template links in this template.
Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
+
+# Azure PostgreSQL flexible server by HTTP
+
+## Overview
+
+For Zabbix version: 6.4 and higher.
+This template is designed to monitor Microsoft Azure PostgreSQL flexible servers by HTTP.
+It works without any external scripts and uses the script item.
+
+## Setup
+
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/http) for basic instructions.
+
+1. Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.
+
+ `az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
+
+ See [Azure documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) for more details.
+
+2. Link the template to a host.
+3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
+
+## Zabbix configuration
+
+No specific Zabbix configuration is required.
+
+### Macros used
+
+|Name|Description|Default|
+|----|-----------|-------|
+|{$AZURE.APP_ID} |<p>Microsoft Azure app ID.</p> |`` |
+|{$AZURE.DATA.TIMEOUT} |<p>A response timeout for API.</p> |`60s` |
+|{$AZURE.DB.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.MEMORY.UTIL.CRIT} |<p>The critical threshold of the memory utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.CRIT} |<p>The critical threshold of the storage utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.WARN} |<p>The warning threshold of the storage utilization expressed in %.</p> |`80` |
+|{$AZURE.PASSWORD} |<p>Microsoft Azure password.</p> |`` |
+|{$AZURE.RESOURCE_ID} |<p>Microsoft Azure virtual machine ID.</p> |`` |
+|{$AZURE.SUBSCRIPTION_ID} |<p>Microsoft Azure subscription ID.</p> |`` |
+|{$AZURE.TENANT_ID} |<p>Microsoft Azure tenant ID.</p> |`` |
+
+## Template links
+
+There are no template links in this template.
+
+## Discovery rules
+
+
+## Items collected
+
+|Group|Name|Description|Type|Key and additional info|
+|-----|----|-----------|----|---------------------|
+|Azure |Azure PostgreSQL: Get data |<p>The result of API requests is expressed in the JSON.</p> |SCRIPT |azure.db.pgsql.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
+|Azure |Azure PostgreSQL: Get errors |<p>A list of errors from API requests.</p> |DEPENDENT |azure.db.pgsql.data.errors<p>**Preprocessing**:</p><p>- JSONPATH: `$.errors`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
+|Azure |Azure PostgreSQL: Availability state |<p>The availability status of the resource.</p> |DEPENDENT |azure.db.pgsql.availability.state<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.availabilityState`</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- STR_REPLACE: `Available 0`</p><p>- STR_REPLACE: `Degraded 1`</p><p>- STR_REPLACE: `Unavailable 2`</p><p>- STR_REPLACE: `Unknown 3`</p><p>- IN_RANGE: `0 3 `</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
+|Azure |Azure PostgreSQL: Availability status detailed |<p>The summary description of the availability status.</p> |DEPENDENT |azure.db.pgsql.availability.details<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.summary`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
+|Azure |Azure PostgreSQL: Percentage CPU |<p>The CPU percent of a host.</p> |DEPENDENT |azure.db.pgsql.cpu.percentage<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.cpu_percent.average`</p> |
+|Azure |Azure PostgreSQL: Memory utilization |<p>The memory percent of a host.</p> |DEPENDENT |azure.db.pgsql.memory.percentage<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.memory_percent.average`</p> |
+|Azure |Azure PostgreSQL: Network out |<p>Network outbound traffic across the active connections.</p> |DEPENDENT |azure.db.pgsql.network.egress<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.network_bytes_egress.total`</p><p>- MULTIPLIER: `0.1333`</p> |
+|Azure |Azure PostgreSQL: Network in |<p>Network inbound traffic across the active connections.</p> |DEPENDENT |azure.db.pgsql.network.ingress<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.network_bytes_ingress.total`</p><p>- MULTIPLIER: `0.1333`</p> |
+|Azure |Azure PostgreSQL: Connections active |<p>The count of active connections.</p> |DEPENDENT |azure.db.pgsql.connections.active<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.active_connections.average`</p> |
+|Azure |Azure PostgreSQL: Connections succeeded |<p>The count of succeeded connections.</p> |DEPENDENT |azure.db.pgsql.connections.succeeded<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.connections_succeeded.total`</p> |
+|Azure |Azure PostgreSQL: Connections failed |<p>The count of failed connections.</p> |DEPENDENT |azure.db.pgsql.connections.failed<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.connections_failed.total`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Storage percent |<p>The storage utilization expressed in %.</p> |DEPENDENT |azure.db.pgsql.storage.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_percent.average`</p> |
+|Azure |Azure PostgreSQL: Storage used |<p>Used storage space expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_used.average`</p> |
+|Azure |Azure PostgreSQL: Storage free |<p>Free storage space expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.free<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_free.average`</p> |
+|Azure |Azure PostgreSQL: Backup storage used |<p>Used backup storage expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.backup.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.backup_storage_used.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: CPU credits remaining |<p>The total number of credits available to burst.</p> |DEPENDENT |azure.db.pgsql.cpu.credits.remaining<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.cpu_credits_remaining.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: CPU credits consumed |<p>The total number of credits consumed by the database server.</p> |DEPENDENT |azure.db.pgsql.cpu.credits.consumed<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.cpu_credits_consumed.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Data disk queue depth |<p>The number of outstanding I/O operations to the data disk.</p> |DEPENDENT |azure.db.pgsql.disk.queue.depth<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.disk_queue_depth.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Data disk IOPS |<p>I/O Operations per second.</p> |DEPENDENT |azure.db.pgsql.iops<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.iops.average`</p> |
+|Azure |Azure PostgreSQL: Data disk read IOPS |<p>The number of the data disk I/O read operations per second.</p> |DEPENDENT |azure.db.pgsql.iops.read<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.read_iops.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Data disk write IOPS |<p>The number of the data disk I/O write operations per second.</p> |DEPENDENT |azure.db.pgsql.iops.write<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.write_iops.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Data disk read Bps |<p>Bytes read per second from the data disk during the monitoring period.</p> |DEPENDENT |azure.db.pgsql.disk.bps.read<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.read_throughput.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Data disk write Bps |<p>Bytes written per second to the data disk during the monitoring period.</p> |DEPENDENT |azure.db.pgsql.disk.bps.write<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.write_throughput.average`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Transaction log storage used |<p>The storage space used by a transaction log expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.txlogs.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.txlogs_storage_used.average`</p> |
+|Azure |Azure PostgreSQL: Maximum used transaction IDs |<p>The maximum number of used transaction IDs.</p> |DEPENDENT |azure.db.pgsql.txid.used.max<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.maximum_used_transactionIDs.average`</p> |
+
+## Triggers
+
+|Name|Description|Expression|Severity|Dependencies and additional info|
+|----|-----------|----|----|----|
+|Azure PostgreSQL: There are errors in requests to API |<p>Zabbix has received errors in response to API requests.</p> |`length(last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.data.errors))>0` |AVERAGE | |
+|Azure PostgreSQL: PostgreSQL server is unavailable |<p>The resource state is unavailable.</p> |`last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.availability.state)=2` |HIGH | |
+|Azure PostgreSQL: PostgreSQL server is degraded |<p>The resource is in degraded state.</p> |`last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.availability.state)=1` |AVERAGE | |
+|Azure PostgreSQL: PostgreSQL server is in unknown state |<p>The resource state is unknown.</p> |`last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.availability.state)=3` |WARNING | |
+|Azure PostgreSQL: High CPU utilization |<p>The CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}` |HIGH | |
+|Azure PostgreSQL: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.memory.percentage,5m)>{$AZURE.DB.MEMORY.UTIL.CRIT}` |AVERAGE | |
+|Azure PostgreSQL: Storage space is critically low |<p>Critical utilization of the storage space.</p> |`last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.CRIT}` |AVERAGE | |
+|Azure PostgreSQL: Storage space is low |<p>High utilization of the storage space.</p> |`last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.WARN}` |WARNING | |
+
+## Feedback
+
+Please report any issues with the template at https://support.zabbix.com.
+
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
+
+# Azure PostgreSQL single server by HTTP
+
+## Overview
+
+For Zabbix version: 6.4 and higher.
+This template is designed to monitor Microsoft Azure PostgreSQL servers by HTTP.
+It works without any external scripts and uses the script item.
+
+## Setup
+
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/http) for basic instructions.
+
+1. Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.
+
+ `az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
+
+ See [Azure documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli) for more details.
+
+2. Link the template to a host.
+3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
+
+## Zabbix configuration
+
+No specific Zabbix configuration is required.
+
+### Macros used
+
+|Name|Description|Default|
+|----|-----------|-------|
+|{$AZURE.APP_ID} |<p>Microsoft Azure app ID.</p> |`` |
+|{$AZURE.DATA.TIMEOUT} |<p>A response timeout for API.</p> |`60s` |
+|{$AZURE.DB.CPU.UTIL.CRIT} |<p>The critical threshold of the CPU utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.MEMORY.UTIL.CRIT} |<p>The critical threshold of the memory utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.CRIT} |<p>The critical threshold of the storage utilization expressed in %.</p> |`90` |
+|{$AZURE.DB.STORAGE.PUSED.WARN} |<p>The warning threshold of the storage utilization expressed in %.</p> |`80` |
+|{$AZURE.PASSWORD} |<p>Microsoft Azure password.</p> |`` |
+|{$AZURE.RESOURCE_ID} |<p>Microsoft Azure virtual machine ID.</p> |`` |
+|{$AZURE.SUBSCRIPTION_ID} |<p>Microsoft Azure subscription ID.</p> |`` |
+|{$AZURE.TENANT_ID} |<p>Microsoft Azure tenant ID.</p> |`` |
+
+## Template links
+
+There are no template links in this template.
+
+## Discovery rules
+
+
+## Items collected
+
+|Group|Name|Description|Type|Key and additional info|
+|-----|----|-----------|----|---------------------|
+|Azure |Azure PostgreSQL: Get data |<p>The result of API requests is expressed in the JSON.</p> |SCRIPT |azure.db.pgsql.data.get<p>**Expression**:</p>`The text is too long. Please see the template.` |
+|Azure |Azure PostgreSQL: Get errors |<p>A list of errors from API requests.</p> |DEPENDENT |azure.db.pgsql.data.errors<p>**Preprocessing**:</p><p>- JSONPATH: `$.errors`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
+|Azure |Azure PostgreSQL: Availability state |<p>The availability status of the resource.</p> |DEPENDENT |azure.db.pgsql.availability.state<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.availabilityState`</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- STR_REPLACE: `Available 0`</p><p>- STR_REPLACE: `Degraded 1`</p><p>- STR_REPLACE: `Unavailable 2`</p><p>- STR_REPLACE: `Unknown 3`</p><p>- IN_RANGE: `0 3 `</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 3`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
+|Azure |Azure PostgreSQL: Availability status detailed |<p>The summary description of the availability status.</p> |DEPENDENT |azure.db.pgsql.availability.details<p>**Preprocessing**:</p><p>- JSONPATH: `$.health.summary`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
+|Azure |Azure PostgreSQL: Percentage CPU |<p>The CPU percent of a host.</p> |DEPENDENT |azure.db.pgsql.cpu.percentage<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.cpu_percent.average`</p> |
+|Azure |Azure PsotgreSQL: Memory utilization |<p>The memory percent of a host.</p> |DEPENDENT |azure.db.pgsql.memory.percentage<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.memory_percent.average`</p> |
+|Azure |Azure PostgreSQL: Network out |<p>Network outbound traffic across the active connections.</p> |DEPENDENT |azure.db.pgsql.network.egress<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.network_bytes_egress.total`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p><p>- MULTIPLIER: `0.1333`</p> |
+|Azure |Azure PosgtreSQL: Network in |<p>Network inbound traffic across the active connections.</p> |DEPENDENT |azure.db.pgsql.network.ingress<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.network_bytes_ingress.total`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p><p>- MULTIPLIER: `0.1333`</p> |
+|Azure |Azure PostgreSQL: Connections active |<p>The count of active connections.</p> |DEPENDENT |azure.db.pgsql.connections.active<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.active_connections.average`</p> |
+|Azure |Azure PostgreSQL: Connections failed |<p>The count of failed connections.</p> |DEPENDENT |azure.db.pgsql.connections.failed<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.connections_failed.total`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: IO consumption percent |<p>The IO Percent.</p> |DEPENDENT |azure.db.pgsql.io.consumption.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.io_consumption_percent.average`</p> |
+|Azure |Azure PostgreSQL: Storage percent |<p>The storage utilization expressed in %.</p> |DEPENDENT |azure.db.pgsql.storage.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_percent.average`</p> |
+|Azure |Azure PostgreSQL: Storage used |<p>Used storage space expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_used.average`</p> |
+|Azure |Azure PostgreSQL: Storage limit |<p>The storage limit expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.storage_limit.maximum`</p> |
+|Azure |Azure PostgreSQL: Backup storage used |<p>Used backup storage expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.backup.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.backup_storage_used.average`</p> |
+|Azure |Azure PostgreSQL: Replication lag |<p>The replication lag expressed in seconds.</p> |DEPENDENT |azure.db.pgsql.replica.log.delay<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.pg_replica_log_delay_in_seconds.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Max lag across replicas in bytes |<p>Lag expressed in bytes for the most lagging replica.</p> |DEPENDENT |azure.db.pgsql.replica.log.delay.bytes<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.pg_replica_log_delay_in_bytes.maximum`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Azure |Azure PostgreSQL: Server log storage percent |<p>The storage utilization by a server log expressed in %.</p> |DEPENDENT |azure.db.pgsql.storage.server.log.percent<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_percent.average`</p> |
+|Azure |Azure PostgreSQL: Server log storage used |<p>The storage space used by a server log expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.server.log.used<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_usage.average`</p> |
+|Azure |Azure PostgreSQL: Server log storage limit |<p>The storage limit of a server log expressed in bytes.</p> |DEPENDENT |azure.db.pgsql.storage.server.log.limit<p>**Preprocessing**:</p><p>- JSONPATH: `$.metrics.serverlog_storage_limit.maximum`</p> |
+
+## Triggers
+
+|Name|Description|Expression|Severity|Dependencies and additional info|
+|----|-----------|----|----|----|
+|Azure PostgreSQL: There are errors in requests to API |<p>Zabbix has received errors in response to API requests.</p> |`length(last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.data.errors))>0` |AVERAGE | |
+|Azure PostgreSQL: PostgreSQL server is unavailable |<p>The resource state is unavailable.</p> |`last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.availability.state)=2` |HIGH | |
+|Azure PostgreSQL: PostgreSQL server is degraded |<p>The resource is in degraded state.</p> |`last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.availability.state)=1` |AVERAGE | |
+|Azure PostgreSQL: PostgreSQL server is in unknown state |<p>The resource state is unknown.</p> |`last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.availability.state)=3` |WARNING | |
+|Azure PostgreSQL: High CPU utilization |<p>The CPU utilization is too high. The system might be slow to respond.</p> |`min(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}` |HIGH | |
+|Azure PsotgreSQL: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.memory.percentage,5m)>{$AZURE.DB.MEMORY.UTIL.CRIT}` |AVERAGE | |
+|Azure PostgreSQL: Storage space is critically low |<p>Critical utilization of the storage space.</p> |`last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.CRIT}` |AVERAGE | |
+|Azure PostgreSQL: Storage space is low |<p>High utilization of the storage space.</p> |`last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.WARN}` |WARNING | |
+
+## Feedback
+
+Please report any issues with the template at https://support.zabbix.com.
+
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
diff --git a/templates/cloud/azure_http/template_cloud_azure_http.yaml b/templates/cloud/azure_http/template_cloud_azure_http.yaml
index 53bcf884e79..6cb3b0e55a8 100644
--- a/templates/cloud/azure_http/template_cloud_azure_http.yaml
+++ b/templates/cloud/azure_http/template_cloud_azure_http.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-10-17T08:20:23Z'
+ date: '2022-11-08T08:52:11Z'
template_groups:
-
uuid: c2c162144c2d4c5491c8801193af4945
@@ -20,13 +20,14 @@ zabbix_export:
description: |
This template is designed to monitor Microsoft Azure by HTTP.
It works without any external scripts and uses the script item.
+ Currently the template supports discovery of virtual machines (VMs), MySQL and PosgtreSQL servers.
Setup:
1. Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.
`az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.
2. Link the template to a host.
- 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID} and {$AZURE.SUBSCRIPTION_ID}.
+ 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, and {$AZURE.SUBSCRIPTION_ID}.
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
@@ -137,7 +138,9 @@ zabbix_export:
types = [
{"method": "Microsoft.Compute/virtualMachines", "version": "2022-03-01"},
{"method": "Microsoft.DBforMySQL/flexibleServers", "version": "2021-05-01"},
- {"method": "Microsoft.DBforMySQL/servers", "version": "2017-12-01"}
+ {"method": "Microsoft.DBforMySQL/servers", "version": "2017-12-01"},
+ {"method": "Microsoft.DBforPostgreSQL/flexibleServers", "version": "2021-06-01"},
+ {"method": "Microsoft.DBforPostgreSQL/servers", "version": "2017-12-01"}
];
data['errors'] = {},
data['resources'] = {};
@@ -204,7 +207,7 @@ zabbix_export:
}
return JSON.stringify(data);
- description: 'The result of API requests is in the JSON.'
+ description: 'The result of API requests is expressed in the JSON.'
timeout: '{$AZURE.DATA.TIMEOUT}'
parameters:
-
@@ -358,6 +361,139 @@ zabbix_export:
-
name: 'Azure MySQL single server by HTTP'
-
+ uuid: a4b35b5fe8c04b52a9640f2f41013230
+ name: 'PostgreSQL servers discovery'
+ type: DEPENDENT
+ key: azure.pgsql.servers.discovery
+ delay: '0'
+ filter:
+ evaltype: AND
+ conditions:
+ -
+ macro: '{#TYPE}'
+ value: ^Microsoft.DBforPostgreSQL
+ formulaid: G
+ -
+ macro: '{#NAME}'
+ value: '{$AZURE.PGSQL.DB.NAME.MATCHES}'
+ formulaid: E
+ -
+ macro: '{#NAME}'
+ value: '{$AZURE.PGSQL.DB.NAME.NOT_MATCHES}'
+ operator: NOT_MATCHES_REGEX
+ formulaid: F
+ -
+ macro: '{#LOCATION}'
+ value: '{$AZURE.PGSQL.DB.LOCATION.MATCHES}'
+ formulaid: C
+ -
+ macro: '{#LOCATION}'
+ value: '{$AZURE.PGSQL.DB.LOCATION.NOT_MATCHES}'
+ operator: NOT_MATCHES_REGEX
+ formulaid: D
+ -
+ macro: '{#GROUP}'
+ value: '{$AZURE.RESOURCE_GROUP.MATCHES}'
+ formulaid: B
+ -
+ macro: '{#GROUP}'
+ value: '{$AZURE.RESOURCE_GROUP.NOT_MATCHES}'
+ operator: NOT_MATCHES_REGEX
+ formulaid: A
+ description: 'The list of the PostgreSQL servers is provided by the subscription.'
+ host_prototypes:
+ -
+ uuid: 54f0e0ec288f4feb9a2dc58a8726bd1d
+ host: 'Azure PostgreSQL server {#NAME}'
+ name: 'Azure PostgreSQL server {#NAME}'
+ group_links:
+ -
+ group:
+ name: Databases
+ macros:
+ -
+ macro: '{$AZURE.RESOURCE_ID}'
+ value: '{#ID}'
+ tags:
+ -
+ tag: location
+ value: '{#LOCATION}'
+ -
+ tag: resource-group
+ value: '{#GROUP}'
+ -
+ tag: size
+ value: '{#SIZE}'
+ -
+ tag: version
+ value: '{#VERSION}'
+ master_item:
+ key: azure.get.resources
+ lld_macro_paths:
+ -
+ lld_macro: '{#GROUP}'
+ path: $.resourceGroup
+ -
+ lld_macro: '{#ID}'
+ path: $.id
+ -
+ lld_macro: '{#LOCATION}'
+ path: $.location
+ -
+ lld_macro: '{#NAME}'
+ path: $.name
+ -
+ lld_macro: '{#SIZE}'
+ path: $.sku.name
+ -
+ lld_macro: '{#TYPE}'
+ path: $.type
+ -
+ lld_macro: '{#VERSION}'
+ path: $.properties.version
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.resources.value
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 6h
+ overrides:
+ -
+ name: 'Flexible server'
+ step: '1'
+ filter:
+ conditions:
+ -
+ macro: '{#TYPE}'
+ value: Microsoft.DBforPostgreSQL/flexibleServers
+ formulaid: A
+ operations:
+ -
+ operationobject: HOST_PROTOTYPE
+ operator: REGEXP
+ templates:
+ -
+ name: 'Azure PostgreSQL flexible server by HTTP'
+ -
+ name: 'Single server'
+ step: '2'
+ filter:
+ conditions:
+ -
+ macro: '{#TYPE}'
+ value: Microsoft.DBforPostgreSQL/servers
+ formulaid: A
+ operations:
+ -
+ operationobject: HOST_PROTOTYPE
+ operator: REGEXP
+ templates:
+ -
+ name: 'Azure PostgreSQL single server by HTTP'
+ -
uuid: f9386233186648ce828f406c52972ce5
name: 'Virtual machines discovery'
type: DEPENDENT
@@ -478,24 +614,40 @@ zabbix_export:
-
macro: '{$AZURE.MYSQL.DB.LOCATION.MATCHES}'
value: '.*'
- description: 'This macro is used in MySQL servers discovery rules.'
+ description: 'This macro is used in MySQL servers discovery rule.'
-
macro: '{$AZURE.MYSQL.DB.LOCATION.NOT_MATCHES}'
value: CHANGE_IF_NEEDED
- description: 'This macro is used in MySQL servers discovery rules.'
+ description: 'This macro is used in MySQL servers discovery rule.'
-
macro: '{$AZURE.MYSQL.DB.NAME.MATCHES}'
value: '.*'
- description: 'This macro is used in MySQL servers discovery rules.'
+ description: 'This macro is used in MySQL servers discovery rule.'
-
macro: '{$AZURE.MYSQL.DB.NAME.NOT_MATCHES}'
value: CHANGE_IF_NEEDED
- description: 'This macro is used in MySQL servers discovery rules.'
+ description: 'This macro is used in MySQL servers discovery rule.'
-
macro: '{$AZURE.PASSWORD}'
type: SECRET_TEXT
description: 'Microsoft Azure password.'
-
+ macro: '{$AZURE.PGSQL.DB.LOCATION.MATCHES}'
+ value: '.*'
+ description: 'This macro is used in PostgreSQL servers discovery rule.'
+ -
+ macro: '{$AZURE.PGSQL.DB.LOCATION.NOT_MATCHES}'
+ value: CHANGE_IF_NEEDED
+ description: 'This macro is used in PostgreSQL servers discovery rule.'
+ -
+ macro: '{$AZURE.PGSQL.DB.NAME.MATCHES}'
+ value: '.*'
+ description: 'This macro is used in PostgreSQL servers discovery rule.'
+ -
+ macro: '{$AZURE.PGSQL.DB.NAME.NOT_MATCHES}'
+ value: CHANGE_IF_NEEDED
+ description: 'This macro is used in PostgreSQL servers discovery rule.'
+ -
macro: '{$AZURE.RESOURCE_GROUP.MATCHES}'
value: '.*'
description: 'This macro is used in discovery rules.'
@@ -538,7 +690,7 @@ zabbix_export:
`az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.
2. Link the template to a host.
- 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.
+ 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
@@ -802,7 +954,7 @@ zabbix_export:
name: 'Azure MySQL: High CPU utilization'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
priority: HIGH
- description: 'CPU utilization is too high. The system might be slow to respond.'
+ description: 'The CPU utilization is too high. The system might be slow to respond.'
tags:
-
tag: scope
@@ -998,7 +1150,7 @@ zabbix_export:
}
return JSON.stringify(data);
- description: 'The result of API requests is in the JSON.'
+ description: 'The result of API requests is expressed in the JSON.'
timeout: '{$AZURE.DATA.TIMEOUT}'
parameters:
-
@@ -1141,7 +1293,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: s
- description: 'Replication lag in seconds.'
+ description: 'The replication lag expressed in seconds.'
preprocessing:
-
type: JSONPATH
@@ -1163,7 +1315,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'The backup storage used in bytes.'
+ description: 'Used backup storage expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -1184,7 +1336,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'The storage limit in bytes.'
+ description: 'The storage limit expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -1205,7 +1357,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: '%'
- description: 'Storage utilization in %.'
+ description: 'The storage utilization expressed in %.'
preprocessing:
-
type: JSONPATH
@@ -1249,7 +1401,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'Used storage space in bytes.'
+ description: 'Used storage space expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -1283,19 +1435,15 @@ zabbix_export:
-
macro: '{$AZURE.DB.CPU.UTIL.CRIT}'
value: '90'
- description: 'The critical threshold of the CPU utilization in %.'
- -
- macro: '{$AZURE.DB.MEMORY.UTIL.CRIT}'
- value: '90'
- description: 'The critical threshold of the memory utilization in %.'
+ description: 'The critical threshold of the CPU utilization expressed in %.'
-
macro: '{$AZURE.DB.STORAGE.PUSED.CRIT}'
value: '90'
- description: 'The critical threshold of the storage utilization in %.'
+ description: 'The critical threshold of the storage utilization expressed in %.'
-
macro: '{$AZURE.DB.STORAGE.PUSED.WARN}'
value: '80'
- description: 'The warning threshold of the storage utilization in %.'
+ description: 'The warning threshold of the storage utilization expressed in %.'
-
macro: '{$AZURE.PASSWORD}'
type: SECRET_TEXT
@@ -1339,7 +1487,7 @@ zabbix_export:
`az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.
2. Link the template to a host.
- 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.
+ 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
@@ -1542,7 +1690,7 @@ zabbix_export:
name: 'Azure MySQL: High CPU utilization'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
priority: HIGH
- description: 'CPU utilization is too high. The system might be slow to respond.'
+ description: 'The CPU utilization is too high. The system might be slow to respond.'
tags:
-
tag: scope
@@ -1737,7 +1885,7 @@ zabbix_export:
}
return JSON.stringify(data);
- description: 'The result of API requests is in the JSON.'
+ description: 'The result of API requests is expressed in the JSON.'
timeout: '{$AZURE.DATA.TIMEOUT}'
parameters:
-
@@ -1874,7 +2022,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: s
- description: 'Replication lag in seconds.'
+ description: 'The replication lag expressed in seconds.'
preprocessing:
-
type: JSONPATH
@@ -1896,7 +2044,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'The backup storage used in bytes.'
+ description: 'Used backup storage expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -1917,7 +2065,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'The storage limit in bytes.'
+ description: 'The storage limit expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -1938,7 +2086,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: '%'
- description: 'Storage utilization in %.'
+ description: 'The storage utilization expressed in %.'
preprocessing:
-
type: JSONPATH
@@ -1982,7 +2130,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'The storage limit of server log in bytes.'
+ description: 'The storage limit of a server log expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -2003,7 +2151,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: '%'
- description: 'The storage utilization by a server log in %.'
+ description: 'The storage utilization by a server log expressed in %.'
preprocessing:
-
type: JSONPATH
@@ -2024,7 +2172,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'The storage space used by a server log in bytes.'
+ description: 'The storage space used by a server log expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -2045,7 +2193,7 @@ zabbix_export:
history: 7d
value_type: FLOAT
units: B
- description: 'Used storage space in bytes.'
+ description: 'Used storage space expressed in bytes.'
preprocessing:
-
type: JSONPATH
@@ -2075,7 +2223,7 @@ zabbix_export:
-
macro: '{$AZURE.DB.CPU.UTIL.CRIT}'
value: '90'
- description: 'The critical threshold of the CPU utilization in %.'
+ description: 'The critical threshold of the CPU utilization expressed in %.'
-
macro: '{$AZURE.DB.FAILED_CONN.MAX.WARN}'
value: '25'
@@ -2083,15 +2231,15 @@ zabbix_export:
-
macro: '{$AZURE.DB.MEMORY.UTIL.CRIT}'
value: '90'
- description: 'The critical threshold of the memory utilization in %.'
+ description: 'The critical threshold of the memory utilization expressed in %.'
-
macro: '{$AZURE.DB.STORAGE.PUSED.CRIT}'
value: '90'
- description: 'The critical threshold of the storage utilization in %.'
+ description: 'The critical threshold of the storage utilization expressed in %.'
-
macro: '{$AZURE.DB.STORAGE.PUSED.WARN}'
value: '80'
- description: 'The warning threshold of the storage utilization in %.'
+ description: 'The warning threshold of the storage utilization expressed in %.'
-
macro: '{$AZURE.PASSWORD}'
type: SECRET_TEXT
@@ -2123,6 +2271,1729 @@ zabbix_export:
value: '3'
newvalue: Unknown
-
+ uuid: 35ef29f24158444097272d2ea7fa6044
+ template: 'Azure PostgreSQL flexible server by HTTP'
+ name: 'Azure PostgreSQL flexible server by HTTP'
+ description: |
+ This template is designed to monitor Microsoft Azure PostgreSQL flexible servers by HTTP.
+ It works without any external scripts and uses the script item.
+
+ Setup:
+ 1. Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.
+ `az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
+ See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.
+ 2. Link the template to a host.
+ 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
+
+ You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
+
+ Template tooling version used: 0.42
+ groups:
+ -
+ name: Templates/Cloud
+ items:
+ -
+ uuid: 7f7deae517e54cf582ae758a6988037b
+ name: 'Azure PostgreSQL: Availability status detailed'
+ type: DEPENDENT
+ key: azure.db.pgsql.availability.details
+ delay: '0'
+ history: 7d
+ trends: '0'
+ value_type: CHAR
+ description: 'The summary description of the availability status.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.health.summary
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1h
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: health
+ -
+ uuid: cd9072a3895c42dab794707f3bcaf743
+ name: 'Azure PostgreSQL: Availability state'
+ type: DEPENDENT
+ key: azure.db.pgsql.availability.state
+ delay: '0'
+ history: 7d
+ description: 'The availability status of the resource.'
+ valuemap:
+ name: 'Azure resource health state'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.health.availabilityState
+ error_handler: CUSTOM_VALUE
+ error_handler_params: '3'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Available
+ - '0'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Degraded
+ - '1'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Unavailable
+ - '2'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Unknown
+ - '3'
+ -
+ type: IN_RANGE
+ parameters:
+ - '0'
+ - '3'
+ error_handler: CUSTOM_VALUE
+ error_handler_params: '3'
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1h
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: health
+ triggers:
+ -
+ uuid: 65b5c39b48e248c4866c511bbba91e1b
+ expression: 'last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.availability.state)=1'
+ name: 'Azure PostgreSQL: PostgreSQL server is degraded'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'The resource is in degraded state.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: d8ce86c853064cba80c9883052ed1403
+ expression: 'last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.availability.state)=3'
+ name: 'Azure PostgreSQL: PostgreSQL server is in unknown state'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'The resource state is unknown.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: 9572c9e56a6b44368bcf2d8a17a220d8
+ expression: 'last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.availability.state)=2'
+ name: 'Azure PostgreSQL: PostgreSQL server is unavailable'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: HIGH
+ description: 'The resource state is unavailable.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: 05ada75c666e45269c3c36159f9902cc
+ name: 'Azure PostgreSQL: Connections active'
+ type: DEPENDENT
+ key: azure.db.pgsql.connections.active
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The count of active connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.active_connections.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: 00d1116141874dbfb204ebfe96c203f1
+ name: 'Azure PostgreSQL: Connections failed'
+ type: DEPENDENT
+ key: azure.db.pgsql.connections.failed
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The count of failed connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.connections_failed.total
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: f422f01bf1c9484e880581f31f70e120
+ name: 'Azure PostgreSQL: Connections succeeded'
+ type: DEPENDENT
+ key: azure.db.pgsql.connections.succeeded
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The count of succeeded connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.connections_succeeded.total
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: 1f1270c6981b4d08864572410fdeccde
+ name: 'Azure PostgreSQL: CPU credits consumed'
+ type: DEPENDENT
+ key: azure.db.pgsql.cpu.credits.consumed
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The total number of credits consumed by the database server.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.cpu_credits_consumed.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: cpu
+ -
+ uuid: e55082c4a278435286335cebd2ae1cac
+ name: 'Azure PostgreSQL: CPU credits remaining'
+ type: DEPENDENT
+ key: azure.db.pgsql.cpu.credits.remaining
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The total number of credits available to burst.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.cpu_credits_remaining.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: cpu
+ -
+ uuid: 8d85c5c73c894cdda6324832a703fea2
+ name: 'Azure PostgreSQL: Percentage CPU'
+ type: DEPENDENT
+ key: azure.db.pgsql.cpu.percentage
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The CPU percent of a host.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.cpu_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: cpu
+ triggers:
+ -
+ uuid: f8672e4488b740a9a17395689c3d853c
+ expression: 'min(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}'
+ name: 'Azure PostgreSQL: High CPU utilization'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: HIGH
+ description: 'The CPU utilization is too high. The system might be slow to respond.'
+ tags:
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 06c4226667ec4c4489e6d3ad31c3135f
+ name: 'Azure PostgreSQL: Get errors'
+ type: DEPENDENT
+ key: azure.db.pgsql.data.errors
+ delay: '0'
+ history: 7d
+ trends: '0'
+ value_type: TEXT
+ description: 'A list of errors from API requests.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.errors
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1h
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: raw
+ triggers:
+ -
+ uuid: 55962f0d8a4c44c9a6b09da705e94c59
+ expression: 'length(last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.data.errors))>0'
+ name: 'Azure PostgreSQL: There are errors in requests to API'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'Zabbix has received errors in response to API requests.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: 1792c0566e8a438dad5e299d8f5b9094
+ name: 'Azure PostgreSQL: Get data'
+ type: SCRIPT
+ key: azure.db.pgsql.data.get
+ history: 0d
+ trends: '0'
+ value_type: TEXT
+ params: |
+ var AzureDB = {
+ params: {},
+ token: null,
+
+ setParams: function (params) {
+ ['app_id', 'password', 'tenant_id', 'subscription_id', 'resource_id'].forEach(function (field) {
+ if (typeof params !== 'object' || typeof params[field] === 'undefined' || params[field] === '') {
+ throw 'Required param is not set: ' + field + '.';
+ }
+ });
+
+ AzureDB.params = params;
+ },
+
+
+ request: function (url, data) {
+ if (typeof data === 'undefined' || data === null) {
+ data = '';
+ }
+
+ var response, request = new HttpRequest();
+ if (AzureDB.token) {
+ request.addHeader('Accept: application/json');
+ request.addHeader('Authorization: Bearer ' + AzureDB.token);
+ }
+
+ Zabbix.log(4, '[ Azure ] Sending request: ' + url);
+
+ if (data !== '') {
+ request.addHeader('Content-Type: application/x-www-form-urlencoded');
+ response = request.post(url, data);
+ }
+ else {
+ response = request.get(url);
+ }
+
+ Zabbix.log(4, '[ Azure ] Received response with status code ' + request.getStatus() + ': ' + response);
+
+ if (request.getStatus() !== 200 || response === null) {
+ throw 'Request failed with status code ' + request.getStatus() + ': ' + response;
+ }
+
+ try {
+ return JSON.parse(response);
+ }
+ catch (error) {
+ throw 'Failed to parse response received from API.';
+ }
+ }
+
+ };
+
+ var metrics = [
+ 'cpu_percent',
+ 'memory_percent',
+ 'iops',
+ 'disk_queue_depth',
+ 'read_throughput',
+ 'write_throughput',
+ 'read_iops',
+ 'write_iops',
+ 'network_bytes_egress',
+ 'network_bytes_ingress',
+ 'active_connections',
+ 'connections_failed',
+ 'connections_succeeded',
+ 'storage_percent',
+ 'storage_used',
+ 'storage_free',
+ 'txlogs_storage_used',
+ 'backup_storage_used',
+ 'maximum_used_transactionIDs',
+ 'cpu_credits_remaining',
+ 'cpu_credits_consumed'
+ ],
+ prepared_metrics = [],
+ data = {};
+ data['errors'] = {};
+ data['metrics'] = {};
+
+ try {
+ AzureDB.setParams(JSON.parse(value));
+
+ try {
+ result = AzureDB.request(
+ 'https://login.microsoftonline.com/' + encodeURIComponent(AzureDB.params.tenant_id) + '/oauth2/token',
+ 'grant_type=client_credentials&resource=' + encodeURIComponent('https://management.azure.com/') + '&client_id=' + encodeURIComponent(AzureDB.params.app_id) + '&client_secret=' + encodeURIComponent(AzureDB.params.password)
+ );
+
+ if ('access_token' in result) {
+ AzureDB.token = result['access_token'];
+ } else {
+ throw 'Auth response does not contain access token.';
+ }
+ }
+ catch (error) {
+ data.errors.auth = error.toString();
+ }
+
+ if (!('auth' in data.errors)) {
+ try {
+ health = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2020-05-01');
+ data.health = health.value[0].properties;
+ }
+ catch (error) {
+ data.errors.health = error.toString();
+ }
+
+ for (var i = 0; i < metrics.length; i += 20) {
+ var chunk = metrics.slice(i, i + 20);
+
+ prepared_metrics.push(
+ chunk.map(function(element) {
+ return encodeURIComponent(element);
+ }).join(',')
+ );
+ }
+
+ start_date = new Date((new Date().getTime()) - 600000).toISOString().replace(/\.\d+/, '');
+ end_date = new Date().toISOString().replace(/\.\d+/, '');
+
+ for (var j in prepared_metrics) {
+ try {
+ metrics_data = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.Insights/metrics?metricnames=' + prepared_metrics[j] + '&timespan=' + encodeURIComponent(start_date) + '/' + encodeURIComponent(end_date) + '&api-version=2021-05-01');
+ for (k in metrics_data.value) {
+ if (metrics_data.value[k].name.value === 'disk_queue_depth' ||
+ metrics_data.value[k].name.value === 'read_throughput' ||
+ metrics_data.value[k].name.value === 'write_throughput' ||
+ metrics_data.value[k].name.value === 'read_iops' ||
+ metrics_data.value[k].name.value === 'write_iops') {
+ data.metrics[metrics_data.value[k].name.value.replace(/(\s|\/)+/g, '')] = metrics_data.value[k].timeseries[0].data[metrics_data.value[k].timeseries[0].data.length - 6];
+ } else {
+ data.metrics[metrics_data.value[k].name.value.replace(/(\s|\/)+/g, '')] = metrics_data.value[k].timeseries[0].data[metrics_data.value[k].timeseries[0].data.length - 1];
+ }
+ }
+ }
+ catch (error) {
+ data.errors[prepared_metrics[j]] = error.toString();
+ }
+ }
+ }
+ }
+ catch (error) {
+ data.errors.params = error.toString();
+ }
+
+ if (Object.keys(data.errors).length !== 0) {
+ errors = 'Failed to receive data:';
+ for (var error in data.errors) {
+ errors += '\n' + error + ' : ' + data.errors[error];
+ }
+ data.errors = errors;
+ }
+ else {
+ data.errors = '';
+ }
+
+ return JSON.stringify(data);
+ description: 'The result of API requests is expressed in the JSON.'
+ timeout: '{$AZURE.DATA.TIMEOUT}'
+ parameters:
+ -
+ name: app_id
+ value: '{$AZURE.APP_ID}'
+ -
+ name: password
+ value: '{$AZURE.PASSWORD}'
+ -
+ name: tenant_id
+ value: '{$AZURE.TENANT_ID}'
+ -
+ name: subscription_id
+ value: '{$AZURE.SUBSCRIPTION_ID}'
+ -
+ name: resource_id
+ value: '{$AZURE.RESOURCE_ID}'
+ tags:
+ -
+ tag: component
+ value: raw
+ -
+ uuid: 9fc7a458995d4ac8a4c1d8550177471d
+ name: 'Azure PostgreSQL: Data disk read Bps'
+ type: DEPENDENT
+ key: azure.db.pgsql.disk.bps.read
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: Bps
+ description: 'Bytes read per second from the data disk during the monitoring period.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.read_throughput.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 46c500b44164430c952be3a1b2008fb8
+ name: 'Azure PostgreSQL: Data disk write Bps'
+ type: DEPENDENT
+ key: azure.db.pgsql.disk.bps.write
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: Bps
+ description: 'Bytes written per second to the data disk during the monitoring period.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.write_throughput.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: b8812461d49a4ff5a2177c2990969c38
+ name: 'Azure PostgreSQL: Data disk queue depth'
+ type: DEPENDENT
+ key: azure.db.pgsql.disk.queue.depth
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The number of outstanding I/O operations to the data disk.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.disk_queue_depth.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 10dd8ed658d8442ca39ac1decf9bc2f8
+ name: 'Azure PostgreSQL: Data disk IOPS'
+ type: DEPENDENT
+ key: azure.db.pgsql.iops
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '!ops'
+ description: 'I/O Operations per second.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.iops.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: dee65b110a4842ccba8e74eefc097304
+ name: 'Azure PostgreSQL: Data disk read IOPS'
+ type: DEPENDENT
+ key: azure.db.pgsql.iops.read
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '!ops'
+ description: 'The number of the data disk I/O read operations per second.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.read_iops.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 805dfa040c0a4700acac4b5b1f8a4d11
+ name: 'Azure PostgreSQL: Data disk write IOPS'
+ type: DEPENDENT
+ key: azure.db.pgsql.iops.write
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '!ops'
+ description: 'The number of the data disk I/O write operations per second.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.write_iops.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: d1d909c2dd0d42649094ec8339e08881
+ name: 'Azure PostgreSQL: Memory utilization'
+ type: DEPENDENT
+ key: azure.db.pgsql.memory.percentage
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The memory percent of a host.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.memory_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: memory
+ triggers:
+ -
+ uuid: aac52a89709044ed987a365a1d5af17b
+ expression: 'min(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.memory.percentage,5m)>{$AZURE.DB.MEMORY.UTIL.CRIT}'
+ name: 'Azure PostgreSQL: High memory utilization'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'The system is running out of free memory.'
+ tags:
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 040898e15a26455a9992c603ca2d45df
+ name: 'Azure PostgreSQL: Network out'
+ type: DEPENDENT
+ key: azure.db.pgsql.network.egress
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: bps
+ description: 'Network outbound traffic across the active connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.network_bytes_egress.total
+ -
+ type: MULTIPLIER
+ parameters:
+ - '0.1333'
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: 8e398d8b33444a148760ec33622755a6
+ name: 'Azure PostgreSQL: Network in'
+ type: DEPENDENT
+ key: azure.db.pgsql.network.ingress
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: bps
+ description: 'Network inbound traffic across the active connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.network_bytes_ingress.total
+ -
+ type: MULTIPLIER
+ parameters:
+ - '0.1333'
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: ebebf8b3a2884576abb250fdc2385c6f
+ name: 'Azure PostgreSQL: Backup storage used'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.backup.used
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'Used backup storage expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.backup_storage_used.average
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 9bbfba89a1834798b71260536fedab55
+ name: 'Azure PostgreSQL: Storage free'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.free
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'Free storage space expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.storage_free.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: d9d97e728d1741568fce925c0fca33a8
+ name: 'Azure PostgreSQL: Storage percent'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.percent
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The storage utilization expressed in %.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.storage_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ triggers:
+ -
+ uuid: de3142bed28340d9abe518cd3967b024
+ expression: 'last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.CRIT}'
+ name: 'Azure PostgreSQL: Storage space is critically low'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'Critical utilization of the storage space.'
+ tags:
+ -
+ tag: scope
+ value: capacity
+ -
+ uuid: e948600affaa4ff4a0ab4e50f4858c0a
+ expression: 'last(/Azure PostgreSQL flexible server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.WARN}'
+ name: 'Azure PostgreSQL: Storage space is low'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'High utilization of the storage space.'
+ tags:
+ -
+ tag: scope
+ value: capacity
+ -
+ uuid: 4dae6c2c1dbf4492a73fd1834cae6aad
+ name: 'Azure PostgreSQL: Transaction log storage used'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.txlogs.used
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The storage space used by a transaction log expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.txlogs_storage_used.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 7a85b5223ec44ff8bc996c9df1673611
+ name: 'Azure PostgreSQL: Storage used'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.used
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'Used storage space expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.storage_used.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 6df77ed1d4614ca793df56dbc70d821c
+ name: 'Azure PostgreSQL: Maximum used transaction IDs'
+ type: DEPENDENT
+ key: azure.db.pgsql.txid.used.max
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The maximum number of used transaction IDs.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.maximum_used_transactionIDs.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ tags:
+ -
+ tag: class
+ value: software
+ -
+ tag: target
+ value: azure
+ macros:
+ -
+ macro: '{$AZURE.APP_ID}'
+ description: 'Microsoft Azure app ID.'
+ -
+ macro: '{$AZURE.DATA.TIMEOUT}'
+ value: 60s
+ description: 'A response timeout for API.'
+ -
+ macro: '{$AZURE.DB.CPU.UTIL.CRIT}'
+ value: '90'
+ description: 'The critical threshold of the CPU utilization expressed in %.'
+ -
+ macro: '{$AZURE.DB.MEMORY.UTIL.CRIT}'
+ value: '90'
+ description: 'The critical threshold of the memory utilization expressed in %.'
+ -
+ macro: '{$AZURE.DB.STORAGE.PUSED.CRIT}'
+ value: '90'
+ description: 'The critical threshold of the storage utilization expressed in %.'
+ -
+ macro: '{$AZURE.DB.STORAGE.PUSED.WARN}'
+ value: '80'
+ description: 'The warning threshold of the storage utilization expressed in %.'
+ -
+ macro: '{$AZURE.PASSWORD}'
+ type: SECRET_TEXT
+ description: 'Microsoft Azure password.'
+ -
+ macro: '{$AZURE.RESOURCE_ID}'
+ description: 'Microsoft Azure virtual machine ID.'
+ -
+ macro: '{$AZURE.SUBSCRIPTION_ID}'
+ description: 'Microsoft Azure subscription ID.'
+ -
+ macro: '{$AZURE.TENANT_ID}'
+ description: 'Microsoft Azure tenant ID.'
+ valuemaps:
+ -
+ uuid: f208cf6141c44659a2c6904ec4cd7ac3
+ name: 'Azure resource health state'
+ mappings:
+ -
+ value: '0'
+ newvalue: Available
+ -
+ value: '1'
+ newvalue: Degraded
+ -
+ value: '2'
+ newvalue: Unavailable
+ -
+ value: '3'
+ newvalue: Unknown
+ -
+ uuid: d023e2cd326c486f908e3e361d1fe157
+ template: 'Azure PostgreSQL single server by HTTP'
+ name: 'Azure PostgreSQL single server by HTTP'
+ description: |
+ This template is designed to monitor Microsoft Azure PostgreSQL servers by HTTP.
+ It works without any external scripts and uses the script item.
+
+ Setup:
+ 1. Create an Azure service principal via the Azure command-line interface (Azure CLI) for your subscription.
+ `az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
+ See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.
+ 2. Link the template to a host.
+ 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
+
+ You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
+
+ Template tooling version used: 0.42
+ groups:
+ -
+ name: Templates/Cloud
+ items:
+ -
+ uuid: 9eb43a5ffb0d4e07be8d1fccfdecd2aa
+ name: 'Azure PostgreSQL: Availability status detailed'
+ type: DEPENDENT
+ key: azure.db.pgsql.availability.details
+ delay: '0'
+ history: 7d
+ trends: '0'
+ value_type: CHAR
+ description: 'The summary description of the availability status.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.health.summary
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1h
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: health
+ -
+ uuid: df4c66646f864f79b5f5e9f71dbefe82
+ name: 'Azure PostgreSQL: Availability state'
+ type: DEPENDENT
+ key: azure.db.pgsql.availability.state
+ delay: '0'
+ history: 7d
+ description: 'The availability status of the resource.'
+ valuemap:
+ name: 'Azure resource health state'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.health.availabilityState
+ error_handler: CUSTOM_VALUE
+ error_handler_params: '3'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Available
+ - '0'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Degraded
+ - '1'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Unavailable
+ - '2'
+ -
+ type: STR_REPLACE
+ parameters:
+ - Unknown
+ - '3'
+ -
+ type: IN_RANGE
+ parameters:
+ - '0'
+ - '3'
+ error_handler: CUSTOM_VALUE
+ error_handler_params: '3'
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1h
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: health
+ triggers:
+ -
+ uuid: 699ca12c916746b1bf1e121261771cc3
+ expression: 'last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.availability.state)=1'
+ name: 'Azure PostgreSQL: PostgreSQL server is degraded'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'The resource is in degraded state.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: 14e45ba0bc26409a89d92edfda152947
+ expression: 'last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.availability.state)=3'
+ name: 'Azure PostgreSQL: PostgreSQL server is in unknown state'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'The resource state is unknown.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: 4dc9113f8a914ac098d8736dba5aed4a
+ expression: 'last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.availability.state)=2'
+ name: 'Azure PostgreSQL: PostgreSQL server is unavailable'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: HIGH
+ description: 'The resource state is unavailable.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: 3d0d3e1fe77740e4bd7b720368707214
+ name: 'Azure PostgreSQL: Connections active'
+ type: DEPENDENT
+ key: azure.db.pgsql.connections.active
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The count of active connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.active_connections.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: 353a6ba543a84b32b16a5809ae63b4e1
+ name: 'Azure PostgreSQL: Connections failed'
+ type: DEPENDENT
+ key: azure.db.pgsql.connections.failed
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ description: 'The count of failed connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.connections_failed.total
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: 537330b2372b434ebcea8a77a809c2f3
+ name: 'Azure PostgreSQL: Percentage CPU'
+ type: DEPENDENT
+ key: azure.db.pgsql.cpu.percentage
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The CPU percent of a host.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.cpu_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: cpu
+ triggers:
+ -
+ uuid: 33bd2ef88ad3468b9f0b2b1358cc7448
+ expression: 'min(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.cpu.percentage,5m)>{$AZURE.DB.CPU.UTIL.CRIT}'
+ name: 'Azure PostgreSQL: High CPU utilization'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: HIGH
+ description: 'The CPU utilization is too high. The system might be slow to respond.'
+ tags:
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 5b132ff050c94daa92b252529a52c535
+ name: 'Azure PostgreSQL: Get errors'
+ type: DEPENDENT
+ key: azure.db.pgsql.data.errors
+ delay: '0'
+ history: 7d
+ trends: '0'
+ value_type: TEXT
+ description: 'A list of errors from API requests.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.errors
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1h
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: raw
+ triggers:
+ -
+ uuid: dd3d0be997204f8b9968ef5839fb7a9b
+ expression: 'length(last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.data.errors))>0'
+ name: 'Azure PostgreSQL: There are errors in requests to API'
+ opdata: '{ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'Zabbix has received errors in response to API requests.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: e47d863822e64e6292bfa3e684bc2839
+ name: 'Azure PostgreSQL: Get data'
+ type: SCRIPT
+ key: azure.db.pgsql.data.get
+ history: 0d
+ trends: '0'
+ value_type: TEXT
+ params: |
+ var AzureDB = {
+ params: {},
+ token: null,
+
+ setParams: function (params) {
+ ['app_id', 'password', 'tenant_id', 'subscription_id', 'resource_id'].forEach(function (field) {
+ if (typeof params !== 'object' || typeof params[field] === 'undefined' || params[field] === '') {
+ throw 'Required param is not set: ' + field + '.';
+ }
+ });
+
+ AzureDB.params = params;
+ },
+
+
+ request: function (url, data) {
+ if (typeof data === 'undefined' || data === null) {
+ data = '';
+ }
+
+ var response, request = new HttpRequest();
+ if (AzureDB.token) {
+ request.addHeader('Accept: application/json');
+ request.addHeader('Authorization: Bearer ' + AzureDB.token);
+ }
+
+ Zabbix.log(4, '[ Azure ] Sending request: ' + url);
+
+ if (data !== '') {
+ request.addHeader('Content-Type: application/x-www-form-urlencoded');
+ response = request.post(url, data);
+ }
+ else {
+ response = request.get(url);
+ }
+
+ Zabbix.log(4, '[ Azure ] Received response with status code ' + request.getStatus() + ': ' + response);
+
+ if (request.getStatus() !== 200 || response === null) {
+ throw 'Request failed with status code ' + request.getStatus() + ': ' + response;
+ }
+
+ try {
+ return JSON.parse(response);
+ }
+ catch (error) {
+ throw 'Failed to parse response received from API.';
+ }
+ }
+
+ };
+
+ var metrics = [
+ 'cpu_percent',
+ 'memory_percent',
+ 'io_consumption_percent',
+ 'storage_percent',
+ 'storage_used',
+ 'storage_limit',
+ 'serverlog_storage_percent',
+ 'serverlog_storage_usage',
+ 'serverlog_storage_limit',
+ 'active_connections',
+ 'connections_failed',
+ 'backup_storage_used',
+ 'network_bytes_egress',
+ 'network_bytes_ingress',
+ 'pg_replica_log_delay_in_seconds',
+ 'pg_replica_log_delay_in_bytes'
+ ],
+ prepared_metrics = [],
+ data = {};
+ data['errors'] = {};
+ data['metrics'] = {};
+
+ try {
+ AzureDB.setParams(JSON.parse(value));
+
+ try {
+ result = AzureDB.request(
+ 'https://login.microsoftonline.com/' + encodeURIComponent(AzureDB.params.tenant_id) + '/oauth2/token',
+ 'grant_type=client_credentials&resource=' + encodeURIComponent('https://management.azure.com/') + '&client_id=' + encodeURIComponent(AzureDB.params.app_id) + '&client_secret=' + encodeURIComponent(AzureDB.params.password)
+ );
+
+ if ('access_token' in result) {
+ AzureDB.token = result['access_token'];
+ } else {
+ throw 'Auth response does not contain access token.';
+ }
+ }
+ catch (error) {
+ data.errors.auth = error.toString();
+ }
+
+ if (!('auth' in data.errors)) {
+ try {
+ health = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2020-05-01');
+ data.health = health.value[0].properties;
+ }
+ catch (error) {
+ data.errors.health = error.toString();
+ }
+
+ for (var i = 0; i < metrics.length; i += 20) {
+ var chunk = metrics.slice(i, i + 20);
+
+ prepared_metrics.push(
+ chunk.map(function(element) {
+ return encodeURIComponent(element);
+ }).join(',')
+ );
+ }
+
+ start_date = new Date((new Date().getTime()) - 300000).toISOString().replace(/\.\d+/, '');
+ end_date = new Date().toISOString().replace(/\.\d+/, '');
+
+ for (var j in prepared_metrics) {
+ try {
+ metrics_data = AzureDB.request('https://management.azure.com' + AzureDB.params.resource_id + '/providers/Microsoft.Insights/metrics?metricnames=' + prepared_metrics[j] + '&timespan=' + encodeURIComponent(start_date) + '/' + encodeURIComponent(end_date) + '&api-version=2021-05-01');
+ for (k in metrics_data.value) {
+ data.metrics[metrics_data.value[k].name.value.replace(/(\s|\/)+/g, '')] = metrics_data.value[k].timeseries[0].data[metrics_data.value[k].timeseries[0].data.length - 1];
+ }
+ }
+ catch (error) {
+ data.errors[prepared_metrics[j]] = error.toString();
+ }
+ }
+ }
+ }
+ catch (error) {
+ data.errors.params = error.toString();
+ }
+
+ if (Object.keys(data.errors).length !== 0) {
+ errors = 'Failed to receive data:';
+ for (var error in data.errors) {
+ errors += '\n' + error + ' : ' + data.errors[error];
+ }
+ data.errors = errors;
+ }
+ else {
+ data.errors = '';
+ }
+
+ return JSON.stringify(data);
+ description: 'The result of API requests is expressed in the JSON.'
+ timeout: '{$AZURE.DATA.TIMEOUT}'
+ parameters:
+ -
+ name: app_id
+ value: '{$AZURE.APP_ID}'
+ -
+ name: password
+ value: '{$AZURE.PASSWORD}'
+ -
+ name: tenant_id
+ value: '{$AZURE.TENANT_ID}'
+ -
+ name: subscription_id
+ value: '{$AZURE.SUBSCRIPTION_ID}'
+ -
+ name: resource_id
+ value: '{$AZURE.RESOURCE_ID}'
+ tags:
+ -
+ tag: component
+ value: raw
+ -
+ uuid: 9eade85c49bc462aab33b03e37581d87
+ name: 'Azure PostgreSQL: IO consumption percent'
+ type: DEPENDENT
+ key: azure.db.pgsql.io.consumption.percent
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The IO Percent.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.io_consumption_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: operations
+ -
+ uuid: e2ee4882b08f45788e6abb698265810e
+ name: 'Azure PsotgreSQL: Memory utilization'
+ type: DEPENDENT
+ key: azure.db.pgsql.memory.percentage
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The memory percent of a host.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.memory_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: memory
+ triggers:
+ -
+ uuid: 3119f21167a546369c05d31cda2e0147
+ expression: 'min(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.memory.percentage,5m)>{$AZURE.DB.MEMORY.UTIL.CRIT}'
+ name: 'Azure PsotgreSQL: High memory utilization'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'The system is running out of free memory.'
+ tags:
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: f81eeb98d5e942f296c360ff71e8bf8d
+ name: 'Azure PostgreSQL: Network out'
+ type: DEPENDENT
+ key: azure.db.pgsql.network.egress
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: bps
+ description: 'Network outbound traffic across the active connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.network_bytes_egress.total
+ error_handler: DISCARD_VALUE
+ -
+ type: MULTIPLIER
+ parameters:
+ - '0.1333'
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: 51f7e35042d04ddb88c7703d1b015d3b
+ name: 'Azure PosgtreSQL: Network in'
+ type: DEPENDENT
+ key: azure.db.pgsql.network.ingress
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: bps
+ description: 'Network inbound traffic across the active connections.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.network_bytes_ingress.total
+ error_handler: DISCARD_VALUE
+ -
+ type: MULTIPLIER
+ parameters:
+ - '0.1333'
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: 1db9e470b527476fae1d26d4b67f855b
+ name: 'Azure PostgreSQL: Replication lag'
+ type: DEPENDENT
+ key: azure.db.pgsql.replica.log.delay
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: s
+ description: 'The replication lag expressed in seconds.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.pg_replica_log_delay_in_seconds.maximum
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: replication
+ -
+ uuid: 6cdfda8f9e6640f8a8536f88729d75d6
+ name: 'Azure PostgreSQL: Max lag across replicas in bytes'
+ type: DEPENDENT
+ key: azure.db.pgsql.replica.log.delay.bytes
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'Lag expressed in bytes for the most lagging replica.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.pg_replica_log_delay_in_bytes.maximum
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: replication
+ -
+ uuid: 6b06fb0e008640839dc3cda5bcc3f91a
+ name: 'Azure PostgreSQL: Backup storage used'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.backup.used
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'Used backup storage expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.backup_storage_used.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: b8d5ac0b049a4d73b2f35f59c7e7609c
+ name: 'Azure PostgreSQL: Storage limit'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.limit
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The storage limit expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.storage_limit.maximum
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 750b4d3438614cc992694136d309c3cb
+ name: 'Azure PostgreSQL: Storage percent'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.percent
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The storage utilization expressed in %.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.storage_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ triggers:
+ -
+ uuid: 6538d2c8ed774feb951204308f1458ce
+ expression: 'last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.CRIT}'
+ name: 'Azure PostgreSQL: Storage space is critically low'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'Critical utilization of the storage space.'
+ tags:
+ -
+ tag: scope
+ value: capacity
+ -
+ uuid: 7f7a004cfc2a492092dd74c475888e8b
+ expression: 'last(/Azure PostgreSQL single server by HTTP/azure.db.pgsql.storage.percent)>{$AZURE.DB.STORAGE.PUSED.WARN}'
+ name: 'Azure PostgreSQL: Storage space is low'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'High utilization of the storage space.'
+ tags:
+ -
+ tag: scope
+ value: capacity
+ -
+ uuid: 399ef67426494a5cb7a820d056dfd4d5
+ name: 'Azure PostgreSQL: Server log storage limit'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.server.log.limit
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The storage limit of a server log expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.serverlog_storage_limit.maximum
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: ef6890330ebe4fe09f46b0d2f6d3f827
+ name: 'Azure PostgreSQL: Server log storage percent'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.server.log.percent
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The storage utilization by a server log expressed in %.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.serverlog_storage_percent.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: 36bd10a959964083ae47349dd83ec695
+ name: 'Azure PostgreSQL: Server log storage used'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.server.log.used
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The storage space used by a server log expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.serverlog_storage_usage.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ -
+ uuid: dcbb87d442a04938b23e68f739f1e36f
+ name: 'Azure PostgreSQL: Storage used'
+ type: DEPENDENT
+ key: azure.db.pgsql.storage.used
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'Used storage space expressed in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.metrics.storage_used.average
+ master_item:
+ key: azure.db.pgsql.data.get
+ tags:
+ -
+ tag: component
+ value: storage
+ tags:
+ -
+ tag: class
+ value: software
+ -
+ tag: target
+ value: azure
+ macros:
+ -
+ macro: '{$AZURE.APP_ID}'
+ description: 'Microsoft Azure app ID.'
+ -
+ macro: '{$AZURE.DATA.TIMEOUT}'
+ value: 60s
+ description: 'A response timeout for API.'
+ -
+ macro: '{$AZURE.DB.CPU.UTIL.CRIT}'
+ value: '90'
+ description: 'The critical threshold of the CPU utilization expressed in %.'
+ -
+ macro: '{$AZURE.DB.MEMORY.UTIL.CRIT}'
+ value: '90'
+ description: 'The critical threshold of the memory utilization expressed in %.'
+ -
+ macro: '{$AZURE.DB.STORAGE.PUSED.CRIT}'
+ value: '90'
+ description: 'The critical threshold of the storage utilization expressed in %.'
+ -
+ macro: '{$AZURE.DB.STORAGE.PUSED.WARN}'
+ value: '80'
+ description: 'The warning threshold of the storage utilization expressed in %.'
+ -
+ macro: '{$AZURE.PASSWORD}'
+ type: SECRET_TEXT
+ description: 'Microsoft Azure password.'
+ -
+ macro: '{$AZURE.RESOURCE_ID}'
+ description: 'Microsoft Azure virtual machine ID.'
+ -
+ macro: '{$AZURE.SUBSCRIPTION_ID}'
+ description: 'Microsoft Azure subscription ID.'
+ -
+ macro: '{$AZURE.TENANT_ID}'
+ description: 'Microsoft Azure tenant ID.'
+ valuemaps:
+ -
+ uuid: 61fc206aaae04abda4012e031f0e27ac
+ name: 'Azure resource health state'
+ mappings:
+ -
+ value: '0'
+ newvalue: Available
+ -
+ value: '1'
+ newvalue: Degraded
+ -
+ value: '2'
+ newvalue: Unavailable
+ -
+ value: '3'
+ newvalue: Unknown
+ -
uuid: 820fa4a1565c43e4aac07a691a5bface
template: 'Azure virtual machine by HTTP'
name: 'Azure virtual machine by HTTP'
@@ -2135,7 +4006,7 @@ zabbix_export:
`az ad sp create-for-rbac --name zabbix --role reader --scope /subscriptions/<subscription_id>`
See https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli for more details.
2. Link the template to a host.
- 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID} and {$AZURE.RESOURCE_ID}.
+ 3. Configure macros {$AZURE.APP_ID}, {$AZURE.PASSWORD}, {$AZURE.TENANT_ID}, {$AZURE.SUBSCRIPTION_ID}, and {$AZURE.RESOURCE_ID}.
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
@@ -2367,7 +4238,7 @@ zabbix_export:
name: 'Azure: High CPU utilization'
opdata: '{ITEM.LASTVALUE1}'
priority: HIGH
- description: 'CPU utilization is too high. The system might be slow to respond.'
+ description: 'The CPU utilization is too high. The system might be slow to respond.'
tags:
-
tag: scope
@@ -2882,7 +4753,7 @@ zabbix_export:
}
return JSON.stringify(data);
- description: 'The result of API requests is in the JSON.'
+ description: 'The result of API requests is expressed in the JSON.'
timeout: '{$AZURE.DATA.TIMEOUT}'
parameters:
-
@@ -3592,7 +5463,7 @@ zabbix_export:
-
macro: '{$AZURE.VM.CPU.UTIL.CRIT}'
value: '90'
- description: 'The critical threshold of the CPU utilization in %.'
+ description: 'The critical threshold of the CPU utilization expressed in %.'
valuemaps:
-
uuid: 38c8ce1516704ec2a6f1ea9686db56b9
@@ -3884,3 +5755,114 @@ zabbix_export:
item:
host: 'Azure MySQL flexible server by HTTP'
key: azure.db.mysql.storage.limit
+ -
+ uuid: 2b60e8b1fd7c43f4ac61812e43c0e1ca
+ name: 'Azure PostgreSQL: Connections'
+ graph_items:
+ -
+ color: 1A7C11
+ item:
+ host: 'Azure PostgreSQL flexible server by HTTP'
+ key: azure.db.pgsql.connections.active
+ -
+ sortorder: '1'
+ color: 2774A4
+ item:
+ host: 'Azure PostgreSQL flexible server by HTTP'
+ key: azure.db.pgsql.connections.succeeded
+ -
+ sortorder: '2'
+ color: F63100
+ item:
+ host: 'Azure PostgreSQL flexible server by HTTP'
+ key: azure.db.pgsql.connections.failed
+ -
+ uuid: c76cf8ec6a584af6be815ec4a9257a8c
+ name: 'Azure PostgreSQL: Connections'
+ graph_items:
+ -
+ color: 1A7C11
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.connections.active
+ -
+ sortorder: '1'
+ color: 2774A4
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.connections.failed
+ -
+ uuid: a4679d243b574bea84397c980723c68b
+ name: 'Azure PostgreSQL: Network traffic'
+ graph_items:
+ -
+ color: 1A7C11
+ item:
+ host: 'Azure PostgreSQL flexible server by HTTP'
+ key: azure.db.pgsql.network.egress
+ -
+ sortorder: '1'
+ color: 2774A4
+ item:
+ host: 'Azure PostgreSQL flexible server by HTTP'
+ key: azure.db.pgsql.network.ingress
+ -
+ uuid: 8bc17d843775414ea971e640e1fe5ec0
+ name: 'Azure PostgreSQL: Network traffic'
+ graph_items:
+ -
+ color: 1A7C11
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.network.egress
+ -
+ sortorder: '1'
+ color: 2774A4
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.network.ingress
+ -
+ uuid: 9e750a5a462b4429ac5a36a72bd60c66
+ name: 'Azure PostgreSQL: Server log storage utilization'
+ graph_items:
+ -
+ color: 1A7C11
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.storage.server.log.used
+ -
+ sortorder: '1'
+ color: 2774A4
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.storage.server.log.limit
+ -
+ uuid: 5fa13cfbdd784475818fae06ff94f879
+ name: 'Azure PostgreSQL: Storage utilization'
+ graph_items:
+ -
+ color: 1A7C11
+ item:
+ host: 'Azure PostgreSQL flexible server by HTTP'
+ key: azure.db.pgsql.storage.used
+ -
+ sortorder: '1'
+ color: 2774A4
+ item:
+ host: 'Azure PostgreSQL flexible server by HTTP'
+ key: azure.db.pgsql.storage.free
+ -
+ uuid: 9ecd071a77364c4486fa5f63125cd985
+ name: 'Azure PostgreSQL: Storage utilization'
+ graph_items:
+ -
+ color: 1A7C11
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.storage.used
+ -
+ sortorder: '1'
+ color: 2774A4
+ item:
+ host: 'Azure PostgreSQL single server by HTTP'
+ key: azure.db.pgsql.storage.limit
diff --git a/templates/db/gridgain_jmx/README.md b/templates/db/gridgain_jmx/README.md
index 59b46efcac4..014f9c733d4 100644
--- a/templates/db/gridgain_jmx/README.md
+++ b/templates/db/gridgain_jmx/README.md
@@ -3,7 +3,7 @@
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.2 and higher.
Official JMX Template for GridGain In-Memory Computing Platform.
This template is based on the original template developed by Igor Akkuratov, Senior Engineer at GridGain Systems and GridGain In-Memory Computing Platform Contributor.
@@ -99,7 +99,7 @@ There are no template links in this template.
|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication outbound messages queue |<p>Outbound messages queue size.</p> |JMX |jmx["{#JMXOBJ}",OutboundMessagesQueueSize] |
|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication messages received, rate |<p>The number of messages received per second.</p> |JMX |jmx["{#JMXOBJ}",ReceivedMessagesCount]<p>**Preprocessing**:</p><p>- CHANGE_PER_SECOND</p> |
|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication messages sent, rate |<p>The number of messages sent per second.</p> |JMX |jmx["{#JMXOBJ}",SentMessagesCount]<p>**Preprocessing**:</p><p>- CHANGE_PER_SECOND</p> |
-|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication reconnect rate |<p>Gets maximum number of reconnect attempts used when establishing connection with remote nodes per second.</p> |JMX |jmx["{#JMXOBJ}",ReconnectCount]<p>**Preprocessing**:</p><p>- CHANGE_PER_SECOND</p> |
+|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Communication reconnect rate |<p>Gets maximum number of reconnect attempts used when establishing connection with remote nodes per second.</p> |JMX |jmx["{#JMXOBJ}",ReconnectCount, "maxNumbers"]<p>**Preprocessing**:</p><p>- CHANGE_PER_SECOND</p> |
|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Locked keys |<p>The number of keys locked on the node.</p> |JMX |jmx["{#JMXOBJ}",LockedKeysNumber] |
|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Transactions owner, current |<p>The number of active transactions for which this node is the initiator.</p> |JMX |jmx["{#JMXOBJ}",OwnerTransactionsNumber] |
|GridGain |GridGain [{#JMXIGNITEINSTANCENAME}]: Transactions holding lock, current |<p>The number of active transactions holding at least one key lock.</p> |JMX |jmx["{#JMXOBJ}",TransactionsHoldingLockNumber] |
@@ -143,9 +143,9 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|GridGain [{#JMXIGNITEINSTANCENAME}]: has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",UpTime])<10m` |INFO |<p>Manual close: YES</p> |
+|GridGain [{#JMXIGNITEINSTANCENAME}]: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",UpTime])<10m` |INFO |<p>Manual close: YES</p> |
|GridGain [{#JMXIGNITEINSTANCENAME}]: Failed to fetch info data |<p>Zabbix has not received data for items for the last 10 minutes.</p> |`nodata(/GridGain by JMX/jmx["{#JMXOBJ}",UpTime],10m)=1` |WARNING |<p>Manual close: YES</p> |
-|GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed |<p>GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Ack to close.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",FullVersion],#1)<>last(/GridGain by JMX/jmx["{#JMXOBJ}",FullVersion],#2) and length(last(/GridGain by JMX/jmx["{#JMXOBJ}",FullVersion]))>0` |INFO |<p>Manual close: YES</p> |
+|GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed |<p>The GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Perform Ack to close.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",FullVersion],#1)<>last(/GridGain by JMX/jmx["{#JMXOBJ}",FullVersion],#2) and length(last(/GridGain by JMX/jmx["{#JMXOBJ}",FullVersion]))>0` |INFO |<p>Manual close: YES</p> |
|GridGain [{#JMXIGNITEINSTANCENAME}]: Server node left the topology |<p>One or more server node left the topology. Ack to close.</p> |`change(/GridGain by JMX/jmx["{#JMXOBJ}",TotalServerNodes])<0` |WARNING |<p>Manual close: YES</p> |
|GridGain [{#JMXIGNITEINSTANCENAME}]: Server node added to the topology |<p>One or more server node added to the topology. Ack to close.</p> |`change(/GridGain by JMX/jmx["{#JMXOBJ}",TotalServerNodes])>0` |INFO |<p>Manual close: YES</p> |
|GridGain [{#JMXIGNITEINSTANCENAME}]: There are nodes is not in topology |<p>One or more server node left the topology. Ack to close.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",TotalServerNodes])>last(/GridGain by JMX/jmx["{#JMXOBJ}",TotalBaselineNodes])` |INFO |<p>Manual close: YES</p> |
@@ -153,7 +153,7 @@ There are no template links in this template.
|GridGain [{#JMXIGNITEINSTANCENAME}]: PME duration is too long |<p>PME duration is over {$GRIDGAIN.PME.DURATION.MAX.WARN}ms.</p> |`min(/GridGain by JMX/jmx["{#JMXOBJ}",CurrentPmeDuration],5m) > {$GRIDGAIN.PME.DURATION.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- GridGain [{#JMXIGNITEINSTANCENAME}]: PME duration is too long</p> |
|GridGain [{#JMXIGNITEINSTANCENAME}]: PME duration is too long |<p>PME duration is over {$GRIDGAIN.PME.DURATION.MAX.HIGH}ms. Looks like PME is hung.</p> |`min(/GridGain by JMX/jmx["{#JMXOBJ}",CurrentPmeDuration],5m) > {$GRIDGAIN.PME.DURATION.MAX.HIGH}` |HIGH | |
|GridGain [{#JMXIGNITEINSTANCENAME}]: Number of running threads is too high |<p>Number of running threads is over {$GRIDGAIN.THREADS.COUNT.MAX.WARN}.</p> |`min(/GridGain by JMX/jmx["{#JMXOBJ}",CurrentThreadCount],15m) > {$GRIDGAIN.THREADS.COUNT.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- GridGain [{#JMXIGNITEINSTANCENAME}]: PME duration is too long</p> |
-|GridGain [{#JMXIGNITEINSTANCENAME}]: Coordinator has changed |<p>GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Ack to close.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",Coordinator],#1)<>last(/GridGain by JMX/jmx["{#JMXOBJ}",Coordinator],#2) and length(last(/GridGain by JMX/jmx["{#JMXOBJ}",Coordinator]))>0` |WARNING |<p>Manual close: YES</p> |
+|GridGain [{#JMXIGNITEINSTANCENAME}]: Coordinator has changed |<p>The GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Perform Ack to close.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",Coordinator],#1)<>last(/GridGain by JMX/jmx["{#JMXOBJ}",Coordinator],#2) and length(last(/GridGain by JMX/jmx["{#JMXOBJ}",Coordinator]))>0` |WARNING |<p>Manual close: YES</p> |
|Cache group [{#JMXGROUP}]: There are no success transactions for cache for 5m |<p>-</p> |`min(/GridGain by JMX/jmx["{#JMXOBJ}",CacheTxRollbacks],5m)>0 and max(/GridGain by JMX/jmx["{#JMXOBJ}",CacheTxCommits],5m)=0` |AVERAGE | |
|Cache group [{#JMXGROUP}]: Success transactions less than rollbacks for 5m |<p>-</p> |`min(/GridGain by JMX/jmx["{#JMXOBJ}",CacheTxRollbacks],5m) > max(/GridGain by JMX/jmx["{#JMXOBJ}",CacheTxCommits],5m)` |WARNING |<p>**Depends on**:</p><p>- Cache group [{#JMXGROUP}]: There are no success transactions for cache for 5m</p> |
|Cache group [{#JMXGROUP}]: All entries are in heap |<p>All entries are in heap. Possibly you use eager queries it may cause out of memory exceptions for big caches. Ack to close.</p> |`last(/GridGain by JMX/jmx["{#JMXOBJ}",CacheSize])=last(/GridGain by JMX/jmx["{#JMXOBJ}",HeapEntriesCount])` |INFO |<p>Manual close: YES</p> |
@@ -171,7 +171,7 @@ There are no template links in this template.
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/).
diff --git a/templates/db/gridgain_jmx/template_db_gridgain_jmx.yaml b/templates/db/gridgain_jmx/template_db_gridgain_jmx.yaml
index 3cb59358413..9262f10dd72 100644
--- a/templates/db/gridgain_jmx/template_db_gridgain_jmx.yaml
+++ b/templates/db/gridgain_jmx/template_db_gridgain_jmx.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.2'
- date: '2022-06-07T19:33:22Z'
+ date: '2022-11-01T16:08:32Z'
template_groups:
-
uuid: 748ad4d098d447d492bb935c907f652f
@@ -19,7 +19,7 @@ zabbix_export:
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Databases
@@ -865,7 +865,7 @@ zabbix_export:
name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed'
event_name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed (new version: {ITEM.VALUE})'
priority: INFO
- description: 'GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Ack to close.'
+ description: 'The GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Perform Ack to close.'
manual_close: 'YES'
tags:
-
@@ -928,8 +928,8 @@ zabbix_export:
-
uuid: 23cd9dbb498f4bb095ec8be1693fccf0
expression: 'last(/GridGain by JMX/jmx["{#JMXOBJ}",UpTime])<10m'
- name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: has been restarted'
- event_name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: has been restarted (uptime < 10m)'
+ name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: Host has been restarted'
+ event_name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
description: 'Uptime is less than 10 minutes.'
manual_close: 'YES'
@@ -1008,7 +1008,7 @@ zabbix_export:
uuid: 613114b7abb94bd5bbabc2d1d19975b7
name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: Communication reconnect rate'
type: JMX
- key: 'jmx["{#JMXOBJ}",ReconnectCount]'
+ key: 'jmx["{#JMXOBJ}",ReconnectCount, "maxNumbers"]'
history: 7d
value_type: FLOAT
username: '{$GRIDGAIN.USER}'
@@ -1118,7 +1118,7 @@ zabbix_export:
name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: Coordinator has changed'
event_name: 'GridGain [{#JMXIGNITEINSTANCENAME}]: Version has changed (new version: {ITEM.VALUE})'
priority: WARNING
- description: 'GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Ack to close.'
+ description: 'The GridGain [{#JMXIGNITEINSTANCENAME}] version has changed. Perform Ack to close.'
manual_close: 'YES'
tags:
-
diff --git a/templates/module/brocade_snmp/README.md b/templates/module/brocade_snmp/README.md
index 0a070575b07..552ee15dca5 100644
--- a/templates/module/brocade_snmp/README.md
+++ b/templates/module/brocade_snmp/README.md
@@ -1,9 +1,9 @@
-# Brocade_Foundry Performance SNMP
+# Brocade_Foundry Performance by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -38,10 +38,10 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade_Foundry Performance SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade_Foundry Performance SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade_Foundry Performance by SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade_Foundry Performance by SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/module/brocade_snmp/template_module_brocade_snmp.yaml b/templates/module/brocade_snmp/template_module_brocade_snmp.yaml
index 2ecb67ff854..5b76e1d975f 100644
--- a/templates/module/brocade_snmp/template_module_brocade_snmp.yaml
+++ b/templates/module/brocade_snmp/template_module_brocade_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:01:10Z'
+ date: '2022-10-27T19:25:57Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: c55052212c774e3fbab00343050b3db5
- template: 'Brocade_Foundry Performance SNMP'
- name: 'Brocade_Foundry Performance SNMP'
+ template: 'Brocade_Foundry Performance by SNMP'
+ name: 'Brocade_Foundry Performance by SNMP'
description: |
Template Module Brocade_Foundry Performance
@@ -40,7 +40,7 @@ zabbix_export:
triggers:
-
uuid: 7b068eb5d43846d987148f38f66b1f1a
- expression: 'min(/Brocade_Foundry Performance SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Brocade_Foundry Performance by SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -71,7 +71,7 @@ zabbix_export:
triggers:
-
uuid: 929046c4439741a9aa3ab00933322a86
- expression: 'min(/Brocade_Foundry Performance SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Brocade_Foundry Performance by SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -101,7 +101,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Performance SNMP'
+ host: 'Brocade_Foundry Performance by SNMP'
key: 'system.cpu.util[snAgGblCpuUtil1MinAvg.0]'
-
uuid: 8e5d8b8e81d2473c99df3d7ad5c147c3
@@ -113,5 +113,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Performance SNMP'
+ host: 'Brocade_Foundry Performance by SNMP'
key: 'vm.memory.util[snAgGblDynMemUtil.0]'
diff --git a/templates/module/cisco_snmp/README.md b/templates/module/cisco_snmp/README.md
index 0e74c24a500..97d214b07ce 100644
--- a/templates/module/cisco_snmp/README.md
+++ b/templates/module/cisco_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco CISCO-MEMORY-POOL-MIB SNMP
+# Cisco CISCO-MEMORY-POOL-MIB by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -41,17 +41,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco CISCO-MEMORY-POOL-MIB SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco CISCO-MEMORY-POOL-MIB by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Cisco CISCO-PROCESS-MIB SNMP
+# Cisco CISCO-PROCESS-MIB by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -87,17 +87,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco CISCO-PROCESS-MIB SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco CISCO-PROCESS-MIB by SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 SNMP
+# Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -133,17 +133,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Cisco OLD-CISCO-CPU-MIB SNMP
+# Cisco OLD-CISCO-CPU-MIB by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -176,17 +176,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco OLD-CISCO-CPU-MIB SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco OLD-CISCO-CPU-MIB by SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Cisco Inventory SNMP
+# Cisco Inventory by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -220,19 +220,19 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Inventory SNMP/system.hw.serialnumber,#1)<>last(/Cisco Inventory SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Inventory SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Inventory SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco Inventory SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco Inventory SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Inventory SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco Inventory SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco Inventory SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Inventory by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Inventory by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Inventory by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Inventory by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco Inventory by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco Inventory by SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Inventory by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco Inventory by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco Inventory by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Cisco CISCO-ENVMON-MIB SNMP
+# Cisco CISCO-ENVMON-MIB by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -288,15 +288,15 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
-|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
+|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/module/cisco_snmp/template_module_cisco_snmp.yaml b/templates/module/cisco_snmp/template_module_cisco_snmp.yaml
index f1b11e0ebee..2f5a7c87819 100644
--- a/templates/module/cisco_snmp/template_module_cisco_snmp.yaml
+++ b/templates/module/cisco_snmp/template_module_cisco_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:46Z'
+ version: '6.4'
+ date: '2022-10-27T19:25:56Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,15 +8,15 @@ zabbix_export:
templates:
-
uuid: 51af5cf9312b41d38ab22e02c9af6bbc
- template: 'Cisco CISCO-ENVMON-MIB SNMP'
- name: 'Cisco CISCO-ENVMON-MIB SNMP'
+ template: 'Cisco CISCO-ENVMON-MIB by SNMP'
+ name: 'Cisco CISCO-ENVMON-MIB by SNMP'
description: |
Template Cisco CISCO-ENVMON-MIB
MIBs used:
CISCO-ENVMON-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -49,7 +49,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a9f5e9e2a65143298910e354e832bf2f
- expression: 'count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
name: '{#SENSOR_INFO}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -63,7 +63,7 @@ zabbix_export:
value: performance
-
uuid: 58cf2c24afd74e5cb048557e8e52138e
- expression: 'count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
+ expression: 'count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
name: '{#SENSOR_INFO}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -71,7 +71,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
tags:
-
tag: scope
@@ -107,7 +107,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5796e1e85ea949d0b86ce83f5daae958
- expression: 'count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
name: '{#SENSOR_INFO}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -121,7 +121,7 @@ zabbix_export:
value: performance
-
uuid: 93892fed243f4f0b8c26ab67fa6e1800
- expression: 'count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
+ expression: 'count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
name: '{#SENSOR_INFO}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -129,7 +129,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Power supply is in critical state'
- expression: 'count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
tags:
-
tag: scope
@@ -185,9 +185,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2bb01154728b47c69514f7399f3bfabc
- expression: 'avg(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -203,13 +203,13 @@ zabbix_export:
-
uuid: f356f7fbc2de423db3bac09bc4683ae2
expression: |
- avg(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -225,11 +225,11 @@ zabbix_export:
-
uuid: 2c151dd93b7f4096b9eb6c73c315ffec
expression: |
- avg(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
+ avg(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
or
- last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -239,12 +239,12 @@ zabbix_export:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
expression: |
- avg(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
- recovery_expression: 'max(/Cisco CISCO-ENVMON-MIB SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ last(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ recovery_expression: 'max(/Cisco CISCO-ENVMON-MIB by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -326,15 +326,15 @@ zabbix_export:
newvalue: notFunctioning
-
uuid: d7c122cde75447248d4b1613cdc25d5b
- template: 'Cisco CISCO-MEMORY-POOL-MIB SNMP'
- name: 'Cisco CISCO-MEMORY-POOL-MIB SNMP'
+ template: 'Cisco CISCO-MEMORY-POOL-MIB by SNMP'
+ name: 'Cisco CISCO-MEMORY-POOL-MIB by SNMP'
description: |
Template Cisco CISCO-MEMORY-POOL-MIB
MIBs used:
CISCO-MEMORY-POOL-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -399,7 +399,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 74c44bdc890f467cb1a8cdc175a54a76
- expression: 'min(/Cisco CISCO-MEMORY-POOL-MIB SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco CISCO-MEMORY-POOL-MIB by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -422,29 +422,29 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco CISCO-MEMORY-POOL-MIB SNMP'
+ host: 'Cisco CISCO-MEMORY-POOL-MIB by SNMP'
key: 'vm.memory.util[vm.memory.util.{#SNMPINDEX}]'
macros:
-
macro: '{$MEMORY.UTIL.MAX}'
value: '90'
-
- uuid: 3eadb8a2ad4a479cb59bfa6402deee3f
- template: 'Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 SNMP'
- name: 'Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ uuid: f934f5e71db642c689ed2f945f73ce6c
+ template: 'Cisco CISCO-PROCESS-MIB by SNMP'
+ name: 'Cisco CISCO-PROCESS-MIB by SNMP'
description: |
- Template Module Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5
+ Template Cisco CISCO-PROCESS-MIB
MIBs used:
CISCO-PROCESS-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
discovery_rules:
-
- uuid: 372b5656330f41d18ccf99ca89fa8504
+ uuid: dc4773499a1d419caa5c2c96bd4afb7b
name: 'CPU Discovery'
type: SNMP_AGENT
snmp_oid: 'discovery[{#SNMPVALUE},1.3.6.1.4.1.9.9.109.1.1.1.1.5]'
@@ -458,22 +458,18 @@ zabbix_export:
In case of a single CPU, cpmCPUTotalTable has only one entry.
item_prototypes:
-
- uuid: b7a375f679024cb990ae97933e5f77d6
- name: '{#SNMPVALUE}: CPU utilization'
+ uuid: 884048f6fc414188b58341ecaca9aea3
+ name: '#{#SNMPINDEX}: CPU utilization'
type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.109.1.1.1.1.5.{#SNMPINDEX}'
- key: 'system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}]'
+ snmp_oid: '1.3.6.1.4.1.9.9.109.1.1.1.1.8.{#SNMPINDEX}'
+ key: 'system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}]'
delay: 5m
history: 7d
value_type: FLOAT
units: '%'
description: |
MIB: CISCO-PROCESS-MIB
- The overall CPU busy percentage in the last 5 minute
- period. This object deprecates the avgBusy5 object from
- the OLD-CISCO-SYSTEM-MIB. This object is deprecated
- by cpmCPUTotal5minRev which has the changed range
- of value (0..100).
+ The cpmCPUTotal5minRev MIB object provides a more accurate view of the performance of the router over time than the MIB objects cpmCPUTotal1minRev and cpmCPUTotal5secRev . These MIB objects are not accurate because they look at CPU at one minute and five second intervals, respectively. These MIBs enable you to monitor the trends and plan the capacity of your network. The recommended baseline rising threshold for cpmCPUTotal5minRev is 90 percent. Depending on the platform, some routers that run at 90 percent, for example, 2500s, can exhibit performance degradation versus a high-end router, for example, the 7500 series, which can operate fine.
Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15215-collect-cpu-util-snmp.html
tags:
-
@@ -481,10 +477,10 @@ zabbix_export:
value: cpu
trigger_prototypes:
-
- uuid: be863abc1e3440a9bd35c4db77f83961
- expression: 'min(/Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
- name: '{#SNMPVALUE}: High CPU utilization'
- event_name: '{#SNMPVALUE}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
+ uuid: 52d3b9d4d52e4f289221f4b5ade177d7
+ expression: 'min(/Cisco CISCO-PROCESS-MIB by SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ name: '#{#SNMPINDEX}: High CPU utilization'
+ event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
priority: WARNING
description: 'CPU utilization is too high. The system might be slow to respond.'
@@ -494,8 +490,8 @@ zabbix_export:
value: performance
graph_prototypes:
-
- uuid: 8e045ff24e564afc9a55d4bd08529d22
- name: '{#SNMPVALUE}: CPU utilization'
+ uuid: 6fed03a2555949178f96550fcdb449ca
+ name: '#{#SNMPINDEX}: CPU utilization'
ymin_type_1: FIXED
ymax_type_1: FIXED
graph_items:
@@ -503,29 +499,29 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 SNMP'
- key: 'system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}]'
+ host: 'Cisco CISCO-PROCESS-MIB by SNMP'
+ key: 'system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}]'
macros:
-
macro: '{$CPU.UTIL.CRIT}'
value: '90'
-
- uuid: f934f5e71db642c689ed2f945f73ce6c
- template: 'Cisco CISCO-PROCESS-MIB SNMP'
- name: 'Cisco CISCO-PROCESS-MIB SNMP'
+ uuid: 3eadb8a2ad4a479cb59bfa6402deee3f
+ template: 'Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 by SNMP'
+ name: 'Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 by SNMP'
description: |
- Template Cisco CISCO-PROCESS-MIB
+ Template Module Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5
MIBs used:
CISCO-PROCESS-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
discovery_rules:
-
- uuid: dc4773499a1d419caa5c2c96bd4afb7b
+ uuid: 372b5656330f41d18ccf99ca89fa8504
name: 'CPU Discovery'
type: SNMP_AGENT
snmp_oid: 'discovery[{#SNMPVALUE},1.3.6.1.4.1.9.9.109.1.1.1.1.5]'
@@ -539,18 +535,22 @@ zabbix_export:
In case of a single CPU, cpmCPUTotalTable has only one entry.
item_prototypes:
-
- uuid: 884048f6fc414188b58341ecaca9aea3
- name: '#{#SNMPINDEX}: CPU utilization'
+ uuid: b7a375f679024cb990ae97933e5f77d6
+ name: '{#SNMPVALUE}: CPU utilization'
type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.109.1.1.1.1.8.{#SNMPINDEX}'
- key: 'system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}]'
+ snmp_oid: '1.3.6.1.4.1.9.9.109.1.1.1.1.5.{#SNMPINDEX}'
+ key: 'system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}]'
delay: 5m
history: 7d
value_type: FLOAT
units: '%'
description: |
MIB: CISCO-PROCESS-MIB
- The cpmCPUTotal5minRev MIB object provides a more accurate view of the performance of the router over time than the MIB objects cpmCPUTotal1minRev and cpmCPUTotal5secRev . These MIB objects are not accurate because they look at CPU at one minute and five second intervals, respectively. These MIBs enable you to monitor the trends and plan the capacity of your network. The recommended baseline rising threshold for cpmCPUTotal5minRev is 90 percent. Depending on the platform, some routers that run at 90 percent, for example, 2500s, can exhibit performance degradation versus a high-end router, for example, the 7500 series, which can operate fine.
+ The overall CPU busy percentage in the last 5 minute
+ period. This object deprecates the avgBusy5 object from
+ the OLD-CISCO-SYSTEM-MIB. This object is deprecated
+ by cpmCPUTotal5minRev which has the changed range
+ of value (0..100).
Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15215-collect-cpu-util-snmp.html
tags:
-
@@ -558,10 +558,10 @@ zabbix_export:
value: cpu
trigger_prototypes:
-
- uuid: 52d3b9d4d52e4f289221f4b5ade177d7
- expression: 'min(/Cisco CISCO-PROCESS-MIB SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
- name: '#{#SNMPINDEX}: High CPU utilization'
- event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
+ uuid: be863abc1e3440a9bd35c4db77f83961
+ expression: 'min(/Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ name: '{#SNMPVALUE}: High CPU utilization'
+ event_name: '{#SNMPVALUE}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
priority: WARNING
description: 'CPU utilization is too high. The system might be slow to respond.'
@@ -571,8 +571,8 @@ zabbix_export:
value: performance
graph_prototypes:
-
- uuid: 6fed03a2555949178f96550fcdb449ca
- name: '#{#SNMPINDEX}: CPU utilization'
+ uuid: 8e045ff24e564afc9a55d4bd08529d22
+ name: '{#SNMPVALUE}: CPU utilization'
ymin_type_1: FIXED
ymax_type_1: FIXED
graph_items:
@@ -580,16 +580,16 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco CISCO-PROCESS-MIB SNMP'
- key: 'system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}]'
+ host: 'Cisco CISCO-PROCESS-MIB IOS versions 12.0_3_T-12.2_3.5 by SNMP'
+ key: 'system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}]'
macros:
-
macro: '{$CPU.UTIL.CRIT}'
value: '90'
-
uuid: 90c99055648f40df8517005a7670158c
- template: 'Cisco Inventory SNMP'
- name: 'Cisco Inventory SNMP'
+ template: 'Cisco Inventory by SNMP'
+ name: 'Cisco Inventory by SNMP'
description: |
Template Cisco Inventory
@@ -597,7 +597,7 @@ zabbix_export:
ENTITY-MIB
SNMPv2-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -647,7 +647,7 @@ zabbix_export:
triggers:
-
uuid: 4100a7125272484c81c4f599eff82793
- expression: 'last(/Cisco Inventory SNMP/system.hw.serialnumber,#1)<>last(/Cisco Inventory SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Inventory SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco Inventory by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Inventory by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Inventory by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -686,7 +686,7 @@ zabbix_export:
triggers:
-
uuid: e417e0edd4eb417d99816dd9cf4f20e9
- expression: 'last(/Cisco Inventory SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco Inventory SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco Inventory SNMP/system.sw.os[sysDescr.0]))>0'
+ expression: 'last(/Cisco Inventory by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco Inventory by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco Inventory by SNMP/system.sw.os[sysDescr.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -738,7 +738,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ff15aaac7c4947b6a07a38dec4d1466d
- expression: 'last(/Cisco Inventory SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco Inventory SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco Inventory SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco Inventory by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco Inventory by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco Inventory by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -750,15 +750,15 @@ zabbix_export:
value: notice
-
uuid: 1b0025aaf71f47ec91d08c17a399c6a6
- template: 'Cisco OLD-CISCO-CPU-MIB SNMP'
- name: 'Cisco OLD-CISCO-CPU-MIB SNMP'
+ template: 'Cisco OLD-CISCO-CPU-MIB by SNMP'
+ name: 'Cisco OLD-CISCO-CPU-MIB by SNMP'
description: |
Template Cisco OLD-CISCO-CPU-MIB
MIBs used:
OLD-CISCO-CPU-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -784,7 +784,7 @@ zabbix_export:
triggers:
-
uuid: 0833b9a8f2ba4c009ca038cc409236d8
- expression: 'min(/Cisco OLD-CISCO-CPU-MIB SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco OLD-CISCO-CPU-MIB by SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -809,5 +809,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco OLD-CISCO-CPU-MIB SNMP'
+ host: 'Cisco OLD-CISCO-CPU-MIB by SNMP'
key: 'system.cpu.util[avgBusy5]'
diff --git a/templates/module/ether_like_snmp/README.md b/templates/module/ether_like_snmp/README.md
index 686b978cb03..56fbb718614 100644
--- a/templates/module/ether_like_snmp/README.md
+++ b/templates/module/ether_like_snmp/README.md
@@ -1,9 +1,9 @@
-# EtherLike-MIB SNMP
+# EtherLike-MIB by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -34,9 +34,9 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/EtherLike-MIB SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/EtherLike-MIB by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/module/ether_like_snmp/template_module_ether_like_snmp.yaml b/templates/module/ether_like_snmp/template_module_ether_like_snmp.yaml
index f3df57ed1fd..cf3134bfb30 100644
--- a/templates/module/ether_like_snmp/template_module_ether_like_snmp.yaml
+++ b/templates/module/ether_like_snmp/template_module_ether_like_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:46Z'
+ version: '6.4'
+ date: '2022-10-27T19:25:59Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,15 +8,15 @@ zabbix_export:
templates:
-
uuid: 3598da1effdf4ed48074608f1422e3fd
- template: 'EtherLike-MIB SNMP'
- name: 'EtherLike-MIB SNMP'
+ template: 'EtherLike-MIB by SNMP'
+ name: 'EtherLike-MIB by SNMP'
description: |
Template EtherLike-MIB (duplex control only)
MIBs used:
EtherLike-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -89,7 +89,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e6ae9fc7d4454d389d066450af3a3066
- expression: 'last(/EtherLike-MIB SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/EtherLike-MIB by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
diff --git a/templates/module/generic_snmp_snmp/README.md b/templates/module/generic_snmp_snmp/README.md
index 4c108676e49..d8abce5642e 100644
--- a/templates/module/generic_snmp_snmp/README.md
+++ b/templates/module/generic_snmp_snmp/README.md
@@ -1,9 +1,9 @@
-# Generic SNMP
+# Generic by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -49,14 +49,14 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Generic SNMP/system.name,#1)<>last(/Generic SNMP/system.name,#2) and length(last(/Generic SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Generic SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Generic SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Generic SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Generic SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Generic SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Generic SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Generic SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Generic SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Generic SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Generic by SNMP/system.name,#1)<>last(/Generic by SNMP/system.name,#2) and length(last(/Generic by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Generic by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Generic by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Generic by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Generic by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Generic by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Generic by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Generic by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Generic by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Generic by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/module/generic_snmp_snmp/template_module_generic_snmp_snmp.yaml b/templates/module/generic_snmp_snmp/template_module_generic_snmp_snmp.yaml
index 804f0260ae8..d136f2c482e 100644
--- a/templates/module/generic_snmp_snmp/template_module_generic_snmp_snmp.yaml
+++ b/templates/module/generic_snmp_snmp/template_module_generic_snmp_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:58:08Z'
+ date: '2022-10-27T19:25:58Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 4cb1aabe2b704b5c882963c2ef87d8f6
- template: 'Generic SNMP'
- name: 'Generic SNMP'
+ template: 'Generic by SNMP'
+ name: 'Generic by SNMP'
description: |
Template Module Generic
@@ -40,7 +40,7 @@ zabbix_export:
triggers:
-
uuid: 085d6f785f1e46faa447d6921036d01d
- expression: 'max(/Generic SNMP/icmpping,#3)=0'
+ expression: 'max(/Generic by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -66,14 +66,14 @@ zabbix_export:
triggers:
-
uuid: d1bd868814ba4ace9b5034ac4e303259
- expression: 'min(/Generic SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Generic SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Generic by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Generic by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Generic SNMP/icmpping,#3)=0'
+ expression: 'max(/Generic by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -99,17 +99,17 @@ zabbix_export:
triggers:
-
uuid: ecd74ec29b484a499414293bf671160b
- expression: 'avg(/Generic SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Generic by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Generic SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Generic SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Generic by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Generic by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Generic SNMP/icmpping,#3)=0'
+ expression: 'max(/Generic by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -255,7 +255,7 @@ zabbix_export:
triggers:
-
uuid: 072bf35ea9d04c559ada5cb13d4b6802
- expression: 'last(/Generic SNMP/system.name,#1)<>last(/Generic SNMP/system.name,#2) and length(last(/Generic SNMP/system.name))>0'
+ expression: 'last(/Generic by SNMP/system.name,#1)<>last(/Generic by SNMP/system.name,#2) and length(last(/Generic by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -336,7 +336,7 @@ zabbix_export:
triggers:
-
uuid: d3aba975ec574b258c7f971152c5d4cd
- expression: 'max(/Generic SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Generic by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -344,7 +344,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Generic SNMP/icmpping,#3)=0'
+ expression: 'max(/Generic by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -386,7 +386,7 @@ zabbix_export:
triggers:
-
uuid: 6f00359af55f45909bdecbad234c7654
- expression: '(last(/Generic SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Generic SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Generic SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Generic SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Generic by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Generic by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Generic by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Generic by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -395,7 +395,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Generic SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Generic by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/module/host_resources_snmp/README.md b/templates/module/host_resources_snmp/README.md
index c7e08b42ca0..548c0f91426 100644
--- a/templates/module/host_resources_snmp/README.md
+++ b/templates/module/host_resources_snmp/README.md
@@ -1,9 +1,9 @@
-# HOST-RESOURCES-MIB storage SNMP
+# HOST-RESOURCES-MIB storage by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -48,18 +48,18 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
-|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
+|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
+|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# HOST-RESOURCES-MIB memory SNMP
+# HOST-RESOURCES-MIB memory by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -101,17 +101,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HOST-RESOURCES-MIB memory SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HOST-RESOURCES-MIB memory by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# HOST-RESOURCES-MIB CPU SNMP
+# HOST-RESOURCES-MIB CPU by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -144,17 +144,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HOST-RESOURCES-MIB CPU SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HOST-RESOURCES-MIB CPU by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# HOST-RESOURCES-MIB SNMP
+# HOST-RESOURCES-MIB by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -210,12 +210,12 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HOST-RESOURCES-MIB SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HOST-RESOURCES-MIB SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
-|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HOST-RESOURCES-MIB by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HOST-RESOURCES-MIB by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
+|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/module/host_resources_snmp/template_module_host_resources_snmp.yaml b/templates/module/host_resources_snmp/template_module_host_resources_snmp.yaml
index 3d212363fe2..b3775a4aca6 100644
--- a/templates/module/host_resources_snmp/template_module_host_resources_snmp.yaml
+++ b/templates/module/host_resources_snmp/template_module_host_resources_snmp.yaml
@@ -1,224 +1,22 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:47Z'
+ version: '6.4'
+ date: '2022-10-27T19:26:06Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
name: Templates/Modules
templates:
-
- uuid: b3dd7c4974f442d68c53a79056bc5388
- template: 'HOST-RESOURCES-MIB CPU SNMP'
- name: 'HOST-RESOURCES-MIB CPU SNMP'
- description: |
- Requires Zabbix server 4.0.14, 4.2.8, 4.4.0 or newer (JSONPath function avg() used with types autoconversion).
-
- MIBs used:
- HOST-RESOURCES-MIB
-
- Template tooling version used: 0.41
- groups:
- -
- name: Templates/Modules
- items:
- -
- uuid: 76b66d024509446ea4e7a48439f8d406
- name: 'CPU utilization'
- type: SNMP_AGENT
- snmp_oid: 'discovery[{#CPU.UTIL},1.3.6.1.2.1.25.3.3.1.2]'
- key: system.cpu.util
- history: 7d
- value_type: FLOAT
- units: '%'
- description: |
- MIB: HOST-RESOURCES-MIB
- The average, over the last minute, of the percentage of time that processors was not idle.
- Implementations may approximate this one minute smoothing period if necessary.
- preprocessing:
- -
- type: JSONPATH
- parameters:
- - '$..[''{#CPU.UTIL}''].avg()'
- tags:
- -
- tag: component
- value: cpu
- triggers:
- -
- uuid: bb8b2193ed4c437284d569a38f500367
- expression: 'min(/HOST-RESOURCES-MIB CPU SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
- name: 'High CPU utilization'
- event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
- opdata: 'Current utilization: {ITEM.LASTVALUE1}'
- priority: WARNING
- description: 'CPU utilization is too high. The system might be slow to respond.'
- tags:
- -
- tag: scope
- value: performance
- macros:
- -
- macro: '{$CPU.UTIL.CRIT}'
- value: '90'
- -
- uuid: a2718bb9168a451fae8fc97486176943
- template: 'HOST-RESOURCES-MIB memory SNMP'
- name: 'HOST-RESOURCES-MIB memory SNMP'
- description: |
- MIBs used:
- HOST-RESOURCES-MIB
-
- Template tooling version used: 0.41
- groups:
- -
- name: Templates/Modules
- discovery_rules:
- -
- uuid: 232e52a9b3df42f2b539c5924edc20c8
- name: 'Memory discovery'
- type: SNMP_AGENT
- snmp_oid: 'discovery[{#MEMNAME},1.3.6.1.2.1.25.2.3.1.3,{#MEMTYPE},1.3.6.1.2.1.25.2.3.1.2,{#ALLOC_UNITS},1.3.6.1.2.1.25.2.3.1.4]'
- key: vm.memory.discovery
- delay: 1h
- filter:
- evaltype: AND
- conditions:
- -
- macro: '{#MEMTYPE}'
- value: '{$MEMORY.TYPE.MATCHES}'
- formulaid: C
- -
- macro: '{#MEMTYPE}'
- value: '{$MEMORY.TYPE.NOT_MATCHES}'
- operator: NOT_MATCHES_REGEX
- formulaid: D
- -
- macro: '{#MEMNAME}'
- value: '{$MEMORY.NAME.MATCHES}'
- formulaid: A
- -
- macro: '{#MEMNAME}'
- value: '{$MEMORY.NAME.NOT_MATCHES}'
- operator: NOT_MATCHES_REGEX
- formulaid: B
- description: 'HOST-RESOURCES-MIB::hrStorage discovery with memory filter'
- item_prototypes:
- -
- uuid: 03d6c47431e74cd8b1d9faf95e9bc756
- name: '{#MEMNAME}: Total memory'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.2.1.25.2.3.1.5.{#SNMPINDEX}'
- key: 'vm.memory.total[hrStorageSize.{#SNMPINDEX}]'
- history: 7d
- units: B
- description: |
- MIB: HOST-RESOURCES-MIB
- The size of the storage represented by this entry, in units of hrStorageAllocationUnits.
- This object is writable to allow remote configuration of the size of the storage area in those cases where such an operation makes sense and is possible on the underlying system.
- For example, the amount of main memory allocated to a buffer pool might be modified or the amount of disk space allocated to virtual memory might be modified.
- preprocessing:
- -
- type: MULTIPLIER
- parameters:
- - '{#ALLOC_UNITS}'
- tags:
- -
- tag: component
- value: memory
- -
- uuid: f5b701faf10d40d596d04e1d921861f9
- name: '{#MEMNAME}: Used memory'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.2.1.25.2.3.1.6.{#SNMPINDEX}'
- key: 'vm.memory.used[hrStorageUsed.{#SNMPINDEX}]'
- history: 7d
- units: B
- description: |
- MIB: HOST-RESOURCES-MIB
- The amount of the storage represented by this entry that is allocated, in units of hrStorageAllocationUnits.
- preprocessing:
- -
- type: MULTIPLIER
- parameters:
- - '{#ALLOC_UNITS}'
- tags:
- -
- tag: component
- value: memory
- -
- uuid: 99961a81ae4a474ea157f108c8014c77
- name: '{#MEMNAME}: Memory utilization'
- type: CALCULATED
- key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
- history: 7d
- value_type: FLOAT
- units: '%'
- params: 'last(//vm.memory.used[hrStorageUsed.{#SNMPINDEX}])/last(//vm.memory.total[hrStorageSize.{#SNMPINDEX}])*100'
- description: 'Memory utilization in %.'
- tags:
- -
- tag: component
- value: memory
- trigger_prototypes:
- -
- uuid: fb87fa900e404e2ba53fa5769fecc511
- expression: 'min(/HOST-RESOURCES-MIB memory SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
- name: '{#MEMNAME}: High memory utilization'
- event_name: '{#MEMNAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
- priority: AVERAGE
- description: 'The system is running out of free memory.'
- tags:
- -
- tag: scope
- value: capacity
- -
- tag: scope
- value: performance
- graph_prototypes:
- -
- uuid: 47a47f92e42047fe937e01ad163ca665
- name: '{#MEMNAME}: Memory utilization'
- ymin_type_1: FIXED
- ymax_type_1: FIXED
- graph_items:
- -
- drawtype: GRADIENT_LINE
- color: 1A7C11
- item:
- host: 'HOST-RESOURCES-MIB memory SNMP'
- key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
- macros:
- -
- macro: '{$MEMORY.NAME.MATCHES}'
- value: '.*'
- description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level.'
- -
- macro: '{$MEMORY.NAME.NOT_MATCHES}'
- value: CHANGE_IF_NEEDED
- description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level if you need to filter out results.'
- -
- macro: '{$MEMORY.TYPE.MATCHES}'
- value: '.*(\.2|hrStorageRam)$'
- description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level.'
- -
- macro: '{$MEMORY.TYPE.NOT_MATCHES}'
- value: CHANGE_IF_NEEDED
- description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level if you need to filter out results.'
- -
- macro: '{$MEMORY.UTIL.MAX}'
- value: '90'
- description: 'The warning threshold of the "Physical memory: Memory utilization" item.'
- -
uuid: 5c70662d333246668444276cb011e646
- template: 'HOST-RESOURCES-MIB SNMP'
- name: 'HOST-RESOURCES-MIB SNMP'
+ template: 'HOST-RESOURCES-MIB by SNMP'
+ name: 'HOST-RESOURCES-MIB by SNMP'
description: |
HOST-RESOURCES-MIB: CPU, memory and storage(vfs.fs.file) linked together.
MIBs used:
HOST-RESOURCES-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -248,7 +46,7 @@ zabbix_export:
triggers:
-
uuid: d1b02854c6cd473090735eabfbd4d908
- expression: 'min(/HOST-RESOURCES-MIB SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/HOST-RESOURCES-MIB by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -358,8 +156,8 @@ zabbix_export:
-
uuid: 8283f8b8663f444aad85633010615c15
expression: |
- last(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/HOST-RESOURCES-MIB SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is critically low'
event_name: '{#FSNAME}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -380,8 +178,8 @@ zabbix_export:
-
uuid: 2d9c475d718b4c2ba14b129f66014f75
expression: |
- last(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
- ((last(/HOST-RESOURCES-MIB SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
+ ((last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is low'
event_name: '{#FSNAME}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -396,8 +194,8 @@ zabbix_export:
-
name: '{#FSNAME}: Disk space is critically low'
expression: |
- last(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/HOST-RESOURCES-MIB SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -419,14 +217,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'HOST-RESOURCES-MIB SNMP'
+ host: 'HOST-RESOURCES-MIB by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'HOST-RESOURCES-MIB SNMP'
+ host: 'HOST-RESOURCES-MIB by SNMP'
key: 'vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]'
-
uuid: 16739aff044f4479a33e9157759e2980
@@ -517,7 +315,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 730a76bd19a24a55be24f72175251046
- expression: 'min(/HOST-RESOURCES-MIB SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/HOST-RESOURCES-MIB by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#MEMNAME}: High memory utilization'
event_name: '{#MEMNAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -540,7 +338,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HOST-RESOURCES-MIB SNMP'
+ host: 'HOST-RESOURCES-MIB by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
macros:
-
@@ -616,7 +414,7 @@ zabbix_export:
type: GRAPH
name: graphid
value:
- host: 'HOST-RESOURCES-MIB SNMP'
+ host: 'HOST-RESOURCES-MIB by SNMP'
name: 'CPU utilization'
-
type: GRAPH_PROTOTYPE
@@ -640,7 +438,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'HOST-RESOURCES-MIB SNMP'
+ host: 'HOST-RESOURCES-MIB by SNMP'
name: '{#MEMNAME}: Memory utilization'
-
type: GRAPH_PROTOTYPE
@@ -664,17 +462,219 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'HOST-RESOURCES-MIB SNMP'
+ host: 'HOST-RESOURCES-MIB by SNMP'
name: '{#FSNAME}: Disk space usage'
-
+ uuid: b3dd7c4974f442d68c53a79056bc5388
+ template: 'HOST-RESOURCES-MIB CPU by SNMP'
+ name: 'HOST-RESOURCES-MIB CPU by SNMP'
+ description: |
+ Requires Zabbix server 4.0.14, 4.2.8, 4.4.0 or newer (JSONPath function avg() used with types autoconversion).
+
+ MIBs used:
+ HOST-RESOURCES-MIB
+
+ Template tooling version used: 0.42
+ groups:
+ -
+ name: Templates/Modules
+ items:
+ -
+ uuid: 76b66d024509446ea4e7a48439f8d406
+ name: 'CPU utilization'
+ type: SNMP_AGENT
+ snmp_oid: 'discovery[{#CPU.UTIL},1.3.6.1.2.1.25.3.3.1.2]'
+ key: system.cpu.util
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: |
+ MIB: HOST-RESOURCES-MIB
+ The average, over the last minute, of the percentage of time that processors was not idle.
+ Implementations may approximate this one minute smoothing period if necessary.
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - '$..[''{#CPU.UTIL}''].avg()'
+ tags:
+ -
+ tag: component
+ value: cpu
+ triggers:
+ -
+ uuid: bb8b2193ed4c437284d569a38f500367
+ expression: 'min(/HOST-RESOURCES-MIB CPU by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
+ name: 'High CPU utilization'
+ event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'CPU utilization is too high. The system might be slow to respond.'
+ tags:
+ -
+ tag: scope
+ value: performance
+ macros:
+ -
+ macro: '{$CPU.UTIL.CRIT}'
+ value: '90'
+ -
+ uuid: a2718bb9168a451fae8fc97486176943
+ template: 'HOST-RESOURCES-MIB memory by SNMP'
+ name: 'HOST-RESOURCES-MIB memory by SNMP'
+ description: |
+ MIBs used:
+ HOST-RESOURCES-MIB
+
+ Template tooling version used: 0.42
+ groups:
+ -
+ name: Templates/Modules
+ discovery_rules:
+ -
+ uuid: 232e52a9b3df42f2b539c5924edc20c8
+ name: 'Memory discovery'
+ type: SNMP_AGENT
+ snmp_oid: 'discovery[{#MEMNAME},1.3.6.1.2.1.25.2.3.1.3,{#MEMTYPE},1.3.6.1.2.1.25.2.3.1.2,{#ALLOC_UNITS},1.3.6.1.2.1.25.2.3.1.4]'
+ key: vm.memory.discovery
+ delay: 1h
+ filter:
+ evaltype: AND
+ conditions:
+ -
+ macro: '{#MEMTYPE}'
+ value: '{$MEMORY.TYPE.MATCHES}'
+ formulaid: C
+ -
+ macro: '{#MEMTYPE}'
+ value: '{$MEMORY.TYPE.NOT_MATCHES}'
+ operator: NOT_MATCHES_REGEX
+ formulaid: D
+ -
+ macro: '{#MEMNAME}'
+ value: '{$MEMORY.NAME.MATCHES}'
+ formulaid: A
+ -
+ macro: '{#MEMNAME}'
+ value: '{$MEMORY.NAME.NOT_MATCHES}'
+ operator: NOT_MATCHES_REGEX
+ formulaid: B
+ description: 'HOST-RESOURCES-MIB::hrStorage discovery with memory filter'
+ item_prototypes:
+ -
+ uuid: 03d6c47431e74cd8b1d9faf95e9bc756
+ name: '{#MEMNAME}: Total memory'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.2.1.25.2.3.1.5.{#SNMPINDEX}'
+ key: 'vm.memory.total[hrStorageSize.{#SNMPINDEX}]'
+ history: 7d
+ units: B
+ description: |
+ MIB: HOST-RESOURCES-MIB
+ The size of the storage represented by this entry, in units of hrStorageAllocationUnits.
+ This object is writable to allow remote configuration of the size of the storage area in those cases where such an operation makes sense and is possible on the underlying system.
+ For example, the amount of main memory allocated to a buffer pool might be modified or the amount of disk space allocated to virtual memory might be modified.
+ preprocessing:
+ -
+ type: MULTIPLIER
+ parameters:
+ - '{#ALLOC_UNITS}'
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ uuid: f5b701faf10d40d596d04e1d921861f9
+ name: '{#MEMNAME}: Used memory'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.2.1.25.2.3.1.6.{#SNMPINDEX}'
+ key: 'vm.memory.used[hrStorageUsed.{#SNMPINDEX}]'
+ history: 7d
+ units: B
+ description: |
+ MIB: HOST-RESOURCES-MIB
+ The amount of the storage represented by this entry that is allocated, in units of hrStorageAllocationUnits.
+ preprocessing:
+ -
+ type: MULTIPLIER
+ parameters:
+ - '{#ALLOC_UNITS}'
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ uuid: 99961a81ae4a474ea157f108c8014c77
+ name: '{#MEMNAME}: Memory utilization'
+ type: CALCULATED
+ key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ params: 'last(//vm.memory.used[hrStorageUsed.{#SNMPINDEX}])/last(//vm.memory.total[hrStorageSize.{#SNMPINDEX}])*100'
+ description: 'Memory utilization in %.'
+ tags:
+ -
+ tag: component
+ value: memory
+ trigger_prototypes:
+ -
+ uuid: fb87fa900e404e2ba53fa5769fecc511
+ expression: 'min(/HOST-RESOURCES-MIB memory by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ name: '{#MEMNAME}: High memory utilization'
+ event_name: '{#MEMNAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
+ priority: AVERAGE
+ description: 'The system is running out of free memory.'
+ tags:
+ -
+ tag: scope
+ value: capacity
+ -
+ tag: scope
+ value: performance
+ graph_prototypes:
+ -
+ uuid: 47a47f92e42047fe937e01ad163ca665
+ name: '{#MEMNAME}: Memory utilization'
+ ymin_type_1: FIXED
+ ymax_type_1: FIXED
+ graph_items:
+ -
+ drawtype: GRADIENT_LINE
+ color: 1A7C11
+ item:
+ host: 'HOST-RESOURCES-MIB memory by SNMP'
+ key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
+ macros:
+ -
+ macro: '{$MEMORY.NAME.MATCHES}'
+ value: '.*'
+ description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level.'
+ -
+ macro: '{$MEMORY.NAME.NOT_MATCHES}'
+ value: CHANGE_IF_NEEDED
+ description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level if you need to filter out results.'
+ -
+ macro: '{$MEMORY.TYPE.MATCHES}'
+ value: '.*(\.2|hrStorageRam)$'
+ description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level.'
+ -
+ macro: '{$MEMORY.TYPE.NOT_MATCHES}'
+ value: CHANGE_IF_NEEDED
+ description: 'This macro is used in memory discovery. Can be overridden on the host or linked template level if you need to filter out results.'
+ -
+ macro: '{$MEMORY.UTIL.MAX}'
+ value: '90'
+ description: 'The warning threshold of the "Physical memory: Memory utilization" item.'
+ -
uuid: f6572ac29240452596e9f7b2a7ebb408
- template: 'HOST-RESOURCES-MIB storage SNMP'
- name: 'HOST-RESOURCES-MIB storage SNMP'
+ template: 'HOST-RESOURCES-MIB storage by SNMP'
+ name: 'HOST-RESOURCES-MIB storage by SNMP'
description: |
MIBs used:
HOST-RESOURCES-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -778,8 +778,8 @@ zabbix_export:
-
uuid: 9fbb4a0ceeba4c9e935f54610d5f1afb
expression: |
- last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is critically low'
event_name: '{#FSNAME}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -800,8 +800,8 @@ zabbix_export:
-
uuid: 5db5f43d1c3b4b1f91bef16ec1090945
expression: |
- last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
- ((last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
+ ((last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is low'
event_name: '{#FSNAME}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -816,8 +816,8 @@ zabbix_export:
-
name: '{#FSNAME}: Disk space is critically low'
expression: |
- last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/HOST-RESOURCES-MIB storage by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -839,14 +839,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'HOST-RESOURCES-MIB storage SNMP'
+ host: 'HOST-RESOURCES-MIB storage by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'HOST-RESOURCES-MIB storage SNMP'
+ host: 'HOST-RESOURCES-MIB storage by SNMP'
key: 'vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]'
macros:
-
@@ -890,7 +890,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HOST-RESOURCES-MIB SNMP'
+ host: 'HOST-RESOURCES-MIB by SNMP'
key: system.cpu.util
-
uuid: fe501ac6688d4165a645ef804644cf93
@@ -902,5 +902,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HOST-RESOURCES-MIB CPU SNMP'
+ host: 'HOST-RESOURCES-MIB CPU by SNMP'
key: system.cpu.util
diff --git a/templates/module/interfaces_simple_snmp/README.md b/templates/module/interfaces_simple_snmp/README.md
index 7b17d170ec4..ef1c330616a 100644
--- a/templates/module/interfaces_simple_snmp/README.md
+++ b/templates/module/interfaces_simple_snmp/README.md
@@ -1,9 +1,9 @@
-# Interfaces Simple SNMP
+# Interfaces Simple by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -59,14 +59,14 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Interfaces Simple SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/Interfaces Simple SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Interfaces Simple SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/Interfaces Simple SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Interfaces Simple SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Interfaces Simple SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Interfaces Simple SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Interfaces Simple SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Interfaces Simple by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/Interfaces Simple by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Interfaces Simple by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/Interfaces Simple by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Interfaces Simple by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Interfaces Simple by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Interfaces Simple by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Interfaces Simple by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/module/interfaces_simple_snmp/template_module_interfaces_simple_snmp.yaml b/templates/module/interfaces_simple_snmp/template_module_interfaces_simple_snmp.yaml
index 5e35e957a89..450151ae456 100644
--- a/templates/module/interfaces_simple_snmp/template_module_interfaces_simple_snmp.yaml
+++ b/templates/module/interfaces_simple_snmp/template_module_interfaces_simple_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:49Z'
+ version: '6.4'
+ date: '2022-10-27T19:26:01Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 7cd8aaa8d18d4b22a79edfb769e839b3
- template: 'Interfaces Simple SNMP'
- name: 'Interfaces Simple SNMP'
+ template: 'Interfaces Simple by SNMP'
+ name: 'Interfaces Simple by SNMP'
description: |
Template Module Interfaces Simple (no ifXTable). This is the exact copy of Template Module Interfaces template with the exception that metrics from ifXTable are replaced with ifTable counters where possible. Use this template with devices where IF-MIB::ifXtable is not available. If supported by the host - use Template Module Interfaces template instead.
@@ -20,7 +20,7 @@ zabbix_export:
Description: 32bit counters are used in this template (since there is no ifXtable available). If busy interfaces return incorrect bits sent/received - set update interval to 1m or less.
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -316,9 +316,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 94097ac2b53748aea45fed2f3014c1b6
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFDESCR}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -369,21 +369,21 @@ zabbix_export:
-
uuid: 13c523ffdf154e6fb1ab7628e3a2010a
expression: |
- change(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ change(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
and (
- last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Interfaces Simple SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Interfaces Simple by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -392,8 +392,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -401,13 +401,13 @@ zabbix_export:
-
uuid: 7594011ba1964285abd0f232ffeb22e3
expression: |
- (avg(/Interfaces Simple SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
- avg(/Interfaces Simple SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
- last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ (avg(/Interfaces Simple by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
+ avg(/Interfaces Simple by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
+ last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Interfaces Simple SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
- avg(/Interfaces Simple SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
+ avg(/Interfaces Simple by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
+ avg(/Interfaces Simple by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Simple by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
name: 'Interface {#IFDESCR}: High bandwidth usage'
event_name: 'Interface {#IFDESCR}: High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -417,8 +417,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -426,12 +426,12 @@ zabbix_export:
-
uuid: 2eb4baaf86a2405b9a1a232241eee72b
expression: |
- min(/Interfaces Simple SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Interfaces Simple SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Interfaces Simple by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Interfaces Simple by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Interfaces Simple SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Interfaces Simple SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Interfaces Simple by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Interfaces Simple by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFDESCR}: High error rate'
event_name: 'Interface {#IFDESCR}: High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -441,8 +441,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces Simple SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces Simple by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -456,42 +456,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Interfaces Simple SNMP'
+ host: 'Interfaces Simple by SNMP'
key: 'net.if.in[ifInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Interfaces Simple SNMP'
+ host: 'Interfaces Simple by SNMP'
key: 'net.if.out[ifOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Interfaces Simple SNMP'
+ host: 'Interfaces Simple by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Interfaces Simple SNMP'
+ host: 'Interfaces Simple by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Interfaces Simple SNMP'
+ host: 'Interfaces Simple by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Interfaces Simple SNMP'
+ host: 'Interfaces Simple by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
macros:
-
@@ -565,7 +565,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Interfaces Simple SNMP'
+ host: 'Interfaces Simple by SNMP'
name: 'Interface {#IFDESCR}: Network traffic'
valuemaps:
-
diff --git a/templates/module/interfaces_snmp/README.md b/templates/module/interfaces_snmp/README.md
index 04064b71364..edb78ee7e57 100644
--- a/templates/module/interfaces_snmp/README.md
+++ b/templates/module/interfaces_snmp/README.md
@@ -1,9 +1,9 @@
-# Interfaces SNMP
+# Interfaces by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -61,12 +61,12 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Interfaces SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Interfaces SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Interfaces SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Interfaces SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Interfaces SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Interfaces SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Interfaces SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Interfaces SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Interfaces by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Interfaces by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Interfaces by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Interfaces by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Interfaces by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Interfaces by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Interfaces by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Interfaces by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/module/interfaces_snmp/template_module_interfaces_snmp.yaml b/templates/module/interfaces_snmp/template_module_interfaces_snmp.yaml
index e162a1b0f87..a6e0ffdb295 100644
--- a/templates/module/interfaces_snmp/template_module_interfaces_snmp.yaml
+++ b/templates/module/interfaces_snmp/template_module_interfaces_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:49Z'
+ version: '6.4'
+ date: '2022-10-27T19:26:05Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,15 +8,15 @@ zabbix_export:
templates:
-
uuid: 809cd59886464ff3ad0a66d16fb1f2d8
- template: 'Interfaces SNMP'
- name: 'Interfaces SNMP'
+ template: 'Interfaces by SNMP'
+ name: 'Interfaces by SNMP'
description: |
Template Module Interfaces
MIBs used:
IF-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -325,9 +325,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 35d62eb5323141a3a3f3afc4c9250243
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -378,21 +378,21 @@ zabbix_export:
-
uuid: 9f1f6cff58454b469f588af8624f9078
expression: |
- change(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Interfaces SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Interfaces by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -401,8 +401,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -410,13 +410,13 @@ zabbix_export:
-
uuid: 913c87be8cd94aeb8a3f9e008a4cd560
expression: |
- (avg(/Interfaces SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Interfaces SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Interfaces by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Interfaces by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Interfaces SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Interfaces SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Interfaces by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Interfaces by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -426,8 +426,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -435,12 +435,12 @@ zabbix_export:
-
uuid: 15b436b13012415bb9773d3ddab22178
expression: |
- min(/Interfaces SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Interfaces SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Interfaces by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Interfaces by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Interfaces SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Interfaces SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Interfaces by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Interfaces by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -450,8 +450,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -468,42 +468,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Interfaces SNMP'
+ host: 'Interfaces by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Interfaces SNMP'
+ host: 'Interfaces by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Interfaces SNMP'
+ host: 'Interfaces by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Interfaces SNMP'
+ host: 'Interfaces by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Interfaces SNMP'
+ host: 'Interfaces by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Interfaces SNMP'
+ host: 'Interfaces by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
macros:
-
@@ -583,7 +583,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Interfaces SNMP'
+ host: 'Interfaces by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
diff --git a/templates/module/interfaces_win_snmp/README.md b/templates/module/interfaces_win_snmp/README.md
index c52e4948e0a..312b5e73e84 100644
--- a/templates/module/interfaces_win_snmp/README.md
+++ b/templates/module/interfaces_win_snmp/README.md
@@ -1,9 +1,9 @@
-# Interfaces Windows SNMP
+# Interfaces Windows by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
Special version of interfaces template that is required for Windows OS. Since MS doesn't support 64 bit counters but supports ifAlias and ifHighSpeed.
## Setup
@@ -62,14 +62,14 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Interfaces Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Interfaces Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Interfaces Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Interfaces Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Interfaces Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Interfaces Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Interfaces Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Interfaces Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Interfaces Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Interfaces Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Interfaces Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Interfaces Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Interfaces Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Interfaces Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Interfaces Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Interfaces Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/module/interfaces_win_snmp/template_module_interfaces_win_snmp.yaml b/templates/module/interfaces_win_snmp/template_module_interfaces_win_snmp.yaml
index 00c939ccf5e..15bf961baca 100644
--- a/templates/module/interfaces_win_snmp/template_module_interfaces_win_snmp.yaml
+++ b/templates/module/interfaces_win_snmp/template_module_interfaces_win_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:50Z'
+ version: '6.4'
+ date: '2022-10-27T19:26:05Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: d7af232ed629481e95d2df9952c519c8
- template: 'Interfaces Windows SNMP'
- name: 'Interfaces Windows SNMP'
+ template: 'Interfaces Windows by SNMP'
+ name: 'Interfaces Windows by SNMP'
description: |
Template Interfaces Windows
@@ -20,7 +20,7 @@ zabbix_export:
Description: 32bit counters are used in this template (since 64bit are not supported by Windows OS). If busy interfaces return incorrect bits sent/received - set update interval to 1m or less.
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -329,9 +329,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: efe4c7dbbd804e41bc1bcd0630afcf09
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -382,21 +382,21 @@ zabbix_export:
-
uuid: 31393aeac3b44062b98267fc1f594c52
expression: |
- change(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Interfaces Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Interfaces Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -405,8 +405,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -414,13 +414,13 @@ zabbix_export:
-
uuid: 232019e4163a4e7ebd63876751721824
expression: |
- (avg(/Interfaces Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Interfaces Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Interfaces Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Interfaces Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Interfaces Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Interfaces Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Interfaces Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Interfaces Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Interfaces Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -430,8 +430,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -439,12 +439,12 @@ zabbix_export:
-
uuid: 9ee9204a4a4044ae82bd0f75299f2a5d
expression: |
- min(/Interfaces Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Interfaces Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Interfaces Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Interfaces Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Interfaces Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Interfaces Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Interfaces Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Interfaces Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -454,8 +454,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Interfaces Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Interfaces Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -469,42 +469,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Interfaces Windows SNMP'
+ host: 'Interfaces Windows by SNMP'
key: 'net.if.in[ifInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Interfaces Windows SNMP'
+ host: 'Interfaces Windows by SNMP'
key: 'net.if.out[ifOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Interfaces Windows SNMP'
+ host: 'Interfaces Windows by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Interfaces Windows SNMP'
+ host: 'Interfaces Windows by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Interfaces Windows SNMP'
+ host: 'Interfaces Windows by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Interfaces Windows SNMP'
+ host: 'Interfaces Windows by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
macros:
-
@@ -583,7 +583,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Interfaces Windows SNMP'
+ host: 'Interfaces Windows by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
diff --git a/templates/module/linux_snmp_snmp/README.md b/templates/module/linux_snmp_snmp/README.md
index 725bd842426..c10a0858064 100644
--- a/templates/module/linux_snmp_snmp/README.md
+++ b/templates/module/linux_snmp_snmp/README.md
@@ -1,9 +1,9 @@
-# Linux memory SNMP
+# Linux memory by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -46,23 +46,23 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Linux memory SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE |<p>**Depends on**:</p><p>- Lack of available memory</p> |
-|Lack of available memory |<p>-</p> |`max(/Linux memory SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory SNMP/vm.memory.total[memTotalReal.0])>0` |AVERAGE | |
-|High swap space usage |<p>This trigger is ignored, if there is no swap configured.</p> |`max(/Linux memory SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux memory SNMP/system.swap.total[memTotalSwap.0])>0` |WARNING |<p>**Depends on**:</p><p>- High memory utilization</p><p>- Lack of available memory</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Linux memory by SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE |<p>**Depends on**:</p><p>- Lack of available memory</p> |
+|Lack of available memory |<p>-</p> |`max(/Linux memory by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory by SNMP/vm.memory.total[memTotalReal.0])>0` |AVERAGE | |
+|High swap space usage |<p>This trigger is ignored, if there is no swap configured.</p> |`max(/Linux memory by SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux memory by SNMP/system.swap.total[memTotalSwap.0])>0` |WARNING |<p>**Depends on**:</p><p>- High memory utilization</p><p>- Lack of available memory</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
- Description: Please note that memory utilization is a rough estimate, since memory available is calculated as free+buffers+cached, which is not 100% accurate, but the best we can get using SNMP.
-# Linux block devices SNMP
+# Linux block devices by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -104,13 +104,13 @@ There are no template links in this template.
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Linux CPU SNMP
+# Linux CPU by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -163,18 +163,18 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Load average is too high |<p>Per CPU load average is too high. Your system may be slow to respond.</p> |`min(/Linux CPU SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux CPU SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN} and last(/Linux CPU SNMP/system.cpu.load.avg5[laLoad.2])>0 and last(/Linux CPU SNMP/system.cpu.load.avg15[laLoad.3])>0` |AVERAGE | |
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Linux CPU SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|Load average is too high |<p>Per CPU load average is too high. Your system may be slow to respond.</p> |`min(/Linux CPU by SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux CPU by SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN} and last(/Linux CPU by SNMP/system.cpu.load.avg5[laLoad.2])>0 and last(/Linux CPU by SNMP/system.cpu.load.avg15[laLoad.3])>0` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Linux CPU by SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Linux filesystems SNMP
+# Linux filesystems by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -222,12 +222,12 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Linux filesystems SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
-|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Linux filesystems SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
-|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux filesystems SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}` |AVERAGE | |
-|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux filesystems SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}` |WARNING |<p>**Depends on**:</p><p>- {#FSNAME}: Running out of free inodes</p> |
+|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Linux filesystems by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
+|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Linux filesystems by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
+|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux filesystems by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}` |AVERAGE | |
+|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux filesystems by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}` |WARNING |<p>**Depends on**:</p><p>- {#FSNAME}: Running out of free inodes</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/module/linux_snmp_snmp/template_module_linux_snmp_snmp.yaml b/templates/module/linux_snmp_snmp/template_module_linux_snmp_snmp.yaml
index cf729effb92..213cf269529 100644
--- a/templates/module/linux_snmp_snmp/template_module_linux_snmp_snmp.yaml
+++ b/templates/module/linux_snmp_snmp/template_module_linux_snmp_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:36:52Z'
+ version: '6.4'
+ date: '2022-10-27T19:26:03Z'
template_groups:
-
uuid: 57b7ae836ca64446ba2c296389c009b7
@@ -8,13 +8,13 @@ zabbix_export:
templates:
-
uuid: 8278f5e79ef2420cab500a147cc72009
- template: 'Linux block devices SNMP'
- name: 'Linux block devices SNMP'
+ template: 'Linux block devices by SNMP'
+ name: 'Linux block devices by SNMP'
description: |
MIBs used:
UCD-DISKIO-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -115,14 +115,14 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux block devices SNMP'
+ host: 'Linux block devices by SNMP'
key: 'vfs.dev.read.rate[diskIOReads.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Linux block devices SNMP'
+ host: 'Linux block devices by SNMP'
key: 'vfs.dev.write.rate[diskIOWrites.{#SNMPINDEX}]'
macros:
-
@@ -135,14 +135,14 @@ zabbix_export:
description: 'This macro is used in block devices discovery. Can be overridden on the host or linked template level'
-
uuid: f55b1b1c10a44fe8aef0631f6f41b86d
- template: 'Linux CPU SNMP'
- name: 'Linux CPU SNMP'
+ template: 'Linux CPU by SNMP'
+ name: 'Linux CPU by SNMP'
description: |
MIBs used:
HOST-RESOURCES-MIB
UCD-SNMP-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -546,7 +546,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 305450aac4ce4170a3a7942f6b092593
- expression: 'min(/Linux CPU SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Linux CPU by SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -567,55 +567,55 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.system[ssCpuRawSystem.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.user[ssCpuRawUser.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.nice[ssCpuRawNice.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.iowait[ssCpuRawWait.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.steal[ssCpuRawSteal.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.interrupt[ssCpuRawInterrupt.{#SNMPINDEX}]'
-
sortorder: '6'
color: AC8C14
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.softirq[ssCpuRawSoftIRQ.{#SNMPINDEX}]'
-
sortorder: '7'
color: 611F27
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.guest[ssCpuRawGuest.{#SNMPINDEX}]'
-
sortorder: '8'
color: F230E0
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.guest_nice[ssCpuRawGuestNice.{#SNMPINDEX}]'
-
uuid: 27556abf8985458f9d300ab5981f6e96
@@ -627,7 +627,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.util[snmp,{#SNMPINDEX}]'
master_item:
key: 'system.cpu.num[snmp]'
@@ -648,14 +648,14 @@ zabbix_export:
description: 'Load per CPU considered sustainable. Tune if needed.'
-
uuid: cbaf0383cb934294ac53a28ddfd49434
- template: 'Linux filesystems SNMP'
- name: 'Linux filesystems SNMP'
+ template: 'Linux filesystems by SNMP'
+ name: 'Linux filesystems by SNMP'
description: |
MIBs used:
HOST-RESOURCES-MIB
UCD-SNMP-MIB
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -717,7 +717,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 377f4ffa529f4b0690a11228f4021294
- expression: 'min(/Linux filesystems SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
+ expression: 'min(/Linux filesystems by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
name: '{#FSNAME}: Running out of free inodes'
event_name: '{#FSNAME}: Running out of free inodes (free < {$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}%)'
opdata: 'Free inodes: {ITEM.LASTVALUE1}'
@@ -734,7 +734,7 @@ zabbix_export:
value: performance
-
uuid: 5f80199affa44ed7a6b875c49ca00aa7
- expression: 'min(/Linux filesystems SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}'
+ expression: 'min(/Linux filesystems by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}'
name: '{#FSNAME}: Running out of free inodes'
event_name: '{#FSNAME}: Running out of free inodes (free < {$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}%)'
opdata: 'Free inodes: {ITEM.LASTVALUE1}'
@@ -745,7 +745,7 @@ zabbix_export:
dependencies:
-
name: '{#FSNAME}: Running out of free inodes'
- expression: 'min(/Linux filesystems SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
+ expression: 'min(/Linux filesystems by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
tags:
-
tag: scope
@@ -822,8 +822,8 @@ zabbix_export:
-
uuid: ae3535ef3f674dccb6c809dc7d01172c
expression: |
- last(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Linux filesystems SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Linux filesystems by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is critically low'
event_name: '{#FSNAME}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -844,8 +844,8 @@ zabbix_export:
-
uuid: 3bef4897bcd549288203241c5ca9f017
expression: |
- last(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
- ((last(/Linux filesystems SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
+ ((last(/Linux filesystems by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is low'
event_name: '{#FSNAME}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -860,8 +860,8 @@ zabbix_export:
-
name: '{#FSNAME}: Disk space is critically low'
expression: |
- last(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Linux filesystems SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux filesystems SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Linux filesystems by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux filesystems by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux filesystems by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -883,14 +883,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'Linux filesystems SNMP'
+ host: 'Linux filesystems by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'Linux filesystems SNMP'
+ host: 'Linux filesystems by SNMP'
key: 'vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]'
macros:
-
@@ -931,8 +931,8 @@ zabbix_export:
value: '80'
-
uuid: 443e4897fb0a4eef9d4624a3baa8f174
- template: 'Linux memory SNMP'
- name: 'Linux memory SNMP'
+ template: 'Linux memory by SNMP'
+ name: 'Linux memory by SNMP'
description: |
MIBs used:
UCD-SNMP-MIB
@@ -941,7 +941,7 @@ zabbix_export:
Description: Please note that memory utilization is a rough estimate, since memory available is calculated as free+buffers+cached, which is not 100% accurate, but the best we can get using SNMP.
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: Templates/Modules
@@ -1117,7 +1117,7 @@ zabbix_export:
triggers:
-
uuid: 38e4d31ccb594ba1a041c47633887ef6
- expression: 'min(/Linux memory SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Linux memory by SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -1125,7 +1125,7 @@ zabbix_export:
dependencies:
-
name: 'Lack of available memory'
- expression: 'max(/Linux memory SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory SNMP/vm.memory.total[memTotalReal.0])>0'
+ expression: 'max(/Linux memory by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory by SNMP/vm.memory.total[memTotalReal.0])>0'
tags:
-
tag: scope
@@ -1146,7 +1146,7 @@ zabbix_export:
triggers:
-
uuid: 12324c6e7b564c858406702148b43bc4
- expression: 'max(/Linux memory SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux memory SNMP/system.swap.total[memTotalSwap.0])>0'
+ expression: 'max(/Linux memory by SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux memory by SNMP/system.swap.total[memTotalSwap.0])>0'
name: 'High swap space usage'
event_name: 'High swap space usage (less than {$SWAP.PFREE.MIN.WARN}% free)'
opdata: 'Free: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
@@ -1155,17 +1155,17 @@ zabbix_export:
dependencies:
-
name: 'High memory utilization'
- expression: 'min(/Linux memory SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Linux memory by SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
-
name: 'Lack of available memory'
- expression: 'max(/Linux memory SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory SNMP/vm.memory.total[memTotalReal.0])>0'
+ expression: 'max(/Linux memory by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory by SNMP/vm.memory.total[memTotalReal.0])>0'
tags:
-
tag: scope
value: capacity
-
uuid: 687586e62f4b4191aa95ba1ba74c7787
- expression: 'max(/Linux memory SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory SNMP/vm.memory.total[memTotalReal.0])>0'
+ expression: 'max(/Linux memory by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux memory by SNMP/vm.memory.total[memTotalReal.0])>0'
name: 'Lack of available memory'
event_name: 'Lack of available memory (<{$MEMORY.AVAILABLE.MIN} of {ITEM.VALUE2})'
opdata: 'Available: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
@@ -1180,9 +1180,9 @@ zabbix_export:
-
uuid: 4e08b6e41268476292ac92da123bd8d7
expression: |
- min(/Linux CPU SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux CPU SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN}
- and last(/Linux CPU SNMP/system.cpu.load.avg5[laLoad.2])>0
- and last(/Linux CPU SNMP/system.cpu.load.avg15[laLoad.3])>0
+ min(/Linux CPU by SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux CPU by SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN}
+ and last(/Linux CPU by SNMP/system.cpu.load.avg5[laLoad.2])>0
+ and last(/Linux CPU by SNMP/system.cpu.load.avg15[laLoad.3])>0
name: 'Load average is too high'
event_name: 'Load average is too high (per CPU load over {$LOAD_AVG_PER_CPU.MAX.WARN} for 5m)'
opdata: 'Load averages(1m 5m 15m): ({ITEM.LASTVALUE1} {ITEM.LASTVALUE3} {ITEM.LASTVALUE4}), # of CPUs: {ITEM.LASTVALUE2}'
@@ -1203,13 +1203,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.switches[ssRawContexts.0]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.intr[ssRawInterrupts.0]'
-
uuid: 6af175b5899946c5bae1e7ab4e8f0635
@@ -1220,14 +1220,14 @@ zabbix_export:
drawtype: BOLD_LINE
color: 1A7C11
item:
- host: 'Linux memory SNMP'
+ host: 'Linux memory by SNMP'
key: 'vm.memory.total[memTotalReal.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Linux memory SNMP'
+ host: 'Linux memory by SNMP'
key: 'vm.memory.available[snmp]'
-
uuid: edd17c68085b4a328c24ebd8d37fd30c
@@ -1239,7 +1239,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Linux memory SNMP'
+ host: 'Linux memory by SNMP'
key: 'vm.memory.util[snmp]'
-
uuid: 24bd0481e30a49a78410fef4e1470546
@@ -1248,13 +1248,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux memory SNMP'
+ host: 'Linux memory by SNMP'
key: 'system.swap.free[memAvailSwap.0]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux memory SNMP'
+ host: 'Linux memory by SNMP'
key: 'system.swap.total[memTotalSwap.0]'
-
uuid: 1ec155ff28e14859b26e9804e96c7fb8
@@ -1264,24 +1264,24 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.load.avg1[laLoad.1]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.load.avg5[laLoad.2]'
-
sortorder: '2'
color: F63100
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.load.avg15[laLoad.3]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Linux CPU SNMP'
+ host: 'Linux CPU by SNMP'
key: 'system.cpu.num[snmp]'
diff --git a/templates/module/process/README.md b/templates/module/process/README.md
new file mode 100644
index 00000000000..5e93efb2585
--- /dev/null
+++ b/templates/module/process/README.md
@@ -0,0 +1,77 @@
+
+# OS processes by Zabbix agent
+
+## Overview
+
+For Zabbix version: 6.4 and higher.
+This template is designed to monitor processes by Zabbix that work without any external scripts.
+Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
+For example, by specifying "zabbix" as macro value, you can monitor all zabbix processes.
+
+
+
+This template was tested on:
+
+- CentOS, version CentOS Linux 8;
+- Ubuntu, version Ubuntu 22.04.1 LTS.
+
+## Setup
+
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/zabbix_agent) for basic instructions.
+
+Install and setup [Zabbix agent](https://www.zabbix.com/documentation/6.4/manual/installation/install_from_packages).
+
+Custom processes set in macros:
+
+- {$PROC.NAME.MATCHES}
+- {$PROC.NAME.NOT_MATCHES}
+
+
+## Zabbix configuration
+
+No specific Zabbix configuration is required.
+
+### Macros used
+
+|Name|Description|Default|
+|----|-----------|-------|
+|{$PROC.NAME.MATCHES} |<p>This macro is used in the discovery of processes. It can be overridden on a host-level or on a linked template-level.</p> |`<CHANGE VALUE>` |
+|{$PROC.NAME.NOT_MATCHES} |<p>This macro is used in the discovery of processes. It can be overridden on a host-level or on a linked template-level.</p> |`<CHANGE VALUE>` |
+
+## Template links
+
+There are no template links in this template.
+
+## Discovery rules
+
+|Name|Description|Type|Key and additional info|
+|----|-----------|----|----|
+|Processes discovery |<p>Discovery of OS summary processes.</p> |DEPENDENT |custom.proc.discovery<p>**Filter**:</p>AND <p>- {#VMEM} NOT_MATCHES_REGEX `-1`</p><p>- {#NAME} MATCHES_REGEX `{$PROC.NAME.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$PROC.NAME.NOT_MATCHES}`</p> |
+
+## Items collected
+
+|Group|Name|Description|Type|Key and additional info|
+|-----|----|-----------|----|---------------------|
+|OS |Process [{#NAME}]: Get data |<p>Summary metrics collected during the process {#NAME}.</p> |DEPENDENT |custom.proc.get[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.[?(@["name"]=="{#NAME}")].first()`</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> Failed to retrieve process {#NAME} data`</p> |
+|OS |Process [{#NAME}]: Memory usage (rss) |<p>The summary of Resident Set Size (RSS) memory used by the process {#NAME} in bytes.</p> |DEPENDENT |custom.proc.rss[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.rss`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|OS |Process [{#NAME}]: Memory usage (vsize) |<p>The summary of virtual memory used by process {#NAME} in bytes.</p> |DEPENDENT |custom.proc.vmem[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.vsize`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|OS |Process [{#NAME}]: Memory usage, % |<p>The percentage of real memory used by the process {#NAME}.</p> |DEPENDENT |custom.proc.pmem[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.pmem`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|OS |Process [{#NAME}]: Number of running processes |<p>The number of running processes {#NAME}.</p> |DEPENDENT |custom.proc.num[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.processes`</p><p>â›”ï¸ON_FAIL: `CUSTOM_VALUE -> 0`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
+|OS |Process [{#NAME}]: Number of threads |<p>The number of threads {#NAME}.</p> |DEPENDENT |custom.proc.thread[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.threads`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|OS |Process [{#NAME}]: Number of page faults |<p>The number of page faults {#NAME}.</p> |DEPENDENT |custom.proc.page[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.page_faults`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|OS |Process [{#NAME}]: Size of locked memory |<p>The size of locked memory {#NAME}.</p> |DEPENDENT |custom.proc.mem.locked[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.lck`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|OS |Process [{#NAME}]: Swap space used |<p>The swap space used by {#NAME}.</p> |DEPENDENT |custom.proc.swap[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$.swap`</p><p>â›”ï¸ON_FAIL: `DISCARD_VALUE -> `</p> |
+|Zabbix raw items |OS: Get process summary |<p>The summary of data metrics for all processes.</p> |ZABBIX_PASSIVE |proc.get[,,,summary] |
+
+## Triggers
+
+|Name|Description|Expression|Severity|Dependencies and additional info|
+|----|-----------|----|----|----|
+|Process [{#NAME}]: is not running |<p>-</p> |`last(/OS processes by Zabbix agent/custom.proc.num[{#NAME}])=0` |HIGH |<p>Manual close: YES</p> |
+
+## Feedback
+
+Please report any issues with the template at https://support.zabbix.com.
+
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).
+
diff --git a/templates/module/process/template_module_process.yaml b/templates/module/process/template_module_process.yaml
new file mode 100644
index 00000000000..04679ba623f
--- /dev/null
+++ b/templates/module/process/template_module_process.yaml
@@ -0,0 +1,332 @@
+zabbix_export:
+ version: '6.4'
+ date: '2022-10-28T08:41:56Z'
+ template_groups:
+ -
+ uuid: 57b7ae836ca64446ba2c296389c009b7
+ name: Templates/Modules
+ templates:
+ -
+ uuid: 0f6889282f6048e2b1370e569e578985
+ template: 'OS processes by Zabbix agent'
+ name: 'OS processes by Zabbix agent'
+ description: |
+ Get processes metrics using item proc.get by Zabbix agent.
+
+ You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback
+
+ Template tooling version used: 0.42
+ groups:
+ -
+ name: Templates/Modules
+ items:
+ -
+ uuid: 803390429cf949d3b8439dd5dd71c706
+ name: 'OS: Get process summary'
+ key: 'proc.get[,,,summary]'
+ history: '0'
+ trends: '0'
+ value_type: TEXT
+ description: 'The summary of data metrics for all processes.'
+ tags:
+ -
+ tag: component
+ value: raw
+ discovery_rules:
+ -
+ uuid: 7c0e8b719d0e464f92ee42a3da75b682
+ name: 'Processes discovery'
+ type: DEPENDENT
+ key: custom.proc.discovery
+ delay: '0'
+ filter:
+ evaltype: AND
+ conditions:
+ -
+ macro: '{#VMEM}'
+ value: '-1'
+ operator: NOT_MATCHES_REGEX
+ formulaid: C
+ -
+ macro: '{#NAME}'
+ value: '{$PROC.NAME.MATCHES}'
+ formulaid: A
+ -
+ macro: '{#NAME}'
+ value: '{$PROC.NAME.NOT_MATCHES}'
+ operator: NOT_MATCHES_REGEX
+ formulaid: B
+ description: 'Discovery of OS summary processes.'
+ item_prototypes:
+ -
+ uuid: 2e9b31e2b47741f4b35c5d15f33378ea
+ name: 'Process [{#NAME}]: Get data'
+ type: DEPENDENT
+ key: 'custom.proc.get[{#NAME}]'
+ delay: '0'
+ history: 0d
+ trends: '0'
+ value_type: TEXT
+ description: 'Summary metrics collected during the process {#NAME}.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - '$.[?(@["name"]=="{#NAME}")].first()'
+ error_handler: CUSTOM_VALUE
+ error_handler_params: 'Failed to retrieve process {#NAME} data'
+ master_item:
+ key: 'proc.get[,,,summary]'
+ tags:
+ -
+ tag: component
+ value: raw
+ -
+ tag: process
+ value: '{#NAME}'
+ -
+ uuid: 822ffda22eb042b89fc50b212aab133f
+ name: 'Process [{#NAME}]: Size of locked memory'
+ type: DEPENDENT
+ key: 'custom.proc.mem.locked[{#NAME}]'
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The size of locked memory {#NAME}.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.lck
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ tag: process
+ value: '{#NAME}'
+ -
+ uuid: 0bb7d924b8814c42a494d8a3baf48a59
+ name: 'Process [{#NAME}]: Number of running processes'
+ type: DEPENDENT
+ key: 'custom.proc.num[{#NAME}]'
+ delay: '0'
+ history: 7d
+ description: 'The number of running processes {#NAME}.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.processes
+ error_handler: CUSTOM_VALUE
+ error_handler_params: '0'
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1h
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ tag: process
+ value: '{#NAME}'
+ trigger_prototypes:
+ -
+ uuid: 66294f983a134a1e81165878f30d3ebc
+ expression: 'last(/OS processes by Zabbix agent/custom.proc.num[{#NAME}])=0'
+ name: 'Process [{#NAME}]: is not running'
+ priority: HIGH
+ manual_close: 'YES'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: abccdac17c7e4b549fcfe70ceeedeb9b
+ name: 'Process [{#NAME}]: Number of page faults'
+ type: DEPENDENT
+ key: 'custom.proc.page[{#NAME}]'
+ delay: '0'
+ history: 7d
+ description: 'The number of page faults {#NAME}.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.page_faults
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ tag: process
+ value: '{#NAME}'
+ -
+ uuid: 4ffd202fb6044b819f6f28dc866ca8f1
+ name: 'Process [{#NAME}]: Memory usage, %'
+ type: DEPENDENT
+ key: 'custom.proc.pmem[{#NAME}]'
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: 'The percentage of real memory used by the process {#NAME}.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.pmem
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ tag: process
+ value: '{#NAME}'
+ -
+ uuid: 7e573e38bce04167bc37712c0a3e2194
+ name: 'Process [{#NAME}]: Memory usage (rss)'
+ type: DEPENDENT
+ key: 'custom.proc.rss[{#NAME}]'
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The summary of Resident Set Size (RSS) memory used by the process {#NAME} in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.rss
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ tag: process
+ value: '{#NAME}'
+ -
+ uuid: 12370d3b25024d2189cddba8d3b23938
+ name: 'Process [{#NAME}]: Swap space used'
+ type: DEPENDENT
+ key: 'custom.proc.swap[{#NAME}]'
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The swap space used by {#NAME}.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.swap
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ tag: process
+ value: '{#NAME}'
+ -
+ uuid: a7265ca1b1d2463294e26d80fe075639
+ name: 'Process [{#NAME}]: Number of threads'
+ type: DEPENDENT
+ key: 'custom.proc.thread[{#NAME}]'
+ delay: '0'
+ history: 7d
+ description: 'The number of threads {#NAME}.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.threads
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ tag: process
+ value: '{#NAME}'
+ -
+ uuid: c1b9b1d8f28947589e46041690899100
+ name: 'Process [{#NAME}]: Memory usage (vsize)'
+ type: DEPENDENT
+ key: 'custom.proc.vmem[{#NAME}]'
+ delay: '0'
+ history: 7d
+ value_type: FLOAT
+ units: B
+ description: 'The summary of virtual memory used by process {#NAME} in bytes.'
+ preprocessing:
+ -
+ type: JSONPATH
+ parameters:
+ - $.vsize
+ error_handler: DISCARD_VALUE
+ master_item:
+ key: 'custom.proc.get[{#NAME}]'
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ tag: process
+ value: '{#NAME}'
+ graph_prototypes:
+ -
+ uuid: b8f5b539152445fdbadbfba92adad1bf
+ name: 'Process [{#NAME}]: Memory usage[{#NAME}]'
+ graph_items:
+ -
+ drawtype: BOLD_LINE
+ color: 1A7C11
+ item:
+ host: 'OS processes by Zabbix agent'
+ key: 'custom.proc.vmem[{#NAME}]'
+ -
+ sortorder: '1'
+ drawtype: BOLD_LINE
+ color: 2774A4
+ item:
+ host: 'OS processes by Zabbix agent'
+ key: 'custom.proc.rss[{#NAME}]'
+ master_item:
+ key: 'proc.get[,,,summary]'
+ lld_macro_paths:
+ -
+ lld_macro: '{#NAME}'
+ path: $.name
+ -
+ lld_macro: '{#VMEM}'
+ path: $.vsize
+ macros:
+ -
+ macro: '{$PROC.NAME.MATCHES}'
+ value: '<CHANGE VALUE>'
+ description: 'This macro is used in the discovery of processes. It can be overridden on a host-level or on a linked template-level.'
+ -
+ macro: '{$PROC.NAME.NOT_MATCHES}'
+ value: '<CHANGE VALUE>'
+ description: 'This macro is used in the discovery of processes. It can be overridden on a host-level or on a linked template-level.'
diff --git a/templates/net/alcatel_timetra_snmp/README.md b/templates/net/alcatel_timetra_snmp/README.md
index f5ed50cde57..8d5fecdf013 100644
--- a/templates/net/alcatel_timetra_snmp/README.md
+++ b/templates/net/alcatel_timetra_snmp/README.md
@@ -1,9 +1,9 @@
-# Alcatel Timetra TiMOS SNMP
+# Alcatel Timetra TiMOS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -101,29 +101,29 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Alcatel Timetra TiMOS SNMP/system.cpu.util[sgiCpuUsage.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|#{#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Alcatel Timetra TiMOS SNMP/sensor.fan.status[tmnxChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Alcatel Timetra TiMOS SNMP/system.name,#1)<>last(/Alcatel Timetra TiMOS SNMP/system.name,#2) and length(last(/Alcatel Timetra TiMOS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Alcatel Timetra TiMOS SNMP/system.sw.os[sysDescr.0],#1)<>last(/Alcatel Timetra TiMOS SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Alcatel Timetra TiMOS SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Alcatel Timetra TiMOS SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#2) and length(last(/Alcatel Timetra TiMOS SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Alcatel Timetra TiMOS SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Alcatel Timetra TiMOS SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Alcatel Timetra TiMOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Alcatel Timetra TiMOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Alcatel Timetra TiMOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Alcatel Timetra TiMOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Alcatel Timetra TiMOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Alcatel Timetra TiMOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Alcatel Timetra TiMOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Alcatel Timetra TiMOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|#{#SNMPINDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Alcatel Timetra TiMOS SNMP/sensor.psu.status[tmnxChassisPowerSupply1Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|#{#SNMPINDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Alcatel Timetra TiMOS SNMP/sensor.psu.status[tmnxChassisPowerSupply2Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Alcatel Timetra TiMOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Alcatel Timetra TiMOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Alcatel Timetra TiMOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Alcatel Timetra TiMOS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Alcatel Timetra TiMOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Alcatel Timetra TiMOS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Alcatel Timetra TiMOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Alcatel Timetra TiMOS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Alcatel Timetra TiMOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Alcatel Timetra TiMOS by SNMP/system.cpu.util[sgiCpuUsage.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|#{#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Alcatel Timetra TiMOS by SNMP/sensor.fan.status[tmnxChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Alcatel Timetra TiMOS by SNMP/system.name,#1)<>last(/Alcatel Timetra TiMOS by SNMP/system.name,#2) and length(last(/Alcatel Timetra TiMOS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Alcatel Timetra TiMOS by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Alcatel Timetra TiMOS by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Alcatel Timetra TiMOS by SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Alcatel Timetra TiMOS by SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS by SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#2) and length(last(/Alcatel Timetra TiMOS by SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Alcatel Timetra TiMOS by SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Alcatel Timetra TiMOS by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Alcatel Timetra TiMOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Alcatel Timetra TiMOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Alcatel Timetra TiMOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Alcatel Timetra TiMOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Alcatel Timetra TiMOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Alcatel Timetra TiMOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Alcatel Timetra TiMOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Alcatel Timetra TiMOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|#{#SNMPINDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Alcatel Timetra TiMOS by SNMP/sensor.psu.status[tmnxChassisPowerSupply1Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|#{#SNMPINDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Alcatel Timetra TiMOS by SNMP/sensor.psu.status[tmnxChassisPowerSupply2Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Alcatel Timetra TiMOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Alcatel Timetra TiMOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Alcatel Timetra TiMOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Alcatel Timetra TiMOS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Alcatel Timetra TiMOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Alcatel Timetra TiMOS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Alcatel Timetra TiMOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Alcatel Timetra TiMOS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Alcatel Timetra TiMOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/alcatel_timetra_snmp/template_net_alcatel_timetra_snmp.yaml b/templates/net/alcatel_timetra_snmp/template_net_alcatel_timetra_snmp.yaml
index 31f60d522b6..a5b00dc320d 100644
--- a/templates/net/alcatel_timetra_snmp/template_net_alcatel_timetra_snmp.yaml
+++ b/templates/net/alcatel_timetra_snmp/template_net_alcatel_timetra_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:03:47Z'
+ date: '2022-10-27T14:44:18Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 53044571fb864d87af32473e08c76d0b
- template: 'Alcatel Timetra TiMOS SNMP'
- name: 'Alcatel Timetra TiMOS SNMP'
+ template: 'Alcatel Timetra TiMOS by SNMP'
+ name: 'Alcatel Timetra TiMOS by SNMP'
description: |
Template Net Alcatel Timetra TiMOS
@@ -44,7 +44,7 @@ zabbix_export:
triggers:
-
uuid: 72f8bcb4dfde4d338c31c83b72a36129
- expression: 'max(/Alcatel Timetra TiMOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Alcatel Timetra TiMOS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -70,14 +70,14 @@ zabbix_export:
triggers:
-
uuid: 0c0a32b98df84c07acbe51caabc8c012
- expression: 'min(/Alcatel Timetra TiMOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Alcatel Timetra TiMOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Alcatel Timetra TiMOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Alcatel Timetra TiMOS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Alcatel Timetra TiMOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Alcatel Timetra TiMOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -103,17 +103,17 @@ zabbix_export:
triggers:
-
uuid: 06fd317938784236b3e17b2b4080925d
- expression: 'avg(/Alcatel Timetra TiMOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Alcatel Timetra TiMOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Alcatel Timetra TiMOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Alcatel Timetra TiMOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Alcatel Timetra TiMOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Alcatel Timetra TiMOS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Alcatel Timetra TiMOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Alcatel Timetra TiMOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -177,7 +177,7 @@ zabbix_export:
triggers:
-
uuid: 4167b064eb19478da13531f629082ef1
- expression: 'min(/Alcatel Timetra TiMOS SNMP/system.cpu.util[sgiCpuUsage.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Alcatel Timetra TiMOS by SNMP/system.cpu.util[sgiCpuUsage.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -314,7 +314,7 @@ zabbix_export:
triggers:
-
uuid: 5f11cacfd4a94cf696897b3f3fa80601
- expression: 'last(/Alcatel Timetra TiMOS SNMP/system.name,#1)<>last(/Alcatel Timetra TiMOS SNMP/system.name,#2) and length(last(/Alcatel Timetra TiMOS SNMP/system.name))>0'
+ expression: 'last(/Alcatel Timetra TiMOS by SNMP/system.name,#1)<>last(/Alcatel Timetra TiMOS by SNMP/system.name,#2) and length(last(/Alcatel Timetra TiMOS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -400,7 +400,7 @@ zabbix_export:
triggers:
-
uuid: dd5dc3541a3d402c98a60b25d9e48dd6
- expression: 'last(/Alcatel Timetra TiMOS SNMP/system.sw.os[sysDescr.0],#1)<>last(/Alcatel Timetra TiMOS SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Alcatel Timetra TiMOS SNMP/system.sw.os[sysDescr.0]))>0'
+ expression: 'last(/Alcatel Timetra TiMOS by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Alcatel Timetra TiMOS by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Alcatel Timetra TiMOS by SNMP/system.sw.os[sysDescr.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -408,7 +408,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Alcatel Timetra TiMOS SNMP/system.name,#1)<>last(/Alcatel Timetra TiMOS SNMP/system.name,#2) and length(last(/Alcatel Timetra TiMOS SNMP/system.name))>0'
+ expression: 'last(/Alcatel Timetra TiMOS by SNMP/system.name,#1)<>last(/Alcatel Timetra TiMOS by SNMP/system.name,#2) and length(last(/Alcatel Timetra TiMOS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -483,7 +483,7 @@ zabbix_export:
triggers:
-
uuid: a22f13e245b944e991c2c9850a731a3c
- expression: 'min(/Alcatel Timetra TiMOS SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Alcatel Timetra TiMOS by SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -519,7 +519,7 @@ zabbix_export:
triggers:
-
uuid: 60187191b268499784a70ef1dfe058ae
- expression: 'max(/Alcatel Timetra TiMOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Alcatel Timetra TiMOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -527,7 +527,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Alcatel Timetra TiMOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Alcatel Timetra TiMOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -571,7 +571,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ccdcfdbe1a6243949857c764aed9c9ea
- expression: 'last(/Alcatel Timetra TiMOS SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#2) and length(last(/Alcatel Timetra TiMOS SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}]))>0'
+ expression: 'last(/Alcatel Timetra TiMOS by SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS by SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}],#2) and length(last(/Alcatel Timetra TiMOS by SNMP/system.hw.serialnumber[tmnxHwSerialNumber.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -616,7 +616,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 10f9f5cd2f1b4d09abba3ae48b482eb8
- expression: 'count(/Alcatel Timetra TiMOS SNMP/sensor.fan.status[tmnxChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Alcatel Timetra TiMOS by SNMP/sensor.fan.status[tmnxChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '#{#SNMPINDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -932,9 +932,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a4bcc6d80080415698d8fd323ff5d484
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -985,21 +985,21 @@ zabbix_export:
-
uuid: a9467162f7434b8e97cb6645b6a060ae
expression: |
- change(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Alcatel Timetra TiMOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Alcatel Timetra TiMOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1008,8 +1008,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1017,13 +1017,13 @@ zabbix_export:
-
uuid: 27e0b7fcaf664410962dc768e0ef7267
expression: |
- (avg(/Alcatel Timetra TiMOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Alcatel Timetra TiMOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Alcatel Timetra TiMOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Alcatel Timetra TiMOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Alcatel Timetra TiMOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Alcatel Timetra TiMOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Alcatel Timetra TiMOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Alcatel Timetra TiMOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Alcatel Timetra TiMOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1033,8 +1033,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1042,12 +1042,12 @@ zabbix_export:
-
uuid: ee8dccabf5df45b48a503320131b152e
expression: |
- min(/Alcatel Timetra TiMOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Alcatel Timetra TiMOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Alcatel Timetra TiMOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Alcatel Timetra TiMOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Alcatel Timetra TiMOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Alcatel Timetra TiMOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Alcatel Timetra TiMOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Alcatel Timetra TiMOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1057,8 +1057,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Alcatel Timetra TiMOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Alcatel Timetra TiMOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1075,42 +1075,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 078d4ad71e014260aa173288492e7f5d
@@ -1180,7 +1180,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e5d6ba20229044b98ee8cb33e00de8b0
- expression: 'last(/Alcatel Timetra TiMOS SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Alcatel Timetra TiMOS by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: afbc2020a9f74d6abe52469ac663e057
- expression: 'count(/Alcatel Timetra TiMOS SNMP/sensor.psu.status[tmnxChassisPowerSupply1Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Alcatel Timetra TiMOS by SNMP/sensor.psu.status[tmnxChassisPowerSupply1Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '#{#SNMPINDEX}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1277,7 +1277,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fcbc0ef8f55146daaed6be4ccbd324e7
- expression: 'count(/Alcatel Timetra TiMOS SNMP/sensor.psu.status[tmnxChassisPowerSupply2Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Alcatel Timetra TiMOS by SNMP/sensor.psu.status[tmnxChassisPowerSupply2Status.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '#{#SNMPINDEX}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1322,9 +1322,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8f478386378349e7a4e4586c5ba74c78
- expression: 'avg(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1339,9 +1339,9 @@ zabbix_export:
value: performance
-
uuid: 90ba726922f74d1d971b3f07781fc035
- expression: 'avg(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1350,8 +1350,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1361,9 +1361,9 @@ zabbix_export:
value: performance
-
uuid: 6035fc6733614ae1b4ed22c7d73466b0
- expression: 'avg(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Alcatel Timetra TiMOS SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Alcatel Timetra TiMOS by SNMP/sensor.temp.value[tmnxHwTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1493,7 +1493,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2438,7 +2438,7 @@ zabbix_export:
triggers:
-
uuid: 3b6324116e5940b5aaea72adca4dbbf6
- expression: '(last(/Alcatel Timetra TiMOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Alcatel Timetra TiMOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Alcatel Timetra TiMOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Alcatel Timetra TiMOS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Alcatel Timetra TiMOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Alcatel Timetra TiMOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Alcatel Timetra TiMOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Alcatel Timetra TiMOS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2447,7 +2447,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Alcatel Timetra TiMOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Alcatel Timetra TiMOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2463,7 +2463,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'system.cpu.util[sgiCpuUsage.0]'
-
uuid: e404b522555e4f9092930ce870649828
@@ -2474,14 +2474,14 @@ zabbix_export:
drawtype: BOLD_LINE
color: 1A7C11
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'vm.memory.total[snmp]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'vm.memory.available[sgiKbMemoryAvailable.0]'
-
uuid: 111cde007d8342f9b743f08f12380ec3
@@ -2493,5 +2493,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Alcatel Timetra TiMOS SNMP'
+ host: 'Alcatel Timetra TiMOS by SNMP'
key: 'vm.memory.util[vm.memory.util.0]'
diff --git a/templates/net/arista_snmp/README.md b/templates/net/arista_snmp/README.md
index 4a2db153fb5..c0c732bd44b 100644
--- a/templates/net/arista_snmp/README.md
+++ b/templates/net/arista_snmp/README.md
@@ -1,9 +1,9 @@
-# Arista SNMP
+# Arista by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This template was tested on:
@@ -66,13 +66,13 @@ There are no template links in this template.
|----|-----------|----|----|
|Entity discovery |<p>-</p> |SNMP |entity.discovery<p>**Filter**:</p>AND_OR <p>- {#ENT_CLASS} MATCHES_REGEX `3`</p> |
|EtherLike-MIB Discovery |<p>Discovering interfaces from IF-MIB and EtherLike-MIB. Interfaces with up(1) Operational Status are discovered.</p> |SNMP |net.if.duplex.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#IFOPERSTATUS} MATCHES_REGEX `1`</p><p>- {#SNMPVALUE} MATCHES_REGEX `(2|3)`</p> |
-|Fan discovery |<p>ENTITY-SENSORS-MIB::EntitySensorDataType discovery with rpm filter</p> |DEPENDENT |fan.discovery<p>**Filter**:</p>OR <p>- {#SENSOR_TYPE} MATCHES_REGEX `10`</p><p>**Overrides:**</p><p>trigger THRESHOLD_LO_WARN<br> - {#THRESHOLD_LO_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is below the warning threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_LO_CRIT<br> - {#THRESHOLD_LO_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is below the critical threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_HI_WARN<br> - {#THRESHOLD_HI_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is above the warning threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_HI_CRIT<br> - {#THRESHOLD_HI_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is above the critical threshold` - NO_DISCOVER</p> |
+|Fan discovery |<p>ENTITY-SENSORS-MIB::EntitySensorDataType discovery with rpm filter</p> |DEPENDENT |fan.discovery<p>**Filter**:</p>OR <p>- {#SENSOR_TYPE} MATCHES_REGEX `10`</p><p>**Overrides:**</p><p>trigger THRESHOLD_LO_WARN<br> - {#THRESHOLD_LO_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is below the warning threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_LO_CRIT<br> - {#THRESHOLD_LO_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is below the critical threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_HI_WARN<br> - {#THRESHOLD_HI_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is above the warning threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_HI_CRIT<br> - {#THRESHOLD_HI_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Fan speed is above the critical threshold`<br> - NO_DISCOVER</p> |
|Memory discovery |<p>HOST-RESOURCES-MIB::hrStorage discovery with memory filter</p> |SNMP |vm.memory.discovery<p>**Filter**:</p>AND <p>- {#MEMTYPE} MATCHES_REGEX `{$MEMORY.TYPE.MATCHES}`</p><p>- {#MEMTYPE} NOT_MATCHES_REGEX `{$MEMORY.TYPE.NOT_MATCHES}`</p><p>- {#MEMNAME} MATCHES_REGEX `{$MEMORY.NAME.MATCHES}`</p><p>- {#MEMNAME} NOT_MATCHES_REGEX `{$MEMORY.NAME.NOT_MATCHES}`</p> |
|Network interfaces discovery |<p>Discovering interfaces from IF-MIB.</p> |SNMP |net.if.discovery<p>**Filter**:</p>AND <p>- {#IFADMINSTATUS} MATCHES_REGEX `{$NET.IF.IFADMINSTATUS.MATCHES}`</p><p>- {#IFADMINSTATUS} NOT_MATCHES_REGEX `{$NET.IF.IFADMINSTATUS.NOT_MATCHES}`</p><p>- {#IFOPERSTATUS} MATCHES_REGEX `{$NET.IF.IFOPERSTATUS.MATCHES}`</p><p>- {#IFOPERSTATUS} NOT_MATCHES_REGEX `{$NET.IF.IFOPERSTATUS.NOT_MATCHES}`</p><p>- {#IFNAME} MATCHES_REGEX `{$NET.IF.IFNAME.MATCHES}`</p><p>- {#IFNAME} NOT_MATCHES_REGEX `{$NET.IF.IFNAME.NOT_MATCHES}`</p><p>- {#IFDESCR} MATCHES_REGEX `{$NET.IF.IFDESCR.MATCHES}`</p><p>- {#IFDESCR} NOT_MATCHES_REGEX `{$NET.IF.IFDESCR.NOT_MATCHES}`</p><p>- {#IFALIAS} MATCHES_REGEX `{$NET.IF.IFALIAS.MATCHES}`</p><p>- {#IFALIAS} NOT_MATCHES_REGEX `{$NET.IF.IFALIAS.NOT_MATCHES}`</p><p>- {#IFTYPE} MATCHES_REGEX `{$NET.IF.IFTYPE.MATCHES}`</p><p>- {#IFTYPE} NOT_MATCHES_REGEX `{$NET.IF.IFTYPE.NOT_MATCHES}`</p> |
|PSU discovery |<p>-</p> |SNMP |psu.discovery<p>**Filter**:</p>AND_OR <p>- {#ENT_CLASS} MATCHES_REGEX `6`</p> |
|Storage discovery |<p>HOST-RESOURCES-MIB::hrStorage discovery with storage filter.</p> |SNMP |vfs.fs.discovery[snmp]<p>**Filter**:</p>AND <p>- {#FSTYPE} MATCHES_REGEX `{$VFS.FS.FSTYPE.MATCHES}`</p><p>- {#FSTYPE} NOT_MATCHES_REGEX `{$VFS.FS.FSTYPE.NOT_MATCHES}`</p><p>- {#FSNAME} MATCHES_REGEX `{$VFS.FS.FSNAME.MATCHES}`</p><p>- {#FSNAME} NOT_MATCHES_REGEX `{$VFS.FS.FSNAME.NOT_MATCHES}`</p> |
-|Temperature discovery |<p>ENTITY-SENSORS-MIB::EntitySensorDataType discovery with temperature filter</p> |DEPENDENT |temp.discovery<p>**Filter**:</p>AND <p>- {#SENSOR_TYPE} MATCHES_REGEX `8`</p><p>- {#SENSOR_PRECISION} MATCHES_REGEX `1`</p><p>**Overrides:**</p><p>trigger THRESHOLD_LO_WARN<br> - {#THRESHOLD_LO_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is below the warning threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_LO_CRIT<br> - {#THRESHOLD_LO_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is below the critical threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_HI_WARN<br> - {#THRESHOLD_HI_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is above the warning threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_HI_CRIT<br> - {#THRESHOLD_HI_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is above the critical threshold` - NO_DISCOVER</p> |
-|Voltage discovery |<p>ENTITY-SENSORS-MIB::EntitySensorDataType discovery with volts filter</p> |DEPENDENT |voltage.discovery<p>**Filter**:</p>OR <p>- {#SENSOR_TYPE} MATCHES_REGEX `3|4`</p><p>**Overrides:**</p><p>trigger THRESHOLD_LO_WARN<br> - {#THRESHOLD_LO_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is below the warning threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_LO_CRIT<br> - {#THRESHOLD_LO_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is below the critical threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_HI_WARN<br> - {#THRESHOLD_HI_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is above the warning threshold` - NO_DISCOVER</p><p>trigger THRESHOLD_HI_CRIT<br> - {#THRESHOLD_HI_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is above the critical threshold` - NO_DISCOVER</p> |
+|Temperature discovery |<p>ENTITY-SENSORS-MIB::EntitySensorDataType discovery with temperature filter</p> |DEPENDENT |temp.discovery<p>**Filter**:</p>AND <p>- {#SENSOR_TYPE} MATCHES_REGEX `8`</p><p>- {#SENSOR_PRECISION} MATCHES_REGEX `1`</p><p>**Overrides:**</p><p>trigger THRESHOLD_LO_WARN<br> - {#THRESHOLD_LO_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is below the warning threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_LO_CRIT<br> - {#THRESHOLD_LO_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is below the critical threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_HI_WARN<br> - {#THRESHOLD_HI_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is above the warning threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_HI_CRIT<br> - {#THRESHOLD_HI_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Temperature is above the critical threshold`<br> - NO_DISCOVER</p> |
+|Voltage discovery |<p>ENTITY-SENSORS-MIB::EntitySensorDataType discovery with volts filter</p> |DEPENDENT |voltage.discovery<p>**Filter**:</p>OR <p>- {#SENSOR_TYPE} MATCHES_REGEX `3|4`</p><p>**Overrides:**</p><p>trigger THRESHOLD_LO_WARN<br> - {#THRESHOLD_LO_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is below the warning threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_LO_CRIT<br> - {#THRESHOLD_LO_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is below the critical threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_HI_WARN<br> - {#THRESHOLD_HI_WARN} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is above the warning threshold`<br> - NO_DISCOVER</p><p>trigger THRESHOLD_HI_CRIT<br> - {#THRESHOLD_HI_CRIT} MATCHES_REGEX `^$`<br> - TRIGGER_PROTOTYPE REGEXP `Voltage is above the critical threshold`<br> - NO_DISCOVER</p> |
## Items collected
@@ -121,38 +121,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Arista SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SENSOR_INFO}: Fan speed is below the warning threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`max(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p><p>- {#SENSOR_INFO}: Fan speed is below the critical threshold</p> |
-|{#SENSOR_INFO}: Fan speed is below the critical threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`max(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}` |HIGH |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
-|{#SENSOR_INFO}: Fan speed is above the warning threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`min(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p><p>- {#SENSOR_INFO}: Fan speed is above the critical threshold</p> |
-|{#SENSOR_INFO}: Fan speed is above the critical threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`min(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}` |HIGH |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
-|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Arista SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Arista SNMP/system.name,#1)<>last(/Arista SNMP/system.name,#2) and length(last(/Arista SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Arista SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Arista SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Arista SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Arista SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Arista SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Arista SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Arista SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Arista SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Arista SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Arista SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Arista SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Arista SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Arista SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#ENT_NAME}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Arista SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Arista SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Arista SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Arista SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Arista SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Arista SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Arista SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Arista SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Arista SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Arista SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Arista SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
-|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Arista SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
-|{#SENSOR_INFO}: Temperature is below the warning threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`max(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is below the critical threshold</p> |
-|{#SENSOR_INFO}: Temperature is below the critical threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`max(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}` |HIGH | |
-|{#SENSOR_INFO}: Temperature is above the warning threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`min(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above the critical threshold</p> |
-|{#SENSOR_INFO}: Temperature is above the critical threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`min(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}` |HIGH | |
-|{#SENSOR_INFO}: Voltage is below the warning threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`max(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Voltage is below the critical threshold</p> |
-|{#SENSOR_INFO}: Voltage is below the critical threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`max(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}` |HIGH | |
-|{#SENSOR_INFO}: Voltage is above the warning threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`min(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Voltage is above the critical threshold</p> |
-|{#SENSOR_INFO}: Voltage is above the critical threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`min(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}` |HIGH | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Arista by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SENSOR_INFO}: Fan speed is below the warning threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`max(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p><p>- {#SENSOR_INFO}: Fan speed is below the critical threshold</p> |
+|{#SENSOR_INFO}: Fan speed is below the critical threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`max(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}` |HIGH |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
+|{#SENSOR_INFO}: Fan speed is above the warning threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`min(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p><p>- {#SENSOR_INFO}: Fan speed is above the critical threshold</p> |
+|{#SENSOR_INFO}: Fan speed is above the critical threshold |<p>This trigger uses fan sensor values defined in the device.</p> |`min(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}` |HIGH |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
+|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Arista by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Arista by SNMP/system.name,#1)<>last(/Arista by SNMP/system.name,#2) and length(last(/Arista by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Arista by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Arista by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Arista by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Arista by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Arista by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Arista by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Arista by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Arista by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Arista by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Arista by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Arista by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Arista by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Arista by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#ENT_NAME}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Arista by SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Arista by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Arista by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Arista by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Arista by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Arista by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Arista by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Arista by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Arista by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Arista by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Arista by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
+|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Arista by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
+|{#SENSOR_INFO}: Temperature is below the warning threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`max(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is below the critical threshold</p> |
+|{#SENSOR_INFO}: Temperature is below the critical threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`max(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}` |HIGH | |
+|{#SENSOR_INFO}: Temperature is above the warning threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`min(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above the critical threshold</p> |
+|{#SENSOR_INFO}: Temperature is above the critical threshold |<p>This trigger uses temperature sensor values defined in the device.</p> |`min(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}` |HIGH | |
+|{#SENSOR_INFO}: Voltage is below the warning threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`max(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Voltage is below the critical threshold</p> |
+|{#SENSOR_INFO}: Voltage is below the critical threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`max(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}` |HIGH | |
+|{#SENSOR_INFO}: Voltage is above the warning threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`min(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Voltage is above the critical threshold</p> |
+|{#SENSOR_INFO}: Voltage is above the critical threshold |<p>This trigger uses voltage sensor values defined in the device.</p> |`min(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/arista_snmp/template_net_arista_snmp.yaml b/templates/net/arista_snmp/template_net_arista_snmp.yaml
index 03303c36b89..b18dadc984d 100644
--- a/templates/net/arista_snmp/template_net_arista_snmp.yaml
+++ b/templates/net/arista_snmp/template_net_arista_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:03:53Z'
+ date: '2022-10-27T14:41:42Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 26674f62500e4e79b9f470bbf962130d
- template: 'Arista SNMP'
- name: 'Arista SNMP'
+ template: 'Arista by SNMP'
+ name: 'Arista by SNMP'
description: |
Template Net Arista
@@ -45,7 +45,7 @@ zabbix_export:
triggers:
-
uuid: 736dc5694fc741e6bcb96e2ba27a0898
- expression: 'max(/Arista SNMP/icmpping,#3)=0'
+ expression: 'max(/Arista by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -71,14 +71,14 @@ zabbix_export:
triggers:
-
uuid: dfa6f280b6304bfdb0063be94f7a4c5e
- expression: 'min(/Arista SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Arista SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Arista by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Arista by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Arista SNMP/icmpping,#3)=0'
+ expression: 'max(/Arista by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -104,17 +104,17 @@ zabbix_export:
triggers:
-
uuid: 18aeec70f72d43ceb4994501fb36d434
- expression: 'avg(/Arista SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Arista by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Arista SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Arista SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Arista by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Arista by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Arista SNMP/icmpping,#3)=0'
+ expression: 'max(/Arista by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -217,7 +217,7 @@ zabbix_export:
triggers:
-
uuid: 6737f0672c244e048509358d220874a6
- expression: 'min(/Arista SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Arista by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -328,7 +328,7 @@ zabbix_export:
triggers:
-
uuid: 362d455c9d9944cea7c37d58bcabc0a0
- expression: 'last(/Arista SNMP/system.name,#1)<>last(/Arista SNMP/system.name,#2) and length(last(/Arista SNMP/system.name))>0'
+ expression: 'last(/Arista by SNMP/system.name,#1)<>last(/Arista by SNMP/system.name,#2) and length(last(/Arista by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -409,7 +409,7 @@ zabbix_export:
triggers:
-
uuid: 53501c72392a4bbc8fa0f5ed086d2591
- expression: 'max(/Arista SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Arista by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -417,7 +417,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Arista SNMP/icmpping,#3)=0'
+ expression: 'max(/Arista by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -480,7 +480,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 218209a40ec54a489738345c4485be83
- expression: 'last(/Arista SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Arista SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Arista SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/Arista by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Arista by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Arista by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -524,7 +524,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 660fd32236464fd69409099c67478ff5
- expression: 'min(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
+ expression: 'min(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
name: '{#SENSOR_INFO}: Fan speed is above the critical threshold'
event_name: '{#SENSOR_INFO}: Fan speed is above the critical threshold of {#THRESHOLD_HI_CRIT}rpm for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -533,14 +533,14 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Arista SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Arista by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
tags:
-
tag: scope
value: notice
-
uuid: b1131f42627047ca9629693b91d9185e
- expression: 'min(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}'
+ expression: 'min(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}'
name: '{#SENSOR_INFO}: Fan speed is above the warning threshold'
event_name: '{#SENSOR_INFO}: Fan speed is above the warning threshold of {#THRESHOLD_HI_WARN}rpm for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -549,17 +549,17 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Arista SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Arista by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
-
name: '{#SENSOR_INFO}: Fan speed is above the critical threshold'
- expression: 'min(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
+ expression: 'min(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: 0cd8e252a77b4c90a155e57aab963e5e
- expression: 'max(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
+ expression: 'max(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
name: '{#SENSOR_INFO}: Fan speed is below the critical threshold'
event_name: '{#SENSOR_INFO}: Fan speed is below the critical threshold of {#THRESHOLD_LO_CRIT}rpm for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -568,14 +568,14 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Arista SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Arista by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
tags:
-
tag: scope
value: notice
-
uuid: d37c360fea9143bab6ff07699ed4acb1
- expression: 'max(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}'
+ expression: 'max(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}'
name: '{#SENSOR_INFO}: Fan speed is below the warning threshold'
event_name: '{#SENSOR_INFO}: Fan speed is below the warning threshold of {#THRESHOLD_LO_WARN}rpm for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -584,10 +584,10 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Arista SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Arista by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
-
name: '{#SENSOR_INFO}: Fan speed is below the critical threshold'
- expression: 'max(/Arista SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
+ expression: 'max(/Arista by SNMP/sensor.fan.speed[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
tags:
-
tag: scope
@@ -613,7 +613,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 11dddf9f12a0423bb886808759cd429d
- expression: 'count(/Arista SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Arista by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '{#SENSOR_INFO}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -642,7 +642,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Fan speed is above the critical threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_HI_WARN'
@@ -658,7 +657,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Fan speed is above the warning threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_LO_CRIT'
@@ -674,7 +672,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Fan speed is below the critical threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_LO_WARN'
@@ -690,7 +687,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Fan speed is below the warning threshold'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 9b75135925654cedbd5a270b67e68d51
@@ -996,9 +992,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 11c5b8073b3540e4b0698a8db9e3c33e
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1049,21 +1045,21 @@ zabbix_export:
-
uuid: 9715da7cb2404bf2a3cb3e80d4bb3bde
expression: |
- change(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Arista SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Arista by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1072,8 +1068,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1081,13 +1077,13 @@ zabbix_export:
-
uuid: 32c978fecfcb42738cd179c19bcd2360
expression: |
- (avg(/Arista SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Arista SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Arista by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Arista by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Arista SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Arista SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Arista by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Arista by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Arista by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1097,8 +1093,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1106,12 +1102,12 @@ zabbix_export:
-
uuid: 47d5a599bc574ccea4baeebc3aad34f5
expression: |
- min(/Arista SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Arista SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Arista by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Arista by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Arista SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Arista SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Arista by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Arista by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1121,8 +1117,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Arista SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Arista by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1139,42 +1135,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 4906974da5ab45cd9f7996d6d295165a
@@ -1244,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c1bddd15c68243aeb69dc47f57eb6631
- expression: 'last(/Arista SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Arista by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1304,7 +1300,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4faa99278cd94abaace8b09529a6efaa
- expression: 'count(/Arista SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Arista by SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '{#ENT_NAME}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1379,7 +1375,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 791d55e21828472e93c97d8fa4f96d26
- expression: 'min(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
+ expression: 'min(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
name: '{#SENSOR_INFO}: Temperature is above the critical threshold'
event_name: '{#SENSOR_INFO}: Temperature is above the critical threshold of {#THRESHOLD_HI_CRIT}°C for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1391,7 +1387,7 @@ zabbix_export:
value: notice
-
uuid: c65457a8a6d4427995626ff9ff12e339
- expression: 'min(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}'
+ expression: 'min(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}'
name: '{#SENSOR_INFO}: Temperature is above the warning threshold'
event_name: '{#SENSOR_INFO}: Temperature is above the warning threshold of {#THRESHOLD_HI_WARN}°C for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1400,14 +1396,14 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Temperature is above the critical threshold'
- expression: 'min(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
+ expression: 'min(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: b521cd99d9fb4f6f9d1241ac33c01a86
- expression: 'max(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
+ expression: 'max(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
name: '{#SENSOR_INFO}: Temperature is below the critical threshold'
event_name: '{#SENSOR_INFO}: Temperature is below the critical threshold of {#THRESHOLD_LO_CRIT}°C for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1419,7 +1415,7 @@ zabbix_export:
value: notice
-
uuid: 750888bd98fa475dba03591945416b89
- expression: 'max(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}'
+ expression: 'max(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}'
name: '{#SENSOR_INFO}: Temperature is below the warning threshold'
event_name: '{#SENSOR_INFO}: Temperature is below the warning threshold of {#THRESHOLD_LO_WARN}°C for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1428,7 +1424,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Temperature is below the critical threshold'
- expression: 'max(/Arista SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
+ expression: 'max(/Arista by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
tags:
-
tag: scope
@@ -1450,7 +1446,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Temperature is above the critical threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_HI_WARN'
@@ -1466,7 +1461,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Temperature is above the warning threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_LO_CRIT'
@@ -1482,7 +1476,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Temperature is below the critical threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_LO_WARN'
@@ -1498,7 +1491,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Temperature is below the warning threshold'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 77e7bb250b714e8ea3fff7ec1f3ac2c3
@@ -1599,8 +1591,8 @@ zabbix_export:
-
uuid: f4bfac8d247144b3bebac7245248553e
expression: |
- last(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Arista SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Arista by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is critically low'
event_name: '{#FSNAME}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1621,8 +1613,8 @@ zabbix_export:
-
uuid: 9912ab9619ce46b88afe358ab50a2c4f
expression: |
- last(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
- ((last(/Arista SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
+ ((last(/Arista by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is low'
event_name: '{#FSNAME}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1637,8 +1629,8 @@ zabbix_export:
-
name: '{#FSNAME}: Disk space is critically low'
expression: |
- last(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Arista SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Arista SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Arista by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Arista by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Arista by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1660,14 +1652,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]'
-
uuid: 58bc77f12c17410bbba1cefb5e5fac3d
@@ -1758,7 +1750,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6b9010e0ad4e4549ac91a91d4bb3983a
- expression: 'min(/Arista SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Arista by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#MEMNAME}: High memory utilization'
event_name: '{#MEMNAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -1781,7 +1773,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
-
uuid: 3002dbe2caa042dcb2beb058b25500f8
@@ -1818,7 +1810,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1c78dea0380a4bf68b05c1323a208c3a
- expression: 'min(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
+ expression: 'min(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
name: '{#SENSOR_INFO}: Voltage is above the critical threshold'
event_name: '{#SENSOR_INFO}: Voltage is above the critical threshold of {#THRESHOLD_HI_CRIT}V for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1830,7 +1822,7 @@ zabbix_export:
value: notice
-
uuid: 08b4f59d66ea45eaa95426a27586c4bd
- expression: 'min(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}'
+ expression: 'min(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_WARN}'
name: '{#SENSOR_INFO}: Voltage is above the warning threshold'
event_name: '{#SENSOR_INFO}: Voltage is above the warning threshold of {#THRESHOLD_HI_WARN}V for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1839,14 +1831,14 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Voltage is above the critical threshold'
- expression: 'min(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
+ expression: 'min(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) > {#THRESHOLD_HI_CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: d2df35a764234716a286a8019e6c9411
- expression: 'max(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
+ expression: 'max(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
name: '{#SENSOR_INFO}: Voltage is below the critical threshold'
event_name: '{#SENSOR_INFO}: Voltage is below the critical threshold of {#THRESHOLD_LO_CRIT}V for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1858,7 +1850,7 @@ zabbix_export:
value: notice
-
uuid: 481908babd3f44b3a73f3e0a628fe6d4
- expression: 'max(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}'
+ expression: 'max(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_WARN}'
name: '{#SENSOR_INFO}: Voltage is below the warning threshold'
event_name: '{#SENSOR_INFO}: Voltage is below the warning threshold of {#THRESHOLD_LO_WARN}V for 5m'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1867,7 +1859,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Voltage is below the critical threshold'
- expression: 'max(/Arista SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
+ expression: 'max(/Arista by SNMP/sensor.voltage.value[entPhySensorValue.{#SNMPINDEX}],5m) < {#THRESHOLD_LO_CRIT}'
tags:
-
tag: scope
@@ -1889,7 +1881,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Voltage is above the critical threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_HI_WARN'
@@ -1905,7 +1896,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Voltage is above the warning threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_LO_CRIT'
@@ -1921,7 +1911,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Voltage is below the critical threshold'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'trigger THRESHOLD_LO_WARN'
@@ -1937,7 +1926,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: 'Voltage is below the warning threshold'
- status: ENABLED
discover: NO_DISCOVER
tags:
-
@@ -2092,7 +2080,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
-
uuid: 1e995dbde06f4d869f2cc4314117c397
@@ -2113,7 +2101,7 @@ zabbix_export:
type: GRAPH
name: graphid
value:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
name: 'CPU utilization'
-
type: GRAPH_PROTOTYPE
@@ -2137,7 +2125,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
name: '{#MEMNAME}: Memory utilization'
-
type: GRAPH_PROTOTYPE
@@ -2161,7 +2149,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
name: '{#FSNAME}: Disk space usage'
valuemaps:
-
@@ -3116,7 +3104,7 @@ zabbix_export:
triggers:
-
uuid: e3907a8b6aba4512a24a677ed31e4362
- expression: '(last(/Arista SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Arista SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Arista SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Arista SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Arista by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Arista by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Arista by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Arista by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -3125,7 +3113,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Arista SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Arista by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -3141,5 +3129,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Arista SNMP'
+ host: 'Arista by SNMP'
key: system.cpu.util
diff --git a/templates/net/brocade_fc_sw_snmp/README.md b/templates/net/brocade_fc_sw_snmp/README.md
index 9d6cdb73724..7c423e6b144 100644
--- a/templates/net/brocade_fc_sw_snmp/README.md
+++ b/templates/net/brocade_fc_sw_snmp/README.md
@@ -1,9 +1,9 @@
-# Brocade FC SNMP
+# Brocade FC by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://community.brocade.com/dtscp75322/attachments/dtscp75322/fibre/25235/1/FOS_MIB_Reference_v740.pdf
This template was tested on:
@@ -109,33 +109,33 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade FC SNMP/system.cpu.util[swCpuUsage.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Brocade FC SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Brocade FC SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Brocade FC SNMP/system.name,#1)<>last(/Brocade FC SNMP/system.name,#2) and length(last(/Brocade FC SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Brocade FC SNMP/system.hw.serialnumber,#1)<>last(/Brocade FC SNMP/system.hw.serialnumber,#2) and length(last(/Brocade FC SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Brocade FC SNMP/system.hw.firmware,#1)<>last(/Brocade FC SNMP/system.hw.firmware,#2) and length(last(/Brocade FC SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade FC SNMP/vm.memory.util[swMemUsage.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Brocade FC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Brocade FC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Brocade FC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Brocade FC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Brocade FC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Brocade FC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Brocade FC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Brocade FC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Brocade FC SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Brocade FC SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
-|System status is in critical state |<p>Please check the device for errors</p> |`count(/Brocade FC SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH | |
-|System status is in warning state |<p>Please check the device for warnings</p> |`count(/Brocade FC SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"offline\"}")=1 or count(/Brocade FC SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"testing\"}")=1` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Brocade FC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade FC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade FC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade FC SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Brocade FC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Brocade FC SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Brocade FC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade FC SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Brocade FC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"} or last(/Brocade FC SNMP/sensor.temp.status[swSensorStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
-|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
-|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade FC by SNMP/system.cpu.util[swCpuUsage.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Brocade FC by SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Brocade FC by SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Brocade FC by SNMP/system.name,#1)<>last(/Brocade FC by SNMP/system.name,#2) and length(last(/Brocade FC by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Brocade FC by SNMP/system.hw.serialnumber,#1)<>last(/Brocade FC by SNMP/system.hw.serialnumber,#2) and length(last(/Brocade FC by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Brocade FC by SNMP/system.hw.firmware,#1)<>last(/Brocade FC by SNMP/system.hw.firmware,#2) and length(last(/Brocade FC by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade FC by SNMP/vm.memory.util[swMemUsage.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Brocade FC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Brocade FC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Brocade FC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Brocade FC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Brocade FC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Brocade FC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Brocade FC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Brocade FC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Brocade FC by SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Brocade FC by SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
+|System status is in critical state |<p>Please check the device for errors</p> |`count(/Brocade FC by SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH | |
+|System status is in warning state |<p>Please check the device for warnings</p> |`count(/Brocade FC by SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"offline\"}")=1 or count(/Brocade FC by SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"testing\"}")=1` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Brocade FC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade FC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade FC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade FC by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Brocade FC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Brocade FC by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Brocade FC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade FC by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Brocade FC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"} or last(/Brocade FC by SNMP/sensor.temp.status[swSensorStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
+|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
+|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/net/brocade_fc_sw_snmp/template_net_brocade_fc_sw_snmp.yaml b/templates/net/brocade_fc_sw_snmp/template_net_brocade_fc_sw_snmp.yaml
index c987be4c97a..70236f55fa8 100644
--- a/templates/net/brocade_fc_sw_snmp/template_net_brocade_fc_sw_snmp.yaml
+++ b/templates/net/brocade_fc_sw_snmp/template_net_brocade_fc_sw_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:01:17Z'
+ date: '2022-10-27T14:44:41Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: de96d02bd5f242bfa31308ae2131d03f
- template: 'Brocade FC SNMP'
- name: 'Brocade FC SNMP'
+ template: 'Brocade FC by SNMP'
+ name: 'Brocade FC by SNMP'
description: |
Template Net Brocade FC
@@ -48,7 +48,7 @@ zabbix_export:
triggers:
-
uuid: 0c73f37e7ffc4acf83a7edeb84398aba
- expression: 'max(/Brocade FC SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade FC by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -74,14 +74,14 @@ zabbix_export:
triggers:
-
uuid: eea2256c85764c12b1da83dd8d1a9fe3
- expression: 'min(/Brocade FC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade FC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Brocade FC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade FC by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade FC SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade FC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -107,17 +107,17 @@ zabbix_export:
triggers:
-
uuid: 17df26093a5f42fdb19715371c85f733
- expression: 'avg(/Brocade FC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Brocade FC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Brocade FC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade FC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Brocade FC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade FC by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade FC SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade FC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -181,7 +181,7 @@ zabbix_export:
triggers:
-
uuid: 68a50684095941cb90f22fbc8d632e7a
- expression: 'min(/Brocade FC SNMP/system.cpu.util[swCpuUsage.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Brocade FC by SNMP/system.cpu.util[swCpuUsage.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -238,7 +238,7 @@ zabbix_export:
triggers:
-
uuid: 9c5ae10dbafb45658f25f0279a8a1934
- expression: 'last(/Brocade FC SNMP/system.hw.firmware,#1)<>last(/Brocade FC SNMP/system.hw.firmware,#2) and length(last(/Brocade FC SNMP/system.hw.firmware))>0'
+ expression: 'last(/Brocade FC by SNMP/system.hw.firmware,#1)<>last(/Brocade FC by SNMP/system.hw.firmware,#2) and length(last(/Brocade FC by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -272,7 +272,7 @@ zabbix_export:
triggers:
-
uuid: 9939f98da99c435a9b5505e55e8abb5f
- expression: 'last(/Brocade FC SNMP/system.hw.serialnumber,#1)<>last(/Brocade FC SNMP/system.hw.serialnumber,#2) and length(last(/Brocade FC SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Brocade FC by SNMP/system.hw.serialnumber,#1)<>last(/Brocade FC by SNMP/system.hw.serialnumber,#2) and length(last(/Brocade FC by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -359,7 +359,7 @@ zabbix_export:
triggers:
-
uuid: 0e624c73fdca490e809ffe9235cda610
- expression: 'last(/Brocade FC SNMP/system.name,#1)<>last(/Brocade FC SNMP/system.name,#2) and length(last(/Brocade FC SNMP/system.name))>0'
+ expression: 'last(/Brocade FC by SNMP/system.name,#1)<>last(/Brocade FC by SNMP/system.name,#2) and length(last(/Brocade FC by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -441,7 +441,7 @@ zabbix_export:
triggers:
-
uuid: b91af8b94e2047538376be9911beadee
- expression: 'count(/Brocade FC SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -455,7 +455,7 @@ zabbix_export:
value: performance
-
uuid: b17d4a2bae804c968984b763fa4562fc
- expression: 'count(/Brocade FC SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"offline\"}")=1 or count(/Brocade FC SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"testing\"}")=1'
+ expression: 'count(/Brocade FC by SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"offline\"}")=1 or count(/Brocade FC by SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_WARN_STATUS:\"testing\"}")=1'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -463,7 +463,7 @@ zabbix_export:
dependencies:
-
name: 'System status is in critical state'
- expression: 'count(/Brocade FC SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/system.status[swOperStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -490,7 +490,7 @@ zabbix_export:
triggers:
-
uuid: 1991ae08b008488380db02160b15160e
- expression: 'min(/Brocade FC SNMP/vm.memory.util[swMemUsage.0],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Brocade FC by SNMP/vm.memory.util[swMemUsage.0],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -526,7 +526,7 @@ zabbix_export:
triggers:
-
uuid: 1c67a764531b48f1a931a9a928a8708d
- expression: 'max(/Brocade FC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Brocade FC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -534,7 +534,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade FC SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade FC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -589,7 +589,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 75003433a8304644a20d11b82dcbae14
- expression: 'count(/Brocade FC SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '{#SENSOR_INFO}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -603,7 +603,7 @@ zabbix_export:
value: performance
-
uuid: 83e8182fd7034edca8317fa91776b6d2
- expression: 'count(/Brocade FC SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
name: '{#SENSOR_INFO}: Fan is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -611,7 +611,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Brocade FC SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/sensor.fan.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -920,9 +920,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e5391912a6b84c1bb41832e88df4fb96
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -973,21 +973,21 @@ zabbix_export:
-
uuid: 5a98171af6b342ab97e0c6c9de0bd589
expression: |
- change(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Brocade FC SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Brocade FC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -996,8 +996,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1005,13 +1005,13 @@ zabbix_export:
-
uuid: a16b52f43a224a11861813be5a11697c
expression: |
- (avg(/Brocade FC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Brocade FC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Brocade FC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Brocade FC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Brocade FC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Brocade FC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Brocade FC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Brocade FC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade FC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1021,8 +1021,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1030,12 +1030,12 @@ zabbix_export:
-
uuid: 9f42c5a5ed1341c1a26263642e4dabe4
expression: |
- min(/Brocade FC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Brocade FC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Brocade FC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Brocade FC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Brocade FC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Brocade FC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Brocade FC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Brocade FC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1045,8 +1045,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade FC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade FC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1063,42 +1063,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 32c9720e348e4d4ebb9e70c2b247de29
@@ -1133,7 +1133,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 649e7344411242738d9824f861b3c49a
- expression: 'count(/Brocade FC SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '{#SENSOR_INFO}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1147,7 +1147,7 @@ zabbix_export:
value: performance
-
uuid: bfe2f4085f6840da9e8d30f37bb29fdb
- expression: 'count(/Brocade FC SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
name: '{#SENSOR_INFO}: Power supply is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1155,7 +1155,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Power supply is in critical state'
- expression: 'count(/Brocade FC SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade FC by SNMP/sensor.psu.status[swSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -1211,9 +1211,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5ee4c1931e244d638b58f945f8a7565c
- expression: 'avg(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
event_name: '{#SENSOR_INFO}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1228,9 +1228,9 @@ zabbix_export:
value: performance
-
uuid: fc68b3a0ea6643f988c26e3e735d7491
- expression: 'avg(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
+ recovery_expression: 'min(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
name: '{#SENSOR_INFO}: Temperature is too low'
event_name: '{#SENSOR_INFO}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1246,11 +1246,11 @@ zabbix_export:
-
uuid: 726afdedb08848bd86ab4161cef29f42
expression: |
- avg(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}
+ avg(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}
or
- last(/Brocade FC SNMP/sensor.temp.status[swSensorStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Brocade FC by SNMP/sensor.temp.status[swSensorStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above warning threshold'
event_name: '{#SENSOR_INFO}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1259,8 +1259,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
- expression: 'avg(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
- recovery_expression: 'max(/Brocade FC SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ expression: 'avg(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
+ recovery_expression: 'max(/Brocade FC by SNMP/sensor.temp.value[swSensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
tags:
-
tag: scope
@@ -1404,7 +1404,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2355,7 +2355,7 @@ zabbix_export:
triggers:
-
uuid: 42bb10d788484b92ac7290e171ee28a2
- expression: '(last(/Brocade FC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade FC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade FC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade FC SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Brocade FC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade FC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade FC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade FC by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2364,7 +2364,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Brocade FC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Brocade FC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2380,7 +2380,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'system.cpu.util[swCpuUsage.0]'
-
uuid: d1e06bb17c2f458699664bfa61c12496
@@ -2392,5 +2392,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade FC SNMP'
+ host: 'Brocade FC by SNMP'
key: 'vm.memory.util[swMemUsage.0]'
diff --git a/templates/net/brocade_foundry_sw_snmp/README.md b/templates/net/brocade_foundry_sw_snmp/README.md
index 619c2f6b889..c927f7636e1 100644
--- a/templates/net/brocade_foundry_sw_snmp/README.md
+++ b/templates/net/brocade_foundry_sw_snmp/README.md
@@ -1,9 +1,9 @@
-# Brocade_Foundry Nonstackable SNMP
+# Brocade_Foundry Nonstackable by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
For devices(old Foundry devices, MLXe and so on) that doesn't support Stackable SNMP Tables: snChasFan2Table, snChasPwrSupply2Table,snAgentTemp2Table -
FOUNDRY-SN-AGENT-MIB::snChasFanTable, snChasPwrSupplyTable,snAgentTempTable are used instead.
For example:
@@ -109,40 +109,40 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade_Foundry Nonstackable SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|Fan {#FAN_INDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Nonstackable SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|Fan {#FAN_INDEX}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Nonstackable SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Fan {#FAN_INDEX}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Brocade_Foundry Nonstackable SNMP/system.name,#1)<>last(/Brocade_Foundry Nonstackable SNMP/system.name,#2) and length(last(/Brocade_Foundry Nonstackable SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Brocade_Foundry Nonstackable SNMP/system.hw.serialnumber,#1)<>last(/Brocade_Foundry Nonstackable SNMP/system.hw.serialnumber,#2) and length(last(/Brocade_Foundry Nonstackable SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Brocade_Foundry Nonstackable SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Nonstackable SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Nonstackable SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade_Foundry Nonstackable SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Brocade_Foundry Nonstackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Brocade_Foundry Nonstackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Brocade_Foundry Nonstackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Brocade_Foundry Nonstackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Brocade_Foundry Nonstackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Brocade_Foundry Nonstackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Brocade_Foundry Nonstackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|PSU {#PSU_INDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Nonstackable SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|PSU {#PSU_INDEX}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Nonstackable SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- PSU {#PSU_INDEX}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Brocade_Foundry Nonstackable SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Nonstackable SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Nonstackable SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Nonstackable SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Brocade_Foundry Nonstackable SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Brocade_Foundry Nonstackable SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Brocade_Foundry Nonstackable SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Nonstackable SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Brocade_Foundry Nonstackable SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_DESCR}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_DESCR}: Temperature is above critical threshold</p> |
-|{#SENSOR_DESCR}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3` |HIGH | |
-|{#SENSOR_DESCR}: Temperature is too low |<p>-</p> |`avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`min(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3` |AVERAGE | |
-|Chassis #{#SNMPINDEX}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Chassis"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Chassis"}-3` |WARNING |<p>**Depends on**:</p><p>- Chassis #{#SNMPINDEX}: Temperature is above critical threshold</p> |
-|Chassis #{#SNMPINDEX}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Chassis"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Chassis"}-3` |HIGH | |
-|Chassis #{#SNMPINDEX}: Temperature is too low |<p>-</p> |`avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Chassis"}`<p>Recovery expression:</p>`min(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Chassis"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade_Foundry Nonstackable by SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|Fan {#FAN_INDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Nonstackable by SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|Fan {#FAN_INDEX}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Nonstackable by SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Fan {#FAN_INDEX}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Brocade_Foundry Nonstackable by SNMP/system.name,#1)<>last(/Brocade_Foundry Nonstackable by SNMP/system.name,#2) and length(last(/Brocade_Foundry Nonstackable by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Brocade_Foundry Nonstackable by SNMP/system.hw.serialnumber,#1)<>last(/Brocade_Foundry Nonstackable by SNMP/system.hw.serialnumber,#2) and length(last(/Brocade_Foundry Nonstackable by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Brocade_Foundry Nonstackable by SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Nonstackable by SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Nonstackable by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade_Foundry Nonstackable by SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Brocade_Foundry Nonstackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Brocade_Foundry Nonstackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Brocade_Foundry Nonstackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Brocade_Foundry Nonstackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Brocade_Foundry Nonstackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Brocade_Foundry Nonstackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Brocade_Foundry Nonstackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|PSU {#PSU_INDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Nonstackable by SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|PSU {#PSU_INDEX}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Nonstackable by SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- PSU {#PSU_INDEX}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Brocade_Foundry Nonstackable by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Nonstackable by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Nonstackable by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Nonstackable by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Brocade_Foundry Nonstackable by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Brocade_Foundry Nonstackable by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Brocade_Foundry Nonstackable by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Nonstackable by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Brocade_Foundry Nonstackable by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_DESCR}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_DESCR}: Temperature is above critical threshold</p> |
+|{#SENSOR_DESCR}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3` |HIGH | |
+|{#SENSOR_DESCR}: Temperature is too low |<p>-</p> |`avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`min(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3` |AVERAGE | |
+|Chassis #{#SNMPINDEX}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Chassis"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Chassis"}-3` |WARNING |<p>**Depends on**:</p><p>- Chassis #{#SNMPINDEX}: Temperature is above critical threshold</p> |
+|Chassis #{#SNMPINDEX}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Chassis"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Chassis"}-3` |HIGH | |
+|Chassis #{#SNMPINDEX}: Temperature is too low |<p>-</p> |`avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Chassis"}`<p>Recovery expression:</p>`min(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Chassis"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Brocade_Foundry Stackable SNMP
+# Brocade_Foundry Stackable by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
For devices(most of the IronWare Brocade devices) that support Stackable SNMP Tables in FOUNDRY-SN-AGENT-MIB: snChasFan2Table, snChasPwrSupply2Table,snAgentTemp2Table - so objects from all Stack members are provided.
This template was tested on:
@@ -247,31 +247,31 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade_Foundry Stackable SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Stackable SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Stackable SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Brocade_Foundry Stackable SNMP/system.name,#1)<>last(/Brocade_Foundry Stackable SNMP/system.name,#2) and length(last(/Brocade_Foundry Stackable SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Brocade_Foundry Stackable SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Stackable SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Stackable SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|Unit {#SNMPVALUE}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Brocade_Foundry Stackable SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#2) and length(last(/Brocade_Foundry Stackable SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade_Foundry Stackable SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Brocade_Foundry Stackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Brocade_Foundry Stackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Brocade_Foundry Stackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Brocade_Foundry Stackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Brocade_Foundry Stackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Brocade_Foundry Stackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Stackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Brocade_Foundry Stackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Stackable SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Stackable SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Brocade_Foundry Stackable SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Stackable SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Stackable SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Stackable SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Brocade_Foundry Stackable SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Brocade_Foundry Stackable SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Brocade_Foundry Stackable SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Stackable SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Brocade_Foundry Stackable SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_DESCR}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_DESCR}: Temperature is above critical threshold</p> |
-|{#SENSOR_DESCR}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3` |HIGH | |
-|{#SENSOR_DESCR}: Temperature is too low |<p>-</p> |`avg(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`min(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Brocade_Foundry Stackable by SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Stackable by SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Brocade_Foundry Stackable by SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Brocade_Foundry Stackable by SNMP/system.name,#1)<>last(/Brocade_Foundry Stackable by SNMP/system.name,#2) and length(last(/Brocade_Foundry Stackable by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Brocade_Foundry Stackable by SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Stackable by SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Stackable by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|Unit {#SNMPVALUE}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Brocade_Foundry Stackable by SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable by SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#2) and length(last(/Brocade_Foundry Stackable by SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Brocade_Foundry Stackable by SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Brocade_Foundry Stackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Brocade_Foundry Stackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Brocade_Foundry Stackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Brocade_Foundry Stackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Brocade_Foundry Stackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Brocade_Foundry Stackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Stackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Brocade_Foundry Stackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Stackable by SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Brocade_Foundry Stackable by SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Brocade_Foundry Stackable by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Stackable by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Stackable by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Stackable by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Brocade_Foundry Stackable by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Brocade_Foundry Stackable by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Brocade_Foundry Stackable by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Stackable by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Brocade_Foundry Stackable by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_DESCR}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_DESCR}: Temperature is above critical threshold</p> |
+|{#SENSOR_DESCR}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3` |HIGH | |
+|{#SENSOR_DESCR}: Temperature is too low |<p>-</p> |`avg(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`min(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/net/brocade_foundry_sw_snmp/template_net_brocade_foundry_sw_snmp.yaml b/templates/net/brocade_foundry_sw_snmp/template_net_brocade_foundry_sw_snmp.yaml
index 5d05c01fe60..b0d2bfeffd6 100644
--- a/templates/net/brocade_foundry_sw_snmp/template_net_brocade_foundry_sw_snmp.yaml
+++ b/templates/net/brocade_foundry_sw_snmp/template_net_brocade_foundry_sw_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:01:25Z'
+ date: '2022-10-27T14:44:04Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 6ecfb7083ddf45f183ab4be50cfba37a
- template: 'Brocade_Foundry Nonstackable SNMP'
- name: 'Brocade_Foundry Nonstackable SNMP'
+ template: 'Brocade_Foundry Nonstackable by SNMP'
+ name: 'Brocade_Foundry Nonstackable by SNMP'
description: |
Template Net Brocade_Foundry Nonstackable
@@ -42,7 +42,7 @@ zabbix_export:
triggers:
-
uuid: 3e93707bfbed4541a90548f64b2dfc18
- expression: 'max(/Brocade_Foundry Nonstackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Nonstackable by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -68,14 +68,14 @@ zabbix_export:
triggers:
-
uuid: 3f3500c666bb47208115b6ca43fc8458
- expression: 'min(/Brocade_Foundry Nonstackable SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Nonstackable SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Brocade_Foundry Nonstackable by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Nonstackable by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade_Foundry Nonstackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Nonstackable by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -101,17 +101,17 @@ zabbix_export:
triggers:
-
uuid: e1bcb2ad662f4e4fb0ff67f0f1fc39e5
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Brocade_Foundry Nonstackable SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Nonstackable SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Brocade_Foundry Nonstackable by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Nonstackable by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade_Foundry Nonstackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Nonstackable by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -175,7 +175,7 @@ zabbix_export:
triggers:
-
uuid: bf59d38703f44bcb9497dcbda684b071
- expression: 'min(/Brocade_Foundry Nonstackable SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Brocade_Foundry Nonstackable by SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -234,7 +234,7 @@ zabbix_export:
triggers:
-
uuid: fbe1f9d9286046bbb15fe89ec1dcc87d
- expression: 'last(/Brocade_Foundry Nonstackable SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Nonstackable SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Nonstackable SNMP/system.hw.firmware))>0'
+ expression: 'last(/Brocade_Foundry Nonstackable by SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Nonstackable by SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Nonstackable by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -268,7 +268,7 @@ zabbix_export:
triggers:
-
uuid: 2bb9d8927e464842a55b89be412adcc4
- expression: 'last(/Brocade_Foundry Nonstackable SNMP/system.hw.serialnumber,#1)<>last(/Brocade_Foundry Nonstackable SNMP/system.hw.serialnumber,#2) and length(last(/Brocade_Foundry Nonstackable SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Brocade_Foundry Nonstackable by SNMP/system.hw.serialnumber,#1)<>last(/Brocade_Foundry Nonstackable by SNMP/system.hw.serialnumber,#2) and length(last(/Brocade_Foundry Nonstackable by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: ee0c67c575cb4b01bc3733d719baac4f
- expression: 'last(/Brocade_Foundry Nonstackable SNMP/system.name,#1)<>last(/Brocade_Foundry Nonstackable SNMP/system.name,#2) and length(last(/Brocade_Foundry Nonstackable SNMP/system.name))>0'
+ expression: 'last(/Brocade_Foundry Nonstackable by SNMP/system.name,#1)<>last(/Brocade_Foundry Nonstackable by SNMP/system.name,#2) and length(last(/Brocade_Foundry Nonstackable by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -433,7 +433,7 @@ zabbix_export:
triggers:
-
uuid: 07bba62d70fa4e7b81f82fc44036ce6e
- expression: 'min(/Brocade_Foundry Nonstackable SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Brocade_Foundry Nonstackable by SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -469,7 +469,7 @@ zabbix_export:
triggers:
-
uuid: fb3168f6539c4a55b5aab3efbcad117d
- expression: 'max(/Brocade_Foundry Nonstackable SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Brocade_Foundry Nonstackable by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -477,7 +477,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade_Foundry Nonstackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Nonstackable by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -511,7 +511,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: dfb8d67a8b0c4128aff9d1643e40afc0
- expression: 'count(/Brocade_Foundry Nonstackable SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Nonstackable by SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: 'Fan {#FAN_INDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -525,7 +525,7 @@ zabbix_export:
value: performance
-
uuid: 74ef51062e194213bbf61f747624313c
- expression: 'count(/Brocade_Foundry Nonstackable SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Nonstackable by SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
name: 'Fan {#FAN_INDEX}: Fan is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -533,7 +533,7 @@ zabbix_export:
dependencies:
-
name: 'Fan {#FAN_INDEX}: Fan is in critical state'
- expression: 'count(/Brocade_Foundry Nonstackable SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Nonstackable by SNMP/sensor.fan.status[snChasFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -842,9 +842,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3455100ce855445ab3806379fbdc0bbf
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -895,21 +895,21 @@ zabbix_export:
-
uuid: e5f54206b19f4f589229c7137365351c
expression: |
- change(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Brocade_Foundry Nonstackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Brocade_Foundry Nonstackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -918,8 +918,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -927,13 +927,13 @@ zabbix_export:
-
uuid: 093696611acd4d75b00e83ce5b11df35
expression: |
- (avg(/Brocade_Foundry Nonstackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Brocade_Foundry Nonstackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Brocade_Foundry Nonstackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Brocade_Foundry Nonstackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Brocade_Foundry Nonstackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Brocade_Foundry Nonstackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Brocade_Foundry Nonstackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Brocade_Foundry Nonstackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Nonstackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -943,8 +943,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -952,12 +952,12 @@ zabbix_export:
-
uuid: 5337b53e473248719eb502428a4bcc38
expression: |
- min(/Brocade_Foundry Nonstackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Brocade_Foundry Nonstackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Brocade_Foundry Nonstackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Brocade_Foundry Nonstackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Brocade_Foundry Nonstackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Brocade_Foundry Nonstackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Brocade_Foundry Nonstackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Brocade_Foundry Nonstackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -967,8 +967,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade_Foundry Nonstackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade_Foundry Nonstackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -985,42 +985,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 9ea01b3ce15248868f1ced0b38bf1245
@@ -1050,7 +1050,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fbe256ab504b4cb98fec650972d5c41a
- expression: 'count(/Brocade_Foundry Nonstackable SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Nonstackable by SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: 'PSU {#PSU_INDEX}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1064,7 +1064,7 @@ zabbix_export:
value: performance
-
uuid: 6163e41576734f469146bc818b2856a2
- expression: 'count(/Brocade_Foundry Nonstackable SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Nonstackable by SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
name: 'PSU {#PSU_INDEX}: Power supply is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1072,7 +1072,7 @@ zabbix_export:
dependencies:
-
name: 'PSU {#PSU_INDEX}: Power supply is in critical state'
- expression: 'count(/Brocade_Foundry Nonstackable SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Nonstackable by SNMP/sensor.psu.status[snChasPwrSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -1112,9 +1112,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: cae73cf7a78f4963ab1718446ceeb6f4
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Chassis"}'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Chassis"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Chassis"}-3'
+ recovery_expression: 'max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Chassis"}-3'
name: 'Chassis #{#SNMPINDEX}: Temperature is above critical threshold'
event_name: 'Chassis #{#SNMPINDEX}: Temperature is above critical threshold: >{$TEMP_CRIT:"Chassis"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1129,9 +1129,9 @@ zabbix_export:
value: performance
-
uuid: 66c4f9fd59f043a782dd8fea11b90451
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Chassis"}'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Chassis"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Chassis"}-3'
+ recovery_expression: 'max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Chassis"}-3'
name: 'Chassis #{#SNMPINDEX}: Temperature is above warning threshold'
event_name: 'Chassis #{#SNMPINDEX}: Temperature is above warning threshold: >{$TEMP_WARN:"Chassis"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1140,8 +1140,8 @@ zabbix_export:
dependencies:
-
name: 'Chassis #{#SNMPINDEX}: Temperature is above critical threshold'
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Chassis"}'
- recovery_expression: 'max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Chassis"}-3'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Chassis"}'
+ recovery_expression: 'max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Chassis"}-3'
tags:
-
tag: scope
@@ -1151,9 +1151,9 @@ zabbix_export:
value: performance
-
uuid: 2895da8297fc457da88ea136e61fb8d9
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Chassis"}'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Chassis"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Chassis"}+3'
+ recovery_expression: 'min(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snChasActualTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Chassis"}+3'
name: 'Chassis #{#SNMPINDEX}: Temperature is too low'
event_name: 'Chassis #{#SNMPINDEX}: Temperature is too low: <{$TEMP_CRIT_LOW:"Chassis"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1198,9 +1198,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: bace15be86774bb4a46ca491b3b53516
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
+ recovery_expression: 'max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
name: '{#SENSOR_DESCR}: Temperature is above critical threshold'
event_name: '{#SENSOR_DESCR}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1215,9 +1215,9 @@ zabbix_export:
value: performance
-
uuid: 3687c8a7e88949fb9953049fb0f5e54d
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3'
+ recovery_expression: 'max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3'
name: '{#SENSOR_DESCR}: Temperature is above warning threshold'
event_name: '{#SENSOR_DESCR}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1226,8 +1226,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_DESCR}: Temperature is above critical threshold'
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
- recovery_expression: 'max(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
+ recovery_expression: 'max(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
tags:
-
tag: scope
@@ -1237,9 +1237,9 @@ zabbix_export:
value: performance
-
uuid: fbe5f29b241248b4b4bff5d55fcc2180
- expression: 'avg(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Brocade_Foundry Nonstackable SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3'
+ recovery_expression: 'min(/Brocade_Foundry Nonstackable by SNMP/sensor.temp.value[snAgentTempValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3'
name: '{#SENSOR_DESCR}: Temperature is too low'
event_name: '{#SENSOR_DESCR}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1375,7 +1375,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2313,8 +2313,8 @@ zabbix_export:
newvalue: unknown
-
uuid: f64ad01567914165a493815e492fb315
- template: 'Brocade_Foundry Stackable SNMP'
- name: 'Brocade_Foundry Stackable SNMP'
+ template: 'Brocade_Foundry Stackable by SNMP'
+ name: 'Brocade_Foundry Stackable by SNMP'
description: |
Template Brocade_Foundry Stackable
@@ -2354,7 +2354,7 @@ zabbix_export:
triggers:
-
uuid: 06ed32e60b9d4fb387116b5bb9c1700a
- expression: 'max(/Brocade_Foundry Stackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Stackable by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -2380,14 +2380,14 @@ zabbix_export:
triggers:
-
uuid: 305f5a75aed34094a1721653ba6cafda
- expression: 'min(/Brocade_Foundry Stackable SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Stackable SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Brocade_Foundry Stackable by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Stackable by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade_Foundry Stackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Stackable by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -2413,17 +2413,17 @@ zabbix_export:
triggers:
-
uuid: 6e7e8f250fbb47778405daeea7a2b852
- expression: 'avg(/Brocade_Foundry Stackable SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Brocade_Foundry Stackable by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Brocade_Foundry Stackable SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Stackable SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Brocade_Foundry Stackable by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Brocade_Foundry Stackable by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade_Foundry Stackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Stackable by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -2487,7 +2487,7 @@ zabbix_export:
triggers:
-
uuid: c390ed19b59a45b29f80cb95ee6e635a
- expression: 'min(/Brocade_Foundry Stackable SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Brocade_Foundry Stackable by SNMP/system.cpu.util[snAgGblCpuUtil1MinAvg.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -2546,7 +2546,7 @@ zabbix_export:
triggers:
-
uuid: 891b6945b3ae4625bf77a16985219015
- expression: 'last(/Brocade_Foundry Stackable SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Stackable SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Stackable SNMP/system.hw.firmware))>0'
+ expression: 'last(/Brocade_Foundry Stackable by SNMP/system.hw.firmware,#1)<>last(/Brocade_Foundry Stackable by SNMP/system.hw.firmware,#2) and length(last(/Brocade_Foundry Stackable by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2633,7 +2633,7 @@ zabbix_export:
triggers:
-
uuid: 1e455a8b19994e9a9f9147d4c3abfa59
- expression: 'last(/Brocade_Foundry Stackable SNMP/system.name,#1)<>last(/Brocade_Foundry Stackable SNMP/system.name,#2) and length(last(/Brocade_Foundry Stackable SNMP/system.name))>0'
+ expression: 'last(/Brocade_Foundry Stackable by SNMP/system.name,#1)<>last(/Brocade_Foundry Stackable by SNMP/system.name,#2) and length(last(/Brocade_Foundry Stackable by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -2711,7 +2711,7 @@ zabbix_export:
triggers:
-
uuid: 18623226ce15406488bc99f075cf2590
- expression: 'min(/Brocade_Foundry Stackable SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Brocade_Foundry Stackable by SNMP/vm.memory.util[snAgGblDynMemUtil.0],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -2747,7 +2747,7 @@ zabbix_export:
triggers:
-
uuid: a4bb03ba3e4645fdb7ecab56ddde776f
- expression: 'max(/Brocade_Foundry Stackable SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Brocade_Foundry Stackable by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2755,7 +2755,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Brocade_Foundry Stackable SNMP/icmpping,#3)=0'
+ expression: 'max(/Brocade_Foundry Stackable by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -2795,7 +2795,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0144f409ccfd421cb382031cbed8a037
- expression: 'last(/Brocade_Foundry Stackable SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#2) and length(last(/Brocade_Foundry Stackable SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/Brocade_Foundry Stackable by SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable by SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}],#2) and length(last(/Brocade_Foundry Stackable by SNMP/system.hw.serialnumber[snChasUnitSerNum.{#SNMPINDEX}]))>0'
name: 'Unit {#SNMPVALUE}: Device has been replaced'
event_name: 'Unit {#SNMPVALUE}: Device has been replaced (new serial number received)'
priority: INFO
@@ -2833,7 +2833,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 10f683ff42054948bad36cc52f9c968e
- expression: 'count(/Brocade_Foundry Stackable SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Stackable by SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: 'Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2847,7 +2847,7 @@ zabbix_export:
value: performance
-
uuid: 821381a387194c7ca4e4ddd1cf734a4c
- expression: 'count(/Brocade_Foundry Stackable SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Stackable by SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
name: 'Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2855,7 +2855,7 @@ zabbix_export:
dependencies:
-
name: 'Unit {#FAN_UNIT} Fan {#FAN_INDEX}: Fan is in critical state'
- expression: 'count(/Brocade_Foundry Stackable SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Stackable by SNMP/sensor.fan.status[snChasFan2OperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -3164,9 +3164,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4c175f17331942ae8342b0abf43f8fe2
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -3217,21 +3217,21 @@ zabbix_export:
-
uuid: 8a83aadcd4474f8d99a4712c2f49e737
expression: |
- change(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Brocade_Foundry Stackable SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Brocade_Foundry Stackable by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -3240,8 +3240,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -3249,13 +3249,13 @@ zabbix_export:
-
uuid: a1ec6d8bc0644db9be849d79e9f24ea1
expression: |
- (avg(/Brocade_Foundry Stackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Brocade_Foundry Stackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Brocade_Foundry Stackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Brocade_Foundry Stackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Brocade_Foundry Stackable SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Brocade_Foundry Stackable SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Brocade_Foundry Stackable by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Brocade_Foundry Stackable by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Brocade_Foundry Stackable by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -3265,8 +3265,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -3274,12 +3274,12 @@ zabbix_export:
-
uuid: acba5651b6dd4ed29166698a4faed7f8
expression: |
- min(/Brocade_Foundry Stackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Brocade_Foundry Stackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Brocade_Foundry Stackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Brocade_Foundry Stackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Brocade_Foundry Stackable SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Brocade_Foundry Stackable SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Brocade_Foundry Stackable by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Brocade_Foundry Stackable by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -3289,8 +3289,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Brocade_Foundry Stackable SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Brocade_Foundry Stackable by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -3307,42 +3307,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 36f00d10099946c9bf3a9e617252bec1
@@ -3372,7 +3372,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b2b78ace5fc748129fd73ae4283802a6
- expression: 'count(/Brocade_Foundry Stackable SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Stackable by SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: 'Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -3386,7 +3386,7 @@ zabbix_export:
value: performance
-
uuid: d7d0b3a51e2d4737938d310ba6c4a9c9
- expression: 'count(/Brocade_Foundry Stackable SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Stackable by SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
name: 'Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -3394,7 +3394,7 @@ zabbix_export:
dependencies:
-
name: 'Unit {#PSU_UNIT} PSU {#PSU_INDEX}: Power supply is in critical state'
- expression: 'count(/Brocade_Foundry Stackable SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Brocade_Foundry Stackable by SNMP/sensor.psu.status[snChasPwrSupply2OperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -3463,9 +3463,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e1a63b2ebef549ebbd95b307feee8b8d
- expression: 'avg(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
+ recovery_expression: 'max(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
name: '{#SENSOR_DESCR}: Temperature is above critical threshold'
event_name: '{#SENSOR_DESCR}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -3480,9 +3480,9 @@ zabbix_export:
value: performance
-
uuid: c1e348e8a5f24100a5b29a840a43dca9
- expression: 'avg(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3'
+ recovery_expression: 'max(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3'
name: '{#SENSOR_DESCR}: Temperature is above warning threshold'
event_name: '{#SENSOR_DESCR}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -3491,8 +3491,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_DESCR}: Temperature is above critical threshold'
- expression: 'avg(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
- recovery_expression: 'max(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
+ expression: 'avg(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
+ recovery_expression: 'max(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
tags:
-
tag: scope
@@ -3502,9 +3502,9 @@ zabbix_export:
value: performance
-
uuid: 722ee93a637643e9b3cff31e5ea5151d
- expression: 'avg(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Brocade_Foundry Stackable SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3'
+ recovery_expression: 'min(/Brocade_Foundry Stackable by SNMP/sensor.temp.value[snAgentTemp2Value.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3'
name: '{#SENSOR_DESCR}: Temperature is too low'
event_name: '{#SENSOR_DESCR}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -3640,7 +3640,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -4579,7 +4579,7 @@ zabbix_export:
triggers:
-
uuid: 99208318a05445518bebae305dd53d34
- expression: '(last(/Brocade_Foundry Nonstackable SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Nonstackable SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Nonstackable SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Nonstackable SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Brocade_Foundry Nonstackable by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Nonstackable by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Nonstackable by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Nonstackable by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -4588,14 +4588,14 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Brocade_Foundry Nonstackable SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Brocade_Foundry Nonstackable by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
value: notice
-
uuid: 0fd4a268d6d34a2d925a97babe365b65
- expression: '(last(/Brocade_Foundry Stackable SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Stackable SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Stackable SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Stackable SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Brocade_Foundry Stackable by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Brocade_Foundry Stackable by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Brocade_Foundry Stackable by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Brocade_Foundry Stackable by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -4604,7 +4604,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Brocade_Foundry Stackable SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Brocade_Foundry Stackable by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -4620,7 +4620,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'system.cpu.util[snAgGblCpuUtil1MinAvg.0]'
-
uuid: d999400f4c7c43c7a1f0af7bbc82bd36
@@ -4632,7 +4632,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'system.cpu.util[snAgGblCpuUtil1MinAvg.0]'
-
uuid: e9b341d71fde4609b1e38d917042fd3b
@@ -4644,7 +4644,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Nonstackable SNMP'
+ host: 'Brocade_Foundry Nonstackable by SNMP'
key: 'vm.memory.util[snAgGblDynMemUtil.0]'
-
uuid: 06183d560def4fcb8ba81469e4d53c67
@@ -4656,5 +4656,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Brocade_Foundry Stackable SNMP'
+ host: 'Brocade_Foundry Stackable by SNMP'
key: 'vm.memory.util[snAgGblDynMemUtil.0]'
diff --git a/templates/net/cisco/cisco_asav_snmp/README.md b/templates/net/cisco/cisco_asav_snmp/README.md
index c4b54b1bb61..2210b32a5eb 100644
--- a/templates/net/cisco/cisco_asav_snmp/README.md
+++ b/templates/net/cisco/cisco_asav_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco ASAv SNMP
+# Cisco ASAv by SNMP
## Overview
-For Zabbix version: 6.2 and higher
+For Zabbix version: 6.4 and higher.
Secure Firewall ASA Virtual is the virtualized option of popular Secure Firewall ASA solution and offers security in traditional physical data centers and private and public clouds.
Learn more about Cisco ASAv: https://www.cisco.com/c/en/us/products/collateral/security/adaptive-security-virtual-appliance-asav/adapt-security-virtual-appliance-ds.html
@@ -14,7 +14,7 @@ This template was tested on:
## Setup
-> See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
Refer to the vendor documentation.
@@ -46,7 +46,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|CPU discovery |<p>Discovery of cpmCPUTotalTable, a table of CPU monitoring entries.</p> |SNMP |cisco.asav.cpu.discovery |
-|Interface discovery |<p>Network interfaces discovery</p> |SNMP |cisco.asav.net.if.discovery<p>**Filter**:</p>AND <p>- {#CISCO.IF.NAME} MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#CISCO.IF.NAME} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#CISCO.IF.STATUS.ADMIN} MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.ADMIN.MATCHES}`</p><p>- {#CISCO.IF.STATUS.ADMIN} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.ADMIN.NOT_MATCHES}`</p><p>- {#CISCO.IF.DESC} MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#CISCO.IF.DESC} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#CISCO.IF.NAME} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>Network interfaces discovery</p> |SNMP |cisco.asav.net.if.discovery<p>**Filter**:</p>AND <p>- {#CISCO.IF.NAME} MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#CISCO.IF.NAME} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#CISCO.IF.STATUS.ADMIN} MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.ADMIN.MATCHES}`</p><p>- {#CISCO.IF.STATUS.ADMIN} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.ADMIN.NOT_MATCHES}`</p><p>- {#CISCO.IF.DESC} MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#CISCO.IF.DESC} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#CISCO.IF.NAME} NOT_MATCHES_REGEX `{$CISCO.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Memory discovery |<p>Discovery of ciscoMemoryPoolTable, a table of memory pool monitoring entries.</p> |SNMP |cisco.asav.memory.discovery |
|Physical entry discovery |<p>Information about a particular physical entity.</p> |SNMP |cisco.asav.physical.entry.discovery |
|Session discovery |<p>Remote access session discovery</p> |SNMP |cisco.asav.session.discovery |
@@ -103,16 +103,16 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Cisco ASAv: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco ASAv SNMP/cisco.asav.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|Cisco ASAv: {#CISCO.ASAV.PHYS.NAME} has been replaced |<p>{#CISCO.ASAV.PHYS.NAME} serial number has changed. Ack to close</p> |`last(/Cisco ASAv SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#1)<>last(/Cisco ASAv SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#2) and length(last(/Cisco ASAv SNMP/cisco.asav.phys.sn[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Cisco ASAv: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco ASAv SNMP/cisco.asav.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Cisco ASAv: {#CISCO.IF.NAME} Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])=2 and last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|Cisco ASAv: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco ASAv SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|Cisco ASAv: has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/Cisco ASAv SNMP/cisco.asav.uptime)<10m` |INFO |<p>Manual close: YES</p> |
+|Cisco ASAv: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco ASAv by SNMP/cisco.asav.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|Cisco ASAv: {#CISCO.ASAV.PHYS.NAME} has been replaced |<p>{#CISCO.ASAV.PHYS.NAME} serial number has changed. Ack to close</p> |`last(/Cisco ASAv by SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#1)<>last(/Cisco ASAv by SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#2) and length(last(/Cisco ASAv by SNMP/cisco.asav.phys.sn[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Cisco ASAv: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco ASAv by SNMP/cisco.asav.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Cisco ASAv: {#CISCO.IF.NAME} Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])=2 and last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|Cisco ASAv: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco ASAv by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|Cisco ASAv: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/Cisco ASAv by SNMP/cisco.asav.uptime)<10m` |INFO |<p>Manual close: YES</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
diff --git a/templates/net/cisco/cisco_asav_snmp/template_net_cisco_asav_snmp.yaml b/templates/net/cisco/cisco_asav_snmp/template_net_cisco_asav_snmp.yaml
index a8ba01fd08a..17920f1b950 100644
--- a/templates/net/cisco/cisco_asav_snmp/template_net_cisco_asav_snmp.yaml
+++ b/templates/net/cisco/cisco_asav_snmp/template_net_cisco_asav_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-06-07T19:33:05Z'
+ version: '6.4'
+ date: '2022-10-27T14:44:39Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 75d009cd4dc84ee7a8fc479fa2fbaeee
- template: 'Cisco ASAv SNMP'
- name: 'Cisco ASAv SNMP'
+ template: 'Cisco ASAv by SNMP'
+ name: 'Cisco ASAv by SNMP'
description: |
Template Net Cisco ASAv
@@ -25,7 +25,7 @@ zabbix_export:
You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco
- Template tooling version used: 0.41
+ Template tooling version used: 0.42
groups:
-
name: 'Templates/Network devices'
@@ -159,9 +159,9 @@ zabbix_export:
triggers:
-
uuid: 7fcf46583d2b42f4be6758e85784f28f
- expression: 'last(/Cisco ASAv SNMP/cisco.asav.uptime)<10m'
- name: 'Cisco ASAv: has been restarted'
- event_name: 'Cisco ASAv: has been restarted (uptime < 10m)'
+ expression: 'last(/Cisco ASAv by SNMP/cisco.asav.uptime)<10m'
+ name: 'Cisco ASAv: Host has been restarted'
+ event_name: 'Cisco ASAv: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
description: 'Uptime is less than 10 minutes.'
manual_close: 'YES'
@@ -192,7 +192,7 @@ zabbix_export:
triggers:
-
uuid: 9ee945a0b0b942d7a7e3fcf218f0e82f
- expression: 'max(/Cisco ASAv SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco ASAv by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'Cisco ASAv: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -232,7 +232,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2e90218795b94ee8b3c01dd79d2dd8b3
- expression: 'min(/Cisco ASAv SNMP/cisco.asav.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco ASAv by SNMP/cisco.asav.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: 'Cisco ASAv: High CPU utilization'
event_name: 'Cisco ASAv: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -250,7 +250,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.cpu.util[{#SNMPINDEX}]'
-
uuid: 072c0dc4527c492592df91115f1621cb
@@ -310,7 +310,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 688975747f664a15a3bca9dd3e1e0b01
- expression: 'min(/Cisco ASAv SNMP/cisco.asav.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco ASAv by SNMP/cisco.asav.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: 'Cisco ASAv: High memory utilization'
event_name: 'Cisco ASAv: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -330,7 +330,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.memory.util[{#SNMPINDEX}]'
-
uuid: 2ced96f9e3ff40de85530b9ef9e4585c
@@ -663,9 +663,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0aca9e16545a46f4a7b150d03cdb1df1
- expression: 'last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])=2 and last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])=2 and last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Cisco ASAv SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/Cisco ASAv by SNMP/cisco.asav.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'Cisco ASAv: {#CISCO.IF.NAME} Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -839,37 +839,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 1e252a00f1a14e99b06498a659a0d1d5
@@ -880,13 +880,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.in.util[{#SNMPINDEX}]'
-
uuid: 4609522ac9a545b3a5b38129e5110174
@@ -895,13 +895,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.net.if.out.traffic[{#SNMPINDEX}]'
overrides:
-
@@ -919,7 +919,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: de837df7c2f84cae86a84c773d7a07dc
@@ -1169,7 +1168,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c9f9bff9e9cd4519807c5be583670d02
- expression: 'last(/Cisco ASAv SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#1)<>last(/Cisco ASAv SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#2) and length(last(/Cisco ASAv SNMP/cisco.asav.phys.sn[{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco ASAv by SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#1)<>last(/Cisco ASAv by SNMP/cisco.asav.phys.sn[{#SNMPINDEX}],#2) and length(last(/Cisco ASAv by SNMP/cisco.asav.phys.sn[{#SNMPINDEX}]))>0'
name: 'Cisco ASAv: {#CISCO.ASAV.PHYS.NAME} has been replaced'
event_name: 'Cisco ASAv: {#CISCO.ASAV.PHYS.NAME} has been replaced (new serial number received)'
priority: INFO
@@ -1513,13 +1512,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.session.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Cisco ASAv SNMP'
+ host: 'Cisco ASAv by SNMP'
key: 'cisco.asav.session.out.traffic[{#SNMPINDEX}]'
tags:
-
diff --git a/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/README.md b/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/README.md
index 8b3163fa94c..13cfb70972b 100644
--- a/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/README.md
+++ b/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco Catalyst 3750V2-24FS SNMP
+# Cisco Catalyst 3750V2-24FS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
![Product picture](images/pic.png?raw=true)
> Courtesy of Cisco Systems, Inc. Unauthorized use not permitted.
@@ -109,37 +109,37 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-24FS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-24FS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-24FS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-24FS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24FS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24FS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24FS SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-24FS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
-|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-24FS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-24FS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-24FS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-24FS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
+|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
diff --git a/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/template_net_cisco_catalyst_3750_24fs_snmp.yaml b/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/template_net_cisco_catalyst_3750_24fs_snmp.yaml
index 7431f14493c..cb662c3ad9e 100644
--- a/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/template_net_cisco_catalyst_3750_24fs_snmp.yaml
+++ b/templates/net/cisco/cisco_catalyst_3750_24fs_snmp/template_net_cisco_catalyst_3750_24fs_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:15Z'
+ date: '2022-10-27T14:41:48Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 6ff896f545e043cc98de6d98698d41df
- template: 'Cisco Catalyst 3750V2-24FS SNMP'
- name: 'Cisco Catalyst 3750V2-24FS SNMP'
+ template: 'Cisco Catalyst 3750V2-24FS by SNMP'
+ name: 'Cisco Catalyst 3750V2-24FS by SNMP'
description: |
Template Cisco Catalyst 3750V2-24FS
@@ -47,7 +47,7 @@ zabbix_export:
triggers:
-
uuid: b0507a7333384bd5bf251fe238a538ad
- expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -73,14 +73,14 @@ zabbix_export:
triggers:
-
uuid: 089e23bcb4bb41f992947a6970555394
- expression: 'min(/Cisco Catalyst 3750V2-24FS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24FS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -106,17 +106,17 @@ zabbix_export:
triggers:
-
uuid: d5449d68d76e49ad9b7c052abff255e2
- expression: 'avg(/Cisco Catalyst 3750V2-24FS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco Catalyst 3750V2-24FS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24FS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24FS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -230,7 +230,7 @@ zabbix_export:
triggers:
-
uuid: ef94f8295a2946b9a266afc6c9a5c5c9
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -316,7 +316,7 @@ zabbix_export:
triggers:
-
uuid: 0d48c5e2b30f4f08b3cec8c89c05d52d
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -397,7 +397,7 @@ zabbix_export:
triggers:
-
uuid: 77433856d157408d98c72d964fdbf045
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.sw.os))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.sw.os))>0'
recovery_mode: NONE
name: 'Operating system description has changed'
priority: INFO
@@ -406,7 +406,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -426,7 +426,7 @@ zabbix_export:
triggers:
-
uuid: 4ebd3dd755dd4b1dae2509842d0b7117
- expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -475,7 +475,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a825aa92b31c4460bef20469afead397
- expression: 'min(/Cisco Catalyst 3750V2-24FS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco Catalyst 3750V2-24FS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -499,7 +499,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'system.cpu.util[{#SNMPINDEX}]'
-
uuid: bee10a232bfb498286a73963b6fe1f2a
@@ -548,7 +548,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b715f039d7874915aacd687e87661588
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 03a372d275194f8cae61786a38a7fb96
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -602,7 +602,7 @@ zabbix_export:
value: performance
-
uuid: 65bc040110534b6ab0544cb1866288ab
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -610,7 +610,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Fan is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -689,7 +689,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fc434ae6fdff4ec0b20400750571b786
- expression: 'min(/Cisco Catalyst 3750V2-24FS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco Catalyst 3750V2-24FS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization ( >{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -712,7 +712,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'vm.memory.util[{#SNMPINDEX}]'
-
uuid: 2d0c3668e56c4511b6625d6dc7b72015
@@ -837,9 +837,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ac2ed3537a1744bd91abb32acb45181c
- expression: 'min(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -848,7 +848,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -940,9 +940,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4e96fef6da19403eb125c67947ceadee
- expression: 'min(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -951,7 +951,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1052,7 +1052,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1086cb4f3a6a46c399fe221ffd538037
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1097,21 +1097,21 @@ zabbix_export:
-
uuid: 6c5a9334ff7d437c91c0f76da988cade
expression: |
- change(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1119,7 +1119,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1127,10 +1127,10 @@ zabbix_export:
-
uuid: 5f4de3462234401d826a4a7bab16402f
expression: |
- (avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1139,7 +1139,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1147,10 +1147,10 @@ zabbix_export:
-
uuid: 13ac4bfd49a749b7ba49cdbf531939b1
expression: |
- (avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-24FS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1159,7 +1159,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1173,42 +1173,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24FS SNMP'
+ host: 'Cisco Catalyst 3750V2-24FS by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: 836c2d80023941e6a9c66d7129d0caf2
@@ -1279,7 +1279,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 75341985cb654533b4ef67cbdd9333a9
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/net.if.duplex[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/net.if.duplex[{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1318,7 +1318,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d64945a4f2f74909a10f9cc448f26a02
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1329,7 +1329,7 @@ zabbix_export:
value: availability
-
uuid: aaf5b05767f24a9bb87753a519140673
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1337,7 +1337,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Power supply is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1376,7 +1376,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3d307edd9bc54aa2890bebe3ded250c2
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Temperature is in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1390,7 +1390,7 @@ zabbix_export:
value: performance
-
uuid: 24000d852b014ae7828eab26451257c1
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Temperature is in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1398,7 +1398,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1429,9 +1429,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8c7c804c7b274cf4a17090086ee0f8a0
- expression: 'avg(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1446,9 +1446,9 @@ zabbix_export:
value: performance
-
uuid: 0cdb1f1c7e7848bfba2368395d2c03e5
- expression: 'avg(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1457,8 +1457,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1468,9 +1468,9 @@ zabbix_export:
value: performance
-
uuid: eac4504f0d45457fa325f40e6ab585a2
- expression: 'avg(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco Catalyst 3750V2-24FS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco Catalyst 3750V2-24FS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2517,7 +2517,7 @@ zabbix_export:
triggers:
-
uuid: 6e105d2b8a2c43cc8841abb6995941ba
- expression: '(last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24FS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24FS SNMP/system.net.uptime)<10m)'
+ expression: '(last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24FS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24FS by SNMP/system.net.uptime)<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/README.md b/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/README.md
index a5822242499..6f67ad3950a 100644
--- a/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/README.md
+++ b/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco Catalyst 3750V2-24PS SNMP
+# Cisco Catalyst 3750V2-24PS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
![Product picture](images/pic.png?raw=true)
> Courtesy of Cisco Systems, Inc. Unauthorized use not permitted.
@@ -109,37 +109,37 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-24PS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-24PS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-24PS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-24PS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24PS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24PS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24PS SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-24PS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
-|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-24PS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-24PS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-24PS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-24PS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
+|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
diff --git a/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/template_net_cisco_catalyst_3750_24ps_snmp.yaml b/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/template_net_cisco_catalyst_3750_24ps_snmp.yaml
index 825ddae1ba3..c17733685fe 100644
--- a/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/template_net_cisco_catalyst_3750_24ps_snmp.yaml
+++ b/templates/net/cisco/cisco_catalyst_3750_24ps_snmp/template_net_cisco_catalyst_3750_24ps_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:17Z'
+ date: '2022-10-27T14:41:52Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 4583f0c3bc894251a6c5e7129cb5b9aa
- template: 'Cisco Catalyst 3750V2-24PS SNMP'
- name: 'Cisco Catalyst 3750V2-24PS SNMP'
+ template: 'Cisco Catalyst 3750V2-24PS by SNMP'
+ name: 'Cisco Catalyst 3750V2-24PS by SNMP'
description: |
Template Cisco Catalyst 3750V2-24PS
@@ -47,7 +47,7 @@ zabbix_export:
triggers:
-
uuid: e66bcbef8f1d45fc8bc5d64e5dc848dc
- expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -73,14 +73,14 @@ zabbix_export:
triggers:
-
uuid: 20ee878da19f4d758e4372c6c918c773
- expression: 'min(/Cisco Catalyst 3750V2-24PS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24PS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -106,17 +106,17 @@ zabbix_export:
triggers:
-
uuid: 0facff81f25c43869e86a0541f0e3ecd
- expression: 'avg(/Cisco Catalyst 3750V2-24PS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco Catalyst 3750V2-24PS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24PS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24PS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -230,7 +230,7 @@ zabbix_export:
triggers:
-
uuid: 052fb88fae1349d5b9a5fa5bcf24d0fa
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -316,7 +316,7 @@ zabbix_export:
triggers:
-
uuid: a678341d899846158fea2deb57f923cf
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -397,7 +397,7 @@ zabbix_export:
triggers:
-
uuid: 3e5d53072021491bb2af276aff3e1a0b
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.sw.os))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.sw.os))>0'
recovery_mode: NONE
name: 'Operating system description has changed'
priority: INFO
@@ -406,7 +406,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -426,7 +426,7 @@ zabbix_export:
triggers:
-
uuid: 0f2d48a1529c4ae49d58d466ed3a76e7
- expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -475,7 +475,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 471acd7fa3ad4040aba27535905bfe63
- expression: 'min(/Cisco Catalyst 3750V2-24PS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco Catalyst 3750V2-24PS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -499,7 +499,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'system.cpu.util[{#SNMPINDEX}]'
-
uuid: 7a62ebc0c38942fa9f72eebc839be5d7
@@ -548,7 +548,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 70aca80b5a8d414686967b104d301023
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e2b72d874d4f48e79aab3a6d514663b4
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -602,7 +602,7 @@ zabbix_export:
value: performance
-
uuid: d4bf389614f54be08ffd8d010e480da6
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -610,7 +610,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Fan is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -689,7 +689,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 918cf48b69d545dbb9f177fa1440f4cb
- expression: 'min(/Cisco Catalyst 3750V2-24PS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco Catalyst 3750V2-24PS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization ( >{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -712,7 +712,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'vm.memory.util[{#SNMPINDEX}]'
-
uuid: 2b0dacd3b651413fb674eac430613286
@@ -837,9 +837,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: df6bfacc52e1487d9f359c23545ceb84
- expression: 'min(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -848,7 +848,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -940,9 +940,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: aa49d99c77d64e31ad2369d09e547cab
- expression: 'min(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -951,7 +951,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1052,7 +1052,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 41d6b4a9fde546ae88005efdef1f4525
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1097,21 +1097,21 @@ zabbix_export:
-
uuid: d6aaa83ed4744ef982a177b77fb1f2c4
expression: |
- change(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1119,7 +1119,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1127,10 +1127,10 @@ zabbix_export:
-
uuid: 9e3e50611ef242b0b200c0a6343f4c5c
expression: |
- (avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1139,7 +1139,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1147,10 +1147,10 @@ zabbix_export:
-
uuid: 7c624697cd7b41d682b5856a3040737e
expression: |
- (avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-24PS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1159,7 +1159,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1173,42 +1173,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24PS SNMP'
+ host: 'Cisco Catalyst 3750V2-24PS by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: dbfa0bb2cc7a4a08a50311e37c6bc94b
@@ -1279,7 +1279,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: df8eb5498b8a41709db02b742fa24d6a
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/net.if.duplex[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/net.if.duplex[{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1318,7 +1318,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1d509ec30e8349538d9d2b2447b70253
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1329,7 +1329,7 @@ zabbix_export:
value: availability
-
uuid: 4ef4e09de93e4cfbb2aab4f22e78c223
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1337,7 +1337,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Power supply is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1376,7 +1376,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 506c98e9c29247cba7c58ca343c6fdf4
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Temperature is in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1390,7 +1390,7 @@ zabbix_export:
value: performance
-
uuid: d6b91f3e280c4d0fa3df0bf3fedd9183
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Temperature is in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1398,7 +1398,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1429,9 +1429,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 63e41d0fe43c4daa8fd2e4eee6e4ed8a
- expression: 'avg(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1446,9 +1446,9 @@ zabbix_export:
value: performance
-
uuid: cc09047db63a435e816e560c2007b43a
- expression: 'avg(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1457,8 +1457,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1468,9 +1468,9 @@ zabbix_export:
value: performance
-
uuid: 156a35b375ff4978a2b98f38785897a5
- expression: 'avg(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco Catalyst 3750V2-24PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco Catalyst 3750V2-24PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2517,7 +2517,7 @@ zabbix_export:
triggers:
-
uuid: a9633d3df8724c7cba6dfc6ec790c1fd
- expression: '(last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24PS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24PS SNMP/system.net.uptime)<10m)'
+ expression: '(last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24PS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24PS by SNMP/system.net.uptime)<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/README.md b/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/README.md
index c015677c86d..a599e047d42 100644
--- a/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/README.md
+++ b/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco Catalyst 3750V2-24TS SNMP
+# Cisco Catalyst 3750V2-24TS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
![Product picture](images/pic.png?raw=true)
> Courtesy of Cisco Systems, Inc. Unauthorized use not permitted.
@@ -109,37 +109,37 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-24TS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-24TS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-24TS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-24TS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24TS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24TS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24TS SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-24TS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
-|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-24TS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-24TS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-24TS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-24TS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
+|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
diff --git a/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/template_net_cisco_catalyst_3750_24ts_snmp.yaml b/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/template_net_cisco_catalyst_3750_24ts_snmp.yaml
index 7ae49f2f03a..85aef4ba697 100644
--- a/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/template_net_cisco_catalyst_3750_24ts_snmp.yaml
+++ b/templates/net/cisco/cisco_catalyst_3750_24ts_snmp/template_net_cisco_catalyst_3750_24ts_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:19Z'
+ date: '2022-10-27T14:41:51Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 30d084c6b7844b7cab6cf820b00bb7b2
- template: 'Cisco Catalyst 3750V2-24TS SNMP'
- name: 'Cisco Catalyst 3750V2-24TS SNMP'
+ template: 'Cisco Catalyst 3750V2-24TS by SNMP'
+ name: 'Cisco Catalyst 3750V2-24TS by SNMP'
description: |
Template Cisco Catalyst 3750V2-24TS
@@ -47,7 +47,7 @@ zabbix_export:
triggers:
-
uuid: e536d08729024bbcbe51f63ac1074796
- expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -73,14 +73,14 @@ zabbix_export:
triggers:
-
uuid: 63bdfa05fcbe455db4dbb28ae333292a
- expression: 'min(/Cisco Catalyst 3750V2-24TS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24TS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -106,17 +106,17 @@ zabbix_export:
triggers:
-
uuid: 79b80f4faa30401c8aa260a7bc961f9c
- expression: 'avg(/Cisco Catalyst 3750V2-24TS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco Catalyst 3750V2-24TS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24TS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-24TS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -230,7 +230,7 @@ zabbix_export:
triggers:
-
uuid: be325325a6bd4cf4ae1312b4488af80d
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -316,7 +316,7 @@ zabbix_export:
triggers:
-
uuid: d19bce317a4b4ab19485a183d446dcc7
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -397,7 +397,7 @@ zabbix_export:
triggers:
-
uuid: c139de21caf94d4b9c2d60977d4756f7
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.sw.os))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.sw.os))>0'
recovery_mode: NONE
name: 'Operating system description has changed'
priority: INFO
@@ -406,7 +406,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -426,7 +426,7 @@ zabbix_export:
triggers:
-
uuid: d78318493148438abca20fed768d4ced
- expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -475,7 +475,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6f039b9bfb00495ebe5e5eba56d25099
- expression: 'min(/Cisco Catalyst 3750V2-24TS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco Catalyst 3750V2-24TS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -499,7 +499,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'system.cpu.util[{#SNMPINDEX}]'
-
uuid: 777db6085eed46dbaef83c05049a8d4b
@@ -548,7 +548,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3e621db566ef4b5da2a3b0f5ee65ae81
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f299241a1a3c4fde965b3a2b6a3b31d6
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -602,7 +602,7 @@ zabbix_export:
value: performance
-
uuid: a4021a6d44fb439fa04b160b7cea2bca
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -610,7 +610,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Fan is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -689,7 +689,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a88d7a734efc40868d3fbeda307c4e1f
- expression: 'min(/Cisco Catalyst 3750V2-24TS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco Catalyst 3750V2-24TS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization ( >{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -712,7 +712,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'vm.memory.util[{#SNMPINDEX}]'
-
uuid: ce14cdd4669c4e8bb7b2badbe071f2d9
@@ -837,9 +837,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a5f11bbeceb9418f86b1130ccb6942ec
- expression: 'min(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -848,7 +848,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -940,9 +940,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5182e3b82c044374a6f14f9a06fa0f24
- expression: 'min(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -951,7 +951,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1052,7 +1052,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: cb577e04f0a94508a10656c5f276d4e0
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1097,21 +1097,21 @@ zabbix_export:
-
uuid: 46d96d2815a04b32b00ed4ef6104fedc
expression: |
- change(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1119,7 +1119,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1127,10 +1127,10 @@ zabbix_export:
-
uuid: 5af679006aaa40acbe01987ab15088ae
expression: |
- (avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1139,7 +1139,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1147,10 +1147,10 @@ zabbix_export:
-
uuid: e0b4ab67e80a4dbdb3d60246b8830228
expression: |
- (avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-24TS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1159,7 +1159,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1173,42 +1173,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-24TS SNMP'
+ host: 'Cisco Catalyst 3750V2-24TS by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: d1264fbbd4b547a6874152179ed756d5
@@ -1279,7 +1279,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 45b5778869124558b3265d6d7275c186
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/net.if.duplex[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/net.if.duplex[{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1318,7 +1318,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 23fc241ca9d6438bb1688c77688fd1ed
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1329,7 +1329,7 @@ zabbix_export:
value: availability
-
uuid: c6ed26fb555642c9b25564ec13fcf920
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1337,7 +1337,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Power supply is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1376,7 +1376,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1820c365ad55416e995d4d978063e4a1
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Temperature is in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1390,7 +1390,7 @@ zabbix_export:
value: performance
-
uuid: 0b7e6f3085a0404ebb64c33828c9c920
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Temperature is in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1398,7 +1398,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1429,9 +1429,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4c3501ee0c5b4af48306f040988d427a
- expression: 'avg(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1446,9 +1446,9 @@ zabbix_export:
value: performance
-
uuid: 34b7d1a255a4408fac4d299eedc215b9
- expression: 'avg(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1457,8 +1457,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1468,9 +1468,9 @@ zabbix_export:
value: performance
-
uuid: b9b8577c9f114d4c8546169e5a63a915
- expression: 'avg(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco Catalyst 3750V2-24TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco Catalyst 3750V2-24TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2517,7 +2517,7 @@ zabbix_export:
triggers:
-
uuid: 86484c0d62e94532af4202267369f8bf
- expression: '(last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24TS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24TS SNMP/system.net.uptime)<10m)'
+ expression: '(last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-24TS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-24TS by SNMP/system.net.uptime)<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/README.md b/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/README.md
index 2bb2f0f9c1f..49f59ce5db6 100644
--- a/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/README.md
+++ b/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco Catalyst 3750V2-48PS SNMP
+# Cisco Catalyst 3750V2-48PS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
![Product picture](images/pic.png?raw=true)
> Courtesy of Cisco Systems, Inc. Unauthorized use not permitted.
@@ -109,37 +109,37 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-48PS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-48PS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-48PS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-48PS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48PS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48PS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48PS SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-48PS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
-|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-48PS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO | |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-48PS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING | |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-48PS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-48PS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
+|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
diff --git a/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/template_net_cisco_catalyst_3750_48ps_snmp.yaml b/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/template_net_cisco_catalyst_3750_48ps_snmp.yaml
index 38169948065..e88ff36e07b 100644
--- a/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/template_net_cisco_catalyst_3750_48ps_snmp.yaml
+++ b/templates/net/cisco/cisco_catalyst_3750_48ps_snmp/template_net_cisco_catalyst_3750_48ps_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:23Z'
+ date: '2022-10-27T14:41:49Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: ea096c13a09b4d7a9be0aab1cec95206
- template: 'Cisco Catalyst 3750V2-48PS SNMP'
- name: 'Cisco Catalyst 3750V2-48PS SNMP'
+ template: 'Cisco Catalyst 3750V2-48PS by SNMP'
+ name: 'Cisco Catalyst 3750V2-48PS by SNMP'
description: |
Template Cisco Catalyst 3750V2-48PS
@@ -47,7 +47,7 @@ zabbix_export:
triggers:
-
uuid: 01901a212f7c4fd2976f8ab89ad7eb68
- expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -73,14 +73,14 @@ zabbix_export:
triggers:
-
uuid: 20104e6a8abe4b0e9bdd32325d506d9c
- expression: 'min(/Cisco Catalyst 3750V2-48PS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48PS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -106,17 +106,17 @@ zabbix_export:
triggers:
-
uuid: 21b7cefe750048fba80e026afecebcfd
- expression: 'avg(/Cisco Catalyst 3750V2-48PS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco Catalyst 3750V2-48PS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48PS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48PS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -230,7 +230,7 @@ zabbix_export:
triggers:
-
uuid: a11a364406534a838c99f89c4136eb5b
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -316,7 +316,7 @@ zabbix_export:
triggers:
-
uuid: b881ec6269d54e25810ed2ec2dfe3385
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -397,7 +397,7 @@ zabbix_export:
triggers:
-
uuid: cc0071c5d3074123a77ebddd7dd8583c
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.sw.os))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.sw.os))>0'
recovery_mode: NONE
name: 'Operating system description has changed'
priority: INFO
@@ -406,7 +406,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -426,7 +426,7 @@ zabbix_export:
triggers:
-
uuid: 90d5894323074dc8bcd57b212cdbf398
- expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -475,7 +475,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f3318a22b4ff436f9021dbd181ecee58
- expression: 'min(/Cisco Catalyst 3750V2-48PS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco Catalyst 3750V2-48PS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -499,7 +499,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'system.cpu.util[{#SNMPINDEX}]'
-
uuid: 7361d8c6f2a34111b478f4d5c1e12d01
@@ -548,7 +548,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b1087409b7c84ad5b587e6f6fc37dfe0
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9c0112ed996944768a717e15554aaa21
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -602,7 +602,7 @@ zabbix_export:
value: performance
-
uuid: 98dd9b3bf65e418aa86f7a927910f847
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -610,7 +610,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Fan is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -689,7 +689,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 14f0fcd6447746d2af5de080c36e9888
- expression: 'min(/Cisco Catalyst 3750V2-48PS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco Catalyst 3750V2-48PS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization ( >{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -712,7 +712,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'vm.memory.util[{#SNMPINDEX}]'
-
uuid: 11a26fe1c76447ba82250c7056c3ff9f
@@ -837,9 +837,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 67573956247a4c29935889db09fba7e4
- expression: 'min(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -848,7 +848,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -940,9 +940,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 80dc2a94be5d49d59b643b3c07dfe6fd
- expression: 'min(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -951,7 +951,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1052,7 +1052,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2ac6c68151b04e9489b0bff5f6277ec6
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1097,21 +1097,21 @@ zabbix_export:
-
uuid: b67a022f435741e59278d79bc873dcaa
expression: |
- change(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1119,7 +1119,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1127,10 +1127,10 @@ zabbix_export:
-
uuid: bf1ed5348e3c48388f099f4d8cdec4f8
expression: |
- (avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1139,7 +1139,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1147,10 +1147,10 @@ zabbix_export:
-
uuid: 76bbbff26fcc406ba497f24dd23c07c8
expression: |
- (avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-48PS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1159,7 +1159,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1173,42 +1173,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48PS SNMP'
+ host: 'Cisco Catalyst 3750V2-48PS by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: 51398634ec1742dc95df5907e1042763
@@ -1279,7 +1279,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4819114a72df4cd5ac093402e7799afa
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/net.if.duplex[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/net.if.duplex[{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1318,7 +1318,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8509b77831764bc3943b5fc65a8de0a7
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1329,7 +1329,7 @@ zabbix_export:
value: availability
-
uuid: 4cdeb02663604279ac2d725cd16ee289
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1337,7 +1337,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Power supply is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1376,7 +1376,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c4ed5c08530041ad8c9c14033d792f56
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Temperature is in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1390,7 +1390,7 @@ zabbix_export:
value: performance
-
uuid: b4b4b88fcbe74e8b9c525cd2a6ace143
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Temperature is in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1398,7 +1398,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1429,9 +1429,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d1918e0df0ae4b3ab22067142f7c0538
- expression: 'avg(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1446,9 +1446,9 @@ zabbix_export:
value: performance
-
uuid: 468eaf7a831d4b2699e8be1939916f56
- expression: 'avg(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1457,8 +1457,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1468,9 +1468,9 @@ zabbix_export:
value: performance
-
uuid: acac81a3c0b04e889f9bae2e40dd9caf
- expression: 'avg(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco Catalyst 3750V2-48PS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco Catalyst 3750V2-48PS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2517,7 +2517,7 @@ zabbix_export:
triggers:
-
uuid: 904571e51fbc4cd0a3a25800e16ec495
- expression: '(last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48PS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48PS SNMP/system.net.uptime)<10m)'
+ expression: '(last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48PS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48PS by SNMP/system.net.uptime)<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/README.md b/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/README.md
index 7bcbfd2135b..51055c7901a 100644
--- a/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/README.md
+++ b/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco Catalyst 3750V2-48TS SNMP
+# Cisco Catalyst 3750V2-48TS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
![Product picture](images/pic.png?raw=true)
> Courtesy of Cisco Systems, Inc. Unauthorized use not permitted.
@@ -109,37 +109,37 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-48TS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-48TS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
-|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-48TS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-48TS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48TS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48TS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48TS SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-48TS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
-|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco Catalyst 3750V2-48TS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.sw.os))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco Catalyst 3750V2-48TS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): High input error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High output error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])) and last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 `<p>Recovery expression:</p>`avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and ( last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=6 or last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=7 or last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=11 or last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=62 or last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=69 or last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=117 ) and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.duplex[{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4` |AVERAGE | |
+|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco Catalyst 3750V2-48TS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/system.net.uptime)<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco Catalyst 3750V2-48TS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPVALUE}: Temperature is in critical state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4` |HIGH | |
+|{#SNMPVALUE}: Temperature is in warning state |<p>This trigger uses temperature sensor state</p> |`last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is in critical state</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
diff --git a/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/template_net_cisco_catalyst_3750_48ts_snmp.yaml b/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/template_net_cisco_catalyst_3750_48ts_snmp.yaml
index ecb1b3ceb60..77cca41b70c 100644
--- a/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/template_net_cisco_catalyst_3750_48ts_snmp.yaml
+++ b/templates/net/cisco/cisco_catalyst_3750_48ts_snmp/template_net_cisco_catalyst_3750_48ts_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:25Z'
+ date: '2022-10-27T14:41:50Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: f744679600844c07b2b4eedda9bc3d0c
- template: 'Cisco Catalyst 3750V2-48TS SNMP'
- name: 'Cisco Catalyst 3750V2-48TS SNMP'
+ template: 'Cisco Catalyst 3750V2-48TS by SNMP'
+ name: 'Cisco Catalyst 3750V2-48TS by SNMP'
description: |
Template Cisco Catalyst 3750V2-48TS
@@ -47,7 +47,7 @@ zabbix_export:
triggers:
-
uuid: 1dd6a211f5e54351a2d4a0854e66fdba
- expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -73,14 +73,14 @@ zabbix_export:
triggers:
-
uuid: 669ae230efe84f76be95f3ac0eac1102
- expression: 'min(/Cisco Catalyst 3750V2-48TS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48TS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -106,17 +106,17 @@ zabbix_export:
triggers:
-
uuid: 391b3ac9e1b746c8824af721c472df7b
- expression: 'avg(/Cisco Catalyst 3750V2-48TS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco Catalyst 3750V2-48TS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48TS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco Catalyst 3750V2-48TS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -230,7 +230,7 @@ zabbix_export:
triggers:
-
uuid: f63ea5e9c33f465985259c3c8d27a12a
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -316,7 +316,7 @@ zabbix_export:
triggers:
-
uuid: 55ff869f6acb4f2daddf5c855aa3d76d
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -397,7 +397,7 @@ zabbix_export:
triggers:
-
uuid: 6724cfef1df145fdb0e6e2cfb35bc890
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.sw.os))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/system.sw.os,#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.sw.os,#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.sw.os))>0'
recovery_mode: NONE
name: 'Operating system description has changed'
priority: INFO
@@ -406,7 +406,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.name))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name,#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name,#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -426,7 +426,7 @@ zabbix_export:
triggers:
-
uuid: da0596afe59b455bb503a0b2dea1cebe
- expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -475,7 +475,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 194c2d8b74c94717a037ce22c31a50e6
- expression: 'min(/Cisco Catalyst 3750V2-48TS SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco Catalyst 3750V2-48TS by SNMP/system.cpu.util[{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -499,7 +499,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'system.cpu.util[{#SNMPINDEX}]'
-
uuid: 7b40466007144e82ba7b6081d9d024ae
@@ -548,7 +548,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7dc178a7bced4003b51b599459e41047
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#1)<>last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}],#2) and length(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.serialnumber[{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -589,7 +589,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 16d0712d6e1f4cb18a65d4cc7e11a8df
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -603,7 +603,7 @@ zabbix_export:
value: performance
-
uuid: 42ad0109072e404eb47daaf17236d805
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -611,7 +611,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Fan is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.fan.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -690,7 +690,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8cf907c229fa4c4c86c1f06e65facef8
- expression: 'min(/Cisco Catalyst 3750V2-48TS SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco Catalyst 3750V2-48TS by SNMP/vm.memory.util[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization ( >{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -713,7 +713,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'vm.memory.util[{#SNMPINDEX}]'
-
uuid: c0be105de4db4c0182833e6a7e0fcd01
@@ -838,9 +838,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f4fa2946c04d4bdbabc9be4b492cf5f0
- expression: 'min(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High input error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}'
@@ -850,7 +850,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -942,9 +942,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a14d914fa1404daab227b6d22e71ea69
- expression: 'min(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
+ expression: 'min(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out.errors[{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8'
name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High output error rate ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors out: {ITEM.LASTVALUE2}'
@@ -954,7 +954,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1055,7 +1055,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 77b810108caa4ae6bd8d8bff06acddb2
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1101,21 +1101,21 @@ zabbix_export:
-
uuid: 4eae529fc032412d957f1e0d04261867
expression: |
- change(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ change(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])<0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0
and (
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=6 or
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=7 or
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=11 or
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=62 or
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=69 or
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.type[{#SNMPINDEX}])=117
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=6 or
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=7 or
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=11 or
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=62 or
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=69 or
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.type[{#SNMPINDEX}])=117
)
and
- (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])<>2)
+ (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
- (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)
+ (change(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}],#2)>0) or
+ (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1124,7 +1124,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1132,10 +1132,10 @@ zabbix_export:
-
uuid: 4e1ee888558346faa54c02b85d320170
expression: |
- (avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.in[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High inbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'In: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1145,7 +1145,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1153,10 +1153,10 @@ zabbix_export:
-
uuid: 7623796067224187b6f692c8b6cbd398
expression: |
- (avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])) and
- last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])>0
+ (avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out[{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])) and
+ last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'avg(/Cisco Catalyst 3750V2-48TS SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.speed[{#SNMPINDEX}])'
+ recovery_expression: 'avg(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.out[{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.speed[{#SNMPINDEX}])'
name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High outbound bandwidth usage ( > {$IF.UTIL.MAX:"{#IFNAME}"}% )'
opdata: 'Out: {ITEM.LASTVALUE1}, speed: {ITEM.LASTVALUE2}'
@@ -1166,7 +1166,7 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.status[{#SNMPINDEX}])=2)'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and (last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.status[{#SNMPINDEX}])=2)'
tags:
-
tag: scope
@@ -1180,42 +1180,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'net.if.in[{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'net.if.out[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'net.if.out.errors[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'net.if.in.errors[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'net.if.out.discards[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco Catalyst 3750V2-48TS SNMP'
+ host: 'Cisco Catalyst 3750V2-48TS by SNMP'
key: 'net.if.in.discards[{#SNMPINDEX}]'
-
uuid: 15992a60957c4ef896ece23744da52f1
@@ -1286,7 +1286,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a1217d320897464da4bb9a67f669460f
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/net.if.duplex[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/net.if.duplex[{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1326,7 +1326,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 56fced6c99ba44ab9fb5268d946a385b
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1337,7 +1337,7 @@ zabbix_export:
value: availability
-
uuid: 6962e5851f244e9cb9d87763637a20f3
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1345,7 +1345,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Power supply is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.psu.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1384,7 +1384,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e4844779a080455e9691bdc705227a28
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
name: '{#SNMPVALUE}: Temperature is in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1398,7 +1398,7 @@ zabbix_export:
value: performance
-
uuid: 120dd2434317447d8ee6708d5c1221e3
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=2'
name: '{#SNMPVALUE}: Temperature is in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1406,7 +1406,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is in critical state'
- expression: 'last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
+ expression: 'last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=3 or last(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.status[{#SNMPINDEX}])=4'
tags:
-
tag: scope
@@ -1437,9 +1437,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6cecb3ad6e7640cc84b03e3b3943ad07
- expression: 'avg(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1454,9 +1454,9 @@ zabbix_export:
value: performance
-
uuid: 6f5d1c3f3c804b6ba17486db5e6e8037
- expression: 'avg(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1465,8 +1465,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1476,9 +1476,9 @@ zabbix_export:
value: performance
-
uuid: ed406cbc4b08446991c610c902574cac
- expression: 'avg(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco Catalyst 3750V2-48TS SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco Catalyst 3750V2-48TS by SNMP/sensor.temp.value[{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2525,7 +2525,7 @@ zabbix_export:
triggers:
-
uuid: 2f1841fb315041a2a437886dc6c23814
- expression: '(last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48TS SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48TS SNMP/system.net.uptime)<10m)'
+ expression: '(last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.uptime)>0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.uptime)<10m) or (last(/Cisco Catalyst 3750V2-48TS by SNMP/system.hw.uptime)=0 and last(/Cisco Catalyst 3750V2-48TS by SNMP/system.net.uptime)<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/net/cisco/cisco_snmp/README.md b/templates/net/cisco/cisco_snmp/README.md
index 9a7660840bf..f04d44d501e 100644
--- a/templates/net/cisco/cisco_snmp/README.md
+++ b/templates/net/cisco/cisco_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco IOS SNMP
+# Cisco IOS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -114,33 +114,33 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco IOS SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco IOS SNMP/system.name,#1)<>last(/Cisco IOS SNMP/system.name,#2) and length(last(/Cisco IOS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco IOS SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco IOS SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco IOS SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco IOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Cisco IOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Cisco IOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Cisco IOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco IOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco IOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco IOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Cisco IOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco IOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco IOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco IOS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco IOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco IOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco IOS by SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco IOS by SNMP/system.name,#1)<>last(/Cisco IOS by SNMP/system.name,#2) and length(last(/Cisco IOS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco IOS by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS by SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco IOS by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Cisco IOS by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco IOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Cisco IOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Cisco IOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Cisco IOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco IOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco IOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco IOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Cisco IOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco IOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco IOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco IOS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco IOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco IOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
@@ -148,11 +148,11 @@ Please report any issues with the template at https://support.zabbix.com
- Version: IOS for example: 12.1(22)EA11, 15.4(3)M2
- Device: C2911, C7600
-# Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP
+# Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -261,38 +261,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-# Cisco IOS prior to 12.0_3_T SNMP
+# Cisco IOS prior to 12.0_3_T by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -375,26 +375,26 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco IOS prior to 12.0_3_T SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco IOS prior to 12.0_3_T SNMP/system.name,#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.name,#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco IOS prior to 12.0_3_T SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco IOS prior to 12.0_3_T SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
-|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS prior to 12.0_3_T SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco IOS prior to 12.0_3_T SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco IOS prior to 12.0_3_T SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco IOS prior to 12.0_3_T SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS prior to 12.0_3_T SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco IOS prior to 12.0_3_T SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Cisco IOS prior to 12.0_3_T by SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name,#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name,#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Cisco IOS prior to 12.0_3_T by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Cisco IOS prior to 12.0_3_T by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|{#SENSOR_INFO}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1` |AVERAGE | |
+|{#SENSOR_INFO}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS prior to 12.0_3_T by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco IOS prior to 12.0_3_T by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco IOS prior to 12.0_3_T by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/cisco/cisco_snmp/template_net_cisco_snmp.yaml b/templates/net/cisco/cisco_snmp/template_net_cisco_snmp.yaml
index 07a4eaa91fc..3b2ce15d09f 100644
--- a/templates/net/cisco/cisco_snmp/template_net_cisco_snmp.yaml
+++ b/templates/net/cisco/cisco_snmp/template_net_cisco_snmp.yaml
@@ -1,982 +1,15 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:05:02Z'
+ date: '2022-10-27T14:44:38Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
name: 'Templates/Network devices'
templates:
-
- uuid: 1bb42fbdb9054645a62ff81f14ba3b99
- template: 'Cisco IOS prior to 12.0_3_T SNMP'
- name: 'Cisco IOS prior to 12.0_3_T SNMP'
- description: |
- Cisco IOS Software releases prior to 12.0(3)T
-
- MIBs used:
- HOST-RESOURCES-MIB
- SNMPv2-MIB
- OLD-CISCO-CPU-MIB
- CISCO-ENVMON-MIB
- CISCO-MEMORY-POOL-MIB
- ENTITY-MIB
-
- Template tooling version used: 0.42
- groups:
- -
- name: 'Templates/Network devices'
- items:
- -
- uuid: bf6d81068770410a929c127d8e7d76c1
- name: 'ICMP ping'
- type: SIMPLE
- key: icmpping
- history: 1w
- valuemap:
- name: 'Service state'
- tags:
- -
- tag: component
- value: health
- -
- tag: component
- value: network
- triggers:
- -
- uuid: fd317d3e8d3d45bf97322b8578f30c04
- expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/icmpping,#3)=0'
- name: 'Unavailable by ICMP ping'
- priority: HIGH
- description: 'Last three attempts returned timeout. Please check device connectivity.'
- tags:
- -
- tag: scope
- value: availability
- -
- uuid: 2af7b5f79fc44d7d992b0bf6277c12bb
- name: 'ICMP loss'
- type: SIMPLE
- key: icmppingloss
- history: 1w
- value_type: FLOAT
- units: '%'
- tags:
- -
- tag: component
- value: health
- -
- tag: component
- value: network
- triggers:
- -
- uuid: 3576c96601ef40abbeedbde11768141a
- expression: 'min(/Cisco IOS prior to 12.0_3_T SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS prior to 12.0_3_T SNMP/icmppingloss,5m)<100'
- name: 'High ICMP ping loss'
- opdata: 'Loss: {ITEM.LASTVALUE1}'
- priority: WARNING
- dependencies:
- -
- name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/icmpping,#3)=0'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- -
- uuid: 1afa1e8ca21c430598845806bbf0e7a2
- name: 'ICMP response time'
- type: SIMPLE
- key: icmppingsec
- history: 1w
- value_type: FLOAT
- units: s
- tags:
- -
- tag: component
- value: health
- -
- tag: component
- value: network
- triggers:
- -
- uuid: 2941d30058b14d52bd9a723889c8be26
- expression: 'avg(/Cisco IOS prior to 12.0_3_T SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
- name: 'High ICMP ping response time'
- opdata: 'Value: {ITEM.LASTVALUE1}'
- priority: WARNING
- dependencies:
- -
- name: 'High ICMP ping loss'
- expression: 'min(/Cisco IOS prior to 12.0_3_T SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS prior to 12.0_3_T SNMP/icmppingloss,5m)<100'
- -
- name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/icmpping,#3)=0'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- -
- uuid: 53eb0288c9e54490942cedd4ce5f376e
- name: 'SNMP traps (fallback)'
- type: SNMP_TRAP
- key: snmptrap.fallback
- history: 2w
- trends: '0'
- value_type: LOG
- description: 'The item is used to collect all SNMP traps unmatched by other snmptrap items'
- logtimefmt: 'hh:mm:sszyyyy/MM/dd'
- tags:
- -
- tag: component
- value: network
- -
- uuid: bba5be8b3fa54bfbb354b7a2c20fd353
- name: 'System contact details'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.1.4.0
- key: 'system.contact[sysContact.0]'
- delay: 15m
- history: 2w
- trends: '0'
- value_type: CHAR
- description: |
- MIB: SNMPv2-MIB
- The textual identification of the contact person for this managed node, together with information on how to contact this person. If no contact information is known, the value is the zero-length string.
- inventory_link: CONTACT
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 12h
- tags:
- -
- tag: component
- value: system
- -
- uuid: 693b0c779f574d869f47b44c4b3ecd58
- name: 'CPU utilization'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.4.1.9.2.1.58
- key: 'system.cpu.util[avgBusy5]'
- delay: 5m
- history: 7d
- value_type: FLOAT
- units: '%'
- description: |
- MIB: OLD-CISCO-CPU-MIB
- 5 minute exponentially-decayed moving average of the CPU busy percentage.
- Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15215-collect-cpu-util-snmp.html
- tags:
- -
- tag: component
- value: cpu
- triggers:
- -
- uuid: 74773fc279864e7daf89cffe9cb2067c
- expression: 'min(/Cisco IOS prior to 12.0_3_T SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}'
- name: 'High CPU utilization'
- event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
- opdata: 'Current utilization: {ITEM.LASTVALUE1}'
- priority: WARNING
- description: 'CPU utilization is too high. The system might be slow to respond.'
- tags:
- -
- tag: scope
- value: performance
- -
- uuid: 495b26e876a04819a02cf22eaba04e0b
- name: 'System description'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.1.1.0
- key: 'system.descr[sysDescr.0]'
- delay: 15m
- history: 2w
- trends: '0'
- value_type: CHAR
- description: |
- MIB: SNMPv2-MIB
- A textual description of the entity. This value should
- include the full name and version identification of the system's hardware type, software operating-system, and
- networking software.
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 12h
- tags:
- -
- tag: component
- value: system
- -
- uuid: b5121a382d0245f0906bba4530a82ac4
- name: 'Hardware model name'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.47.1.1.1.1.13.1
- key: system.hw.model
- delay: 1h
- history: 2w
- trends: '0'
- value_type: CHAR
- description: 'MIB: ENTITY-MIB'
- inventory_link: MODEL
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 1d
- tags:
- -
- tag: component
- value: system
- -
- uuid: 5934a35b54464f66ab19152ca393b882
- name: 'Hardware serial number'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.47.1.1.1.1.11.1
- key: system.hw.serialnumber
- delay: 1h
- history: 2w
- trends: '0'
- value_type: CHAR
- description: 'MIB: ENTITY-MIB'
- inventory_link: SERIALNO_A
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 1d
- tags:
- -
- tag: component
- value: system
- triggers:
- -
- uuid: d53c0d22a67544cf8a2fcd2c8de4d4eb
- expression: 'last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber))>0'
- name: 'Device has been replaced'
- event_name: 'Device has been replaced (new serial number received)'
- priority: INFO
- description: 'Device serial number has changed. Ack to close'
- manual_close: 'YES'
- tags:
- -
- tag: scope
- value: notice
- -
- uuid: 732ccfd809b44d7fa923c54e6577851d
- name: 'Uptime (hardware)'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.25.1.1.0
- key: 'system.hw.uptime[hrSystemUptime.0]'
- delay: 30s
- history: 2w
- trends: 0d
- units: uptime
- description: |
- MIB: HOST-RESOURCES-MIB
- The amount of time since this host was last initialized. Note that this is different from sysUpTime in the SNMPv2-MIB [RFC1907] because sysUpTime is the uptime of the network management portion of the system.
- preprocessing:
- -
- type: CHECK_NOT_SUPPORTED
- parameters:
- - ''
- error_handler: CUSTOM_VALUE
- error_handler_params: '0'
- -
- type: MULTIPLIER
- parameters:
- - '0.01'
- tags:
- -
- tag: component
- value: system
- -
- uuid: 30df666e80bd4875ac761306781061da
- name: 'System location'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.1.6.0
- key: 'system.location[sysLocation.0]'
- delay: 15m
- history: 2w
- trends: '0'
- value_type: CHAR
- description: |
- MIB: SNMPv2-MIB
- The physical location of this node (e.g., `telephone closet, 3rd floor'). If the location is unknown, the value is the zero-length string.
- inventory_link: LOCATION
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 12h
- tags:
- -
- tag: component
- value: system
- -
- uuid: 2e55e75a7baa4195b012e750bac90dcb
- name: 'System name'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.1.5.0
- key: system.name
- delay: 15m
- history: 2w
- trends: '0'
- value_type: CHAR
- description: |
- MIB: SNMPv2-MIB
- An administratively-assigned name for this managed node.By convention, this is the node's fully-qualified domain name. If the name is unknown, the value is the zero-length string.
- inventory_link: NAME
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 12h
- tags:
- -
- tag: component
- value: system
- triggers:
- -
- uuid: 33b42b1aa448408fa3fb5aadf7375cf8
- expression: 'last(/Cisco IOS prior to 12.0_3_T SNMP/system.name,#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.name,#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.name))>0'
- name: 'System name has changed'
- event_name: 'System name has changed (new name: {ITEM.VALUE})'
- priority: INFO
- description: 'System name has changed. Ack to close.'
- manual_close: 'YES'
- tags:
- -
- tag: scope
- value: notice
- -
- tag: scope
- value: security
- -
- uuid: 7ecd28b73c0f43a98c3a58467b1cbdc7
- name: 'Uptime (network)'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.1.3.0
- key: 'system.net.uptime[sysUpTime.0]'
- delay: 30s
- history: 2w
- trends: 0d
- units: uptime
- description: |
- MIB: SNMPv2-MIB
- The time (in hundredths of a second) since the network management portion of the system was last re-initialized.
- preprocessing:
- -
- type: MULTIPLIER
- parameters:
- - '0.01'
- tags:
- -
- tag: component
- value: system
- -
- uuid: cc6e5a6e4f604b639815d9397264c6af
- name: 'System object ID'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.1.2.0
- key: 'system.objectid[sysObjectID.0]'
- delay: 15m
- history: 2w
- trends: '0'
- value_type: CHAR
- description: |
- MIB: SNMPv2-MIB
- The vendor's authoritative identification of the network management subsystem contained in the entity. This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining`what kind of box' is being managed. For example, if vendor`Flintstones, Inc.' was assigned the subtree1.3.6.1.4.1.4242, it could assign the identifier 1.3.6.1.4.1.4242.1.1 to its `Fred Router'.
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 12h
- tags:
- -
- tag: component
- value: system
- -
- uuid: 70ef7ce7561640b7bc6b5d30235c0ecc
- name: 'Operating system'
- type: SNMP_AGENT
- snmp_oid: 1.3.6.1.2.1.1.1.0
- key: 'system.sw.os[sysDescr.0]'
- delay: 1h
- history: 2w
- trends: '0'
- value_type: CHAR
- description: 'MIB: SNMPv2-MIB'
- inventory_link: OS
- preprocessing:
- -
- type: REGEX
- parameters:
- - 'Version (.+), RELEASE'
- - \1
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 1d
- tags:
- -
- tag: component
- value: os
- triggers:
- -
- uuid: abe57415ff574b878a2ce2a318be86ee
- expression: 'last(/Cisco IOS prior to 12.0_3_T SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.sw.os[sysDescr.0]))>0'
- name: 'Operating system description has changed'
- priority: INFO
- description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
- manual_close: 'YES'
- dependencies:
- -
- name: 'System name has changed'
- expression: 'last(/Cisco IOS prior to 12.0_3_T SNMP/system.name,#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.name,#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.name))>0'
- tags:
- -
- tag: scope
- value: notice
- -
- uuid: 5a156e9ca10c49bbb87cf3de1b686cff
- name: 'SNMP agent availability'
- type: INTERNAL
- key: 'zabbix[host,snmp,available]'
- history: 7d
- description: |
- Availability of SNMP checks on the host. The value of this item corresponds to availability icons in the host list.
- Possible value:
- 0 - not available
- 1 - available
- 2 - unknown
- valuemap:
- name: zabbix.host.available
- tags:
- -
- tag: component
- value: health
- -
- tag: component
- value: network
- triggers:
- -
- uuid: 86d8603903504287b07a25530c8eda2b
- expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
- name: 'No SNMP data collection'
- opdata: 'Current state: {ITEM.LASTVALUE1}'
- priority: WARNING
- description: 'SNMP is not available for polling. Please check device connectivity and SNMP settings.'
- dependencies:
- -
- name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/icmpping,#3)=0'
- tags:
- -
- tag: scope
- value: availability
- discovery_rules:
- -
- uuid: fbeef9c16d9d45b7a5c50f530a697f76
- name: 'Entity Serial Numbers Discovery'
- type: SNMP_AGENT
- snmp_oid: 'discovery[{#ENT_CLASS},1.3.6.1.2.1.47.1.1.1.1.5,{#ENT_NAME},1.3.6.1.2.1.47.1.1.1.1.7,{#ENT_SN},1.3.6.1.2.1.47.1.1.1.1.11]'
- key: entity_sn.discovery
- delay: 1h
- filter:
- evaltype: AND
- conditions:
- -
- macro: '{#ENT_SN}'
- value: .+
- formulaid: B
- -
- macro: '{#ENT_CLASS}'
- value: ^3$
- formulaid: A
- item_prototypes:
- -
- uuid: 1993495d289d407e85c24f4986819ab8
- name: '{#ENT_NAME}: Hardware serial number'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.2.1.47.1.1.1.1.11.{#SNMPINDEX}'
- key: 'system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]'
- delay: 1h
- history: 2w
- trends: '0'
- value_type: CHAR
- description: 'MIB: ENTITY-MIB'
- preprocessing:
- -
- type: DISCARD_UNCHANGED_HEARTBEAT
- parameters:
- - 1d
- tags:
- -
- tag: component
- value: system
- trigger_prototypes:
- -
- uuid: e8c328ad70a146219a8ae62f101cfc00
- expression: 'last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
- name: '{#ENT_NAME}: Device has been replaced'
- event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
- priority: INFO
- description: 'Device serial number has changed. Ack to close'
- manual_close: 'YES'
- tags:
- -
- tag: scope
- value: notice
- -
- uuid: 109cd000cd044e4096bf98dbf57b72d1
- name: 'FAN Discovery'
- type: SNMP_AGENT
- snmp_oid: 'discovery[{#SENSOR_INFO},1.3.6.1.4.1.9.9.13.1.4.1.2]'
- key: fan.discovery
- delay: 1h
- description: 'The table of fan status maintained by the environmental monitor.'
- item_prototypes:
- -
- uuid: 7008cccccf2647918bce95bb0a6193df
- name: '{#SENSOR_INFO}: Fan status'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.13.1.4.1.3.{#SNMPINDEX}'
- key: 'sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}]'
- delay: 3m
- history: 2w
- trends: 0d
- description: 'MIB: CISCO-ENVMON-MIB'
- valuemap:
- name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
- tags:
- -
- tag: component
- value: fan
- trigger_prototypes:
- -
- uuid: ddd7015dd3204514beea29edc45c3cd4
- expression: 'count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
- name: '{#SENSOR_INFO}: Fan is in critical state'
- opdata: 'Current state: {ITEM.LASTVALUE1}'
- priority: AVERAGE
- description: 'Please check the fan unit'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- -
- uuid: 4eb7ea3405d74740a12095a07d91d48f
- expression: 'count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
- name: '{#SENSOR_INFO}: Fan is in warning state'
- opdata: 'Current state: {ITEM.LASTVALUE1}'
- priority: WARNING
- description: 'Please check the fan unit'
- dependencies:
- -
- name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- -
- uuid: 727adcf658d141ff9e45744107a58c38
- name: 'Memory Discovery'
- type: SNMP_AGENT
- snmp_oid: 'discovery[{#SNMPVALUE},1.3.6.1.4.1.9.9.48.1.1.1.2]'
- key: memory.discovery
- delay: 1h
- description: |
- Discovery of ciscoMemoryPoolTable, a table of memory pool monitoring entries.
- http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15216-contiguous-memory.html
- item_prototypes:
- -
- uuid: e0df9d6e31384da4af18ab191e467814
- name: '{#SNMPVALUE}: Free memory'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.48.1.1.1.6.{#SNMPINDEX}'
- key: 'vm.memory.free[ciscoMemoryPoolFree.{#SNMPINDEX}]'
- history: 7d
- units: B
- description: |
- MIB: CISCO-MEMORY-POOL-MIB
- Indicates the number of bytes from the memory pool that are currently unused on the managed device. Note that the sum of ciscoMemoryPoolUsed and ciscoMemoryPoolFree is the total amount of memory in the pool
- Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15216-contiguous-memory.html
- tags:
- -
- tag: component
- value: memory
- -
- uuid: 25471f4acc4348bf978792fcfaff6acc
- name: '{#SNMPVALUE}: Used memory'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.48.1.1.1.5.{#SNMPINDEX}'
- key: 'vm.memory.used[ciscoMemoryPoolUsed.{#SNMPINDEX}]'
- history: 7d
- units: B
- description: |
- MIB: CISCO-MEMORY-POOL-MIB
- Indicates the number of bytes from the memory pool that are currently in use by applications on the managed device.
- Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15216-contiguous-memory.html
- tags:
- -
- tag: component
- value: memory
- -
- uuid: 9a03c1b1c6ae42e5ab1886c172b2e3ac
- name: '{#SNMPVALUE}: Memory utilization'
- type: CALCULATED
- key: 'vm.memory.util[vm.memory.util.{#SNMPINDEX}]'
- history: 7d
- value_type: FLOAT
- units: '%'
- params: 'last(//vm.memory.used[ciscoMemoryPoolUsed.{#SNMPINDEX}])/(last(//vm.memory.free[ciscoMemoryPoolFree.{#SNMPINDEX}])+last(//vm.memory.used[ciscoMemoryPoolUsed.{#SNMPINDEX}]))*100'
- description: 'Memory utilization in %.'
- tags:
- -
- tag: component
- value: memory
- trigger_prototypes:
- -
- uuid: 8793ba7767cc415a80a6a206aaf01f11
- expression: 'min(/Cisco IOS prior to 12.0_3_T SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
- name: '{#SNMPVALUE}: High memory utilization'
- event_name: '{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
- priority: AVERAGE
- description: 'The system is running out of free memory.'
- tags:
- -
- tag: scope
- value: capacity
- -
- tag: scope
- value: performance
- graph_prototypes:
- -
- uuid: dd0520d162fe4230900d33472944677f
- name: '{#SNMPVALUE}: Memory utilization'
- ymin_type_1: FIXED
- ymax_type_1: FIXED
- graph_items:
- -
- drawtype: GRADIENT_LINE
- color: 1A7C11
- item:
- host: 'Cisco IOS prior to 12.0_3_T SNMP'
- key: 'vm.memory.util[vm.memory.util.{#SNMPINDEX}]'
- -
- uuid: 5e67e9c84ac54dea866893207a42d3e3
- name: 'PSU Discovery'
- type: SNMP_AGENT
- snmp_oid: 'discovery[{#SENSOR_INFO},1.3.6.1.4.1.9.9.13.1.5.1.2]'
- key: psu.discovery
- delay: 1h
- description: 'The table of power supply status maintained by the environmental monitor card.'
- item_prototypes:
- -
- uuid: d05d99a68e3540d09d64b8bab5d63004
- name: '{#SENSOR_INFO}: Power supply status'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.13.1.5.1.3.{#SNMPINDEX}'
- key: 'sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}]'
- delay: 3m
- history: 2w
- trends: 0d
- description: 'MIB: CISCO-ENVMON-MIB'
- valuemap:
- name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
- tags:
- -
- tag: component
- value: power
- trigger_prototypes:
- -
- uuid: fc4b6f155d3646c3bb8b27d35c18604b
- expression: 'count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
- name: '{#SENSOR_INFO}: Power supply is in critical state'
- opdata: 'Current state: {ITEM.LASTVALUE1}'
- priority: AVERAGE
- description: 'Please check the power supply unit for errors'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- -
- uuid: 58e9514d75f84c989b052cfd76ceed4a
- expression: 'count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
- name: '{#SENSOR_INFO}: Power supply is in warning state'
- opdata: 'Current state: {ITEM.LASTVALUE1}'
- priority: WARNING
- description: 'Please check the power supply unit for errors'
- dependencies:
- -
- name: '{#SENSOR_INFO}: Power supply is in critical state'
- expression: 'count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- -
- uuid: 73d10f48886443248f7d2d9167fcfee5
- name: 'Temperature Discovery'
- type: SNMP_AGENT
- snmp_oid: 'discovery[{#SNMPVALUE},1.3.6.1.4.1.9.9.13.1.3.1.2]'
- key: temperature.discovery
- delay: 1h
- description: |
- Discovery of ciscoEnvMonTemperatureTable (ciscoEnvMonTemperatureDescr), a table of ambient temperature status
- maintained by the environmental monitor.
- item_prototypes:
- -
- uuid: a12075ae5b834eeeb742fed6f7afc39d
- name: '{#SNMPVALUE}: Temperature status'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.13.1.3.1.6.{#SNMPINDEX}'
- key: 'sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}]'
- delay: 3m
- history: 2w
- trends: 0d
- description: |
- MIB: CISCO-ENVMON-MIB
- The current state of the test point being instrumented.
- valuemap:
- name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
- tags:
- -
- tag: component
- value: temperature
- -
- uuid: ea0d56dd49104257ba6c14ce3bdb753a
- name: '{#SNMPVALUE}: Temperature'
- type: SNMP_AGENT
- snmp_oid: '1.3.6.1.4.1.9.9.13.1.3.1.3.{#SNMPINDEX}'
- key: 'sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}]'
- delay: 3m
- value_type: FLOAT
- units: °C
- description: |
- MIB: CISCO-ENVMON-MIB
- The current measurement of the test point being instrumented.
- tags:
- -
- tag: component
- value: temperature
- trigger_prototypes:
- -
- uuid: 716dee103c9f4e9da5f83d6cc338617d
- expression: 'avg(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
- recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
- name: '{#SNMPVALUE}: Temperature is too low'
- event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
- opdata: 'Current value: {ITEM.LASTVALUE1}'
- priority: AVERAGE
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- trigger_prototypes:
- -
- uuid: 82fa9473dc7d49d4a3a230ef6238cd2c
- expression: |
- avg(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
- or
- last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
- or
- last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
- recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
- name: '{#SNMPVALUE}: Temperature is above critical threshold'
- event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
- opdata: 'Current value: {ITEM.LASTVALUE1}'
- priority: HIGH
- description: 'This trigger uses temperature sensor values as well as temperature sensor status if available'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- -
- uuid: a0199088767f43c0990f5ac8793267b1
- expression: |
- avg(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
- or
- last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
- recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
- name: '{#SNMPVALUE}: Temperature is above warning threshold'
- event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
- opdata: 'Current value: {ITEM.LASTVALUE1}'
- priority: WARNING
- description: 'This trigger uses temperature sensor values as well as temperature sensor status if available'
- dependencies:
- -
- name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: |
- avg(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
- or
- last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
- or
- last(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
- recovery_expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
- tags:
- -
- tag: scope
- value: availability
- -
- tag: scope
- value: performance
- tags:
- -
- tag: class
- value: network
- -
- tag: target
- value: cisco
- -
- tag: target
- value: cisco-prior
- -
- tag: target
- value: cisco-prior-12.0-3-t
- macros:
- -
- macro: '{$CPU.UTIL.CRIT}'
- value: '90'
- -
- macro: '{$FAN_CRIT_STATUS:"critical"}'
- value: '3'
- -
- macro: '{$FAN_CRIT_STATUS:"shutdown"}'
- value: '4'
- -
- macro: '{$FAN_WARN_STATUS:"notFunctioning"}'
- value: '6'
- -
- macro: '{$FAN_WARN_STATUS:"warning"}'
- value: '2'
- -
- macro: '{$ICMP_LOSS_WARN}'
- value: '20'
- -
- macro: '{$ICMP_RESPONSE_TIME_WARN}'
- value: '0.15'
- -
- macro: '{$MEMORY.UTIL.MAX}'
- value: '90'
- -
- macro: '{$PSU_CRIT_STATUS:"critical"}'
- value: '3'
- -
- macro: '{$PSU_CRIT_STATUS:"shutdown"}'
- value: '4'
- -
- macro: '{$PSU_WARN_STATUS:"notFunctioning"}'
- value: '6'
- -
- macro: '{$PSU_WARN_STATUS:"warning"}'
- value: '2'
- -
- macro: '{$SNMP.TIMEOUT}'
- value: 5m
- -
- macro: '{$TEMP_CRIT}'
- value: '60'
- -
- macro: '{$TEMP_CRIT:"CPU"}'
- value: '75'
- -
- macro: '{$TEMP_CRIT_LOW}'
- value: '5'
- -
- macro: '{$TEMP_CRIT_STATUS}'
- value: '3'
- -
- macro: '{$TEMP_DISASTER_STATUS}'
- value: '4'
- -
- macro: '{$TEMP_WARN}'
- value: '50'
- -
- macro: '{$TEMP_WARN:"CPU"}'
- value: '70'
- -
- macro: '{$TEMP_WARN_STATUS}'
- value: '2'
- valuemaps:
- -
- uuid: 0e5588b6aa714283b436031ff8ebc93a
- name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
- mappings:
- -
- value: '1'
- newvalue: normal
- -
- value: '2'
- newvalue: warning
- -
- value: '3'
- newvalue: critical
- -
- value: '4'
- newvalue: shutdown
- -
- value: '5'
- newvalue: notPresent
- -
- value: '6'
- newvalue: notFunctioning
- -
- uuid: 9fc9d3c2eb254de996d9c4a61ba58671
- name: 'Service state'
- mappings:
- -
- value: '0'
- newvalue: Down
- -
- value: '1'
- newvalue: Up
- -
- uuid: bb13061dd5b542f9b0f5921e75866679
- name: zabbix.host.available
- mappings:
- -
- value: '0'
- newvalue: 'not available'
- -
- value: '1'
- newvalue: available
- -
- value: '2'
- newvalue: unknown
- -
uuid: aa3ce9bd8c1d40a2b0f83f9e642e88ee
- template: 'Cisco IOS SNMP'
- name: 'Cisco IOS SNMP'
+ template: 'Cisco IOS by SNMP'
+ name: 'Cisco IOS by SNMP'
description: |
Template Cisco IOS Software releases 12.2(3.5) or later
@@ -1019,7 +52,7 @@ zabbix_export:
triggers:
-
uuid: 77e52d690bc043e389ad8d705dbb86b9
- expression: 'max(/Cisco IOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -1045,14 +78,14 @@ zabbix_export:
triggers:
-
uuid: 62b3c0a2654f4372a1bad40a0fd2898d
- expression: 'min(/Cisco IOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco IOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -1078,17 +111,17 @@ zabbix_export:
triggers:
-
uuid: 1ba34b5e344147d5b27431906037bc04
- expression: 'avg(/Cisco IOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco IOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco IOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco IOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -1202,7 +235,7 @@ zabbix_export:
triggers:
-
uuid: 7d1460eaf7ad46fd8a1b5df3c20051ba
- expression: 'last(/Cisco IOS SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco IOS by SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -1289,7 +322,7 @@ zabbix_export:
triggers:
-
uuid: 2105744d4efd4a239c5b6ab615746a40
- expression: 'last(/Cisco IOS SNMP/system.name,#1)<>last(/Cisco IOS SNMP/system.name,#2) and length(last(/Cisco IOS SNMP/system.name))>0'
+ expression: 'last(/Cisco IOS by SNMP/system.name,#1)<>last(/Cisco IOS by SNMP/system.name,#2) and length(last(/Cisco IOS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -1375,7 +408,7 @@ zabbix_export:
triggers:
-
uuid: 2d97173405594074bfe2cc6f3d0cae70
- expression: 'last(/Cisco IOS SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS SNMP/system.sw.os[sysDescr.0]))>0'
+ expression: 'last(/Cisco IOS by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS by SNMP/system.sw.os[sysDescr.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -1383,7 +416,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Cisco IOS SNMP/system.name,#1)<>last(/Cisco IOS SNMP/system.name,#2) and length(last(/Cisco IOS SNMP/system.name))>0'
+ expression: 'last(/Cisco IOS by SNMP/system.name,#1)<>last(/Cisco IOS by SNMP/system.name,#2) and length(last(/Cisco IOS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -1412,7 +445,7 @@ zabbix_export:
triggers:
-
uuid: df7c9ed5d3164e73a792f82ecad6ba13
- expression: 'max(/Cisco IOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco IOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1420,7 +453,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -1461,7 +494,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 89b292f6748f49fa8b0f23f5378944b2
- expression: 'min(/Cisco IOS SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco IOS by SNMP/system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -1482,7 +515,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'system.cpu.util[cpmCPUTotal5minRev.{#SNMPINDEX}]'
-
uuid: e8c57e436eed4958a0a83c7afd6a07e3
@@ -1526,7 +559,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e5477e6803974060ba3ce8a131d97d40
- expression: 'last(/Cisco IOS SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco IOS by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -1564,7 +597,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e64b0790509c4a21b7ead959fa1b7951
- expression: 'count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
name: '{#SENSOR_INFO}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1578,7 +611,7 @@ zabbix_export:
value: performance
-
uuid: 33207a0c65e14a5d9355690c8d9d54e2
- expression: 'count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
+ expression: 'count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
name: '{#SENSOR_INFO}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1586,7 +619,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
tags:
-
tag: scope
@@ -1654,7 +687,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ee300a1f9f644bdbb545bd65d59d4837
- expression: 'min(/Cisco IOS SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco IOS by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -1677,7 +710,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'vm.memory.util[vm.memory.util.{#SNMPINDEX}]'
-
uuid: b416fb001e46464f847578a50451164b
@@ -1983,9 +1016,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6bf13b6cac1b438bbfe384a746646597
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2036,21 +1069,21 @@ zabbix_export:
-
uuid: 3783d41e790f4d1e9ebb7340d82edc1f
expression: |
- change(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Cisco IOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Cisco IOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2059,8 +1092,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -2068,13 +1101,13 @@ zabbix_export:
-
uuid: 17a07d8b87c04874bfbf12009e1da65f
expression: |
- (avg(/Cisco IOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Cisco IOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Cisco IOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Cisco IOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Cisco IOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Cisco IOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Cisco IOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Cisco IOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -2084,8 +1117,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -2093,12 +1126,12 @@ zabbix_export:
-
uuid: 0c1c6f8fc17849a68a12813389da6373
expression: |
- min(/Cisco IOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Cisco IOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Cisco IOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Cisco IOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Cisco IOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Cisco IOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Cisco IOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Cisco IOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -2108,8 +1141,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Cisco IOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Cisco IOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -2126,42 +1159,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: d79d3a6026bd4d1f877fc164a3eb7f84
@@ -2231,7 +1264,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 251a80d2f6824e33b8edfca94e0f335d
- expression: 'last(/Cisco IOS SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Cisco IOS by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -2286,7 +1319,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3068fc8f0b0749d4b76d97d7f500e36d
- expression: 'count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
name: '{#SENSOR_INFO}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2300,7 +1333,7 @@ zabbix_export:
value: performance
-
uuid: 194444afb5d143a0a0734120e26066e4
- expression: 'count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
+ expression: 'count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
name: '{#SENSOR_INFO}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2308,7 +1341,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Power supply is in critical state'
- expression: 'count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
tags:
-
tag: scope
@@ -2364,9 +1397,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 64888770ef6a44089593e78d4d2c528d
- expression: 'avg(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2382,13 +1415,13 @@ zabbix_export:
-
uuid: 95f562a5b2fb4e17b091eaed07c77d4a
expression: |
- avg(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2404,11 +1437,11 @@ zabbix_export:
-
uuid: 5809893fb23a452ebad327c595322619
expression: |
- avg(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
+ avg(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
or
- last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2418,12 +1451,12 @@ zabbix_export:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
expression: |
- avg(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Cisco IOS SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
- recovery_expression: 'max(/Cisco IOS SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ last(/Cisco IOS by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ recovery_expression: 'max(/Cisco IOS by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -2582,7 +1615,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Cisco IOS SNMP'
+ host: 'Cisco IOS by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -3528,9 +2561,976 @@ zabbix_export:
value: '2'
newvalue: unknown
-
+ uuid: 1bb42fbdb9054645a62ff81f14ba3b99
+ template: 'Cisco IOS prior to 12.0_3_T by SNMP'
+ name: 'Cisco IOS prior to 12.0_3_T by SNMP'
+ description: |
+ Cisco IOS Software releases prior to 12.0(3)T
+
+ MIBs used:
+ HOST-RESOURCES-MIB
+ SNMPv2-MIB
+ OLD-CISCO-CPU-MIB
+ CISCO-ENVMON-MIB
+ CISCO-MEMORY-POOL-MIB
+ ENTITY-MIB
+
+ Template tooling version used: 0.42
+ groups:
+ -
+ name: 'Templates/Network devices'
+ items:
+ -
+ uuid: bf6d81068770410a929c127d8e7d76c1
+ name: 'ICMP ping'
+ type: SIMPLE
+ key: icmpping
+ history: 1w
+ valuemap:
+ name: 'Service state'
+ tags:
+ -
+ tag: component
+ value: health
+ -
+ tag: component
+ value: network
+ triggers:
+ -
+ uuid: fd317d3e8d3d45bf97322b8578f30c04
+ expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/icmpping,#3)=0'
+ name: 'Unavailable by ICMP ping'
+ priority: HIGH
+ description: 'Last three attempts returned timeout. Please check device connectivity.'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ uuid: 2af7b5f79fc44d7d992b0bf6277c12bb
+ name: 'ICMP loss'
+ type: SIMPLE
+ key: icmppingloss
+ history: 1w
+ value_type: FLOAT
+ units: '%'
+ tags:
+ -
+ tag: component
+ value: health
+ -
+ tag: component
+ value: network
+ triggers:
+ -
+ uuid: 3576c96601ef40abbeedbde11768141a
+ expression: 'min(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingloss,5m)<100'
+ name: 'High ICMP ping loss'
+ opdata: 'Loss: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ dependencies:
+ -
+ name: 'Unavailable by ICMP ping'
+ expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/icmpping,#3)=0'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 1afa1e8ca21c430598845806bbf0e7a2
+ name: 'ICMP response time'
+ type: SIMPLE
+ key: icmppingsec
+ history: 1w
+ value_type: FLOAT
+ units: s
+ tags:
+ -
+ tag: component
+ value: health
+ -
+ tag: component
+ value: network
+ triggers:
+ -
+ uuid: 2941d30058b14d52bd9a723889c8be26
+ expression: 'avg(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ name: 'High ICMP ping response time'
+ opdata: 'Value: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ dependencies:
+ -
+ name: 'High ICMP ping loss'
+ expression: 'min(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS prior to 12.0_3_T by SNMP/icmppingloss,5m)<100'
+ -
+ name: 'Unavailable by ICMP ping'
+ expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/icmpping,#3)=0'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 53eb0288c9e54490942cedd4ce5f376e
+ name: 'SNMP traps (fallback)'
+ type: SNMP_TRAP
+ key: snmptrap.fallback
+ history: 2w
+ trends: '0'
+ value_type: LOG
+ description: 'The item is used to collect all SNMP traps unmatched by other snmptrap items'
+ logtimefmt: 'hh:mm:sszyyyy/MM/dd'
+ tags:
+ -
+ tag: component
+ value: network
+ -
+ uuid: bba5be8b3fa54bfbb354b7a2c20fd353
+ name: 'System contact details'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.1.4.0
+ key: 'system.contact[sysContact.0]'
+ delay: 15m
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: |
+ MIB: SNMPv2-MIB
+ The textual identification of the contact person for this managed node, together with information on how to contact this person. If no contact information is known, the value is the zero-length string.
+ inventory_link: CONTACT
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 12h
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ uuid: 693b0c779f574d869f47b44c4b3ecd58
+ name: 'CPU utilization'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.4.1.9.2.1.58
+ key: 'system.cpu.util[avgBusy5]'
+ delay: 5m
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ description: |
+ MIB: OLD-CISCO-CPU-MIB
+ 5 minute exponentially-decayed moving average of the CPU busy percentage.
+ Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15215-collect-cpu-util-snmp.html
+ tags:
+ -
+ tag: component
+ value: cpu
+ triggers:
+ -
+ uuid: 74773fc279864e7daf89cffe9cb2067c
+ expression: 'min(/Cisco IOS prior to 12.0_3_T by SNMP/system.cpu.util[avgBusy5],5m)>{$CPU.UTIL.CRIT}'
+ name: 'High CPU utilization'
+ event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
+ opdata: 'Current utilization: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'CPU utilization is too high. The system might be slow to respond.'
+ tags:
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 495b26e876a04819a02cf22eaba04e0b
+ name: 'System description'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.1.1.0
+ key: 'system.descr[sysDescr.0]'
+ delay: 15m
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: |
+ MIB: SNMPv2-MIB
+ A textual description of the entity. This value should
+ include the full name and version identification of the system's hardware type, software operating-system, and
+ networking software.
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 12h
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ uuid: b5121a382d0245f0906bba4530a82ac4
+ name: 'Hardware model name'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.47.1.1.1.1.13.1
+ key: system.hw.model
+ delay: 1h
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: 'MIB: ENTITY-MIB'
+ inventory_link: MODEL
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1d
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ uuid: 5934a35b54464f66ab19152ca393b882
+ name: 'Hardware serial number'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.47.1.1.1.1.11.1
+ key: system.hw.serialnumber
+ delay: 1h
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: 'MIB: ENTITY-MIB'
+ inventory_link: SERIALNO_A
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1d
+ tags:
+ -
+ tag: component
+ value: system
+ triggers:
+ -
+ uuid: d53c0d22a67544cf8a2fcd2c8de4d4eb
+ expression: 'last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber))>0'
+ name: 'Device has been replaced'
+ event_name: 'Device has been replaced (new serial number received)'
+ priority: INFO
+ description: 'Device serial number has changed. Ack to close'
+ manual_close: 'YES'
+ tags:
+ -
+ tag: scope
+ value: notice
+ -
+ uuid: 732ccfd809b44d7fa923c54e6577851d
+ name: 'Uptime (hardware)'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.25.1.1.0
+ key: 'system.hw.uptime[hrSystemUptime.0]'
+ delay: 30s
+ history: 2w
+ trends: 0d
+ units: uptime
+ description: |
+ MIB: HOST-RESOURCES-MIB
+ The amount of time since this host was last initialized. Note that this is different from sysUpTime in the SNMPv2-MIB [RFC1907] because sysUpTime is the uptime of the network management portion of the system.
+ preprocessing:
+ -
+ type: CHECK_NOT_SUPPORTED
+ parameters:
+ - ''
+ error_handler: CUSTOM_VALUE
+ error_handler_params: '0'
+ -
+ type: MULTIPLIER
+ parameters:
+ - '0.01'
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ uuid: 30df666e80bd4875ac761306781061da
+ name: 'System location'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.1.6.0
+ key: 'system.location[sysLocation.0]'
+ delay: 15m
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: |
+ MIB: SNMPv2-MIB
+ The physical location of this node (e.g., `telephone closet, 3rd floor'). If the location is unknown, the value is the zero-length string.
+ inventory_link: LOCATION
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 12h
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ uuid: 2e55e75a7baa4195b012e750bac90dcb
+ name: 'System name'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.1.5.0
+ key: system.name
+ delay: 15m
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: |
+ MIB: SNMPv2-MIB
+ An administratively-assigned name for this managed node.By convention, this is the node's fully-qualified domain name. If the name is unknown, the value is the zero-length string.
+ inventory_link: NAME
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 12h
+ tags:
+ -
+ tag: component
+ value: system
+ triggers:
+ -
+ uuid: 33b42b1aa448408fa3fb5aadf7375cf8
+ expression: 'last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name,#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name,#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name))>0'
+ name: 'System name has changed'
+ event_name: 'System name has changed (new name: {ITEM.VALUE})'
+ priority: INFO
+ description: 'System name has changed. Ack to close.'
+ manual_close: 'YES'
+ tags:
+ -
+ tag: scope
+ value: notice
+ -
+ tag: scope
+ value: security
+ -
+ uuid: 7ecd28b73c0f43a98c3a58467b1cbdc7
+ name: 'Uptime (network)'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.1.3.0
+ key: 'system.net.uptime[sysUpTime.0]'
+ delay: 30s
+ history: 2w
+ trends: 0d
+ units: uptime
+ description: |
+ MIB: SNMPv2-MIB
+ The time (in hundredths of a second) since the network management portion of the system was last re-initialized.
+ preprocessing:
+ -
+ type: MULTIPLIER
+ parameters:
+ - '0.01'
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ uuid: cc6e5a6e4f604b639815d9397264c6af
+ name: 'System object ID'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.1.2.0
+ key: 'system.objectid[sysObjectID.0]'
+ delay: 15m
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: |
+ MIB: SNMPv2-MIB
+ The vendor's authoritative identification of the network management subsystem contained in the entity. This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining`what kind of box' is being managed. For example, if vendor`Flintstones, Inc.' was assigned the subtree1.3.6.1.4.1.4242, it could assign the identifier 1.3.6.1.4.1.4242.1.1 to its `Fred Router'.
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 12h
+ tags:
+ -
+ tag: component
+ value: system
+ -
+ uuid: 70ef7ce7561640b7bc6b5d30235c0ecc
+ name: 'Operating system'
+ type: SNMP_AGENT
+ snmp_oid: 1.3.6.1.2.1.1.1.0
+ key: 'system.sw.os[sysDescr.0]'
+ delay: 1h
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: 'MIB: SNMPv2-MIB'
+ inventory_link: OS
+ preprocessing:
+ -
+ type: REGEX
+ parameters:
+ - 'Version (.+), RELEASE'
+ - \1
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1d
+ tags:
+ -
+ tag: component
+ value: os
+ triggers:
+ -
+ uuid: abe57415ff574b878a2ce2a318be86ee
+ expression: 'last(/Cisco IOS prior to 12.0_3_T by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.sw.os[sysDescr.0]))>0'
+ name: 'Operating system description has changed'
+ priority: INFO
+ description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
+ manual_close: 'YES'
+ dependencies:
+ -
+ name: 'System name has changed'
+ expression: 'last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name,#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name,#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.name))>0'
+ tags:
+ -
+ tag: scope
+ value: notice
+ -
+ uuid: 5a156e9ca10c49bbb87cf3de1b686cff
+ name: 'SNMP agent availability'
+ type: INTERNAL
+ key: 'zabbix[host,snmp,available]'
+ history: 7d
+ description: |
+ Availability of SNMP checks on the host. The value of this item corresponds to availability icons in the host list.
+ Possible value:
+ 0 - not available
+ 1 - available
+ 2 - unknown
+ valuemap:
+ name: zabbix.host.available
+ tags:
+ -
+ tag: component
+ value: health
+ -
+ tag: component
+ value: network
+ triggers:
+ -
+ uuid: 86d8603903504287b07a25530c8eda2b
+ expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ name: 'No SNMP data collection'
+ opdata: 'Current state: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'SNMP is not available for polling. Please check device connectivity and SNMP settings.'
+ dependencies:
+ -
+ name: 'Unavailable by ICMP ping'
+ expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/icmpping,#3)=0'
+ tags:
+ -
+ tag: scope
+ value: availability
+ discovery_rules:
+ -
+ uuid: fbeef9c16d9d45b7a5c50f530a697f76
+ name: 'Entity Serial Numbers Discovery'
+ type: SNMP_AGENT
+ snmp_oid: 'discovery[{#ENT_CLASS},1.3.6.1.2.1.47.1.1.1.1.5,{#ENT_NAME},1.3.6.1.2.1.47.1.1.1.1.7,{#ENT_SN},1.3.6.1.2.1.47.1.1.1.1.11]'
+ key: entity_sn.discovery
+ delay: 1h
+ filter:
+ evaltype: AND
+ conditions:
+ -
+ macro: '{#ENT_SN}'
+ value: .+
+ formulaid: B
+ -
+ macro: '{#ENT_CLASS}'
+ value: ^3$
+ formulaid: A
+ item_prototypes:
+ -
+ uuid: 1993495d289d407e85c24f4986819ab8
+ name: '{#ENT_NAME}: Hardware serial number'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.2.1.47.1.1.1.1.11.{#SNMPINDEX}'
+ key: 'system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]'
+ delay: 1h
+ history: 2w
+ trends: '0'
+ value_type: CHAR
+ description: 'MIB: ENTITY-MIB'
+ preprocessing:
+ -
+ type: DISCARD_UNCHANGED_HEARTBEAT
+ parameters:
+ - 1d
+ tags:
+ -
+ tag: component
+ value: system
+ trigger_prototypes:
+ -
+ uuid: e8c328ad70a146219a8ae62f101cfc00
+ expression: 'last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ name: '{#ENT_NAME}: Device has been replaced'
+ event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
+ priority: INFO
+ description: 'Device serial number has changed. Ack to close'
+ manual_close: 'YES'
+ tags:
+ -
+ tag: scope
+ value: notice
+ -
+ uuid: 109cd000cd044e4096bf98dbf57b72d1
+ name: 'FAN Discovery'
+ type: SNMP_AGENT
+ snmp_oid: 'discovery[{#SENSOR_INFO},1.3.6.1.4.1.9.9.13.1.4.1.2]'
+ key: fan.discovery
+ delay: 1h
+ description: 'The table of fan status maintained by the environmental monitor.'
+ item_prototypes:
+ -
+ uuid: 7008cccccf2647918bce95bb0a6193df
+ name: '{#SENSOR_INFO}: Fan status'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.4.1.9.9.13.1.4.1.3.{#SNMPINDEX}'
+ key: 'sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}]'
+ delay: 3m
+ history: 2w
+ trends: 0d
+ description: 'MIB: CISCO-ENVMON-MIB'
+ valuemap:
+ name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
+ tags:
+ -
+ tag: component
+ value: fan
+ trigger_prototypes:
+ -
+ uuid: ddd7015dd3204514beea29edc45c3cd4
+ expression: 'count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ name: '{#SENSOR_INFO}: Fan is in critical state'
+ opdata: 'Current state: {ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'Please check the fan unit'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 4eb7ea3405d74740a12095a07d91d48f
+ expression: 'count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
+ name: '{#SENSOR_INFO}: Fan is in warning state'
+ opdata: 'Current state: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'Please check the fan unit'
+ dependencies:
+ -
+ name: '{#SENSOR_INFO}: Fan is in critical state'
+ expression: 'count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 727adcf658d141ff9e45744107a58c38
+ name: 'Memory Discovery'
+ type: SNMP_AGENT
+ snmp_oid: 'discovery[{#SNMPVALUE},1.3.6.1.4.1.9.9.48.1.1.1.2]'
+ key: memory.discovery
+ delay: 1h
+ description: |
+ Discovery of ciscoMemoryPoolTable, a table of memory pool monitoring entries.
+ http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15216-contiguous-memory.html
+ item_prototypes:
+ -
+ uuid: e0df9d6e31384da4af18ab191e467814
+ name: '{#SNMPVALUE}: Free memory'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.4.1.9.9.48.1.1.1.6.{#SNMPINDEX}'
+ key: 'vm.memory.free[ciscoMemoryPoolFree.{#SNMPINDEX}]'
+ history: 7d
+ units: B
+ description: |
+ MIB: CISCO-MEMORY-POOL-MIB
+ Indicates the number of bytes from the memory pool that are currently unused on the managed device. Note that the sum of ciscoMemoryPoolUsed and ciscoMemoryPoolFree is the total amount of memory in the pool
+ Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15216-contiguous-memory.html
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ uuid: 25471f4acc4348bf978792fcfaff6acc
+ name: '{#SNMPVALUE}: Used memory'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.4.1.9.9.48.1.1.1.5.{#SNMPINDEX}'
+ key: 'vm.memory.used[ciscoMemoryPoolUsed.{#SNMPINDEX}]'
+ history: 7d
+ units: B
+ description: |
+ MIB: CISCO-MEMORY-POOL-MIB
+ Indicates the number of bytes from the memory pool that are currently in use by applications on the managed device.
+ Reference: http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/15216-contiguous-memory.html
+ tags:
+ -
+ tag: component
+ value: memory
+ -
+ uuid: 9a03c1b1c6ae42e5ab1886c172b2e3ac
+ name: '{#SNMPVALUE}: Memory utilization'
+ type: CALCULATED
+ key: 'vm.memory.util[vm.memory.util.{#SNMPINDEX}]'
+ history: 7d
+ value_type: FLOAT
+ units: '%'
+ params: 'last(//vm.memory.used[ciscoMemoryPoolUsed.{#SNMPINDEX}])/(last(//vm.memory.free[ciscoMemoryPoolFree.{#SNMPINDEX}])+last(//vm.memory.used[ciscoMemoryPoolUsed.{#SNMPINDEX}]))*100'
+ description: 'Memory utilization in %.'
+ tags:
+ -
+ tag: component
+ value: memory
+ trigger_prototypes:
+ -
+ uuid: 8793ba7767cc415a80a6a206aaf01f11
+ expression: 'min(/Cisco IOS prior to 12.0_3_T by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ name: '{#SNMPVALUE}: High memory utilization'
+ event_name: '{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
+ priority: AVERAGE
+ description: 'The system is running out of free memory.'
+ tags:
+ -
+ tag: scope
+ value: capacity
+ -
+ tag: scope
+ value: performance
+ graph_prototypes:
+ -
+ uuid: dd0520d162fe4230900d33472944677f
+ name: '{#SNMPVALUE}: Memory utilization'
+ ymin_type_1: FIXED
+ ymax_type_1: FIXED
+ graph_items:
+ -
+ drawtype: GRADIENT_LINE
+ color: 1A7C11
+ item:
+ host: 'Cisco IOS prior to 12.0_3_T by SNMP'
+ key: 'vm.memory.util[vm.memory.util.{#SNMPINDEX}]'
+ -
+ uuid: 5e67e9c84ac54dea866893207a42d3e3
+ name: 'PSU Discovery'
+ type: SNMP_AGENT
+ snmp_oid: 'discovery[{#SENSOR_INFO},1.3.6.1.4.1.9.9.13.1.5.1.2]'
+ key: psu.discovery
+ delay: 1h
+ description: 'The table of power supply status maintained by the environmental monitor card.'
+ item_prototypes:
+ -
+ uuid: d05d99a68e3540d09d64b8bab5d63004
+ name: '{#SENSOR_INFO}: Power supply status'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.4.1.9.9.13.1.5.1.3.{#SNMPINDEX}'
+ key: 'sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}]'
+ delay: 3m
+ history: 2w
+ trends: 0d
+ description: 'MIB: CISCO-ENVMON-MIB'
+ valuemap:
+ name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
+ tags:
+ -
+ tag: component
+ value: power
+ trigger_prototypes:
+ -
+ uuid: fc4b6f155d3646c3bb8b27d35c18604b
+ expression: 'count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ name: '{#SENSOR_INFO}: Power supply is in critical state'
+ opdata: 'Current state: {ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ description: 'Please check the power supply unit for errors'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 58e9514d75f84c989b052cfd76ceed4a
+ expression: 'count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
+ name: '{#SENSOR_INFO}: Power supply is in warning state'
+ opdata: 'Current state: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'Please check the power supply unit for errors'
+ dependencies:
+ -
+ name: '{#SENSOR_INFO}: Power supply is in critical state'
+ expression: 'count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: 73d10f48886443248f7d2d9167fcfee5
+ name: 'Temperature Discovery'
+ type: SNMP_AGENT
+ snmp_oid: 'discovery[{#SNMPVALUE},1.3.6.1.4.1.9.9.13.1.3.1.2]'
+ key: temperature.discovery
+ delay: 1h
+ description: |
+ Discovery of ciscoEnvMonTemperatureTable (ciscoEnvMonTemperatureDescr), a table of ambient temperature status
+ maintained by the environmental monitor.
+ item_prototypes:
+ -
+ uuid: a12075ae5b834eeeb742fed6f7afc39d
+ name: '{#SNMPVALUE}: Temperature status'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.4.1.9.9.13.1.3.1.6.{#SNMPINDEX}'
+ key: 'sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}]'
+ delay: 3m
+ history: 2w
+ trends: 0d
+ description: |
+ MIB: CISCO-ENVMON-MIB
+ The current state of the test point being instrumented.
+ valuemap:
+ name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
+ tags:
+ -
+ tag: component
+ value: temperature
+ -
+ uuid: ea0d56dd49104257ba6c14ce3bdb753a
+ name: '{#SNMPVALUE}: Temperature'
+ type: SNMP_AGENT
+ snmp_oid: '1.3.6.1.4.1.9.9.13.1.3.1.3.{#SNMPINDEX}'
+ key: 'sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}]'
+ delay: 3m
+ value_type: FLOAT
+ units: °C
+ description: |
+ MIB: CISCO-ENVMON-MIB
+ The current measurement of the test point being instrumented.
+ tags:
+ -
+ tag: component
+ value: temperature
+ trigger_prototypes:
+ -
+ uuid: 716dee103c9f4e9da5f83d6cc338617d
+ expression: 'avg(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ recovery_mode: RECOVERY_EXPRESSION
+ recovery_expression: 'min(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ name: '{#SNMPVALUE}: Temperature is too low'
+ event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ opdata: 'Current value: {ITEM.LASTVALUE1}'
+ priority: AVERAGE
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ trigger_prototypes:
+ -
+ uuid: 82fa9473dc7d49d4a3a230ef6238cd2c
+ expression: |
+ avg(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ or
+ last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ or
+ last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ recovery_mode: RECOVERY_EXPRESSION
+ recovery_expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ name: '{#SNMPVALUE}: Temperature is above critical threshold'
+ event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ opdata: 'Current value: {ITEM.LASTVALUE1}'
+ priority: HIGH
+ description: 'This trigger uses temperature sensor values as well as temperature sensor status if available'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ -
+ uuid: a0199088767f43c0990f5ac8793267b1
+ expression: |
+ avg(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
+ or
+ last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ recovery_mode: RECOVERY_EXPRESSION
+ recovery_expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ name: '{#SNMPVALUE}: Temperature is above warning threshold'
+ event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
+ opdata: 'Current value: {ITEM.LASTVALUE1}'
+ priority: WARNING
+ description: 'This trigger uses temperature sensor values as well as temperature sensor status if available'
+ dependencies:
+ -
+ name: '{#SNMPVALUE}: Temperature is above critical threshold'
+ expression: |
+ avg(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ or
+ last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ or
+ last(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ recovery_expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ tags:
+ -
+ tag: scope
+ value: availability
+ -
+ tag: scope
+ value: performance
+ tags:
+ -
+ tag: class
+ value: network
+ -
+ tag: target
+ value: cisco
+ -
+ tag: target
+ value: cisco-prior
+ -
+ tag: target
+ value: cisco-prior-12.0-3-t
+ macros:
+ -
+ macro: '{$CPU.UTIL.CRIT}'
+ value: '90'
+ -
+ macro: '{$FAN_CRIT_STATUS:"critical"}'
+ value: '3'
+ -
+ macro: '{$FAN_CRIT_STATUS:"shutdown"}'
+ value: '4'
+ -
+ macro: '{$FAN_WARN_STATUS:"notFunctioning"}'
+ value: '6'
+ -
+ macro: '{$FAN_WARN_STATUS:"warning"}'
+ value: '2'
+ -
+ macro: '{$ICMP_LOSS_WARN}'
+ value: '20'
+ -
+ macro: '{$ICMP_RESPONSE_TIME_WARN}'
+ value: '0.15'
+ -
+ macro: '{$MEMORY.UTIL.MAX}'
+ value: '90'
+ -
+ macro: '{$PSU_CRIT_STATUS:"critical"}'
+ value: '3'
+ -
+ macro: '{$PSU_CRIT_STATUS:"shutdown"}'
+ value: '4'
+ -
+ macro: '{$PSU_WARN_STATUS:"notFunctioning"}'
+ value: '6'
+ -
+ macro: '{$PSU_WARN_STATUS:"warning"}'
+ value: '2'
+ -
+ macro: '{$SNMP.TIMEOUT}'
+ value: 5m
+ -
+ macro: '{$TEMP_CRIT}'
+ value: '60'
+ -
+ macro: '{$TEMP_CRIT:"CPU"}'
+ value: '75'
+ -
+ macro: '{$TEMP_CRIT_LOW}'
+ value: '5'
+ -
+ macro: '{$TEMP_CRIT_STATUS}'
+ value: '3'
+ -
+ macro: '{$TEMP_DISASTER_STATUS}'
+ value: '4'
+ -
+ macro: '{$TEMP_WARN}'
+ value: '50'
+ -
+ macro: '{$TEMP_WARN:"CPU"}'
+ value: '70'
+ -
+ macro: '{$TEMP_WARN_STATUS}'
+ value: '2'
+ valuemaps:
+ -
+ uuid: 0e5588b6aa714283b436031ff8ebc93a
+ name: 'CISCO-ENVMON-MIB::CiscoEnvMonState'
+ mappings:
+ -
+ value: '1'
+ newvalue: normal
+ -
+ value: '2'
+ newvalue: warning
+ -
+ value: '3'
+ newvalue: critical
+ -
+ value: '4'
+ newvalue: shutdown
+ -
+ value: '5'
+ newvalue: notPresent
+ -
+ value: '6'
+ newvalue: notFunctioning
+ -
+ uuid: 9fc9d3c2eb254de996d9c4a61ba58671
+ name: 'Service state'
+ mappings:
+ -
+ value: '0'
+ newvalue: Down
+ -
+ value: '1'
+ newvalue: Up
+ -
+ uuid: bb13061dd5b542f9b0f5921e75866679
+ name: zabbix.host.available
+ mappings:
+ -
+ value: '0'
+ newvalue: 'not available'
+ -
+ value: '1'
+ newvalue: available
+ -
+ value: '2'
+ newvalue: unknown
+ -
uuid: 40c233aaa3424fd29dc378022ff3461d
- template: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
- name: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ template: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
+ name: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
description: |
Cisco IOS Software releases later to 12.0(3)T and prior to 12.2(3.5)
@@ -3566,7 +3566,7 @@ zabbix_export:
triggers:
-
uuid: f6fae61d08644d5fa3929f526aee34e4
- expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -3592,14 +3592,14 @@ zabbix_export:
triggers:
-
uuid: 5c7eae9701be4661a34bbcdb99c094fe
- expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -3625,17 +3625,17 @@ zabbix_export:
triggers:
-
uuid: 9aebe4a1cfa34c5d92178abc8a6ce06e
- expression: 'avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -3749,7 +3749,7 @@ zabbix_export:
triggers:
-
uuid: 78723249679b4a288861f4ad8621fd77
- expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -3836,7 +3836,7 @@ zabbix_export:
triggers:
-
uuid: 3e09d5d308e449a4974393650b33e64d
- expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name))>0'
+ expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -3922,7 +3922,7 @@ zabbix_export:
triggers:
-
uuid: df85813bb6af4accab8d5191cd452329
- expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.sw.os[sysDescr.0]))>0'
+ expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.sw.os[sysDescr.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -3930,7 +3930,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.name))>0'
+ expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name,#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name,#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -3959,7 +3959,7 @@ zabbix_export:
triggers:
-
uuid: 778749b260bb45c3a926d6bb49c07257
- expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -3967,7 +3967,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -4012,7 +4012,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b964834d4f6549c7ae0f0c0c2646dfbc
- expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '{#SNMPVALUE}: High CPU utilization'
event_name: '{#SNMPVALUE}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -4033,7 +4033,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'system.cpu.util[cpmCPUTotal5min.{#SNMPINDEX}]'
-
uuid: afafbf551dc242e8a85dbb12ba1aa067
@@ -4077,7 +4077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 75ee6ab1f0c84946a4f4d6e87007ec25
- expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -4115,7 +4115,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 907502bbdeee45bbbfb84d43c2dc4f20
- expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
name: '{#SENSOR_INFO}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -4129,7 +4129,7 @@ zabbix_export:
value: performance
-
uuid: 4b2a4eb4cb2a43758048cc05d63f37a4
- expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
+ expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"notFunctioning\"}")=1'
name: '{#SENSOR_INFO}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -4137,7 +4137,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Fan is in critical state'
- expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.fan.status[ciscoEnvMonFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"shutdown\"}")=1'
tags:
-
tag: scope
@@ -4205,7 +4205,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0f8d70ef5e704483a49d7b635e74dfc6
- expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/vm.memory.util[vm.memory.util.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -4228,7 +4228,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'vm.memory.util[vm.memory.util.{#SNMPINDEX}]'
-
uuid: 328da4bee6ea49aa8809cdbb74744263
@@ -4534,9 +4534,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c99f0efcc30749e79cce0efe2fdd574f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -4587,21 +4587,21 @@ zabbix_export:
-
uuid: 60809b6c94d74e34b5f29525d77c75b5
expression: |
- change(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -4610,8 +4610,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -4619,13 +4619,13 @@ zabbix_export:
-
uuid: 21d475be7fa24ba2b946e4ec31371df5
expression: |
- (avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -4635,8 +4635,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -4644,12 +4644,12 @@ zabbix_export:
-
uuid: 5a2bc4c9bf344948a52ce256daa1258e
expression: |
- min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -4659,8 +4659,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -4677,42 +4677,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 09264b1af69a4a4595ba2e4539106d6f
@@ -4742,7 +4742,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7c5269ac98e847f28da8d3d97e52a28e
- expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
name: '{#SENSOR_INFO}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -4756,7 +4756,7 @@ zabbix_export:
value: performance
-
uuid: 616059e289694181aea6a076ecb093c1
- expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
+ expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"notFunctioning\"}")=1'
name: '{#SENSOR_INFO}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -4764,7 +4764,7 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Power supply is in critical state'
- expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
+ expression: 'count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.psu.status[ciscoEnvMonSupplyState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"shutdown\"}")=1'
tags:
-
tag: scope
@@ -4820,9 +4820,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 67fad9e835f9466ab368bbdad6544e7e
- expression: 'avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -4838,13 +4838,13 @@ zabbix_export:
-
uuid: f138f708723a4ca49b21cb992798da7f
expression: |
- avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -4860,11 +4860,11 @@ zabbix_export:
-
uuid: 281f7afca6ed4d3bb866430ec89e862e
expression: |
- avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
+ avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -4874,12 +4874,12 @@ zabbix_export:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
expression: |
- avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
- recovery_expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ recovery_expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -5041,7 +5041,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP'
+ host: 'Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -5975,8 +5975,8 @@ zabbix_export:
newvalue: unknown
triggers:
-
- uuid: f278b8b4eb784107a6d8d3e8437e8a66
- expression: '(last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS prior to 12.0_3_T SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS prior to 12.0_3_T SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ uuid: b98092ddf87247ff91710e2f310dbfb9
+ expression: '(last(/Cisco IOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -5985,14 +5985,14 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Cisco IOS prior to 12.0_3_T SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco IOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
value: notice
-
- uuid: b98092ddf87247ff91710e2f310dbfb9
- expression: '(last(/Cisco IOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ uuid: f278b8b4eb784107a6d8d3e8437e8a66
+ expression: '(last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS prior to 12.0_3_T by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS prior to 12.0_3_T by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -6001,14 +6001,14 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Cisco IOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco IOS prior to 12.0_3_T by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
value: notice
-
uuid: 806f54999d064eb68a3f46a0d84ee4df
- expression: '(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -6017,7 +6017,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco IOS versions 12.0_3_T-12.2_3.5 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -6033,5 +6033,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco IOS prior to 12.0_3_T SNMP'
+ host: 'Cisco IOS prior to 12.0_3_T by SNMP'
key: 'system.cpu.util[avgBusy5]'
diff --git a/templates/net/dell_force_s_series_snmp/README.md b/templates/net/dell_force_s_series_snmp/README.md
index 0585835a2ff..714c8353aae 100644
--- a/templates/net/dell_force_s_series_snmp/README.md
+++ b/templates/net/dell_force_s_series_snmp/README.md
@@ -1,9 +1,9 @@
-# Dell Force S-Series SNMP
+# Dell Force S-Series by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -100,30 +100,30 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Dell Force S-Series SNMP/system.cpu.util[chStackUnitCpuUtil1Min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|Fan {#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Dell Force S-Series SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|Fan {#SNMPVALUE}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Dell Force S-Series SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Fan {#SNMPVALUE}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Dell Force S-Series SNMP/system.name,#1)<>last(/Dell Force S-Series SNMP/system.name,#2) and length(last(/Dell Force S-Series SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|#{#SNMPVALUE}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Dell Force S-Series SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|#{#SNMPVALUE}: Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Dell Force S-Series SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|#{#SNMPINDEX}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Dell Force S-Series SNMP/vm.memory.util[chStackUnitMemUsageUtil.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Dell Force S-Series SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Dell Force S-Series SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Dell Force S-Series SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Dell Force S-Series SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Dell Force S-Series SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Dell Force S-Series SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Dell Force S-Series SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Dell Force S-Series SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Dell Force S-Series SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|PSU {#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Dell Force S-Series SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|PSU {#SNMPVALUE}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Dell Force S-Series SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- PSU {#SNMPVALUE}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Dell Force S-Series SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell Force S-Series SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell Force S-Series SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell Force S-Series SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Dell Force S-Series SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Dell Force S-Series SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Dell Force S-Series SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell Force S-Series SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Dell Force S-Series SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Device {#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- Device {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|Device {#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|Device {#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Dell Force S-Series by SNMP/system.cpu.util[chStackUnitCpuUtil1Min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|Fan {#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Dell Force S-Series by SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|Fan {#SNMPVALUE}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/Dell Force S-Series by SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- Fan {#SNMPVALUE}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Dell Force S-Series by SNMP/system.name,#1)<>last(/Dell Force S-Series by SNMP/system.name,#2) and length(last(/Dell Force S-Series by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|#{#SNMPVALUE}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Dell Force S-Series by SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series by SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|#{#SNMPVALUE}: Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Dell Force S-Series by SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series by SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|#{#SNMPINDEX}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Dell Force S-Series by SNMP/vm.memory.util[chStackUnitMemUsageUtil.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Dell Force S-Series by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Dell Force S-Series by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Dell Force S-Series by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Dell Force S-Series by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Dell Force S-Series by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Dell Force S-Series by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Dell Force S-Series by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Dell Force S-Series by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Dell Force S-Series by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|PSU {#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Dell Force S-Series by SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|PSU {#SNMPVALUE}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/Dell Force S-Series by SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO |<p>**Depends on**:</p><p>- PSU {#SNMPVALUE}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Dell Force S-Series by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell Force S-Series by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell Force S-Series by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell Force S-Series by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Dell Force S-Series by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Dell Force S-Series by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Dell Force S-Series by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell Force S-Series by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Dell Force S-Series by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Device {#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- Device {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|Device {#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|Device {#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/dell_force_s_series_snmp/template_net_dell_force_s_series_snmp.yaml b/templates/net/dell_force_s_series_snmp/template_net_dell_force_s_series_snmp.yaml
index ab1c676c3e4..78420d1e5bd 100644
--- a/templates/net/dell_force_s_series_snmp/template_net_dell_force_s_series_snmp.yaml
+++ b/templates/net/dell_force_s_series_snmp/template_net_dell_force_s_series_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:05:05Z'
+ date: '2022-10-27T14:44:02Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: e5ec7acc7efc4ac491b6fa552ab077ae
- template: 'Dell Force S-Series SNMP'
- name: 'Dell Force S-Series SNMP'
+ template: 'Dell Force S-Series by SNMP'
+ name: 'Dell Force S-Series by SNMP'
description: |
Template Dell Force S-Series
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: f186488b337f4b1b8971992e8118d9cc
- expression: 'max(/Dell Force S-Series SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell Force S-Series by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 46798adec54c47a38cb599773767a2a7
- expression: 'min(/Dell Force S-Series SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell Force S-Series SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Dell Force S-Series by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell Force S-Series by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Dell Force S-Series SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell Force S-Series by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 04828676081147b4bfad0ad03385986e
- expression: 'avg(/Dell Force S-Series SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Dell Force S-Series by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Dell Force S-Series SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell Force S-Series SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Dell Force S-Series by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell Force S-Series by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Dell Force S-Series SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell Force S-Series by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -258,7 +258,7 @@ zabbix_export:
triggers:
-
uuid: 2dc35c5813b042fd96f2ebc53f565799
- expression: 'last(/Dell Force S-Series SNMP/system.name,#1)<>last(/Dell Force S-Series SNMP/system.name,#2) and length(last(/Dell Force S-Series SNMP/system.name))>0'
+ expression: 'last(/Dell Force S-Series by SNMP/system.name,#1)<>last(/Dell Force S-Series by SNMP/system.name,#2) and length(last(/Dell Force S-Series by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -339,7 +339,7 @@ zabbix_export:
triggers:
-
uuid: da99689aa1394d17af5008e5678915bc
- expression: 'max(/Dell Force S-Series SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Dell Force S-Series by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -347,7 +347,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Dell Force S-Series SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell Force S-Series by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -382,7 +382,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: aecc6fdd58404347b3074b0c1db63f09
- expression: 'count(/Dell Force S-Series SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Dell Force S-Series by SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: 'Fan {#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -396,7 +396,7 @@ zabbix_export:
value: performance
-
uuid: a53271304dcf418aa5afdaa145436b70
- expression: 'count(/Dell Force S-Series SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
+ expression: 'count(/Dell Force S-Series by SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
name: 'Fan {#SNMPVALUE}: Fan is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -404,7 +404,7 @@ zabbix_export:
dependencies:
-
name: 'Fan {#SNMPVALUE}: Fan is in critical state'
- expression: 'count(/Dell Force S-Series SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Dell Force S-Series by SNMP/sensor.fan.status[chSysFanTrayOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -436,7 +436,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 002c0f19cfe54fe08da2183654752470
- expression: 'min(/Dell Force S-Series SNMP/system.cpu.util[chStackUnitCpuUtil1Min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Dell Force S-Series by SNMP/system.cpu.util[chStackUnitCpuUtil1Min.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -465,7 +465,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 41baaaa2eb6246b7982ac76928fbd0f8
- expression: 'min(/Dell Force S-Series SNMP/vm.memory.util[chStackUnitMemUsageUtil.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Dell Force S-Series by SNMP/vm.memory.util[chStackUnitMemUsageUtil.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '#{#SNMPINDEX}: High memory utilization'
event_name: '#{#SNMPINDEX}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -488,7 +488,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'system.cpu.util[chStackUnitCpuUtil1Min.{#SNMPINDEX}]'
-
uuid: 69c63b7fb65347cc9301b02e1f9cd45e
@@ -500,7 +500,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'vm.memory.util[chStackUnitMemUsageUtil.{#SNMPINDEX}]'
-
uuid: 620805730ede4c7281a1c736fcfeb130
@@ -806,9 +806,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b7b55335f42b4ace8434588bc70f7e60
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -859,21 +859,21 @@ zabbix_export:
-
uuid: f4903edf173f470482174ee9937cbb32
expression: |
- change(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Dell Force S-Series SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Dell Force S-Series by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -882,8 +882,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -891,13 +891,13 @@ zabbix_export:
-
uuid: e85a287c2e0e48e19cb43bf74d3f3535
expression: |
- (avg(/Dell Force S-Series SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Dell Force S-Series SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Dell Force S-Series by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Dell Force S-Series by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Dell Force S-Series SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Dell Force S-Series SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Dell Force S-Series by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Dell Force S-Series by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Dell Force S-Series by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -907,8 +907,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -916,12 +916,12 @@ zabbix_export:
-
uuid: 00d2988bdd084719ba781562920d20fa
expression: |
- min(/Dell Force S-Series SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Dell Force S-Series SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Dell Force S-Series by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Dell Force S-Series by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Dell Force S-Series SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Dell Force S-Series SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Dell Force S-Series by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Dell Force S-Series by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -931,8 +931,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Dell Force S-Series SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Dell Force S-Series by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -949,42 +949,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 6782ece35ded46b08a4f45a9743b1ff5
@@ -1054,7 +1054,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: edc143c44b2d465cac94c4cf0fb588a6
- expression: 'last(/Dell Force S-Series SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Dell Force S-Series by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1111,7 +1111,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 764f08ab7a29481fa73a63ae256ff154
- expression: 'count(/Dell Force S-Series SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Dell Force S-Series by SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: 'PSU {#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1125,7 +1125,7 @@ zabbix_export:
value: performance
-
uuid: a7d4ac882ec24cce9839c6012c7fa562
- expression: 'count(/Dell Force S-Series SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
+ expression: 'count(/Dell Force S-Series by SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
name: 'PSU {#SNMPVALUE}: Power supply is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1133,7 +1133,7 @@ zabbix_export:
dependencies:
-
name: 'PSU {#SNMPVALUE}: Power supply is in critical state'
- expression: 'count(/Dell Force S-Series SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Dell Force S-Series by SNMP/sensor.psu.status[chSysPowerSupplyOperStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -1165,9 +1165,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: dc1064de6a6b4533be812e590b96927b
- expression: 'avg(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: 'Device {#SNMPVALUE}: Temperature is above critical threshold'
event_name: 'Device {#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1182,9 +1182,9 @@ zabbix_export:
value: performance
-
uuid: f4d0a2c0b1a9468990e1f6dbfef1ab75
- expression: 'avg(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: 'Device {#SNMPVALUE}: Temperature is above warning threshold'
event_name: 'Device {#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1193,8 +1193,8 @@ zabbix_export:
dependencies:
-
name: 'Device {#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1204,9 +1204,9 @@ zabbix_export:
value: performance
-
uuid: f1bbf02af05041ef95ff80ff18fc02a7
- expression: 'avg(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Dell Force S-Series SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Dell Force S-Series by SNMP/sensor.temp.value[chStackUnitTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: 'Device {#SNMPVALUE}: Temperature is too low'
event_name: 'Device {#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1265,7 +1265,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6f02e903dab24bf294015f43e0b52504
- expression: 'last(/Dell Force S-Series SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}]))>0'
+ expression: 'last(/Dell Force S-Series by SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series by SNMP/system.hw.serialnumber[chStackUnitSerialNumber.{#SNMPINDEX}]))>0'
name: '#{#SNMPVALUE}: Device has been replaced'
event_name: '#{#SNMPVALUE}: Device has been replaced (new serial number received)'
priority: INFO
@@ -1322,7 +1322,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 66049aa1d7cb45ebac1fe5292c309ba2
- expression: 'last(/Dell Force S-Series SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}]))>0'
+ expression: 'last(/Dell Force S-Series by SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#1)<>last(/Dell Force S-Series by SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}],#2) and length(last(/Dell Force S-Series by SNMP/system.sw.os[chStackUnitCodeVersion.{#SNMPINDEX}]))>0'
name: '#{#SNMPVALUE}: Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -1330,7 +1330,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Dell Force S-Series SNMP/system.name,#1)<>last(/Dell Force S-Series SNMP/system.name,#2) and length(last(/Dell Force S-Series SNMP/system.name))>0'
+ expression: 'last(/Dell Force S-Series by SNMP/system.name,#1)<>last(/Dell Force S-Series by SNMP/system.name,#2) and length(last(/Dell Force S-Series by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -1459,7 +1459,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Dell Force S-Series SNMP'
+ host: 'Dell Force S-Series by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2411,7 +2411,7 @@ zabbix_export:
triggers:
-
uuid: 4246a064d33f428c8441491402ae8090
- expression: '(last(/Dell Force S-Series SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell Force S-Series SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell Force S-Series SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell Force S-Series SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Dell Force S-Series by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell Force S-Series by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell Force S-Series by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell Force S-Series by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2420,7 +2420,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Dell Force S-Series SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Dell Force S-Series by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/net/dlink_des7200_snmp/README.md b/templates/net/dlink_des7200_snmp/README.md
index 0aac27bc106..4172f1c101a 100644
--- a/templates/net/dlink_des7200_snmp/README.md
+++ b/templates/net/dlink_des7200_snmp/README.md
@@ -1,9 +1,9 @@
-# D-Link DES 7200 SNMP
+# D-Link DES 7200 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -96,27 +96,27 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/D-Link DES 7200 SNMP/system.cpu.util[myCPUUtilization5Min.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/D-Link DES 7200 SNMP/sensor.fan.status[mySystemFanIsNormal.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/D-Link DES 7200 SNMP/system.name,#1)<>last(/D-Link DES 7200 SNMP/system.name,#2) and length(last(/D-Link DES 7200 SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/D-Link DES 7200 SNMP/system.hw.firmware,#1)<>last(/D-Link DES 7200 SNMP/system.hw.firmware,#2) and length(last(/D-Link DES 7200 SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/D-Link DES 7200 SNMP/system.sw.os[mySystemSwVersion.0],#1)<>last(/D-Link DES 7200 SNMP/system.sw.os[mySystemSwVersion.0],#2) and length(last(/D-Link DES 7200 SNMP/system.sw.os[mySystemSwVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#SNMPINDEX}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/D-Link DES 7200 SNMP/vm.memory.util[myMemoryPoolCurrentUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/D-Link DES 7200 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/D-Link DES 7200 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/D-Link DES 7200 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/D-Link DES 7200 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/D-Link DES 7200 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/D-Link DES 7200 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/D-Link DES 7200 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/D-Link DES 7200 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/D-Link DES 7200 SNMP/sensor.psu.status[mySystemElectricalSourceIsNormal.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/D-Link DES 7200 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES 7200 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES 7200 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES 7200 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/D-Link DES 7200 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/D-Link DES 7200 SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/D-Link DES 7200 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES 7200 SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/D-Link DES 7200 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/D-Link DES 7200 by SNMP/system.cpu.util[myCPUUtilization5Min.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/D-Link DES 7200 by SNMP/sensor.fan.status[mySystemFanIsNormal.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/D-Link DES 7200 by SNMP/system.name,#1)<>last(/D-Link DES 7200 by SNMP/system.name,#2) and length(last(/D-Link DES 7200 by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/D-Link DES 7200 by SNMP/system.hw.firmware,#1)<>last(/D-Link DES 7200 by SNMP/system.hw.firmware,#2) and length(last(/D-Link DES 7200 by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/D-Link DES 7200 by SNMP/system.sw.os[mySystemSwVersion.0],#1)<>last(/D-Link DES 7200 by SNMP/system.sw.os[mySystemSwVersion.0],#2) and length(last(/D-Link DES 7200 by SNMP/system.sw.os[mySystemSwVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#SNMPINDEX}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/D-Link DES 7200 by SNMP/vm.memory.util[myMemoryPoolCurrentUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/D-Link DES 7200 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/D-Link DES 7200 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/D-Link DES 7200 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/D-Link DES 7200 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/D-Link DES 7200 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/D-Link DES 7200 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/D-Link DES 7200 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/D-Link DES 7200 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/D-Link DES 7200 by SNMP/sensor.psu.status[mySystemElectricalSourceIsNormal.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/D-Link DES 7200 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES 7200 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES 7200 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES 7200 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/D-Link DES 7200 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/D-Link DES 7200 by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/D-Link DES 7200 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES 7200 by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/D-Link DES 7200 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/dlink_des7200_snmp/template_net_dlink_des7200_snmp.yaml b/templates/net/dlink_des7200_snmp/template_net_dlink_des7200_snmp.yaml
index 522b1fe1dbf..5815c25e015 100644
--- a/templates/net/dlink_des7200_snmp/template_net_dlink_des7200_snmp.yaml
+++ b/templates/net/dlink_des7200_snmp/template_net_dlink_des7200_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:06:33Z'
+ date: '2022-10-27T14:44:13Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 395184b5d5b048a68e06c91154c56847
- template: 'D-Link DES 7200 SNMP'
- name: 'D-Link DES 7200 SNMP'
+ template: 'D-Link DES 7200 by SNMP'
+ name: 'D-Link DES 7200 by SNMP'
description: |
Template D-Link DES 7200
@@ -46,7 +46,7 @@ zabbix_export:
triggers:
-
uuid: a568e0a3c0074e6dbad92890067976f3
- expression: 'max(/D-Link DES 7200 SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES 7200 by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -72,14 +72,14 @@ zabbix_export:
triggers:
-
uuid: 12dea4dbaa3c4ef1a53456090ae3eb0e
- expression: 'min(/D-Link DES 7200 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES 7200 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/D-Link DES 7200 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES 7200 by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/D-Link DES 7200 SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES 7200 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -105,17 +105,17 @@ zabbix_export:
triggers:
-
uuid: 88f2c517c1ba4f7881491a4b2b7f7ad0
- expression: 'avg(/D-Link DES 7200 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/D-Link DES 7200 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/D-Link DES 7200 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES 7200 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/D-Link DES 7200 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES 7200 by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/D-Link DES 7200 SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES 7200 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -179,7 +179,7 @@ zabbix_export:
triggers:
-
uuid: 6e12ba6b60b94ec6bf531b4bb234dc80
- expression: 'min(/D-Link DES 7200 SNMP/system.cpu.util[myCPUUtilization5Min.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/D-Link DES 7200 by SNMP/system.cpu.util[myCPUUtilization5Min.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -236,7 +236,7 @@ zabbix_export:
triggers:
-
uuid: 7d8f92f3c5df4b5091f49e07e50fae44
- expression: 'last(/D-Link DES 7200 SNMP/system.hw.firmware,#1)<>last(/D-Link DES 7200 SNMP/system.hw.firmware,#2) and length(last(/D-Link DES 7200 SNMP/system.hw.firmware))>0'
+ expression: 'last(/D-Link DES 7200 by SNMP/system.hw.firmware,#1)<>last(/D-Link DES 7200 by SNMP/system.hw.firmware,#2) and length(last(/D-Link DES 7200 by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -368,7 +368,7 @@ zabbix_export:
triggers:
-
uuid: 0c7a629e028e489c89647bf3ca51850e
- expression: 'last(/D-Link DES 7200 SNMP/system.name,#1)<>last(/D-Link DES 7200 SNMP/system.name,#2) and length(last(/D-Link DES 7200 SNMP/system.name))>0'
+ expression: 'last(/D-Link DES 7200 by SNMP/system.name,#1)<>last(/D-Link DES 7200 by SNMP/system.name,#2) and length(last(/D-Link DES 7200 by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -449,7 +449,7 @@ zabbix_export:
triggers:
-
uuid: 01ca34ebe7a94ed3b3e5ee8320ebce73
- expression: 'last(/D-Link DES 7200 SNMP/system.sw.os[mySystemSwVersion.0],#1)<>last(/D-Link DES 7200 SNMP/system.sw.os[mySystemSwVersion.0],#2) and length(last(/D-Link DES 7200 SNMP/system.sw.os[mySystemSwVersion.0]))>0'
+ expression: 'last(/D-Link DES 7200 by SNMP/system.sw.os[mySystemSwVersion.0],#1)<>last(/D-Link DES 7200 by SNMP/system.sw.os[mySystemSwVersion.0],#2) and length(last(/D-Link DES 7200 by SNMP/system.sw.os[mySystemSwVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -457,7 +457,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/D-Link DES 7200 SNMP/system.name,#1)<>last(/D-Link DES 7200 SNMP/system.name,#2) and length(last(/D-Link DES 7200 SNMP/system.name))>0'
+ expression: 'last(/D-Link DES 7200 by SNMP/system.name,#1)<>last(/D-Link DES 7200 by SNMP/system.name,#2) and length(last(/D-Link DES 7200 by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -486,7 +486,7 @@ zabbix_export:
triggers:
-
uuid: dc5b0dda2d684665a5444e39db5e2257
- expression: 'max(/D-Link DES 7200 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/D-Link DES 7200 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -494,7 +494,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/D-Link DES 7200 SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES 7200 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -527,7 +527,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a5cb052573394829877fdc6bf3d501c0
- expression: 'count(/D-Link DES 7200 SNMP/sensor.fan.status[mySystemFanIsNormal.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/D-Link DES 7200 by SNMP/sensor.fan.status[mySystemFanIsNormal.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -566,7 +566,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fd484f9b3a6a414fb2bba47d5804cc62
- expression: 'min(/D-Link DES 7200 SNMP/vm.memory.util[myMemoryPoolCurrentUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/D-Link DES 7200 by SNMP/vm.memory.util[myMemoryPoolCurrentUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPINDEX}: High memory utilization'
event_name: '{#SNMPINDEX}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -589,7 +589,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'vm.memory.util[myMemoryPoolCurrentUtilization.{#SNMPINDEX}]'
-
uuid: dfac422a3258458da066517e1e52588b
@@ -895,9 +895,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8d5d2b10f5c541d9858b124ca3ea23aa
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -948,21 +948,21 @@ zabbix_export:
-
uuid: 04d35a5ff5d34caf91f354b76677f78e
expression: |
- change(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/D-Link DES 7200 SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/D-Link DES 7200 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -971,8 +971,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -980,13 +980,13 @@ zabbix_export:
-
uuid: 76191d56356c4f389e3b7ca182ac28b2
expression: |
- (avg(/D-Link DES 7200 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/D-Link DES 7200 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/D-Link DES 7200 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/D-Link DES 7200 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/D-Link DES 7200 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/D-Link DES 7200 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/D-Link DES 7200 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/D-Link DES 7200 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES 7200 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -996,8 +996,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1005,12 +1005,12 @@ zabbix_export:
-
uuid: d9f6f23364c54fd1984fe049a4fc16e4
expression: |
- min(/D-Link DES 7200 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/D-Link DES 7200 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/D-Link DES 7200 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/D-Link DES 7200 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/D-Link DES 7200 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/D-Link DES 7200 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/D-Link DES 7200 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/D-Link DES 7200 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1020,8 +1020,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/D-Link DES 7200 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/D-Link DES 7200 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1038,42 +1038,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 1290d8eb44564a15b98d212c6f007b05
@@ -1102,7 +1102,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4cc6f58430374fc4b2f1bced4e2097f6
- expression: 'count(/D-Link DES 7200 SNMP/sensor.psu.status[mySystemElectricalSourceIsNormal.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/D-Link DES 7200 by SNMP/sensor.psu.status[mySystemElectricalSourceIsNormal.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1141,9 +1141,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b675df20392d458f9a53dace6bde978a
- expression: 'avg(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1158,9 +1158,9 @@ zabbix_export:
value: performance
-
uuid: 8486ed430ee24b13b65786e5b4857684
- expression: 'avg(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1169,8 +1169,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1180,9 +1180,9 @@ zabbix_export:
value: performance
-
uuid: ef5a9113e96d4cc095d384cbeeef9bc5
- expression: 'avg(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/D-Link DES 7200 SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/D-Link DES 7200 by SNMP/sensor.temp.value[mySystemTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1312,7 +1312,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2247,7 +2247,7 @@ zabbix_export:
triggers:
-
uuid: 6b200163bfcd4899a82bcf98aa026aa2
- expression: '(last(/D-Link DES 7200 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES 7200 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES 7200 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES 7200 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/D-Link DES 7200 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES 7200 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES 7200 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES 7200 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2256,7 +2256,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/D-Link DES 7200 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/D-Link DES 7200 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2272,5 +2272,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'D-Link DES 7200 SNMP'
+ host: 'D-Link DES 7200 by SNMP'
key: 'system.cpu.util[myCPUUtilization5Min.0]'
diff --git a/templates/net/dlink_des_snmp/README.md b/templates/net/dlink_des_snmp/README.md
index 0747c196fd8..46042b92139 100644
--- a/templates/net/dlink_des_snmp/README.md
+++ b/templates/net/dlink_des_snmp/README.md
@@ -1,9 +1,9 @@
-# D-Link DES_DGS Switch SNMP
+# D-Link DES_DGS Switch by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -98,30 +98,30 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/D-Link DES_DGS Switch SNMP/system.cpu.util[agentCPUutilizationIn1min.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|#{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/D-Link DES_DGS Switch SNMP/sensor.fan.status[swFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/D-Link DES_DGS Switch SNMP/system.name,#1)<>last(/D-Link DES_DGS Switch SNMP/system.name,#2) and length(last(/D-Link DES_DGS Switch SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/D-Link DES_DGS Switch SNMP/system.hw.serialnumber,#1)<>last(/D-Link DES_DGS Switch SNMP/system.hw.serialnumber,#2) and length(last(/D-Link DES_DGS Switch SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/D-Link DES_DGS Switch SNMP/system.hw.firmware,#1)<>last(/D-Link DES_DGS Switch SNMP/system.hw.firmware,#2) and length(last(/D-Link DES_DGS Switch SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/D-Link DES_DGS Switch SNMP/vm.memory.util[agentDRAMutilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/D-Link DES_DGS Switch SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/D-Link DES_DGS Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/D-Link DES_DGS Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/D-Link DES_DGS Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/D-Link DES_DGS Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/D-Link DES_DGS Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/D-Link DES_DGS Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/D-Link DES_DGS Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/D-Link DES_DGS Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|#{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/D-Link DES_DGS Switch SNMP/sensor.psu.status[swPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/D-Link DES_DGS Switch SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES_DGS Switch SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES_DGS Switch SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES_DGS Switch SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/D-Link DES_DGS Switch SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/D-Link DES_DGS Switch SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/D-Link DES_DGS Switch SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES_DGS Switch SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/D-Link DES_DGS Switch SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|#{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- #{#SNMPVALUE}: Temperature is above critical threshold</p> |
-|#{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|#{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/D-Link DES_DGS Switch by SNMP/system.cpu.util[agentCPUutilizationIn1min.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|#{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/D-Link DES_DGS Switch by SNMP/sensor.fan.status[swFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/D-Link DES_DGS Switch by SNMP/system.name,#1)<>last(/D-Link DES_DGS Switch by SNMP/system.name,#2) and length(last(/D-Link DES_DGS Switch by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/D-Link DES_DGS Switch by SNMP/system.hw.serialnumber,#1)<>last(/D-Link DES_DGS Switch by SNMP/system.hw.serialnumber,#2) and length(last(/D-Link DES_DGS Switch by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/D-Link DES_DGS Switch by SNMP/system.hw.firmware,#1)<>last(/D-Link DES_DGS Switch by SNMP/system.hw.firmware,#2) and length(last(/D-Link DES_DGS Switch by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/D-Link DES_DGS Switch by SNMP/vm.memory.util[agentDRAMutilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/D-Link DES_DGS Switch by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/D-Link DES_DGS Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/D-Link DES_DGS Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/D-Link DES_DGS Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/D-Link DES_DGS Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/D-Link DES_DGS Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/D-Link DES_DGS Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/D-Link DES_DGS Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/D-Link DES_DGS Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|#{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/D-Link DES_DGS Switch by SNMP/sensor.psu.status[swPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/D-Link DES_DGS Switch by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES_DGS Switch by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES_DGS Switch by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES_DGS Switch by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/D-Link DES_DGS Switch by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/D-Link DES_DGS Switch by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/D-Link DES_DGS Switch by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES_DGS Switch by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/D-Link DES_DGS Switch by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|#{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- #{#SNMPVALUE}: Temperature is above critical threshold</p> |
+|#{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|#{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/net/dlink_des_snmp/template_net_dlink_des_snmp.yaml b/templates/net/dlink_des_snmp/template_net_dlink_des_snmp.yaml
index c21b3491527..0cd086dc51d 100644
--- a/templates/net/dlink_des_snmp/template_net_dlink_des_snmp.yaml
+++ b/templates/net/dlink_des_snmp/template_net_dlink_des_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:06:27Z'
+ date: '2022-10-27T14:41:39Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: d3176749a5274264938f487cd89d17eb
- template: 'D-Link DES_DGS Switch SNMP'
- name: 'D-Link DES_DGS Switch SNMP'
+ template: 'D-Link DES_DGS Switch by SNMP'
+ name: 'D-Link DES_DGS Switch by SNMP'
description: |
Template D-Link DES_DGS Switch
@@ -51,7 +51,7 @@ zabbix_export:
triggers:
-
uuid: 5d134da7ad044ab591e1b96e1dca1641
- expression: 'max(/D-Link DES_DGS Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES_DGS Switch by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -77,14 +77,14 @@ zabbix_export:
triggers:
-
uuid: 9c48d97b5d4a4668ad382e1d0d9c8e87
- expression: 'min(/D-Link DES_DGS Switch SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES_DGS Switch SNMP/icmppingloss,5m)<100'
+ expression: 'min(/D-Link DES_DGS Switch by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES_DGS Switch by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/D-Link DES_DGS Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES_DGS Switch by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -110,17 +110,17 @@ zabbix_export:
triggers:
-
uuid: 3959884457a7420a9a9007c550d9b886
- expression: 'avg(/D-Link DES_DGS Switch SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/D-Link DES_DGS Switch by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/D-Link DES_DGS Switch SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES_DGS Switch SNMP/icmppingloss,5m)<100'
+ expression: 'min(/D-Link DES_DGS Switch by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/D-Link DES_DGS Switch by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/D-Link DES_DGS Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES_DGS Switch by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -184,7 +184,7 @@ zabbix_export:
triggers:
-
uuid: 621c4933fd9c4b78aae1eedada7ffedf
- expression: 'min(/D-Link DES_DGS Switch SNMP/system.cpu.util[agentCPUutilizationIn1min.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/D-Link DES_DGS Switch by SNMP/system.cpu.util[agentCPUutilizationIn1min.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -241,7 +241,7 @@ zabbix_export:
triggers:
-
uuid: 40a2ad291ded4bf9bc72adc2b8653b98
- expression: 'last(/D-Link DES_DGS Switch SNMP/system.hw.firmware,#1)<>last(/D-Link DES_DGS Switch SNMP/system.hw.firmware,#2) and length(last(/D-Link DES_DGS Switch SNMP/system.hw.firmware))>0'
+ expression: 'last(/D-Link DES_DGS Switch by SNMP/system.hw.firmware,#1)<>last(/D-Link DES_DGS Switch by SNMP/system.hw.firmware,#2) and length(last(/D-Link DES_DGS Switch by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -302,7 +302,7 @@ zabbix_export:
triggers:
-
uuid: 3aa2e47f4b8145b8a5e4f67b0987ca2b
- expression: 'last(/D-Link DES_DGS Switch SNMP/system.hw.serialnumber,#1)<>last(/D-Link DES_DGS Switch SNMP/system.hw.serialnumber,#2) and length(last(/D-Link DES_DGS Switch SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/D-Link DES_DGS Switch by SNMP/system.hw.serialnumber,#1)<>last(/D-Link DES_DGS Switch by SNMP/system.hw.serialnumber,#2) and length(last(/D-Link DES_DGS Switch by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -409,7 +409,7 @@ zabbix_export:
triggers:
-
uuid: 91e1a9f579c64954a89b6efbf6b523dd
- expression: 'last(/D-Link DES_DGS Switch SNMP/system.name,#1)<>last(/D-Link DES_DGS Switch SNMP/system.name,#2) and length(last(/D-Link DES_DGS Switch SNMP/system.name))>0'
+ expression: 'last(/D-Link DES_DGS Switch by SNMP/system.name,#1)<>last(/D-Link DES_DGS Switch by SNMP/system.name,#2) and length(last(/D-Link DES_DGS Switch by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -490,7 +490,7 @@ zabbix_export:
triggers:
-
uuid: 2b56c7cfef454441863d2f7cc01a330f
- expression: 'max(/D-Link DES_DGS Switch SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/D-Link DES_DGS Switch by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -498,7 +498,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/D-Link DES_DGS Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/D-Link DES_DGS Switch by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -544,7 +544,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e8cb2d8bc3ee44c58c5111d3ead41d1b
- expression: 'count(/D-Link DES_DGS Switch SNMP/sensor.fan.status[swFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/D-Link DES_DGS Switch by SNMP/sensor.fan.status[swFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '#{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -583,7 +583,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 29352d2cb80f47d98ca6c6d6d366a29f
- expression: 'min(/D-Link DES_DGS Switch SNMP/vm.memory.util[agentDRAMutilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/D-Link DES_DGS Switch by SNMP/vm.memory.util[agentDRAMutilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '#{#SNMPVALUE}: High memory utilization'
event_name: '#{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -606,7 +606,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'vm.memory.util[agentDRAMutilization.{#SNMPINDEX}]'
-
uuid: 86c7d09fe6bc4a93b634230290bcf851
@@ -912,9 +912,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6a8f2b5cd5ec4b8a9e5d35f551a756e0
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -965,21 +965,21 @@ zabbix_export:
-
uuid: e645a0cf5e4f47a5af03f0108070d4e4
expression: |
- change(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/D-Link DES_DGS Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/D-Link DES_DGS Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -988,8 +988,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -997,13 +997,13 @@ zabbix_export:
-
uuid: 8afaa3fc79404673880795d7d7dbabd8
expression: |
- (avg(/D-Link DES_DGS Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/D-Link DES_DGS Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/D-Link DES_DGS Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/D-Link DES_DGS Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/D-Link DES_DGS Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/D-Link DES_DGS Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/D-Link DES_DGS Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/D-Link DES_DGS Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/D-Link DES_DGS Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1013,8 +1013,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1022,12 +1022,12 @@ zabbix_export:
-
uuid: 28ae5085f4ab432ea281658f1439ada1
expression: |
- min(/D-Link DES_DGS Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/D-Link DES_DGS Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/D-Link DES_DGS Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/D-Link DES_DGS Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/D-Link DES_DGS Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/D-Link DES_DGS Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/D-Link DES_DGS Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/D-Link DES_DGS Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1037,8 +1037,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/D-Link DES_DGS Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/D-Link DES_DGS Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1055,42 +1055,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: eb78fe16041440cb95d98ae01d53007d
@@ -1160,7 +1160,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d68607dce04f429ab8cd7e8adb5b60f1
- expression: 'last(/D-Link DES_DGS Switch SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/D-Link DES_DGS Switch by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1229,7 +1229,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: aabaa197e62649cd929353f131c3fa00
- expression: 'count(/D-Link DES_DGS Switch SNMP/sensor.psu.status[swPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/D-Link DES_DGS Switch by SNMP/sensor.psu.status[swPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '#{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1268,9 +1268,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0cbd0c61e07245af863a19f296f38195
- expression: 'avg(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '#{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '#{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1285,9 +1285,9 @@ zabbix_export:
value: performance
-
uuid: bc0c87dbf83e49dab264e9f2bf1bb418
- expression: 'avg(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '#{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '#{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1296,8 +1296,8 @@ zabbix_export:
dependencies:
-
name: '#{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1307,9 +1307,9 @@ zabbix_export:
value: performance
-
uuid: 8d93aea3774d4a3bbd98127273c648d1
- expression: 'avg(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/D-Link DES_DGS Switch SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/D-Link DES_DGS Switch by SNMP/sensor.temp.value[swTemperatureCurrent.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '#{#SNMPVALUE}: Temperature is too low'
event_name: '#{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1439,7 +1439,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2415,7 +2415,7 @@ zabbix_export:
triggers:
-
uuid: 7a51877b860a479da9bc9f02ee36e01f
- expression: '(last(/D-Link DES_DGS Switch SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES_DGS Switch SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES_DGS Switch SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES_DGS Switch SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/D-Link DES_DGS Switch by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/D-Link DES_DGS Switch by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/D-Link DES_DGS Switch by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/D-Link DES_DGS Switch by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2424,7 +2424,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/D-Link DES_DGS Switch SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/D-Link DES_DGS Switch by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2440,5 +2440,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'D-Link DES_DGS Switch SNMP'
+ host: 'D-Link DES_DGS Switch by SNMP'
key: 'system.cpu.util[agentCPUutilizationIn1min.0]'
diff --git a/templates/net/extreme_snmp/README.md b/templates/net/extreme_snmp/README.md
index e1ad8381fdb..a9ea412e727 100644
--- a/templates/net/extreme_snmp/README.md
+++ b/templates/net/extreme_snmp/README.md
@@ -1,9 +1,9 @@
-# Extreme EXOS SNMP
+# Extreme EXOS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -103,29 +103,29 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Extreme EXOS SNMP/system.cpu.util[extremeCpuMonitorTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|Fan {#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Extreme EXOS SNMP/sensor.fan.status[extremeFanOperational.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Extreme EXOS SNMP/system.name,#1)<>last(/Extreme EXOS SNMP/system.name,#2) and length(last(/Extreme EXOS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Extreme EXOS SNMP/system.hw.serialnumber,#1)<>last(/Extreme EXOS SNMP/system.hw.serialnumber,#2) and length(last(/Extreme EXOS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Extreme EXOS SNMP/system.hw.firmware,#1)<>last(/Extreme EXOS SNMP/system.hw.firmware,#2) and length(last(/Extreme EXOS SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Extreme EXOS SNMP/system.sw.os[extremePrimarySoftwareRev.0],#1)<>last(/Extreme EXOS SNMP/system.sw.os[extremePrimarySoftwareRev.0],#2) and length(last(/Extreme EXOS SNMP/system.sw.os[extremePrimarySoftwareRev.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Extreme EXOS SNMP/vm.memory.util[{#SNMPVALUE}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Extreme EXOS SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Extreme EXOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Extreme EXOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Extreme EXOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Extreme EXOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Extreme EXOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Extreme EXOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Extreme EXOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Extreme EXOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|PSU {#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Extreme EXOS SNMP/sensor.psu.status[extremePowerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Extreme EXOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Extreme EXOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Extreme EXOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Extreme EXOS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Extreme EXOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Extreme EXOS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Extreme EXOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Extreme EXOS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Extreme EXOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_WARN}`<p>Recovery expression:</p>`max(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_WARN}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT} or last(/Extreme EXOS SNMP/sensor.temp.status[extremeOverTemperatureAlarm.0])={$TEMP_CRIT_STATUS} `<p>Recovery expression:</p>`max(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT_LOW}`<p>Recovery expression:</p>`min(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT_LOW}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Extreme EXOS by SNMP/system.cpu.util[extremeCpuMonitorTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|Fan {#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Extreme EXOS by SNMP/sensor.fan.status[extremeFanOperational.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Extreme EXOS by SNMP/system.name,#1)<>last(/Extreme EXOS by SNMP/system.name,#2) and length(last(/Extreme EXOS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Extreme EXOS by SNMP/system.hw.serialnumber,#1)<>last(/Extreme EXOS by SNMP/system.hw.serialnumber,#2) and length(last(/Extreme EXOS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Extreme EXOS by SNMP/system.hw.firmware,#1)<>last(/Extreme EXOS by SNMP/system.hw.firmware,#2) and length(last(/Extreme EXOS by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Extreme EXOS by SNMP/system.sw.os[extremePrimarySoftwareRev.0],#1)<>last(/Extreme EXOS by SNMP/system.sw.os[extremePrimarySoftwareRev.0],#2) and length(last(/Extreme EXOS by SNMP/system.sw.os[extremePrimarySoftwareRev.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Extreme EXOS by SNMP/vm.memory.util[{#SNMPVALUE}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Extreme EXOS by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Extreme EXOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Extreme EXOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Extreme EXOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Extreme EXOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Extreme EXOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Extreme EXOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Extreme EXOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Extreme EXOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|PSU {#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Extreme EXOS by SNMP/sensor.psu.status[extremePowerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Extreme EXOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Extreme EXOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Extreme EXOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Extreme EXOS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Extreme EXOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Extreme EXOS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Extreme EXOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Extreme EXOS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Extreme EXOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_WARN}`<p>Recovery expression:</p>`max(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_WARN}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT} or last(/Extreme EXOS by SNMP/sensor.temp.status[extremeOverTemperatureAlarm.0])={$TEMP_CRIT_STATUS} `<p>Recovery expression:</p>`max(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT_LOW}`<p>Recovery expression:</p>`min(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT_LOW}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/extreme_snmp/template_net_extreme_snmp.yaml b/templates/net/extreme_snmp/template_net_extreme_snmp.yaml
index 64194b1d32b..065c32de2aa 100644
--- a/templates/net/extreme_snmp/template_net_extreme_snmp.yaml
+++ b/templates/net/extreme_snmp/template_net_extreme_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:09:10Z'
+ date: '2022-10-27T14:44:36Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 861dbdece18f4b8f85214a319995eb3e
- template: 'Extreme EXOS SNMP'
- name: 'Extreme EXOS SNMP'
+ template: 'Extreme EXOS by SNMP'
+ name: 'Extreme EXOS by SNMP'
description: |
Template Extreme EXOS
@@ -45,7 +45,7 @@ zabbix_export:
triggers:
-
uuid: 445766fc99c1480eac4d3d403c3ede2b
- expression: 'max(/Extreme EXOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Extreme EXOS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -71,14 +71,14 @@ zabbix_export:
triggers:
-
uuid: fb0abe322fd644b4bb3c1255d564bb47
- expression: 'min(/Extreme EXOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Extreme EXOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Extreme EXOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Extreme EXOS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Extreme EXOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Extreme EXOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -104,17 +104,17 @@ zabbix_export:
triggers:
-
uuid: d29defd9360c489a892821989eeda10c
- expression: 'avg(/Extreme EXOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Extreme EXOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Extreme EXOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Extreme EXOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Extreme EXOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Extreme EXOS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Extreme EXOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Extreme EXOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -160,9 +160,9 @@ zabbix_export:
triggers:
-
uuid: 54362c94be0243ffb907905def0ad06a
- expression: 'avg(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_WARN}'
+ expression: 'avg(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_WARN}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_WARN}-3'
+ recovery_expression: 'max(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_WARN}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -172,10 +172,10 @@ zabbix_export:
-
name: 'Device: Temperature is above critical threshold'
expression: |
- avg(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT}
+ avg(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT}
or
- last(/Extreme EXOS SNMP/sensor.temp.status[extremeOverTemperatureAlarm.0])={$TEMP_CRIT_STATUS}
- recovery_expression: 'max(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT}-3'
+ last(/Extreme EXOS by SNMP/sensor.temp.status[extremeOverTemperatureAlarm.0])={$TEMP_CRIT_STATUS}
+ recovery_expression: 'max(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT}-3'
tags:
-
tag: scope
@@ -185,9 +185,9 @@ zabbix_export:
value: performance
-
uuid: 91a10b28c7a14dd09110448a28a328f9
- expression: 'avg(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT_LOW}'
+ expression: 'avg(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT_LOW}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT_LOW}+3'
+ recovery_expression: 'min(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT_LOW}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -255,7 +255,7 @@ zabbix_export:
triggers:
-
uuid: a77bbfe0755f4901b67a7957805bc566
- expression: 'min(/Extreme EXOS SNMP/system.cpu.util[extremeCpuMonitorTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Extreme EXOS by SNMP/system.cpu.util[extremeCpuMonitorTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -312,7 +312,7 @@ zabbix_export:
triggers:
-
uuid: dd9fbc501f9047fd8fae9dfd741e3778
- expression: 'last(/Extreme EXOS SNMP/system.hw.firmware,#1)<>last(/Extreme EXOS SNMP/system.hw.firmware,#2) and length(last(/Extreme EXOS SNMP/system.hw.firmware))>0'
+ expression: 'last(/Extreme EXOS by SNMP/system.hw.firmware,#1)<>last(/Extreme EXOS by SNMP/system.hw.firmware,#2) and length(last(/Extreme EXOS by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -367,7 +367,7 @@ zabbix_export:
triggers:
-
uuid: db1760a34c884b1aa36e4fc4639791dd
- expression: 'last(/Extreme EXOS SNMP/system.hw.serialnumber,#1)<>last(/Extreme EXOS SNMP/system.hw.serialnumber,#2) and length(last(/Extreme EXOS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Extreme EXOS by SNMP/system.hw.serialnumber,#1)<>last(/Extreme EXOS by SNMP/system.hw.serialnumber,#2) and length(last(/Extreme EXOS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -474,7 +474,7 @@ zabbix_export:
triggers:
-
uuid: 2923c342e8474e3ea3d7411c104a6988
- expression: 'last(/Extreme EXOS SNMP/system.name,#1)<>last(/Extreme EXOS SNMP/system.name,#2) and length(last(/Extreme EXOS SNMP/system.name))>0'
+ expression: 'last(/Extreme EXOS by SNMP/system.name,#1)<>last(/Extreme EXOS by SNMP/system.name,#2) and length(last(/Extreme EXOS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -559,7 +559,7 @@ zabbix_export:
triggers:
-
uuid: af6a823b8f2d4fddae970828d0a3a9c9
- expression: 'last(/Extreme EXOS SNMP/system.sw.os[extremePrimarySoftwareRev.0],#1)<>last(/Extreme EXOS SNMP/system.sw.os[extremePrimarySoftwareRev.0],#2) and length(last(/Extreme EXOS SNMP/system.sw.os[extremePrimarySoftwareRev.0]))>0'
+ expression: 'last(/Extreme EXOS by SNMP/system.sw.os[extremePrimarySoftwareRev.0],#1)<>last(/Extreme EXOS by SNMP/system.sw.os[extremePrimarySoftwareRev.0],#2) and length(last(/Extreme EXOS by SNMP/system.sw.os[extremePrimarySoftwareRev.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -567,7 +567,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Extreme EXOS SNMP/system.name,#1)<>last(/Extreme EXOS SNMP/system.name,#2) and length(last(/Extreme EXOS SNMP/system.name))>0'
+ expression: 'last(/Extreme EXOS by SNMP/system.name,#1)<>last(/Extreme EXOS by SNMP/system.name,#2) and length(last(/Extreme EXOS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -596,7 +596,7 @@ zabbix_export:
triggers:
-
uuid: ecc42656a3d845ee8ad42d0fe45319c2
- expression: 'max(/Extreme EXOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Extreme EXOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -604,7 +604,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Extreme EXOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Extreme EXOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -653,7 +653,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bd0c753f33c441a0bf4567f8b81186d6
- expression: 'count(/Extreme EXOS SNMP/sensor.fan.status[extremeFanOperational.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Extreme EXOS by SNMP/sensor.fan.status[extremeFanOperational.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: 'Fan {#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -730,7 +730,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 50733fd8b4a641708e3a90292f182f20
- expression: 'min(/Extreme EXOS SNMP/vm.memory.util[{#SNMPVALUE}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Extreme EXOS by SNMP/vm.memory.util[{#SNMPVALUE}],5m)>{$MEMORY.UTIL.MAX}'
name: '#{#SNMPVALUE}: High memory utilization'
event_name: '#{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -752,14 +752,14 @@ zabbix_export:
drawtype: BOLD_LINE
color: 1A7C11
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'vm.memory.total[extremeMemoryMonitorSystemTotal.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'vm.memory.available[extremeMemoryMonitorSystemFree.{#SNMPINDEX}]'
-
uuid: 886d032483584e379210c9f05f65b98e
@@ -771,7 +771,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'vm.memory.util[{#SNMPVALUE}]'
-
uuid: ddc38e480b404039807079963eb247f9
@@ -1077,9 +1077,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 706148cec9f24e81a96f44484d3829d3
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1130,21 +1130,21 @@ zabbix_export:
-
uuid: eb704d12b7ef450a85a805392adb2e6b
expression: |
- change(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Extreme EXOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Extreme EXOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1153,8 +1153,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1162,13 +1162,13 @@ zabbix_export:
-
uuid: f61f3c59c1aa488d9ef19a67d46fb5e8
expression: |
- (avg(/Extreme EXOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Extreme EXOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Extreme EXOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Extreme EXOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Extreme EXOS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Extreme EXOS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Extreme EXOS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Extreme EXOS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Extreme EXOS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1178,8 +1178,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1187,12 +1187,12 @@ zabbix_export:
-
uuid: ccf92f29e2564c0bbef6baf6daf93d86
expression: |
- min(/Extreme EXOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Extreme EXOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Extreme EXOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Extreme EXOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Extreme EXOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Extreme EXOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Extreme EXOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Extreme EXOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1202,8 +1202,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Extreme EXOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Extreme EXOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1220,42 +1220,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 63835abf440b4d6b879bfe0ba5cfa576
@@ -1325,7 +1325,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f82c0234ebbd4f2686ce97642f7bbcf8
- expression: 'last(/Extreme EXOS SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Extreme EXOS by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1382,7 +1382,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 710f1bf31381470f9a13c45f887bda4e
- expression: 'count(/Extreme EXOS SNMP/sensor.psu.status[extremePowerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Extreme EXOS by SNMP/sensor.psu.status[extremePowerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: 'PSU {#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1515,7 +1515,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2478,11 +2478,11 @@ zabbix_export:
-
uuid: 132d3e7a1fab4cc08fcbb12eef4e9494
expression: |
- avg(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT}
+ avg(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)>{$TEMP_CRIT}
or
- last(/Extreme EXOS SNMP/sensor.temp.status[extremeOverTemperatureAlarm.0])={$TEMP_CRIT_STATUS}
+ last(/Extreme EXOS by SNMP/sensor.temp.status[extremeOverTemperatureAlarm.0])={$TEMP_CRIT_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Extreme EXOS SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT}-3'
+ recovery_expression: 'max(/Extreme EXOS by SNMP/sensor.temp.value[extremeCurrentTemperature.0],5m)<{$TEMP_CRIT}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -2497,7 +2497,7 @@ zabbix_export:
value: performance
-
uuid: bb967f81aaad4a00ae7916ea80574ae0
- expression: '(last(/Extreme EXOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Extreme EXOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Extreme EXOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Extreme EXOS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Extreme EXOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Extreme EXOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Extreme EXOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Extreme EXOS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2506,7 +2506,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Extreme EXOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Extreme EXOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2522,5 +2522,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Extreme EXOS SNMP'
+ host: 'Extreme EXOS by SNMP'
key: 'system.cpu.util[extremeCpuMonitorTotalUtilization.0]'
diff --git a/templates/net/f5_bigip_snmp/README.md b/templates/net/f5_bigip_snmp/README.md
index 41129506b17..1982edb7a7e 100644
--- a/templates/net/f5_bigip_snmp/README.md
+++ b/templates/net/f5_bigip_snmp/README.md
@@ -1,14 +1,14 @@
-# F5 Big-IP SNMP
+# F5 Big-IP by SNMP
## Overview
-For Zabbix version: 6.2 and higher.
+For Zabbix version: 6.4 and higher.
https://www.f5.com/products/big-ip-services
## Setup
-> See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
+> See [Zabbix template operation](https://www.zabbix.com/documentation/6.4/manual/config/templates_out_of_the_box/network_devices) for basic instructions.
Refer to the vendor documentation.
@@ -184,26 +184,26 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|F5 BIG-IP: Cluster not in sync |<p>-</p> |`count(/F5 Big-IP SNMP/bigip.failover,10m,"ne","3")>8 and count(/F5 Big-IP SNMP/bigip.failover,10m,"ne","4")>6` |WARNING |<p>Manual close: YES</p> |
-|F5 BIG-IP: The device is inconsistent with the device group |<p>The device is inconsistent with the device group, requires user intervention</p> |`last(/F5 Big-IP SNMP/bigip.syncstatus)=4` |WARNING |<p>Manual close: YES</p> |
-|F5 BIG-IP: Changes have been made on the device not sync |<p>Changes have been made on the device not sync to the device group, requires user intervention</p> |`last(/F5 Big-IP SNMP/bigip.syncstatus)=2` |WARNING |<p>Manual close: YES</p> |
-|F5 BIG-IP: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`last(/F5 Big-IP SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])>{$BIGIP.CPU.UTIL.WARN.MAX}`<p>Recovery expression:</p>`last(/F5 Big-IP SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])<{$BIGIP.CPU.UTIL.WARN.MIN}` |WARNING | |
-|F5 BIG-IP: Fan[{#FAN.INDEX}] is in critical state |<p>Please check the fan unit</p> |`last(/F5 Big-IP SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=0` |AVERAGE | |
-|F5 BIG-IP: Fan[{#FAN.INDEX}] is not present |<p>Please check the fan unit</p> |`last(/F5 Big-IP SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=2` |INFO | |
-|F5 BIG-IP: Low free space in file system [{#PART.NAME}] |<p>The system is running out of free space.</p> |`last(/F5 Big-IP SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100<{$BIGIP.FS.FREE.WARN.MIN:"{#PART.NAME}"}`<p>Recovery expression:</p>`last(/F5 Big-IP SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100>{$BIGIP.FS.FREE.WARN.MAX:"{#PART.NAME}"}` |WARNING |<p>Manual close: YES</p> |
-|F5 BIG-IP: Chassis has been replaced |<p>Chassis serial number has changed. Ack to close</p> |`last(/F5 Big-IP SNMP/bigip.serialnumber,#1)<>last(/F5 Big-IP SNMP/bigip.serialnumber,#2) and length(last(/F5 Big-IP SNMP/bigip.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|F5 BIG-IP: High memory utilization in host [{#HOST.ID}] |<p>The system is running out of free memory.</p> |`last(/F5 Big-IP SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total[{#HOST.ID}])*100>{$BIGIP.MEMORY.UTIL.WARN.MAX}`<p>Recovery expression:</p>`last(/F5 Big-IP SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total[{#HOST.ID}])*100<{$BIGIP.MEMORY.UTIL.WARN.MIN}` |WARNING | |
-|F5 BIG-IP: High swap utilization in host [{#HOST.ID}] |<p>The system is running out of free swap memory.</p> |`last(/F5 Big-IP SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MAX}`<p>Recovery expression:</p>`last(/F5 Big-IP SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MIN}` |WARNING | |
-|F5 BIG-IP: There are errors on the network interface |<p>-</p> |`last(/F5 Big-IP SNMP/bigip.net.in.error[{#IF.NAME}])>last(/F5 Big-IP SNMP/bigip.net.in.error[{#IF.NAME}],#2) or last(/F5 Big-IP SNMP/bigip.net.out.error[{#IF.NAME}])>last(/F5 Big-IP SNMP/bigip.net.out.error[{#IF.NAME}],#2)` |AVERAGE | |
-|F5 BIG-IP: Pool {#POOL.NAME} is not available in some capacity: {ITEM.VALUE1} |<p>-</p> |`count(/F5 Big-IP SNMP/bigip.pool.available[{#POOL.NAME}],120m,"ne","1")>20` |AVERAGE |<p>**Depends on**:</p><p>- F5 BIG-IP: Pool {#POOL.NAME} is not enabled in some capacity: {ITEM.VALUE1}</p> |
-|F5 BIG-IP: Pool {#POOL.NAME} is not enabled in some capacity: {ITEM.VALUE1} |<p>-</p> |`count(/F5 Big-IP SNMP/bigip.pool.enabled[{#POOL.NAME}],120m,"ne","1")>4` |AVERAGE | |
-|F5 BIG-IP: Power supply [{#POWER.INDEX}] is in critical state |<p>Please check the power supply unit</p> |`last(/F5 Big-IP SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=0` |HIGH | |
-|F5 BIG-IP: Power supply [{#POWER.INDEX}] is not present |<p>Please check the power supply unit</p> |`last(/F5 Big-IP SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=2` |INFO | |
-|F5 BIG-IP: Certificate expires ({#CERT.NAME}) |<p>Please check certificate</p> |`last(/F5 Big-IP SNMP/bigip.cert.expiration.date[{#CERT.NAME}]) - 86400 * {$BIGIP.CERT.MIN} < now()` |WARNING | |
-|F5 BIG-IP: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/F5 Big-IP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|F5 BIG-IP: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/F5 Big-IP SNMP/bigip.uptime)<10m` |INFO |<p>Manual close: YES</p> |
-|F5 BIG-IP: Chassis temperature |<p>-</p> |`last(/F5 Big-IP SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.HIGH}` |HIGH | |
-|F5 BIG-IP: Chassis temperature |<p>-</p> |`last(/F5 Big-IP SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.WARN}` |WARNING |<p>**Depends on**:</p><p>- F5 BIG-IP: Chassis temperature</p> |
+|F5 BIG-IP: Cluster not in sync |<p>-</p> |`count(/F5 Big-IP by SNMP/bigip.failover,10m,"ne","3")>8 and count(/F5 Big-IP by SNMP/bigip.failover,10m,"ne","4")>6` |WARNING |<p>Manual close: YES</p> |
+|F5 BIG-IP: The device is inconsistent with the device group |<p>The device is inconsistent with the device group, requires user intervention</p> |`last(/F5 Big-IP by SNMP/bigip.syncstatus)=4` |WARNING |<p>Manual close: YES</p> |
+|F5 BIG-IP: Changes have been made on the device not sync |<p>Changes have been made on the device not sync to the device group, requires user intervention</p> |`last(/F5 Big-IP by SNMP/bigip.syncstatus)=2` |WARNING |<p>Manual close: YES</p> |
+|F5 BIG-IP: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`last(/F5 Big-IP by SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])>{$BIGIP.CPU.UTIL.WARN.MAX}`<p>Recovery expression:</p>`last(/F5 Big-IP by SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])<{$BIGIP.CPU.UTIL.WARN.MIN}` |WARNING | |
+|F5 BIG-IP: Fan[{#FAN.INDEX}] is in critical state |<p>Please check the fan unit</p> |`last(/F5 Big-IP by SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=0` |AVERAGE | |
+|F5 BIG-IP: Fan[{#FAN.INDEX}] is not present |<p>Please check the fan unit</p> |`last(/F5 Big-IP by SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=2` |INFO | |
+|F5 BIG-IP: Low free space in file system [{#PART.NAME}] |<p>The system is running out of free space.</p> |`last(/F5 Big-IP by SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP by SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100<{$BIGIP.FS.FREE.WARN.MIN:"{#PART.NAME}"}`<p>Recovery expression:</p>`last(/F5 Big-IP by SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP by SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100>{$BIGIP.FS.FREE.WARN.MAX:"{#PART.NAME}"}` |WARNING |<p>Manual close: YES</p> |
+|F5 BIG-IP: Chassis has been replaced |<p>Chassis serial number has changed. Ack to close</p> |`last(/F5 Big-IP by SNMP/bigip.serialnumber,#1)<>last(/F5 Big-IP by SNMP/bigip.serialnumber,#2) and length(last(/F5 Big-IP by SNMP/bigip.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|F5 BIG-IP: High memory utilization in host [{#HOST.ID}] |<p>The system is running out of free memory.</p> |`last(/F5 Big-IP by SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total[{#HOST.ID}])*100>{$BIGIP.MEMORY.UTIL.WARN.MAX}`<p>Recovery expression:</p>`last(/F5 Big-IP by SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total[{#HOST.ID}])*100<{$BIGIP.MEMORY.UTIL.WARN.MIN}` |WARNING | |
+|F5 BIG-IP: High swap utilization in host [{#HOST.ID}] |<p>The system is running out of free swap memory.</p> |`last(/F5 Big-IP by SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MAX}`<p>Recovery expression:</p>`last(/F5 Big-IP by SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MIN}` |WARNING | |
+|F5 BIG-IP: There are errors on the network interface |<p>-</p> |`last(/F5 Big-IP by SNMP/bigip.net.in.error[{#IF.NAME}])>last(/F5 Big-IP by SNMP/bigip.net.in.error[{#IF.NAME}],#2) or last(/F5 Big-IP by SNMP/bigip.net.out.error[{#IF.NAME}])>last(/F5 Big-IP by SNMP/bigip.net.out.error[{#IF.NAME}],#2)` |AVERAGE | |
+|F5 BIG-IP: Pool {#POOL.NAME} is not available in some capacity: {ITEM.VALUE1} |<p>-</p> |`count(/F5 Big-IP by SNMP/bigip.pool.available[{#POOL.NAME}],120m,"ne","1")>20` |AVERAGE |<p>**Depends on**:</p><p>- F5 BIG-IP: Pool {#POOL.NAME} is not enabled in some capacity: {ITEM.VALUE1}</p> |
+|F5 BIG-IP: Pool {#POOL.NAME} is not enabled in some capacity: {ITEM.VALUE1} |<p>-</p> |`count(/F5 Big-IP by SNMP/bigip.pool.enabled[{#POOL.NAME}],120m,"ne","1")>4` |AVERAGE | |
+|F5 BIG-IP: Power supply [{#POWER.INDEX}] is in critical state |<p>Please check the power supply unit</p> |`last(/F5 Big-IP by SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=0` |HIGH | |
+|F5 BIG-IP: Power supply [{#POWER.INDEX}] is not present |<p>Please check the power supply unit</p> |`last(/F5 Big-IP by SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=2` |INFO | |
+|F5 BIG-IP: Certificate expires ({#CERT.NAME}) |<p>Please check certificate</p> |`last(/F5 Big-IP by SNMP/bigip.cert.expiration.date[{#CERT.NAME}]) - 86400 * {$BIGIP.CERT.MIN} < now()` |WARNING | |
+|F5 BIG-IP: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/F5 Big-IP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|F5 BIG-IP: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/F5 Big-IP by SNMP/bigip.uptime)<10m` |INFO |<p>Manual close: YES</p> |
+|F5 BIG-IP: Chassis temperature |<p>-</p> |`last(/F5 Big-IP by SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.HIGH}` |HIGH | |
+|F5 BIG-IP: Chassis temperature |<p>-</p> |`last(/F5 Big-IP by SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.WARN}` |WARNING |<p>**Depends on**:</p><p>- F5 BIG-IP: Chassis temperature</p> |
## Feedback
diff --git a/templates/net/f5_bigip_snmp/template_net_f5_bigip_snmp.yaml b/templates/net/f5_bigip_snmp/template_net_f5_bigip_snmp.yaml
index fe516985292..402cd7be989 100644
--- a/templates/net/f5_bigip_snmp/template_net_f5_bigip_snmp.yaml
+++ b/templates/net/f5_bigip_snmp/template_net_f5_bigip_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
- version: '6.2'
- date: '2022-10-24T13:37:23Z'
+ version: '6.4'
+ date: '2022-10-31T08:51:05Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 44c2c2d94a4447c6a924386640e4854a
- template: 'F5 Big-IP SNMP'
- name: 'F5 Big-IP SNMP'
+ template: 'F5 Big-IP by SNMP'
+ name: 'F5 Big-IP by SNMP'
description: |
MIBs used:
RFC1213-MIB
@@ -70,7 +70,7 @@ zabbix_export:
triggers:
-
uuid: f93a7ff7cc614c0b84789f325ebb662b
- expression: 'count(/F5 Big-IP SNMP/bigip.failover,10m,"ne","3")>8 and count(/F5 Big-IP SNMP/bigip.failover,10m,"ne","4")>6'
+ expression: 'count(/F5 Big-IP by SNMP/bigip.failover,10m,"ne","3")>8 and count(/F5 Big-IP by SNMP/bigip.failover,10m,"ne","4")>6'
name: 'F5 BIG-IP: Cluster not in sync'
event_name: 'F5 BIG-IP: Cluster not in sync: {ITEM.VALUE}'
opdata: '{ITEM.LASTVALUE}'
@@ -293,7 +293,7 @@ zabbix_export:
triggers:
-
uuid: 8a55167ddebb43f2ac8f6d028aef87c2
- expression: 'last(/F5 Big-IP SNMP/bigip.serialnumber,#1)<>last(/F5 Big-IP SNMP/bigip.serialnumber,#2) and length(last(/F5 Big-IP SNMP/bigip.serialnumber))>0'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.serialnumber,#1)<>last(/F5 Big-IP by SNMP/bigip.serialnumber,#2) and length(last(/F5 Big-IP by SNMP/bigip.serialnumber))>0'
name: 'F5 BIG-IP: Chassis has been replaced'
event_name: 'F5 BIG-IP: Chassis has been replaced (new serial number received)'
priority: INFO
@@ -332,7 +332,7 @@ zabbix_export:
triggers:
-
uuid: 098fe258e8cc4216b0c1800913ba8e18
- expression: 'last(/F5 Big-IP SNMP/bigip.syncstatus)=2'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.syncstatus)=2'
name: 'F5 BIG-IP: Changes have been made on the device not sync'
event_name: 'F5 BIG-IP: Changes have been made on the device not sync to the device group: {ITEM.VALUE}'
opdata: '{ITEM.LASTVALUE}'
@@ -345,7 +345,7 @@ zabbix_export:
value: notice
-
uuid: eb3517626c6d425f9b88a2bc35641ab6
- expression: 'last(/F5 Big-IP SNMP/bigip.syncstatus)=4'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.syncstatus)=4'
name: 'F5 BIG-IP: The device is inconsistent with the device group'
event_name: 'F5 BIG-IP: The device is inconsistent with the device group: {ITEM.VALUE}'
opdata: '{ITEM.LASTVALUE}'
@@ -465,7 +465,7 @@ zabbix_export:
triggers:
-
uuid: 551fd3b77d144ed58f138865e4862901
- expression: 'last(/F5 Big-IP SNMP/bigip.uptime)<10m'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.uptime)<10m'
name: 'F5 BIG-IP: Host has been restarted'
event_name: 'F5 BIG-IP: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -495,7 +495,7 @@ zabbix_export:
triggers:
-
uuid: 9ec4425af8dd4cf59dcb3146e6a8263c
- expression: 'max(/F5 Big-IP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/F5 Big-IP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'F5 BIG-IP: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -549,7 +549,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.blade.temp.value[{#SLOT.INDEX},{#TEMP.INDEX}]'
preprocessing:
-
@@ -625,7 +625,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.blade.voltage.value[{#VOLT.INDEX}]'
preprocessing:
-
@@ -664,7 +664,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 015ce3f5d10749aca1d871a1d26c51c5
- expression: 'last(/F5 Big-IP SNMP/bigip.cert.expiration.date[{#CERT.NAME}]) - 86400 * {$BIGIP.CERT.MIN} < now()'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.cert.expiration.date[{#CERT.NAME}]) - 86400 * {$BIGIP.CERT.MIN} < now()'
name: 'F5 BIG-IP: Certificate expires ({#CERT.NAME})'
event_name: 'F5 BIG-IP: Less than {$BIGIP.CERT.MIN} days left until the certificate expires ({#CERT.NAME})'
opdata: 'Expires: {ITEM.VALUE}'
@@ -741,7 +741,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 546745f6edf7470896d5bf251d760dfe
- expression: 'last(/F5 Big-IP SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=0'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=0'
name: 'F5 BIG-IP: Fan[{#FAN.INDEX}] is in critical state'
priority: AVERAGE
description: 'Please check the fan unit'
@@ -751,7 +751,7 @@ zabbix_export:
value: notice
-
uuid: d20c56720aa54efba37f5fcdfdde0225
- expression: 'last(/F5 Big-IP SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=2'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.chassis.fan.status[{#FAN.INDEX}])=2'
name: 'F5 BIG-IP: Fan[{#FAN.INDEX}] is not present'
priority: INFO
description: 'Please check the fan unit'
@@ -767,7 +767,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.chassis.fan.speed[{#FAN.INDEX}]'
preprocessing:
-
@@ -811,7 +811,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e85cee65875477b85f74aedba6e86c9
- expression: 'last(/F5 Big-IP SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=0'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=0'
name: 'F5 BIG-IP: Power supply [{#POWER.INDEX}] is in critical state'
priority: HIGH
description: 'Please check the power supply unit'
@@ -821,7 +821,7 @@ zabbix_export:
value: notice
-
uuid: 84469f28c4bf47f790a85b9f1f37cff0
- expression: 'last(/F5 Big-IP SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=2'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.chassis.power.status[{#POWER.INDEX}])=2'
name: 'F5 BIG-IP: Power supply [{#POWER.INDEX}] is not present'
priority: INFO
description: 'Please check the power supply unit'
@@ -873,7 +873,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 452167aafe594e3faa3748e6dc470fb1
- expression: 'last(/F5 Big-IP SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.HIGH}'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.HIGH}'
name: 'F5 BIG-IP: Chassis temperature'
event_name: 'F5 BIG-IP: Chassis temperature ({ITEM.LASTVALUE}) of sensor {#TEMP.INDEX} exceeds threshold of {$BIGIP.TEMP.HIGH} °C'
opdata: '{ITEM.LASTVALUE}'
@@ -884,7 +884,7 @@ zabbix_export:
value: notice
-
uuid: 00c0212fcb8049309bf0b3de2b2363b4
- expression: 'last(/F5 Big-IP SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.WARN}'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.WARN}'
name: 'F5 BIG-IP: Chassis temperature'
event_name: 'F5 BIG-IP: Chassis temperature ({ITEM.LASTVALUE}) of sensor {#TEMP.INDEX} exceeds threshold of {$BIGIP.TEMP.WARN} °C'
opdata: '{ITEM.LASTVALUE}'
@@ -892,7 +892,7 @@ zabbix_export:
dependencies:
-
name: 'F5 BIG-IP: Chassis temperature'
- expression: 'last(/F5 Big-IP SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.HIGH}'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.chassis.temp.value[{#TEMP.INDEX}])>{$BIGIP.TEMP.HIGH}'
tags:
-
tag: scope
@@ -905,7 +905,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.chassis.temp.value[{#TEMP.INDEX}]'
preprocessing:
-
@@ -1448,9 +1448,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1163080e05d3433f884773fe1ee0271a
- expression: 'last(/F5 Big-IP SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])>{$BIGIP.CPU.UTIL.WARN.MAX}'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])>{$BIGIP.CPU.UTIL.WARN.MAX}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/F5 Big-IP SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])<{$BIGIP.CPU.UTIL.WARN.MIN}'
+ recovery_expression: 'last(/F5 Big-IP by SNMP/bigip.cpu.usageratio.5m[{#HOST.ID},{#CPU.ID}])<{$BIGIP.CPU.UTIL.WARN.MIN}'
name: 'F5 BIG-IP: High CPU utilization'
event_name: 'F5 BIG-IP: High CPU utilization (over {$BIGIP.CPU.UTIL.WARN.MAX}% for 5m)'
priority: WARNING
@@ -1564,43 +1564,43 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.user.1m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.nice.1m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.system.1m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.idle.1m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.irq.1m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.iowait.1m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '6'
color: AC8C14
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.stolen.1m[{#HOST.ID},{#CPU.ID}]'
-
uuid: 3fd0ca58d8f14e06afa2c58f9d1b46f3
@@ -1609,43 +1609,43 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.user.5m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.nice.5m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.system.5m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.idle.5m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.irq.5m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.iowait.5m[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '6'
color: AC8C14
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.stolen.5m[{#HOST.ID},{#CPU.ID}]'
-
uuid: dba5e4f4c3714f438eacba4b213ce640
@@ -1654,43 +1654,43 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.user.5s[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.nice.5s[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.system.5s[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.idle.5s[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.irq.5s[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.iowait.5s[{#HOST.ID},{#CPU.ID}]'
-
sortorder: '6'
color: AC8C14
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.stolen.1s[{#HOST.ID},{#CPU.ID}]'
preprocessing:
-
@@ -1793,7 +1793,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.sensor.fan[{#CPU.SENSOR.SLOT},{#CPU.SENSOR.INDEX}]'
-
uuid: be756734cec74d9fb427fb1d515c7888
@@ -1802,7 +1802,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.cpu.sensor.temperature[{#CPU.SENSOR.SLOT},{#CPU.SENSOR.INDEX}]'
preprocessing:
-
@@ -1924,9 +1924,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 32b87997dc0b4967bdb158f1dc0baad2
- expression: 'last(/F5 Big-IP SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100<{$BIGIP.FS.FREE.WARN.MIN:"{#PART.NAME}"}'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP by SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100<{$BIGIP.FS.FREE.WARN.MIN:"{#PART.NAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/F5 Big-IP SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100>{$BIGIP.FS.FREE.WARN.MAX:"{#PART.NAME}"}'
+ recovery_expression: 'last(/F5 Big-IP by SNMP/bigip.disktable.freeblocks[{#PART.NAME}])/last(/F5 Big-IP by SNMP/bigip.disktable.totalblocks[{#PART.NAME}])*100>{$BIGIP.FS.FREE.WARN.MAX:"{#PART.NAME}"}'
name: 'F5 BIG-IP: Low free space in file system [{#PART.NAME}]'
event_name: 'F5 BIG-IP: Low free space in file system [{#PART.NAME}] (less than {$BIGIP.FS.FREE.WARN.MIN}% for 5m)'
priority: WARNING
@@ -1944,13 +1944,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.disktable.freeblocks[{#PART.NAME}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.disktable.totalblocks[{#PART.NAME}]'
preprocessing:
-
@@ -2101,9 +2101,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e72f446075214129ab1d6269fcd87051
- expression: 'last(/F5 Big-IP SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total[{#HOST.ID}])*100>{$BIGIP.MEMORY.UTIL.WARN.MAX}'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total[{#HOST.ID}])*100>{$BIGIP.MEMORY.UTIL.WARN.MAX}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/F5 Big-IP SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total[{#HOST.ID}])*100<{$BIGIP.MEMORY.UTIL.WARN.MIN}'
+ recovery_expression: 'last(/F5 Big-IP by SNMP/bigip.memory.used[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total[{#HOST.ID}])*100<{$BIGIP.MEMORY.UTIL.WARN.MIN}'
name: 'F5 BIG-IP: High memory utilization in host [{#HOST.ID}]'
event_name: 'F5 BIG-IP: High memory utilization in host [{#HOST.ID}] (over {$BIGIP.MEMORY.UTIL.WARN.MAX}%)'
priority: WARNING
@@ -2114,9 +2114,9 @@ zabbix_export:
value: performance
-
uuid: 5cf3e1f819ee46f49ba89156c53274ec
- expression: 'last(/F5 Big-IP SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MAX}'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MAX}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/F5 Big-IP SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MIN}'
+ recovery_expression: 'last(/F5 Big-IP by SNMP/bigip.memory.used.swap[{#HOST.ID}])/last(/F5 Big-IP by SNMP/bigip.memory.total.swap[{#HOST.ID}])*100>{$BIGIP.SWAP.UTIL.WARN.MIN}'
name: 'F5 BIG-IP: High swap utilization in host [{#HOST.ID}]'
event_name: 'F5 BIG-IP: High swap utilization in host [{#HOST.ID}] (over {$BIGIP.SWAP.UTIL.WARN.MAX}%)'
priority: WARNING
@@ -2133,13 +2133,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.memory.used[{#HOST.ID}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.memory.total[{#HOST.ID}]'
-
uuid: 4b7815c72f264209b288c019541a09e6
@@ -2148,13 +2148,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.memory.used.swap[{#HOST.ID}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.memory.total.swap[{#HOST.ID}]'
preprocessing:
-
@@ -2270,19 +2270,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.module.memory.ratio[{#MODULE.NAME}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.module.cpu.ratio[{#MODULE.NAME}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.module.disk.ratio[{#MODULE.NAME}]'
preprocessing:
-
@@ -2702,7 +2702,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2d9214768b684ba880703d738ac52099
- expression: 'last(/F5 Big-IP SNMP/bigip.net.in.error[{#IF.NAME}])>last(/F5 Big-IP SNMP/bigip.net.in.error[{#IF.NAME}],#2) or last(/F5 Big-IP SNMP/bigip.net.out.error[{#IF.NAME}])>last(/F5 Big-IP SNMP/bigip.net.out.error[{#IF.NAME}],#2)'
+ expression: 'last(/F5 Big-IP by SNMP/bigip.net.in.error[{#IF.NAME}])>last(/F5 Big-IP by SNMP/bigip.net.in.error[{#IF.NAME}],#2) or last(/F5 Big-IP by SNMP/bigip.net.out.error[{#IF.NAME}])>last(/F5 Big-IP by SNMP/bigip.net.out.error[{#IF.NAME}],#2)'
name: 'F5 BIG-IP: There are errors on the network interface'
event_name: 'F5 BIG-IP: There are errors on the network interface ({#IF.NAME})'
priority: AVERAGE
@@ -2718,39 +2718,39 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.net.in.pkts.rate[{#IF.NAME}]'
-
sortorder: '1'
color: 2774A4
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.net.in.bytes.rate[{#IF.NAME}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.net.out.pkts.rate[{#IF.NAME}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.net.out.bytes.rate[{#IF.NAME}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.net.in.multicast.rate[{#IF.NAME}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.net.out.multicast.rate[{#IF.NAME}]'
preprocessing:
-
@@ -3005,27 +3005,27 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.node.net.in.pkts.rate[{#NODE.NAME}]'
-
sortorder: '1'
color: 2774A4
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.node.net.in.bytes.rate[{#NODE.NAME}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.node.net.out.pkts.rate[{#NODE.NAME}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.node.net.out.bytes.rate[{#NODE.NAME}]'
preprocessing:
-
@@ -3077,14 +3077,14 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0b6e708075684cbab0d8c598f3467e0c
- expression: 'count(/F5 Big-IP SNMP/bigip.pool.available[{#POOL.NAME}],120m,"ne","1")>20'
+ expression: 'count(/F5 Big-IP by SNMP/bigip.pool.available[{#POOL.NAME}],120m,"ne","1")>20'
name: 'F5 BIG-IP: Pool {#POOL.NAME} is not available in some capacity: {ITEM.VALUE1}'
opdata: '{ITEM.LASTVALUE}'
priority: AVERAGE
dependencies:
-
name: 'F5 BIG-IP: Pool {#POOL.NAME} is not enabled in some capacity: {ITEM.VALUE1}'
- expression: 'count(/F5 Big-IP SNMP/bigip.pool.enabled[{#POOL.NAME}],120m,"ne","1")>4'
+ expression: 'count(/F5 Big-IP by SNMP/bigip.pool.enabled[{#POOL.NAME}],120m,"ne","1")>4'
tags:
-
tag: scope
@@ -3124,7 +3124,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4d0431e2c4934f37be7302ffedd69e8a
- expression: 'count(/F5 Big-IP SNMP/bigip.pool.enabled[{#POOL.NAME}],120m,"ne","1")>4'
+ expression: 'count(/F5 Big-IP by SNMP/bigip.pool.enabled[{#POOL.NAME}],120m,"ne","1")>4'
name: 'F5 BIG-IP: Pool {#POOL.NAME} is not enabled in some capacity: {ITEM.VALUE1}'
opdata: '{ITEM.LASTVALUE}'
priority: AVERAGE
@@ -3373,27 +3373,27 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.pool.net.in.pkts.rate[{#POOL.NAME}]'
-
sortorder: '1'
color: 2774A4
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.pool.net.in.bytes.rate[{#POOL.NAME}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.pool.net.out.pkts.rate[{#POOL.NAME}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.pool.net.out.bytes.rate[{#POOL.NAME}]'
preprocessing:
-
@@ -3702,27 +3702,27 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.vserver.net.in.pkts.rate[{#VSERVER.NAME}]'
-
sortorder: '1'
color: 2774A4
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.vserver.net.in.bytes.rate[{#VSERVER.NAME}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.vserver.net.out.pkts.rate[{#VSERVER.NAME}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.vserver.net.out.bytes.rate[{#VSERVER.NAME}]'
-
uuid: 17d18d4117f943d18873972584f3374e
@@ -3731,19 +3731,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.vserver.usage.5s[{#VSERVER.NAME}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.vserver.usage.1m[{#VSERVER.NAME}]'
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: 'bigip.vserver.usage.5m[{#VSERVER.NAME}]'
preprocessing:
-
@@ -3982,35 +3982,35 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: bigip.tcp.open
-
sortorder: '1'
color: 2774A4
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: bigip.udp.open
-
sortorder: '2'
color: F63100
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: bigip.tcp.close_wait
-
sortorder: '3'
color: A54F10
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: bigip.tcp.fin1_wait
-
sortorder: '4'
color: FC6EA3
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: bigip.tcp.fin2_wait
-
sortorder: '5'
color: 6C59DC
item:
- host: 'F5 Big-IP SNMP'
+ host: 'F5 Big-IP by SNMP'
key: bigip.tcp.time_wait
diff --git a/templates/net/generic_snmp/README.md b/templates/net/generic_snmp/README.md
index 32a4ac5ba24..b5fab66bb42 100644
--- a/templates/net/generic_snmp/README.md
+++ b/templates/net/generic_snmp/README.md
@@ -1,9 +1,9 @@
-# Network Generic Device SNMP
+# Network Generic Device by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
Use this template if you can't find the template for specific vendor or device family.
## Setup
@@ -77,19 +77,19 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Network Generic Device SNMP/system.name,#1)<>last(/Network Generic Device SNMP/system.name,#2) and length(last(/Network Generic Device SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Network Generic Device SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Network Generic Device SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/Network Generic Device SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Network Generic Device SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/Network Generic Device SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Network Generic Device SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Network Generic Device SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Network Generic Device SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Network Generic Device SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Network Generic Device SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Network Generic Device SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Network Generic Device SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Network Generic Device SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Network Generic Device SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Network Generic Device SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Network Generic Device SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Network Generic Device SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Network Generic Device SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Network Generic Device by SNMP/system.name,#1)<>last(/Network Generic Device by SNMP/system.name,#2) and length(last(/Network Generic Device by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Network Generic Device by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Network Generic Device by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/Network Generic Device by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Network Generic Device by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/Network Generic Device by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Network Generic Device by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Network Generic Device by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Network Generic Device by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Network Generic Device by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Network Generic Device by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Network Generic Device by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Network Generic Device by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Network Generic Device by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Network Generic Device by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Network Generic Device by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Network Generic Device by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Network Generic Device by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Network Generic Device by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/generic_snmp/template_net_generic_snmp.yaml b/templates/net/generic_snmp/template_net_generic_snmp.yaml
index c84569a9732..87f002152bf 100644
--- a/templates/net/generic_snmp/template_net_generic_snmp.yaml
+++ b/templates/net/generic_snmp/template_net_generic_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:09:14Z'
+ date: '2022-10-27T14:41:46Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 67332e679035423f85090aa985947c36
- template: 'Network Generic Device SNMP'
- name: 'Network Generic Device SNMP'
+ template: 'Network Generic Device by SNMP'
+ name: 'Network Generic Device by SNMP'
description: |
Template Net Network Generic Device
@@ -42,7 +42,7 @@ zabbix_export:
triggers:
-
uuid: d08cae0e7fa54dfea41449f0adabe05d
- expression: 'max(/Network Generic Device SNMP/icmpping,#3)=0'
+ expression: 'max(/Network Generic Device by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -68,14 +68,14 @@ zabbix_export:
triggers:
-
uuid: d70eb18878114ae69e5f5f95f4b898cc
- expression: 'min(/Network Generic Device SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Network Generic Device SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Network Generic Device by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Network Generic Device by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Network Generic Device SNMP/icmpping,#3)=0'
+ expression: 'max(/Network Generic Device by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -101,17 +101,17 @@ zabbix_export:
triggers:
-
uuid: 09bcfc7a9e3d45d99d37b56a404df610
- expression: 'avg(/Network Generic Device SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Network Generic Device by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Network Generic Device SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Network Generic Device SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Network Generic Device by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Network Generic Device by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Network Generic Device SNMP/icmpping,#3)=0'
+ expression: 'max(/Network Generic Device by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -257,7 +257,7 @@ zabbix_export:
triggers:
-
uuid: 5f11afa80f534add85dd03e06466fbc9
- expression: 'last(/Network Generic Device SNMP/system.name,#1)<>last(/Network Generic Device SNMP/system.name,#2) and length(last(/Network Generic Device SNMP/system.name))>0'
+ expression: 'last(/Network Generic Device by SNMP/system.name,#1)<>last(/Network Generic Device by SNMP/system.name,#2) and length(last(/Network Generic Device by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -338,7 +338,7 @@ zabbix_export:
triggers:
-
uuid: d534ea9f1ad34633bdd361f20733b749
- expression: 'max(/Network Generic Device SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Network Generic Device by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -346,7 +346,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Network Generic Device SNMP/icmpping,#3)=0'
+ expression: 'max(/Network Generic Device by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -643,9 +643,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9b5fdc0da9fa49918b3986d1eee02cfc
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFDESCR}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -696,21 +696,21 @@ zabbix_export:
-
uuid: f06a612448bc4cc2b0b5641708e9153a
expression: |
- change(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ change(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
and (
- last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Network Generic Device SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Network Generic Device by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -719,8 +719,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -728,13 +728,13 @@ zabbix_export:
-
uuid: e0b02506b47145a8bde6a19890a2e32b
expression: |
- (avg(/Network Generic Device SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
- avg(/Network Generic Device SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
- last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ (avg(/Network Generic Device by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
+ avg(/Network Generic Device by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
+ last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Network Generic Device SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
- avg(/Network Generic Device SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
+ avg(/Network Generic Device by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
+ avg(/Network Generic Device by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Network Generic Device by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
name: 'Interface {#IFDESCR}: High bandwidth usage'
event_name: 'Interface {#IFDESCR}: High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -744,8 +744,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -753,12 +753,12 @@ zabbix_export:
-
uuid: 1a2e2ea2ecf047a68168bdcceb8d1e39
expression: |
- min(/Network Generic Device SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Network Generic Device SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Network Generic Device by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Network Generic Device by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Network Generic Device SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Network Generic Device SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Network Generic Device by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Network Generic Device by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFDESCR}: High error rate'
event_name: 'Interface {#IFDESCR}: High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -768,8 +768,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Network Generic Device SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Network Generic Device by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -783,42 +783,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Network Generic Device SNMP'
+ host: 'Network Generic Device by SNMP'
key: 'net.if.in[ifInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Network Generic Device SNMP'
+ host: 'Network Generic Device by SNMP'
key: 'net.if.out[ifOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Network Generic Device SNMP'
+ host: 'Network Generic Device by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Network Generic Device SNMP'
+ host: 'Network Generic Device by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Network Generic Device SNMP'
+ host: 'Network Generic Device by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Network Generic Device SNMP'
+ host: 'Network Generic Device by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: f6784e45dac14c91bea4ffb14d4793e9
@@ -888,7 +888,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 58acb95392e845bdb2a7064af0228208
- expression: 'last(/Network Generic Device SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Network Generic Device by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1003,7 +1003,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Network Generic Device SNMP'
+ host: 'Network Generic Device by SNMP'
name: 'Interface {#IFDESCR}: Network traffic'
valuemaps:
-
@@ -1929,7 +1929,7 @@ zabbix_export:
triggers:
-
uuid: 536fafc0bb664fcb8b4c8acc18fe5c29
- expression: '(last(/Network Generic Device SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Network Generic Device SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Network Generic Device SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Network Generic Device SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Network Generic Device by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Network Generic Device by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Network Generic Device by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Network Generic Device by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1938,7 +1938,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Network Generic Device SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Network Generic Device by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/net/hp_hh3c_snmp/README.md b/templates/net/hp_hh3c_snmp/README.md
index 43a26d658d4..81f1f41b7c9 100644
--- a/templates/net/hp_hh3c_snmp/README.md
+++ b/templates/net/hp_hh3c_snmp/README.md
@@ -1,9 +1,9 @@
-# HP Comware HH3C SNMP
+# HP Comware HH3C by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
http://certifiedgeek.weebly.com/blog/hp-comware-snmp-mib-for-cpu-memory-and-temperature
http://www.h3c.com.hk/products___solutions/technology/system_management/configuration_example/200912/656451_57_0.htm
@@ -110,31 +110,31 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#MODULE_NAME}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HP Comware HH3C SNMP/system.cpu.util[hh3cEntityExtCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#ENT_NAME}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/HP Comware HH3C SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"fanError\"}")=1 or count(/HP Comware HH3C SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"hardwareFaulty\"}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HP Comware HH3C SNMP/system.name,#1)<>last(/HP Comware HH3C SNMP/system.name,#2) and length(last(/HP Comware HH3C SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HP Comware HH3C SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/HP Comware HH3C SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/HP Comware HH3C SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#MODULE_NAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HP Comware HH3C SNMP/vm.memory.util[hh3cEntityExtMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/HP Comware HH3C SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/HP Comware HH3C SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/HP Comware HH3C SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/HP Comware HH3C SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/HP Comware HH3C SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/HP Comware HH3C SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/HP Comware HH3C SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/HP Comware HH3C SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/HP Comware HH3C SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#ENT_NAME}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/HP Comware HH3C SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"psuError\"}")=1 or count(/HP Comware HH3C SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"rpsError\"}")=1 or count(/HP Comware HH3C SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"hardwareFaulty\"}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HP Comware HH3C SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Comware HH3C SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Comware HH3C SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Comware HH3C SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HP Comware HH3C SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/HP Comware HH3C SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/HP Comware HH3C SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Comware HH3C SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/HP Comware HH3C SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|{#MODULE_NAME}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HP Comware HH3C by SNMP/system.cpu.util[hh3cEntityExtCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#ENT_NAME}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/HP Comware HH3C by SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"fanError\"}")=1 or count(/HP Comware HH3C by SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"hardwareFaulty\"}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HP Comware HH3C by SNMP/system.name,#1)<>last(/HP Comware HH3C by SNMP/system.name,#2) and length(last(/HP Comware HH3C by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HP Comware HH3C by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/HP Comware HH3C by SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C by SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/HP Comware HH3C by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#MODULE_NAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HP Comware HH3C by SNMP/vm.memory.util[hh3cEntityExtMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/HP Comware HH3C by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/HP Comware HH3C by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/HP Comware HH3C by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/HP Comware HH3C by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/HP Comware HH3C by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/HP Comware HH3C by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/HP Comware HH3C by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/HP Comware HH3C by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/HP Comware HH3C by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#ENT_NAME}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/HP Comware HH3C by SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"psuError\"}")=1 or count(/HP Comware HH3C by SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"rpsError\"}")=1 or count(/HP Comware HH3C by SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"hardwareFaulty\"}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HP Comware HH3C by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Comware HH3C by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Comware HH3C by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Comware HH3C by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HP Comware HH3C by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/HP Comware HH3C by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/HP Comware HH3C by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Comware HH3C by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/HP Comware HH3C by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/net/hp_hh3c_snmp/template_net_hp_hh3c_snmp.yaml b/templates/net/hp_hh3c_snmp/template_net_hp_hh3c_snmp.yaml
index f20ee7da059..463e31eb2eb 100644
--- a/templates/net/hp_hh3c_snmp/template_net_hp_hh3c_snmp.yaml
+++ b/templates/net/hp_hh3c_snmp/template_net_hp_hh3c_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:09:20Z'
+ date: '2022-10-27T14:41:47Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 57aeccd43b744942b9555269b79a96ad
- template: 'HP Comware HH3C SNMP'
- name: 'HP Comware HH3C SNMP'
+ template: 'HP Comware HH3C by SNMP'
+ name: 'HP Comware HH3C by SNMP'
description: |
Template Net HP Comware (HH3C)
@@ -50,7 +50,7 @@ zabbix_export:
triggers:
-
uuid: 1bd6a4748e29498e99ccd3b23d83cdf7
- expression: 'max(/HP Comware HH3C SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Comware HH3C by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -76,14 +76,14 @@ zabbix_export:
triggers:
-
uuid: d41edaea369d40d2944af72a3ee76850
- expression: 'min(/HP Comware HH3C SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Comware HH3C SNMP/icmppingloss,5m)<100'
+ expression: 'min(/HP Comware HH3C by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Comware HH3C by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP Comware HH3C SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Comware HH3C by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -109,17 +109,17 @@ zabbix_export:
triggers:
-
uuid: 2698115b6f014e8cbdb11c2d5eeb8f08
- expression: 'avg(/HP Comware HH3C SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/HP Comware HH3C by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/HP Comware HH3C SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Comware HH3C SNMP/icmppingloss,5m)<100'
+ expression: 'min(/HP Comware HH3C by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Comware HH3C by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP Comware HH3C SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Comware HH3C by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -265,7 +265,7 @@ zabbix_export:
triggers:
-
uuid: cf1d0aa58a194904902899dbba814514
- expression: 'last(/HP Comware HH3C SNMP/system.name,#1)<>last(/HP Comware HH3C SNMP/system.name,#2) and length(last(/HP Comware HH3C SNMP/system.name))>0'
+ expression: 'last(/HP Comware HH3C by SNMP/system.name,#1)<>last(/HP Comware HH3C by SNMP/system.name,#2) and length(last(/HP Comware HH3C by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -346,7 +346,7 @@ zabbix_export:
triggers:
-
uuid: bc6e9c399c3d4d43aaeb5a1b03deb7d4
- expression: 'max(/HP Comware HH3C SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HP Comware HH3C by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -354,7 +354,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP Comware HH3C SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Comware HH3C by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -397,7 +397,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 17e0f72418f4432d852b5c39ddf675bd
- expression: 'last(/HP Comware HH3C SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}]))>0'
+ expression: 'last(/HP Comware HH3C by SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C by SNMP/system.hw.firmware[entPhysicalFirmwareRev.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -450,7 +450,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d3633f4584344570a1c0570f0b082590
- expression: 'last(/HP Comware HH3C SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/HP Comware HH3C by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -503,7 +503,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9e6cccf7daec4405ac3bb1a27670fcee
- expression: 'last(/HP Comware HH3C SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0'
+ expression: 'last(/HP Comware HH3C by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/HP Comware HH3C by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -511,7 +511,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/HP Comware HH3C SNMP/system.name,#1)<>last(/HP Comware HH3C SNMP/system.name,#2) and length(last(/HP Comware HH3C SNMP/system.name))>0'
+ expression: 'last(/HP Comware HH3C by SNMP/system.name,#1)<>last(/HP Comware HH3C by SNMP/system.name,#2) and length(last(/HP Comware HH3C by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -553,7 +553,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b0821c8e75e14e53906c3a3f209a2785
- expression: 'count(/HP Comware HH3C SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"fanError\"}")=1 or count(/HP Comware HH3C SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"hardwareFaulty\"}")=1'
+ expression: 'count(/HP Comware HH3C by SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"fanError\"}")=1 or count(/HP Comware HH3C by SNMP/sensor.fan.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"hardwareFaulty\"}")=1'
name: '{#ENT_NAME}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -606,7 +606,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 37a4a248c89240fe82c5fd6622123aa0
- expression: 'min(/HP Comware HH3C SNMP/system.cpu.util[hh3cEntityExtCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/HP Comware HH3C by SNMP/system.cpu.util[hh3cEntityExtCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '{#MODULE_NAME}: High CPU utilization'
event_name: '{#MODULE_NAME}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -636,7 +636,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e8d3cb45afea4cbd935c9ea668746260
- expression: 'min(/HP Comware HH3C SNMP/vm.memory.util[hh3cEntityExtMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/HP Comware HH3C by SNMP/vm.memory.util[hh3cEntityExtMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#MODULE_NAME}: High memory utilization'
event_name: '{#MODULE_NAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -659,7 +659,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'system.cpu.util[hh3cEntityExtCpuUsage.{#SNMPINDEX}]'
-
uuid: ff71369f73174bc0baf98f6da6f82d97
@@ -671,7 +671,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'vm.memory.util[hh3cEntityExtMemUsage.{#SNMPINDEX}]'
-
uuid: ef05164a28be4a37950e7edc17dd389b
@@ -977,9 +977,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d0a5ea31836946f28abe357440ebdbea
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1030,21 +1030,21 @@ zabbix_export:
-
uuid: b672a06043664dafa8f69d7d530a8723
expression: |
- change(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/HP Comware HH3C SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/HP Comware HH3C by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1053,8 +1053,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1062,13 +1062,13 @@ zabbix_export:
-
uuid: 98c74ed2d41941218802f4c472331f46
expression: |
- (avg(/HP Comware HH3C SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/HP Comware HH3C SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/HP Comware HH3C by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/HP Comware HH3C by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/HP Comware HH3C SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/HP Comware HH3C SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/HP Comware HH3C by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/HP Comware HH3C by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Comware HH3C by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1078,8 +1078,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1087,12 +1087,12 @@ zabbix_export:
-
uuid: d7d8ad2b63ac41e6b84852c312c2a8d9
expression: |
- min(/HP Comware HH3C SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/HP Comware HH3C SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/HP Comware HH3C by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/HP Comware HH3C by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/HP Comware HH3C SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/HP Comware HH3C SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/HP Comware HH3C by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/HP Comware HH3C by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1102,8 +1102,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/HP Comware HH3C SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/HP Comware HH3C by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1120,42 +1120,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 21d413e388294d288edc95d98eb27980
@@ -1225,7 +1225,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0ff624a6250b431498e4747678149e4b
- expression: 'last(/HP Comware HH3C SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/HP Comware HH3C by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1290,7 +1290,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0c3cb88352e2417fb2b80bb78448fb35
- expression: 'count(/HP Comware HH3C SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"psuError\"}")=1 or count(/HP Comware HH3C SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"rpsError\"}")=1 or count(/HP Comware HH3C SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"hardwareFaulty\"}")=1'
+ expression: 'count(/HP Comware HH3C by SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"psuError\"}")=1 or count(/HP Comware HH3C by SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"rpsError\"}")=1 or count(/HP Comware HH3C by SNMP/sensor.psu.status[hh3cEntityExtErrorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"hardwareFaulty\"}")=1'
name: '{#ENT_NAME}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1345,9 +1345,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: bbad03018e8e408c952cca2615b4eab3
- expression: 'avg(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1362,9 +1362,9 @@ zabbix_export:
value: performance
-
uuid: cda6a4e305fe41239462d2f85acc5590
- expression: 'avg(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1373,8 +1373,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1384,9 +1384,9 @@ zabbix_export:
value: performance
-
uuid: 340a9c397bff4ac5a37a2ada9d0c1e69
- expression: 'avg(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/HP Comware HH3C SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/HP Comware HH3C by SNMP/sensor.temp.value[hh3cEntityExtTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1525,7 +1525,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'HP Comware HH3C SNMP'
+ host: 'HP Comware HH3C by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2506,7 +2506,7 @@ zabbix_export:
triggers:
-
uuid: c1372deba2b148f4ac8be6493f0b9868
- expression: '(last(/HP Comware HH3C SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Comware HH3C SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Comware HH3C SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Comware HH3C SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/HP Comware HH3C by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Comware HH3C by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Comware HH3C by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Comware HH3C by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2515,7 +2515,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/HP Comware HH3C SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HP Comware HH3C by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/net/hp_hpn_snmp/README.md b/templates/net/hp_hpn_snmp/README.md
index 344335033ce..b4371ea6b8b 100644
--- a/templates/net/hp_hpn_snmp/README.md
+++ b/templates/net/hp_hpn_snmp/README.md
@@ -1,9 +1,9 @@
-# HP Enterprise Switch SNMP
+# HP Enterprise Switch by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This template was tested on:
@@ -111,30 +111,30 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HP Enterprise Switch SNMP/system.cpu.util[hpSwitchCpuStat.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#ENT_DESCR}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/HP Enterprise Switch SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"bad\"}")=1` |AVERAGE | |
-|{#ENT_DESCR}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/HP Enterprise Switch SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#ENT_DESCR}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HP Enterprise Switch SNMP/system.name,#1)<>last(/HP Enterprise Switch SNMP/system.name,#2) and length(last(/HP Enterprise Switch SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HP Enterprise Switch SNMP/system.hw.serialnumber,#1)<>last(/HP Enterprise Switch SNMP/system.hw.serialnumber,#2) and length(last(/HP Enterprise Switch SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/HP Enterprise Switch SNMP/system.hw.firmware,#1)<>last(/HP Enterprise Switch SNMP/system.hw.firmware,#2) and length(last(/HP Enterprise Switch SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HP Enterprise Switch SNMP/vm.memory.util[snmp.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/HP Enterprise Switch SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/HP Enterprise Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/HP Enterprise Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/HP Enterprise Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/HP Enterprise Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/HP Enterprise Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/HP Enterprise Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/HP Enterprise Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/HP Enterprise Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#ENT_DESCR}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/HP Enterprise Switch SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"bad\"}")=1` |AVERAGE | |
-|{#ENT_DESCR}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/HP Enterprise Switch SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#ENT_DESCR}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HP Enterprise Switch SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Enterprise Switch SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Enterprise Switch SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Enterprise Switch SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HP Enterprise Switch SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/HP Enterprise Switch SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/HP Enterprise Switch SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Enterprise Switch SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/HP Enterprise Switch SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
-|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
-|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/HP Enterprise Switch by SNMP/system.cpu.util[hpSwitchCpuStat.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#ENT_DESCR}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/HP Enterprise Switch by SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"bad\"}")=1` |AVERAGE | |
+|{#ENT_DESCR}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/HP Enterprise Switch by SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#ENT_DESCR}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HP Enterprise Switch by SNMP/system.name,#1)<>last(/HP Enterprise Switch by SNMP/system.name,#2) and length(last(/HP Enterprise Switch by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HP Enterprise Switch by SNMP/system.hw.serialnumber,#1)<>last(/HP Enterprise Switch by SNMP/system.hw.serialnumber,#2) and length(last(/HP Enterprise Switch by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/HP Enterprise Switch by SNMP/system.hw.firmware,#1)<>last(/HP Enterprise Switch by SNMP/system.hw.firmware,#2) and length(last(/HP Enterprise Switch by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/HP Enterprise Switch by SNMP/vm.memory.util[snmp.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/HP Enterprise Switch by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/HP Enterprise Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/HP Enterprise Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/HP Enterprise Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/HP Enterprise Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/HP Enterprise Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/HP Enterprise Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/HP Enterprise Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/HP Enterprise Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#ENT_DESCR}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/HP Enterprise Switch by SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"bad\"}")=1` |AVERAGE | |
+|{#ENT_DESCR}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/HP Enterprise Switch by SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#ENT_DESCR}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HP Enterprise Switch by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Enterprise Switch by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Enterprise Switch by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Enterprise Switch by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HP Enterprise Switch by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/HP Enterprise Switch by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/HP Enterprise Switch by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Enterprise Switch by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/HP Enterprise Switch by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
+|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
+|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/hp_hpn_snmp/template_net_hp_hpn_snmp.yaml b/templates/net/hp_hpn_snmp/template_net_hp_hpn_snmp.yaml
index 0c104eb1c76..6f4affe8648 100644
--- a/templates/net/hp_hpn_snmp/template_net_hp_hpn_snmp.yaml
+++ b/templates/net/hp_hpn_snmp/template_net_hp_hpn_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:09:25Z'
+ date: '2022-10-27T14:44:29Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: cce20a5d149a48b7ac7f5383c3510883
- template: 'HP Enterprise Switch SNMP'
- name: 'HP Enterprise Switch SNMP'
+ template: 'HP Enterprise Switch by SNMP'
+ name: 'HP Enterprise Switch by SNMP'
description: |
Template Net HP Enterprise Switch
@@ -48,7 +48,7 @@ zabbix_export:
triggers:
-
uuid: 8fb33a256deb49a096b287493285e300
- expression: 'max(/HP Enterprise Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Enterprise Switch by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -74,14 +74,14 @@ zabbix_export:
triggers:
-
uuid: 589e13a6ab084dd4b7d1456f7707f44d
- expression: 'min(/HP Enterprise Switch SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Enterprise Switch SNMP/icmppingloss,5m)<100'
+ expression: 'min(/HP Enterprise Switch by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Enterprise Switch by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP Enterprise Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Enterprise Switch by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -107,17 +107,17 @@ zabbix_export:
triggers:
-
uuid: 75bdd8a0cd664815aa3e4fa54d4f0b97
- expression: 'avg(/HP Enterprise Switch SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/HP Enterprise Switch by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/HP Enterprise Switch SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Enterprise Switch SNMP/icmppingloss,5m)<100'
+ expression: 'min(/HP Enterprise Switch by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP Enterprise Switch by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP Enterprise Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Enterprise Switch by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -182,7 +182,7 @@ zabbix_export:
triggers:
-
uuid: 883e49e933bd4cfda0e7dde774604a0a
- expression: 'min(/HP Enterprise Switch SNMP/system.cpu.util[hpSwitchCpuStat.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/HP Enterprise Switch by SNMP/system.cpu.util[hpSwitchCpuStat.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -245,7 +245,7 @@ zabbix_export:
triggers:
-
uuid: a9dcdf4129d041eca8dadc8bfbc455ee
- expression: 'last(/HP Enterprise Switch SNMP/system.hw.firmware,#1)<>last(/HP Enterprise Switch SNMP/system.hw.firmware,#2) and length(last(/HP Enterprise Switch SNMP/system.hw.firmware))>0'
+ expression: 'last(/HP Enterprise Switch by SNMP/system.hw.firmware,#1)<>last(/HP Enterprise Switch by SNMP/system.hw.firmware,#2) and length(last(/HP Enterprise Switch by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -279,7 +279,7 @@ zabbix_export:
triggers:
-
uuid: 6b9b9b0d1ff24074bb344d04efe53444
- expression: 'last(/HP Enterprise Switch SNMP/system.hw.serialnumber,#1)<>last(/HP Enterprise Switch SNMP/system.hw.serialnumber,#2) and length(last(/HP Enterprise Switch SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/HP Enterprise Switch by SNMP/system.hw.serialnumber,#1)<>last(/HP Enterprise Switch by SNMP/system.hw.serialnumber,#2) and length(last(/HP Enterprise Switch by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -366,7 +366,7 @@ zabbix_export:
triggers:
-
uuid: 63f6f85bfed94821a8339c46544dde0e
- expression: 'last(/HP Enterprise Switch SNMP/system.name,#1)<>last(/HP Enterprise Switch SNMP/system.name,#2) and length(last(/HP Enterprise Switch SNMP/system.name))>0'
+ expression: 'last(/HP Enterprise Switch by SNMP/system.name,#1)<>last(/HP Enterprise Switch by SNMP/system.name,#2) and length(last(/HP Enterprise Switch by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -447,7 +447,7 @@ zabbix_export:
triggers:
-
uuid: d64df6c48ce44bbcafcdd60a3102b41c
- expression: 'max(/HP Enterprise Switch SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HP Enterprise Switch by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -455,7 +455,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP Enterprise Switch SNMP/icmpping,#3)=0'
+ expression: 'max(/HP Enterprise Switch by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -556,7 +556,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4fba6383ed4c4cd89b349a5dfccb7909
- expression: 'count(/HP Enterprise Switch SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"bad\"}")=1'
+ expression: 'count(/HP Enterprise Switch by SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"bad\"}")=1'
name: '{#ENT_DESCR}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -570,7 +570,7 @@ zabbix_export:
value: performance
-
uuid: 6cf626561b33468cb1e2c9e590334c4b
- expression: 'count(/HP Enterprise Switch SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1'
+ expression: 'count(/HP Enterprise Switch by SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"warning\"}")=1'
name: '{#ENT_DESCR}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -578,7 +578,7 @@ zabbix_export:
dependencies:
-
name: '{#ENT_DESCR}: Fan is in critical state'
- expression: 'count(/HP Enterprise Switch SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"bad\"}")=1'
+ expression: 'count(/HP Enterprise Switch by SNMP/sensor.fan.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"bad\"}")=1'
tags:
-
tag: scope
@@ -657,7 +657,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4fe0382fdee141adac03788c8810e387
- expression: 'min(/HP Enterprise Switch SNMP/vm.memory.util[snmp.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/HP Enterprise Switch by SNMP/vm.memory.util[snmp.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '#{#SNMPVALUE}: High memory utilization'
event_name: '#{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -679,14 +679,14 @@ zabbix_export:
drawtype: BOLD_LINE
color: 1A7C11
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'vm.memory.total[hpLocalMemTotalBytes.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'vm.memory.available[hpLocalMemFreeBytes.{#SNMPINDEX}]'
-
uuid: 87cafd79e372498a87bd6fa283482256
@@ -698,7 +698,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'vm.memory.util[snmp.{#SNMPINDEX}]'
-
uuid: dd018320e4b2466786840efdcd4a9fd9
@@ -1004,9 +1004,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8f16d1db51ce4dceb0ed8753b74e8b7f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1057,21 +1057,21 @@ zabbix_export:
-
uuid: 97e6d8236ec04a7a91269819c89b2622
expression: |
- change(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/HP Enterprise Switch SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/HP Enterprise Switch by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1080,8 +1080,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1089,13 +1089,13 @@ zabbix_export:
-
uuid: 0f14cdc1b43a4325ba256645573a0905
expression: |
- (avg(/HP Enterprise Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/HP Enterprise Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/HP Enterprise Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/HP Enterprise Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/HP Enterprise Switch SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/HP Enterprise Switch SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/HP Enterprise Switch by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/HP Enterprise Switch by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/HP Enterprise Switch by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1105,8 +1105,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1114,12 +1114,12 @@ zabbix_export:
-
uuid: 61797acc8cb642038b1875a198d0a740
expression: |
- min(/HP Enterprise Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/HP Enterprise Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/HP Enterprise Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/HP Enterprise Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/HP Enterprise Switch SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/HP Enterprise Switch SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/HP Enterprise Switch by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/HP Enterprise Switch by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1129,8 +1129,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/HP Enterprise Switch SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/HP Enterprise Switch by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1147,42 +1147,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 92a9d50fd9894af486dfcee142db1d61
@@ -1252,7 +1252,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1b117ed66a0c4b098606d1179e21f3f0
- expression: 'last(/HP Enterprise Switch SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/HP Enterprise Switch by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1320,7 +1320,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 81553d4157ce4c938c25b9403c5e572a
- expression: 'count(/HP Enterprise Switch SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"bad\"}")=1'
+ expression: 'count(/HP Enterprise Switch by SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"bad\"}")=1'
name: '{#ENT_DESCR}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1334,7 +1334,7 @@ zabbix_export:
value: performance
-
uuid: aeb31d4c3958433c9a0105f79156094a
- expression: 'count(/HP Enterprise Switch SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1'
+ expression: 'count(/HP Enterprise Switch by SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"warning\"}")=1'
name: '{#ENT_DESCR}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1342,7 +1342,7 @@ zabbix_export:
dependencies:
-
name: '{#ENT_DESCR}: Power supply is in critical state'
- expression: 'count(/HP Enterprise Switch SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"bad\"}")=1'
+ expression: 'count(/HP Enterprise Switch by SNMP/sensor.psu.status[hpicfSensorStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"bad\"}")=1'
tags:
-
tag: scope
@@ -1391,9 +1391,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5d0d743c7f5449f4a429845ab3894d19
- expression: 'avg(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
+ expression: 'avg(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
event_name: '{#SENSOR_INFO}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1408,9 +1408,9 @@ zabbix_export:
value: performance
-
uuid: b549cc5016884818bf416c415618171f
- expression: 'avg(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}'
+ expression: 'avg(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above warning threshold'
event_name: '{#SENSOR_INFO}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1419,8 +1419,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
- expression: 'avg(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
- recovery_expression: 'max(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ expression: 'avg(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
+ recovery_expression: 'max(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
tags:
-
tag: scope
@@ -1430,9 +1430,9 @@ zabbix_export:
value: performance
-
uuid: a4294d3ad024438aaba4234811d65582
- expression: 'avg(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
+ expression: 'avg(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/HP Enterprise Switch SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
+ recovery_expression: 'min(/HP Enterprise Switch by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
name: '{#SENSOR_INFO}: Temperature is too low'
event_name: '{#SENSOR_INFO}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1606,7 +1606,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2551,7 +2551,7 @@ zabbix_export:
triggers:
-
uuid: 1395e02bc63e48daa779b8b685e91868
- expression: '(last(/HP Enterprise Switch SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Enterprise Switch SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Enterprise Switch SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Enterprise Switch SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/HP Enterprise Switch by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP Enterprise Switch by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP Enterprise Switch by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP Enterprise Switch by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2560,7 +2560,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/HP Enterprise Switch SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HP Enterprise Switch by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2576,5 +2576,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'HP Enterprise Switch SNMP'
+ host: 'HP Enterprise Switch by SNMP'
key: 'system.cpu.util[hpSwitchCpuStat.0]'
diff --git a/templates/net/huawei_snmp/README.md b/templates/net/huawei_snmp/README.md
index 852e4f783bc..ce82ef530af 100644
--- a/templates/net/huawei_snmp/README.md
+++ b/templates/net/huawei_snmp/README.md
@@ -1,9 +1,9 @@
-# Huawei VRP SNMP
+# Huawei VRP by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
Reference: https://www.slideshare.net/Huanetwork/huawei-s5700-naming-conventions-and-port-numbering-conventions
Reference: http://support.huawei.com/enterprise/KnowledgebaseReadAction.action?contentId=KB1000090234
@@ -97,27 +97,27 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#ENT_NAME}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Huawei VRP SNMP/system.cpu.util[hwEntityCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|#{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Huawei VRP SNMP/sensor.fan.status[hwEntityFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Huawei VRP SNMP/system.name,#1)<>last(/Huawei VRP SNMP/system.name,#2) and length(last(/Huawei VRP SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Huawei VRP SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Huawei VRP SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Huawei VRP SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/Huawei VRP SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#ENT_NAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Huawei VRP SNMP/vm.memory.util[hwEntityMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Huawei VRP SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Huawei VRP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Huawei VRP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Huawei VRP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Huawei VRP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Huawei VRP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Huawei VRP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Huawei VRP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Huawei VRP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Huawei VRP SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei VRP SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei VRP SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei VRP SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Huawei VRP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Huawei VRP SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Huawei VRP SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei VRP SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Huawei VRP SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#ENT_NAME}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#ENT_NAME}"}`<p>Recovery expression:</p>`max(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#ENT_NAME}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#ENT_NAME}: Temperature is above critical threshold</p> |
-|{#ENT_NAME}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#ENT_NAME}"}`<p>Recovery expression:</p>`max(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#ENT_NAME}"}-3` |HIGH | |
-|{#ENT_NAME}: Temperature is too low |<p>-</p> |`avg(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#ENT_NAME}"}`<p>Recovery expression:</p>`min(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#ENT_NAME}"}+3` |AVERAGE | |
+|{#ENT_NAME}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Huawei VRP by SNMP/system.cpu.util[hwEntityCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|#{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Huawei VRP by SNMP/sensor.fan.status[hwEntityFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Huawei VRP by SNMP/system.name,#1)<>last(/Huawei VRP by SNMP/system.name,#2) and length(last(/Huawei VRP by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Huawei VRP by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Huawei VRP by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Huawei VRP by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/Huawei VRP by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#ENT_NAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Huawei VRP by SNMP/vm.memory.util[hwEntityMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Huawei VRP by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Huawei VRP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Huawei VRP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Huawei VRP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Huawei VRP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Huawei VRP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Huawei VRP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Huawei VRP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Huawei VRP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Huawei VRP by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei VRP by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei VRP by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei VRP by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Huawei VRP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Huawei VRP by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Huawei VRP by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei VRP by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Huawei VRP by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#ENT_NAME}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#ENT_NAME}"}`<p>Recovery expression:</p>`max(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#ENT_NAME}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#ENT_NAME}: Temperature is above critical threshold</p> |
+|{#ENT_NAME}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#ENT_NAME}"}`<p>Recovery expression:</p>`max(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#ENT_NAME}"}-3` |HIGH | |
+|{#ENT_NAME}: Temperature is too low |<p>-</p> |`avg(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#ENT_NAME}"}`<p>Recovery expression:</p>`min(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#ENT_NAME}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/huawei_snmp/template_net_huawei_snmp.yaml b/templates/net/huawei_snmp/template_net_huawei_snmp.yaml
index 801dc655bb8..411167d702d 100644
--- a/templates/net/huawei_snmp/template_net_huawei_snmp.yaml
+++ b/templates/net/huawei_snmp/template_net_huawei_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:09:29Z'
+ date: '2022-10-27T14:44:34Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: ad4c3dad4b7b492685d1fd3bd3a664f9
- template: 'Huawei VRP SNMP'
- name: 'Huawei VRP SNMP'
+ template: 'Huawei VRP by SNMP'
+ name: 'Huawei VRP by SNMP'
description: |
Template Net Huawei VRP
@@ -44,7 +44,7 @@ zabbix_export:
triggers:
-
uuid: 49df55106af2439eb79e66caa2717ec9
- expression: 'max(/Huawei VRP SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei VRP by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -70,14 +70,14 @@ zabbix_export:
triggers:
-
uuid: b7ca2b5273be4f50b5c20b422a534868
- expression: 'min(/Huawei VRP SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei VRP SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Huawei VRP by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei VRP by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Huawei VRP SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei VRP by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -103,17 +103,17 @@ zabbix_export:
triggers:
-
uuid: c322fda29bab4f99a0ea204814390551
- expression: 'avg(/Huawei VRP SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Huawei VRP by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Huawei VRP SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei VRP SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Huawei VRP by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei VRP by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Huawei VRP SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei VRP by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -259,7 +259,7 @@ zabbix_export:
triggers:
-
uuid: 740f78d69b20405da79525365fdc29fe
- expression: 'last(/Huawei VRP SNMP/system.name,#1)<>last(/Huawei VRP SNMP/system.name,#2) and length(last(/Huawei VRP SNMP/system.name))>0'
+ expression: 'last(/Huawei VRP by SNMP/system.name,#1)<>last(/Huawei VRP by SNMP/system.name,#2) and length(last(/Huawei VRP by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -340,7 +340,7 @@ zabbix_export:
triggers:
-
uuid: cefe56d564434018b6a31c196cc7eb55
- expression: 'max(/Huawei VRP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Huawei VRP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -348,7 +348,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Huawei VRP SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei VRP by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -381,7 +381,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ba459f7ce17a4f71a46fa1a0337f0f89
- expression: 'count(/Huawei VRP SNMP/sensor.fan.status[hwEntityFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Huawei VRP by SNMP/sensor.fan.status[hwEntityFanState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '#{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -461,9 +461,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d28db9267b9d488f8f359dd7d14d2ac1
- expression: 'avg(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#ENT_NAME}"}'
+ expression: 'avg(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#ENT_NAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#ENT_NAME}"}-3'
+ recovery_expression: 'max(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#ENT_NAME}"}-3'
name: '{#ENT_NAME}: Temperature is above critical threshold'
event_name: '{#ENT_NAME}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#ENT_NAME}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -478,9 +478,9 @@ zabbix_export:
value: performance
-
uuid: c54c36491adf4a488d11f2538b337129
- expression: 'avg(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#ENT_NAME}"}'
+ expression: 'avg(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#ENT_NAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#ENT_NAME}"}-3'
+ recovery_expression: 'max(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#ENT_NAME}"}-3'
name: '{#ENT_NAME}: Temperature is above warning threshold'
event_name: '{#ENT_NAME}: Temperature is above warning threshold: >{$TEMP_WARN:"{#ENT_NAME}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -489,8 +489,8 @@ zabbix_export:
dependencies:
-
name: '{#ENT_NAME}: Temperature is above critical threshold'
- expression: 'avg(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#ENT_NAME}"}'
- recovery_expression: 'max(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#ENT_NAME}"}-3'
+ expression: 'avg(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#ENT_NAME}"}'
+ recovery_expression: 'max(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#ENT_NAME}"}-3'
tags:
-
tag: scope
@@ -500,9 +500,9 @@ zabbix_export:
value: performance
-
uuid: 7b2cffb3ad47440d8b79b39958794ed9
- expression: 'avg(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#ENT_NAME}"}'
+ expression: 'avg(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#ENT_NAME}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Huawei VRP SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#ENT_NAME}"}+3'
+ recovery_expression: 'min(/Huawei VRP by SNMP/sensor.temp.value[hwEntityTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#ENT_NAME}"}+3'
name: '{#ENT_NAME}: Temperature is too low'
event_name: '{#ENT_NAME}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#ENT_NAME}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -534,7 +534,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 66bfe7805cae4447a32a6e5877e1231b
- expression: 'min(/Huawei VRP SNMP/system.cpu.util[hwEntityCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Huawei VRP by SNMP/system.cpu.util[hwEntityCpuUsage.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '{#ENT_NAME}: High CPU utilization'
event_name: '{#ENT_NAME}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -567,7 +567,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e379ca4d50a3434e82841e8884a84656
- expression: 'last(/Huawei VRP SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Huawei VRP SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/Huawei VRP by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Huawei VRP by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -620,7 +620,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 698067d647424c96addeb3c9f960dd07
- expression: 'last(/Huawei VRP SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/Huawei VRP SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0'
+ expression: 'last(/Huawei VRP by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}],#2) and length(last(/Huawei VRP by SNMP/system.sw.os[entPhysicalSoftwareRev.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -628,7 +628,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Huawei VRP SNMP/system.name,#1)<>last(/Huawei VRP SNMP/system.name,#2) and length(last(/Huawei VRP SNMP/system.name))>0'
+ expression: 'last(/Huawei VRP by SNMP/system.name,#1)<>last(/Huawei VRP by SNMP/system.name,#2) and length(last(/Huawei VRP by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -653,7 +653,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2d93533c7cc74dc9a85e280605e21e7d
- expression: 'min(/Huawei VRP SNMP/vm.memory.util[hwEntityMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Huawei VRP by SNMP/vm.memory.util[hwEntityMemUsage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#ENT_NAME}: High memory utilization'
event_name: '{#ENT_NAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -676,7 +676,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'system.cpu.util[hwEntityCpuUsage.{#SNMPINDEX}]'
-
uuid: ff65fc169cd343bbb866033bccd51abf
@@ -688,7 +688,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'vm.memory.util[hwEntityMemUsage.{#SNMPINDEX}]'
-
uuid: 840dc40761294dc294cdd909318a7053
@@ -994,9 +994,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b67a4949e886409b89537338f657570e
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1047,21 +1047,21 @@ zabbix_export:
-
uuid: 675512801cb5498887b8411c5afd5f0c
expression: |
- change(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Huawei VRP SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Huawei VRP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1070,8 +1070,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1079,13 +1079,13 @@ zabbix_export:
-
uuid: 9ebcd822aa6a4fb493c74c4d4759510b
expression: |
- (avg(/Huawei VRP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Huawei VRP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Huawei VRP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Huawei VRP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Huawei VRP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Huawei VRP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Huawei VRP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Huawei VRP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Huawei VRP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1095,8 +1095,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1104,12 +1104,12 @@ zabbix_export:
-
uuid: 609c079cc7fd486fb4c938acd1c8b47f
expression: |
- min(/Huawei VRP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Huawei VRP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Huawei VRP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Huawei VRP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Huawei VRP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Huawei VRP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Huawei VRP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Huawei VRP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1119,8 +1119,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Huawei VRP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Huawei VRP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1137,42 +1137,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 3d5bfd91c42b4656bf5843484ca2e016
@@ -1242,7 +1242,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5f275f483fca402ba8f9aa485398d85b
- expression: 'last(/Huawei VRP SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Huawei VRP by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1384,7 +1384,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Huawei VRP SNMP'
+ host: 'Huawei VRP by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2320,7 +2320,7 @@ zabbix_export:
triggers:
-
uuid: c8c41677f4ba463b90cea501e9112483
- expression: '(last(/Huawei VRP SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei VRP SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei VRP SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei VRP SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Huawei VRP by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei VRP by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei VRP by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei VRP by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2329,7 +2329,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Huawei VRP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Huawei VRP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/net/intel_qlogic_infiniband_snmp/README.md b/templates/net/intel_qlogic_infiniband_snmp/README.md
index e6bd6219eda..8afb6328af5 100644
--- a/templates/net/intel_qlogic_infiniband_snmp/README.md
+++ b/templates/net/intel_qlogic_infiniband_snmp/README.md
@@ -1,9 +1,9 @@
-# Intel_Qlogic Infiniband SNMP
+# Intel_Qlogic Infiniband by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -95,26 +95,26 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Intel_Qlogic Infiniband SNMP/sensor.fan.status[icsChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Intel_Qlogic Infiniband SNMP/system.name,#1)<>last(/Intel_Qlogic Infiniband SNMP/system.name,#2) and length(last(/Intel_Qlogic Infiniband SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Intel_Qlogic Infiniband SNMP/system.hw.firmware,#1)<>last(/Intel_Qlogic Infiniband SNMP/system.hw.firmware,#2) and length(last(/Intel_Qlogic Infiniband SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Intel_Qlogic Infiniband SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#2) and length(last(/Intel_Qlogic Infiniband SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Intel_Qlogic Infiniband SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Intel_Qlogic Infiniband SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Intel_Qlogic Infiniband SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Intel_Qlogic Infiniband SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Intel_Qlogic Infiniband SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Intel_Qlogic Infiniband SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Intel_Qlogic Infiniband SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Intel_Qlogic Infiniband SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Intel_Qlogic Infiniband SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Intel_Qlogic Infiniband SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Intel_Qlogic Infiniband SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Intel_Qlogic Infiniband SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Intel_Qlogic Infiniband SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Intel_Qlogic Infiniband SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Intel_Qlogic Infiniband SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Intel_Qlogic Infiniband SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Intel_Qlogic Infiniband SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Intel_Qlogic Infiniband SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Intel_Qlogic Infiniband SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"} or last(/Intel_Qlogic Infiniband SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
-|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"} or last(/Intel_Qlogic Infiniband SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} `<p>Recovery expression:</p>`max(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
-|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Intel_Qlogic Infiniband by SNMP/sensor.fan.status[icsChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Intel_Qlogic Infiniband by SNMP/system.name,#1)<>last(/Intel_Qlogic Infiniband by SNMP/system.name,#2) and length(last(/Intel_Qlogic Infiniband by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Intel_Qlogic Infiniband by SNMP/system.hw.firmware,#1)<>last(/Intel_Qlogic Infiniband by SNMP/system.hw.firmware,#2) and length(last(/Intel_Qlogic Infiniband by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Intel_Qlogic Infiniband by SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband by SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#2) and length(last(/Intel_Qlogic Infiniband by SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Intel_Qlogic Infiniband by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Intel_Qlogic Infiniband by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Intel_Qlogic Infiniband by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Intel_Qlogic Infiniband by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Intel_Qlogic Infiniband by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Intel_Qlogic Infiniband by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Intel_Qlogic Infiniband by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Intel_Qlogic Infiniband by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Intel_Qlogic Infiniband by SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|{#SNMPVALUE}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Intel_Qlogic Infiniband by SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Intel_Qlogic Infiniband by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Intel_Qlogic Infiniband by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Intel_Qlogic Infiniband by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Intel_Qlogic Infiniband by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Intel_Qlogic Infiniband by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Intel_Qlogic Infiniband by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Intel_Qlogic Infiniband by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Intel_Qlogic Infiniband by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Intel_Qlogic Infiniband by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"} or last(/Intel_Qlogic Infiniband by SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
+|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"} or last(/Intel_Qlogic Infiniband by SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} `<p>Recovery expression:</p>`max(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
+|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/intel_qlogic_infiniband_snmp/template_net_intel_qlogic_infiniband_snmp.yaml b/templates/net/intel_qlogic_infiniband_snmp/template_net_intel_qlogic_infiniband_snmp.yaml
index b4c0bf1df1f..c762818fc00 100644
--- a/templates/net/intel_qlogic_infiniband_snmp/template_net_intel_qlogic_infiniband_snmp.yaml
+++ b/templates/net/intel_qlogic_infiniband_snmp/template_net_intel_qlogic_infiniband_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:09:33Z'
+ date: '2022-10-27T14:44:15Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 6f7f2c44e13a46a4b219fbb5db92f3f7
- template: 'Intel_Qlogic Infiniband SNMP'
- name: 'Intel_Qlogic Infiniband SNMP'
+ template: 'Intel_Qlogic Infiniband by SNMP'
+ name: 'Intel_Qlogic Infiniband by SNMP'
description: |
Template Net Intel_Qlogic Infiniband
@@ -42,7 +42,7 @@ zabbix_export:
triggers:
-
uuid: a3a6c95c0a32405d81b1bc7690f1bd1f
- expression: 'max(/Intel_Qlogic Infiniband SNMP/icmpping,#3)=0'
+ expression: 'max(/Intel_Qlogic Infiniband by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -68,14 +68,14 @@ zabbix_export:
triggers:
-
uuid: 9c78f78339724840b7ab6db4c62f5aa0
- expression: 'min(/Intel_Qlogic Infiniband SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Intel_Qlogic Infiniband SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Intel_Qlogic Infiniband by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Intel_Qlogic Infiniband by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Intel_Qlogic Infiniband SNMP/icmpping,#3)=0'
+ expression: 'max(/Intel_Qlogic Infiniband by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -101,17 +101,17 @@ zabbix_export:
triggers:
-
uuid: 3c5e0b2660764386ac162ed5d2778a56
- expression: 'avg(/Intel_Qlogic Infiniband SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Intel_Qlogic Infiniband by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Intel_Qlogic Infiniband SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Intel_Qlogic Infiniband SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Intel_Qlogic Infiniband by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Intel_Qlogic Infiniband by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Intel_Qlogic Infiniband SNMP/icmpping,#3)=0'
+ expression: 'max(/Intel_Qlogic Infiniband by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -208,7 +208,7 @@ zabbix_export:
triggers:
-
uuid: 1ca7574040da41a3bf416daa8172d952
- expression: 'last(/Intel_Qlogic Infiniband SNMP/system.hw.firmware,#1)<>last(/Intel_Qlogic Infiniband SNMP/system.hw.firmware,#2) and length(last(/Intel_Qlogic Infiniband SNMP/system.hw.firmware))>0'
+ expression: 'last(/Intel_Qlogic Infiniband by SNMP/system.hw.firmware,#1)<>last(/Intel_Qlogic Infiniband by SNMP/system.hw.firmware,#2) and length(last(/Intel_Qlogic Infiniband by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -321,7 +321,7 @@ zabbix_export:
triggers:
-
uuid: cfcabcb7d9ca4fd59ed79775bcf059bb
- expression: 'last(/Intel_Qlogic Infiniband SNMP/system.name,#1)<>last(/Intel_Qlogic Infiniband SNMP/system.name,#2) and length(last(/Intel_Qlogic Infiniband SNMP/system.name))>0'
+ expression: 'last(/Intel_Qlogic Infiniband by SNMP/system.name,#1)<>last(/Intel_Qlogic Infiniband by SNMP/system.name,#2) and length(last(/Intel_Qlogic Infiniband by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -402,7 +402,7 @@ zabbix_export:
triggers:
-
uuid: ccbd4c4da58f4b72a82371c2f3eaf4e1
- expression: 'max(/Intel_Qlogic Infiniband SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Intel_Qlogic Infiniband by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -410,7 +410,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Intel_Qlogic Infiniband SNMP/icmpping,#3)=0'
+ expression: 'max(/Intel_Qlogic Infiniband by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -446,7 +446,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7ceeb8d2ec314fc1b8dbe9746e9a667a
- expression: 'count(/Intel_Qlogic Infiniband SNMP/sensor.fan.status[icsChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Intel_Qlogic Infiniband by SNMP/sensor.fan.status[icsChassisFanOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -762,9 +762,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 18cef8eb4ade4e15bd04ad476e95a185
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -815,21 +815,21 @@ zabbix_export:
-
uuid: ead4b546caa5429197d566010e3a4a43
expression: |
- change(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Intel_Qlogic Infiniband SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Intel_Qlogic Infiniband by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -838,8 +838,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -847,13 +847,13 @@ zabbix_export:
-
uuid: 9d5d70c272a641c0ae63aca365cdb103
expression: |
- (avg(/Intel_Qlogic Infiniband SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Intel_Qlogic Infiniband SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Intel_Qlogic Infiniband by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Intel_Qlogic Infiniband by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Intel_Qlogic Infiniband SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Intel_Qlogic Infiniband SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Intel_Qlogic Infiniband by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Intel_Qlogic Infiniband by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Intel_Qlogic Infiniband by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -863,8 +863,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -872,12 +872,12 @@ zabbix_export:
-
uuid: fba9e43d9fcb43fb9cf5128f1287ac7c
expression: |
- min(/Intel_Qlogic Infiniband SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Intel_Qlogic Infiniband SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Intel_Qlogic Infiniband by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Intel_Qlogic Infiniband by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Intel_Qlogic Infiniband SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Intel_Qlogic Infiniband SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Intel_Qlogic Infiniband by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Intel_Qlogic Infiniband by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -887,8 +887,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Intel_Qlogic Infiniband SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Intel_Qlogic Infiniband by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -905,42 +905,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Intel_Qlogic Infiniband SNMP'
+ host: 'Intel_Qlogic Infiniband by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Intel_Qlogic Infiniband SNMP'
+ host: 'Intel_Qlogic Infiniband by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Intel_Qlogic Infiniband SNMP'
+ host: 'Intel_Qlogic Infiniband by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Intel_Qlogic Infiniband SNMP'
+ host: 'Intel_Qlogic Infiniband by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Intel_Qlogic Infiniband SNMP'
+ host: 'Intel_Qlogic Infiniband by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Intel_Qlogic Infiniband SNMP'
+ host: 'Intel_Qlogic Infiniband by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 757aae6d5bcc40f5a14f1c3225569892
@@ -980,7 +980,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1d0c9610cd984124bb7fed812e9edb16
- expression: 'count(/Intel_Qlogic Infiniband SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Intel_Qlogic Infiniband by SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -994,7 +994,7 @@ zabbix_export:
value: performance
-
uuid: 7ae4943842ea491c899ce0f84210e202
- expression: 'count(/Intel_Qlogic Infiniband SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1'
+ expression: 'count(/Intel_Qlogic Infiniband by SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1'
name: '{#SNMPVALUE}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1002,7 +1002,7 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Power supply is in critical state'
- expression: 'count(/Intel_Qlogic Infiniband SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Intel_Qlogic Infiniband by SNMP/sensor.psu.status[icsChassisPowerSupplyEntry.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -1063,9 +1063,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 03e351b056504735b02da8c37dad6bf0
- expression: 'avg(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
+ recovery_expression: 'min(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
name: '{#SENSOR_INFO}: Temperature is too low'
event_name: '{#SENSOR_INFO}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1081,11 +1081,11 @@ zabbix_export:
-
uuid: 61c220a2ae9a4074baf4051214679e77
expression: |
- avg(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}
+ avg(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}
or
- last(/Intel_Qlogic Infiniband SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Intel_Qlogic Infiniband by SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
event_name: '{#SENSOR_INFO}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1101,11 +1101,11 @@ zabbix_export:
-
uuid: d6f38aebdcde46e688350b40d5cbe85b
expression: |
- avg(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}
+ avg(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}
or
- last(/Intel_Qlogic Infiniband SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Intel_Qlogic Infiniband by SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above warning threshold'
event_name: '{#SENSOR_INFO}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1115,10 +1115,10 @@ zabbix_export:
-
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
expression: |
- avg(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}
+ avg(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}
or
- last(/Intel_Qlogic Infiniband SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
- recovery_expression: 'max(/Intel_Qlogic Infiniband SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ last(/Intel_Qlogic Infiniband by SNMP/sensor.temp.status[icsChassisSensorSlotOperStatus.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ recovery_expression: 'max(/Intel_Qlogic Infiniband by SNMP/sensor.temp.value[icsChassisSensorSlotValue.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
tags:
-
tag: scope
@@ -1165,7 +1165,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 90778aeb97244258a830e89eeb263e54
- expression: 'last(/Intel_Qlogic Infiniband SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#2) and length(last(/Intel_Qlogic Infiniband SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}]))>0'
+ expression: 'last(/Intel_Qlogic Infiniband by SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#1)<>last(/Intel_Qlogic Infiniband by SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}],#2) and length(last(/Intel_Qlogic Infiniband by SNMP/system.hw.serialnumber[icsChassisSystemUnitFruSerialNumber.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -1296,7 +1296,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Intel_Qlogic Infiniband SNMP'
+ host: 'Intel_Qlogic Infiniband by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2272,7 +2272,7 @@ zabbix_export:
triggers:
-
uuid: 20166f9c8d5448a494b6b578471df8cc
- expression: '(last(/Intel_Qlogic Infiniband SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Intel_Qlogic Infiniband SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Intel_Qlogic Infiniband SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Intel_Qlogic Infiniband SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Intel_Qlogic Infiniband by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Intel_Qlogic Infiniband by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Intel_Qlogic Infiniband by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Intel_Qlogic Infiniband by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2281,7 +2281,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Intel_Qlogic Infiniband SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Intel_Qlogic Infiniband by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/net/juniper_snmp/README.md b/templates/net/juniper_snmp/README.md
index 774ed130495..d4d88130742 100644
--- a/templates/net/juniper_snmp/README.md
+++ b/templates/net/juniper_snmp/README.md
@@ -1,9 +1,9 @@
-# Juniper SNMP
+# Juniper by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -101,29 +101,29 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Juniper SNMP/system.cpu.util[jnxOperatingCPU.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Juniper SNMP/sensor.fan.status[jnxOperatingState.4.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Juniper SNMP/system.name,#1)<>last(/Juniper SNMP/system.name,#2) and length(last(/Juniper SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Juniper SNMP/system.hw.serialnumber,#1)<>last(/Juniper SNMP/system.hw.serialnumber,#2) and length(last(/Juniper SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Juniper SNMP/system.sw.os[sysDescr.0],#1)<>last(/Juniper SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Juniper SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Juniper SNMP/vm.memory.util[jnxOperatingBuffer.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Juniper SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Juniper SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Juniper SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Juniper SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Juniper SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Juniper SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Juniper SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Juniper SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Juniper SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Juniper SNMP/sensor.psu.status[jnxOperatingState.2.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|System status is in critical state |<p>Please check the device for errors</p> |`count(/Juniper SNMP/system.status[jnxRedAlarmState.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Juniper SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Juniper SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Juniper SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Juniper SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Juniper SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Juniper SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Juniper SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Juniper SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Juniper SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
-|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
-|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
+|{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Juniper by SNMP/system.cpu.util[jnxOperatingCPU.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Juniper by SNMP/sensor.fan.status[jnxOperatingState.4.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Juniper by SNMP/system.name,#1)<>last(/Juniper by SNMP/system.name,#2) and length(last(/Juniper by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Juniper by SNMP/system.hw.serialnumber,#1)<>last(/Juniper by SNMP/system.hw.serialnumber,#2) and length(last(/Juniper by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Juniper by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Juniper by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Juniper by SNMP/system.sw.os[sysDescr.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Juniper by SNMP/vm.memory.util[jnxOperatingBuffer.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Juniper by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Juniper by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Juniper by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Juniper by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Juniper by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Juniper by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Juniper by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Juniper by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Juniper by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Juniper by SNMP/sensor.psu.status[jnxOperatingState.2.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|System status is in critical state |<p>Please check the device for errors</p> |`count(/Juniper by SNMP/system.status[jnxRedAlarmState.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Juniper by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Juniper by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Juniper by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Juniper by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Juniper by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Juniper by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Juniper by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Juniper by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Juniper by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
+|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
+|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/juniper_snmp/template_net_juniper_snmp.yaml b/templates/net/juniper_snmp/template_net_juniper_snmp.yaml
index 34b82a2e8f2..0ba0792ad70 100644
--- a/templates/net/juniper_snmp/template_net_juniper_snmp.yaml
+++ b/templates/net/juniper_snmp/template_net_juniper_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:09:36Z'
+ date: '2022-10-27T14:44:06Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: a326034825984bbd8a3a5885f3939bb3
- template: 'Juniper SNMP'
- name: 'Juniper SNMP'
+ template: 'Juniper by SNMP'
+ name: 'Juniper by SNMP'
description: |
Template Net Juniper
@@ -44,7 +44,7 @@ zabbix_export:
triggers:
-
uuid: d90e80fd900246dcab90447ee2a6a7a1
- expression: 'max(/Juniper SNMP/icmpping,#3)=0'
+ expression: 'max(/Juniper by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -70,14 +70,14 @@ zabbix_export:
triggers:
-
uuid: d3911ede372e4eb3b89b30e8e340a716
- expression: 'min(/Juniper SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Juniper SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Juniper by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Juniper by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Juniper SNMP/icmpping,#3)=0'
+ expression: 'max(/Juniper by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -103,17 +103,17 @@ zabbix_export:
triggers:
-
uuid: 751d9855903f4f00b674b511fe992121
- expression: 'avg(/Juniper SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Juniper by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Juniper SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Juniper SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Juniper by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Juniper by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Juniper SNMP/icmpping,#3)=0'
+ expression: 'max(/Juniper by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -231,7 +231,7 @@ zabbix_export:
triggers:
-
uuid: 9f1f3316ed6f4d50a4c9f71a15f35d50
- expression: 'last(/Juniper SNMP/system.hw.serialnumber,#1)<>last(/Juniper SNMP/system.hw.serialnumber,#2) and length(last(/Juniper SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Juniper by SNMP/system.hw.serialnumber,#1)<>last(/Juniper by SNMP/system.hw.serialnumber,#2) and length(last(/Juniper by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -318,7 +318,7 @@ zabbix_export:
triggers:
-
uuid: 97157acd882944e29d6fb9fa1a2d9506
- expression: 'last(/Juniper SNMP/system.name,#1)<>last(/Juniper SNMP/system.name,#2) and length(last(/Juniper SNMP/system.name))>0'
+ expression: 'last(/Juniper by SNMP/system.name,#1)<>last(/Juniper by SNMP/system.name,#2) and length(last(/Juniper by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -404,7 +404,7 @@ zabbix_export:
triggers:
-
uuid: 1190bb9c05424ac5a0052bd191c274f2
- expression: 'count(/Juniper SNMP/system.status[jnxRedAlarmState.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/Juniper by SNMP/system.status[jnxRedAlarmState.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -445,7 +445,7 @@ zabbix_export:
triggers:
-
uuid: 9249511ecf4a4a2d952aa0c4fe55a5d0
- expression: 'last(/Juniper SNMP/system.sw.os[sysDescr.0],#1)<>last(/Juniper SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Juniper SNMP/system.sw.os[sysDescr.0]))>0'
+ expression: 'last(/Juniper by SNMP/system.sw.os[sysDescr.0],#1)<>last(/Juniper by SNMP/system.sw.os[sysDescr.0],#2) and length(last(/Juniper by SNMP/system.sw.os[sysDescr.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -453,7 +453,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Juniper SNMP/system.name,#1)<>last(/Juniper SNMP/system.name,#2) and length(last(/Juniper SNMP/system.name))>0'
+ expression: 'last(/Juniper by SNMP/system.name,#1)<>last(/Juniper by SNMP/system.name,#2) and length(last(/Juniper by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -482,7 +482,7 @@ zabbix_export:
triggers:
-
uuid: 417527b3749c4a1c891d761c0978fb2e
- expression: 'max(/Juniper SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Juniper by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -490,7 +490,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Juniper SNMP/icmpping,#3)=0'
+ expression: 'max(/Juniper by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -533,7 +533,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 248c49bc4f47437b9b91e20b57da197d
- expression: 'min(/Juniper SNMP/system.cpu.util[jnxOperatingCPU.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Juniper by SNMP/system.cpu.util[jnxOperatingCPU.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '{#SNMPVALUE}: High CPU utilization'
event_name: '{#SNMPVALUE}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -563,7 +563,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ab1f3dcba55d41da974c3ac60ca5b8f2
- expression: 'min(/Juniper SNMP/vm.memory.util[jnxOperatingBuffer.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Juniper by SNMP/vm.memory.util[jnxOperatingBuffer.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#SNMPVALUE}: High memory utilization'
event_name: '{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -586,7 +586,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'system.cpu.util[jnxOperatingCPU.{#SNMPINDEX}]'
-
uuid: 646779d729d8417383eb0e1240a69767
@@ -598,7 +598,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'vm.memory.util[jnxOperatingBuffer.{#SNMPINDEX}]'
-
uuid: 6e60561a198d43cf8c0fbe9a8ba1c492
@@ -628,7 +628,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f8f1dee0b0ff465d98c6f6bcdfaff17f
- expression: 'count(/Juniper SNMP/sensor.fan.status[jnxOperatingState.4.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Juniper by SNMP/sensor.fan.status[jnxOperatingState.4.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -671,7 +671,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e577226331f6483fbd1e414bb7d365f7
- expression: 'count(/Juniper SNMP/sensor.psu.status[jnxOperatingState.2.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/Juniper by SNMP/sensor.psu.status[jnxOperatingState.2.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -719,9 +719,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c82ca2b550f540b7a4c8f9548e15cfb0
- expression: 'avg(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
event_name: '{#SENSOR_INFO}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -736,9 +736,9 @@ zabbix_export:
value: performance
-
uuid: 51113c80e4bd46de8ea247e0bd3b19dd
- expression: 'avg(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above warning threshold'
event_name: '{#SENSOR_INFO}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -747,8 +747,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
- expression: 'avg(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
- recovery_expression: 'max(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
+ expression: 'avg(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_INFO}"}'
+ recovery_expression: 'max(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_INFO}"}-3'
tags:
-
tag: scope
@@ -758,9 +758,9 @@ zabbix_export:
value: performance
-
uuid: 35b56753b2424f0989ca09cb67f7d9a3
- expression: 'avg(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Juniper SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
+ recovery_expression: 'min(/Juniper by SNMP/sensor.temp.value[jnxOperatingTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}+3'
name: '{#SENSOR_INFO}: Temperature is too low'
event_name: '{#SENSOR_INFO}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1076,9 +1076,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c993121dca984691bd2cdf0d41c318b4
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1129,21 +1129,21 @@ zabbix_export:
-
uuid: faabf122af7e4cca8fdc6e57060b2e69
expression: |
- change(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Juniper SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Juniper by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1152,8 +1152,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1161,13 +1161,13 @@ zabbix_export:
-
uuid: f937622c6f7540579a60328398430f00
expression: |
- (avg(/Juniper SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Juniper SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Juniper by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Juniper by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Juniper SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Juniper SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Juniper by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Juniper by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Juniper by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1177,8 +1177,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1186,12 +1186,12 @@ zabbix_export:
-
uuid: 5731e4345a544b45b6a70a71284b878d
expression: |
- min(/Juniper SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Juniper SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Juniper by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Juniper by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Juniper SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Juniper SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Juniper by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Juniper by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1201,8 +1201,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Juniper SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Juniper by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1219,42 +1219,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: f4446053584f49fcb1375a3a4ba537e9
@@ -1324,7 +1324,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a2f686bf06cc4e0a8aa24675abd5d557
- expression: 'last(/Juniper SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Juniper by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1475,7 +1475,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Juniper SNMP'
+ host: 'Juniper by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2439,7 +2439,7 @@ zabbix_export:
triggers:
-
uuid: 23e25e580543411ab8ffc2a4c1ca3c54
- expression: '(last(/Juniper SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Juniper SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Juniper SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Juniper SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Juniper by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Juniper by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Juniper by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Juniper by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2448,7 +2448,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Juniper SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Juniper by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/net/mellanox_snmp/README.md b/templates/net/mellanox_snmp/README.md
index b760d8af3cd..1c6020cf0f5 100644
--- a/templates/net/mellanox_snmp/README.md
+++ b/templates/net/mellanox_snmp/README.md
@@ -1,9 +1,9 @@
-# Mellanox SNMP
+# Mellanox by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The updated template for monitoring the Mellanox network switches over SNMP agent. All items collected in one template without any linked templates.
## Setup
@@ -121,28 +121,28 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Mellanox SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Mellanox SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Mellanox SNMP/system.name,#1)<>last(/Mellanox SNMP/system.name,#2) and length(last(/Mellanox SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Mellanox SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Mellanox SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Mellanox SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Mellanox SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Mellanox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Mellanox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Mellanox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Mellanox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Mellanox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Mellanox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Mellanox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Mellanox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#ENT_NAME}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Mellanox SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU.STATUS.CRIT}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Mellanox SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mellanox SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mellanox SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mellanox SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Mellanox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Mellanox SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Mellanox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mellanox SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Mellanox SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Mellanox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
-|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Mellanox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
-|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"{#SENSOR_INFO}"} or last(/Mellanox SNMP/sensor.temp.status[entPhySensorOperStatus.{#SNMPINDEX}])={$TEMP.STATUS.WARN} `<p>Recovery expression:</p>`max(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
-|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
-|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Mellanox by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SENSOR_INFO}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Mellanox by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Mellanox by SNMP/system.name,#1)<>last(/Mellanox by SNMP/system.name,#2) and length(last(/Mellanox by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|{#ENT_NAME}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Mellanox by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Mellanox by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Mellanox by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Mellanox by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Mellanox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Mellanox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Mellanox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Mellanox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Mellanox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Mellanox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Mellanox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Mellanox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#ENT_NAME}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Mellanox by SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU.STATUS.CRIT}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Mellanox by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mellanox by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mellanox by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mellanox by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Mellanox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Mellanox by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Mellanox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mellanox by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Mellanox by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Mellanox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
+|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Mellanox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
+|{#SENSOR_INFO}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"{#SENSOR_INFO}"} or last(/Mellanox by SNMP/sensor.temp.status[entPhySensorOperStatus.{#SNMPINDEX}])={$TEMP.STATUS.WARN} `<p>Recovery expression:</p>`max(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"{#SENSOR_INFO}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_INFO}: Temperature is above critical threshold</p> |
+|{#SENSOR_INFO}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`max(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}-3` |HIGH | |
+|{#SENSOR_INFO}: Temperature is too low |<p>-</p> |`avg(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}`<p>Recovery expression:</p>`min(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/mellanox_snmp/template_net_mellanox_snmp.yaml b/templates/net/mellanox_snmp/template_net_mellanox_snmp.yaml
index 7ef542ca17e..e82f91a9644 100644
--- a/templates/net/mellanox_snmp/template_net_mellanox_snmp.yaml
+++ b/templates/net/mellanox_snmp/template_net_mellanox_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:58:12Z'
+ date: '2022-10-27T14:44:16Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: a60798c651604d93a062bec0f8a89751
- template: 'Mellanox SNMP'
- name: 'Mellanox SNMP'
+ template: 'Mellanox by SNMP'
+ name: 'Mellanox by SNMP'
description: |
The updated template for monitoring the Mellanox network switches over SNMP agent. All items collected in one template without any linked templates.
@@ -44,7 +44,7 @@ zabbix_export:
triggers:
-
uuid: fe4c81a386814dfa80ffc76e1b7da9a1
- expression: 'max(/Mellanox SNMP/icmpping,#3)=0'
+ expression: 'max(/Mellanox by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -70,14 +70,14 @@ zabbix_export:
triggers:
-
uuid: 52b307324c37481693d419df236cbbd7
- expression: 'min(/Mellanox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mellanox SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Mellanox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mellanox by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Mellanox SNMP/icmpping,#3)=0'
+ expression: 'max(/Mellanox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -103,17 +103,17 @@ zabbix_export:
triggers:
-
uuid: 39a9cff305074e1a8b7c6ed0c526fda9
- expression: 'avg(/Mellanox SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Mellanox by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Mellanox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mellanox SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Mellanox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mellanox by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Mellanox SNMP/icmpping,#3)=0'
+ expression: 'max(/Mellanox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -183,7 +183,7 @@ zabbix_export:
triggers:
-
uuid: 26913093ab414fe69ff157102ae54796
- expression: 'min(/Mellanox SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Mellanox by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -294,7 +294,7 @@ zabbix_export:
triggers:
-
uuid: ff7ad0676a774cf49a4568e752dd916b
- expression: 'last(/Mellanox SNMP/system.name,#1)<>last(/Mellanox SNMP/system.name,#2) and length(last(/Mellanox SNMP/system.name))>0'
+ expression: 'last(/Mellanox by SNMP/system.name,#1)<>last(/Mellanox by SNMP/system.name,#2) and length(last(/Mellanox by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -375,7 +375,7 @@ zabbix_export:
triggers:
-
uuid: 6e476399963a414a847c4c514055bf43
- expression: 'max(/Mellanox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Mellanox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -383,7 +383,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Mellanox SNMP/icmpping,#3)=0'
+ expression: 'max(/Mellanox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -446,7 +446,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 585db2b2a42b4eb09770ca2241a557d0
- expression: 'last(/Mellanox SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Mellanox SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Mellanox SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/Mellanox by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#1)<>last(/Mellanox by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}],#2) and length(last(/Mellanox by SNMP/system.hw.serialnumber[entPhysicalSerialNum.{#SNMPINDEX}]))>0'
name: '{#ENT_NAME}: Device has been replaced'
event_name: '{#ENT_NAME}: Device has been replaced (new serial number received)'
priority: INFO
@@ -514,7 +514,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: de81ef4f2c3f4f44a745a1fa1f179784
- expression: 'count(/Mellanox SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/Mellanox by SNMP/sensor.fan.status[entPhySensorOperStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '{#SENSOR_INFO}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -844,9 +844,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 46918cfc713a4b1da7eed32cead0070b
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -897,21 +897,21 @@ zabbix_export:
-
uuid: 2dc62fe3cd624e2ba99caa9ff94273f6
expression: |
- change(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Mellanox SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Mellanox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -920,8 +920,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -929,13 +929,13 @@ zabbix_export:
-
uuid: 20e8f28ebc304ba185d475dbba51c4b8
expression: |
- (avg(/Mellanox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Mellanox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Mellanox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Mellanox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Mellanox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Mellanox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Mellanox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Mellanox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mellanox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -945,8 +945,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -954,12 +954,12 @@ zabbix_export:
-
uuid: 6740479821cd49c199c345dd736a11f7
expression: |
- min(/Mellanox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Mellanox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Mellanox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Mellanox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Mellanox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Mellanox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Mellanox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Mellanox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -969,8 +969,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Mellanox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Mellanox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -987,42 +987,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
preprocessing:
-
@@ -1062,7 +1062,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5d2d688ad68343ff8884c11e9d233b98
- expression: 'count(/Mellanox SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU.STATUS.CRIT}")=1'
+ expression: 'count(/Mellanox by SNMP/sensor.psu.status[entStateOper.{#SNMPINDEX}],#1,"eq","{$PSU.STATUS.CRIT}")=1'
name: '{#ENT_NAME}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1146,9 +1146,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7259bdafbe7f4227999d7365a99e536d
- expression: 'avg(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
event_name: '{#SENSOR_INFO}: Temperature is above critical threshold: >{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1163,9 +1163,9 @@ zabbix_export:
value: performance
-
uuid: 7bfa2bd0177940f4aff8dc95867ceb44
- expression: 'avg(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}'
+ expression: 'avg(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}+3'
+ recovery_expression: 'min(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}+3'
name: '{#SENSOR_INFO}: Temperature is too low'
event_name: '{#SENSOR_INFO}: Temperature is too low: <{$TEMP.MIN.CRIT:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1181,11 +1181,11 @@ zabbix_export:
-
uuid: 352650536eef4858be1437a720712932
expression: |
- avg(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"{#SENSOR_INFO}"}
+ avg(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"{#SENSOR_INFO}"}
or
- last(/Mellanox SNMP/sensor.temp.status[entPhySensorOperStatus.{#SNMPINDEX}])={$TEMP.STATUS.WARN}
+ last(/Mellanox by SNMP/sensor.temp.status[entPhySensorOperStatus.{#SNMPINDEX}])={$TEMP.STATUS.WARN}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"{#SENSOR_INFO}"}-3'
+ recovery_expression: 'max(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"{#SENSOR_INFO}"}-3'
name: '{#SENSOR_INFO}: Temperature is above warning threshold'
event_name: '{#SENSOR_INFO}: Temperature is above warning threshold: >{$TEMP.MAX.WARN:"{#SENSOR_INFO}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1194,8 +1194,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_INFO}: Temperature is above critical threshold'
- expression: 'avg(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}'
- recovery_expression: 'max(/Mellanox SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}-3'
+ expression: 'avg(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}'
+ recovery_expression: 'max(/Mellanox by SNMP/sensor.temp.value[entPhySensorValue.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"{#SENSOR_INFO}"}-3'
tags:
-
tag: scope
@@ -1316,8 +1316,8 @@ zabbix_export:
-
uuid: f1eb2ddb27d24cd99d8aba4485dfeeb9
expression: |
- last(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Mellanox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Mellanox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is critically low'
event_name: '{#FSNAME}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1338,8 +1338,8 @@ zabbix_export:
-
uuid: b2e084f280434a3a8291e5dc691dfd7b
expression: |
- last(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
- ((last(/Mellanox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
+ ((last(/Mellanox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is low'
event_name: '{#FSNAME}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1354,8 +1354,8 @@ zabbix_export:
-
name: '{#FSNAME}: Disk space is critically low'
expression: |
- last(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Mellanox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Mellanox SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Mellanox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mellanox by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Mellanox by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1377,14 +1377,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]'
preprocessing:
-
@@ -1480,7 +1480,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 912430a103414c6eb9c8e55c45246f48
- expression: 'min(/Mellanox SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Mellanox by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#MEMNAME}: High memory utilization'
event_name: '{#MEMNAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -1503,7 +1503,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
preprocessing:
-
@@ -1688,7 +1688,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
-
uuid: e41382f2a3394e52b885bb6a70df35ff
@@ -1709,7 +1709,7 @@ zabbix_export:
type: GRAPH
name: graphid
value:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
name: 'CPU utilization'
-
type: GRAPH_PROTOTYPE
@@ -1733,7 +1733,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
name: '{#MEMNAME}: Memory utilization'
-
type: GRAPH_PROTOTYPE
@@ -1757,7 +1757,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
name: '{#FSNAME}: Disk space usage'
valuemaps:
-
@@ -2702,7 +2702,7 @@ zabbix_export:
triggers:
-
uuid: 667856dcaad04a108cb0a5150e825a50
- expression: '(last(/Mellanox SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mellanox SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mellanox SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mellanox SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Mellanox by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mellanox by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mellanox by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mellanox by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2711,7 +2711,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Mellanox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Mellanox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2727,5 +2727,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Mellanox SNMP'
+ host: 'Mellanox by SNMP'
key: system.cpu.util
diff --git a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/README.md
index 1eb601b699c..5b286ab67f8 100644
--- a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1009-7G-1C-1S+PC SNMP
+# MikroTik CCR1009-7G-1C-1S+PC by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1009-7G-1C-1S+PC.
7x Gigabit Ethernet, 1x Combo port (SFP or Gigabit Ethernet), 1xSFP+ cage, 9 cores x 1GHz CPU, 2GB RAM, LCD panel, passive cooling desktop enclosure, SmartCard slot, RouterOS L6, PSU
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1009-7G-1C-1SPC SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+PC_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+PC_snmp.yaml
index 65b11c34578..4c32d6c503b 100644
--- a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+PC_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+PC_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+PC_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:10:58Z'
+ date: '2022-10-27T14:43:37Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: d596d6d231bf49c08890aa3ff135ecc6
- template: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
- name: 'MikroTik CCR1009-7G-1C-1S+PC SNMP'
+ template: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
+ name: 'MikroTik CCR1009-7G-1C-1S+PC by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1009-7G-1C-1S+PC.
7x Gigabit Ethernet, 1x Combo port (SFP or Gigabit Ethernet), 1xSFP+ cage, 9 cores x 1GHz CPU, 2GB RAM, LCD panel, passive cooling desktop enclosure, SmartCard slot, RouterOS L6, PSU
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: feca40f53ed54c84afbb83d2650bbab6
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: bca3c4bf4f89480e9c6ccfaaed0039bf
- expression: 'min(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: b78ca1d148624deb95177f56eb738338
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 79b791b5ce1a4e5e8f68b561aeaac838
- expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: a981ac3d5e7843049eb581ab284edd04
- expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 203415c1da0d4e36b1e52904c8f77ad7
- expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: f7e4983c483944869d44fe5ea4289786
- expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 6a571f6691ec459bbc63e1a8dece1c04
- expression: 'min(/MikroTik CCR1009-7G-1C-1SPC SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: c48e5ab4112d46898f219f4e9d2e4bae
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1586816e4cfe4060b9c2d4c305439e4d
- expression: 'min(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: f3b3f73ab8ad4138b4acb0f3ff7aa732
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7662e3eded674ca996c98d5af253d767
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: ad69a0bc0507456787ef21628985e22f
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: d66e0fa34fbf4fc49ac5ebfed3f6dbb0
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d9e2f17aa26d47239ba7ee40d5b39759
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: f6bcaf561a23406e84a22549aed2485d
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: fcf0566a31b9400c9790638caad03e34
- expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1SPC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 88449b36f96740349cd1e08127b7b39c
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: cdab150de72d4e8bb2af4e412be6de27
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5eb2071556a749b382e8d6668fc7c699
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9e119f5f5ae74caeb58e9736f5e7e8b1
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 2f9915f91c984f56af4f9505c52aea9a
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f282823a66354c1aa88b2338efb376f0
- expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7310ec80c5ce4bd9a8d193ca10ffc636
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 0ec14ed9e07441bc94331081b1eefea7
expression: |
- change(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 6446f31cc81540c4967afe496edcc01b
expression: |
- (avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 9a38ec2a71ac47e3afe4c7b65ee22b9f
expression: |
- min(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: d8ff7af06d6d4fe39d7ab93eb803978a
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 93eaacd1543d440c93faa4b7c4fcd02d
expression: |
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 70397fb0b0754a42a9c97c77c2037d2a
expression: |
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1SPC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 7cb3423e736d435b87a21687c09debf0
- expression: '(last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1SPC SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1SPC by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1009-7G-1C-1SPC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1SPC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1SPC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1SPC by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/README.md
index b8a206dd529..ed1f7306d49 100644
--- a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1009-7G-1C-1S+ SNMP
+# MikroTik CCR1009-7G-1C-1S+ by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1009-7G-1C-1S+.
1U rackmount, 7x Gigabit Ethernet, 1x Combo port (SFP or Gigabit Ethernet), 1xSFP+ cage, 9 cores x 1.2GHz CPU, 2GB RAM, LCD panel, Dual Power supplies, SmartCard slot, RouterOS L6
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1009-7G-1C-1S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1009-7G-1C-1S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1009-7G-1C-1S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1009-7G-1C-1S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1009-7G-1C-1S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1009-7G-1C-1S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1009-7G-1C-1S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1009-7G-1C-1S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1009-7G-1C-1S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1009-7G-1C-1S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+_snmp.yaml
index 6132bba10ca..dc5518361b4 100644
--- a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-1S+_snmp/template_net_mikrotik_CCR1009-7G-1C-1S+_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:10:53Z'
+ date: '2022-10-27T14:42:25Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: a809695fbc784b75adcd4833c86bca8d
- template: 'MikroTik CCR1009-7G-1C-1S SNMP'
- name: 'MikroTik CCR1009-7G-1C-1S+ SNMP'
+ template: 'MikroTik CCR1009-7G-1C-1S by SNMP'
+ name: 'MikroTik CCR1009-7G-1C-1S+ by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1009-7G-1C-1S+.
1U rackmount, 7x Gigabit Ethernet, 1x Combo port (SFP or Gigabit Ethernet), 1xSFP+ cage, 9 cores x 1.2GHz CPU, 2GB RAM, LCD panel, Dual Power supplies, SmartCard slot, RouterOS L6
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 5021ba3d848e4c0d80c9644ab70b313b
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: b4c65c535f9841d98da1d32a9aaed7b8
- expression: 'min(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 493e740c3b3a48c3a308492d67ea11f8
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-1S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 7469aef39ea84a729b87d06d3dd0e9af
- expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: a30f1485711d4a649503638fd3a7d702
- expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: cada2ef5e9b14392885a05f9d50186d8
- expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 8574af8f375a4443bbf030ebf8d904b5
- expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 18ae9503588a4d398f387ab0d9015e26
- expression: 'min(/MikroTik CCR1009-7G-1C-1S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: b19e8ce655fb48e389a384a78826d5d6
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2f1676c21f7044a289a8fd3077f9c95f
- expression: 'min(/MikroTik CCR1009-7G-1C-1S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1009-7G-1C-1S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 12abe276614d445d9e958122c5608f9c
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 306d44e9256041089e0499678d0a9b6b
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 3ef08416c6e649469b036b730f756a35
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: db4a2f3baf9c44058e81df8924c51714
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3de221d9357541e68cb0e949f58b0f3c
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 21158d7b18b64861b373be6718006753
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: c1c9783678e846ec88d1b68486abd5a0
- expression: 'avg(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1009-7G-1C-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 86e76d6d249a4f339ca2841d9b433204
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4b5ad89e3ecf4d38a8bdb75b10028ba2
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 404195780f234277874f9c1d88ce286a
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e58c3aaa1a9469bb170fc50b75e1686
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 805d0b67d5e14d1abf2e1d3426c98691
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: cb698e80cd15409bad16d476fc637a61
- expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 013ab2e8443a4380b29960f1eb748ff1
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 597cab58269142b2bcf893e72baa9a0f
expression: |
- change(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: ce9c951bfca14de29b0d0379c3da3b38
expression: |
- (avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 25d69f21627e49aab9fde89e3c1f8078
expression: |
- min(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 11edf7c91daf4377ae12c38f16066d3a
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: e6500e2d99fa46dea445d9cc469df81e
expression: |
- last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 33a9e94bff174f31978be450df1f3c40
expression: |
- last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 354a68e77ee043a684ab8be18628ffca
- expression: '(last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-1S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1009-7G-1C-1S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-1S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-1S SNMP'
+ host: 'MikroTik CCR1009-7G-1C-1S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/README.md
index 4fa267e7b31..d1ece7a1e44 100644
--- a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1009-7G-1C-PC SNMP
+# MikroTik CCR1009-7G-1C-PC by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1009-7G-1C-PC.
7x Gigabit Ethernet, 1x Combo port (SFP or Gigabit Ethernet), 9 cores x 1GHz CPU, 1GB RAM, passive cooling case, RouterOS L6
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1009-7G-1C-PC SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-PC SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1009-7G-1C-PC SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1009-7G-1C-PC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1009-7G-1C-PC SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1009-7G-1C-PC SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1009-7G-1C-PC by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1009-7G-1C-PC by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1009-7G-1C-PC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1009-7G-1C-PC by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1009-7G-1C-PC by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/template_net_mikrotik_CCR1009-7G-1C-PC_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/template_net_mikrotik_CCR1009-7G-1C-PC_snmp.yaml
index 8680bd6e193..cec20a60750 100644
--- a/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/template_net_mikrotik_CCR1009-7G-1C-PC_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1009-7G-1C-PC_snmp/template_net_mikrotik_CCR1009-7G-1C-PC_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:03Z'
+ date: '2022-10-27T14:43:21Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 012e7043ff9849e197c42bf41cdf4d9a
- template: 'MikroTik CCR1009-7G-1C-PC SNMP'
- name: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ template: 'MikroTik CCR1009-7G-1C-PC by SNMP'
+ name: 'MikroTik CCR1009-7G-1C-PC by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1009-7G-1C-PC.
7x Gigabit Ethernet, 1x Combo port (SFP or Gigabit Ethernet), 9 cores x 1GHz CPU, 1GB RAM, passive cooling case, RouterOS L6
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: fe75c4f4867942638e3d39face2aea7f
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: ebb9113e215a4ab999b5faf043c3cdd3
- expression: 'min(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: ac9ee5f5347945eaa12f8551ca54ec9b
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-PC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1009-7G-1C-PC by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: de61b57b4fd54166a207bc040aa482a4
- expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 1776f8b97fba4feb962b0a47e4780076
- expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 796b3caf5996404c93c8266fe7c5aa89
- expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 0b8bd128fed047c591b839f3f46412dd
- expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name,#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name,#2) and length(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 2dec63fe94b943549c8351fe1e737975
- expression: 'min(/MikroTik CCR1009-7G-1C-PC SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1009-7G-1C-PC by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: a6a88593c32342deb0b72e998872a3c9
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e25580100dde402eaf640b6653223a82
- expression: 'min(/MikroTik CCR1009-7G-1C-PC SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1009-7G-1C-PC by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: c53b0d6476944defadfb0746ccae7ae6
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5b950c6be6494ba7b743a572a208fd42
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: f091c3d0b2754d1a883ad9e5f96f7037
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: e9c78b7e0b0d4d64b420b5802c91f02a
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 67f8c41b8c4748a6b5ab836821e79610
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: d18498b9f4df42fca625f01ec465d819
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: b457b4345c694e3a9963b74c9c2992c6
- expression: 'avg(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1009-7G-1C-PC SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1009-7G-1C-PC by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0f5a0e7593b447e2a9a5071f2ec4a30b
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 932fe21bdb6c460581093fb523b3c4b2
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d6dcbaaaa89c4cfe80060830c595e4bb
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d6e15977be5242edb4dd4bb8dcd0fbd0
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: a244eb79522f47a6983a9a346fbc947a
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 36dc48462d28464787978c8e6f74cafe
- expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 13d005d75c364bfd89008c30df81afc8
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 6cf5856a75df4190a0ba25ec62347194
expression: |
- change(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 7538c8f6c90f441cae42f030a34365f9
expression: |
- (avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 6ac02e1d7b024c1ca4e3e19215d09c6b
expression: |
- min(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1009-7G-1C-PC by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 2dd57c81d5e645a2a321d0519522310b
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: fc93929bd60542d3896fbcdd590479be
expression: |
- last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 6aa796b2784848a7ab26a7e6da8993a9
expression: |
- last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1009-7G-1C-PC by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 99da791be26943ec806a2c690f74a66d
- expression: '(last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-PC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-PC SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1009-7G-1C-PC by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1009-7G-1C-PC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1009-7G-1C-PC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1009-7G-1C-PC SNMP'
+ host: 'MikroTik CCR1009-7G-1C-PC by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/README.md
index 5f868f6d865..b225faa39c0 100644
--- a/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1016-12G SNMP
+# MikroTik CCR1016-12G by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1016-12G.
1U rackmount, 12x Gigabit Ethernet, LCD, 16 cores x 1.2GHz CPU, 2GB RAM, 17.8mpps fastpath, Up to 12Gbit/s throughput, RouterOS L6, Dual PSU
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1016-12G SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1016-12G SNMP/system.name,#1)<>last(/MikroTik CCR1016-12G SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12G SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1016-12G SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12G SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12G SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1016-12G SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12G SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12G SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1016-12G SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12G SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12G SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1016-12G SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1016-12G SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1016-12G SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1016-12G SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1016-12G SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1016-12G SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1016-12G SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1016-12G SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1016-12G SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12G SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12G SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12G SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1016-12G SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1016-12G SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1016-12G SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12G SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1016-12G SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12G SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12G SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1016-12G SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1016-12G SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1016-12G SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1016-12G SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1016-12G SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1016-12G by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1016-12G by SNMP/system.name,#1)<>last(/MikroTik CCR1016-12G by SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1016-12G by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12G by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1016-12G by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12G by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1016-12G by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12G by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1016-12G by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1016-12G by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1016-12G by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1016-12G by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1016-12G by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1016-12G by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1016-12G by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1016-12G by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1016-12G by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12G by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12G by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12G by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1016-12G by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1016-12G by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1016-12G by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12G by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1016-12G by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12G by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12G by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1016-12G by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1016-12G by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1016-12G by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1016-12G by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1016-12G by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/template_net_mikrotik_CCR1016-12G_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/template_net_mikrotik_CCR1016-12G_snmp.yaml
index 891c6ade906..dabd819af72 100644
--- a/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/template_net_mikrotik_CCR1016-12G_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1016-12G_snmp/template_net_mikrotik_CCR1016-12G_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:08Z'
+ date: '2022-10-27T14:42:01Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 5ed19d1f74224588bf5f53ac47003acc
- template: 'MikroTik CCR1016-12G SNMP'
- name: 'MikroTik CCR1016-12G SNMP'
+ template: 'MikroTik CCR1016-12G by SNMP'
+ name: 'MikroTik CCR1016-12G by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1016-12G.
1U rackmount, 12x Gigabit Ethernet, LCD, 16 cores x 1.2GHz CPU, 2GB RAM, 17.8mpps fastpath, Up to 12Gbit/s throughput, RouterOS L6, Dual PSU
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 81ff4b462e134758bf758ea598a89ac5
- expression: 'max(/MikroTik CCR1016-12G SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 5cf5ce1e93f54801a94370f4db68422a
- expression: 'min(/MikroTik CCR1016-12G SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12G SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1016-12G by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12G by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1016-12G SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: f9e60c1f73a24df5a9d84ebb81b28861
- expression: 'avg(/MikroTik CCR1016-12G SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1016-12G SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12G SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1016-12G by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12G by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1016-12G SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 4ff0ad1fe7a043f28e46403ab4ce500b
- expression: 'last(/MikroTik CCR1016-12G SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12G SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12G SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1016-12G by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12G by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 0abb489d471e414b84d9bfe5d6d0e453
- expression: 'last(/MikroTik CCR1016-12G SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12G SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12G SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1016-12G by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12G by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 5a2e293b0f664c93ac675f925f0ee3e0
- expression: 'last(/MikroTik CCR1016-12G SNMP/system.name,#1)<>last(/MikroTik CCR1016-12G SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12G SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1016-12G by SNMP/system.name,#1)<>last(/MikroTik CCR1016-12G by SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 3146fc39809741a09a46852ef392b694
- expression: 'last(/MikroTik CCR1016-12G SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12G SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12G SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1016-12G by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12G by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1016-12G SNMP/system.name,#1)<>last(/MikroTik CCR1016-12G SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12G SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1016-12G by SNMP/system.name,#1)<>last(/MikroTik CCR1016-12G by SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12G by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 4093f81ecb9f4320b5c5ca719a6b8574
- expression: 'min(/MikroTik CCR1016-12G SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1016-12G by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: f8bfaedd5b0f45ae9e91831865b2c1fa
- expression: 'max(/MikroTik CCR1016-12G SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1016-12G SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 20cfcbcae14b4b7fb9c86486f4e6b972
- expression: 'min(/MikroTik CCR1016-12G SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1016-12G by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 902597a2a07e40e59035f62cf623fd9b
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c84e4932a71849549be90027810335ea
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 67d43cb946d94556bb921b0b120d58ee
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: cd3aaf374f81487f98f0056920870782
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e6346dade484f4aad2a63c03ebf32d4
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 9eafc6dc38614e26a301d943f4f8dd5d
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: d6cc20f91d5748fd85ab8743b5152be6
- expression: 'avg(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1016-12G SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1016-12G by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6c73b57b26b1484c83d7a8185829bd85
- expression: 'max(/MikroTik CCR1016-12G SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5eafa20544ed463fad00fb233b34f92c
- expression: 'max(/MikroTik CCR1016-12G SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0d079b01ba334fcd8f3e527ec7102c3b
- expression: 'max(/MikroTik CCR1016-12G SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fddf1697f5c04bae95c4752d2627856f
- expression: 'max(/MikroTik CCR1016-12G SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: adb864eee4b744328d91e8f9339bc79c
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 815c19538e7b48edb63bd46ad4d641d3
- expression: 'last(/MikroTik CCR1016-12G SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1016-12G by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 80c35372193e4616969d2e681a412606
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 4246c08015084a69a8025aaa928efb3f
expression: |
- change(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1016-12G SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1016-12G by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: b96a1bd98a964bc4b3aa10f1b723c256
expression: |
- (avg(/MikroTik CCR1016-12G SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1016-12G SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1016-12G by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1016-12G by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1016-12G SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1016-12G SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1016-12G by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1016-12G by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12G by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: b2999652071a4eecb8f7112b03168412
expression: |
- min(/MikroTik CCR1016-12G SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1016-12G SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1016-12G by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1016-12G by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1016-12G SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1016-12G SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1016-12G by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1016-12G by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1016-12G SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1016-12G by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: ed6a12f9caca4aa2875e2dfd28ae73e2
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 79b2a705172743a88de436aa62be33ad
expression: |
- last(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1016-12G SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1016-12G by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 8c8e59c2079d4bfcbd775b0c38bbf253
expression: |
- last(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1016-12G SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1016-12G by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1016-12G SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1016-12G by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12G by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12G by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 4748e443639d47b2a969070386524eee
- expression: '(last(/MikroTik CCR1016-12G SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12G SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12G SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12G SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1016-12G by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12G by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12G by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12G by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1016-12G SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1016-12G by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12G SNMP'
+ host: 'MikroTik CCR1016-12G by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/README.md
index 04e591cbebf..1e817ebe7b4 100644
--- a/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1016-12S-1S+ SNMP
+# MikroTik CCR1016-12S-1S+ by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1016-12S-1S+.
1U rackmount, 12xSFP cage, 1xSFP+ cage, 16 cores x 1.2GHz CPU, 2GB RAM, LCD panel, Dual Power supplies, RouterOS L6
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1016-12S-1S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1016-12S-1S SNMP/system.name,#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1016-12S-1S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1016-12S-1S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1016-12S-1S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1016-12S-1S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1016-12S-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1016-12S-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1016-12S-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1016-12S-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1016-12S-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1016-12S-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1016-12S-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1016-12S-1S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12S-1S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12S-1S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12S-1S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1016-12S-1S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1016-12S-1S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1016-12S-1S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12S-1S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1016-12S-1S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1016-12S-1S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1016-12S-1S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1016-12S-1S by SNMP/system.name,#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1016-12S-1S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1016-12S-1S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1016-12S-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1016-12S-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1016-12S-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12S-1S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1016-12S-1S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1016-12S-1S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1016-12S-1S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12S-1S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1016-12S-1S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1016-12S-1S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/template_net_mikrotik_CCR1016-12S-1S+_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/template_net_mikrotik_CCR1016-12S-1S+_snmp.yaml
index f11305e6bf4..4b2d4c81f88 100644
--- a/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/template_net_mikrotik_CCR1016-12S-1S+_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1016-12S-1S+_snmp/template_net_mikrotik_CCR1016-12S-1S+_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:12Z'
+ date: '2022-10-27T14:43:00Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 654910b270d9464f863ed085ba7302ce
- template: 'MikroTik CCR1016-12S-1S SNMP'
- name: 'MikroTik CCR1016-12S-1S+ SNMP'
+ template: 'MikroTik CCR1016-12S-1S by SNMP'
+ name: 'MikroTik CCR1016-12S-1S+ by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1016-12S-1S+.
1U rackmount, 12xSFP cage, 1xSFP+ cage, 16 cores x 1.2GHz CPU, 2GB RAM, LCD panel, Dual Power supplies, RouterOS L6
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: ace4ead8482a47fea59f346d0cc41c62
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: e474571997454a96a7e86294c876c0a7
- expression: 'min(/MikroTik CCR1016-12S-1S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12S-1S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1016-12S-1S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12S-1S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: d4e0d30eadce4dd5a37afd48a10ed379
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1016-12S-1S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12S-1S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1016-12S-1S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1016-12S-1S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 8012e0275fc24d9e9688cfccb3134aae
- expression: 'last(/MikroTik CCR1016-12S-1S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: c6e011ff0a1f41c5b90bb8fba507fe7d
- expression: 'last(/MikroTik CCR1016-12S-1S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 1060d8c4dda547d9902dc94ac68f1b33
- expression: 'last(/MikroTik CCR1016-12S-1S SNMP/system.name,#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/system.name,#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: f8ac6aaa8c06474d9a9b86e5e43b5ed5
- expression: 'last(/MikroTik CCR1016-12S-1S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1016-12S-1S SNMP/system.name,#1)<>last(/MikroTik CCR1016-12S-1S SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12S-1S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/system.name,#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/system.name,#2) and length(last(/MikroTik CCR1016-12S-1S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 63e95c315b6f422e9d4f6e532e847e9c
- expression: 'min(/MikroTik CCR1016-12S-1S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1016-12S-1S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: c98fffdacb89455aa6f4f62060d360de
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a8920b239ceb42e6b3e26ffd310a409a
- expression: 'min(/MikroTik CCR1016-12S-1S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1016-12S-1S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 53f14b1963614f2e8061c840c384f401
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c3b13c3d1f8c4d53b1fa67f9abc168bd
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 80fd1bd8bf564aecbe37b77294c84ae6
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 335090c080c04b909f1b46b404dd025c
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5b86f67e1e184ef79b7023760d951747
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: c62972c2c47d403bb92d43ff7b9b5a20
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: fc2ffec9e7054c82880a560da071781a
- expression: 'avg(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1016-12S-1S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1016-12S-1S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 42329cfbff37430f87adfefa852b39fe
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0259421d33e745d992e5eb03091b787a
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ac07e47a3ce447febb5049da33931109
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ef75c9ab974c46a99579c544e43a2c2c
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 274527cab9a440f4b7ec6b65998338ec
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ff2543e8251945f29036cb43fda69c72
- expression: 'last(/MikroTik CCR1016-12S-1S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b0bc658fd9654ca4802593051c5a368f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 837272175f904763bd4c0462946e9a0e
expression: |
- change(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1016-12S-1S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1016-12S-1S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: d57a8a917c2a4ad89618acef7c5f1fcb
expression: |
- (avg(/MikroTik CCR1016-12S-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1016-12S-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1016-12S-1S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1016-12S-1S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1016-12S-1S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1016-12S-1S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: d7b2ed63b7f941878d34b64ca7ffe21b
expression: |
- min(/MikroTik CCR1016-12S-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1016-12S-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1016-12S-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1016-12S-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1016-12S-1S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1016-12S-1S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1016-12S-1S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1016-12S-1S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1016-12S-1S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1016-12S-1S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 8c4d698df0b044018e22d6ae97e3ffeb
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 7e201487d2ed496492eb2dbb1a169021
expression: |
- last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: fcc24d6aa85a4ae4b104d9523afe073d
expression: |
- last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1016-12S-1S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 916fbb00982f4fb38b1942cf44daf5f2
- expression: '(last(/MikroTik CCR1016-12S-1S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12S-1S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12S-1S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12S-1S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1016-12S-1S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1016-12S-1S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1016-12S-1S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1016-12S-1S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1016-12S-1S SNMP'
+ host: 'MikroTik CCR1016-12S-1S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/README.md
index 4df13c3d2e5..bd70fdc95c4 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1036-12G-4S-EM SNMP
+# MikroTik CCR1036-12G-4S-EM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1036-12G-4S-EM.
1U rackmount, 12x Gigabit Ethernet, 4xSFP cages, LCD, 36 cores x 1.2GHz CPU, 8GB RAM, 24 mpps fastpath, Up to 16Gbit/s throughput, RouterOS L6, Dual PSU
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-12G-4S-EM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S-EM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-12G-4S-EM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-12G-4S-EM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-12G-4S-EM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-12G-4S-EM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-12G-4S-EM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-12G-4S-EM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-12G-4S-EM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-12G-4S-EM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-12G-4S-EM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/template_net_mikrotik_CCR1036-12G-4S-EM_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/template_net_mikrotik_CCR1036-12G-4S-EM_snmp.yaml
index f759c692aed..417dbd185f1 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/template_net_mikrotik_CCR1036-12G-4S-EM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S-EM_snmp/template_net_mikrotik_CCR1036-12G-4S-EM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:16Z'
+ date: '2022-10-27T14:43:16Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 930c0e0534a9424fb01f2b6218d8ce59
- template: 'MikroTik CCR1036-12G-4S-EM SNMP'
- name: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ template: 'MikroTik CCR1036-12G-4S-EM by SNMP'
+ name: 'MikroTik CCR1036-12G-4S-EM by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1036-12G-4S-EM.
1U rackmount, 12x Gigabit Ethernet, 4xSFP cages, LCD, 36 cores x 1.2GHz CPU, 8GB RAM, 24 mpps fastpath, Up to 16Gbit/s throughput, RouterOS L6, Dual PSU
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: f9fd5f6cd1a24a22ae48b0628193e0c4
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: c72587594cfb49a6a8b39575e39ea8eb
- expression: 'min(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 7d3593f5ee8f4350867de676743c4f60
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S-EM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S-EM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: e0decdba5c7a44ef9983da4d0912ba37
- expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: ee34d0bdac3f4b0489fc96a3feecb72b
- expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 10caf9fc68e14308a0dbe730e7e4199e
- expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 65ac535fb0114cc098bd89d1e2a5cfed
- expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 1ed5e95e003d4119bd578ac4f572ba16
- expression: 'min(/MikroTik CCR1036-12G-4S-EM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1036-12G-4S-EM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: d4932539ba7245ff8975cc8c224f8d36
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 519211164f324540a624c3f1046dbd44
- expression: 'min(/MikroTik CCR1036-12G-4S-EM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1036-12G-4S-EM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 657a8813b0784c7b9034b320f9d90a7f
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 09b73cf701ab4f4aac2fdbb4ff26e893
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 3e86bb9cfaa5410d8b932f80c413e340
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 5f52e2e9403544b987568c00046deaea
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6c46256f6d124cf9b3d602f7536a4788
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 8b61d889f30e43f28102163a6284c8d4
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: edbf42873c99405cb77d0eb3fd6986a8
- expression: 'avg(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-12G-4S-EM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-12G-4S-EM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bbe7c7f1238649119b44e657c5f0d292
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8f858819c89542bc88afa76981b4639a
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ad82b43ac27c44258f4a4f3ca212cdbf
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6a3ce63f84ef4df9b8e9cc231ddf3fe0
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 7b29429668f84059956e617b64d58373
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4a5a914ac69f42eb8fa9ca5ef30e63cc
- expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6aa1807ef8c94f09a7bd527f5c34fd1f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: f3c8a1a967524ca2bba4c646987e3fc8
expression: |
- change(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: b810391bc8204730b88b3059e2eefa16
expression: |
- (avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 6f66143ac9064cdfa02884fde84a4c96
expression: |
- min(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S-EM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: da85811fdfe24a82b4d7a13a243893ba
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 07a38ca5caf7408fa0e61ec5bb2d2c9a
expression: |
- last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 313ea923495e4a0289519b8c228f018a
expression: |
- last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S-EM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 8138034748544325bad6bdc90484ad21
- expression: '(last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S-EM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S-EM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S-EM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1036-12G-4S-EM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S-EM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S-EM SNMP'
+ host: 'MikroTik CCR1036-12G-4S-EM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/README.md
index cfe9827f5bb..98516b36d65 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1036-12G-4S SNMP
+# MikroTik CCR1036-12G-4S by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1036-12G-4S.
1U rackmount, 12x Gigabit Ethernet, 4xSFP cages, LCD, 36 cores x 1.2GHz CPU, 4GB RAM, 24 mpps fastpath, Up to 16Gbit/s throughput, RouterOS L6, Dual PSU
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-12G-4S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-12G-4S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-12G-4S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-12G-4S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-12G-4S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-12G-4S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-12G-4S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-12G-4S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-12G-4S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-12G-4S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-12G-4S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-12G-4S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-12G-4S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-12G-4S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-12G-4S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S by SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-12G-4S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-12G-4S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-12G-4S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-12G-4S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-12G-4S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-12G-4S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-12G-4S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-12G-4S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-12G-4S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/template_net_mikrotik_CCR1036-12G-4S_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/template_net_mikrotik_CCR1036-12G-4S_snmp.yaml
index 5d1de7af1ce..ae7e6049980 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/template_net_mikrotik_CCR1036-12G-4S_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1036-12G-4S_snmp/template_net_mikrotik_CCR1036-12G-4S_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:20Z'
+ date: '2022-10-27T14:42:43Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 82b428ad78d34988b93f3d577f2b6adc
- template: 'MikroTik CCR1036-12G-4S SNMP'
- name: 'MikroTik CCR1036-12G-4S SNMP'
+ template: 'MikroTik CCR1036-12G-4S by SNMP'
+ name: 'MikroTik CCR1036-12G-4S by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1036-12G-4S.
1U rackmount, 12x Gigabit Ethernet, 4xSFP cages, LCD, 36 cores x 1.2GHz CPU, 4GB RAM, 24 mpps fastpath, Up to 16Gbit/s throughput, RouterOS L6, Dual PSU
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 65c639dc46a345da90e22ca0dc491d8c
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 65eb4b94fead4b57acda0b7ac001c41c
- expression: 'min(/MikroTik CCR1036-12G-4S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-12G-4S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 410faf17c1ca41408cb773270dc614b3
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1036-12G-4S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-12G-4S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-12G-4S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 565c94a00dde43c1af72f8c2d00edcb5
- expression: 'last(/MikroTik CCR1036-12G-4S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 6d02cc3ff4144efda53554446feb0058
- expression: 'last(/MikroTik CCR1036-12G-4S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: ed7279478045454b809f46211c5c71b9
- expression: 'last(/MikroTik CCR1036-12G-4S SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 18900918495f4dd99cbde564a071bf34
- expression: 'last(/MikroTik CCR1036-12G-4S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1036-12G-4S SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/system.name,#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-12G-4S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: d89ab73e0c534f84ae9481a1a48d5064
- expression: 'min(/MikroTik CCR1036-12G-4S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1036-12G-4S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 56f238340c7e40b39eb8cc04a67cf465
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 24667b99976c417985bbb1a307184d88
- expression: 'min(/MikroTik CCR1036-12G-4S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1036-12G-4S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: f2726d5b184f49b38b7911c4357a7a13
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: aa6398ab43ec491ab5aa96c8d8422112
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 186b82ffb7934fe8a62a150970dc2468
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 58357816e19b4c9986e8d26165c4f29a
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 522ee0ddfd7e40a4b81612d4ba4266cf
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 6a5b1f729c054ec7acc3665ffb831bcc
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: f4198424045742619f84410ee7a2939c
- expression: 'avg(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-12G-4S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-12G-4S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b7d3eebe1d6944b88ed8afa923caf884
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 94c9e778f2a7471c8002dfa6918dde8f
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 77e69f355f7348a4bc823a8428980356
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c1926140ee5d4532adeecf590f740e96
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 1a244ce7f50e465bbea8774ce17a334c
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d32004c5c1804105aee11b22722556e1
- expression: 'last(/MikroTik CCR1036-12G-4S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7b8a57cb6eeb4eb5b2a6e270065f6032
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: bc744a57d4e44fd187453b4b8f72538e
expression: |
- change(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1036-12G-4S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1036-12G-4S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 4a4f855dd0744cd29c3d24eb7e00de35
expression: |
- (avg(/MikroTik CCR1036-12G-4S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1036-12G-4S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1036-12G-4S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1036-12G-4S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1036-12G-4S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-12G-4S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: f8e4afe44bc041e9b1853644d1b662f8
expression: |
- min(/MikroTik CCR1036-12G-4S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1036-12G-4S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1036-12G-4S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1036-12G-4S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1036-12G-4S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1036-12G-4S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1036-12G-4S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1036-12G-4S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-12G-4S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-12G-4S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: a32b1f9c2e3049e7bcd3af65c4b107f6
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 73127568919e45ca9df89ab08285a3b5
expression: |
- last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 954903eaecf54c26874d9e5ce47e044b
expression: |
- last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-12G-4S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: ecf84d7e28504c23a40b013683d1cfee
- expression: '(last(/MikroTik CCR1036-12G-4S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-12G-4S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-12G-4S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1036-12G-4S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-12G-4S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-12G-4S SNMP'
+ host: 'MikroTik CCR1036-12G-4S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/README.md
index 4af8ca6a158..1ef402e683e 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1036-8G-2S+EM SNMP
+# MikroTik CCR1036-8G-2S+EM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1036-8G-2S+EM.
1U rackmount, 8x Gigabit Ethernet, 2xSFP+ cages, LCD, 36 cores x 1.2GHz CPU, 8GB RAM, 41.5mpps fastpath, Up to 28Gbit/s throughput, RouterOS L6, Dual PSU
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-8G-2SEM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2SEM SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2SEM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-8G-2SEM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2SEM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-8G-2SEM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-8G-2SEM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-8G-2SEM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2SEM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-8G-2SEM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-8G-2SEM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-8G-2SEM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2SEM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-8G-2SEM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-8G-2SEM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-8G-2SEM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-8G-2SEM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/template_net_mikrotik_CCR1036-8G-2S+EM_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/template_net_mikrotik_CCR1036-8G-2S+EM_snmp.yaml
index c2f9ccdc2b1..f420af14c33 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/template_net_mikrotik_CCR1036-8G-2S+EM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+EM_snmp/template_net_mikrotik_CCR1036-8G-2S+EM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:29Z'
+ date: '2022-10-27T14:41:56Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 7b3ecb24366f4685970df8e1143323f0
- template: 'MikroTik CCR1036-8G-2SEM SNMP'
- name: 'MikroTik CCR1036-8G-2S+EM SNMP'
+ template: 'MikroTik CCR1036-8G-2SEM by SNMP'
+ name: 'MikroTik CCR1036-8G-2S+EM by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1036-8G-2S+EM.
1U rackmount, 8x Gigabit Ethernet, 2xSFP+ cages, LCD, 36 cores x 1.2GHz CPU, 8GB RAM, 41.5mpps fastpath, Up to 28Gbit/s throughput, RouterOS L6, Dual PSU
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 151029088e374c23bb89abe498da70ef
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: f719d0a102d84edb8c2672502ee28b25
- expression: 'min(/MikroTik CCR1036-8G-2SEM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2SEM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: acba03a0cc9a40fb89258e1ece7dce30
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1036-8G-2SEM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2SEM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2SEM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: a42442ce9d7d4a378964296eed6a6b33
- expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 2da3a78731324233be1563691f353d04
- expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: f2d7211cd2ca476facec96075e06298c
- expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 855a1e17110e49eaaaf4dd263f16a591
- expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2SEM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 9a83e6b6a0874a49a983cb610a7e0e50
- expression: 'min(/MikroTik CCR1036-8G-2SEM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1036-8G-2SEM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: b14b41ca31c342be803852075ff5c9f9
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bc07372dff2f4f72a6b1b7c0e02f79c7
- expression: 'min(/MikroTik CCR1036-8G-2SEM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1036-8G-2SEM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 43bfef9ab73c4111a6781bc0a6ed4831
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b3ce44c470a64dc49bc169c06bf9761d
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 876a62a4aa6a449d888f1233c24c0dbc
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 79304fcbafe349d4adeebe277858d23a
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 80af013716d944e8be4cef996aabfef2
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: ab46cd19e709417ebeb5c3b9964e2eee
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 06e95d596af74a288b3787cb665255bb
- expression: 'avg(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-8G-2SEM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-8G-2SEM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4f9b8def6c3e4d72b7afeb50808cae21
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: aa5d408235834a5e8492a55e178f5dc7
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5c4489b0d28649a9a487d65833043589
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1d77ead6601b40d5b22afc9098a8a211
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 474fc7c380b74f11b366fc548b4e2fbf
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1b02cd1523474c949dcabd004a01089f
- expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 80d625abfee747ffa6513c604aff983f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 1d4bee528df346c6b9ac8e73352b0871
expression: |
- change(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 17ab3a7deafe4ffdbc33a1d3ebef3039
expression: |
- (avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 94fa2681675b4295ad1ee4d86e6f85f0
expression: |
- min(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1036-8G-2SEM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1036-8G-2SEM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2SEM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: f6f52142e7464eaa829cab9823eff606
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 768953b43aab47d0bfcf9eeef75625ad
expression: |
- last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 74b9590a3e2448bc926fdd29bc6ec153
expression: |
- last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2SEM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 75e9434ddcb34c5489190d8b6de07e87
- expression: '(last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2SEM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2SEM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2SEM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2SEM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1036-8G-2SEM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-8G-2SEM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2SEM SNMP'
+ host: 'MikroTik CCR1036-8G-2SEM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/README.md
index 7ed7fd5bb8e..163d57bd56d 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1036-8G-2S+ SNMP
+# MikroTik CCR1036-8G-2S+ by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1036-8G-2S+.
1U rackmount, 8x Gigabit Ethernet, 2xSFP+ cages, LCD, 36 cores x 1.2GHz CPU, 4GB RAM, 41.5mpps fastpath, Up to 28Gbit/s throughput, RouterOS L6, Dual PSU
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-8G-2S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2S SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-8G-2S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-8G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-8G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-8G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-8G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-8G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-8G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-8G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-8G-2S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-8G-2S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-8G-2S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-8G-2S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-8G-2S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-8G-2S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1036-8G-2S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2S by SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1036-8G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1036-8G-2S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1036-8G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1036-8G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1036-8G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1036-8G-2S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1036-8G-2S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1036-8G-2S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1036-8G-2S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1036-8G-2S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/template_net_mikrotik_CCR1036-8G-2S+_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/template_net_mikrotik_CCR1036-8G-2S+_snmp.yaml
index ffcfdd51c4f..659ad6c73ac 100644
--- a/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/template_net_mikrotik_CCR1036-8G-2S+_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1036-8G-2S+_snmp/template_net_mikrotik_CCR1036-8G-2S+_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:24Z'
+ date: '2022-10-27T14:42:13Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 7f44e67e3f564ec9894c9142d7276553
- template: 'MikroTik CCR1036-8G-2S SNMP'
- name: 'MikroTik CCR1036-8G-2S+ SNMP'
+ template: 'MikroTik CCR1036-8G-2S by SNMP'
+ name: 'MikroTik CCR1036-8G-2S+ by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1036-8G-2S+.
1U rackmount, 8x Gigabit Ethernet, 2xSFP+ cages, LCD, 36 cores x 1.2GHz CPU, 4GB RAM, 41.5mpps fastpath, Up to 28Gbit/s throughput, RouterOS L6, Dual PSU
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 00453dcba3e74c4cb1bfce45c0d29590
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: ef9c639da1fb4c7d9e9082b76468353e
- expression: 'min(/MikroTik CCR1036-8G-2S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-8G-2S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 8a7a50a814854217bae736f9766a9f42
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1036-8G-2S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1036-8G-2S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1036-8G-2S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 26d7b5b5fc4149d4869a4e3a94173172
- expression: 'last(/MikroTik CCR1036-8G-2S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 79405589edba4a878d7d2ab5d0399076
- expression: 'last(/MikroTik CCR1036-8G-2S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 3d3902234c994181819a311b9f1947dd
- expression: 'last(/MikroTik CCR1036-8G-2S SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 1ed2e0368bb94a4fbfa8a82764b3b40d
- expression: 'last(/MikroTik CCR1036-8G-2S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1036-8G-2S SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2S SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/system.name,#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/system.name,#2) and length(last(/MikroTik CCR1036-8G-2S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 03cdc40813dd4d5093512db3c5e574ff
- expression: 'min(/MikroTik CCR1036-8G-2S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1036-8G-2S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 2fdfcfe056e848f2b0a628d87ad4aa6c
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a9f3354cf2044306ba8ca1aae227ee60
- expression: 'min(/MikroTik CCR1036-8G-2S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1036-8G-2S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: d86c3660acfb4595946453fce47eb8df
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f399cf1f48d24ec3b3f33159cb7b4fe0
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 0c240046f1434ffb8c2cba26e4b0e61d
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: f810f58531c54e3bbcf6d0e677100237
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 773c5f9316c44d8297b4fd3cdd236da1
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 3d688fda4da843e192c26d955d8d8dd9
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 2a21380034244b29878bbb198cca6712
- expression: 'avg(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1036-8G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1036-8G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 67152820f4884d51a16966f339947955
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ca8b841c9830497dabd0138fafade175
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e8f613b6301b43efa4a2e84d62ec520f
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c215c39df396474e865ae9b36c40545f
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 364c87891bd34038a38c3339e6367c60
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 587ccbe7d604489783b66411a3b21cb1
- expression: 'last(/MikroTik CCR1036-8G-2S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1f7c8669552d4890ac963f53aefcf100
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: e9c85085a0d546ba910b139c99adee10
expression: |
- change(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1036-8G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1036-8G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 91c48f7aac824bfbb58d78bd791a60e2
expression: |
- (avg(/MikroTik CCR1036-8G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1036-8G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1036-8G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1036-8G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1036-8G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1036-8G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: d7a049070a434aa5b3a9c320f25eb040
expression: |
- min(/MikroTik CCR1036-8G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1036-8G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1036-8G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1036-8G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1036-8G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1036-8G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1036-8G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1036-8G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1036-8G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1036-8G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: df12abb1cede4e059dd54454550f2501
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 72a2fc862c354ab0a3d8fb491aaed9e1
expression: |
- last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: d66a941be43a440fb13386d9a319a5b3
expression: |
- last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1036-8G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 7b5ce136e1524c2c85febecb055e50f8
- expression: '(last(/MikroTik CCR1036-8G-2S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1036-8G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1036-8G-2S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1036-8G-2S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1036-8G-2S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1036-8G-2S SNMP'
+ host: 'MikroTik CCR1036-8G-2S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/README.md
index 263a1a68b60..5c5cf0e62f5 100644
--- a/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR1072-1G-8S+ SNMP
+# MikroTik CCR1072-1G-8S+ by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR1072-1G-8S+.
1U rackmount, 1x Gigabit Ethernet, 8xSFP+ cages, LCD, 72 cores x 1GHz CPU, 16GB RAM, up to 120 million packets per second, 80Gbps throughput, RouterOS L6
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1072-1G-8S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1072-1G-8S SNMP/system.name,#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.name,#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1072-1G-8S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1072-1G-8S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1072-1G-8S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1072-1G-8S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1072-1G-8S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1072-1G-8S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1072-1G-8S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1072-1G-8S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1072-1G-8S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1072-1G-8S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1072-1G-8S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1072-1G-8S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1072-1G-8S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1072-1G-8S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1072-1G-8S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1072-1G-8S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1072-1G-8S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1072-1G-8S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1072-1G-8S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1072-1G-8S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1072-1G-8S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR1072-1G-8S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR1072-1G-8S by SNMP/system.name,#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.name,#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR1072-1G-8S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR1072-1G-8S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR1072-1G-8S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR1072-1G-8S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR1072-1G-8S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1072-1G-8S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR1072-1G-8S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR1072-1G-8S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR1072-1G-8S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1072-1G-8S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR1072-1G-8S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR1072-1G-8S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/template_net_mikrotik_CCR1072-1G-8S+_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/template_net_mikrotik_CCR1072-1G-8S+_snmp.yaml
index f4b0f1131c8..aa4d7aa98bf 100644
--- a/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/template_net_mikrotik_CCR1072-1G-8S+_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR1072-1G-8S+_snmp/template_net_mikrotik_CCR1072-1G-8S+_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:33Z'
+ date: '2022-10-27T14:43:09Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: e7894db1c4c94e0f8715977e751368b3
- template: 'MikroTik CCR1072-1G-8S SNMP'
- name: 'MikroTik CCR1072-1G-8S+ SNMP'
+ template: 'MikroTik CCR1072-1G-8S by SNMP'
+ name: 'MikroTik CCR1072-1G-8S+ by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR1072-1G-8S+.
1U rackmount, 1x Gigabit Ethernet, 8xSFP+ cages, LCD, 72 cores x 1GHz CPU, 16GB RAM, up to 120 million packets per second, 80Gbps throughput, RouterOS L6
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 2510c2fd36cf4379b15e3e18abffea95
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 48a93170038b41af9fd8b6f25500ee37
- expression: 'min(/MikroTik CCR1072-1G-8S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1072-1G-8S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1072-1G-8S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1072-1G-8S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 1e70b999e9854c4093a75a960f8282a2
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR1072-1G-8S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1072-1G-8S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR1072-1G-8S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR1072-1G-8S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 385231b6c7eb4ce6a275969b437c8d44
- expression: 'last(/MikroTik CCR1072-1G-8S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: bb2cc5758a154bc0ad07138e87f353a4
- expression: 'last(/MikroTik CCR1072-1G-8S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 9e3ce4eb299547199e67c131556d5bc5
- expression: 'last(/MikroTik CCR1072-1G-8S SNMP/system.name,#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.name,#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/system.name,#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.name,#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: ff7510d9e2d44057a089b9486af74971
- expression: 'last(/MikroTik CCR1072-1G-8S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR1072-1G-8S SNMP/system.name,#1)<>last(/MikroTik CCR1072-1G-8S SNMP/system.name,#2) and length(last(/MikroTik CCR1072-1G-8S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/system.name,#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/system.name,#2) and length(last(/MikroTik CCR1072-1G-8S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: a7fa3a261f0c4362938700ff8954cdc9
- expression: 'min(/MikroTik CCR1072-1G-8S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR1072-1G-8S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: a2d66f40be294b8b81a96e11afcfe7ec
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a47faa0771b348ed8fd040027deebd95
- expression: 'min(/MikroTik CCR1072-1G-8S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR1072-1G-8S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 4a85e5aaa45a4a289323e0438e6f5f09
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b32ecc16390c42bfbc0ad23305f59392
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: fb39a804a60e4154ad6602fad05c399d
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: e35e3256fd58439d923ca54b7e33e64c
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ea9da810d00445f3b4649f8aec0d9ef7
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 28a883547a4449ea96c1168aef939a65
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 760505068a3946edbd38294f867e08e5
- expression: 'avg(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR1072-1G-8S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR1072-1G-8S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: eacd5dec75404c9e80bd18d5ea0f3bff
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0e79530582ee4e3aa270d8a43a96f7f0
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ddbe2cfcdd6f4d5895780fa6510acb73
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5f8087b4f9ae4d3693d55d189c1f99f4
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 81214dcd098f44d4aa3c3e33a8f23e0b
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e25c484ec45a4a01b51f961318813e30
- expression: 'last(/MikroTik CCR1072-1G-8S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 24634d43d28146ca802ae4aee7af276a
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 7a475a2472c64ee2b15b5f36c93e17db
expression: |
- change(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR1072-1G-8S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR1072-1G-8S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 2154cc56a5304ec5b6327852cf4eea8b
expression: |
- (avg(/MikroTik CCR1072-1G-8S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR1072-1G-8S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR1072-1G-8S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR1072-1G-8S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR1072-1G-8S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR1072-1G-8S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 450f5f3106cf4755b48cbfd9d0c2a287
expression: |
- min(/MikroTik CCR1072-1G-8S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR1072-1G-8S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR1072-1G-8S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR1072-1G-8S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR1072-1G-8S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR1072-1G-8S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR1072-1G-8S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR1072-1G-8S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR1072-1G-8S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR1072-1G-8S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 036680a2cc2e4c568a221b6456821b47
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 044aabf4d95c4c9ba7ccec76446f50af
expression: |
- last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 3a5a7043d1b64fe5a7fdefc341fcc22a
expression: |
- last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR1072-1G-8S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: be74bf6810694df98cd43a669e247aab
- expression: '(last(/MikroTik CCR1072-1G-8S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1072-1G-8S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1072-1G-8S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1072-1G-8S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR1072-1G-8S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR1072-1G-8S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR1072-1G-8S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR1072-1G-8S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR1072-1G-8S SNMP'
+ host: 'MikroTik CCR1072-1G-8S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/README.md
index d95fb3b5b5c..7a827676c46 100644
--- a/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR2004-16G-2S+ SNMP
+# MikroTik CCR2004-16G-2S+ by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR2004-16G-2S+.
This powerful and affordable router crushes all previous CCR models in single-core performance. 16x Gigabit Ethernet ports, 2x10G SFP+ cages, active cooling and the best single-core performance per watt & best overall performance per watt among all the CCR devices.
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR2004-16G-2S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR2004-16G-2S SNMP/system.name,#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.name,#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR2004-16G-2S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR2004-16G-2S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR2004-16G-2S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR2004-16G-2S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR2004-16G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR2004-16G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR2004-16G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR2004-16G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR2004-16G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR2004-16G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR2004-16G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR2004-16G-2S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-16G-2S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-16G-2S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-16G-2S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR2004-16G-2S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR2004-16G-2S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR2004-16G-2S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-16G-2S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR2004-16G-2S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR2004-16G-2S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR2004-16G-2S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR2004-16G-2S by SNMP/system.name,#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.name,#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR2004-16G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR2004-16G-2S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR2004-16G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR2004-16G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR2004-16G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-16G-2S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR2004-16G-2S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR2004-16G-2S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR2004-16G-2S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-16G-2S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR2004-16G-2S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR2004-16G-2S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/template_net_mikrotik_CCR2004-16G-2S+_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/template_net_mikrotik_CCR2004-16G-2S+_snmp.yaml
index 1874a5bcc47..d4976d528b4 100644
--- a/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/template_net_mikrotik_CCR2004-16G-2S+_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR2004-16G-2S+_snmp/template_net_mikrotik_CCR2004-16G-2S+_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:37Z'
+ date: '2022-10-27T14:43:58Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: ab871d051e304f83950171c5243aa4db
- template: 'MikroTik CCR2004-16G-2S SNMP'
- name: 'MikroTik CCR2004-16G-2S+ SNMP'
+ template: 'MikroTik CCR2004-16G-2S by SNMP'
+ name: 'MikroTik CCR2004-16G-2S+ by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR2004-16G-2S+.
This powerful and affordable router crushes all previous CCR models in single-core performance. 16x Gigabit Ethernet ports, 2x10G SFP+ cages, active cooling and the best single-core performance per watt & best overall performance per watt among all the CCR devices.
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: f37a32635c674102aaf1b7ceafa8532a
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 1889f2943a044c49830914fd18846172
- expression: 'min(/MikroTik CCR2004-16G-2S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-16G-2S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR2004-16G-2S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-16G-2S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 805b3e4698dc4c55a4cc40712e14e494
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR2004-16G-2S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-16G-2S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR2004-16G-2S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-16G-2S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 6172f360bcca4bc6a105a5093be8665c
- expression: 'last(/MikroTik CCR2004-16G-2S SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 80072866ba994094a279eb45020311d1
- expression: 'last(/MikroTik CCR2004-16G-2S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 9ffbe2020d8b46f1ac730c038e9d1f51
- expression: 'last(/MikroTik CCR2004-16G-2S SNMP/system.name,#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.name,#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/system.name,#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.name,#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: d66d2b488b784574943c90f20d0153ce
- expression: 'last(/MikroTik CCR2004-16G-2S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR2004-16G-2S SNMP/system.name,#1)<>last(/MikroTik CCR2004-16G-2S SNMP/system.name,#2) and length(last(/MikroTik CCR2004-16G-2S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/system.name,#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/system.name,#2) and length(last(/MikroTik CCR2004-16G-2S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 02a8b7e7ebbb4d1baf5ee155167e36ba
- expression: 'min(/MikroTik CCR2004-16G-2S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR2004-16G-2S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 6c2ff9e7f39a46918bf5d1843c7bf615
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a81f9bcd4d4d4c4593654293b55f864d
- expression: 'min(/MikroTik CCR2004-16G-2S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR2004-16G-2S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: b1f40fbc259f44db830072b49a5825ad
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ac0cfe319121487fb2009436d27f4f2b
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: c1c53cec6a204411b9739eac84447c2a
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: f0d3f01db5d44b74826326048bca05a8
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: dbfb3ba672c944149aea12b3f4a1cdbe
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 8c4ffcc25b254dc29928ac1ac0272b7a
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: df1aa24cf39947528099405c6cd311f4
- expression: 'avg(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR2004-16G-2S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR2004-16G-2S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f929a190e2624171a7a4b80919ae025e
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: dff7058dd39f4cb294533048160b3b75
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e57c17fcddd04bdf921a9f1b6151ccb2
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 95e376a33c1642c9a7d33b40bcda3389
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: ac44d8d2afa445aa9684549d0d951a3a
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 569c6b51c3714d84bce3522093e442a6
- expression: 'last(/MikroTik CCR2004-16G-2S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7596859088f04a0785c6e5b07d446ba8
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: ef8a1963f5e743bb921edaa2115c9076
expression: |
- change(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR2004-16G-2S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR2004-16G-2S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 5fe8afc5b0554c0f99b8fc4fe914deca
expression: |
- (avg(/MikroTik CCR2004-16G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR2004-16G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR2004-16G-2S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR2004-16G-2S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR2004-16G-2S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-16G-2S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: f4eec00173b3447080d0528805b31aef
expression: |
- min(/MikroTik CCR2004-16G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR2004-16G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR2004-16G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR2004-16G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR2004-16G-2S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR2004-16G-2S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR2004-16G-2S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR2004-16G-2S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR2004-16G-2S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR2004-16G-2S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: a03cd6a56cd540dea337b63f8ca5a1a1
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 8ddf161b19eb4716b1ec7cb270970703
expression: |
- last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 0a19983ae1d443bbb4224a61d46b62de
expression: |
- last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-16G-2S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: a885ccc0d0e546fe8a970ff4876f9471
- expression: '(last(/MikroTik CCR2004-16G-2S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-16G-2S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-16G-2S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-16G-2S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-16G-2S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-16G-2S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR2004-16G-2S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR2004-16G-2S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR2004-16G-2S SNMP'
+ host: 'MikroTik CCR2004-16G-2S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/README.md b/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/README.md
index 6916acd078c..6bcb11d4671 100644
--- a/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CCR2004-1G-12S+2XS SNMP
+# MikroTik CCR2004-1G-12S+2XS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik CCR2004-1G-12S+2XS.
The Connectivity Router - your best companion when it comes to SFP, SFP+ and SFP28 management! 1, 10 and 25 Gbps ports in a single device to make your life easier.
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR2004-1G-12S2XS SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name,#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name,#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR2004-1G-12S2XS SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR2004-1G-12S2XS SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR2004-1G-12S2XS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR2004-1G-12S2XS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR2004-1G-12S2XS SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CCR2004-1G-12S2XS by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name,#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name,#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CCR2004-1G-12S2XS by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CCR2004-1G-12S2XS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CCR2004-1G-12S2XS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CCR2004-1G-12S2XS by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/template_net_mikrotik_CCR2004-1G-12S+2XS_snmp.yaml b/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/template_net_mikrotik_CCR2004-1G-12S+2XS_snmp.yaml
index 4c32cc4fd21..f7c85adad6f 100644
--- a/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/template_net_mikrotik_CCR2004-1G-12S+2XS_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CCR2004-1G-12S+2XS_snmp/template_net_mikrotik_CCR2004-1G-12S+2XS_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:40Z'
+ date: '2022-10-27T14:42:34Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: f2efeb94f4bd4ed9ab34a973c0363eb8
- template: 'MikroTik CCR2004-1G-12S2XS SNMP'
- name: 'MikroTik CCR2004-1G-12S+2XS SNMP'
+ template: 'MikroTik CCR2004-1G-12S2XS by SNMP'
+ name: 'MikroTik CCR2004-1G-12S+2XS by SNMP'
description: |
The template for monitoring Ethernet router MikroTik CCR2004-1G-12S+2XS.
The Connectivity Router - your best companion when it comes to SFP, SFP+ and SFP28 management! 1, 10 and 25 Gbps ports in a single device to make your life easier.
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: d17f5a29c6104de78dd9b66ae8144e9b
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: f3ad9f5ef4734e6da08c699d937a1521
- expression: 'min(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 831afefc75dc472ab3d010757abab4e2
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-1G-12S2XS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CCR2004-1G-12S2XS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 324d699f4767400e88e16f37ffcd2abd
- expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.firmware,#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 53e8fc3eac46426fbce375cc2ce983c8
- expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: ed353db14a0742a7a865e9805025e9a9
- expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name,#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name,#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name,#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name,#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 2a0736cbd3324122b51c4ac4629c1323
- expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name,#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name,#2) and length(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.name))>0'
+ expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name,#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name,#2) and length(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 8246aab86f954be8968169f55889a842
- expression: 'min(/MikroTik CCR2004-1G-12S2XS SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CCR2004-1G-12S2XS by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 7a821734dc78455fa363bf7a8c2f2dc2
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bc2854ed0ff645ae9a932ab5baa62a91
- expression: 'min(/MikroTik CCR2004-1G-12S2XS SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CCR2004-1G-12S2XS by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: d135fc6382b74d1dac9287de6140adda
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b3d35f977375429a8a0f4b76dabf294c
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 3be96603ac0a474694bf53d2b8aa8487
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 809c702cedf749b6b53f591ee37c56ba
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 973e5d05599c4ee79d8cc210b004f38d
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 58c9f09a52ed48f7b65a4ab6a7b19c35
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: cfb884d37884407fbba3f93515020352
- expression: 'avg(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CCR2004-1G-12S2XS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CCR2004-1G-12S2XS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f5bf9d28bfb344728e481a3a478c6986
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0b427fe9c54d486792c9388b8c2968cc
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 130cdbfb721646ef92c6c1664dffce72
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2df17dc1ca8f4d9fb135c23f86fb50d3
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 99450e2d4e3c4dfb8e1b7c28430cdebf
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d1a52557a4f746da96893c3d1436b3f2
- expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: cb6f6e2bddc0454eb142cc35344e7082
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 127e4dfad7884ac782f9d31d0b84dfee
expression: |
- change(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 839abcd582c340c8986edba7e8df360b
expression: |
- (avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 32debbc2bfb546a0bcc3091494ee5b60
expression: |
- min(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CCR2004-1G-12S2XS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 2d71376139af4ae9a723edde527f5373
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: dfcf03d83fb147b18be991b65d2298d6
expression: |
- last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 95f44fd2b533449593e2095edda00fc9
expression: |
- last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CCR2004-1G-12S2XS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 285c2be6116d4e5fae7d0cbad5ccecb2
- expression: '(last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-1G-12S2XS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-1G-12S2XS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CCR2004-1G-12S2XS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CCR2004-1G-12S2XS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CCR2004-1G-12S2XS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CCR2004-1G-12S2XS SNMP'
+ host: 'MikroTik CCR2004-1G-12S2XS by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/README.md
index e09d2baec6b..074141c0eff 100644
--- a/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS106-1C-5S SNMP
+# MikroTik CRS106-1C-5S by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS106-1C-5S.
Smart Switch, 5x SFP cages, 1x Combo port (SFP or Gigabit Ethernet), 400MHz CPU, 128MB RAM, desktop case, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS106-1C-5S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS106-1C-5S SNMP/system.name,#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.name,#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS106-1C-5S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS106-1C-5S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS106-1C-5S SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS106-1C-5S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS106-1C-5S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS106-1C-5S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS106-1C-5S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS106-1C-5S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS106-1C-5S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS106-1C-5S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS106-1C-5S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS106-1C-5S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS106-1C-5S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS106-1C-5S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS106-1C-5S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS106-1C-5S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS106-1C-5S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS106-1C-5S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS106-1C-5S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS106-1C-5S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS106-1C-5S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS106-1C-5S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS106-1C-5S by SNMP/system.name,#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.name,#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS106-1C-5S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS106-1C-5S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS106-1C-5S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS106-1C-5S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS106-1C-5S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS106-1C-5S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS106-1C-5S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS106-1C-5S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS106-1C-5S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS106-1C-5S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS106-1C-5S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS106-1C-5S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS106-1C-5S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS106-1C-5S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS106-1C-5S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS106-1C-5S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS106-1C-5S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS106-1C-5S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS106-1C-5S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS106-1C-5S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS106-1C-5S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/template_net_mikrotik_CRS106-1C-5S_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/template_net_mikrotik_CRS106-1C-5S_snmp.yaml
index 76226fcabee..9be0b5fcb3d 100644
--- a/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/template_net_mikrotik_CRS106-1C-5S_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS106-1C-5S_snmp/template_net_mikrotik_CRS106-1C-5S_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:44Z'
+ date: '2022-10-27T14:42:55Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 20ea139663264c21bca0dcecf2e95589
- template: 'MikroTik CRS106-1C-5S SNMP'
- name: 'MikroTik CRS106-1C-5S SNMP'
+ template: 'MikroTik CRS106-1C-5S by SNMP'
+ name: 'MikroTik CRS106-1C-5S by SNMP'
description: |
The template for monitoring Switch MikroTik CRS106-1C-5S.
Smart Switch, 5x SFP cages, 1x Combo port (SFP or Gigabit Ethernet), 400MHz CPU, 128MB RAM, desktop case, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 93236f96ce364b1ab95c603503c6984f
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: e7c3d84b4e3f4faabd28f36984116925
- expression: 'min(/MikroTik CRS106-1C-5S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS106-1C-5S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS106-1C-5S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS106-1C-5S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 4219929d04dd4367bf82c0c97f85eae7
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS106-1C-5S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS106-1C-5S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS106-1C-5S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS106-1C-5S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 6739b5af597443449dcfb946d2b89393
- expression: 'last(/MikroTik CRS106-1C-5S SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS106-1C-5S by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: dfc2b8c7f27049a6bd51c283cc6a29ce
- expression: 'last(/MikroTik CRS106-1C-5S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS106-1C-5S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 3bbc3dcf8127414abb426c830e8fddee
- expression: 'last(/MikroTik CRS106-1C-5S SNMP/system.name,#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.name,#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS106-1C-5S by SNMP/system.name,#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.name,#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: dc48fc089a314b7ebae646f2dfb925c5
- expression: 'last(/MikroTik CRS106-1C-5S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS106-1C-5S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS106-1C-5S SNMP/system.name,#1)<>last(/MikroTik CRS106-1C-5S SNMP/system.name,#2) and length(last(/MikroTik CRS106-1C-5S SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS106-1C-5S by SNMP/system.name,#1)<>last(/MikroTik CRS106-1C-5S by SNMP/system.name,#2) and length(last(/MikroTik CRS106-1C-5S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: fdcc98f2475247f29fdf48c3a4a69058
- expression: 'min(/MikroTik CRS106-1C-5S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS106-1C-5S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: e38ee3ff9c5a438fa7785db98162b84a
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 08ca4ad1230144488299a8f4eaacef7f
- expression: 'min(/MikroTik CRS106-1C-5S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS106-1C-5S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: a3099e04128b4ff7abbd6ac772306bc5
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3f1ce913660a493387485d5dab3ebfc4
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: e7a78d2798b44c438a81c308d1a1c0ed
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 890865ebc7ea41ef8e9d3c794395092b
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0c035a51301746588e0bc01bb0bf425a
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: efc19507ca614ef487d0a9a637a8f7a6
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 54b7d721900742acbb1548714c34c7c2
- expression: 'avg(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS106-1C-5S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS106-1C-5S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9c9bab7ccb354d478ae1d5f7ab66f5ea
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f44e31574a68494cbcefbc961662063b
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9ebee838e00c46bba067094ea9732f6d
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 90fc1e486dd9409aacf0f68f86caf80c
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 2319b534a79449108a419e8c866e66bd
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2e15eff553614e51a59590c6e3df4a42
- expression: 'last(/MikroTik CRS106-1C-5S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS106-1C-5S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b9f20adf207c43d192921831fd5c882c
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: b88f9f6974434f6ab26fbb747feb66e6
expression: |
- change(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS106-1C-5S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS106-1C-5S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 7dd2c3c0a76649f097999376f6bd4bfc
expression: |
- (avg(/MikroTik CRS106-1C-5S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS106-1C-5S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS106-1C-5S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS106-1C-5S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS106-1C-5S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS106-1C-5S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS106-1C-5S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS106-1C-5S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS106-1C-5S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 53652249393a485dab8db23696953e31
expression: |
- min(/MikroTik CRS106-1C-5S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS106-1C-5S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS106-1C-5S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS106-1C-5S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS106-1C-5S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS106-1C-5S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS106-1C-5S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS106-1C-5S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS106-1C-5S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS106-1C-5S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 6378383173b54dd4add56b5b8b3a6e49
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 6a2a5c6ce51b4f6b912a01e45d1a5409
expression: |
- last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 0df7d927286d47998fcf15c41bce944f
expression: |
- last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS106-1C-5S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: f445d5e35c2b4296a670165e332be78c
- expression: '(last(/MikroTik CRS106-1C-5S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS106-1C-5S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS106-1C-5S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS106-1C-5S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS106-1C-5S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS106-1C-5S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS106-1C-5S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS106-1C-5S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS106-1C-5S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS106-1C-5S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS106-1C-5S SNMP'
+ host: 'MikroTik CRS106-1C-5S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/README.md
index 4c1e6ad37e6..7c4406ba6d6 100644
--- a/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS109-8G-1S-2HnD-IN SNMP
+# MikroTik CRS109-8G-1S-2HnD-IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS109-8G-1S-2HnD-IN.
8x Gigabit Smart Switch, 1x SFP cage, LCD, 802.11b/g/n Dual Chain wireless, 600MHz CPU, 128MB RAM, Metal desktop case, RouterOS L5, supports 10-57V, 802.3af/at compliant
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS109-8G-1S-2HnD-IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS109-8G-1S-2HnD-IN_snmp.yaml
index 574958a9610..4607959fa94 100644
--- a/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS109-8G-1S-2HnD-IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS109-8G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS109-8G-1S-2HnD-IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:48Z'
+ date: '2022-10-27T14:43:50Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: fac16383680c4454be48b6db870d975e
- template: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
- name: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ template: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
+ name: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS109-8G-1S-2HnD-IN.
8x Gigabit Smart Switch, 1x SFP cage, LCD, 802.11b/g/n Dual Chain wireless, 600MHz CPU, 128MB RAM, Metal desktop case, RouterOS L5, supports 10-57V, 802.3af/at compliant
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 04d896fcaf2c4573bb077432604ca2ad
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: c6468c0bef2c4ad2958d69df8364722a
- expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 2b339fa462ce498fbf5d7557e8548930
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 07248a02609a4964be773df77f86f30a
- expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: a79318151008414cb9a0c3d788b76f76
- expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 3517d04dc5c34d07aad7ec73381deaaf
- expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 829598b7b1b4404bbd959ae186734251
- expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name,#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 7f44b9ee964f4ae798f3af4c12799e12
- expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: bb5432b89f7248758d05d4c44cdf0d0a
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 37579561f5e74042827d0d3fc5dc85e7
- expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 0c527e54de0f40d28c01d597cee2b37c
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 50a28d8380d64feca6fb2691e2477fed
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 6bd9170284ef49b4825cf347e1f43548
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: ccda9a03941b42b0ac184e22aa23666c
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2c4b897afc03484fb7e435af025ac9a3
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 8de55e3f0a2d46f69d430362b208654b
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 5d4582baab9b4b98ba6d6e3e78678280
- expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b3abf2a74b1444d7af3cdfc8ac550ec4
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e3300b34a9f34bbd91af48f5b8e89d9e
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7a06e44d440b4b85ad3b102fccf24309
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6950612291f84d1d805b2f250c133096
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 64ab5419005745f68eb2d06b0e48c6ac
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 68fac07f6dd045ba8040c7fe813bdf2e
- expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 518c5d16112b4b76a043d74e98748901
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: fac8789a47e44e1e98a047f9a8af8a16
expression: |
- change(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 6f683ec4b17642b6add94e73ea306f2f
expression: |
- (avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 71e00ff03c6c46f6a4b5b986c67e3c2c
expression: |
- min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 8c2a6cde808244e3b99408f942095c5b
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 463c460bdff441ce9af1ea170ea4dbc2
expression: |
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: a758c3e0841e4fff93ff4bcaa41505eb
expression: |
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 40fac3f864c442f9bcbcbd5757070c38
- expression: '(last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS109-8G-1S-2HnD-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS109-8G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS109-8G-1S-2HnD-IN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/README.md
index a1b663818b7..6b2d422ab54 100644
--- a/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS112-8G-4S-IN SNMP
+# MikroTik CRS112-8G-4S-IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS112-8G-4S-IN.
8x Gigabit Ethernet Smart Switch, 4x SFP cages, 400MHz CPU, 128MB RAM, desktop case, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS112-8G-4S-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS112-8G-4S-IN SNMP/system.name,#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.name,#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS112-8G-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS112-8G-4S-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8G-4S-IN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS112-8G-4S-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS112-8G-4S-IN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS112-8G-4S-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8G-4S-IN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS112-8G-4S-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS112-8G-4S-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS112-8G-4S-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name,#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS112-8G-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS112-8G-4S-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS112-8G-4S-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS112-8G-4S-IN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS112-8G-4S-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/template_net_mikrotik_CRS112-8G-4S-IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/template_net_mikrotik_CRS112-8G-4S-IN_snmp.yaml
index 4aec4b83e90..0b46f5205fc 100644
--- a/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/template_net_mikrotik_CRS112-8G-4S-IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS112-8G-4S-IN_snmp/template_net_mikrotik_CRS112-8G-4S-IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:52Z'
+ date: '2022-10-27T14:43:43Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 8d7d49fd0b3f4b1f9046dc0e94457931
- template: 'MikroTik CRS112-8G-4S-IN SNMP'
- name: 'MikroTik CRS112-8G-4S-IN SNMP'
+ template: 'MikroTik CRS112-8G-4S-IN by SNMP'
+ name: 'MikroTik CRS112-8G-4S-IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS112-8G-4S-IN.
8x Gigabit Ethernet Smart Switch, 4x SFP cages, 400MHz CPU, 128MB RAM, desktop case, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: c63272b308134676a35c7b8311d71589
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 09d55f6987784bffb6024266e0895878
- expression: 'min(/MikroTik CRS112-8G-4S-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8G-4S-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 235acd3457814902b4bf316065d05e00
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS112-8G-4S-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8G-4S-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8G-4S-IN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 6729f53f42ff445c8ab26b91cdb811e2
- expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 24e52c80e5544295b778c677d0de35b2
- expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 5431acc090c34d879e911cd90a52eb48
- expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/system.name,#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.name,#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name,#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 8846801d462142938e7e0683dd481087
- expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/system.name,#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/system.name,#2) and length(last(/MikroTik CRS112-8G-4S-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name,#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: d9f9ee61646a4881bcb34a5e564738f3
- expression: 'min(/MikroTik CRS112-8G-4S-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS112-8G-4S-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 2f271102d58b4068b87eab5ff70b7798
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9fc63b1881da411baea0e78cd671606a
- expression: 'min(/MikroTik CRS112-8G-4S-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS112-8G-4S-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: b3042bcb96014348a57d25cd12829795
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9ab9bb63b838495f863feee9d62fcb72
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 1f68799afde34df49dd0d693872aa19a
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 21a3e86813114562a8e382bd3120030f
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 52e3b8b493eb4ab09bacb707ed7454ab
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 00ed3d5d280f47a1b20073e87f6ec6f0
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 0e8120688a774b63823848119deaf4a5
- expression: 'avg(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS112-8G-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS112-8G-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4d8a166e4cc8442c87c2989fa87b8e1d
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1affa10b3e2d477c92951193292f57d0
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bb085163f97341259cd0d42e38c1685e
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4b214d3637994c89816ef4f951ce8828
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 813fcc3573204df59efc2f4c83a14402
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9b32c491ea3d41bca60ab53c664ee369
- expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d9beebab41fd436fad7f54cfab6e5eb0
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: f2b1a41fe508425cadd992422f9f2e1a
expression: |
- change(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 89c85677363b4416a8718b6455c5e2ec
expression: |
- (avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: b1ae075b11a2481da6a64b65c5d0d4a8
expression: |
- min(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS112-8G-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS112-8G-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS112-8G-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 0b14bb3471344128b65c76460c69edcb
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 572cb48de9bd4010b907cff6efa9f3a8
expression: |
- last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 10639cc4b8de4879a99c70061d5d48ea
expression: |
- last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8G-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 7bcd342f9c4f467a98ab38a5ea3e174b
- expression: '(last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8G-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8G-4S-IN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8G-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8G-4S-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS112-8G-4S-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS112-8G-4S-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS112-8G-4S-IN SNMP'
+ host: 'MikroTik CRS112-8G-4S-IN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/README.md
index e2b0ac8f714..179a4c1035e 100644
--- a/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS112-8P-4S-IN SNMP
+# MikroTik CRS112-8P-4S-IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS112-8P-4S-IN.
8x Gigabit Ethernet Smart Switch with PoE-out, 4x SFP cages, 400MHz CPU, 128MB RAM, desktop case, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS112-8P-4S-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS112-8P-4S-IN SNMP/system.name,#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.name,#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS112-8P-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS112-8P-4S-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8P-4S-IN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS112-8P-4S-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS112-8P-4S-IN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS112-8P-4S-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8P-4S-IN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS112-8P-4S-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS112-8P-4S-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS112-8P-4S-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name,#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS112-8P-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS112-8P-4S-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS112-8P-4S-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS112-8P-4S-IN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS112-8P-4S-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/template_net_mikrotik_CRS112-8P-4S-IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/template_net_mikrotik_CRS112-8P-4S-IN_snmp.yaml
index 22b01c632f2..fb6def06522 100644
--- a/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/template_net_mikrotik_CRS112-8P-4S-IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS112-8P-4S-IN_snmp/template_net_mikrotik_CRS112-8P-4S-IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:11:56Z'
+ date: '2022-10-27T14:42:37Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 538ec67ce01341a9b281dbd86d86d2a2
- template: 'MikroTik CRS112-8P-4S-IN SNMP'
- name: 'MikroTik CRS112-8P-4S-IN SNMP'
+ template: 'MikroTik CRS112-8P-4S-IN by SNMP'
+ name: 'MikroTik CRS112-8P-4S-IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS112-8P-4S-IN.
8x Gigabit Ethernet Smart Switch with PoE-out, 4x SFP cages, 400MHz CPU, 128MB RAM, desktop case, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 16ef2e7fa1a949298407a0a0b4d77746
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 1dbb087e217944aebb6cd2ed14685a46
- expression: 'min(/MikroTik CRS112-8P-4S-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8P-4S-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 2dd9b73423b946f89dc7a421e12fd58e
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS112-8P-4S-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8P-4S-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS112-8P-4S-IN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 0f66010aec32455eb56414c1ba576982
- expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 59c929b470d342b691b01b5d12f87456
- expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 40ae2f08e95b4affab12454007f4bdc6
- expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/system.name,#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.name,#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name,#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: c9fb96d72f6942d1b4320014b2e40b0c
- expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/system.name,#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/system.name,#2) and length(last(/MikroTik CRS112-8P-4S-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name,#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 72863d07fe654e78b740e2f48e0cebe5
- expression: 'min(/MikroTik CRS112-8P-4S-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS112-8P-4S-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: d720c3c0a669406cad47bf135de9be8c
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a2148ac68e78401c81ea5ef66cddc04c
- expression: 'min(/MikroTik CRS112-8P-4S-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS112-8P-4S-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 50423572f0824002b674a005262086bb
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0e9494a8018f4943a84c1e6b6304439f
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 6877c6d086354b5eac351ddbe1dc5656
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 608d5359e01148a2b8dcc507a11f5ea3
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5eff445458ec4f2f9b9b9085f9487f7d
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 3d9498b115df444981717267ccbe926b
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: c3b94c3a222746cc9f88c5f44c3e882b
- expression: 'avg(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS112-8P-4S-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS112-8P-4S-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d3b264a57365416ba32dd5ee7f3b2c72
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c69186a3c737437696414d1d1c434a3c
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8179d0962048402c9843878c34f3a45c
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fdb14600d90a448a83bdc51dd170296b
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 67a4605912ca4fc0a37325b87e637600
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f60557875559490a891eb81c11e0cf37
- expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: bdab20ca351f4d39a27c636b33df9de1
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: ba58df29a51d4ad6b415654f10968e27
expression: |
- change(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 29ca187c6d6941caab396f6b57e86746
expression: |
- (avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 72076d70d7b644b19e64bd55fab5e594
expression: |
- min(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS112-8P-4S-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS112-8P-4S-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS112-8P-4S-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 1c4b3868273546bb8d2a95f30cc9d1ed
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 2e7f4f0eaf384c68acaf1bafadc6296a
expression: |
- last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 380f830e3e714a99b9c7b30c1fbce14b
expression: |
- last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS112-8P-4S-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: d81cc3699a454ae3bd9bf813fff8e286
- expression: '(last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8P-4S-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8P-4S-IN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS112-8P-4S-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS112-8P-4S-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS112-8P-4S-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS112-8P-4S-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS112-8P-4S-IN SNMP'
+ host: 'MikroTik CRS112-8P-4S-IN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/README.md
index 212a3be3732..b8b8cae34ad 100644
--- a/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS125-24G-1S-2HnD-IN SNMP
+# MikroTik CRS125-24G-1S-2HnD-IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS125-24G-1S-2HnD-IN.
24x Gigabit Ethernet layer 3 Smart Switch, 1x SFP cage, LCD, 802.11b/g/n Dual Chain wireless, 600MHz CPU, 128MB RAM, Metal desktop case, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS125-24G-1S-2HnD-IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS125-24G-1S-2HnD-IN_snmp.yaml
index d45efb5ecab..b8d6f2bb393 100644
--- a/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS125-24G-1S-2HnD-IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS125-24G-1S-2HnD-IN_snmp/template_net_mikrotik_CRS125-24G-1S-2HnD-IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:00Z'
+ date: '2022-10-27T14:44:00Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: c8db153405704d859ba5ee19f08b46f3
- template: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
- name: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ template: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
+ name: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS125-24G-1S-2HnD-IN.
24x Gigabit Ethernet layer 3 Smart Switch, 1x SFP cage, LCD, 802.11b/g/n Dual Chain wireless, 600MHz CPU, 128MB RAM, Metal desktop case, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: eccaf3e02f9944638588b82322322c32
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 71286dd187734ee18b53fdf73602ef7d
- expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 18e8caa0b7a44c64aaec1d5eecf76297
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: f0c59541e6df4c649e7c2ef76d7bda4b
- expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: a1cf2d27ddc447988aa808318aef167f
- expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 681af1da9ba7432aa407019b1ff5192f
- expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 9bfebd1764bb4acc82fa8c7f175c0b87
- expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name,#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name,#2) and length(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 9af92a1dddd0405587bb090b8fd5757d
- expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 147de2ef3a3447cf9401f4197e911b17
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c06050c48eac4f8f90df94c6d125f369
- expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 4001b2da26774319b5e8754eccb9ace6
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9f6533c6505948abb10869f4d0a11070
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: e683521cc3de43eaa7c8ecbbb360fb7d
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 2d1bba8f19694737a6cb59e12289327c
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8db96c9e7d164b0fa6d2af61899ea427
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 33c12e280a464d20960ae73341ea3dbe
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 4fa5ef5d55fd4fc8a21516dbfb0ff7eb
- expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fd43c6f8ed834db3a69e6c30c29878ed
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 685f5eba5ddd4b2ba3173fc82367b476
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4a4f14e171504413ae16d92597fe1024
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ed070d7bccb649a49b29eda9b8a02192
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: e6a361bc321a401dbcc3a362799d450a
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 89940e123e8c4c04b402a436c977d999
- expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1f51aae95ee44368be4327fa0bb02c8a
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 7ff7bef321134c08bc70b8988abb91c4
expression: |
- change(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 43f1d416170f493d825b087a88fd8b0e
expression: |
- (avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 6e91f3d30c5a492dbb56b284594aa6ba
expression: |
- min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 6b80e43f0d004ab4baeb51a772d91457
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: e5df295edd2848329708aaf765a8e8be
expression: |
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 31ff4cd8ae95435193ecc37238327c4c
expression: |
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 6cbc680faf50402a8aa5eb6b2b848f7b
- expression: '(last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS125-24G-1S-2HnD-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS125-24G-1S-2HnD-IN SNMP'
+ host: 'MikroTik CRS125-24G-1S-2HnD-IN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/README.md
index 2838b564e4d..517ea32015a 100644
--- a/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS212-1G-10S-1S+IN SNMP
+# MikroTik CRS212-1G-10S-1S+IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS212-1G-10S-1S+IN.
Smart Switch, 1x Gigabit LAN, 10x SFP cages, 1x SFP+ cage, LCD, 400MHz CPU, 64MB RAM, Metal desktop case, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS212-1G-10S-1SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name,#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS212-1G-10S-1SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS212-1G-10S-1SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS212-1G-10S-1SIN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS212-1G-10S-1SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name,#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS212-1G-10S-1SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS212-1G-10S-1SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/template_net_mikrotik_CRS212-1G-10S-1S+IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/template_net_mikrotik_CRS212-1G-10S-1S+IN_snmp.yaml
index 199e84210de..25abd43ba78 100644
--- a/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/template_net_mikrotik_CRS212-1G-10S-1S+IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS212-1G-10S-1S+IN_snmp/template_net_mikrotik_CRS212-1G-10S-1S+IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:04Z'
+ date: '2022-10-27T14:42:48Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: cdb6ebceb1174bada392dd24889b14d9
- template: 'MikroTik CRS212-1G-10S-1SIN SNMP'
- name: 'MikroTik CRS212-1G-10S-1S+IN SNMP'
+ template: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
+ name: 'MikroTik CRS212-1G-10S-1S+IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS212-1G-10S-1S+IN.
Smart Switch, 1x Gigabit LAN, 10x SFP cages, 1x SFP+ cage, LCD, 400MHz CPU, 64MB RAM, Metal desktop case, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 6883be571ae343a791670f2f0c36cd02
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: ea3e5695d49f4868bd6a83e67689e5d6
- expression: 'min(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 4439b1b6d31d4824ba1ed448d9bda1b4
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS212-1G-10S-1SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 70a98e004bd34fb48e9c410ca52f4bc0
- expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: e4da63844b774f4eb9e0188f659f256d
- expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: ab81c691a90a409fa0d24ddac4ee455f
- expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name,#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name,#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 9f738a1caee34259a3d38e52ddb6c791
- expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name,#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name,#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 640203769816409d883d5ba38a6ff4e5
- expression: 'min(/MikroTik CRS212-1G-10S-1SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS212-1G-10S-1SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 94b83963c4474cd5a8d21a8cdae584f4
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 087f5705a7ce4a88a8c699541ee704be
- expression: 'min(/MikroTik CRS212-1G-10S-1SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: dde29665f66f4a74bda66ffe6896b8e8
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8aa17694ab184951b24093d8a765eae0
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 3c33429067c84714b68c4bbd8f729bc7
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 100002ca08614467b16f313dfeda6e68
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 757ac3b43a62450f9e49885dd654167f
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 71f8b72b4c7240a8a4e10b503a2aec9f
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 818f218a8ee3455db507dcded146c3ea
- expression: 'avg(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS212-1G-10S-1SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS212-1G-10S-1SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6a8f6966f59a45e48a68f0343c372973
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0b4661e442014e21a98e56b8b332a6ba
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d04782f202c44772b039867d744582de
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d8d6a75db4de4ff7b8b2f4ab1f8d7258
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 05c6b3cfcb15488d801fcfbd2df1d68c
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6dfee746a74b4f96b103202b00ed3720
- expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 61ea7de46c3841c7a4fc04f67ef1448f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: b34e8d6b7e81481bb19b3f39236c29e4
expression: |
- change(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 3c74af72b29e4b8484ccf36539caf234
expression: |
- (avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 6fae861a027a4965b5b80500a218c0f1
expression: |
- min(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS212-1G-10S-1SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 2d496a1a38a14321bf35adf43537dce4
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 2e330eb1ac0a4427ab150c2f1c3949b0
expression: |
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: ba3b9fe3bb7041c5a2e7d9fec8bed517
expression: |
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS212-1G-10S-1SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 1d5170eb0ba14c4e8799d712ee84d004
- expression: '(last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS212-1G-10S-1SIN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS212-1G-10S-1SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS212-1G-10S-1SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS212-1G-10S-1SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS212-1G-10S-1SIN SNMP'
+ host: 'MikroTik CRS212-1G-10S-1SIN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/README.md
index 660343dc5cf..962d77409d5 100644
--- a/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS305-1G-4S+IN SNMP
+# MikroTik CRS305-1G-4S+IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS305-1G-4S+IN.
Five-port desktop switch with one Gigabit Ethernet port and four SFP+ 10Gbps ports
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS305-1G-4SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS305-1G-4SIN SNMP/system.name,#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.name,#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS305-1G-4SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS305-1G-4SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS305-1G-4SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS305-1G-4SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS305-1G-4SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS305-1G-4SIN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS305-1G-4SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS305-1G-4SIN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS305-1G-4SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS305-1G-4SIN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS305-1G-4SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS305-1G-4SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS305-1G-4SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS305-1G-4SIN by SNMP/system.name,#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS305-1G-4SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS305-1G-4SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS305-1G-4SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS305-1G-4SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS305-1G-4SIN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS305-1G-4SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS305-1G-4SIN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS305-1G-4SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS305-1G-4SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/template_net_mikrotik_CRS305-1G-4S+IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/template_net_mikrotik_CRS305-1G-4S+IN_snmp.yaml
index f1e9ecef0a9..b0876120568 100644
--- a/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/template_net_mikrotik_CRS305-1G-4S+IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS305-1G-4S+IN_snmp/template_net_mikrotik_CRS305-1G-4S+IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:08Z'
+ date: '2022-10-27T14:42:41Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 223101f878704022a04c30c3ff066e3f
- template: 'MikroTik CRS305-1G-4SIN SNMP'
- name: 'MikroTik CRS305-1G-4S+IN SNMP'
+ template: 'MikroTik CRS305-1G-4SIN by SNMP'
+ name: 'MikroTik CRS305-1G-4S+IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS305-1G-4S+IN.
Five-port desktop switch with one Gigabit Ethernet port and four SFP+ 10Gbps ports
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 31542fecf2794dcb8b96293087b71526
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: ded01e910a0046fa94a89c7011cc9514
- expression: 'min(/MikroTik CRS305-1G-4SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS305-1G-4SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS305-1G-4SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS305-1G-4SIN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 5c9b3116dc4140bdb7903a094fbf098f
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS305-1G-4SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS305-1G-4SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS305-1G-4SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS305-1G-4SIN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 66ea5bdabba4438ba8f9959e0c4b24ec
- expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 425777ce38e54daba1f6501bd4f6bf6b
- expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 1e2f2debb1cc4f13b133cbe6600c99cc
- expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/system.name,#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.name,#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/system.name,#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 73aec359593a4ce9ae07e66a39ea2275
- expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/system.name,#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/system.name,#2) and length(last(/MikroTik CRS305-1G-4SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/system.name,#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS305-1G-4SIN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 179753654a4849d48935c10417994eb7
- expression: 'min(/MikroTik CRS305-1G-4SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS305-1G-4SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 3efee76288274e42921647d5a1d82ab1
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 295ec169c36b482790f9091db3a39357
- expression: 'min(/MikroTik CRS305-1G-4SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS305-1G-4SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 1805474bc45841be9203aa4431c6e5f6
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ae05e13963974301850e66f5e4f33a2c
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: f5b55111b94e427082a07baa856bb4fb
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 1e19d78e1b394165ab9dc6da8c072ab8
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 588874bb24d64ca6b10179eab36fa7c2
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 40cd8afdf46a4d03aa426cedd7ce7d9a
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: ae2260c1ecdd44e48e72d43ce1936222
- expression: 'avg(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS305-1G-4SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS305-1G-4SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e1893cd271a4b1f9d04afb520cd6925
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c045d57678f4478cb6caf5fb0a80d0e9
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8125b0058dfd42e786bcf3cac7ab4c88
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bf70869515ec4c35814efa05b8305403
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 5db9feb9d197453aaafd348c3d525f3c
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9b78a081991540cda9aad21e6255b632
- expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 979f432cdb8442faa8105b295b394dda
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 19b7437f8a91461da91c77abec3ae9f2
expression: |
- change(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS305-1G-4SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 462f683cfd5d4c5096b23d7051440671
expression: |
- (avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS305-1G-4SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 25641b52614a4e3b9a11af9212c47b4f
expression: |
- min(/MikroTik CRS305-1G-4SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS305-1G-4SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS305-1G-4SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS305-1G-4SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS305-1G-4SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS305-1G-4SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS305-1G-4SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS305-1G-4SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 94d8fa584eef4573acc2861060902fc1
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 7589fe3f0e3e4c26ac21cd314b1c07e7
expression: |
- last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 30977d9643d6482c89fe5a08030c559a
expression: |
- last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS305-1G-4SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: a888ad0e55f14ba0803bf6923dc7d227
- expression: '(last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS305-1G-4SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS305-1G-4SIN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS305-1G-4SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS305-1G-4SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS305-1G-4SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS305-1G-4SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS305-1G-4SIN SNMP'
+ host: 'MikroTik CRS305-1G-4SIN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/README.md
index 232e429c35a..ae18778b60c 100644
--- a/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS309-1G-8S+IN SNMP
+# MikroTik CRS309-1G-8S+IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS309-1G-8S+IN.
Desktop switch with one Gigabit Ethernet port and eight SFP+ 10Gbps ports
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS309-1G-8SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS309-1G-8SIN SNMP/system.name,#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.name,#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS309-1G-8SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS309-1G-8SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS309-1G-8SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS309-1G-8SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS309-1G-8SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS309-1G-8SIN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS309-1G-8SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS309-1G-8SIN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS309-1G-8SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS309-1G-8SIN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS309-1G-8SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS309-1G-8SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS309-1G-8SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS309-1G-8SIN by SNMP/system.name,#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS309-1G-8SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS309-1G-8SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS309-1G-8SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS309-1G-8SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS309-1G-8SIN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS309-1G-8SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS309-1G-8SIN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS309-1G-8SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS309-1G-8SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/template_net_mikrotik_CRS309-1G-8S+IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/template_net_mikrotik_CRS309-1G-8S+IN_snmp.yaml
index e5b2b8e4ccd..56984ff7c08 100644
--- a/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/template_net_mikrotik_CRS309-1G-8S+IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS309-1G-8S+IN_snmp/template_net_mikrotik_CRS309-1G-8S+IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:11Z'
+ date: '2022-10-27T14:43:04Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: bcc01f2b466345c4bcbe0cea1a7884d1
- template: 'MikroTik CRS309-1G-8SIN SNMP'
- name: 'MikroTik CRS309-1G-8S+IN SNMP'
+ template: 'MikroTik CRS309-1G-8SIN by SNMP'
+ name: 'MikroTik CRS309-1G-8S+IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS309-1G-8S+IN.
Desktop switch with one Gigabit Ethernet port and eight SFP+ 10Gbps ports
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 16bfb1a39fe54fa0b512ed93c8c3b00a
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: d166ae7475f5416499b46a00cf5de374
- expression: 'min(/MikroTik CRS309-1G-8SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS309-1G-8SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS309-1G-8SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS309-1G-8SIN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: a59d0752d5724f01a783ef8b4131b9d4
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS309-1G-8SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS309-1G-8SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS309-1G-8SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS309-1G-8SIN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 32127aca202644c5915255006e9544b5
- expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 7bb01da1713c42c1ab28c1ae2adc1260
- expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 01cb61daac1f42d3ab0a5fafd2b113a4
- expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/system.name,#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.name,#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/system.name,#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 28568c2163ee4a0aa262241064922c7d
- expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/system.name,#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/system.name,#2) and length(last(/MikroTik CRS309-1G-8SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/system.name,#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS309-1G-8SIN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 7224d01c717a4dd3800fbd8d8e9399b8
- expression: 'min(/MikroTik CRS309-1G-8SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS309-1G-8SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: a564c084ec414271b212db6c9b301db7
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d6343a3648f0493bb786d598a8e51ab4
- expression: 'min(/MikroTik CRS309-1G-8SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS309-1G-8SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 8afd22083a1343cf81d947e42516583e
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6b909503dc46413fad04d4cf4d7b6939
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 94833673685645f68729a8f98b5a213e
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: aac8de5837494421a642793cc5a9009c
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3d4dc47de9db4049a4baebf68df16b1e
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: cf105fee78774aa7ae119f2638528423
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 1bf28981db8d414199c3fb7bd20e669a
- expression: 'avg(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS309-1G-8SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS309-1G-8SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c27c37092c5f48f1944417cbd47f6c25
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9525ed0ec7bb426587ffcf4879590d5b
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d7c501de314140aeb2b6f344bad2c501
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f124b3bbba784fff966adef3c722eb70
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: fe6101d8772d482e999e0351c40ccbd1
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: aa16e2906256441bb0c6680e9c95f547
- expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b810190964d44084b2294ea56c7b5ee5
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 370d7a702a62401ca9dd904b3c7ec39c
expression: |
- change(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS309-1G-8SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: b78e00216b3441fbb217d6b14cba2979
expression: |
- (avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS309-1G-8SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 921716eadabd441d87d23a53ea1ffa8e
expression: |
- min(/MikroTik CRS309-1G-8SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS309-1G-8SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS309-1G-8SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS309-1G-8SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS309-1G-8SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS309-1G-8SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS309-1G-8SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS309-1G-8SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: fc051342ffd646fd86702f89ad9da14b
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 2d873bbec47d4b3281b1aa33c87c60a0
expression: |
- last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 6bab52e75f8e4286a7c4ec7336a4d417
expression: |
- last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS309-1G-8SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: a1d58fc2668b465a81a86536c1f646ad
- expression: '(last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS309-1G-8SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS309-1G-8SIN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS309-1G-8SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS309-1G-8SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS309-1G-8SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS309-1G-8SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS309-1G-8SIN SNMP'
+ host: 'MikroTik CRS309-1G-8SIN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/README.md
index 4a15267a08a..e480003b776 100644
--- a/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS312-4C+8XG-RM SNMP
+# MikroTik CRS312-4C+8XG-RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS312-4C+8XG-RM.
Switch of the future: the first MikroTik product with 10G RJ45 Ethernet ports and SFP+
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS312-4C8XG-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS312-4C8XG-RM SNMP/system.name,#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.name,#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS312-4C8XG-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS312-4C8XG-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS312-4C8XG-RM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS312-4C8XG-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS312-4C8XG-RM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS312-4C8XG-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS312-4C8XG-RM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS312-4C8XG-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS312-4C8XG-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS312-4C8XG-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name,#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name,#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS312-4C8XG-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS312-4C8XG-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS312-4C8XG-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS312-4C8XG-RM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS312-4C8XG-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/template_net_mikrotik_CRS312-4C+8XG-RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/template_net_mikrotik_CRS312-4C+8XG-RM_snmp.yaml
index 21b6929975b..af5611c41d4 100644
--- a/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/template_net_mikrotik_CRS312-4C+8XG-RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS312-4C+8XG-RM_snmp/template_net_mikrotik_CRS312-4C+8XG-RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:15Z'
+ date: '2022-10-27T14:43:18Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 8da94e2f01ff46e28becf0b08ff09ace
- template: 'MikroTik CRS312-4C8XG-RM SNMP'
- name: 'MikroTik CRS312-4C+8XG-RM SNMP'
+ template: 'MikroTik CRS312-4C8XG-RM by SNMP'
+ name: 'MikroTik CRS312-4C+8XG-RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS312-4C+8XG-RM.
Switch of the future: the first MikroTik product with 10G RJ45 Ethernet ports and SFP+
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: db42c8af11744c5ab3f47f72ebc4a510
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 844a3542770748cf9a99070e6f55fba6
- expression: 'min(/MikroTik CRS312-4C8XG-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS312-4C8XG-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 4b4911507b374dfc9c1b105c4c09e3b8
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS312-4C8XG-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS312-4C8XG-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS312-4C8XG-RM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 58b860a92baa43158419a843ae89687f
- expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 54368f9d9e9f494ba55f8f5fac20196b
- expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: dc073a13e66f4d528af68db048184c2f
- expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/system.name,#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.name,#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name,#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name,#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: dd39ada0b3b14009968866d766e9e16d
- expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/system.name,#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/system.name,#2) and length(last(/MikroTik CRS312-4C8XG-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name,#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name,#2) and length(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: de55f957c95d404380cb490126f88e3d
- expression: 'min(/MikroTik CRS312-4C8XG-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS312-4C8XG-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: cb430613680b4bd087d79a4f1004f453
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 693899638cc1411a9f178cdf6d53b22a
- expression: 'min(/MikroTik CRS312-4C8XG-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS312-4C8XG-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 0ea5fe1af3f14c258407cdcf5c8492cd
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9084cab74227494d9ebd02ea9a4309d2
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 5dc37a79bb254104a9a46383b14b0e3e
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 35fd07bdd3d84ccab6172255af3989ac
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d26213a8d92e4845a7767a0a7fe340b6
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 47e2acacb8414731b56ec86e1a9e3e3c
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 69c54b6ef3a04343bd9df41153398067
- expression: 'avg(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS312-4C8XG-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS312-4C8XG-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6e805c219d884cb38bcd51dde95af1a4
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 93ca96ceac4043fbbd88004165d94c3a
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0f7f11abdba9495fa4fa33ad1a872244
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: da0b1d4940d64a5c9b96c83600cb4963
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 174a070e450a4b6a851e6f774cea0496
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b885a22b88114ea7a275f0758d82210c
- expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b8325c85797b4b56a2ebb5f998751bcc
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 3aa76bfc278a484387be9ef760005d55
expression: |
- change(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 9b698eef38ca438383c7bc06c2589166
expression: |
- (avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 71f098c03cf945cd9a5a9a26f46bb54e
expression: |
- min(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS312-4C8XG-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS312-4C8XG-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS312-4C8XG-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: a52c622d98b643dfb67459f5b6b63e3d
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 49a1cefb001c47bbae541e71673d5eb5
expression: |
- last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 5145ea5e4fb04f9c9dfc90d61ca65d1b
expression: |
- last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS312-4C8XG-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 1cfae25fa7b041b98b5b97a5bca0796a
- expression: '(last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS312-4C8XG-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS312-4C8XG-RM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS312-4C8XG-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS312-4C8XG-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS312-4C8XG-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS312-4C8XG-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS312-4C8XG-RM SNMP'
+ host: 'MikroTik CRS312-4C8XG-RM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/README.md
index 9492f69d7da..41158607062 100644
--- a/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS317-1G-16S+RM SNMP
+# MikroTik CRS317-1G-16S+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS317-1G-16S+RM.
Smart Switch, 1 x Gigabit LAN, 16 x SFP+ cages, Dual Core 800MHz CPU, 1GB RAM, 1U rackmount passive cooling case, Dual Power Supplies
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS317-1G-16SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS317-1G-16SRM SNMP/system.name,#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.name,#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS317-1G-16SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS317-1G-16SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS317-1G-16SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS317-1G-16SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS317-1G-16SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS317-1G-16SRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS317-1G-16SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS317-1G-16SRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS317-1G-16SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS317-1G-16SRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS317-1G-16SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS317-1G-16SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS317-1G-16SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS317-1G-16SRM by SNMP/system.name,#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS317-1G-16SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS317-1G-16SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS317-1G-16SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS317-1G-16SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS317-1G-16SRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS317-1G-16SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS317-1G-16SRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS317-1G-16SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS317-1G-16SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/template_net_mikrotik_CRS317-1G-16S+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/template_net_mikrotik_CRS317-1G-16S+RM_snmp.yaml
index c58fc975b8b..e0151a9100c 100644
--- a/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/template_net_mikrotik_CRS317-1G-16S+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS317-1G-16S+RM_snmp/template_net_mikrotik_CRS317-1G-16S+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:19Z'
+ date: '2022-10-27T14:42:32Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: f474ff823fe84d689b9e4c6a4f0ce59e
- template: 'MikroTik CRS317-1G-16SRM SNMP'
- name: 'MikroTik CRS317-1G-16S+RM SNMP'
+ template: 'MikroTik CRS317-1G-16SRM by SNMP'
+ name: 'MikroTik CRS317-1G-16S+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS317-1G-16S+RM.
Smart Switch, 1 x Gigabit LAN, 16 x SFP+ cages, Dual Core 800MHz CPU, 1GB RAM, 1U rackmount passive cooling case, Dual Power Supplies
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: f4acabb314ea4a38935ebb722bf47ed9
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 629b35a8b5414240953062d4b4caad60
- expression: 'min(/MikroTik CRS317-1G-16SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS317-1G-16SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS317-1G-16SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS317-1G-16SRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 28ce838e43004acebc74c42e782b65cb
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS317-1G-16SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS317-1G-16SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS317-1G-16SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS317-1G-16SRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 0d646e6c03f14c259b81862187a6eec1
- expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 992d3bd742224ad7abc375d20e60e1af
- expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: f01bb34d5f30454bb72e6b00e187c066
- expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/system.name,#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.name,#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/system.name,#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: b3e063c9221d4bf69acb21a16859bb15
- expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/system.name,#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/system.name,#2) and length(last(/MikroTik CRS317-1G-16SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/system.name,#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS317-1G-16SRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 95ac8c277d8940ecb1545be2dc514c54
- expression: 'min(/MikroTik CRS317-1G-16SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS317-1G-16SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 1c20500d7efe42e59d3562c980201ef1
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9e5d5b925a5c42a2af13b3a6727a4cb9
- expression: 'min(/MikroTik CRS317-1G-16SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS317-1G-16SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: d7dee0d21034492e80cd52070f242131
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ba13b39c8a6146bf9b3b6d46fb71fcc6
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 3a469cd75bac4782b18aff3011c766b3
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 11f6f7f659a445e7930b7ab3532a8ebb
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3392f74fc5974701b62673f5c51700d4
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 0e4acbc3bad54347a362cbf57c0464e3
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 42c7cd22b6c74fc7b36f5b6593db02e5
- expression: 'avg(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS317-1G-16SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS317-1G-16SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 027b0481f1de4967973208e3477c0094
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7dc5c0d4f77441a5a29239b1aa77d00b
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 95d3868b6d1c45629acc756865cf6f78
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 94cb13b08f4f46c2bccd3b5ac22ccb3e
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: d4d7077e3d1c45de8320982d2d2757f7
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1317af27066547e2a07f2dd27923e22b
- expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6251339e2940419994033e0689fa16a7
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 53447bc4ecb04af7b4d9ef6a57c78a29
expression: |
- change(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS317-1G-16SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 05e4dbc448fc431f90a831af90408113
expression: |
- (avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS317-1G-16SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 0af66a5ab69448549374ef932be1d57b
expression: |
- min(/MikroTik CRS317-1G-16SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS317-1G-16SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS317-1G-16SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS317-1G-16SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS317-1G-16SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS317-1G-16SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS317-1G-16SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS317-1G-16SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 9164b9995cf2443189314c8177353070
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: ee1e3d1444c947d2898cf120dc3fc53f
expression: |
- last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: a6f92ac3ee824ef486a82f441fb60a67
expression: |
- last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS317-1G-16SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: bd172615c09147ed8deb102f88eb8900
- expression: '(last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS317-1G-16SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS317-1G-16SRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS317-1G-16SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS317-1G-16SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS317-1G-16SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS317-1G-16SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS317-1G-16SRM SNMP'
+ host: 'MikroTik CRS317-1G-16SRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/README.md
index bf9e53f7e8c..9a2dc342692 100644
--- a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS326-24G-2S+IN SNMP
+# MikroTik CRS326-24G-2S+IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS326-24G-2S+IN.
24 Gigabit ports, 2 SFP+ cages and a desktop case – server room power for your home!
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS326-24G-2SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SIN SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS326-24G-2SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS326-24G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS326-24G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS326-24G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SIN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS326-24G-2SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS326-24G-2SIN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS326-24G-2SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SIN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS326-24G-2SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS326-24G-2SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS326-24G-2SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SIN by SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS326-24G-2SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS326-24G-2SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS326-24G-2SIN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS326-24G-2SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SIN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS326-24G-2SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS326-24G-2SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/template_net_mikrotik_CRS326-24G-2S+IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/template_net_mikrotik_CRS326-24G-2S+IN_snmp.yaml
index f0fe88c98cf..d915bcec9f4 100644
--- a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/template_net_mikrotik_CRS326-24G-2S+IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+IN_snmp/template_net_mikrotik_CRS326-24G-2S+IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:23Z'
+ date: '2022-10-27T14:42:20Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: c5f41fe0f54f470f9e304384838f150a
- template: 'MikroTik CRS326-24G-2SIN SNMP'
- name: 'MikroTik CRS326-24G-2S+IN SNMP'
+ template: 'MikroTik CRS326-24G-2SIN by SNMP'
+ name: 'MikroTik CRS326-24G-2S+IN by SNMP'
description: |
The template for monitoring Switch MikroTik CRS326-24G-2S+IN.
24 Gigabit ports, 2 SFP+ cages and a desktop case – server room power for your home!
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: d914dc20fb664be7832aae19f07df37f
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 70d6789335b74cdd87a1a23bf4a3f875
- expression: 'min(/MikroTik CRS326-24G-2SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS326-24G-2SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SIN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 49f77a9948164eb7aeffc3efe3f60ce1
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS326-24G-2SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS326-24G-2SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SIN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 65e43afe1d04447fb334d5efbd76c185
- expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 3a3ac7e0d5fc4feca67eb2447fcbcf34
- expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 63f90de57f5f4b5b92d0db0b54d0b1d2
- expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 2f18268819414337aca3f919343d6577
- expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SIN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: cfd67344627840a081d286d8188c0888
- expression: 'min(/MikroTik CRS326-24G-2SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS326-24G-2SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 1b222c2531f140399fe94a54556c6422
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d9f63d9be04940949d9dd655cf1a7bd2
- expression: 'min(/MikroTik CRS326-24G-2SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS326-24G-2SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 69bb93aca6c140959ad2ddd484a774e7
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: bf5e439b3dfe4a5b82df00c0ed291895
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: bc428b5477294722a18477dc061a59e9
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 21aa13901d7449a39f64a41cb151d687
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0a2cde44b8ea45178e0859ae7c1125e5
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 0379f91f1b4e40d1b35c30ac538a8b61
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 7d4b709e7b5c4e9aa68a9c6f8df69e75
- expression: 'avg(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS326-24G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS326-24G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4ae567c4a5be46a4a1a135a5f61aece8
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e6aca20d3c140f69580920d37820c9a
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 65a6c1de5d8e4a4d8857a4b97fcb1a7a
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: df73d669f65940a79065915e11a3e3bf
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 4c8b8a486e7348c383f28ffcb4db6182
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 233fb21420794842b00c0fb12db86e51
- expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2eed9a625d3c45b4bfd4fdd70b58461d
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: c05d1756423841658946ffaddf78ef79
expression: |
- change(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS326-24G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: e08df3d8533c46a9aac0144486098b78
expression: |
- (avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS326-24G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: dcd307c6b1074213976f0f26cb699699
expression: |
- min(/MikroTik CRS326-24G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS326-24G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS326-24G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS326-24G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS326-24G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS326-24G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: d4eb86620709480a93c863cc4080ceef
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 3e07aa63774040ef9369b3280cae156d
expression: |
- last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: caae865a278946958a38fa40a41f180f
expression: |
- last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: b31c237e2046464c95b1ab70dc08e118
- expression: '(last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SIN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS326-24G-2SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS326-24G-2SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SIN SNMP'
+ host: 'MikroTik CRS326-24G-2SIN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/README.md
index b36c19686f7..5fe8c66f83a 100644
--- a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS326-24G-2S+RM SNMP
+# MikroTik CRS326-24G-2S+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS326-24G-2S+RM.
24 Gigabit port switch with 2 x SFP+ cages in 1U rackmount case, Dual boot (RouterOS or SwitchOS)
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS326-24G-2SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SRM SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS326-24G-2SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS326-24G-2SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS326-24G-2SRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS326-24G-2SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS326-24G-2SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS326-24G-2SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS326-24G-2SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SRM by SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS326-24G-2SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS326-24G-2SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS326-24G-2SRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS326-24G-2SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS326-24G-2SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS326-24G-2SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/template_net_mikrotik_CRS326-24G-2S+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/template_net_mikrotik_CRS326-24G-2S+RM_snmp.yaml
index 8a242e9aa3f..c4ef7c79140 100644
--- a/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/template_net_mikrotik_CRS326-24G-2S+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS326-24G-2S+RM_snmp/template_net_mikrotik_CRS326-24G-2S+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:27Z'
+ date: '2022-10-27T14:43:34Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: bc80883918ac4f879427ca145122b5cb
- template: 'MikroTik CRS326-24G-2SRM SNMP'
- name: 'MikroTik CRS326-24G-2S+RM SNMP'
+ template: 'MikroTik CRS326-24G-2SRM by SNMP'
+ name: 'MikroTik CRS326-24G-2S+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS326-24G-2S+RM.
24 Gigabit port switch with 2 x SFP+ cages in 1U rackmount case, Dual boot (RouterOS or SwitchOS)
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: b74334acbba2407d8baff550f0db6d64
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 160e58bf2d05433882e3e0c8f187c42e
- expression: 'min(/MikroTik CRS326-24G-2SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS326-24G-2SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: ee3f5dbb8f5848c888c0d599be2dd4fa
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS326-24G-2SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS326-24G-2SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24G-2SRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: f91e54b227304a688092ffcbabf88d41
- expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: aeb6d1d52ee24d7393a4a5a31f7267fb
- expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 635b2c749af2495aa87688001bd73a6c
- expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: be2544b8b967408288a750c82a8f9059
- expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/system.name,#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24G-2SRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 4fbf859b65774291850b37f700945a36
- expression: 'min(/MikroTik CRS326-24G-2SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS326-24G-2SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 6ed1c046ba1a4246a6e30d5147e58250
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6b4d22ac23db45beb398d591a157782e
- expression: 'min(/MikroTik CRS326-24G-2SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS326-24G-2SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 9c0018fd8715414887115820c3094146
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 519c8f4f6a62492fbf739c2303f76aa5
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 4b2e16580fe6436aa3e37813c83fde98
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 6cf5bdc92724485ba64f5d06b01f4656
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2218bd775d8c421992346f40d0b38fa4
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 093386c3b35f45bab6cea6d6396064b1
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 17ac58cd999d49f1ae31bc6a9280f887
- expression: 'avg(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1f7f8781515a44b4b12db1a162e9a8f4
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 79166253631142cf87660a658c77169e
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e5d37873211c44aca51f7926a9b2add6
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 51c15917a456414ca6fef2cc86156484
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 18f56223df0a415fb99869ba8a8ee514
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e9057c50ee5148119a922bd170e7463f
- expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f32914fd53134704a5c11b501decb57e
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 4549b4a23bc24c0d8998f2dc6a77a520
expression: |
- change(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 676efabc192b4583b60c52ce440d00f2
expression: |
- (avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: cd633c8e31824cb1b38c6e9dad58ca7e
expression: |
- min(/MikroTik CRS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 77cfcc80cb8d407ca178ba7b9e50f182
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: c01561923734478abc70b7c02d2d9add
expression: |
- last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: e53a74871f2b4fadb8ff206f348fc90c
expression: |
- last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 869d6bd39ef1440193978c60518a91f7
- expression: '(last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24G-2SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS326-24G-2SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS326-24G-2SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24G-2SRM SNMP'
+ host: 'MikroTik CRS326-24G-2SRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/README.md
index d9f6fc824b5..705fcc242e6 100644
--- a/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS326-24S+2Q+RM SNMP
+# MikroTik CRS326-24S+2Q+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS326-24S+2Q+RM.
Our fastest switch for the most demanding setups
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS326-24S2QRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS326-24S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS326-24S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS326-24S2QRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS326-24S2QRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS326-24S2QRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS326-24S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS326-24S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS326-24S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS326-24S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS326-24S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS326-24S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS326-24S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS326-24S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24S2QRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS326-24S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS326-24S2QRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS326-24S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24S2QRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS326-24S2QRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS326-24S2QRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS326-24S2QRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS326-24S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS326-24S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS326-24S2QRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS326-24S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS326-24S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS326-24S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24S2QRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS326-24S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS326-24S2QRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS326-24S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24S2QRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS326-24S2QRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS326-24S2QRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/template_net_mikrotik_CRS326-24S+2Q+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/template_net_mikrotik_CRS326-24S+2Q+RM_snmp.yaml
index fc1aba6129b..48d3759a5a5 100644
--- a/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/template_net_mikrotik_CRS326-24S+2Q+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS326-24S+2Q+RM_snmp/template_net_mikrotik_CRS326-24S+2Q+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:31Z'
+ date: '2022-10-27T14:43:46Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: e7ed0e0cbd0b439394f6498ea90dc31d
- template: 'MikroTik CRS326-24S2QRM SNMP'
- name: 'MikroTik CRS326-24S+2Q+RM SNMP'
+ template: 'MikroTik CRS326-24S2QRM by SNMP'
+ name: 'MikroTik CRS326-24S+2Q+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS326-24S+2Q+RM.
Our fastest switch for the most demanding setups
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: d81a92c3079b4d25be205b1e56b15a73
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: cd4376c2f8e449b9b4923720374198af
- expression: 'min(/MikroTik CRS326-24S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24S2QRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS326-24S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24S2QRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 9e00ffd6364d4e238985a4f23601e1c6
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS326-24S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24S2QRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS326-24S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS326-24S2QRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: db665e87151d441395fce421949a9bb0
- expression: 'last(/MikroTik CRS326-24S2QRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: a5e267a8584a4d099f0d36d30ce17d0b
- expression: 'last(/MikroTik CRS326-24S2QRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 968c0bef31dc4ae89426b7dee5b76ea1
- expression: 'last(/MikroTik CRS326-24S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 9fe8a423c0a8411191337e48818cd835
- expression: 'last(/MikroTik CRS326-24S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS326-24S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS326-24S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS326-24S2QRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS326-24S2QRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: ef73c971f14444f18a8b0956c8bd5796
- expression: 'min(/MikroTik CRS326-24S2QRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS326-24S2QRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: cd1295131197495183bcc095622fb296
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 887bf529d1aa43dbaec9a92a390fc0cd
- expression: 'min(/MikroTik CRS326-24S2QRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS326-24S2QRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 3b40ad0d38434b10a190ed2563b7ebee
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4ec904a360ff48668e5273ba4dd223fa
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: c8dcfe797232437991ab8da001e9855e
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 90cea4e309944224abe0052a9eeb2e59
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b0718bee8c8d422683e5f9f2915a35c0
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: bb57907f2cec4eeda6e7ace60d90a2f3
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 7c1161969d7f490fba58d113a7cf9da2
- expression: 'avg(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS326-24S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS326-24S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ce0b05960b714a03b34f626d262f410a
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e97689431f51481db6836b937214a926
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: de8a3e44f9494ae0b9506785386c0604
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4c4e3d9b71974e3192070aa344e37221
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 5039dfabeb7c493c8f8fdc0e448f921d
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 034fd6289a4a4d549ea927ae48d8b225
- expression: 'last(/MikroTik CRS326-24S2QRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 066a5460a2964a7586a90494dcc29c4f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: a14597e77d1a47cfae87df483df50d44
expression: |
- change(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS326-24S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS326-24S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 86aee07149c9403eba4e32030c52ae0e
expression: |
- (avg(/MikroTik CRS326-24S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS326-24S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS326-24S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS326-24S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS326-24S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS326-24S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 2fa427f9d66548ee9574495847cd521a
expression: |
- min(/MikroTik CRS326-24S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS326-24S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS326-24S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS326-24S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS326-24S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS326-24S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS326-24S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS326-24S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS326-24S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS326-24S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 2117133adbd14de6beb78907eec23c77
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: e6c0c2401c0940ef8edae9aa38aa49e3
expression: |
- last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: d72e1d5537ec498788f6e7e57e18f65d
expression: |
- last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS326-24S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 119f36d60a1141f5a5dee9ee3aba894b
- expression: '(last(/MikroTik CRS326-24S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24S2QRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS326-24S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS326-24S2QRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS326-24S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS326-24S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS326-24S2QRM SNMP'
+ host: 'MikroTik CRS326-24S2QRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/README.md
index 5e00b870168..42d9be714d2 100644
--- a/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS328-24P-4S+RM SNMP
+# MikroTik CRS328-24P-4S+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS328-24P-4S+RM.
24 port Gigabit Ethernet router/switch with four 10Gbps SFP+ ports in 1U rackmount case, Dual Boot and PoE output, 500W
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS328-24P-4SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS328-24P-4SRM SNMP/system.name,#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.name,#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS328-24P-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS328-24P-4SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS328-24P-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS328-24P-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS328-24P-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-24P-4SRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS328-24P-4SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS328-24P-4SRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS328-24P-4SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-24P-4SRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS328-24P-4SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS328-24P-4SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS328-24P-4SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS328-24P-4SRM by SNMP/system.name,#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS328-24P-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS328-24P-4SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-24P-4SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS328-24P-4SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS328-24P-4SRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS328-24P-4SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-24P-4SRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS328-24P-4SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS328-24P-4SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/template_net_mikrotik_CRS328-24P-4S+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/template_net_mikrotik_CRS328-24P-4S+RM_snmp.yaml
index fdd17335a0a..55214598fcc 100644
--- a/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/template_net_mikrotik_CRS328-24P-4S+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS328-24P-4S+RM_snmp/template_net_mikrotik_CRS328-24P-4S+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:34Z'
+ date: '2022-10-27T14:42:03Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: dcf88bca5aaf4123a10eb3daab28a9af
- template: 'MikroTik CRS328-24P-4SRM SNMP'
- name: 'MikroTik CRS328-24P-4S+RM SNMP'
+ template: 'MikroTik CRS328-24P-4SRM by SNMP'
+ name: 'MikroTik CRS328-24P-4S+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS328-24P-4S+RM.
24 port Gigabit Ethernet router/switch with four 10Gbps SFP+ ports in 1U rackmount case, Dual Boot and PoE output, 500W
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 0f59da9697304abd8c074c51ce3a4bef
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 14b723dee48541a3a8b36c128681a200
- expression: 'min(/MikroTik CRS328-24P-4SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-24P-4SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS328-24P-4SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-24P-4SRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: f8666db5e5a64d3fa7119deac48c317c
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS328-24P-4SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-24P-4SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS328-24P-4SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-24P-4SRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 98b8b373def34eec9e814c039dcfb20b
- expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: da1a900485be412996f607b9669daf83
- expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 375ba33fbee4425d97cbb15e410e52d3
- expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/system.name,#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.name,#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/system.name,#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 41ec834afc7a49409cc9996459b15452
- expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/system.name,#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/system.name,#2) and length(last(/MikroTik CRS328-24P-4SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/system.name,#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS328-24P-4SRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 86bc4c3dbd024d8d84a90f25fa8c0932
- expression: 'min(/MikroTik CRS328-24P-4SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS328-24P-4SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 5ea3db8ebb2f49ab9fe7d38de50a4003
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: dfedf883e0e043a8924796421d0836da
- expression: 'min(/MikroTik CRS328-24P-4SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS328-24P-4SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 318eae7c977a44f9b24891376cefc129
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: cc60802009c449eaa49992f38c176f8c
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: f83dac15be7a4f6a891406fe1e307074
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 7044f89f39fd4fa7ba1bc790e86fc960
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2cc0f3a6c39340b78e6b1795b90ee052
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 5f460952122241d5900e83f68e097e32
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: e729643fce2d43d8b5de5a5f3d0fa184
- expression: 'avg(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS328-24P-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS328-24P-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: de98377f082840a0929e2f9024eb873d
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4cf201a794cf48dfbaf574a04f8111b6
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3666c8cb456a4e4581c4ebac22db115a
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4b0a6c73bc1f4e7692cb9196dbdf059c
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: e9ac830b1f3a41c19739f09a1d89e2e7
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 26baba4f44aa436fbe96c86a4a511156
- expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 073891fc4c8b4ec9b316deb9c4147cab
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: eaa731129de3470e830007ac7ce932f5
expression: |
- change(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS328-24P-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 4060d8dedaac41c8bce5b82df01eb53c
expression: |
- (avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS328-24P-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 294c29c25bae472fa13f20d6c75442bf
expression: |
- min(/MikroTik CRS328-24P-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS328-24P-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS328-24P-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS328-24P-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS328-24P-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS328-24P-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS328-24P-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS328-24P-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 8f1b9e4dcc914aaf945ca40f78f48d87
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: e9f77bfbd9e64dc0a9549c0e54da0582
expression: |
- last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: ff9b2a577fc64bdeb0c8e1feaac80862
expression: |
- last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-24P-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 4e0a9fd604b04e6295108f8edf7910a9
- expression: '(last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-24P-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-24P-4SRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-24P-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-24P-4SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS328-24P-4SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS328-24P-4SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS328-24P-4SRM SNMP'
+ host: 'MikroTik CRS328-24P-4SRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/README.md
index 0383ba9fa56..aa7ed6c9dbd 100644
--- a/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS328-4C-20S-4S+RM SNMP
+# MikroTik CRS328-4C-20S-4S+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS328-4C-20S-4S+RM.
Smart Switch, 20 x SFP cages, 4 x SFP+ cages, 4 x Combo ports (Gigabit Ethernet or SFP), 800MHz CPU, 512MB RAM, 1U rackmount case, Dual Power Supplies, RouterOS L5 or SwitchOS (Dual Boot)
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS328-4C-20S-4SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name,#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS328-4C-20S-4SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS328-4C-20S-4SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS328-4C-20S-4SRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS328-4C-20S-4SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name,#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS328-4C-20S-4SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS328-4C-20S-4SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/template_net_mikrotik_CRS328-4C-20S-4S+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/template_net_mikrotik_CRS328-4C-20S-4S+RM_snmp.yaml
index 56a8d438520..3de309f90d4 100644
--- a/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/template_net_mikrotik_CRS328-4C-20S-4S+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS328-4C-20S-4S+RM_snmp/template_net_mikrotik_CRS328-4C-20S-4S+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:38Z'
+ date: '2022-10-27T14:43:32Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 6742f5ed33ca4c19b8e61203770e5fe5
- template: 'MikroTik CRS328-4C-20S-4SRM SNMP'
- name: 'MikroTik CRS328-4C-20S-4S+RM SNMP'
+ template: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
+ name: 'MikroTik CRS328-4C-20S-4S+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS328-4C-20S-4S+RM.
Smart Switch, 20 x SFP cages, 4 x SFP+ cages, 4 x Combo ports (Gigabit Ethernet or SFP), 800MHz CPU, 512MB RAM, 1U rackmount case, Dual Power Supplies, RouterOS L5 or SwitchOS (Dual Boot)
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: fa71a2bcc742439a8eb76923db6dd34c
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: c315770210b94fe39126514c41d6fa5d
- expression: 'min(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: fe1eba68b565403a968bec8561362376
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-4C-20S-4SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 656a970a84fd4f65adc021b317f8db04
- expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: ba6f7f02b3dc47b6a15a40f81c86ee1e
- expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: caff4557fe8d4e0cb994c16a4d1c3eae
- expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name,#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name,#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: b720a6b27e14473db885682085ce07e1
- expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name,#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name,#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name,#2) and length(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 6d68e3acb5a34a9eb68f6ea1e329241d
- expression: 'min(/MikroTik CRS328-4C-20S-4SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS328-4C-20S-4SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: eaa6f1c7bd334122af4cb08af35ebd86
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 000c63d6cf4d44f28c2705098ce88918
- expression: 'min(/MikroTik CRS328-4C-20S-4SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: b3f51cd4147748e197e79c4497a26d3b
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 23eaad92fd06421a94ed77347ed7805f
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: e596c08e59974762a21d5e7c2bb06eb5
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 8faa5c80c64545b8bde41c02bf450288
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6e77737e71a640b1b0832fb8a317a848
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 9ea2d3a683994dcc816d7210cfda6f38
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 82fc4ea36e9e4a388e38bf4fb5d46148
- expression: 'avg(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS328-4C-20S-4SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS328-4C-20S-4SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: eab50deb6a2e45e8b7bcd447dc6c28e9
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a12e8f4ef8c2496aacc7cbc35b9ede34
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 32cb826e59324b90910717b778a714f2
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4220c67e66074f048261a4b42092c381
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 8a86e70394b14aca90cbd379f6aba7a3
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bd6dc784f23746d19a09b6ea322ecf24
- expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d007eb009f2d4b699cf5af8a0ccedfe9
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 332308663e4e478d97383a638b2b1d02
expression: |
- change(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: c854aedfd3594f21b40bd227de48c871
expression: |
- (avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: f74f365e18d64e2096a326456622b3e1
expression: |
- min(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS328-4C-20S-4SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 840e6b4e7d664308b2ce4912effc36f7
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 708c6b4a613c4795bd2b3c8b10b9fed4
expression: |
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 1220479e0e0b4dbbb7590ec2b8359009
expression: |
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS328-4C-20S-4SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 661c463acbed4777b8269b9277a255fc
- expression: '(last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-4C-20S-4SRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS328-4C-20S-4SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS328-4C-20S-4SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS328-4C-20S-4SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS328-4C-20S-4SRM SNMP'
+ host: 'MikroTik CRS328-4C-20S-4SRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/README.md
index 2c958c1fec0..89df9530e90 100644
--- a/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS354-48G-4S+2Q+RM SNMP
+# MikroTik CRS354-48G-4S+2Q+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS354-48G-4S+2Q+RM.
Best price and best performance on the market – this 48 port switch will rock any setup, including 40 Gbps devices!
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS354-48G-4S2QRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS354-48G-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS354-48G-4S2QRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS354-48G-4S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS354-48G-4S2QRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS354-48G-4S2QRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS354-48G-4S2QRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS354-48G-4S2QRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS354-48G-4S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS354-48G-4S2QRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS354-48G-4S2QRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48G-4S+2Q+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48G-4S+2Q+RM_snmp.yaml
index 83aeee81fa5..21d79c5ef77 100644
--- a/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48G-4S+2Q+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS354-48G-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48G-4S+2Q+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:42Z'
+ date: '2022-10-27T14:43:23Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: d1c1ab5db2c34c17ae3541407f8b7faa
- template: 'MikroTik CRS354-48G-4S2QRM SNMP'
- name: 'MikroTik CRS354-48G-4S+2Q+RM SNMP'
+ template: 'MikroTik CRS354-48G-4S2QRM by SNMP'
+ name: 'MikroTik CRS354-48G-4S+2Q+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS354-48G-4S+2Q+RM.
Best price and best performance on the market – this 48 port switch will rock any setup, including 40 Gbps devices!
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 987ae7ade202464ba51fd8fcc67d3a19
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: bf7a369d3b2a455496f8920177666d91
- expression: 'min(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 9a35ff4d142640e387f247a8ae5021bc
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48G-4S2QRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48G-4S2QRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 7e708c7bf76445959909bf03adf676dc
- expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 0b2e29ba173346248fb4d799f7e16cf1
- expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 135707c751764f9087ebd32e1fe0b7ba
- expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: b0c3673f0aee4a23a7811f54416924bf
- expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 5e104649223b40cdadeaa338321ca690
- expression: 'min(/MikroTik CRS354-48G-4S2QRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS354-48G-4S2QRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 239d876c15fe45ccb33ca87aba3a170f
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f8801c652f414d4b881715e10d1a69ac
- expression: 'min(/MikroTik CRS354-48G-4S2QRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS354-48G-4S2QRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: ddf965753be54765afd2ce23a0895ba7
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5e2a48b70bb5491791e1e796d9b57700
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 6064422d708f4ee3a54dd0dccd6c2ef4
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: b61c653ea25c47f397288e7a6c88c343
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7f1abc774f4e48928a52a755f9655d33
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 4c3b3b0c4e4c4903856c673ed34c32b2
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 46ce97f9fd33406996e21d7c4cfe4615
- expression: 'avg(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS354-48G-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS354-48G-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5caa686e721a40e991d0f4b71eaecc7f
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ce67126d64254dabb9d5df68dcdb5a69
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7401d1955be04599b1d0e5dfb3d2a4f5
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d668e892231d4614af5673f11d8070cf
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: e35084133a5e4693aea5f84b96a6480a
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a5ac3a7a8ac447bdb1d35b9456351624
- expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 914bfdb045554132902dff8f910878d4
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: f1c3a3541f9948eb890816493e6251e5
expression: |
- change(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: ec1a319bff034c6387ed43d083c0ca85
expression: |
- (avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 1d46257a2eb14abf8f3dddae5e3974ca
expression: |
- min(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS354-48G-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 5222de6258624467a0b0245312047307
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: adf6f10ebb2e42989ed41b69e3411431
expression: |
- last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: da4dd8436d6f4787801e6d2f10b59a47
expression: |
- last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48G-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 1906ad6961664c74a2de31d20cd279b2
- expression: '(last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48G-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48G-4S2QRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48G-4S2QRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS354-48G-4S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS354-48G-4S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS354-48G-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48G-4S2QRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/README.md
index 7eb46eed97d..2fe5aa01d59 100644
--- a/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CRS354-48P-4S+2Q+RM SNMP
+# MikroTik CRS354-48P-4S+2Q+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CRS354-48P-4S+2Q+RM.
The 48 port champion you’ve been waiting for - now with PoE-out!
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS354-48P-4S2QRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS354-48P-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS354-48P-4S2QRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS354-48P-4S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS354-48P-4S2QRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS354-48P-4S2QRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CRS354-48P-4S2QRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CRS354-48P-4S2QRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CRS354-48P-4S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CRS354-48P-4S2QRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CRS354-48P-4S2QRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48P-4S+2Q+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48P-4S+2Q+RM_snmp.yaml
index d7725d5be9c..26ec527d270 100644
--- a/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48P-4S+2Q+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CRS354-48P-4S+2Q+RM_snmp/template_net_mikrotik_CRS354-48P-4S+2Q+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:46Z'
+ date: '2022-10-27T14:42:51Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: fa5e5e131eb34bbea1b1f7b2352a853d
- template: 'MikroTik CRS354-48P-4S2QRM SNMP'
- name: 'MikroTik CRS354-48P-4S+2Q+RM SNMP'
+ template: 'MikroTik CRS354-48P-4S2QRM by SNMP'
+ name: 'MikroTik CRS354-48P-4S+2Q+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CRS354-48P-4S+2Q+RM.
The 48 port champion you’ve been waiting for - now with PoE-out!
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 94618414658d4f5bad5f1cf544fba55d
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: ecb0d03f65144dbe8e8e22339576fe1a
- expression: 'min(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: bb70a4e882224f9d8302f8726ff81a8d
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48P-4S2QRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CRS354-48P-4S2QRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 9b20e7d8a4c844069a75adc95dcb6223
- expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: ec99b185eb1d4af2943cd49f4b1e3dcf
- expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: f4c43870fa484e4088c1d9c973387140
- expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 54ca398b57a8450ba004aa15a310f599
- expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name,#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name,#2) and length(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name,#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name,#2) and length(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: a60e5b95514e4a6ba5bdc1d2bc95818c
- expression: 'min(/MikroTik CRS354-48P-4S2QRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CRS354-48P-4S2QRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: ce74c74936194791b8f8a09acd9d5501
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c5ddc3a0e73943ef939341972db502e1
- expression: 'min(/MikroTik CRS354-48P-4S2QRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CRS354-48P-4S2QRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 84b79932cea04e7fa9dc64fe119a2825
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 963f7342ba58427189be8e5d482bd1db
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 3bc320302ce64512bf5cabdddbf8827a
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 2341cc2581aa47629ba79efb0dde8f12
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 310fc63d695d4d79adb61b152467dc6b
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 45d51b9e79ce4086934b7a93837855fd
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 84ea7da850864101a35eb96acb475dec
- expression: 'avg(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CRS354-48P-4S2QRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CRS354-48P-4S2QRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 832ceaf8547b4395a4495ad2d64c9f3e
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 64e8b603db0240bda81435df0ec8f275
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8085843742774a44ada60c14cf33aeb4
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e315b7387f1943eb9432986565aee291
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: e8d513955f9b4f819c408cf3aac35ec1
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 611cb0ad354a4ac0b52715483b4426ad
- expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2426c10e34db430a946528f02ae605d4
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 0eca316085f046599bd3db8ce7b186f1
expression: |
- change(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 417ef3b4a8814b01bcb4715248df543c
expression: |
- (avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: a674f655342a42b094b0084fab1bde99
expression: |
- min(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CRS354-48P-4S2QRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 0cad2cd6715f44d6a912a63cdc15926b
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 63d24ac83bc24eb5b64ecc47c75c1c4a
expression: |
- last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: ed3c082e9f264f20862f9cd20d4e9724
expression: |
- last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CRS354-48P-4S2QRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: ec03a67de5ca4d8d834e1689a1cd28bf
- expression: '(last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48P-4S2QRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48P-4S2QRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CRS354-48P-4S2QRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CRS354-48P-4S2QRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CRS354-48P-4S2QRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CRS354-48P-4S2QRM SNMP'
+ host: 'MikroTik CRS354-48P-4S2QRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/README.md
index 67e590332b0..a21646892c4 100644
--- a/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CSS326-24G-2S+RM SNMP
+# MikroTik CSS326-24G-2S+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CSS326-24G-2S+RM.
SwOS powered 24 port Gigabit Ethernet switch with two SFP+ ports in 1U rackmount case
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CSS326-24G-2SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CSS326-24G-2SRM SNMP/system.name,#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.name,#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CSS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CSS326-24G-2SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CSS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CSS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CSS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS326-24G-2SRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CSS326-24G-2SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CSS326-24G-2SRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CSS326-24G-2SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS326-24G-2SRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CSS326-24G-2SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CSS326-24G-2SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CSS326-24G-2SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CSS326-24G-2SRM by SNMP/system.name,#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.name,#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CSS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CSS326-24G-2SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS326-24G-2SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CSS326-24G-2SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CSS326-24G-2SRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CSS326-24G-2SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS326-24G-2SRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CSS326-24G-2SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CSS326-24G-2SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/template_net_mikrotik_CSS326-24G-2S+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/template_net_mikrotik_CSS326-24G-2S+RM_snmp.yaml
index 8b3dcd5e6c1..9f15ab6c8a0 100644
--- a/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/template_net_mikrotik_CSS326-24G-2S+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CSS326-24G-2S+RM_snmp/template_net_mikrotik_CSS326-24G-2S+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:49Z'
+ date: '2022-10-27T14:42:17Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 75ada0d6fb22416a9e6e5f44c2c3f64a
- template: 'MikroTik CSS326-24G-2SRM SNMP'
- name: 'MikroTik CSS326-24G-2S+RM SNMP'
+ template: 'MikroTik CSS326-24G-2SRM by SNMP'
+ name: 'MikroTik CSS326-24G-2S+RM by SNMP'
description: |
The template for monitoring Switch MikroTik CSS326-24G-2S+RM.
SwOS powered 24 port Gigabit Ethernet switch with two SFP+ ports in 1U rackmount case
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 7c5ac0cbe19b4a119e8cd02802169849
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 4b63a258093a4b5f8c7f415c054e290c
- expression: 'min(/MikroTik CSS326-24G-2SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS326-24G-2SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CSS326-24G-2SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS326-24G-2SRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 8d37fb7e0f32438ea1b1f55389c4c024
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CSS326-24G-2SRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS326-24G-2SRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CSS326-24G-2SRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS326-24G-2SRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 6be0e3bc49134d8c9823736e1c4dcb98
- expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: a6c0fe000ca34b7490c4a56f5c57346b
- expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 23b043f4b2344b8ea9140387454e6b02
- expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/system.name,#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.name,#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/system.name,#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.name,#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 660fbce28f334bb79afc6a9ba8596316
- expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/system.name,#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/system.name,#2) and length(last(/MikroTik CSS326-24G-2SRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/system.name,#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/system.name,#2) and length(last(/MikroTik CSS326-24G-2SRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: ac97984b2153426c89247bd88797b4a2
- expression: 'min(/MikroTik CSS326-24G-2SRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CSS326-24G-2SRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 8d9d64c66ffe48899e799bf720182b6c
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 62fb5cb70674493ea1c7db4df42cf8f4
- expression: 'min(/MikroTik CSS326-24G-2SRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CSS326-24G-2SRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 8fa3b36e1d7943c7b1d7b9a75c65d087
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 43a5c40a58f541faa120a514dc47451e
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: bb4a5e936ba74269b8a8fa2e1ca2b27e
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 46754e9a44b04fdeabc9d6a1370505dc
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5b25032a33c3443585d74f3412f13d3e
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 44f2b8515564492c9b2e68985f753cf9
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: cd9978c41951477c9d3ef44f7d4d717c
- expression: 'avg(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CSS326-24G-2SRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CSS326-24G-2SRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 889e25ecd5104014bd798cb577f59bd5
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8733d8912d8d400b9dafcc845854cb3a
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a801c0260917479f9f905a8b32085fc6
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: cfcecfe761064f5baa312a0c54633261
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 479f5860d57c4a89869b03c98cb17e0d
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0a36e10a866e455f98f1954b4c663d64
- expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a0071a9d0e604160af201436b9879256
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 2215de4000e640c3b34a5333dfb3ec79
expression: |
- change(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CSS326-24G-2SRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 1b7348beb2044c2cbb59904cde8fc02b
expression: |
- (avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CSS326-24G-2SRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: cd7fe7efe80241efae4e7dd2952313bc
expression: |
- min(/MikroTik CSS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CSS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CSS326-24G-2SRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CSS326-24G-2SRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CSS326-24G-2SRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CSS326-24G-2SRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CSS326-24G-2SRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CSS326-24G-2SRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 9d5a922b41df4c9ba2e6c806aaa86ea5
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 7e550dcc8005425db0c20785d3818466
expression: |
- last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 92d4b209c4e249fcab9d72eae2da160d
expression: |
- last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS326-24G-2SRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: e2283150bf9e4248aa9bb5bd9cc1881e
- expression: '(last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS326-24G-2SRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS326-24G-2SRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS326-24G-2SRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS326-24G-2SRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CSS326-24G-2SRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CSS326-24G-2SRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CSS326-24G-2SRM SNMP'
+ host: 'MikroTik CSS326-24G-2SRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/README.md b/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/README.md
index c979264785b..bce55bf21a7 100644
--- a/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik CSS610-8G-2S+IN SNMP
+# MikroTik CSS610-8G-2S+IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik CSS610-8G-2S+IN.
Eight 1G Ethernet ports and two SFP+ ports for 10G fiber connectivity. Portable, powerful and extremely cost-effective – this switch is an instant classic!
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CSS610-8G-2SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CSS610-8G-2SIN SNMP/system.name,#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.name,#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CSS610-8G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CSS610-8G-2SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CSS610-8G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CSS610-8G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CSS610-8G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS610-8G-2SIN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CSS610-8G-2SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CSS610-8G-2SIN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik CSS610-8G-2SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS610-8G-2SIN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CSS610-8G-2SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CSS610-8G-2SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik CSS610-8G-2SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik CSS610-8G-2SIN by SNMP/system.name,#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.name,#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik CSS610-8G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik CSS610-8G-2SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS610-8G-2SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik CSS610-8G-2SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik CSS610-8G-2SIN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik CSS610-8G-2SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS610-8G-2SIN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik CSS610-8G-2SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik CSS610-8G-2SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/template_net_mikrotik_CSS610-8G-2S+IN_snmp.yaml b/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/template_net_mikrotik_CSS610-8G-2S+IN_snmp.yaml
index 9699ee44282..ace3b448535 100644
--- a/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/template_net_mikrotik_CSS610-8G-2S+IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_CSS610-8G-2S+IN_snmp/template_net_mikrotik_CSS610-8G-2S+IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:53Z'
+ date: '2022-10-27T14:42:11Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 8d22b4d1a9c6457fbd6fd959263f91db
- template: 'MikroTik CSS610-8G-2SIN SNMP'
- name: 'MikroTik CSS610-8G-2S+IN SNMP'
+ template: 'MikroTik CSS610-8G-2SIN by SNMP'
+ name: 'MikroTik CSS610-8G-2S+IN by SNMP'
description: |
The template for monitoring Switch MikroTik CSS610-8G-2S+IN.
Eight 1G Ethernet ports and two SFP+ ports for 10G fiber connectivity. Portable, powerful and extremely cost-effective – this switch is an instant classic!
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 4c4560f84de94f36a3e7d4941ded2cba
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 44efdc627091496baa1fbe4bbe078e6f
- expression: 'min(/MikroTik CSS610-8G-2SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS610-8G-2SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CSS610-8G-2SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS610-8G-2SIN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 0a8c65b849dd4cb1a0d740d57323f76c
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik CSS610-8G-2SIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS610-8G-2SIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik CSS610-8G-2SIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik CSS610-8G-2SIN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 1a920e11feb447deba1aa2d8fbb24f85
- expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 1167a5bf26e24eb89479904841ef890b
- expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 56b334cfbcf54eba95c229b097e3cfd7
- expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/system.name,#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.name,#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/system.name,#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.name,#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 4a1aacf6350844e5858c3eed35b544eb
- expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/system.name,#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/system.name,#2) and length(last(/MikroTik CSS610-8G-2SIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/system.name,#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/system.name,#2) and length(last(/MikroTik CSS610-8G-2SIN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: f58eb093a57948f1bf674be6a207b0d3
- expression: 'min(/MikroTik CSS610-8G-2SIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik CSS610-8G-2SIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: a63e914da20a47ef9d478b53d5e18042
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4a30b05ebe764253bfe646c3d68aef41
- expression: 'min(/MikroTik CSS610-8G-2SIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik CSS610-8G-2SIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: b2e8ea00836544f78a33586ba8b92b45
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7475c0fe7374472db189a828aeca7b60
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 225e0c1c96c94a32a84511107b71ea6d
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: b5300fdf6fe8405d84fdd7a8821ac504
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e208be80d815435ea6fc35df960bd2f6
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 7153cf7699df438d8d04e5d3163e37b3
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 30adf35ae2764123a80f64e81c11c9dd
- expression: 'avg(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik CSS610-8G-2SIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik CSS610-8G-2SIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 35142b5bd9064d63a661b07b24381564
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ddd0efc2e01e4b6ca2948a5d3973dcd5
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 90f360f3394d49a19413dcbf0dc0eab6
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f753e8c0d5fe43779fc3c427fcb087dd
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 740cd4e70898478caef811525702e0eb
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0ec46a410f97442fb9308a0922d43648
- expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a50ddafe680c447db056a9a9012faead
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 426f6a84191544c79eeabfbfb7590a35
expression: |
- change(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik CSS610-8G-2SIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 69788ba37d1147c2b67d4dbbc9b33eff
expression: |
- (avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik CSS610-8G-2SIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 376cee5b35f840d68db5d1daed510eb3
expression: |
- min(/MikroTik CSS610-8G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik CSS610-8G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik CSS610-8G-2SIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik CSS610-8G-2SIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik CSS610-8G-2SIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik CSS610-8G-2SIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik CSS610-8G-2SIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik CSS610-8G-2SIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 9eb6e527f56c445f8ca77717742472a7
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 1f6e2a2bdf04499eabb18118fdbfcc4f
expression: |
- last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 7fe3563d08ad470f909545c146b1b2c1
expression: |
- last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik CSS610-8G-2SIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 3afcbbeb91004c2dae24efaf37fec710
- expression: '(last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS610-8G-2SIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS610-8G-2SIN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik CSS610-8G-2SIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik CSS610-8G-2SIN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik CSS610-8G-2SIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik CSS610-8G-2SIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik CSS610-8G-2SIN SNMP'
+ host: 'MikroTik CSS610-8G-2SIN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_FiberBox_snmp/README.md b/templates/net/mikrotik/mikrotik_FiberBox_snmp/README.md
index c8c225b7f2e..8cf417cdfb0 100644
--- a/templates/net/mikrotik/mikrotik_FiberBox_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_FiberBox_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik FiberBox SNMP
+# MikroTik FiberBox by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik FiberBox.
An outdoor switch with five SFP ports
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik FiberBox SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik FiberBox SNMP/system.name,#1)<>last(/MikroTik FiberBox SNMP/system.name,#2) and length(last(/MikroTik FiberBox SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik FiberBox SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik FiberBox SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik FiberBox SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik FiberBox SNMP/system.hw.serialnumber,#1)<>last(/MikroTik FiberBox SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik FiberBox SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik FiberBox SNMP/system.hw.firmware,#1)<>last(/MikroTik FiberBox SNMP/system.hw.firmware,#2) and length(last(/MikroTik FiberBox SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik FiberBox SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik FiberBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik FiberBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik FiberBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik FiberBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik FiberBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik FiberBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik FiberBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik FiberBox SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik FiberBox SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik FiberBox SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik FiberBox SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik FiberBox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik FiberBox SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik FiberBox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik FiberBox SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik FiberBox SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik FiberBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik FiberBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik FiberBox SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik FiberBox SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik FiberBox SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik FiberBox SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik FiberBox SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik FiberBox by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik FiberBox by SNMP/system.name,#1)<>last(/MikroTik FiberBox by SNMP/system.name,#2) and length(last(/MikroTik FiberBox by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik FiberBox by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik FiberBox by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik FiberBox by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik FiberBox by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik FiberBox by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik FiberBox by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik FiberBox by SNMP/system.hw.firmware,#1)<>last(/MikroTik FiberBox by SNMP/system.hw.firmware,#2) and length(last(/MikroTik FiberBox by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik FiberBox by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik FiberBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik FiberBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik FiberBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik FiberBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik FiberBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik FiberBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik FiberBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik FiberBox by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik FiberBox by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik FiberBox by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik FiberBox by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik FiberBox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik FiberBox by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik FiberBox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik FiberBox by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik FiberBox by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik FiberBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik FiberBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik FiberBox by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik FiberBox by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik FiberBox by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik FiberBox by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik FiberBox by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_FiberBox_snmp/template_net_mikrotik_FiberBox_snmp.yaml b/templates/net/mikrotik/mikrotik_FiberBox_snmp/template_net_mikrotik_FiberBox_snmp.yaml
index 85ebfbc8a95..ce302ffa6e3 100644
--- a/templates/net/mikrotik/mikrotik_FiberBox_snmp/template_net_mikrotik_FiberBox_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_FiberBox_snmp/template_net_mikrotik_FiberBox_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:12:57Z'
+ date: '2022-10-27T14:43:41Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 2bd6f566391d49dab6bee184522ab5fa
- template: 'MikroTik FiberBox SNMP'
- name: 'MikroTik FiberBox SNMP'
+ template: 'MikroTik FiberBox by SNMP'
+ name: 'MikroTik FiberBox by SNMP'
description: |
The template for monitoring Switch MikroTik FiberBox.
An outdoor switch with five SFP ports
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 6a7f532a2e4a4b4cbe9435e560f8d281
- expression: 'max(/MikroTik FiberBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik FiberBox by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 17c92f554c45423eb5b44bd08f34ad7f
- expression: 'min(/MikroTik FiberBox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik FiberBox SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik FiberBox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik FiberBox by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik FiberBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik FiberBox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 3b093888ce154887afaa6f738218d718
- expression: 'avg(/MikroTik FiberBox SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik FiberBox by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik FiberBox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik FiberBox SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik FiberBox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik FiberBox by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik FiberBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik FiberBox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 2a00f0a84a274bf98254d1bbb9f1ad93
- expression: 'last(/MikroTik FiberBox SNMP/system.hw.firmware,#1)<>last(/MikroTik FiberBox SNMP/system.hw.firmware,#2) and length(last(/MikroTik FiberBox SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik FiberBox by SNMP/system.hw.firmware,#1)<>last(/MikroTik FiberBox by SNMP/system.hw.firmware,#2) and length(last(/MikroTik FiberBox by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 519f97f0275f4e9caf7e320e932ee911
- expression: 'last(/MikroTik FiberBox SNMP/system.hw.serialnumber,#1)<>last(/MikroTik FiberBox SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik FiberBox SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik FiberBox by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik FiberBox by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik FiberBox by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: dd116049df75471b8aacbedd082f2634
- expression: 'last(/MikroTik FiberBox SNMP/system.name,#1)<>last(/MikroTik FiberBox SNMP/system.name,#2) and length(last(/MikroTik FiberBox SNMP/system.name))>0'
+ expression: 'last(/MikroTik FiberBox by SNMP/system.name,#1)<>last(/MikroTik FiberBox by SNMP/system.name,#2) and length(last(/MikroTik FiberBox by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 97933a27c0eb4e0cb67fceb9877641d9
- expression: 'last(/MikroTik FiberBox SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik FiberBox SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik FiberBox SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik FiberBox by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik FiberBox by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik FiberBox by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik FiberBox SNMP/system.name,#1)<>last(/MikroTik FiberBox SNMP/system.name,#2) and length(last(/MikroTik FiberBox SNMP/system.name))>0'
+ expression: 'last(/MikroTik FiberBox by SNMP/system.name,#1)<>last(/MikroTik FiberBox by SNMP/system.name,#2) and length(last(/MikroTik FiberBox by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 72662034829d4d008f19cd3231b18bd1
- expression: 'min(/MikroTik FiberBox SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik FiberBox by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 7b8af02b531842e2b7f50037a8b3679a
- expression: 'max(/MikroTik FiberBox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik FiberBox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik FiberBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik FiberBox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c5c743eec5fd430385a3ab3f1b9ccd61
- expression: 'min(/MikroTik FiberBox SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik FiberBox by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: ba436d334f7648db8a7b792418232fde
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 788f637f7c28499cb0b8227bbcfddbf6
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: f2952ccdadf0474a85e626eeae67ee8f
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: fbd7daacdcde41fa9395a3dba62c7365
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 732a162ce6aa424e8660882cccfaf40b
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 64daf72dc6824976bbc28c0e76b9318c
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 3a6e8742e68d4e4cb77931acec6202f2
- expression: 'avg(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik FiberBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik FiberBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 89422cbc4e294e5392352b3daa42a27b
- expression: 'max(/MikroTik FiberBox SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik FiberBox by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1f5dbc7e06fb4a48a516f21095ad95eb
- expression: 'max(/MikroTik FiberBox SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik FiberBox by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 13229b29783c42119d9242d4e2d795ef
- expression: 'max(/MikroTik FiberBox SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik FiberBox by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: acdd956a5d49476a86ced8d9ac561979
- expression: 'max(/MikroTik FiberBox SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik FiberBox by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 8dccf29262d64d02aa9ec070a113e9c5
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a6f2bfc1407f4b96ac51aa7ec69b234d
- expression: 'last(/MikroTik FiberBox SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik FiberBox by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1dec7dd2894f4296963217dc13c78abe
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 9d517af24f104293b6ca6b2b8de70d3b
expression: |
- change(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik FiberBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik FiberBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: a95105e0711543388452fdb960bd2caf
expression: |
- (avg(/MikroTik FiberBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik FiberBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik FiberBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik FiberBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik FiberBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik FiberBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik FiberBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik FiberBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik FiberBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 1881f3af98ec450cb15b88ac749bacf6
expression: |
- min(/MikroTik FiberBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik FiberBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik FiberBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik FiberBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik FiberBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik FiberBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik FiberBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik FiberBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik FiberBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik FiberBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 4f9aab06d404429095f58719a45169df
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: d48fafd1402e4774a5e7c2d854e3ebbc
expression: |
- last(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik FiberBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik FiberBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 802aa708fd8e42fdaa61d1aa3394c58b
expression: |
- last(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik FiberBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik FiberBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik FiberBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik FiberBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik FiberBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik FiberBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 63045c3ca20d4cd390b1247dfd3876c4
- expression: '(last(/MikroTik FiberBox SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik FiberBox SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik FiberBox SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik FiberBox SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik FiberBox by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik FiberBox by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik FiberBox by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik FiberBox by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik FiberBox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik FiberBox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik FiberBox SNMP'
+ host: 'MikroTik FiberBox by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/README.md b/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/README.md
index 391e8fa9671..44a443d4fae 100644
--- a/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik PowerBox Pro SNMP
+# MikroTik PowerBox Pro by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik PowerBox Pro.
Five Gigabit Ethernet Router with 4xPoE-out ports, SFP cage and outdoor enclosure
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik PowerBox Pro SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik PowerBox Pro SNMP/system.name,#1)<>last(/MikroTik PowerBox Pro SNMP/system.name,#2) and length(last(/MikroTik PowerBox Pro SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik PowerBox Pro SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox Pro SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox Pro SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik PowerBox Pro SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox Pro SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox Pro SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik PowerBox Pro SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox Pro SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox Pro SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik PowerBox Pro SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik PowerBox Pro SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik PowerBox Pro SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik PowerBox Pro SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik PowerBox Pro SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik PowerBox Pro SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik PowerBox Pro SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik PowerBox Pro SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik PowerBox Pro SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox Pro SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox Pro SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox Pro SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik PowerBox Pro SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik PowerBox Pro SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik PowerBox Pro SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox Pro SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik PowerBox Pro SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox Pro SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox Pro SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik PowerBox Pro SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik PowerBox Pro SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik PowerBox Pro SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik PowerBox Pro SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik PowerBox Pro SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik PowerBox Pro by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik PowerBox Pro by SNMP/system.name,#1)<>last(/MikroTik PowerBox Pro by SNMP/system.name,#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik PowerBox Pro by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox Pro by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik PowerBox Pro by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox Pro by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik PowerBox Pro by SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox Pro by SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik PowerBox Pro by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik PowerBox Pro by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik PowerBox Pro by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik PowerBox Pro by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik PowerBox Pro by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik PowerBox Pro by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik PowerBox Pro by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik PowerBox Pro by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik PowerBox Pro by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox Pro by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox Pro by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox Pro by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik PowerBox Pro by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik PowerBox Pro by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik PowerBox Pro by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox Pro by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik PowerBox Pro by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox Pro by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox Pro by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik PowerBox Pro by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik PowerBox Pro by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik PowerBox Pro by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik PowerBox Pro by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik PowerBox Pro by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/template_net_mikrotik_PowerBox_Pro_snmp.yaml b/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/template_net_mikrotik_PowerBox_Pro_snmp.yaml
index e57ab8f64d4..19a2d25f855 100644
--- a/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/template_net_mikrotik_PowerBox_Pro_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_PowerBox_Pro_snmp/template_net_mikrotik_PowerBox_Pro_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:34Z'
+ date: '2022-10-27T14:41:59Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: c03e1ab0128a4ae1847bc04a34f5634e
- template: 'MikroTik PowerBox Pro SNMP'
- name: 'MikroTik PowerBox Pro SNMP'
+ template: 'MikroTik PowerBox Pro by SNMP'
+ name: 'MikroTik PowerBox Pro by SNMP'
description: |
The template for monitoring Ethernet router MikroTik PowerBox Pro.
Five Gigabit Ethernet Router with 4xPoE-out ports, SFP cage and outdoor enclosure
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: a3fbb030723c45208c51c923ca11fe1c
- expression: 'max(/MikroTik PowerBox Pro SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 6e46f7a198bb4cbcb4555e80a4ce7045
- expression: 'min(/MikroTik PowerBox Pro SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox Pro SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik PowerBox Pro by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox Pro by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik PowerBox Pro SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 1ac1be3472d04dddaadfa68228997594
- expression: 'avg(/MikroTik PowerBox Pro SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik PowerBox Pro SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox Pro SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik PowerBox Pro by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox Pro by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik PowerBox Pro SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: fe286c10b77a4178b53136d088c09977
- expression: 'last(/MikroTik PowerBox Pro SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox Pro SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox Pro SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik PowerBox Pro by SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox Pro by SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: b84f0bcdae4a4ef7887877b7f054ca3c
- expression: 'last(/MikroTik PowerBox Pro SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox Pro SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox Pro SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik PowerBox Pro by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox Pro by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 39c5e6d11d4c4866adac2a145a18dfb7
- expression: 'last(/MikroTik PowerBox Pro SNMP/system.name,#1)<>last(/MikroTik PowerBox Pro SNMP/system.name,#2) and length(last(/MikroTik PowerBox Pro SNMP/system.name))>0'
+ expression: 'last(/MikroTik PowerBox Pro by SNMP/system.name,#1)<>last(/MikroTik PowerBox Pro by SNMP/system.name,#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 8d2847030c154c958ae3cc72841f7b73
- expression: 'last(/MikroTik PowerBox Pro SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox Pro SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox Pro SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik PowerBox Pro by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox Pro by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik PowerBox Pro SNMP/system.name,#1)<>last(/MikroTik PowerBox Pro SNMP/system.name,#2) and length(last(/MikroTik PowerBox Pro SNMP/system.name))>0'
+ expression: 'last(/MikroTik PowerBox Pro by SNMP/system.name,#1)<>last(/MikroTik PowerBox Pro by SNMP/system.name,#2) and length(last(/MikroTik PowerBox Pro by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 4e4df5360a9b40b5a4f6d1aa706d23d7
- expression: 'min(/MikroTik PowerBox Pro SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik PowerBox Pro by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 67cd4c3273394776a7e7497ec8c1a091
- expression: 'max(/MikroTik PowerBox Pro SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik PowerBox Pro SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4d838f76e7d14c73a89a6a8cab585e77
- expression: 'min(/MikroTik PowerBox Pro SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik PowerBox Pro by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 19ae76cf5af647a4ab5e3dd32f9e4509
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 70bcead0c721429ea2140eb12e32e5a9
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 04687ea5280b4448844b17afa9c655c6
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 62fd1bbcbe9e4db7851ad08b75d9f54f
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9d035691d2344fa0bd64e6724828626e
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 869eb891b56e4d499586a9e40fdb5f95
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 5d18aa2f47154e999e9077f3cb06e3ed
- expression: 'avg(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik PowerBox Pro SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik PowerBox Pro by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bca448bbec634737adbc1935bfb96395
- expression: 'max(/MikroTik PowerBox Pro SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d7894ea315a24f42936eb44d85f60a8a
- expression: 'max(/MikroTik PowerBox Pro SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fb73c03756734684b5b1078de2d485ab
- expression: 'max(/MikroTik PowerBox Pro SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c0bc438b1ee248109e3471d6af153c14
- expression: 'max(/MikroTik PowerBox Pro SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 132311b3514a496b9668605a9b37e22a
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 91ea1c2de293413c9b24932282a673ee
- expression: 'last(/MikroTik PowerBox Pro SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik PowerBox Pro by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e2c87fe418e342699ac14d1f9755258c
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 2a68840307594164a2ca408decd6dba5
expression: |
- change(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik PowerBox Pro SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik PowerBox Pro by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: fe4d3130c3284b46b649a92b019a712b
expression: |
- (avg(/MikroTik PowerBox Pro SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik PowerBox Pro SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik PowerBox Pro by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik PowerBox Pro by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik PowerBox Pro SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik PowerBox Pro SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik PowerBox Pro by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik PowerBox Pro by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox Pro by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 22d8b44c4e6d467298c3528d98b02e1d
expression: |
- min(/MikroTik PowerBox Pro SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik PowerBox Pro SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik PowerBox Pro by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik PowerBox Pro by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik PowerBox Pro SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik PowerBox Pro SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik PowerBox Pro by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik PowerBox Pro by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik PowerBox Pro SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik PowerBox Pro by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 708837461f69453cac8eeddac2ed95ff
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 21b45f8f32344ed9a2323ef940fdb564
expression: |
- last(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik PowerBox Pro SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik PowerBox Pro by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 13db9f1c26754199937d4447976591ce
expression: |
- last(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik PowerBox Pro SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik PowerBox Pro by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik PowerBox Pro SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik PowerBox Pro by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox Pro by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox Pro by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: b3004ef6450848c8bb55e7c802c2bd96
- expression: '(last(/MikroTik PowerBox Pro SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox Pro SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox Pro SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox Pro SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik PowerBox Pro by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox Pro by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox Pro by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox Pro by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik PowerBox Pro SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik PowerBox Pro by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik PowerBox Pro SNMP'
+ host: 'MikroTik PowerBox Pro by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_PowerBox_snmp/README.md b/templates/net/mikrotik/mikrotik_PowerBox_snmp/README.md
index a8cb6cfb388..d5821ed3e07 100644
--- a/templates/net/mikrotik/mikrotik_PowerBox_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_PowerBox_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik PowerBox SNMP
+# MikroTik PowerBox by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik PowerBox.
650MHz CPU, 64MB RAM, 5xEthernet with PoE output for four ports, RouterOS L4, outdoor case, PSU
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik PowerBox SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik PowerBox SNMP/system.name,#1)<>last(/MikroTik PowerBox SNMP/system.name,#2) and length(last(/MikroTik PowerBox SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik PowerBox SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik PowerBox SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik PowerBox SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik PowerBox SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik PowerBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik PowerBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik PowerBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik PowerBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik PowerBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik PowerBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik PowerBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik PowerBox SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik PowerBox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik PowerBox SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik PowerBox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik PowerBox SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik PowerBox SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik PowerBox SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik PowerBox SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik PowerBox SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik PowerBox SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik PowerBox by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik PowerBox by SNMP/system.name,#1)<>last(/MikroTik PowerBox by SNMP/system.name,#2) and length(last(/MikroTik PowerBox by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik PowerBox by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik PowerBox by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik PowerBox by SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox by SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik PowerBox by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik PowerBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik PowerBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik PowerBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik PowerBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik PowerBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik PowerBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik PowerBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik PowerBox by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik PowerBox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik PowerBox by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik PowerBox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik PowerBox by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik PowerBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik PowerBox by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik PowerBox by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik PowerBox by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik PowerBox by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik PowerBox by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_PowerBox_snmp/template_net_mikrotik_PowerBox_snmp.yaml b/templates/net/mikrotik/mikrotik_PowerBox_snmp/template_net_mikrotik_PowerBox_snmp.yaml
index 03c05b19c7a..92aa33e04fa 100644
--- a/templates/net/mikrotik/mikrotik_PowerBox_snmp/template_net_mikrotik_PowerBox_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_PowerBox_snmp/template_net_mikrotik_PowerBox_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:30Z'
+ date: '2022-10-27T14:42:08Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 0c7b3c03a5854f868b56f3ab63e2d3f7
- template: 'MikroTik PowerBox SNMP'
- name: 'MikroTik PowerBox SNMP'
+ template: 'MikroTik PowerBox by SNMP'
+ name: 'MikroTik PowerBox by SNMP'
description: |
The template for monitoring Ethernet router MikroTik PowerBox.
650MHz CPU, 64MB RAM, 5xEthernet with PoE output for four ports, RouterOS L4, outdoor case, PSU
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: b1a43fa0251248fa897994575b8a27ac
- expression: 'max(/MikroTik PowerBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 740b195a7246457ea28635c4b8ef0f83
- expression: 'min(/MikroTik PowerBox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik PowerBox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik PowerBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: d85b8d94139d44c69349898d2149e7bd
- expression: 'avg(/MikroTik PowerBox SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik PowerBox by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik PowerBox SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik PowerBox by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik PowerBox by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik PowerBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 2deae9223199442b895df43cb2b0904c
- expression: 'last(/MikroTik PowerBox SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik PowerBox by SNMP/system.hw.firmware,#1)<>last(/MikroTik PowerBox by SNMP/system.hw.firmware,#2) and length(last(/MikroTik PowerBox by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: ae8533bd4fa84d8f8e8969498d5530ed
- expression: 'last(/MikroTik PowerBox SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik PowerBox by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik PowerBox by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik PowerBox by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 90a6f09f02ba4a36b019c6624ad13812
- expression: 'last(/MikroTik PowerBox SNMP/system.name,#1)<>last(/MikroTik PowerBox SNMP/system.name,#2) and length(last(/MikroTik PowerBox SNMP/system.name))>0'
+ expression: 'last(/MikroTik PowerBox by SNMP/system.name,#1)<>last(/MikroTik PowerBox by SNMP/system.name,#2) and length(last(/MikroTik PowerBox by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: b0b935a8197e4188962b7d859d2b412b
- expression: 'last(/MikroTik PowerBox SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik PowerBox by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik PowerBox by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik PowerBox by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik PowerBox SNMP/system.name,#1)<>last(/MikroTik PowerBox SNMP/system.name,#2) and length(last(/MikroTik PowerBox SNMP/system.name))>0'
+ expression: 'last(/MikroTik PowerBox by SNMP/system.name,#1)<>last(/MikroTik PowerBox by SNMP/system.name,#2) and length(last(/MikroTik PowerBox by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: f9d7f4390619408eb5a20baa5e4ebbfe
- expression: 'min(/MikroTik PowerBox SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik PowerBox by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 36ee677a31184b738cd02b91aee5ff78
- expression: 'max(/MikroTik PowerBox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik PowerBox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik PowerBox SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik PowerBox by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: acf19a5a27674b8db8b4913257534506
- expression: 'min(/MikroTik PowerBox SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik PowerBox by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 2376b53a6f4045fcacbd6d6c0d78d0bc
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 93deb16896994ddf8509332b293f078a
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: bbe383abfe5a48ad8a0b4a9c943cfd11
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 915d9a838c0945d0bad74aa2fb79da79
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9b3e19c885d34128b47b87d071d959f1
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 921ad5dc74e44e139a523ef11dd2743e
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 0501798bf83342c5ac1f960649163a58
- expression: 'avg(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik PowerBox SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik PowerBox by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c5709dbe38eb40e1ae8ae0cc564543b4
- expression: 'max(/MikroTik PowerBox SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 96e644aa6f2c4399853ab05a7ada5afa
- expression: 'max(/MikroTik PowerBox SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d4e38db917ca40da8ebd3da22442696e
- expression: 'max(/MikroTik PowerBox SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5837ae05e1694017ad026d215af06683
- expression: 'max(/MikroTik PowerBox SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik PowerBox by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: ce069decd92a49b1b9e119214db8b454
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 722a78d3b55d4a66be1dba0b705704d8
- expression: 'last(/MikroTik PowerBox SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik PowerBox by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 018a5f1c3af44b64a6d31e095fce0dfc
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 6ca7d0731b294e1081e95cb6cf2a122d
expression: |
- change(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik PowerBox SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik PowerBox by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 4d7141f9e9e34656a89b011b20453494
expression: |
- (avg(/MikroTik PowerBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik PowerBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik PowerBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik PowerBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik PowerBox SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik PowerBox SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik PowerBox by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik PowerBox by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik PowerBox by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 01d85d1674674c7b9fc0fbaf96814160
expression: |
- min(/MikroTik PowerBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik PowerBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik PowerBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik PowerBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik PowerBox SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik PowerBox SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik PowerBox by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik PowerBox by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik PowerBox SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik PowerBox by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 008a264a38134966870cf3834e5843c0
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 3e812901cab94bbc9d5f15e8b70da4a0
expression: |
- last(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik PowerBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik PowerBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: bee86ff10a084f76b4b266aa5e20df22
expression: |
- last(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik PowerBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik PowerBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik PowerBox SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik PowerBox by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik PowerBox by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik PowerBox by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 2d0d281a078546959a644e758ede97d6
- expression: '(last(/MikroTik PowerBox SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik PowerBox by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik PowerBox by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik PowerBox by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik PowerBox by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik PowerBox SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik PowerBox by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik PowerBox SNMP'
+ host: 'MikroTik PowerBox by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/README.md b/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/README.md
index 29a6edc83d5..abfb22fc990 100644
--- a/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB1100AHx4 Dude Edition SNMP
+# MikroTik RB1100AHx4 Dude Edition by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB1100AHx4 Dude Edition.
Powerful 1U rackmount router with 13x Gigabit Ethernet ports, 60GB M.2 drive for Dude database
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB1100AHx4 Dude Edition SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB1100AHx4 Dude Edition SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB1100AHx4 Dude Edition SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB1100AHx4 Dude Edition SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB1100AHx4 Dude Edition SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB1100AHx4 Dude Edition by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB1100AHx4 Dude Edition by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/template_net_mikrotik_RB1100AHx4_Dude_Edition_snmp.yaml b/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/template_net_mikrotik_RB1100AHx4_Dude_Edition_snmp.yaml
index 4275df6a017..6c1c0bc966c 100644
--- a/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/template_net_mikrotik_RB1100AHx4_Dude_Edition_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB1100AHx4_Dude_Edition_snmp/template_net_mikrotik_RB1100AHx4_Dude_Edition_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:42Z'
+ date: '2022-10-27T14:43:28Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: fac50638cb77468598c29a6a47520c24
- template: 'MikroTik RB1100AHx4 Dude Edition SNMP'
- name: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ template: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
+ name: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB1100AHx4 Dude Edition.
Powerful 1U rackmount router with 13x Gigabit Ethernet ports, 60GB M.2 drive for Dude database
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: c093758529824015be966f41e9e27757
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 05873e7bbc8347f48daf707af0a3a1df
- expression: 'min(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: f0a1435b054f46a3a496ab8c92591d96
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 Dude Edition SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 9f571e3e7d7b4025a62cb4d61684a63f
- expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 6c56d13df5a84f8c81e3b11b5979fe2f
- expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 64b6467c681f43f4954a24d7bc326588
- expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: cbc5e573f7ff4d4186782e18abb18323
- expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 41dc7494d2d04e2e8fd9f31d744cdf94
- expression: 'min(/MikroTik RB1100AHx4 Dude Edition SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB1100AHx4 Dude Edition by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 289a3d4d39e14627bb26817d21221c05
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 40af64475bf54290b74ac2ed6f3183f2
- expression: 'min(/MikroTik RB1100AHx4 Dude Edition SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 3bcc104afb9a4ca29c0fe55a88484b08
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a1116b45b6e341dabc44b226c4741f97
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 7b61f191e2634044a81981627fb52483
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: c62859952edc45fd8c09a267e6badab9
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9980a1f6561c4b16935e204dfdf67c65
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: c0be5c2bae7f45e780addd984a3f77c4
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: ee368004b1f24293b8162d78b456a6d0
- expression: 'avg(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB1100AHx4 Dude Edition SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB1100AHx4 Dude Edition by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6b1a507739c940ffb528a41d5af76069
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0b2b0b8cdf964cc48d7ece2be62d115e
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4d271b81500f4513a1408dfa8f0e1e29
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8875480665294938bee208b23d416d34
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 9dab50003a824e0faddea18cf89e88b2
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c529624e4a254ecba9659fc9d43f9df4
- expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 789cf81a742c41dfa356b253b01faeca
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: bf2dcee19ae44de98fed1b9f41d80ea9
expression: |
- change(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 92470dac23d7480f817f1d903e6ba869
expression: |
- (avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 7ab169c391b142afa4fd1441d1cb7595
expression: |
- min(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 Dude Edition by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 8a9272779331436896db3a69fac40bb7
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 47a1f1bee8f64507900f48de26bba052
expression: |
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 419bd5a8f90d4e879be3707a3ad3f551
expression: |
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 Dude Edition by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 81a1b9e9630c4b28b035da3b9fa7e6d7
- expression: '(last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 Dude Edition SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 Dude Edition by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB1100AHx4 Dude Edition SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB1100AHx4 Dude Edition by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 Dude Edition SNMP'
+ host: 'MikroTik RB1100AHx4 Dude Edition by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/README.md b/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/README.md
index e125f06c952..a9d19b15029 100644
--- a/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB1100AHx4 SNMP
+# MikroTik RB1100AHx4 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB1100AHx4.
Powerful 1U rackmount router with 13x Gigabit Ethernet ports
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB1100AHx4 SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB1100AHx4 SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB1100AHx4 SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB1100AHx4 SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB1100AHx4 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB1100AHx4 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB1100AHx4 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB1100AHx4 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB1100AHx4 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB1100AHx4 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB1100AHx4 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB1100AHx4 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB1100AHx4 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB1100AHx4 SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB1100AHx4 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB1100AHx4 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB1100AHx4 SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB1100AHx4 SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB1100AHx4 SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB1100AHx4 SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB1100AHx4 SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB1100AHx4 by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB1100AHx4 by SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB1100AHx4 by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB1100AHx4 by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB1100AHx4 by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB1100AHx4 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB1100AHx4 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB1100AHx4 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB1100AHx4 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB1100AHx4 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB1100AHx4 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB1100AHx4 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB1100AHx4 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB1100AHx4 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB1100AHx4 by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB1100AHx4 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB1100AHx4 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB1100AHx4 by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB1100AHx4 by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB1100AHx4 by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB1100AHx4 by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB1100AHx4 by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/template_net_mikrotik_RB1100AHx4_snmp.yaml b/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/template_net_mikrotik_RB1100AHx4_snmp.yaml
index c8168992065..8dcf78905db 100644
--- a/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/template_net_mikrotik_RB1100AHx4_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB1100AHx4_snmp/template_net_mikrotik_RB1100AHx4_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:38Z'
+ date: '2022-10-27T14:42:57Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 3dfd1a55987848e5aa6ffe92c228f63b
- template: 'MikroTik RB1100AHx4 SNMP'
- name: 'MikroTik RB1100AHx4 SNMP'
+ template: 'MikroTik RB1100AHx4 by SNMP'
+ name: 'MikroTik RB1100AHx4 by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB1100AHx4.
Powerful 1U rackmount router with 13x Gigabit Ethernet ports
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 169edfa3b9c94c61899cc540a5f4bd5c
- expression: 'max(/MikroTik RB1100AHx4 SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: cb4bbbd51e854ac5b6877b85fd7b8bf5
- expression: 'min(/MikroTik RB1100AHx4 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB1100AHx4 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB1100AHx4 SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 01e6c7a1fc2243dcabfd5ac1dec841ad
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB1100AHx4 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB1100AHx4 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB1100AHx4 by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB1100AHx4 SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 9c552d88fc734c2d8b9976831396dcc4
- expression: 'last(/MikroTik RB1100AHx4 SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB1100AHx4 by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 59393bfb9a2b4fe9acf09735ab9b6dd7
- expression: 'last(/MikroTik RB1100AHx4 SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB1100AHx4 by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 53e27314562746fb803664ddbd13876f
- expression: 'last(/MikroTik RB1100AHx4 SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB1100AHx4 by SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: d517281567044119bdc82dccb20c9724
- expression: 'last(/MikroTik RB1100AHx4 SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB1100AHx4 by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB1100AHx4 SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB1100AHx4 by SNMP/system.name,#1)<>last(/MikroTik RB1100AHx4 by SNMP/system.name,#2) and length(last(/MikroTik RB1100AHx4 by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: ce1f7003b6dc4ca6a0e435c06aba6e1a
- expression: 'min(/MikroTik RB1100AHx4 SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB1100AHx4 by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: a462a1b6a16e4636aa3a70bbed7cc1cd
- expression: 'max(/MikroTik RB1100AHx4 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB1100AHx4 SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8ab046f6fb47499ebe6d34ad8ce20f59
- expression: 'min(/MikroTik RB1100AHx4 SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB1100AHx4 by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 978810fe8ed54f719c1b3816f539d0c9
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 75e1b534632a42d08535fc863c280536
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 117c3a91044a4d6da15b235017caf99f
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: b20c703b353f444bb6d77d45433108fe
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f63a8665f1bb4fce930c8e6d68ca9bc4
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 61ef8b6e39fa4dfa9ad0398acab924a9
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 92626f1037574adf9e25e175b6e5781b
- expression: 'avg(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB1100AHx4 SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB1100AHx4 by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3a29ebeb278444eb9940c6840b2e0a4e
- expression: 'max(/MikroTik RB1100AHx4 SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4c0dfdccda7a4a0a9b889b4a643d02e4
- expression: 'max(/MikroTik RB1100AHx4 SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 858fcf334125405aaed104a0f50d4097
- expression: 'max(/MikroTik RB1100AHx4 SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d6e6ca097afd4c1fa12e1c67f9a575db
- expression: 'max(/MikroTik RB1100AHx4 SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: cd991f115dfa4aed82ca363bea78c951
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f0f924ded1064d70964e5669eb1e3a62
- expression: 'last(/MikroTik RB1100AHx4 SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB1100AHx4 by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b41b12e1ed5148cbbd97a0bcf838ef44
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 4558a208b2ef4376a1f33db1383c62b6
expression: |
- change(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB1100AHx4 SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB1100AHx4 by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 13c5c29276ae4d2293dd3a178131608e
expression: |
- (avg(/MikroTik RB1100AHx4 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB1100AHx4 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB1100AHx4 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB1100AHx4 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB1100AHx4 SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB1100AHx4 SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB1100AHx4 by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB1100AHx4 by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB1100AHx4 by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: e22b4649dbd94b3982636622b92212a8
expression: |
- min(/MikroTik RB1100AHx4 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB1100AHx4 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB1100AHx4 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB1100AHx4 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB1100AHx4 SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB1100AHx4 SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB1100AHx4 by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB1100AHx4 by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB1100AHx4 SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB1100AHx4 by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 731d669f787c45609df243f28ba610a3
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: e665c0343ae140d08b8ae96b6c28f4d4
expression: |
- last(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB1100AHx4 SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: c685347700044a78a38e4e892d3dfec4
expression: |
- last(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB1100AHx4 SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB1100AHx4 SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB1100AHx4 by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB1100AHx4 by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: f71809adab344e60a2f6260548359167
- expression: '(last(/MikroTik RB1100AHx4 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB1100AHx4 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB1100AHx4 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB1100AHx4 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB1100AHx4 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB1100AHx4 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB1100AHx4 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB1100AHx4 SNMP'
+ host: 'MikroTik RB1100AHx4 by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/README.md b/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/README.md
index 625bd1201f6..9d7c723a255 100644
--- a/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB2011UiAS-IN SNMP
+# MikroTik RB2011UiAS-IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB2011UiAS-IN.
Desktop metal case, 5xEthernet, 5xGigabit Ethernet, USB, LCD, PoE out on port 10, 600MHz CPU, 128MB RAM, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011UiAS-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011UiAS-IN SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011UiAS-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011UiAS-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011UiAS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011UiAS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011UiAS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011UiAS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011UiAS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011UiAS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011UiAS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011UiAS-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-IN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011UiAS-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011UiAS-IN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011UiAS-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-IN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011UiAS-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011UiAS-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011UiAS-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011UiAS-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011UiAS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011UiAS-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011UiAS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011UiAS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011UiAS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011UiAS-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011UiAS-IN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011UiAS-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-IN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011UiAS-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011UiAS-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/template_net_mikrotik_RB2011UiAS-IN_snmp.yaml b/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/template_net_mikrotik_RB2011UiAS-IN_snmp.yaml
index 5f08ab58b15..4f3be7fa8dc 100644
--- a/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/template_net_mikrotik_RB2011UiAS-IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB2011UiAS-IN_snmp/template_net_mikrotik_RB2011UiAS-IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:57Z'
+ date: '2022-10-27T14:42:05Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 8cf537f34600403b9de31d3db4eb2a1d
- template: 'MikroTik RB2011UiAS-IN SNMP'
- name: 'MikroTik RB2011UiAS-IN SNMP'
+ template: 'MikroTik RB2011UiAS-IN by SNMP'
+ name: 'MikroTik RB2011UiAS-IN by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB2011UiAS-IN.
Desktop metal case, 5xEthernet, 5xGigabit Ethernet, USB, LCD, PoE out on port 10, 600MHz CPU, 128MB RAM, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: f38f2bf1b3954e87afaae1b24f051705
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 2384103bcdef45e48026fbb913a09e41
- expression: 'min(/MikroTik RB2011UiAS-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011UiAS-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-IN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 492c760974924a489adf628a78facf20
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB2011UiAS-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011UiAS-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-IN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 84b149555c7a4ba896260eef821e65e4
- expression: 'last(/MikroTik RB2011UiAS-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 5444e9d45fd5482b9913f33a0e46afac
- expression: 'last(/MikroTik RB2011UiAS-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 2783c5306701462290c245ff68ce0804
- expression: 'last(/MikroTik RB2011UiAS-IN SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 7297756962334a7e92bec8fba24cc346
- expression: 'last(/MikroTik RB2011UiAS-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB2011UiAS-IN SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-IN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 3f856c135f7a4124b606a368ddbaea70
- expression: 'min(/MikroTik RB2011UiAS-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB2011UiAS-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 8a6f02ead39b4b42be807585266c1fec
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 660252e504e242f39a8116ef95593088
- expression: 'min(/MikroTik RB2011UiAS-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB2011UiAS-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 9274cb0e9be74c7fa259dd5575fb3c96
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8c905104ec08406bbb9eef074386d533
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: b78a65cb7a81475390b652bb998bad77
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: d86c54c62fcd456aa879a23aa539fdc7
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0ce7d965b0ce4e259dad9ef1c964cf75
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: e6e1ac1371c8479a8c9b30513f10c57b
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 5f04a5beb30c4fc48c3553f41631ec8e
- expression: 'avg(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011UiAS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB2011UiAS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9e5b175a657040acb532677e5e3efd4e
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3e5f0494aec9433ab7d7637fab2095f2
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 52cfc831296f4ebbb9bb9d66a164c129
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 22da96573bbd471785f694bbdbca7cd1
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: e3027e0691a94961bd3955fdaeb10344
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c5d53608ecb34d68a3d1ffbe5807dabb
- expression: 'last(/MikroTik RB2011UiAS-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5ca938e575294b8283154e162968d00d
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 246b22c8fee74df3af90178f1015eabd
expression: |
- change(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB2011UiAS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB2011UiAS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 80a39aa88bc14897ad94816f088fee1d
expression: |
- (avg(/MikroTik RB2011UiAS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB2011UiAS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB2011UiAS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB2011UiAS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB2011UiAS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 5f15f82f958040f59ad31151a464d023
expression: |
- min(/MikroTik RB2011UiAS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB2011UiAS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB2011UiAS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB2011UiAS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB2011UiAS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB2011UiAS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB2011UiAS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB2011UiAS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011UiAS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 18663281a59f4b2190affab16310ce72
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 388504f73df94d21bea32bdbda0fadb7
expression: |
- last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: ef0ef8ddead24672adf8e65eed13f60f
expression: |
- last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: f96b1dcd1cf84538a0d7729c5e4c683b
- expression: '(last(/MikroTik RB2011UiAS-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-IN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB2011UiAS-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011UiAS-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-IN SNMP'
+ host: 'MikroTik RB2011UiAS-IN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/README.md b/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/README.md
index f093d23c345..9dd2ca5f40c 100644
--- a/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB2011UiAS-RM SNMP
+# MikroTik RB2011UiAS-RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB2011UiAS-RM.
1U rackmount, 5xEthernet, 5xGigabit Ethernet, USB, LCD, PoE out on port 10, 600MHz CPU, 128MB RAM, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011UiAS-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011UiAS-RM SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011UiAS-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-RM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011UiAS-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011UiAS-RM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011UiAS-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-RM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011UiAS-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011UiAS-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011UiAS-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011UiAS-RM by SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011UiAS-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011UiAS-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011UiAS-RM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011UiAS-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-RM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011UiAS-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011UiAS-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/template_net_mikrotik_RB2011UiAS-RM_snmp.yaml b/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/template_net_mikrotik_RB2011UiAS-RM_snmp.yaml
index bd29aaade79..b8c83b0b731 100644
--- a/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/template_net_mikrotik_RB2011UiAS-RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB2011UiAS-RM_snmp/template_net_mikrotik_RB2011UiAS-RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:14:01Z'
+ date: '2022-10-27T14:43:48Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 969cf5dca58f47f0b271ccf62ef79c13
- template: 'MikroTik RB2011UiAS-RM SNMP'
- name: 'MikroTik RB2011UiAS-RM SNMP'
+ template: 'MikroTik RB2011UiAS-RM by SNMP'
+ name: 'MikroTik RB2011UiAS-RM by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB2011UiAS-RM.
1U rackmount, 5xEthernet, 5xGigabit Ethernet, USB, LCD, PoE out on port 10, 600MHz CPU, 128MB RAM, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: ec9cc9ca00754d17a9ee8ff38e4aca2f
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 1377c7e423284ac487afdeac6252f1e7
- expression: 'min(/MikroTik RB2011UiAS-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011UiAS-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-RM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 143e8c34dc344611ace63e6bcfbfa556
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB2011UiAS-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011UiAS-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011UiAS-RM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: e0f5e6575df14242a14813cf95f763d2
- expression: 'last(/MikroTik RB2011UiAS-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 09d6eff5d5e24ba9801d29a594913c5e
- expression: 'last(/MikroTik RB2011UiAS-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: ecfbc704498740ee89afbffd1a2db22d
- expression: 'last(/MikroTik RB2011UiAS-RM SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 2cfe859d44ee4088b3a62f832391091f
- expression: 'last(/MikroTik RB2011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB2011UiAS-RM SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-RM SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/system.name,#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/system.name,#2) and length(last(/MikroTik RB2011UiAS-RM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: f32f4750dd6f469d84560e0a27dad550
- expression: 'min(/MikroTik RB2011UiAS-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB2011UiAS-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 7d47b1df3a984db891811b14832ba2ee
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 544c2e61e9b0434e962823246974ede8
- expression: 'min(/MikroTik RB2011UiAS-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB2011UiAS-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 3872a0f5d79e4e8a97af4e82d1221407
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1dc430575d5546c188615191fdc50ae7
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 04ef546dd200411d84f167a5e1ffd8ce
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: f24798b46eea407cb2bd9e38068e68d9
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 81e424e84231418d888ca1a9126c29fa
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 53bc0055eacf4e9d931498e89811e86e
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 9635cda9637b4216adb68675640639c2
- expression: 'avg(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB2011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bd8b0cbb30b144bc82b91f508de543e1
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b2c222622bd8405a8f3f8138969e4d00
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3fe7fc4d601143a58ebd8affe7ee78a5
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c70991ad8d2b460bb2b4860b16ba45b4
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: b3809e90799748f5ba6f8215b17c80df
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 555d5c8083fe42f09096097e1bb87499
- expression: 'last(/MikroTik RB2011UiAS-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e3a3b7bdfec649dab8e51cf2ba9685d6
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 48212db512234a48863444e08dd6ac8d
expression: |
- change(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB2011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB2011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: d658285fc06f498dbdb4ff3e02fdbb9c
expression: |
- (avg(/MikroTik RB2011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB2011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB2011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB2011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB2011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 49fc7dbdc2294a92a52a30125d4f12a5
expression: |
- min(/MikroTik RB2011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB2011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB2011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB2011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB2011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB2011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB2011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB2011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 6c508160b0494f7da7b44c6952db5042
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 728a9e55d14b4b859caf170cc910879e
expression: |
- last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 12ffbe36a2e14c139f5d662ea509912d
expression: |
- last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: e2afe16e11e14b80aa4a228eb9182f6a
- expression: '(last(/MikroTik RB2011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-RM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011UiAS-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB2011UiAS-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011UiAS-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011UiAS-RM SNMP'
+ host: 'MikroTik RB2011UiAS-RM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/README.md b/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/README.md
index fb2a6a97b4e..f89939bcb14 100644
--- a/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB2011iL-IN SNMP
+# MikroTik RB2011iL-IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB2011iL-IN.
Desktop metal case, 5xEthernet, 5xGigabit Ethernet, PoE out on port 10, 600MHz CPU, 64MB RAM, RouterOS L4
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011iL-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011iL-IN SNMP/system.name,#1)<>last(/MikroTik RB2011iL-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011iL-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011iL-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011iL-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011iL-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011iL-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011iL-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011iL-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011iL-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011iL-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011iL-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011iL-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011iL-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-IN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011iL-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011iL-IN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011iL-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-IN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011iL-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011iL-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011iL-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011iL-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011iL-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011iL-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011iL-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011iL-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011iL-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011iL-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011iL-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011iL-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011iL-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011iL-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011iL-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011iL-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011iL-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011iL-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011iL-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011iL-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011iL-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011iL-IN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011iL-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-IN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011iL-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011iL-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011iL-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011iL-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011iL-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011iL-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/template_net_mikrotik_RB2011iL-IN_snmp.yaml b/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/template_net_mikrotik_RB2011iL-IN_snmp.yaml
index f447e0f93c5..db293337ab0 100644
--- a/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/template_net_mikrotik_RB2011iL-IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB2011iL-IN_snmp/template_net_mikrotik_RB2011iL-IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:46Z'
+ date: '2022-10-27T14:43:25Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 141438a05f904b518c7d3ddfbbabf91f
- template: 'MikroTik RB2011iL-IN SNMP'
- name: 'MikroTik RB2011iL-IN SNMP'
+ template: 'MikroTik RB2011iL-IN by SNMP'
+ name: 'MikroTik RB2011iL-IN by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB2011iL-IN.
Desktop metal case, 5xEthernet, 5xGigabit Ethernet, PoE out on port 10, 600MHz CPU, 64MB RAM, RouterOS L4
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 5dea6d7aa1344f27b66dbdce2350e93a
- expression: 'max(/MikroTik RB2011iL-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: a8d51531113a4017b732eb8d7247c777
- expression: 'min(/MikroTik RB2011iL-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011iL-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-IN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iL-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 7acce40acf3a4eb28af79fc6d95bf190
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB2011iL-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011iL-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-IN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iL-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 0bc8753d55d047cd870eb7bd2db7849c
- expression: 'last(/MikroTik RB2011iL-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB2011iL-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 4a87af156bc44861bcd76514d60183f5
- expression: 'last(/MikroTik RB2011iL-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB2011iL-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: e09f00f0ad144e7a96e3abb38e4ab109
- expression: 'last(/MikroTik RB2011iL-IN SNMP/system.name,#1)<>last(/MikroTik RB2011iL-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011iL-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: b5b061ff649547e6b63bdd9dc545c652
- expression: 'last(/MikroTik RB2011iL-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB2011iL-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB2011iL-IN SNMP/system.name,#1)<>last(/MikroTik RB2011iL-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011iL-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011iL-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-IN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 8e0b50b2687a4259ba9b9457c6a2d911
- expression: 'min(/MikroTik RB2011iL-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB2011iL-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 096f1ccc1fd24cffb48720def5297031
- expression: 'max(/MikroTik RB2011iL-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iL-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c90699faebaa41ccb0910a08ca56c014
- expression: 'min(/MikroTik RB2011iL-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB2011iL-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 09873df4de564b1395b88c417a923b11
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 216c4b7093ce4b1688c24031c61b9e53
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 2c1aefbb49d84198b9dc5b633cc510cb
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: e56cea52d6d64a62a02856a74e32601b
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 77015cbdfaf8411ea08a78982b15885c
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: c3a882d877f94cf7965984128c314f99
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 9c97fd1e8cb94e53a8f8d1bd15b94dcf
- expression: 'avg(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011iL-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB2011iL-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 40ec9ac31c784b6f8de50945dff9f414
- expression: 'max(/MikroTik RB2011iL-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e29bb10956c64db1ba0809112449de26
- expression: 'max(/MikroTik RB2011iL-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ae6d45eb89244d67b38408dcaf20424f
- expression: 'max(/MikroTik RB2011iL-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a02267b7d6d4497b98c1c2e465f92796
- expression: 'max(/MikroTik RB2011iL-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 0f19e3b4d64c4ae6acedd0fbd2094942
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 58d63b8b9c404a5382b44e25bf091feb
- expression: 'last(/MikroTik RB2011iL-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB2011iL-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f5085ef8cfde4046a423c59d977258d4
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 24edc4d534254e638458cb08d0fb7492
expression: |
- change(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB2011iL-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB2011iL-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 358f84761e004f48ba31aed484cdc947
expression: |
- (avg(/MikroTik RB2011iL-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB2011iL-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB2011iL-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB2011iL-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB2011iL-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB2011iL-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB2011iL-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB2011iL-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: c14516c2c7f24762af7d6555f9f38158
expression: |
- min(/MikroTik RB2011iL-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB2011iL-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB2011iL-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB2011iL-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB2011iL-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB2011iL-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB2011iL-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB2011iL-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iL-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iL-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 983c946b09b9488690b43ccdaf3969b5
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: a140f5a63cba423c8f59439efd8d501f
expression: |
- last(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iL-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: c3e3d8a9bcac473e8c641f116355ccbb
expression: |
- last(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iL-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iL-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 27e64b9d917d4163b2f66c6f790b5a44
- expression: '(last(/MikroTik RB2011iL-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-IN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB2011iL-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB2011iL-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011iL-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-IN SNMP'
+ host: 'MikroTik RB2011iL-IN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/README.md b/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/README.md
index 96c5dcd6fe3..fb405aafc3a 100644
--- a/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB2011iL-RM SNMP
+# MikroTik RB2011iL-RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB2011iL-RM.
1U rackmount, 5xEthernet, 5xGigabit Ethernet, PoE out on port 10, 600MHz CPU, 64MB RAM, RouterOS L4
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011iL-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011iL-RM SNMP/system.name,#1)<>last(/MikroTik RB2011iL-RM SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011iL-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011iL-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011iL-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011iL-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011iL-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011iL-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011iL-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011iL-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011iL-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011iL-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011iL-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011iL-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-RM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011iL-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011iL-RM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011iL-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-RM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011iL-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011iL-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011iL-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011iL-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011iL-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011iL-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011iL-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011iL-RM by SNMP/system.name,#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011iL-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011iL-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011iL-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011iL-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011iL-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011iL-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011iL-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011iL-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011iL-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011iL-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011iL-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011iL-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011iL-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011iL-RM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011iL-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-RM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011iL-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011iL-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011iL-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011iL-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011iL-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011iL-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/template_net_mikrotik_RB2011iL-RM_snmp.yaml b/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/template_net_mikrotik_RB2011iL-RM_snmp.yaml
index bac34b12b9a..1dda2e984e8 100644
--- a/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/template_net_mikrotik_RB2011iL-RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB2011iL-RM_snmp/template_net_mikrotik_RB2011iL-RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:50Z'
+ date: '2022-10-27T14:42:46Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 6d9737c72e5540d39e3553b773a587b1
- template: 'MikroTik RB2011iL-RM SNMP'
- name: 'MikroTik RB2011iL-RM SNMP'
+ template: 'MikroTik RB2011iL-RM by SNMP'
+ name: 'MikroTik RB2011iL-RM by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB2011iL-RM.
1U rackmount, 5xEthernet, 5xGigabit Ethernet, PoE out on port 10, 600MHz CPU, 64MB RAM, RouterOS L4
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 5ec7bb4a650f4c53a76ec3f89769952d
- expression: 'max(/MikroTik RB2011iL-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 66718f4417324cd7a88de35776b26c64
- expression: 'min(/MikroTik RB2011iL-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011iL-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-RM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iL-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 95b144dfafeb40be96155e0a6e53515e
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB2011iL-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011iL-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iL-RM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iL-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 5924d076b0724fbcaa2090c786b20068
- expression: 'last(/MikroTik RB2011iL-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB2011iL-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 5df5c72272694a7f8a698ddda7b662cb
- expression: 'last(/MikroTik RB2011iL-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB2011iL-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 5d609e8337b94830a52752ef8db4fd75
- expression: 'last(/MikroTik RB2011iL-RM SNMP/system.name,#1)<>last(/MikroTik RB2011iL-RM SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011iL-RM by SNMP/system.name,#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 18fce4771aad421e949e78ec9484a888
- expression: 'last(/MikroTik RB2011iL-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB2011iL-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB2011iL-RM SNMP/system.name,#1)<>last(/MikroTik RB2011iL-RM SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011iL-RM by SNMP/system.name,#1)<>last(/MikroTik RB2011iL-RM by SNMP/system.name,#2) and length(last(/MikroTik RB2011iL-RM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 454c77360eb44d6aacf067327d1aecbe
- expression: 'min(/MikroTik RB2011iL-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB2011iL-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: c36eb285f1a94d29a40afb4bb8e923d4
- expression: 'max(/MikroTik RB2011iL-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iL-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 00f27ff850b046faabdaeeae1b2a2fcd
- expression: 'min(/MikroTik RB2011iL-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB2011iL-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 0f5f2641521c4f4094bfc3d113df6232
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d4d0bf767e7741fc98d9f930ade655f3
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 4299f4f1519a46ed86d4727cefa01c1e
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 3cc5640941bc491e9cc23cc9b467952e
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 420f9002f53646729666658f193c733e
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: af33ef97881a4ab48686aa63676c7a2d
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 8aa51a89c64f4626aa8646f9e1717669
- expression: 'avg(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011iL-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB2011iL-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 32cb8289aea54c4099ee36d58dd31b72
- expression: 'max(/MikroTik RB2011iL-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 32764a33204e41bfb1c5395a52302c27
- expression: 'max(/MikroTik RB2011iL-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: eab70beb20504b1d98be8d7cd82031fa
- expression: 'max(/MikroTik RB2011iL-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c08f7ab1fb374e7db4f4c0525009cd93
- expression: 'max(/MikroTik RB2011iL-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 41277234ea344cb5b42cbb9b4862e1f5
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 04bd0420c7474d90b10045328c5027a0
- expression: 'last(/MikroTik RB2011iL-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB2011iL-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 72ef5c7b0bb74f1fb88085616293169c
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 9f31bde8ab2e4edd8a142cdf0e4274d0
expression: |
- change(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB2011iL-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB2011iL-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 794d401f1b66402cb9309d9acd63321c
expression: |
- (avg(/MikroTik RB2011iL-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB2011iL-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB2011iL-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB2011iL-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB2011iL-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB2011iL-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB2011iL-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB2011iL-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iL-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: df2b99f9fcfc4df195b500cc637fb4d6
expression: |
- min(/MikroTik RB2011iL-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB2011iL-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB2011iL-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB2011iL-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB2011iL-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB2011iL-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB2011iL-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB2011iL-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iL-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iL-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: d1f10311b85e4bf3b2c146cdbf888df2
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: a4a3e86a03684038ba779bac1041eaec
expression: |
- last(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iL-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 7202bab5700444f58d4eabd9433f0efd
expression: |
- last(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iL-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iL-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iL-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iL-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 0dcc036b17de4d00bf7d51b7b6076e3c
- expression: '(last(/MikroTik RB2011iL-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-RM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB2011iL-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iL-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iL-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iL-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB2011iL-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011iL-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iL-RM SNMP'
+ host: 'MikroTik RB2011iL-RM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/README.md b/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/README.md
index 5cc1480c738..966d5e0a58f 100644
--- a/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB2011iLS-IN SNMP
+# MikroTik RB2011iLS-IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB2011iLS-IN.
Desktop metal case, 5xEthernet, 5xGigabit Ethernet, SFP cage, PoE out on port 10, 600MHz CPU, 64MB RAM, RouterOS L4
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011iLS-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011iLS-IN SNMP/system.name,#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011iLS-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011iLS-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011iLS-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011iLS-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011iLS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011iLS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011iLS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011iLS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011iLS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011iLS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011iLS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011iLS-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iLS-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iLS-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iLS-IN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011iLS-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011iLS-IN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011iLS-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iLS-IN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011iLS-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011iLS-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB2011iLS-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB2011iLS-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB2011iLS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB2011iLS-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB2011iLS-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB2011iLS-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB2011iLS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB2011iLS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB2011iLS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB2011iLS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB2011iLS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB2011iLS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB2011iLS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB2011iLS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iLS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iLS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iLS-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB2011iLS-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB2011iLS-IN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB2011iLS-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iLS-IN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB2011iLS-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB2011iLS-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/template_net_mikrotik_RB2011iLS-IN_snmp.yaml b/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/template_net_mikrotik_RB2011iLS-IN_snmp.yaml
index 7ef070c4d57..66ea69bcdbc 100644
--- a/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/template_net_mikrotik_RB2011iLS-IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB2011iLS-IN_snmp/template_net_mikrotik_RB2011iLS-IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:53Z'
+ date: '2022-10-27T14:43:14Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 318fd61c22fa4f1a92a71376814d6c32
- template: 'MikroTik RB2011iLS-IN SNMP'
- name: 'MikroTik RB2011iLS-IN SNMP'
+ template: 'MikroTik RB2011iLS-IN by SNMP'
+ name: 'MikroTik RB2011iLS-IN by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB2011iLS-IN.
Desktop metal case, 5xEthernet, 5xGigabit Ethernet, SFP cage, PoE out on port 10, 600MHz CPU, 64MB RAM, RouterOS L4
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 7257cb86a65547b5901cac08cacee3aa
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: ae82608801a642d9b3ef8ddd06cee7f6
- expression: 'min(/MikroTik RB2011iLS-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iLS-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011iLS-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iLS-IN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: d2f60c5c4a124a549eb02f62874dba8b
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB2011iLS-IN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iLS-IN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB2011iLS-IN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB2011iLS-IN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 2349e4eac44548349cc9f7806f8726db
- expression: 'last(/MikroTik RB2011iLS-IN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB2011iLS-IN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: f43a3aa77c8e4e9f81add08ac624be88
- expression: 'last(/MikroTik RB2011iLS-IN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB2011iLS-IN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: f64be38a3557482087d75ed423ced500
- expression: 'last(/MikroTik RB2011iLS-IN SNMP/system.name,#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011iLS-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 76d4c429deaf491982b7b1049634550a
- expression: 'last(/MikroTik RB2011iLS-IN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB2011iLS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB2011iLS-IN SNMP/system.name,#1)<>last(/MikroTik RB2011iLS-IN SNMP/system.name,#2) and length(last(/MikroTik RB2011iLS-IN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB2011iLS-IN by SNMP/system.name,#1)<>last(/MikroTik RB2011iLS-IN by SNMP/system.name,#2) and length(last(/MikroTik RB2011iLS-IN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: cfca5a71a1534e199e9c3b867b8c6c3b
- expression: 'min(/MikroTik RB2011iLS-IN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB2011iLS-IN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 81af7d744ebf422ba065308fcb3c225a
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1edf137678504b9d8dced37d9a1d3f5a
- expression: 'min(/MikroTik RB2011iLS-IN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB2011iLS-IN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: e738626cc9af4c9ba47f18ede6d6ffa3
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e9ab4a4bc78e47a19409d2bfe4d1d5fa
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 1e81f6308a2748adbed17064d648b566
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 3a679a3d653d42cabed24e238fa01c38
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 88fc1612d1b14108a1d90313fa1cb0e7
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 048ffb5e510746e6b56daec287db6739
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: fcc70d3662ac49499a0f5bb68a13c007
- expression: 'avg(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB2011iLS-IN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB2011iLS-IN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d9acbd875f514ce8a19638125c096aed
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 569c192c940a49f7b180162e4b83be24
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7b31d412d15140d7be66d4b9963150de
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7512216ac6e24d5f88a187621d0d7285
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 65ce926cc8bb4e55859204eb287c640b
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bcb6d9302db14ee3a7dd120304b7a5a5
- expression: 'last(/MikroTik RB2011iLS-IN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB2011iLS-IN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 97aeb18c33b24e29acefa286a52e6815
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 3ea926e679704c50b2a8b72bbdbb7136
expression: |
- change(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB2011iLS-IN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB2011iLS-IN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 544e37fe922d4b6aa28c05becbf6485b
expression: |
- (avg(/MikroTik RB2011iLS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB2011iLS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB2011iLS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB2011iLS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB2011iLS-IN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB2011iLS-IN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB2011iLS-IN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB2011iLS-IN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB2011iLS-IN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 4f224bcc233c4a378d3af6e4b8ad7df9
expression: |
- min(/MikroTik RB2011iLS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB2011iLS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB2011iLS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB2011iLS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB2011iLS-IN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB2011iLS-IN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB2011iLS-IN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB2011iLS-IN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB2011iLS-IN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB2011iLS-IN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 162e5f08fbcc4ad88fdb633731bd942a
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: c3e8a5f013f34395afeffc5eabbe01ac
expression: |
- last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 2199168e964c4bd79ad06de3c1226f1d
expression: |
- last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB2011iLS-IN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 2139aea23b214169a369b4776865f501
- expression: '(last(/MikroTik RB2011iLS-IN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iLS-IN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iLS-IN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iLS-IN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB2011iLS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB2011iLS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB2011iLS-IN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB2011iLS-IN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB2011iLS-IN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB2011iLS-IN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB2011iLS-IN SNMP'
+ host: 'MikroTik RB2011iLS-IN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB260GSP_snmp/README.md b/templates/net/mikrotik/mikrotik_RB260GSP_snmp/README.md
index 8c8ea96cdd1..7aa10a0a7c3 100644
--- a/templates/net/mikrotik/mikrotik_RB260GSP_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB260GSP_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB260GSP SNMP
+# MikroTik RB260GSP by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik RB260GSP.
5x Gigabit PoE out Ethernet Smart Switch, SFP cage, plastic case, SwOS
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB260GSP SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB260GSP SNMP/system.name,#1)<>last(/MikroTik RB260GSP SNMP/system.name,#2) and length(last(/MikroTik RB260GSP SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB260GSP SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GSP SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GSP SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB260GSP SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GSP SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GSP SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB260GSP SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GSP SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GSP SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB260GSP SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB260GSP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB260GSP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB260GSP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB260GSP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB260GSP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB260GSP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB260GSP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB260GSP SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GSP SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GSP SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GSP SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB260GSP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB260GSP SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB260GSP SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GSP SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB260GSP SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GSP SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GSP SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB260GSP SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB260GSP SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB260GSP SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB260GSP SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB260GSP SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB260GSP by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB260GSP by SNMP/system.name,#1)<>last(/MikroTik RB260GSP by SNMP/system.name,#2) and length(last(/MikroTik RB260GSP by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB260GSP by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GSP by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GSP by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB260GSP by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GSP by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GSP by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB260GSP by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GSP by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GSP by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB260GSP by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB260GSP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB260GSP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB260GSP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB260GSP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB260GSP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB260GSP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB260GSP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB260GSP by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GSP by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GSP by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GSP by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB260GSP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB260GSP by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB260GSP by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GSP by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB260GSP by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GSP by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GSP by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB260GSP by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB260GSP by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB260GSP by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB260GSP by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB260GSP by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB260GSP_snmp/template_net_mikrotik_RB260GSP_snmp.yaml b/templates/net/mikrotik/mikrotik_RB260GSP_snmp/template_net_mikrotik_RB260GSP_snmp.yaml
index ee7c16ca73f..3684a646a08 100644
--- a/templates/net/mikrotik/mikrotik_RB260GSP_snmp/template_net_mikrotik_RB260GSP_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB260GSP_snmp/template_net_mikrotik_RB260GSP_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:14:08Z'
+ date: '2022-10-27T14:42:53Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 5331ecc3be9f47d6a8eb0732ae141239
- template: 'MikroTik RB260GSP SNMP'
- name: 'MikroTik RB260GSP SNMP'
+ template: 'MikroTik RB260GSP by SNMP'
+ name: 'MikroTik RB260GSP by SNMP'
description: |
The template for monitoring Switch MikroTik RB260GSP.
5x Gigabit PoE out Ethernet Smart Switch, SFP cage, plastic case, SwOS
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 247cdbc159624b33a4b415d3e048c087
- expression: 'max(/MikroTik RB260GSP SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GSP by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 4d4cde77c8324a88ac0798e2f096be69
- expression: 'min(/MikroTik RB260GSP SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GSP SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB260GSP by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GSP by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB260GSP SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GSP by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 0f9f0ffd9322422babb52a5a5058d97e
- expression: 'avg(/MikroTik RB260GSP SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB260GSP SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GSP SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB260GSP by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GSP by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB260GSP SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GSP by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 1f05ddb5fc1c4d18a5d9f5755b22a080
- expression: 'last(/MikroTik RB260GSP SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GSP SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GSP SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB260GSP by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GSP by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GSP by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 9bc744f5b70748e68b13933b618f9550
- expression: 'last(/MikroTik RB260GSP SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GSP SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GSP SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB260GSP by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GSP by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GSP by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: a5fed81db3c7447c8c62b02974765f57
- expression: 'last(/MikroTik RB260GSP SNMP/system.name,#1)<>last(/MikroTik RB260GSP SNMP/system.name,#2) and length(last(/MikroTik RB260GSP SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB260GSP by SNMP/system.name,#1)<>last(/MikroTik RB260GSP by SNMP/system.name,#2) and length(last(/MikroTik RB260GSP by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 72cedbd4d23948c3941d5b2011f5cdab
- expression: 'last(/MikroTik RB260GSP SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GSP SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GSP SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB260GSP by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GSP by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GSP by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB260GSP SNMP/system.name,#1)<>last(/MikroTik RB260GSP SNMP/system.name,#2) and length(last(/MikroTik RB260GSP SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB260GSP by SNMP/system.name,#1)<>last(/MikroTik RB260GSP by SNMP/system.name,#2) and length(last(/MikroTik RB260GSP by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 971f8265db9348ce942f4e0adb49bd1a
- expression: 'min(/MikroTik RB260GSP SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB260GSP by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: a82f1cafcb424685bb2f562c1c6dce11
- expression: 'max(/MikroTik RB260GSP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB260GSP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB260GSP SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GSP by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 636401049a4e46c48e7b89e2b0c8c72b
- expression: 'min(/MikroTik RB260GSP SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB260GSP by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 6ccb140a18804e2a955f89063f3d1fba
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: fac1eacc650b485faa1f05207a865ed6
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: c604329ca3374ed5b29339c10070b9de
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 37927a5941e245d9bce883ce155fefdf
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4f2a304aba6e45c7a0186d8b069be904
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 7ab0db29abff475d908e9db2e86ee16a
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: ae7e34f53a3d407d86484baffad515fe
- expression: 'avg(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB260GSP SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB260GSP by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a7d31dad39524586ad9cca3c52ab0802
- expression: 'max(/MikroTik RB260GSP SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GSP by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: abae11ffeea140debcd8f32c34f10f31
- expression: 'max(/MikroTik RB260GSP SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GSP by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f7804db0113d42a49322193872ddc616
- expression: 'max(/MikroTik RB260GSP SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GSP by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 73f6c8071582400b952f945388a181c2
- expression: 'max(/MikroTik RB260GSP SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GSP by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 5d0bb62dda9747f4bf10059b0b318088
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e159cf84958443ec9d148c3e83cf8e41
- expression: 'last(/MikroTik RB260GSP SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB260GSP by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f0d3817bc7f243c591078b806f3ae712
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 6e11e178d1e2418fa94bd2718a6eccaf
expression: |
- change(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB260GSP SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB260GSP by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 54be09c46d2e4c6694fbd4eef4f4e055
expression: |
- (avg(/MikroTik RB260GSP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB260GSP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB260GSP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB260GSP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB260GSP SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB260GSP SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB260GSP by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB260GSP by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GSP by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 3c122a7c5e6348f28f8c04391f73f14b
expression: |
- min(/MikroTik RB260GSP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB260GSP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB260GSP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB260GSP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB260GSP SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB260GSP SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB260GSP by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB260GSP by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB260GSP SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB260GSP by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 16ccb0c6d72f49e991f2034b06e7ad26
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: c8c7b25b435e4157a22c8f4d6fce9ea5
expression: |
- last(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB260GSP SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB260GSP by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: e63fb086de874cfe86e0d03d2d57f157
expression: |
- last(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB260GSP SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB260GSP by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB260GSP SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB260GSP by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GSP by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GSP by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: a3c432e1d04448d3940f69f8d9633c8f
- expression: '(last(/MikroTik RB260GSP SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GSP SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GSP SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GSP SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB260GSP by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GSP by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GSP by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GSP by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB260GSP SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB260GSP by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB260GSP SNMP'
+ host: 'MikroTik RB260GSP by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB260GS_snmp/README.md b/templates/net/mikrotik/mikrotik_RB260GS_snmp/README.md
index b6a19dd0061..3b6209c89bc 100644
--- a/templates/net/mikrotik/mikrotik_RB260GS_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB260GS_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB260GS SNMP
+# MikroTik RB260GS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik RB260GS.
5x Gigabit Ethernet Smart Switch, SFP cage, plastic case, SwOS
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB260GS SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB260GS SNMP/system.name,#1)<>last(/MikroTik RB260GS SNMP/system.name,#2) and length(last(/MikroTik RB260GS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB260GS SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GS SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GS SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB260GS SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GS SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GS SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB260GS SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GS SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GS SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB260GS SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB260GS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB260GS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB260GS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB260GS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB260GS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB260GS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB260GS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB260GS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB260GS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB260GS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB260GS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB260GS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB260GS SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB260GS SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB260GS SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB260GS SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB260GS SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB260GS by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB260GS by SNMP/system.name,#1)<>last(/MikroTik RB260GS by SNMP/system.name,#2) and length(last(/MikroTik RB260GS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB260GS by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GS by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GS by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB260GS by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GS by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GS by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB260GS by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GS by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GS by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB260GS by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB260GS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB260GS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB260GS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB260GS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB260GS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB260GS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB260GS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB260GS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB260GS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB260GS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB260GS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB260GS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB260GS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB260GS by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB260GS by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB260GS by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB260GS by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB260GS by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB260GS_snmp/template_net_mikrotik_RB260GS_snmp.yaml b/templates/net/mikrotik/mikrotik_RB260GS_snmp/template_net_mikrotik_RB260GS_snmp.yaml
index e3888038a08..9062a40ad16 100644
--- a/templates/net/mikrotik/mikrotik_RB260GS_snmp/template_net_mikrotik_RB260GS_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB260GS_snmp/template_net_mikrotik_RB260GS_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:14:05Z'
+ date: '2022-10-27T14:43:12Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 1a74dd95e7244493a1b13b94fe9dd9e8
- template: 'MikroTik RB260GS SNMP'
- name: 'MikroTik RB260GS SNMP'
+ template: 'MikroTik RB260GS by SNMP'
+ name: 'MikroTik RB260GS by SNMP'
description: |
The template for monitoring Switch MikroTik RB260GS.
5x Gigabit Ethernet Smart Switch, SFP cage, plastic case, SwOS
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 4db071c60daf4a6a836754875b22d27d
- expression: 'max(/MikroTik RB260GS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 5ce287958dc743abaa50a18c8ad3f2a5
- expression: 'min(/MikroTik RB260GS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB260GS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB260GS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 314db7fe9ce6403785f737263ee87914
- expression: 'avg(/MikroTik RB260GS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB260GS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB260GS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB260GS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB260GS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB260GS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: a5f7839a9a0d4272ae0312b8954a9313
- expression: 'last(/MikroTik RB260GS SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GS SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GS SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB260GS by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB260GS by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB260GS by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 672fcd1d34374373b0992d80d46d885c
- expression: 'last(/MikroTik RB260GS SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GS SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GS SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB260GS by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB260GS by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB260GS by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 6f811bec794348e4937cbff22dbf5fb4
- expression: 'last(/MikroTik RB260GS SNMP/system.name,#1)<>last(/MikroTik RB260GS SNMP/system.name,#2) and length(last(/MikroTik RB260GS SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB260GS by SNMP/system.name,#1)<>last(/MikroTik RB260GS by SNMP/system.name,#2) and length(last(/MikroTik RB260GS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 7538c487e4f14cdcb6fc3a6b415ed559
- expression: 'last(/MikroTik RB260GS SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GS SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GS SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB260GS by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB260GS by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB260GS by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB260GS SNMP/system.name,#1)<>last(/MikroTik RB260GS SNMP/system.name,#2) and length(last(/MikroTik RB260GS SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB260GS by SNMP/system.name,#1)<>last(/MikroTik RB260GS by SNMP/system.name,#2) and length(last(/MikroTik RB260GS by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 6975f0abf1504caebd3a13193da1bdcc
- expression: 'min(/MikroTik RB260GS SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB260GS by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 9a5729d397ad431aa79048b69a65fbd9
- expression: 'max(/MikroTik RB260GS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB260GS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB260GS SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB260GS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f6b89443734b4c79920496ff9244f6d3
- expression: 'min(/MikroTik RB260GS SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB260GS by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 16f1d8ca6a654816ae56e2cd00016ba1
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b9eee5f17d084ba7b6971aaf6165b313
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 64193d2ccc1c4813b8585b5d3d81f962
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: be0ff2612a014f2db296b4066c22cfdd
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3035592657fe4a6a89fcacbd05f84573
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 5ae663e6743744bba8606334ab17eb60
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 635d0ddc5ba6442bbb51ea451f502662
- expression: 'avg(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB260GS SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB260GS by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6eb10d964aaf44bb8849f35f39e6b909
- expression: 'max(/MikroTik RB260GS SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GS by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c8c83d70279b461c95f5c8f4deb59d7e
- expression: 'max(/MikroTik RB260GS SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GS by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 557d79e0013b4b91a16ce2a0c507256a
- expression: 'max(/MikroTik RB260GS SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GS by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fddeb17ef9dd4876b9ba818d732cbd40
- expression: 'max(/MikroTik RB260GS SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB260GS by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 9ce0b88fb735494aa3854a64f2c84f4d
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: cc74f3058c1945a59c95d49e3fdbb47b
- expression: 'last(/MikroTik RB260GS SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB260GS by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1bb803809e6a4b66a4dabbaf7dada2c0
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: d29da0701e5346ac81450a6002bb53c4
expression: |
- change(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB260GS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB260GS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 79709d95fe7a48d3a90b6a502788be89
expression: |
- (avg(/MikroTik RB260GS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB260GS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB260GS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB260GS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB260GS SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB260GS SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB260GS by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB260GS by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB260GS by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: b8470cef21e146b4b8ecfde73682d2ee
expression: |
- min(/MikroTik RB260GS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB260GS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB260GS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB260GS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB260GS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB260GS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB260GS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB260GS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB260GS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB260GS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 49c4ca48be2543ec9aab27b52c4a4f8b
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 67f66bb09eba4cb2b823fbf96391e0ca
expression: |
- last(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB260GS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB260GS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: f28661579bf04f6eaa1bc06f92f8d8f2
expression: |
- last(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB260GS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB260GS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB260GS SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB260GS by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB260GS by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB260GS by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 44a2d709f4d0471997697905b8e3b456
- expression: '(last(/MikroTik RB260GS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB260GS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB260GS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB260GS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB260GS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB260GS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB260GS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB260GS SNMP'
+ host: 'MikroTik RB260GS by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/README.md b/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/README.md
index 1cfd5cae939..63edf53ce43 100644
--- a/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB3011UiAS-RM SNMP
+# MikroTik RB3011UiAS-RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB3011UiAS-RM.
1U rackmount, 10xGigabit Ethernet, SFP, USB 3.0, LCD, PoE out on port 10, 2x1.4GHz CPU, 1GB RAM, RouterOS L5
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB3011UiAS-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB3011UiAS-RM SNMP/system.name,#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.name,#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB3011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB3011UiAS-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB3011UiAS-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB3011UiAS-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB3011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB3011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB3011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB3011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB3011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB3011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB3011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB3011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB3011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB3011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB3011UiAS-RM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB3011UiAS-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB3011UiAS-RM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB3011UiAS-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB3011UiAS-RM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB3011UiAS-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB3011UiAS-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB3011UiAS-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB3011UiAS-RM by SNMP/system.name,#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.name,#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB3011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB3011UiAS-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB3011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB3011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB3011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB3011UiAS-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB3011UiAS-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB3011UiAS-RM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB3011UiAS-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB3011UiAS-RM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB3011UiAS-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB3011UiAS-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/template_net_mikrotik_RB3011UiAS-RM_snmp.yaml b/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/template_net_mikrotik_RB3011UiAS-RM_snmp.yaml
index 231734d58d8..4d283ad5ee1 100644
--- a/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/template_net_mikrotik_RB3011UiAS-RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB3011UiAS-RM_snmp/template_net_mikrotik_RB3011UiAS-RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:14:12Z'
+ date: '2022-10-27T14:43:39Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: cc762a057f0f467ab571b6d76a9bb278
- template: 'MikroTik RB3011UiAS-RM SNMP'
- name: 'MikroTik RB3011UiAS-RM SNMP'
+ template: 'MikroTik RB3011UiAS-RM by SNMP'
+ name: 'MikroTik RB3011UiAS-RM by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB3011UiAS-RM.
1U rackmount, 10xGigabit Ethernet, SFP, USB 3.0, LCD, PoE out on port 10, 2x1.4GHz CPU, 1GB RAM, RouterOS L5
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 4c7a404a7e7b413bbbac7a21c77b3fcc
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: a9c3882f12d94b84a2cbed81db007011
- expression: 'min(/MikroTik RB3011UiAS-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB3011UiAS-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB3011UiAS-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB3011UiAS-RM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 20cb06fa668d459e80505b23501735a7
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB3011UiAS-RM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB3011UiAS-RM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB3011UiAS-RM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB3011UiAS-RM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 4a440903276347d9827dcfa3653d496c
- expression: 'last(/MikroTik RB3011UiAS-RM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 7b48c923659d4569b24692da4037b824
- expression: 'last(/MikroTik RB3011UiAS-RM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: bf71167252cf48c99477a03d09523aa0
- expression: 'last(/MikroTik RB3011UiAS-RM SNMP/system.name,#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.name,#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/system.name,#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.name,#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 80b76f59fdfd407ea5c3294736113749
- expression: 'last(/MikroTik RB3011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB3011UiAS-RM SNMP/system.name,#1)<>last(/MikroTik RB3011UiAS-RM SNMP/system.name,#2) and length(last(/MikroTik RB3011UiAS-RM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/system.name,#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/system.name,#2) and length(last(/MikroTik RB3011UiAS-RM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: d55a4746f70a4d539a9fadd9a335794f
- expression: 'min(/MikroTik RB3011UiAS-RM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB3011UiAS-RM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 7a790a7c2af34786838280924d2cb252
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e20e628acaae44d58c7f385f98cdb126
- expression: 'min(/MikroTik RB3011UiAS-RM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB3011UiAS-RM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: b63bd0e852a7431cbff672703f5fa68f
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d009789ee3204089bbd1e60b23fa757f
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 51d2ea964a684bfa85e509e549be251b
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 1cc47452c533402596797c5c6ae8351f
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 49bf5605212f44e18a0a9f0e4afde82b
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: d7d5fa71143e4601b41d24ce85031ed2
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 2478f32c04984bd8a53cb9211953d7c2
- expression: 'avg(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB3011UiAS-RM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB3011UiAS-RM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6dcde689dccb4221bffd0c36f000dcf2
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d8d809f110c044bdab269c961b947f0a
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a935e2731aac466bb21fd0e3c092cb7c
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2193529f37424dc29976bae9681cfff9
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: ab13751dc03e482db3d9f98c74fb1e40
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0f33b00af9164264b0d6fc91831a343e
- expression: 'last(/MikroTik RB3011UiAS-RM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8af0f04b3392466382d73d4986782c24
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 19c663970db044c39cc43028e7d0642d
expression: |
- change(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB3011UiAS-RM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB3011UiAS-RM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: df9f785e1515408b8b3735a653673100
expression: |
- (avg(/MikroTik RB3011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB3011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB3011UiAS-RM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB3011UiAS-RM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB3011UiAS-RM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB3011UiAS-RM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 5f5b45aa0b4943d191670dcafe035707
expression: |
- min(/MikroTik RB3011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB3011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB3011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB3011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB3011UiAS-RM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB3011UiAS-RM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB3011UiAS-RM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB3011UiAS-RM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB3011UiAS-RM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB3011UiAS-RM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 16d488e47b614bcca12af8f2493f8a0b
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: ccbd9c9dab504a7bab4f403386e5178f
expression: |
- last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 9b4adeaeed41450f839967a3d049b027
expression: |
- last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB3011UiAS-RM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 3dfea70b489141e1ba7e967a8de964b8
- expression: '(last(/MikroTik RB3011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB3011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB3011UiAS-RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB3011UiAS-RM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB3011UiAS-RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB3011UiAS-RM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB3011UiAS-RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB3011UiAS-RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB3011UiAS-RM SNMP'
+ host: 'MikroTik RB3011UiAS-RM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/README.md b/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/README.md
index 09a943ad85a..8be6d52d3b6 100644
--- a/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB4011iGS+RM SNMP
+# MikroTik RB4011iGS+RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB4011iGS+RM.
Powerful 10xGigabit port router with a Quad-core 1.4Ghz CPU, 1GB RAM, SFP+ 10Gbps cage and desktop case with rack ears
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB4011iGSRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB4011iGSRM SNMP/system.name,#1)<>last(/MikroTik RB4011iGSRM SNMP/system.name,#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB4011iGSRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB4011iGSRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB4011iGSRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB4011iGSRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB4011iGSRM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB4011iGSRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB4011iGSRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB4011iGSRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB4011iGSRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB4011iGSRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB4011iGSRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB4011iGSRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB4011iGSRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB4011iGSRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB4011iGSRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB4011iGSRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB4011iGSRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB4011iGSRM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB4011iGSRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB4011iGSRM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB4011iGSRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB4011iGSRM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB4011iGSRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB4011iGSRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB4011iGSRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB4011iGSRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB4011iGSRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB4011iGSRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB4011iGSRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB4011iGSRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB4011iGSRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB4011iGSRM by SNMP/system.name,#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.name,#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB4011iGSRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB4011iGSRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB4011iGSRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB4011iGSRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB4011iGSRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB4011iGSRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB4011iGSRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB4011iGSRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB4011iGSRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB4011iGSRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB4011iGSRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB4011iGSRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB4011iGSRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB4011iGSRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB4011iGSRM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB4011iGSRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB4011iGSRM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB4011iGSRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB4011iGSRM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB4011iGSRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB4011iGSRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB4011iGSRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB4011iGSRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB4011iGSRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB4011iGSRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/template_net_mikrotik_RB4011iGS+RM_snmp.yaml b/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/template_net_mikrotik_RB4011iGS+RM_snmp.yaml
index 096768e6a76..c6f09f826e0 100644
--- a/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/template_net_mikrotik_RB4011iGS+RM_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB4011iGS+RM_snmp/template_net_mikrotik_RB4011iGS+RM_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:14:16Z'
+ date: '2022-10-27T14:43:56Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 780c4a9a657e42fc83f1ab9a535f5184
- template: 'MikroTik RB4011iGSRM SNMP'
- name: 'MikroTik RB4011iGS+RM SNMP'
+ template: 'MikroTik RB4011iGSRM by SNMP'
+ name: 'MikroTik RB4011iGS+RM by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB4011iGS+RM.
Powerful 10xGigabit port router with a Quad-core 1.4Ghz CPU, 1GB RAM, SFP+ 10Gbps cage and desktop case with rack ears
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 7651bd1c9c3b431eba1db692abe311a1
- expression: 'max(/MikroTik RB4011iGSRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 433634cc1ce0426ba8337add07ee07f0
- expression: 'min(/MikroTik RB4011iGSRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB4011iGSRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB4011iGSRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB4011iGSRM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB4011iGSRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: a114fb9720bd429f8d406bac7b40a6d2
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB4011iGSRM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB4011iGSRM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB4011iGSRM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB4011iGSRM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB4011iGSRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: a61fd73d9dea4257bfbfc3d705475ae5
- expression: 'last(/MikroTik RB4011iGSRM SNMP/system.hw.firmware,#1)<>last(/MikroTik RB4011iGSRM SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB4011iGSRM by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: c31be8015ce640629af6cd3ed09dc617
- expression: 'last(/MikroTik RB4011iGSRM SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB4011iGSRM SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB4011iGSRM by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 58cd8a4c443e43d595a1afc5d045b67b
- expression: 'last(/MikroTik RB4011iGSRM SNMP/system.name,#1)<>last(/MikroTik RB4011iGSRM SNMP/system.name,#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB4011iGSRM by SNMP/system.name,#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.name,#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 991217a368944e34abe41bd465921a47
- expression: 'last(/MikroTik RB4011iGSRM SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB4011iGSRM SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB4011iGSRM by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB4011iGSRM SNMP/system.name,#1)<>last(/MikroTik RB4011iGSRM SNMP/system.name,#2) and length(last(/MikroTik RB4011iGSRM SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB4011iGSRM by SNMP/system.name,#1)<>last(/MikroTik RB4011iGSRM by SNMP/system.name,#2) and length(last(/MikroTik RB4011iGSRM by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 5b0479439c444be284cac4c699f64b53
- expression: 'min(/MikroTik RB4011iGSRM SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB4011iGSRM by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 463cc0b4e29d4dddba8ddb16b8faa12b
- expression: 'max(/MikroTik RB4011iGSRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB4011iGSRM SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 08f3a59bf7324ff4904737f2c6b94989
- expression: 'min(/MikroTik RB4011iGSRM SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB4011iGSRM by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: f31ffac30e7e40b7bd113a17862810ef
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1c270c25cfdb4b44b35ad7115105dfbc
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 3941319b74e64d8a921714b4748003f1
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 4b669ac2471b442dbfd82e70b0dba586
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a3bcec91e98349fa9d53cb96aeb377ac
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 9a03df6c9c3141e4845382ea5ae2d609
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: f53807b0daa24b2f9bd3d6ab755008fb
- expression: 'avg(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB4011iGSRM SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB4011iGSRM by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 001e4d76e846438592bd8c7b76025e51
- expression: 'max(/MikroTik RB4011iGSRM SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c8adfeee1f4b42b38ba756919d18ffce
- expression: 'max(/MikroTik RB4011iGSRM SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c826e712355c4c40a4699346581c1032
- expression: 'max(/MikroTik RB4011iGSRM SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ab44544163f14c31b2c45fe890b62ea4
- expression: 'max(/MikroTik RB4011iGSRM SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: cb00ced4d3d04160a4074cf74455e7ca
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7830a4b9c5b24762ab083a24c978cf44
- expression: 'last(/MikroTik RB4011iGSRM SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB4011iGSRM by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b56d0177668c4803b2de395f12c48070
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 0203940b08b54db982bafbfef0a8ab3c
expression: |
- change(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB4011iGSRM SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB4011iGSRM by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 883a34a4a82a47f99b63703e3ecd2106
expression: |
- (avg(/MikroTik RB4011iGSRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB4011iGSRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB4011iGSRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB4011iGSRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB4011iGSRM SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB4011iGSRM SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB4011iGSRM by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB4011iGSRM by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB4011iGSRM by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: af6d0bf9ba9a4402bf9ec52b7bfe998f
expression: |
- min(/MikroTik RB4011iGSRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB4011iGSRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB4011iGSRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB4011iGSRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB4011iGSRM SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB4011iGSRM SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB4011iGSRM by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB4011iGSRM by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB4011iGSRM SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB4011iGSRM by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: dd1c96b4ca6a4dffb18c17227ccbe0f6
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 7ec2dad6b1de421d800a086ad45e8fdd
expression: |
- last(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB4011iGSRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: e91014be808f40ceba0123f0e59e9975
expression: |
- last(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB4011iGSRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB4011iGSRM SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB4011iGSRM by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB4011iGSRM by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 7419d6e22c5d493ba843adf4f4f85529
- expression: '(last(/MikroTik RB4011iGSRM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB4011iGSRM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB4011iGSRM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB4011iGSRM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB4011iGSRM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB4011iGSRM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB4011iGSRM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB4011iGSRM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB4011iGSRM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB4011iGSRM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB4011iGSRM SNMP'
+ host: 'MikroTik RB4011iGSRM by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/README.md b/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/README.md
index e58a790ff4a..076ec316cfe 100644
--- a/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik RB5009UG+S+IN SNMP
+# MikroTik RB5009UG+S+IN by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik RB5009UG+S+IN.
The ultimate heavy-duty home lab router with USB 3.0, 1G and 2.5G Ethernet and a 10G SFP+ cage. You can mount four of these new routers in a single 1U rackmount space! Unprecedented processing power in such a small form factor.
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB5009UGSIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB5009UGSIN SNMP/system.name,#1)<>last(/MikroTik RB5009UGSIN SNMP/system.name,#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB5009UGSIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB5009UGSIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB5009UGSIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB5009UGSIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB5009UGSIN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB5009UGSIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB5009UGSIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB5009UGSIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB5009UGSIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB5009UGSIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB5009UGSIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB5009UGSIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB5009UGSIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB5009UGSIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB5009UGSIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB5009UGSIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB5009UGSIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB5009UGSIN SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB5009UGSIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB5009UGSIN SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB5009UGSIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB5009UGSIN SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB5009UGSIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB5009UGSIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB5009UGSIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB5009UGSIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB5009UGSIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB5009UGSIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB5009UGSIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB5009UGSIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik RB5009UGSIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik RB5009UGSIN by SNMP/system.name,#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.name,#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik RB5009UGSIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik RB5009UGSIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik RB5009UGSIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik RB5009UGSIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik RB5009UGSIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik RB5009UGSIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik RB5009UGSIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik RB5009UGSIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik RB5009UGSIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik RB5009UGSIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik RB5009UGSIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik RB5009UGSIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB5009UGSIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB5009UGSIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB5009UGSIN by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik RB5009UGSIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik RB5009UGSIN by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik RB5009UGSIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB5009UGSIN by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik RB5009UGSIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik RB5009UGSIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik RB5009UGSIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik RB5009UGSIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik RB5009UGSIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik RB5009UGSIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/template_net_mikrotik_RB5009UG+S+IN_snmp.yaml b/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/template_net_mikrotik_RB5009UG+S+IN_snmp.yaml
index 1a35b7dc6f1..cf1286ddd50 100644
--- a/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/template_net_mikrotik_RB5009UG+S+IN_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_RB5009UG+S+IN_snmp/template_net_mikrotik_RB5009UG+S+IN_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:14:19Z'
+ date: '2022-10-27T14:42:27Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 7b6f7a12a6b449ca926e74c894eca354
- template: 'MikroTik RB5009UGSIN SNMP'
- name: 'MikroTik RB5009UG+S+IN SNMP'
+ template: 'MikroTik RB5009UGSIN by SNMP'
+ name: 'MikroTik RB5009UG+S+IN by SNMP'
description: |
The template for monitoring Ethernet router MikroTik RB5009UG+S+IN.
The ultimate heavy-duty home lab router with USB 3.0, 1G and 2.5G Ethernet and a 10G SFP+ cage. You can mount four of these new routers in a single 1U rackmount space! Unprecedented processing power in such a small form factor.
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: afd45d5f0f1b48d68af5e58e5b13f7d2
- expression: 'max(/MikroTik RB5009UGSIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: bea20e4b6a634c3bb4c3c3f2c0ae91ce
- expression: 'min(/MikroTik RB5009UGSIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB5009UGSIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB5009UGSIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB5009UGSIN by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB5009UGSIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 30e3c09970614f7eb6434aacdc427fcb
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik RB5009UGSIN SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB5009UGSIN SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik RB5009UGSIN by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik RB5009UGSIN by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB5009UGSIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: d6de889ff3dc4c07a57bb5396a25a760
- expression: 'last(/MikroTik RB5009UGSIN SNMP/system.hw.firmware,#1)<>last(/MikroTik RB5009UGSIN SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik RB5009UGSIN by SNMP/system.hw.firmware,#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.hw.firmware,#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 6c509b4e298e4df7b4e9cecc064dc8eb
- expression: 'last(/MikroTik RB5009UGSIN SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB5009UGSIN SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik RB5009UGSIN by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 78efe7ad5d8740f7ae087beb2952f74d
- expression: 'last(/MikroTik RB5009UGSIN SNMP/system.name,#1)<>last(/MikroTik RB5009UGSIN SNMP/system.name,#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB5009UGSIN by SNMP/system.name,#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.name,#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: aafa92f02db4429b8ea5c43f1e13ad4e
- expression: 'last(/MikroTik RB5009UGSIN SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB5009UGSIN SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik RB5009UGSIN by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik RB5009UGSIN SNMP/system.name,#1)<>last(/MikroTik RB5009UGSIN SNMP/system.name,#2) and length(last(/MikroTik RB5009UGSIN SNMP/system.name))>0'
+ expression: 'last(/MikroTik RB5009UGSIN by SNMP/system.name,#1)<>last(/MikroTik RB5009UGSIN by SNMP/system.name,#2) and length(last(/MikroTik RB5009UGSIN by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 570f6f393cf24ee9b0731978bca9d7d7
- expression: 'min(/MikroTik RB5009UGSIN SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik RB5009UGSIN by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 265226f23bfc4bd58cddd2a154c168ac
- expression: 'max(/MikroTik RB5009UGSIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik RB5009UGSIN SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 745e204551104bbca3a2db75f55f04cc
- expression: 'min(/MikroTik RB5009UGSIN SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik RB5009UGSIN by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: c2630a4fef56441895dde6e8dbf415b6
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f7f22555f0524fab8addb969f565b12b
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: a291daa1248f4bfca3bdded26cdd3562
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 4952d45ee57747de90b71e7073da13bc
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d6ae3c415fa842339e6f1085296fdca3
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 3baba3844f1644e29fa20addb4c483e4
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: f81d3388b38845f1921e30332a487335
- expression: 'avg(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik RB5009UGSIN SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik RB5009UGSIN by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 77565b5e0dbb4415b5f24ebe91d6e5b9
- expression: 'max(/MikroTik RB5009UGSIN SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 271d7342775141cabcebb53ecb7e9a14
- expression: 'max(/MikroTik RB5009UGSIN SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bea4466e83fd4733b269d92657e1107e
- expression: 'max(/MikroTik RB5009UGSIN SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 53ef6c7af6114f5e8f76d15aa82d33d8
- expression: 'max(/MikroTik RB5009UGSIN SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 568c8d68683744a091aa4c40ea902e5d
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 67152198cf984ffeb453d6f149aae38f
- expression: 'last(/MikroTik RB5009UGSIN SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik RB5009UGSIN by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 33ce2abc89ee40b2bf88f30b9834ec8c
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 0a611eb7adb546bcab8352199c9fc08b
expression: |
- change(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik RB5009UGSIN SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik RB5009UGSIN by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 464770fa9e3b41399da04f251ff3a215
expression: |
- (avg(/MikroTik RB5009UGSIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik RB5009UGSIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik RB5009UGSIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik RB5009UGSIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik RB5009UGSIN SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik RB5009UGSIN SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik RB5009UGSIN by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik RB5009UGSIN by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik RB5009UGSIN by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 4bb5165672484ce0bea109fcef1cf62b
expression: |
- min(/MikroTik RB5009UGSIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik RB5009UGSIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik RB5009UGSIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik RB5009UGSIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik RB5009UGSIN SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik RB5009UGSIN SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik RB5009UGSIN by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik RB5009UGSIN by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik RB5009UGSIN SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik RB5009UGSIN by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 110e21a587044f2486479bd583cb21e1
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: da49d6b3b96c4c32b1439d13a289a2ef
expression: |
- last(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB5009UGSIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: dd9a814580fd47be8982b9ca83217070
expression: |
- last(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB5009UGSIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik RB5009UGSIN SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik RB5009UGSIN by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik RB5009UGSIN by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: f4c5126396ce4a07b9f0ef82aea599e3
- expression: '(last(/MikroTik RB5009UGSIN SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB5009UGSIN SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB5009UGSIN SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB5009UGSIN SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik RB5009UGSIN by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik RB5009UGSIN by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik RB5009UGSIN by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik RB5009UGSIN by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik RB5009UGSIN SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik RB5009UGSIN by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik RB5009UGSIN SNMP'
+ host: 'MikroTik RB5009UGSIN by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/README.md b/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/README.md
index ca2c46de8eb..872c7e9d368 100644
--- a/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik hEX PoE lite SNMP
+# MikroTik hEX PoE lite by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik hEX PoE lite.
5xEthernet with PoE output for four ports, USB, 650MHz CPU, 64MB RAM, RouterOS L4
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX PoE lite SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX PoE lite SNMP/system.name,#1)<>last(/MikroTik hEX PoE lite SNMP/system.name,#2) and length(last(/MikroTik hEX PoE lite SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX PoE lite SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE lite SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE lite SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX PoE lite SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE lite SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE lite SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX PoE lite SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE lite SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE lite SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX PoE lite SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX PoE lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX PoE lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX PoE lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX PoE lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX PoE lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX PoE lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX PoE lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX PoE lite SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE lite SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE lite SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE lite SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX PoE lite SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX PoE lite SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX PoE lite SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE lite SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX PoE lite SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX PoE lite SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX PoE lite SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX PoE lite SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX PoE lite SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX PoE lite SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX PoE lite by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX PoE lite by SNMP/system.name,#1)<>last(/MikroTik hEX PoE lite by SNMP/system.name,#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX PoE lite by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE lite by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX PoE lite by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE lite by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX PoE lite by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE lite by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX PoE lite by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX PoE lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX PoE lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX PoE lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX PoE lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX PoE lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX PoE lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX PoE lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX PoE lite by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE lite by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE lite by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE lite by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX PoE lite by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX PoE lite by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX PoE lite by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE lite by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX PoE lite by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX PoE lite by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX PoE lite by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX PoE lite by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX PoE lite by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX PoE lite by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/template_net_mikrotik_hEX_PoE_lite_snmp.yaml b/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/template_net_mikrotik_hEX_PoE_lite_snmp.yaml
index 828d5e064d7..272801c0b57 100644
--- a/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/template_net_mikrotik_hEX_PoE_lite_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_hEX_PoE_lite_snmp/template_net_mikrotik_hEX_PoE_lite_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:11Z'
+ date: '2022-10-27T14:42:29Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: a5ddacdd5ac64b82bf5183769cc03e8c
- template: 'MikroTik hEX PoE lite SNMP'
- name: 'MikroTik hEX PoE lite SNMP'
+ template: 'MikroTik hEX PoE lite by SNMP'
+ name: 'MikroTik hEX PoE lite by SNMP'
description: |
The template for monitoring Ethernet router MikroTik hEX PoE lite.
5xEthernet with PoE output for four ports, USB, 650MHz CPU, 64MB RAM, RouterOS L4
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 9d1eaf8c440842b6867f539d8e4580b9
- expression: 'max(/MikroTik hEX PoE lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: bb1bddbd5b3b4c97a056a3030cb8220c
- expression: 'min(/MikroTik hEX PoE lite SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE lite SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX PoE lite by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE lite by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX PoE lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 4de979003a374346a66e18e0dc0ae8b3
- expression: 'avg(/MikroTik hEX PoE lite SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik hEX PoE lite SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE lite SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX PoE lite by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE lite by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX PoE lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 81f162170b3f4cf0a5376f43ba8c826d
- expression: 'last(/MikroTik hEX PoE lite SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE lite SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE lite SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik hEX PoE lite by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE lite by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: ba2f0b5e00a94aff9db6b436a64b91bd
- expression: 'last(/MikroTik hEX PoE lite SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE lite SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE lite SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik hEX PoE lite by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE lite by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 0b1965fc09b549f8a0301c3b560f6e04
- expression: 'last(/MikroTik hEX PoE lite SNMP/system.name,#1)<>last(/MikroTik hEX PoE lite SNMP/system.name,#2) and length(last(/MikroTik hEX PoE lite SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX PoE lite by SNMP/system.name,#1)<>last(/MikroTik hEX PoE lite by SNMP/system.name,#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 857cc7715ae243879509d5ba827f0533
- expression: 'last(/MikroTik hEX PoE lite SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE lite SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE lite SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik hEX PoE lite by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE lite by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik hEX PoE lite SNMP/system.name,#1)<>last(/MikroTik hEX PoE lite SNMP/system.name,#2) and length(last(/MikroTik hEX PoE lite SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX PoE lite by SNMP/system.name,#1)<>last(/MikroTik hEX PoE lite by SNMP/system.name,#2) and length(last(/MikroTik hEX PoE lite by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: f328399a209d4adaa8fed3dc9577539f
- expression: 'min(/MikroTik hEX PoE lite SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik hEX PoE lite by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 7b2ebd40ed1f4e72ac77c9bc31eab800
- expression: 'max(/MikroTik hEX PoE lite SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX PoE lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ecb6b125d94643cf80b38078f1d42ad2
- expression: 'min(/MikroTik hEX PoE lite SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik hEX PoE lite by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 9abd143a230545b5912e56ebdeff5fad
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b7ab6a1e8efd4accaeef15ed26b66308
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 5a24a5c02664439da2ee76753e25ec8a
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: c21ad0f3058d4a57a1dc137576217655
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: de90614e78854f81822379c9b5ffc74e
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 11e619b8b2144751995926ecc71add69
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 931a8a585db94a6eadbaa2cc6ef7c730
- expression: 'avg(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX PoE lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik hEX PoE lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 09762405d2114ec79510f7954dcdae86
- expression: 'max(/MikroTik hEX PoE lite SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3f6e42b8dbcb4cd4b47c067fe5b7d1ea
- expression: 'max(/MikroTik hEX PoE lite SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e4778ad9d8ee4568b212241439a79e27
- expression: 'max(/MikroTik hEX PoE lite SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3eb7aa8563c54b72b7193ef83793acc0
- expression: 'max(/MikroTik hEX PoE lite SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 814d31895b51492db101ebb5c184ce03
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c3737199ab5342829ca6fae6d1de74f9
- expression: 'last(/MikroTik hEX PoE lite SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik hEX PoE lite by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 101e11f167e64235aa2d5f7d06f43548
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 0a6434fa071a47d4bbf9dfb922580cfa
expression: |
- change(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik hEX PoE lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik hEX PoE lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: f07cc9964edc4a819717be63759a150d
expression: |
- (avg(/MikroTik hEX PoE lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik hEX PoE lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik hEX PoE lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik hEX PoE lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik hEX PoE lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik hEX PoE lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik hEX PoE lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik hEX PoE lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 62a5f85871ca4fc3aed8e4cf0423649a
expression: |
- min(/MikroTik hEX PoE lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik hEX PoE lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik hEX PoE lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik hEX PoE lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik hEX PoE lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik hEX PoE lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik hEX PoE lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik hEX PoE lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX PoE lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX PoE lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 567a3273ef3e464c8f5d995c3af5ff21
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: b911cb33e9044a599d10c06e5b0f90fb
expression: |
- last(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX PoE lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX PoE lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: eada2d5bde184483bc0496677aff2c3c
expression: |
- last(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX PoE lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX PoE lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX PoE lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX PoE lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: f6de5bd6b737473fa0bb8adcd7388f2f
- expression: '(last(/MikroTik hEX PoE lite SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE lite SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE lite SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE lite SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik hEX PoE lite by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE lite by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE lite by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE lite by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik hEX PoE lite SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX PoE lite by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX PoE lite SNMP'
+ host: 'MikroTik hEX PoE lite by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/README.md b/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/README.md
index b0103d33eec..962959d6b86 100644
--- a/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik hEX PoE SNMP
+# MikroTik hEX PoE by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik hEX PoE.
5x Gigabit Ethernet with PoE output for four ports, SFP, USB, 800MHz CPU, 128MB RAM, RouterOS L4
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX PoE SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX PoE SNMP/system.name,#1)<>last(/MikroTik hEX PoE SNMP/system.name,#2) and length(last(/MikroTik hEX PoE SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX PoE SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX PoE SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX PoE SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX PoE SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX PoE SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX PoE SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX PoE SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX PoE SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX PoE SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX PoE SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX PoE SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX PoE SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX PoE SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX PoE SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX PoE SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX PoE SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX PoE SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX PoE SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX PoE SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX PoE SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX PoE SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX PoE by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX PoE by SNMP/system.name,#1)<>last(/MikroTik hEX PoE by SNMP/system.name,#2) and length(last(/MikroTik hEX PoE by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX PoE by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX PoE by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX PoE by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX PoE by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX PoE by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX PoE by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX PoE by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX PoE by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX PoE by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX PoE by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX PoE by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX PoE by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX PoE by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX PoE by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX PoE by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX PoE by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX PoE by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX PoE by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX PoE by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX PoE by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX PoE by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX PoE by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/template_net_mikrotik_hEX_PoE_snmp.yaml b/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/template_net_mikrotik_hEX_PoE_snmp.yaml
index 4184ebfb518..992010dafcb 100644
--- a/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/template_net_mikrotik_hEX_PoE_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_hEX_PoE_snmp/template_net_mikrotik_hEX_PoE_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:08Z'
+ date: '2022-10-27T14:42:15Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: ff57532daf924030b364e3b75acb74c4
- template: 'MikroTik hEX PoE SNMP'
- name: 'MikroTik hEX PoE SNMP'
+ template: 'MikroTik hEX PoE by SNMP'
+ name: 'MikroTik hEX PoE by SNMP'
description: |
The template for monitoring Ethernet router MikroTik hEX PoE.
5x Gigabit Ethernet with PoE output for four ports, SFP, USB, 800MHz CPU, 128MB RAM, RouterOS L4
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: c187031a85c340219bf773e53b1eb70b
- expression: 'max(/MikroTik hEX PoE SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: c30d9d87e01d4a4fb5f859b9b96a9597
- expression: 'min(/MikroTik hEX PoE SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX PoE by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX PoE SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 71bd6b58f328466fa8855e45f98d9148
- expression: 'avg(/MikroTik hEX PoE SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik hEX PoE SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX PoE by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX PoE by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX PoE SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: fe1e4e312e5a4ee48fecb03895b51201
- expression: 'last(/MikroTik hEX PoE SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik hEX PoE by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX PoE by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX PoE by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 250374059d8a45f78107f1f5b9bda7b1
- expression: 'last(/MikroTik hEX PoE SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik hEX PoE by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX PoE by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX PoE by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 689814337c114068a71c0d510b6ffdee
- expression: 'last(/MikroTik hEX PoE SNMP/system.name,#1)<>last(/MikroTik hEX PoE SNMP/system.name,#2) and length(last(/MikroTik hEX PoE SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX PoE by SNMP/system.name,#1)<>last(/MikroTik hEX PoE by SNMP/system.name,#2) and length(last(/MikroTik hEX PoE by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 2615116273594f659184fdc9f2612c91
- expression: 'last(/MikroTik hEX PoE SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik hEX PoE by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX PoE by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX PoE by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik hEX PoE SNMP/system.name,#1)<>last(/MikroTik hEX PoE SNMP/system.name,#2) and length(last(/MikroTik hEX PoE SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX PoE by SNMP/system.name,#1)<>last(/MikroTik hEX PoE by SNMP/system.name,#2) and length(last(/MikroTik hEX PoE by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 851e15f5b81a43b3be5d3eda921c9430
- expression: 'min(/MikroTik hEX PoE SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik hEX PoE by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: dbe7f9e93602427e81932c39b4383974
- expression: 'max(/MikroTik hEX PoE SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX PoE by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX PoE SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX PoE by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 87ea6ae2f5374f68acfbd4d368c8aae8
- expression: 'min(/MikroTik hEX PoE SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik hEX PoE by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 9a9de341ab9042ba93a59bc755a67d07
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 89ccd80168694f6cb7742f79ab2f02ae
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: a27c393597ac4618846b7c9d906167c7
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 648519d0cc5b4795ab917893a71f1872
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 48244ed562b144c192177e64b06d268c
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 1b239ec1f0834b6ebe1ebc974121504b
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: d31b9428aef346d49ec00acd2388f657
- expression: 'avg(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX PoE SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik hEX PoE by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 573a668131014af2bc2989edbcdbf8b8
- expression: 'max(/MikroTik hEX PoE SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8b6d36e582d34ed7bdec1aaa406d0939
- expression: 'max(/MikroTik hEX PoE SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7e8ac19ee7aa43d7bc849f5a093e846a
- expression: 'max(/MikroTik hEX PoE SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 36404ef697ea49329f0572be3940fbd6
- expression: 'max(/MikroTik hEX PoE SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik hEX PoE by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 63dc090d3529456e9e9a2eb19c288165
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f75775427c074c83a1002b716733aa7f
- expression: 'last(/MikroTik hEX PoE SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik hEX PoE by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 28bc939657054f55a94e3818cba84344
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: f65d4d21623e4b0cb8a98f088e304de7
expression: |
- change(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik hEX PoE SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik hEX PoE by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 98c16c4da816482195fc9a3c43f4cc2b
expression: |
- (avg(/MikroTik hEX PoE SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik hEX PoE SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik hEX PoE by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik hEX PoE by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik hEX PoE SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik hEX PoE SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik hEX PoE by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik hEX PoE by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX PoE by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: e24c732a680c4f7fac04eb4fd20e3839
expression: |
- min(/MikroTik hEX PoE SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik hEX PoE SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik hEX PoE by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik hEX PoE by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik hEX PoE SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik hEX PoE SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik hEX PoE by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik hEX PoE by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX PoE SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX PoE by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: e626b00e480f4ff8a059be7e85934bf8
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 6d5b2060b6c946c7835867727dec0f87
expression: |
- last(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX PoE SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX PoE by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: e05e7d6b7b6c45f7974f39a258a754f8
expression: |
- last(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX PoE SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX PoE by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX PoE SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX PoE by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX PoE by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX PoE by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 6919d6afa065438b976979a4f782414e
- expression: '(last(/MikroTik hEX PoE SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik hEX PoE by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX PoE by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX PoE by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX PoE by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik hEX PoE SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX PoE by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX PoE SNMP'
+ host: 'MikroTik hEX PoE by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_hEX_S_snmp/README.md b/templates/net/mikrotik/mikrotik_hEX_S_snmp/README.md
index 402ec3e0e7a..2a4bd46dee8 100644
--- a/templates/net/mikrotik/mikrotik_hEX_S_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_hEX_S_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik hEX S SNMP
+# MikroTik hEX S by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik hEX S.
5x Gigabit Ethernet, SFP, Dual Core 880MHz CPU, 256MB RAM, USB, microSD, RouterOS L4, IPsec hardware encryption support and The Dude server package
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX S SNMP/system.name,#1)<>last(/MikroTik hEX S SNMP/system.name,#2) and length(last(/MikroTik hEX S SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX S SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX S SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX S SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX S SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX S SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX S SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX S SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX S SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX S by SNMP/system.name,#1)<>last(/MikroTik hEX S by SNMP/system.name,#2) and length(last(/MikroTik hEX S by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX S by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX S by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX S by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX S by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX S by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX S by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX S by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_hEX_S_snmp/template_net_mikrotik_hEX_S_snmp.yaml b/templates/net/mikrotik/mikrotik_hEX_S_snmp/template_net_mikrotik_hEX_S_snmp.yaml
index b4359ee61d1..6d84cd788ea 100644
--- a/templates/net/mikrotik/mikrotik_hEX_S_snmp/template_net_mikrotik_hEX_S_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_hEX_S_snmp/template_net_mikrotik_hEX_S_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:15Z'
+ date: '2022-10-27T14:43:30Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 7802db8c2f9c4a7eba7b381b8f3fa5c5
- template: 'MikroTik hEX S SNMP'
- name: 'MikroTik hEX S SNMP'
+ template: 'MikroTik hEX S by SNMP'
+ name: 'MikroTik hEX S by SNMP'
description: |
The template for monitoring Ethernet router MikroTik hEX S.
5x Gigabit Ethernet, SFP, Dual Core 880MHz CPU, 256MB RAM, USB, microSD, RouterOS L4, IPsec hardware encryption support and The Dude server package
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 99b9920681f941c187f81d1c91755891
- expression: 'max(/MikroTik hEX S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX S by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 530db893da94415db5fa5b1f26570bd5
- expression: 'min(/MikroTik hEX S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX S by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 662e7c6a20bb4038b171f39f88bc5c5a
- expression: 'avg(/MikroTik hEX S SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik hEX S by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik hEX S SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX S SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX S by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX S by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: bdc6d6b5a4be4bba95f1635d8cf165d7
- expression: 'last(/MikroTik hEX S SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX S SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX S SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik hEX S by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX S by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX S by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 9bcc039b8f1e4b3c84414d0d62d6c52d
- expression: 'last(/MikroTik hEX S SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX S SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX S SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik hEX S by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX S by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX S by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: ed72b3a73f5d498586ddfe57e9ad8638
- expression: 'last(/MikroTik hEX S SNMP/system.name,#1)<>last(/MikroTik hEX S SNMP/system.name,#2) and length(last(/MikroTik hEX S SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX S by SNMP/system.name,#1)<>last(/MikroTik hEX S by SNMP/system.name,#2) and length(last(/MikroTik hEX S by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 21dd8dc14526470493b31ebddf14574c
- expression: 'last(/MikroTik hEX S SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX S SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX S SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik hEX S by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX S by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX S by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik hEX S SNMP/system.name,#1)<>last(/MikroTik hEX S SNMP/system.name,#2) and length(last(/MikroTik hEX S SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX S by SNMP/system.name,#1)<>last(/MikroTik hEX S by SNMP/system.name,#2) and length(last(/MikroTik hEX S by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: bdd1ff379f214b1896c0e7ee5d6e6e16
- expression: 'min(/MikroTik hEX S SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik hEX S by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: e33c3d29eb9f41b49cc6002a5ee14058
- expression: 'max(/MikroTik hEX S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX S SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX S by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ca6c0d5b13a24f6b9e28296818ae1624
- expression: 'min(/MikroTik hEX S SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik hEX S by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: f328cfadd7c149c98d8e6694ff8a1d16
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 21775fd4ca0143838ea2c2c7c16c4b75
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 7c75f3db8a8341819bb4455d4a6440e3
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 3247cd9062894b59bb736c3c75bf2f67
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ce2928b0b45a4e74976c4ebb01f769b6
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 9401397315604181973ac4a5e0c6a5ba
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 466053cdfce44600bf1ff0ced3c4fce4
- expression: 'avg(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX S SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik hEX S by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9a48a8512ac74bff9c44733842d21693
- expression: 'max(/MikroTik hEX S SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik hEX S by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c5e6899f9dee47d7812366a26e5191d9
- expression: 'max(/MikroTik hEX S SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik hEX S by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 207bea70b82e4a6087f104cb1ec1f8a2
- expression: 'max(/MikroTik hEX S SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik hEX S by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3b7135afe54a4acfbf5d14510f6b22c1
- expression: 'max(/MikroTik hEX S SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik hEX S by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 0e917c0aa21343248fe29278d61b961a
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: de36b7b78e8b4bea936347995a0eaeb1
- expression: 'last(/MikroTik hEX S SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik hEX S by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ef94e6ea0f0547ed9b67073d91a745ec
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 8a7a6eb94ea24a819764bdcc5131238d
expression: |
- change(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik hEX S SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik hEX S by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 0d59255268064ca68352411117f5e9cf
expression: |
- (avg(/MikroTik hEX S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik hEX S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik hEX S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik hEX S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik hEX S SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik hEX S SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik hEX S by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik hEX S by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX S by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 062828dbf3964ca9bf6014b15ea13648
expression: |
- min(/MikroTik hEX S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik hEX S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik hEX S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik hEX S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik hEX S SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik hEX S SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik hEX S by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik hEX S by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX S SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX S by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 63c54ef0b1a54c2a9cce978a5923d83f
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: f303b6ce2be34c8ca0f51e5c73e47715
expression: |
- last(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: cdef153d2e914c12ba3303c938489359
expression: |
- last(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX S SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX S by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX S by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX S by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 3b0a33b89325422c90a05950eb7b4ece
- expression: '(last(/MikroTik hEX S SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX S SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX S SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX S SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik hEX S by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX S by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX S by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX S by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik hEX S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX S SNMP'
+ host: 'MikroTik hEX S by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_hEX_lite_snmp/README.md b/templates/net/mikrotik/mikrotik_hEX_lite_snmp/README.md
index 4dcec13b02c..796ad240910 100644
--- a/templates/net/mikrotik/mikrotik_hEX_lite_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_hEX_lite_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik hEX lite SNMP
+# MikroTik hEX lite by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik hEX lite.
5x Ethernet, Small plastic case, 850MHz CPU, 64MB RAM, Most affordable MPLS router, RouterOS L4
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX lite SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX lite SNMP/system.name,#1)<>last(/MikroTik hEX lite SNMP/system.name,#2) and length(last(/MikroTik hEX lite SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX lite SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX lite SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX lite SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX lite SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX lite SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX lite SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX lite SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX lite SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX lite SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX lite SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX lite SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX lite SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX lite SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX lite SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX lite SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX lite SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX lite SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX lite SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX lite SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX lite SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX lite SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX lite SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX lite SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX lite SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX lite by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX lite by SNMP/system.name,#1)<>last(/MikroTik hEX lite by SNMP/system.name,#2) and length(last(/MikroTik hEX lite by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX lite by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX lite by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX lite by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX lite by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX lite by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX lite by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX lite by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX lite by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX lite by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX lite by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX lite by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX lite by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX lite by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX lite by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX lite by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX lite by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX lite by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX lite by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX lite by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX lite by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX lite by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX lite by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX lite by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX lite by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_hEX_lite_snmp/template_net_mikrotik_hEX_lite_snmp.yaml b/templates/net/mikrotik/mikrotik_hEX_lite_snmp/template_net_mikrotik_hEX_lite_snmp.yaml
index c3329c97dd9..ba62d7f19ff 100644
--- a/templates/net/mikrotik/mikrotik_hEX_lite_snmp/template_net_mikrotik_hEX_lite_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_hEX_lite_snmp/template_net_mikrotik_hEX_lite_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:04Z'
+ date: '2022-10-27T14:43:07Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 2785d83763c641a7a7937b516665d93a
- template: 'MikroTik hEX lite SNMP'
- name: 'MikroTik hEX lite SNMP'
+ template: 'MikroTik hEX lite by SNMP'
+ name: 'MikroTik hEX lite by SNMP'
description: |
The template for monitoring Ethernet router MikroTik hEX lite.
5x Ethernet, Small plastic case, 850MHz CPU, 64MB RAM, Most affordable MPLS router, RouterOS L4
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 78f7c3cb9ad94841b6ef337df5a41914
- expression: 'max(/MikroTik hEX lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX lite by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 899836cd67f74868954af828bcf35521
- expression: 'min(/MikroTik hEX lite SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX lite SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX lite by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX lite by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX lite by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: f5930e10af6e43d380c97f2522780a8e
- expression: 'avg(/MikroTik hEX lite SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik hEX lite by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik hEX lite SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX lite SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX lite by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX lite by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX lite by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 8fb6d0748d5a4e589e397f0523944bc5
- expression: 'last(/MikroTik hEX lite SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX lite SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX lite SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik hEX lite by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX lite by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX lite by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: c76bf7b6d13b49a4916a00709ee7c9ba
- expression: 'last(/MikroTik hEX lite SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX lite SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX lite SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik hEX lite by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX lite by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX lite by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 6aeb9e554ba1411f868668b8f31dca49
- expression: 'last(/MikroTik hEX lite SNMP/system.name,#1)<>last(/MikroTik hEX lite SNMP/system.name,#2) and length(last(/MikroTik hEX lite SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX lite by SNMP/system.name,#1)<>last(/MikroTik hEX lite by SNMP/system.name,#2) and length(last(/MikroTik hEX lite by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: b5cddf34bbe74bb08663b85c83035f57
- expression: 'last(/MikroTik hEX lite SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX lite SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX lite SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik hEX lite by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX lite by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX lite by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik hEX lite SNMP/system.name,#1)<>last(/MikroTik hEX lite SNMP/system.name,#2) and length(last(/MikroTik hEX lite SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX lite by SNMP/system.name,#1)<>last(/MikroTik hEX lite by SNMP/system.name,#2) and length(last(/MikroTik hEX lite by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 4a08a50891814c0d813c39a4615bffac
- expression: 'min(/MikroTik hEX lite SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik hEX lite by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: fea996e6b5e14205ad6e41faa9f53263
- expression: 'max(/MikroTik hEX lite SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX lite by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX lite SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX lite by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4910a9cc5fdf4eefa05e1e0f339828c4
- expression: 'min(/MikroTik hEX lite SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik hEX lite by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 89af9490b6c74ab8ae81630c171e4326
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0a16b13ef86e4b968690de77d4fdd851
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 26ad73c494494a83a6b7eab785efe3ce
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 19c2754a812c48bd87fd250aac01b97b
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: fada5a58781c4684b70e7aea77a96040
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 87d04ed8af6040f1b2230244b7ffcc18
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: e5ca03c450eb4ccfa4dc94de0d6eeaaf
- expression: 'avg(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX lite SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik hEX lite by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ef64375fbe9b456d895d5fa75b524bc4
- expression: 'max(/MikroTik hEX lite SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik hEX lite by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ccc2b5cabd164f2c94268bd8fbb17299
- expression: 'max(/MikroTik hEX lite SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik hEX lite by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 07ac669be6d14c878ed3824adbcaa035
- expression: 'max(/MikroTik hEX lite SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik hEX lite by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e351a08588664f29aab5a784ff3bbc1c
- expression: 'max(/MikroTik hEX lite SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik hEX lite by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 39954b6664a74494a1af7de587704e43
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9361f7dd8cba43e4a237678d00eb26b6
- expression: 'last(/MikroTik hEX lite SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik hEX lite by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 89186fdd35cd4300803d8cbfaa86fa71
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 775cb415657c4772aa345e886c33af52
expression: |
- change(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik hEX lite SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik hEX lite by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 5ca398d5648b46449d93b13ed69d24ab
expression: |
- (avg(/MikroTik hEX lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik hEX lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik hEX lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik hEX lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik hEX lite SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik hEX lite SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik hEX lite by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik hEX lite by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX lite by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 51cc89abce1c45f4895d904fbf4c7a73
expression: |
- min(/MikroTik hEX lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik hEX lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik hEX lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik hEX lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik hEX lite SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik hEX lite SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik hEX lite by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik hEX lite by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX lite SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX lite by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: e89f36e5fdfd4ff0a22370dd45a900be
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: cd0ef8f6c93340a1aadd0559ef302476
expression: |
- last(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 0460d9d1f873497ea57430cf067c786e
expression: |
- last(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX lite SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX lite by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX lite by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX lite by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: d893994cfe8145b8bb0cf294b8a49f1f
- expression: '(last(/MikroTik hEX lite SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX lite SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX lite SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX lite SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik hEX lite by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX lite by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX lite by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX lite by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik hEX lite SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX lite by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX lite SNMP'
+ host: 'MikroTik hEX lite by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_hEX_snmp/README.md b/templates/net/mikrotik/mikrotik_hEX_snmp/README.md
index 9ab3c90db46..6ed22e82825 100644
--- a/templates/net/mikrotik/mikrotik_hEX_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_hEX_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik hEX SNMP
+# MikroTik hEX by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Ethernet router MikroTik hEX.
5x Gigabit Ethernet, Dual Core 880MHz CPU, 256MB RAM, USB, microSD, RouterOS L4
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX SNMP/system.name,#1)<>last(/MikroTik hEX SNMP/system.name,#2) and length(last(/MikroTik hEX SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik hEX by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik hEX by SNMP/system.name,#1)<>last(/MikroTik hEX by SNMP/system.name,#2) and length(last(/MikroTik hEX by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik hEX by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik hEX by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik hEX by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik hEX by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik hEX by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik hEX by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik hEX by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik hEX by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik hEX by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik hEX by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik hEX by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik hEX by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik hEX by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik hEX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik hEX by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik hEX by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik hEX by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik hEX by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik hEX by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik hEX by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik hEX by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik hEX by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik hEX by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_hEX_snmp/template_net_mikrotik_hEX_snmp.yaml b/templates/net/mikrotik/mikrotik_hEX_snmp/template_net_mikrotik_hEX_snmp.yaml
index 42704f93c81..0ff627fd4b5 100644
--- a/templates/net/mikrotik/mikrotik_hEX_snmp/template_net_mikrotik_hEX_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_hEX_snmp/template_net_mikrotik_hEX_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:01Z'
+ date: '2022-10-27T14:41:54Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 68c2034014f24115ae9e910962530472
- template: 'MikroTik hEX SNMP'
- name: 'MikroTik hEX SNMP'
+ template: 'MikroTik hEX by SNMP'
+ name: 'MikroTik hEX by SNMP'
description: |
The template for monitoring Ethernet router MikroTik hEX.
5x Gigabit Ethernet, Dual Core 880MHz CPU, 256MB RAM, USB, microSD, RouterOS L4
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 2759e7d4eb114d0984aff53e6656e57e
- expression: 'max(/MikroTik hEX SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 32d2897f2f1d42b0b2d4f40d6332cf48
- expression: 'min(/MikroTik hEX SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 138f10a500aa4b29abf9760c80e22b06
- expression: 'avg(/MikroTik hEX SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik hEX by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik hEX SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik hEX by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik hEX by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 0c58b3a529a541c5813e6d374fb1af38
- expression: 'last(/MikroTik hEX SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik hEX by SNMP/system.hw.firmware,#1)<>last(/MikroTik hEX by SNMP/system.hw.firmware,#2) and length(last(/MikroTik hEX by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 3a683df3455e4c3b9693f70d7cc2312c
- expression: 'last(/MikroTik hEX SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik hEX by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik hEX by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik hEX by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: d6d2aa238d864cc1902b94e44e46b627
- expression: 'last(/MikroTik hEX SNMP/system.name,#1)<>last(/MikroTik hEX SNMP/system.name,#2) and length(last(/MikroTik hEX SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX by SNMP/system.name,#1)<>last(/MikroTik hEX by SNMP/system.name,#2) and length(last(/MikroTik hEX by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 752e3b231fb9428baa28a7dffd90b2a5
- expression: 'last(/MikroTik hEX SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik hEX by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik hEX by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik hEX by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik hEX SNMP/system.name,#1)<>last(/MikroTik hEX SNMP/system.name,#2) and length(last(/MikroTik hEX SNMP/system.name))>0'
+ expression: 'last(/MikroTik hEX by SNMP/system.name,#1)<>last(/MikroTik hEX by SNMP/system.name,#2) and length(last(/MikroTik hEX by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 3887f8ec0f8a4eadb45b3d3388fdd3bf
- expression: 'min(/MikroTik hEX SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik hEX by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 9a95ecc339b34b3a8713d62c68e2b330
- expression: 'max(/MikroTik hEX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik hEX SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik hEX by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2d0e7e1624ef40de9a7ba351917ec339
- expression: 'min(/MikroTik hEX SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik hEX by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: ce444de5ad9944b3bfb8dffb26e0314a
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3b40b247aeb14a6d833a3c67594938ae
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: cf13c4a9be634dd09d1f14a9774a0009
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 16f478f052aa47328ac6e23e778d353c
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8b2e3dedb9884c81a8370732a1f3a367
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: c5c22051e035432eba2ad5f77da002c0
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 9b49825517f44a7fa37d2d96abd8848b
- expression: 'avg(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik hEX SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik hEX by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1491814409194648a9d98bcb18ac77cc
- expression: 'max(/MikroTik hEX SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik hEX by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e7a5fc01703c4474add6aac174ef5b16
- expression: 'max(/MikroTik hEX SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik hEX by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d529f287404945b9a265fefff65768d5
- expression: 'max(/MikroTik hEX SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik hEX by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2f85f97d29774922b6fecc19379726d8
- expression: 'max(/MikroTik hEX SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik hEX by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: e6c42eb8ef5b4827852b41e577924d82
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 92cf3f4cf7a64de58347d2e459321f92
- expression: 'last(/MikroTik hEX SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik hEX by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c8fd70162f264509a4bd4898015f522f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 1ebf4ecd3b254ace99f6738cd066035c
expression: |
- change(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik hEX SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik hEX by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 01d1b416123541eaad013386e1605241
expression: |
- (avg(/MikroTik hEX SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik hEX SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik hEX by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik hEX by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik hEX SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik hEX SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik hEX by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik hEX by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik hEX by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: baa41e89c189448e9d9a5918ef4918be
expression: |
- min(/MikroTik hEX SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik hEX SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik hEX by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik hEX by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik hEX SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik hEX SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik hEX by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik hEX by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik hEX SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik hEX by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 6bac0ef3a12748a5b63a7bbe39dc0a13
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 927bf28b0d7f4409ab7b2de288e59b66
expression: |
- last(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: ca6639ac0950404da35738314aa3b88e
expression: |
- last(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik hEX SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik hEX by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik hEX by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik hEX by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 40869f938b4f470cad6f5d8996edd088
- expression: '(last(/MikroTik hEX SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik hEX by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik hEX by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik hEX by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik hEX by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik hEX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik hEX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik hEX SNMP'
+ host: 'MikroTik hEX by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/README.md b/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/README.md
index 419982cc3eb..2efcca907d3 100644
--- a/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik netPower 15FR SNMP
+# MikroTik netPower 15FR by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik netPower 15FR.
An outdoor 18 port switch with 15 reverse PoE ports and SFP. Cut costs, not speed – choose GPEN over GPON!
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik netPower 15FR SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik netPower 15FR SNMP/system.name,#1)<>last(/MikroTik netPower 15FR SNMP/system.name,#2) and length(last(/MikroTik netPower 15FR SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik netPower 15FR SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 15FR SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 15FR SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik netPower 15FR SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 15FR SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 15FR SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik netPower 15FR SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 15FR SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 15FR SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik netPower 15FR SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik netPower 15FR SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik netPower 15FR SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik netPower 15FR SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik netPower 15FR SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik netPower 15FR SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik netPower 15FR SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik netPower 15FR SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik netPower 15FR SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 15FR SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 15FR SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 15FR SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik netPower 15FR SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik netPower 15FR SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik netPower 15FR SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 15FR SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik netPower 15FR SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 15FR SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 15FR SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik netPower 15FR SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik netPower 15FR SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik netPower 15FR SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik netPower 15FR SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik netPower 15FR SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik netPower 15FR by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik netPower 15FR by SNMP/system.name,#1)<>last(/MikroTik netPower 15FR by SNMP/system.name,#2) and length(last(/MikroTik netPower 15FR by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik netPower 15FR by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 15FR by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 15FR by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik netPower 15FR by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 15FR by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 15FR by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik netPower 15FR by SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 15FR by SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 15FR by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik netPower 15FR by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik netPower 15FR by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik netPower 15FR by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik netPower 15FR by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik netPower 15FR by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik netPower 15FR by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik netPower 15FR by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik netPower 15FR by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik netPower 15FR by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 15FR by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 15FR by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 15FR by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik netPower 15FR by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik netPower 15FR by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik netPower 15FR by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 15FR by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik netPower 15FR by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 15FR by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 15FR by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik netPower 15FR by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik netPower 15FR by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik netPower 15FR by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik netPower 15FR by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik netPower 15FR by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/template_net_mikrotik_netPower_15FR_snmp.yaml b/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/template_net_mikrotik_netPower_15FR_snmp.yaml
index c8c87baadd9..9f22f4a063b 100644
--- a/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/template_net_mikrotik_netPower_15FR_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_netPower_15FR_snmp/template_net_mikrotik_netPower_15FR_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:19Z'
+ date: '2022-10-27T14:42:23Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: f1928e12f9554599a9adb516f38b6bf6
- template: 'MikroTik netPower 15FR SNMP'
- name: 'MikroTik netPower 15FR SNMP'
+ template: 'MikroTik netPower 15FR by SNMP'
+ name: 'MikroTik netPower 15FR by SNMP'
description: |
The template for monitoring Switch MikroTik netPower 15FR.
An outdoor 18 port switch with 15 reverse PoE ports and SFP. Cut costs, not speed – choose GPEN over GPON!
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 8b77ade2f79b4e3bafc22e7d8766e477
- expression: 'max(/MikroTik netPower 15FR SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: cf4a28f174764d20953c4dcbca1576b6
- expression: 'min(/MikroTik netPower 15FR SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 15FR SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik netPower 15FR by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 15FR by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower 15FR SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 5ab1684fe5f34e3faa06192f47562b86
- expression: 'avg(/MikroTik netPower 15FR SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik netPower 15FR SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 15FR SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik netPower 15FR by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 15FR by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower 15FR SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 86d3bc7830274e24b19f0b7120f9c957
- expression: 'last(/MikroTik netPower 15FR SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 15FR SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 15FR SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik netPower 15FR by SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 15FR by SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 15FR by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 8964055d1c7445e68b9ba2eb30faf1fc
- expression: 'last(/MikroTik netPower 15FR SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 15FR SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 15FR SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik netPower 15FR by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 15FR by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 15FR by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: a67b112302804d90931ea112d7412aa7
- expression: 'last(/MikroTik netPower 15FR SNMP/system.name,#1)<>last(/MikroTik netPower 15FR SNMP/system.name,#2) and length(last(/MikroTik netPower 15FR SNMP/system.name))>0'
+ expression: 'last(/MikroTik netPower 15FR by SNMP/system.name,#1)<>last(/MikroTik netPower 15FR by SNMP/system.name,#2) and length(last(/MikroTik netPower 15FR by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: ad61f9029ba449aab240fee852d1e49e
- expression: 'last(/MikroTik netPower 15FR SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 15FR SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 15FR SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik netPower 15FR by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 15FR by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 15FR by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik netPower 15FR SNMP/system.name,#1)<>last(/MikroTik netPower 15FR SNMP/system.name,#2) and length(last(/MikroTik netPower 15FR SNMP/system.name))>0'
+ expression: 'last(/MikroTik netPower 15FR by SNMP/system.name,#1)<>last(/MikroTik netPower 15FR by SNMP/system.name,#2) and length(last(/MikroTik netPower 15FR by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 660db85a472349e7878bcdf41faa4689
- expression: 'min(/MikroTik netPower 15FR SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik netPower 15FR by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: f0686a8c2a6e42de980d6bca8ce4a0da
- expression: 'max(/MikroTik netPower 15FR SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower 15FR SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6fa6e471c9594ea9a65d54a72a7a7b54
- expression: 'min(/MikroTik netPower 15FR SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik netPower 15FR by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 8575e3af9dc841c489d0d72cf3880da1
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 46615aebb0e2414b9094e5e25c0a6314
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: db07d94668634efca75ab714cc2cf083
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 664ab6cc5ce044af8d6899473ea0a8b1
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: f81db05dfee24aaaa8cc27aca30e7455
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: edab3732eb9a41f4b42da927ee8996a7
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 0ef1463290ce45ab83838acb51e9d5ab
- expression: 'avg(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik netPower 15FR SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik netPower 15FR by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 30101628e09d4c67a1d4d7938b7b5674
- expression: 'max(/MikroTik netPower 15FR SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 179fb6a3947f4a4bad4d914dfbf2727e
- expression: 'max(/MikroTik netPower 15FR SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d92f9fa8a9a648ad817295ba5b26c254
- expression: 'max(/MikroTik netPower 15FR SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: df1dc76e73904e35850f1b104dca01ea
- expression: 'max(/MikroTik netPower 15FR SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: aef802a72bea446781b9456246984457
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fb10d55898f74edbb7a1541481cbde49
- expression: 'last(/MikroTik netPower 15FR SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik netPower 15FR by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0aac9b47a3f04cc7bea4f118e66d2a2e
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: d01d880fa506470a85c4219963c6275d
expression: |
- change(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik netPower 15FR SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik netPower 15FR by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 65d28a326c624b9da28eb0d0477138fb
expression: |
- (avg(/MikroTik netPower 15FR SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik netPower 15FR SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik netPower 15FR by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik netPower 15FR by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik netPower 15FR SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik netPower 15FR SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik netPower 15FR by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik netPower 15FR by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 15FR by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 1dcf1776170c44b38acb30d3c20f62a8
expression: |
- min(/MikroTik netPower 15FR SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik netPower 15FR SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik netPower 15FR by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik netPower 15FR by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik netPower 15FR SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik netPower 15FR SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik netPower 15FR by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik netPower 15FR by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower 15FR SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower 15FR by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: f72f57ef12e84957aea8cd402b3061c2
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 2ba297940326432dbbc91974ed99d53d
expression: |
- last(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower 15FR SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower 15FR by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: e3054ae302bd4c29b81b6f4c58c39021
expression: |
- last(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower 15FR SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower 15FR by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower 15FR SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower 15FR by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 15FR by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 15FR by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 6ca7b6f5acfb499b8ffbf5988a95616c
- expression: '(last(/MikroTik netPower 15FR SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 15FR SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 15FR SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 15FR SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik netPower 15FR by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 15FR by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 15FR by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 15FR by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik netPower 15FR SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik netPower 15FR by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower 15FR SNMP'
+ host: 'MikroTik netPower 15FR by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_netPower_16P_snmp/README.md b/templates/net/mikrotik/mikrotik_netPower_16P_snmp/README.md
index 5f9951d18e0..969e3555798 100644
--- a/templates/net/mikrotik/mikrotik_netPower_16P_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_netPower_16P_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik netPower 16P SNMP
+# MikroTik netPower 16P by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik netPower 16P.
An outdoor 18 port switch with 16 Gigabit PoE-out ports and 2 SFP+. Power all your access points anywhere!
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik netPower 16P SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik netPower 16P SNMP/system.name,#1)<>last(/MikroTik netPower 16P SNMP/system.name,#2) and length(last(/MikroTik netPower 16P SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik netPower 16P SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 16P SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 16P SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik netPower 16P SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 16P SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 16P SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik netPower 16P SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 16P SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 16P SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik netPower 16P SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik netPower 16P SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik netPower 16P SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik netPower 16P SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik netPower 16P SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik netPower 16P SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik netPower 16P SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik netPower 16P SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik netPower 16P SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 16P SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 16P SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 16P SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik netPower 16P SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik netPower 16P SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik netPower 16P SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 16P SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik netPower 16P SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 16P SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 16P SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik netPower 16P SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik netPower 16P SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik netPower 16P SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik netPower 16P SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik netPower 16P SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik netPower 16P by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik netPower 16P by SNMP/system.name,#1)<>last(/MikroTik netPower 16P by SNMP/system.name,#2) and length(last(/MikroTik netPower 16P by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik netPower 16P by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 16P by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 16P by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik netPower 16P by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 16P by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 16P by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik netPower 16P by SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 16P by SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 16P by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik netPower 16P by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik netPower 16P by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik netPower 16P by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik netPower 16P by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik netPower 16P by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik netPower 16P by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik netPower 16P by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik netPower 16P by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik netPower 16P by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 16P by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 16P by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 16P by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik netPower 16P by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik netPower 16P by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik netPower 16P by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 16P by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik netPower 16P by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 16P by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower 16P by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik netPower 16P by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik netPower 16P by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik netPower 16P by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik netPower 16P by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik netPower 16P by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_netPower_16P_snmp/template_net_mikrotik_netPower_16P_snmp.yaml b/templates/net/mikrotik/mikrotik_netPower_16P_snmp/template_net_mikrotik_netPower_16P_snmp.yaml
index a0d1d9d293a..12d587991a9 100644
--- a/templates/net/mikrotik/mikrotik_netPower_16P_snmp/template_net_mikrotik_netPower_16P_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_netPower_16P_snmp/template_net_mikrotik_netPower_16P_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:23Z'
+ date: '2022-10-27T14:42:39Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: b126aaf4499d49d7b4fcee0329b7dea7
- template: 'MikroTik netPower 16P SNMP'
- name: 'MikroTik netPower 16P SNMP'
+ template: 'MikroTik netPower 16P by SNMP'
+ name: 'MikroTik netPower 16P by SNMP'
description: |
The template for monitoring Switch MikroTik netPower 16P.
An outdoor 18 port switch with 16 Gigabit PoE-out ports and 2 SFP+. Power all your access points anywhere!
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: ad75e791ea804015af4f056851d065e5
- expression: 'max(/MikroTik netPower 16P SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 16P by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 53146df6198e4aa8a08ee2f5148b9273
- expression: 'min(/MikroTik netPower 16P SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 16P SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik netPower 16P by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 16P by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower 16P SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 16P by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: d30292aa239f4b08866dd626bea719d4
- expression: 'avg(/MikroTik netPower 16P SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik netPower 16P SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 16P SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik netPower 16P by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower 16P by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower 16P SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 16P by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 4b2840d437844c54aa8328a2af6ab16a
- expression: 'last(/MikroTik netPower 16P SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 16P SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 16P SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik netPower 16P by SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower 16P by SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower 16P by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 356423e8d963491c84c0ff910a324db9
- expression: 'last(/MikroTik netPower 16P SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 16P SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 16P SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik netPower 16P by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower 16P by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower 16P by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 31d043884c104f02aabfc12edc7cca38
- expression: 'last(/MikroTik netPower 16P SNMP/system.name,#1)<>last(/MikroTik netPower 16P SNMP/system.name,#2) and length(last(/MikroTik netPower 16P SNMP/system.name))>0'
+ expression: 'last(/MikroTik netPower 16P by SNMP/system.name,#1)<>last(/MikroTik netPower 16P by SNMP/system.name,#2) and length(last(/MikroTik netPower 16P by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 381ec628763d43e8a7f287d4bab024ee
- expression: 'last(/MikroTik netPower 16P SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 16P SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 16P SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik netPower 16P by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower 16P by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower 16P by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik netPower 16P SNMP/system.name,#1)<>last(/MikroTik netPower 16P SNMP/system.name,#2) and length(last(/MikroTik netPower 16P SNMP/system.name))>0'
+ expression: 'last(/MikroTik netPower 16P by SNMP/system.name,#1)<>last(/MikroTik netPower 16P by SNMP/system.name,#2) and length(last(/MikroTik netPower 16P by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 35b88fa6b15845e78a3a7211fe2ed0af
- expression: 'min(/MikroTik netPower 16P SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik netPower 16P by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: 5a3c6162200746f2b5fc1df3120dcc40
- expression: 'max(/MikroTik netPower 16P SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik netPower 16P by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower 16P SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower 16P by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e40966f36f804bbab518eb0cbc711fca
- expression: 'min(/MikroTik netPower 16P SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik netPower 16P by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: bbef794582294a2ea1321ac233a4af43
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 725caccdc4fe495e93e2cfa438f52674
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: ea9e2193843d4a71bd24bead9394685d
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: ac521e5e0c9d416ba0f61563a85a66ff
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: b5a55e90742148ae91fb30394d79a50a
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: f5ccdff135ee46ed81889d2882d54b3a
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: dd21e53afab64548ae180079d705dee5
- expression: 'avg(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik netPower 16P SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik netPower 16P by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1119a5651b6b469199e6cd8484ea000b
- expression: 'max(/MikroTik netPower 16P SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 16P by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 22c7a42c10524dfab69c6e9566a28150
- expression: 'max(/MikroTik netPower 16P SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 16P by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 14f69778aac0476290fd2ddff01693fd
- expression: 'max(/MikroTik netPower 16P SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 16P by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a6e1255d7904488788f4e5358b4b1a70
- expression: 'max(/MikroTik netPower 16P SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik netPower 16P by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: ddb15a63887e4581b375f8462a645c14
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d332b384052e4538869186b6c44ae332
- expression: 'last(/MikroTik netPower 16P SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik netPower 16P by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7337464491af47fdae8202c1e68585ac
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 74b27cf9dbed4239bcbeb3967074fc2f
expression: |
- change(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik netPower 16P SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik netPower 16P by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 487e923c839049718746d1875ffb4152
expression: |
- (avg(/MikroTik netPower 16P SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik netPower 16P SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik netPower 16P by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik netPower 16P by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik netPower 16P SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik netPower 16P SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik netPower 16P by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik netPower 16P by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower 16P by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: fe9c5bef78df4e0b84920a40d1549e6e
expression: |
- min(/MikroTik netPower 16P SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik netPower 16P SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik netPower 16P by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik netPower 16P by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik netPower 16P SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik netPower 16P SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik netPower 16P by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik netPower 16P by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower 16P SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower 16P by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: af98fd7de06d4f48920cbdb96f0b6165
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 5f17a45877b44fbab75b614db365db47
expression: |
- last(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower 16P SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower 16P by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: c5c80f5a24484c05b62d7bb5474f2091
expression: |
- last(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower 16P SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower 16P by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower 16P SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower 16P by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower 16P by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower 16P by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: d721994d11d04783af8d3a474de35b1c
- expression: '(last(/MikroTik netPower 16P SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 16P SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 16P SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 16P SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik netPower 16P by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower 16P by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower 16P by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower 16P by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik netPower 16P SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik netPower 16P by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower 16P SNMP'
+ host: 'MikroTik netPower 16P by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/README.md b/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/README.md
index 422080ded25..d0cfa1d97ba 100644
--- a/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/README.md
@@ -1,9 +1,9 @@
-# MikroTik netPower Lite 7R SNMP
+# MikroTik netPower Lite 7R by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template for monitoring Switch MikroTik netPower Lite 7R.
An outdoor reverse PoE switch with Gigabit Ethernet and 10G SFP+ ports.
@@ -129,38 +129,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik netPower Lite 7R SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik netPower Lite 7R SNMP/system.name,#1)<>last(/MikroTik netPower Lite 7R SNMP/system.name,#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik netPower Lite 7R SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower Lite 7R SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik netPower Lite 7R SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower Lite 7R SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik netPower Lite 7R SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower Lite 7R SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik netPower Lite 7R SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik netPower Lite 7R SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik netPower Lite 7R SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik netPower Lite 7R SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik netPower Lite 7R SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik netPower Lite 7R SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik netPower Lite 7R SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik netPower Lite 7R SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik netPower Lite 7R SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower Lite 7R SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower Lite 7R SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower Lite 7R SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik netPower Lite 7R SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik netPower Lite 7R SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/MikroTik netPower Lite 7R SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower Lite 7R SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/MikroTik netPower Lite 7R SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower Lite 7R SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower Lite 7R SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik netPower Lite 7R SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik netPower Lite 7R SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik netPower Lite 7R SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik netPower Lite 7R SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik netPower Lite 7R SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/MikroTik netPower Lite 7R by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/MikroTik netPower Lite 7R by SNMP/system.name,#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.name,#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/MikroTik netPower Lite 7R by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/MikroTik netPower Lite 7R by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/MikroTik netPower Lite 7R by SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/MikroTik netPower Lite 7R by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/MikroTik netPower Lite 7R by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/MikroTik netPower Lite 7R by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/MikroTik netPower Lite 7R by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/MikroTik netPower Lite 7R by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/MikroTik netPower Lite 7R by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/MikroTik netPower Lite 7R by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/MikroTik netPower Lite 7R by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/MikroTik netPower Lite 7R by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower Lite 7R by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower Lite 7R by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower Lite 7R by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/MikroTik netPower Lite 7R by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/MikroTik netPower Lite 7R by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/MikroTik netPower Lite 7R by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower Lite 7R by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/MikroTik netPower Lite 7R by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/MikroTik netPower Lite 7R by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/MikroTik netPower Lite 7R by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/MikroTik netPower Lite 7R by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/MikroTik netPower Lite 7R by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/MikroTik netPower Lite 7R by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## References
diff --git a/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/template_net_mikrotik_netPower_Lite_7R_snmp.yaml b/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/template_net_mikrotik_netPower_Lite_7R_snmp.yaml
index cf4676eed6b..6a09db6e9c6 100644
--- a/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/template_net_mikrotik_netPower_Lite_7R_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_netPower_Lite_7R_snmp/template_net_mikrotik_netPower_Lite_7R_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:13:27Z'
+ date: '2022-10-27T14:43:53Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 1782caa5bf724f66a23e7dbb96ef7ba2
- template: 'MikroTik netPower Lite 7R SNMP'
- name: 'MikroTik netPower Lite 7R SNMP'
+ template: 'MikroTik netPower Lite 7R by SNMP'
+ name: 'MikroTik netPower Lite 7R by SNMP'
description: |
The template for monitoring Switch MikroTik netPower Lite 7R.
An outdoor reverse PoE switch with Gigabit Ethernet and 10G SFP+ ports.
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 9eba3716ff704612a9c498a7b5a72a15
- expression: 'max(/MikroTik netPower Lite 7R SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: c0069ca77aa140d3ad4559979ad0973d
- expression: 'min(/MikroTik netPower Lite 7R SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower Lite 7R SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik netPower Lite 7R by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower Lite 7R by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower Lite 7R SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 9b01547e80e84f16b017901233e1fddd
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/MikroTik netPower Lite 7R SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower Lite 7R SNMP/icmppingloss,5m)<100'
+ expression: 'min(/MikroTik netPower Lite 7R by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/MikroTik netPower Lite 7R by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower Lite 7R SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: c9b18f3abf444a849606d278d9db0924
- expression: 'last(/MikroTik netPower Lite 7R SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower Lite 7R SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.hw.firmware))>0'
+ expression: 'last(/MikroTik netPower Lite 7R by SNMP/system.hw.firmware,#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.hw.firmware,#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -262,7 +262,7 @@ zabbix_export:
triggers:
-
uuid: 42d7e9c9f03e4b2a8af09b1c54913bba
- expression: 'last(/MikroTik netPower Lite 7R SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower Lite 7R SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/MikroTik netPower Lite 7R by SNMP/system.hw.serialnumber,#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.hw.serialnumber,#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 146922ff45f24d7ea7d3b7b5f0631f77
- expression: 'last(/MikroTik netPower Lite 7R SNMP/system.name,#1)<>last(/MikroTik netPower Lite 7R SNMP/system.name,#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.name))>0'
+ expression: 'last(/MikroTik netPower Lite 7R by SNMP/system.name,#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.name,#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -432,7 +432,7 @@ zabbix_export:
triggers:
-
uuid: 4400b69762f948f78365b74569ed54af
- expression: 'last(/MikroTik netPower Lite 7R SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower Lite 7R SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/MikroTik netPower Lite 7R by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -440,7 +440,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/MikroTik netPower Lite 7R SNMP/system.name,#1)<>last(/MikroTik netPower Lite 7R SNMP/system.name,#2) and length(last(/MikroTik netPower Lite 7R SNMP/system.name))>0'
+ expression: 'last(/MikroTik netPower Lite 7R by SNMP/system.name,#1)<>last(/MikroTik netPower Lite 7R by SNMP/system.name,#2) and length(last(/MikroTik netPower Lite 7R by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -510,7 +510,7 @@ zabbix_export:
triggers:
-
uuid: 348923e33c3049ea8b27a5d920528300
- expression: 'min(/MikroTik netPower Lite 7R SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/MikroTik netPower Lite 7R by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -546,7 +546,7 @@ zabbix_export:
triggers:
-
uuid: d51c0c2689a14b41aed889d67ec596df
- expression: 'max(/MikroTik netPower Lite 7R SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/MikroTik netPower Lite 7R SNMP/icmpping,#3)=0'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -588,7 +588,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6c1a7d6fd11541fb93a8e73f8712db83
- expression: 'min(/MikroTik netPower Lite 7R SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/MikroTik netPower Lite 7R by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -609,7 +609,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: d37741d8f523452381e8400eb0ac11cb
@@ -647,9 +647,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e51ab41e7ac142afabac3ddbe622fc0b
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -664,9 +664,9 @@ zabbix_export:
value: performance
-
uuid: 8046c8fbb72f4cf3afe0154fc2e41d6d
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -675,8 +675,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -686,9 +686,9 @@ zabbix_export:
value: performance
-
uuid: 3a4f8decfaf44650bb4066141e36f42a
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -738,9 +738,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: db6e52bc27714f51bc61e7cc3c3ebad1
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -755,9 +755,9 @@ zabbix_export:
value: performance
-
uuid: 9e1b2270bc144295a7b0edc2ba98c81b
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -766,8 +766,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -777,9 +777,9 @@ zabbix_export:
value: performance
-
uuid: 27e033be9fd94be2bbc3969e9cb51ac4
- expression: 'avg(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/MikroTik netPower Lite 7R SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/MikroTik netPower Lite 7R by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -836,7 +836,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0161455f62224813a81ed396716437db
- expression: 'max(/MikroTik netPower Lite 7R SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -872,7 +872,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c54da31a0d9f4219b8f5a4f47e30fb4e
- expression: 'max(/MikroTik netPower Lite 7R SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -908,7 +908,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5e1e679028cf499d80484e1fc11e8ba6
- expression: 'max(/MikroTik netPower Lite 7R SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -944,7 +944,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e1610c79b6704dfc948f77117d928b5d
- expression: 'max(/MikroTik netPower Lite 7R SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -963,25 +963,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 01c811631d98499d83c296f34ce36aee
@@ -1240,7 +1240,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0c4ff636a9834ee39a16032fd5cd2048
- expression: 'last(/MikroTik netPower Lite 7R SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/MikroTik netPower Lite 7R by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1555,9 +1555,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 532c7b90f432422398ad782959fb330c
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1608,21 +1608,21 @@ zabbix_export:
-
uuid: 91828300121c45d49d9ec4b5e61d872f
expression: |
- change(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/MikroTik netPower Lite 7R SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/MikroTik netPower Lite 7R by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1631,8 +1631,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1640,13 +1640,13 @@ zabbix_export:
-
uuid: 8d68e034bf6b4302ad4026fca4fd1e86
expression: |
- (avg(/MikroTik netPower Lite 7R SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/MikroTik netPower Lite 7R SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/MikroTik netPower Lite 7R by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/MikroTik netPower Lite 7R by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/MikroTik netPower Lite 7R SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/MikroTik netPower Lite 7R SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/MikroTik netPower Lite 7R by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/MikroTik netPower Lite 7R by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/MikroTik netPower Lite 7R by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1656,8 +1656,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1665,12 +1665,12 @@ zabbix_export:
-
uuid: 0f981e35c326480585104d8ed108bd70
expression: |
- min(/MikroTik netPower Lite 7R SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/MikroTik netPower Lite 7R SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/MikroTik netPower Lite 7R by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/MikroTik netPower Lite 7R by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/MikroTik netPower Lite 7R SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/MikroTik netPower Lite 7R SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/MikroTik netPower Lite 7R by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/MikroTik netPower Lite 7R by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1680,8 +1680,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/MikroTik netPower Lite 7R SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/MikroTik netPower Lite 7R by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1698,42 +1698,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: ffe565a9cbb24c5ba7112a5db9d43231
@@ -1830,8 +1830,8 @@ zabbix_export:
-
uuid: 1019a14b0998497daff1707692bc38ac
expression: |
- last(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower Lite 7R SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1852,8 +1852,8 @@ zabbix_export:
-
uuid: 1c431594950944138617449b126c5d92
expression: |
- last(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower Lite 7R SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1868,8 +1868,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/MikroTik netPower Lite 7R SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/MikroTik netPower Lite 7R by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/MikroTik netPower Lite 7R by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1891,14 +1891,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2048,7 +2048,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2961,7 +2961,7 @@ zabbix_export:
triggers:
-
uuid: 06c5437331284cf1ae61668b8fd285b5
- expression: '(last(/MikroTik netPower Lite 7R SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower Lite 7R SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower Lite 7R SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower Lite 7R SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/MikroTik netPower Lite 7R by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/MikroTik netPower Lite 7R by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/MikroTik netPower Lite 7R by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/MikroTik netPower Lite 7R by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2970,7 +2970,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/MikroTik netPower Lite 7R SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/MikroTik netPower Lite 7R by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2986,5 +2986,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'MikroTik netPower Lite 7R SNMP'
+ host: 'MikroTik netPower Lite 7R by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/mikrotik/mikrotik_snmp/README.md b/templates/net/mikrotik/mikrotik_snmp/README.md
index da4a061824b..c42f20fa08b 100644
--- a/templates/net/mikrotik/mikrotik_snmp/README.md
+++ b/templates/net/mikrotik/mikrotik_snmp/README.md
@@ -1,9 +1,9 @@
-# Mikrotik SNMP
+# Mikrotik by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -124,38 +124,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Mikrotik SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Mikrotik SNMP/system.name,#1)<>last(/Mikrotik SNMP/system.name,#2) and length(last(/Mikrotik SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Mikrotik SNMP/system.hw.serialnumber,#1)<>last(/Mikrotik SNMP/system.hw.serialnumber,#2) and length(last(/Mikrotik SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Mikrotik SNMP/system.hw.firmware,#1)<>last(/Mikrotik SNMP/system.hw.firmware,#2) and length(last(/Mikrotik SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Mikrotik SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Mikrotik SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Mikrotik SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Mikrotik SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Mikrotik SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Mikrotik SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Mikrotik SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Mikrotik SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Mikrotik SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Mikrotik SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mikrotik SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mikrotik SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mikrotik SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Mikrotik SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Mikrotik SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Mikrotik SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mikrotik SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Mikrotik SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/Mikrotik SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
-|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/Mikrotik SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
-|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
-|Device: Temperature is too low |<p>-</p> |`avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/Mikrotik SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/Mikrotik SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/Mikrotik SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/Mikrotik SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
-|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/Mikrotik SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
+|#{#SNMPINDEX}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Mikrotik by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Mikrotik by SNMP/system.name,#1)<>last(/Mikrotik by SNMP/system.name,#2) and length(last(/Mikrotik by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Mikrotik by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/Mikrotik by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/Mikrotik by SNMP/system.sw.os[mtxrLicVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Mikrotik by SNMP/system.hw.serialnumber,#1)<>last(/Mikrotik by SNMP/system.hw.serialnumber,#2) and length(last(/Mikrotik by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Mikrotik by SNMP/system.hw.firmware,#1)<>last(/Mikrotik by SNMP/system.hw.firmware,#2) and length(last(/Mikrotik by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Mikrotik by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Mikrotik by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Mikrotik by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Mikrotik by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Mikrotik by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Mikrotik by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Mikrotik by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Mikrotik by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Mikrotik by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Mikrotik by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mikrotik by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mikrotik by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mikrotik by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Mikrotik by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Mikrotik by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Mikrotik by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mikrotik by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Mikrotik by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Disk-{#SNMPINDEX}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and ((last(/Mikrotik by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |AVERAGE |<p>Manual close: YES</p> |
+|Disk-{#SNMPINDEX}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and ((last(/Mikrotik by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Disk-{#SNMPINDEX}: Disk space is critically low</p> |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|Device: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}`<p>Recovery expression:</p>`max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3` |WARNING |<p>**Depends on**:</p><p>- Device: Temperature is above critical threshold</p> |
+|Device: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}`<p>Recovery expression:</p>`max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3` |HIGH | |
+|Device: Temperature is too low |<p>-</p> |`avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}`<p>Recovery expression:</p>`min(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low |<p>-</p> |`max(/Mikrotik by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low |<p>-</p> |`max(/Mikrotik by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low |<p>-</p> |`max(/Mikrotik by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low |<p>-</p> |`max(/Mikrotik by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}` |WARNING | |
+|Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running |<p>Access point interface can be not running by different reasons - disabled interface, power off, network link down.</p> |`last(/Mikrotik by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/net/mikrotik/mikrotik_snmp/template_net_mikrotik_snmp.yaml b/templates/net/mikrotik/mikrotik_snmp/template_net_mikrotik_snmp.yaml
index c0bf0833afc..fcb613a803f 100644
--- a/templates/net/mikrotik/mikrotik_snmp/template_net_mikrotik_snmp.yaml
+++ b/templates/net/mikrotik/mikrotik_snmp/template_net_mikrotik_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:10:48Z'
+ date: '2022-10-27T14:43:02Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 815b5a81b29a477695fddbd533ad9c84
- template: 'Mikrotik SNMP'
- name: 'Mikrotik SNMP'
+ template: 'Mikrotik by SNMP'
+ name: 'Mikrotik by SNMP'
description: |
Template Net Mikrotik
@@ -51,7 +51,7 @@ zabbix_export:
triggers:
-
uuid: dc51a869c302440ba48d352545782e6e
- expression: 'max(/Mikrotik SNMP/icmpping,#3)=0'
+ expression: 'max(/Mikrotik by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -77,14 +77,14 @@ zabbix_export:
triggers:
-
uuid: 83fa0a00b298491a967e052ec0c3bafe
- expression: 'min(/Mikrotik SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mikrotik SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Mikrotik by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mikrotik by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Mikrotik SNMP/icmpping,#3)=0'
+ expression: 'max(/Mikrotik by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -110,17 +110,17 @@ zabbix_export:
triggers:
-
uuid: 7c027442ed3c44a0a26b4f35458a37f9
- expression: 'avg(/Mikrotik SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Mikrotik by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Mikrotik SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mikrotik SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Mikrotik by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Mikrotik by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Mikrotik SNMP/icmpping,#3)=0'
+ expression: 'max(/Mikrotik by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -214,7 +214,7 @@ zabbix_export:
triggers:
-
uuid: 62a9cd04a4dc4f5a9b59a01e54fb983f
- expression: 'last(/Mikrotik SNMP/system.hw.firmware,#1)<>last(/Mikrotik SNMP/system.hw.firmware,#2) and length(last(/Mikrotik SNMP/system.hw.firmware))>0'
+ expression: 'last(/Mikrotik by SNMP/system.hw.firmware,#1)<>last(/Mikrotik by SNMP/system.hw.firmware,#2) and length(last(/Mikrotik by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -270,7 +270,7 @@ zabbix_export:
triggers:
-
uuid: 6c1dcb2e8e76405887af69a6a08e53df
- expression: 'last(/Mikrotik SNMP/system.hw.serialnumber,#1)<>last(/Mikrotik SNMP/system.hw.serialnumber,#2) and length(last(/Mikrotik SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Mikrotik by SNMP/system.hw.serialnumber,#1)<>last(/Mikrotik by SNMP/system.hw.serialnumber,#2) and length(last(/Mikrotik by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -357,7 +357,7 @@ zabbix_export:
triggers:
-
uuid: 0172b76bc48d4dcead140c4880499777
- expression: 'last(/Mikrotik SNMP/system.name,#1)<>last(/Mikrotik SNMP/system.name,#2) and length(last(/Mikrotik SNMP/system.name))>0'
+ expression: 'last(/Mikrotik by SNMP/system.name,#1)<>last(/Mikrotik by SNMP/system.name,#2) and length(last(/Mikrotik by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -440,7 +440,7 @@ zabbix_export:
triggers:
-
uuid: 739f60e0862d4fe88cc2a5fe626211a8
- expression: 'last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/Mikrotik SNMP/system.sw.os[mtxrLicVersion.0]))>0'
+ expression: 'last(/Mikrotik by SNMP/system.sw.os[mtxrLicVersion.0],#1)<>last(/Mikrotik by SNMP/system.sw.os[mtxrLicVersion.0],#2) and length(last(/Mikrotik by SNMP/system.sw.os[mtxrLicVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -448,7 +448,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Mikrotik SNMP/system.name,#1)<>last(/Mikrotik SNMP/system.name,#2) and length(last(/Mikrotik SNMP/system.name))>0'
+ expression: 'last(/Mikrotik by SNMP/system.name,#1)<>last(/Mikrotik by SNMP/system.name,#2) and length(last(/Mikrotik by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -518,7 +518,7 @@ zabbix_export:
triggers:
-
uuid: e4b4ba5ec80c4d83adbb10739edf4574
- expression: 'min(/Mikrotik SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Mikrotik by SNMP/vm.memory.util[memoryUsedPercentage.Memory],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -554,7 +554,7 @@ zabbix_export:
triggers:
-
uuid: 2cc6310f1a824d40903f497f155a7834
- expression: 'max(/Mikrotik SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Mikrotik by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -562,7 +562,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Mikrotik SNMP/icmpping,#3)=0'
+ expression: 'max(/Mikrotik by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -596,7 +596,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7843aa49df2b4f218bf633bee4f01df6
- expression: 'min(/Mikrotik SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Mikrotik by SNMP/system.cpu.util[hrProcessorLoad.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPINDEX}: High CPU utilization'
event_name: '#{#SNMPINDEX}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -617,7 +617,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'system.cpu.util[hrProcessorLoad.{#SNMPINDEX}]'
-
uuid: 9a4ae5c2a50d4414ab0eed2c70bcd9c3
@@ -655,9 +655,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: edcc83694dc847f8a8dcb7e192f96404
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -672,9 +672,9 @@ zabbix_export:
value: performance
-
uuid: 1c380934165343a68345c761de9cbdb5
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -683,8 +683,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -694,9 +694,9 @@ zabbix_export:
value: performance
-
uuid: 47a89879a7db47e9bf598e27f7c084e7
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Mikrotik SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/Mikrotik by SNMP/sensor.temp.value[mtxrHlProcessorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -746,9 +746,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 21afb343688c4c0e8189a7dbc4f441e1
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ recovery_expression: 'max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
name: 'Device: Temperature is above critical threshold'
event_name: 'Device: Temperature is above critical threshold: >{$TEMP_CRIT:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -763,9 +763,9 @@ zabbix_export:
value: performance
-
uuid: 0ba64ff53885473ca8dcd333a770a7ed
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
+ recovery_expression: 'max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Device"}-3'
name: 'Device: Temperature is above warning threshold'
event_name: 'Device: Temperature is above warning threshold: >{$TEMP_WARN:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -774,8 +774,8 @@ zabbix_export:
dependencies:
-
name: 'Device: Temperature is above critical threshold'
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
- recovery_expression: 'max(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Device"}'
+ recovery_expression: 'max(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Device"}-3'
tags:
-
tag: scope
@@ -785,9 +785,9 @@ zabbix_export:
value: performance
-
uuid: cdbfc8fabf9f45fc95dedba327e30a1d
- expression: 'avg(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
+ expression: 'avg(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Device"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Mikrotik SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
+ recovery_expression: 'min(/Mikrotik by SNMP/sensor.temp.value[mtxrHlTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Device"}+3'
name: 'Device: Temperature is too low'
event_name: 'Device: Temperature is too low: <{$TEMP_CRIT_LOW:"Device"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -844,7 +844,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f23c654001384f6e981fd33aeab0af6f
- expression: 'max(/Mikrotik SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
+ expression: 'max(/Mikrotik by SNMP/lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRP.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRP is low (below {$LTEMODEM.RSRP.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -880,7 +880,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 57f8757b80914c248a35d0899791a48e
- expression: 'max(/Mikrotik SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
+ expression: 'max(/Mikrotik by SNMP/lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}],5m) < {$LTEMODEM.RSRQ.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSRQ is low (below {$LTEMODEM.RSRQ.MIN.WARN}db for 5m)'
priority: WARNING
@@ -916,7 +916,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e2c692d5d4ca49b688656a1abe6228e5
- expression: 'max(/Mikrotik SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
+ expression: 'max(/Mikrotik by SNMP/lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}],5m) < {$LTEMODEM.RSSI.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem RSSI is low (below {$LTEMODEM.RSSI.MIN.WARN}dbm for 5m)'
priority: WARNING
@@ -952,7 +952,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e163c4af8ff1451a8728e569c5d3c04c
- expression: 'max(/Mikrotik SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
+ expression: 'max(/Mikrotik by SNMP/lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}],5m) < {$LTEMODEM.SINR.MIN.WARN}'
name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low'
event_name: 'Interface {#IFNAME}({#IFALIAS}): LTE modem SINR is low (below {$LTEMODEM.SINR.MIN.WARN}db for 5m)'
priority: WARNING
@@ -971,25 +971,25 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'lte.modem.sinr[mtxrLTEModemSignalSINR.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'lte.modem.rsrq[mtxrLTEModemSignalRSRQ.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'lte.modem.rsrp[mtxrLTEModemSignalRSRP.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'lte.modem.rssi[mtxrLTEModemSignalRSSI.{#SNMPINDEX}]'
-
uuid: 5eada6e6837648859ccb440525281698
@@ -1248,7 +1248,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e4aedbd5e0c64cf48831bf08192e19bf
- expression: 'last(/Mikrotik SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
+ expression: 'last(/Mikrotik by SNMP/ssid.state[mtxrWlCMState.{#SNMPINDEX}])<>"running-ap"'
name: 'Interface {#IFNAME}({#IFALIAS}): AP interface {#IFNAME}({#IFALIAS}) is not running'
priority: WARNING
description: 'Access point interface can be not running by different reasons - disabled interface, power off, network link down.'
@@ -1563,9 +1563,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: db74692dd86a428fba64e57751fce1ba
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1616,21 +1616,21 @@ zabbix_export:
-
uuid: 564e8f3f288a40e9926b75b2711f45d1
expression: |
- change(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Mikrotik SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Mikrotik by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1639,8 +1639,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1648,13 +1648,13 @@ zabbix_export:
-
uuid: 25cc75fecfd1499ebc65ea434b98cb18
expression: |
- (avg(/Mikrotik SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Mikrotik SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Mikrotik by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Mikrotik by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Mikrotik SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Mikrotik SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Mikrotik by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Mikrotik by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Mikrotik by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1664,8 +1664,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1673,12 +1673,12 @@ zabbix_export:
-
uuid: 4c3aef072fcb47b98f0cdc3b651fae71
expression: |
- min(/Mikrotik SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Mikrotik SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Mikrotik by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Mikrotik by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Mikrotik SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Mikrotik SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Mikrotik by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Mikrotik by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1688,8 +1688,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Mikrotik SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Mikrotik by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1706,42 +1706,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 6bb65981928d40378a95ee74aff82cc5
@@ -1838,8 +1838,8 @@ zabbix_export:
-
uuid: c866ac0197ee401ab0c5cc6ec0757985
expression: |
- last(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/Mikrotik SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/Mikrotik by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1860,8 +1860,8 @@ zabbix_export:
-
uuid: 9adb977fde7345d8950265a9127cde57
expression: |
- last(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
- ((last(/Mikrotik SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"} and
+ ((last(/Mikrotik by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
name: 'Disk-{#SNMPINDEX}: Disk space is low'
event_name: 'Disk-{#SNMPINDEX}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"Disk-{#SNMPINDEX}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1876,8 +1876,8 @@ zabbix_export:
-
name: 'Disk-{#SNMPINDEX}: Disk space is critically low'
expression: |
- last(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
- ((last(/Mikrotik SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
+ last(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"Disk-{#SNMPINDEX}"} and
+ ((last(/Mikrotik by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Mikrotik by SNMP/vfs.fs.used[hrStorageSize.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"Disk-{#SNMPINDEX}"} or timeleft(/Mikrotik by SNMP/vfs.fs.pused[hrStorageSize.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1899,14 +1899,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'vfs.fs.used[hrStorageSize.{#SNMPINDEX}]'
tags:
-
@@ -2053,7 +2053,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2966,7 +2966,7 @@ zabbix_export:
triggers:
-
uuid: 53e737a095a840df9abfcfd9c26007bf
- expression: '(last(/Mikrotik SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mikrotik SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mikrotik SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mikrotik SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Mikrotik by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Mikrotik by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Mikrotik by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Mikrotik by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2975,7 +2975,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Mikrotik SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Mikrotik by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2991,5 +2991,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Mikrotik SNMP'
+ host: 'Mikrotik by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.Memory]'
diff --git a/templates/net/morningstar/morningstar_prostar_mppt_snmp/README.md b/templates/net/morningstar/morningstar_prostar_mppt_snmp/README.md
index 382ab7101ed..5865408c7fe 100644
--- a/templates/net/morningstar/morningstar_prostar_mppt_snmp/README.md
+++ b/templates/net/morningstar/morningstar_prostar_mppt_snmp/README.md
@@ -1,9 +1,9 @@
-# Morningstar ProStar MPPT SNMP
+# Morningstar ProStar MPPT by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -77,67 +77,67 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar ProStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
-|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar ProStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
-|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
-|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
-|Battery: High battery voltage |<p>-</p> |`min(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
-|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
-|Load: Device load in warning state |<p>-</p> |`last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
-|Load: Device load in critical state |<p>-</p> |`last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
-|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar ProStar MPPT SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar MPPT SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar MPPT SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar MPPT SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar ProStar MPPT SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
-|Status: Device has "overcurrent" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "mosfetSShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
-|Status: Device has "software" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2` |HIGH | |
-|Status: Device has "batteryHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2` |HIGH | |
-|Status: Device has "arrayHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "rtsShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2` |HIGH | |
-|Status: Device has "rtsNoLongerValid" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2` |HIGH | |
-|Status: Device has "localTempSensorDamaged" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2` |HIGH | |
-|Status: Device has "batteryLowVoltageDisconnect" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2` |HIGH | |
-|Status: Device has "slaveTimeout" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2` |HIGH | |
-|Status: Device has "dipSwitchChanged" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
-|Status: Device has "externalShortCircuit" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2` |HIGH | |
-|Status: Device has "overcurrent" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "mosfetShorted" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2` |HIGH | |
-|Status: Device has "software" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2` |HIGH | |
-|Status: Device has "loadHvd" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2` |HIGH | |
-|Status: Device has "highTempDisconnect" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2` |HIGH | |
-|Status: Device has "dipSwitchChanged" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
-|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
-|Status: Device has "heatsinkTempLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2` |WARNING | |
-|Status: Device has "inductorTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorOpen")=2` |WARNING | |
-|Status: Device has "inductorTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorShorted")=2` |WARNING | |
-|Status: Device has "inductorTempLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","inductorTempLimit")=2` |WARNING | |
-|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
-|Status: Device has "currentMeasurementError" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2` |WARNING | |
-|Status: Device has "batterySenseOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2` |WARNING | |
-|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
-|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
-|Status: Device has "tb5v" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","tb5v")=2` |WARNING | |
-|Status: Device has "fp10SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2` |WARNING | |
-|Status: Device has "mosfetOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2` |WARNING | |
-|Status: Device has "arrayCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2` |WARNING | |
-|Status: Device has "loadCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2` |WARNING | |
-|Status: Device has "p33SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2` |WARNING | |
-|Status: Device has "p12SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2` |WARNING | |
-|Status: Device has "hightInputVoltageLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2` |WARNING | |
-|Status: Device has "controllerReset" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2` |WARNING | |
-|Status: Device has "loadLvd" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2` |WARNING | |
-|Status: Device has "logTimeout" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2` |WARNING | |
-|Status: Device has "eepromAccessFailure" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2` |WARNING | |
-|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
-|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
-|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
-|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
+|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar ProStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
+|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar ProStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
+|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
+|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
+|Battery: High battery voltage |<p>-</p> |`min(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
+|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
+|Load: Device load in warning state |<p>-</p> |`last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
+|Load: Device load in critical state |<p>-</p> |`last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
+|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar ProStar MPPT by SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar MPPT by SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar MPPT by SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar MPPT by SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar ProStar MPPT by SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
+|Status: Device has "overcurrent" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "mosfetSShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
+|Status: Device has "software" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2` |HIGH | |
+|Status: Device has "batteryHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2` |HIGH | |
+|Status: Device has "arrayHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "rtsShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2` |HIGH | |
+|Status: Device has "rtsNoLongerValid" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2` |HIGH | |
+|Status: Device has "localTempSensorDamaged" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2` |HIGH | |
+|Status: Device has "batteryLowVoltageDisconnect" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2` |HIGH | |
+|Status: Device has "slaveTimeout" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2` |HIGH | |
+|Status: Device has "dipSwitchChanged" array faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
+|Status: Device has "externalShortCircuit" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2` |HIGH | |
+|Status: Device has "overcurrent" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "mosfetShorted" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2` |HIGH | |
+|Status: Device has "software" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2` |HIGH | |
+|Status: Device has "loadHvd" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2` |HIGH | |
+|Status: Device has "highTempDisconnect" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2` |HIGH | |
+|Status: Device has "dipSwitchChanged" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" load faults flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
+|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
+|Status: Device has "heatsinkTempLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2` |WARNING | |
+|Status: Device has "inductorTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorOpen")=2` |WARNING | |
+|Status: Device has "inductorTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorShorted")=2` |WARNING | |
+|Status: Device has "inductorTempLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","inductorTempLimit")=2` |WARNING | |
+|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
+|Status: Device has "currentMeasurementError" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2` |WARNING | |
+|Status: Device has "batterySenseOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2` |WARNING | |
+|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
+|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
+|Status: Device has "tb5v" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","tb5v")=2` |WARNING | |
+|Status: Device has "fp10SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2` |WARNING | |
+|Status: Device has "mosfetOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2` |WARNING | |
+|Status: Device has "arrayCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2` |WARNING | |
+|Status: Device has "loadCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2` |WARNING | |
+|Status: Device has "p33SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2` |WARNING | |
+|Status: Device has "p12SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2` |WARNING | |
+|Status: Device has "hightInputVoltageLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2` |WARNING | |
+|Status: Device has "controllerReset" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2` |WARNING | |
+|Status: Device has "loadLvd" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2` |WARNING | |
+|Status: Device has "logTimeout" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2` |WARNING | |
+|Status: Device has "eepromAccessFailure" alarm flag |<p>-</p> |`count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2` |WARNING | |
+|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
+|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
+|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
+|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/morningstar/morningstar_prostar_mppt_snmp/template_net_morningstar_prostar_mppt_snmp.yaml b/templates/net/morningstar/morningstar_prostar_mppt_snmp/template_net_morningstar_prostar_mppt_snmp.yaml
index 73d4f5b028b..f2128510c70 100644
--- a/templates/net/morningstar/morningstar_prostar_mppt_snmp/template_net_morningstar_prostar_mppt_snmp.yaml
+++ b/templates/net/morningstar/morningstar_prostar_mppt_snmp/template_net_morningstar_prostar_mppt_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:42Z'
+ date: '2022-10-27T14:44:11Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: b84324c2a40a496dbbb379bbf5dde8d5
- template: 'Morningstar ProStar MPPT SNMP'
- name: 'Morningstar ProStar MPPT SNMP'
+ template: 'Morningstar ProStar MPPT by SNMP'
+ name: 'Morningstar ProStar MPPT by SNMP'
description: |
MIBs used:
PROSTAR-MPPT
@@ -184,7 +184,7 @@ zabbix_export:
triggers:
-
uuid: fe4863fdd4d64e1c977328bd3d0f687f
- expression: 'last(/Morningstar ProStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar ProStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
name: 'Battery: Device charge in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -194,14 +194,14 @@ zabbix_export:
value: notice
-
uuid: 4d064e4877474d72b85c9cdfb7b09dad
- expression: 'last(/Morningstar ProStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
+ expression: 'last(/Morningstar ProStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
name: 'Battery: Device charge in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Battery: Device charge in critical state'
- expression: 'last(/Morningstar ProStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar ProStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
tags:
-
tag: scope
@@ -336,7 +336,7 @@ zabbix_export:
triggers:
-
uuid: a88025c5e5a748e3a6dfa01685ba075b
- expression: 'last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
name: 'Load: Device load in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -346,14 +346,14 @@ zabbix_export:
value: notice
-
uuid: 9ab107b39b874fed83d09e7c1964a699
- expression: 'last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
+ expression: 'last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
name: 'Load: Device load in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Load: Device load in critical state'
- expression: 'last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
tags:
-
tag: scope
@@ -448,7 +448,7 @@ zabbix_export:
triggers:
-
uuid: a2d0ab5150dd4bad8b5ec4f2c6aa13f8
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2'
name: 'Status: Device has "arrayCurrentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -458,7 +458,7 @@ zabbix_export:
value: notice
-
uuid: cc6a15f16fd8470a9dcd9a9e01cba61c
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
name: 'Status: Device has "batterySenseDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -468,7 +468,7 @@ zabbix_export:
value: notice
-
uuid: 55d4726d9b9047c79cf690353d950797
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2'
name: 'Status: Device has "batterySenseOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -478,7 +478,7 @@ zabbix_export:
value: notice
-
uuid: 7f015198395042219666cde4458d407c
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2'
name: 'Status: Device has "controllerReset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -488,7 +488,7 @@ zabbix_export:
value: notice
-
uuid: 48339339e5a7465fbc67266998c9a8fe
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
name: 'Status: Device has "currentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -498,7 +498,7 @@ zabbix_export:
value: notice
-
uuid: c88074037099498c896bb4793e04fea3
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2'
name: 'Status: Device has "currentMeasurementError" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -508,7 +508,7 @@ zabbix_export:
value: notice
-
uuid: cecd8ee17e5143ffb46495e927750c82
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2'
name: 'Status: Device has "eepromAccessFailure" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -518,7 +518,7 @@ zabbix_export:
value: notice
-
uuid: 4affa15e1c1c42459ea8dd6820d1c008
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2'
name: 'Status: Device has "fp10SupplyOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -528,7 +528,7 @@ zabbix_export:
value: notice
-
uuid: 41e4225072a3468696cfb534c65b9736
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2'
name: 'Status: Device has "heatsinkTempLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -538,7 +538,7 @@ zabbix_export:
value: notice
-
uuid: 5d269997a57d44ceb545e751e8e2d919
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
name: 'Status: Device has "heatsinkTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -548,7 +548,7 @@ zabbix_export:
value: notice
-
uuid: a8342a4e2fff40a7b830086dec303fd9
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
name: 'Status: Device has "heatsinkTempSensorShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -558,7 +558,7 @@ zabbix_export:
value: notice
-
uuid: 32e5b7ae81ce4ebea9b05ff7ab411e5a
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2'
name: 'Status: Device has "hightInputVoltageLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -568,7 +568,7 @@ zabbix_export:
value: notice
-
uuid: c10d27c1d9d54b8981a639e7bf0dfc02
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","inductorTempLimit")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","inductorTempLimit")=2'
name: 'Status: Device has "inductorTempLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -578,7 +578,7 @@ zabbix_export:
value: notice
-
uuid: 9f80959684b34b6498a1634097cd0d22
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorOpen")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorOpen")=2'
name: 'Status: Device has "inductorTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: cc735ddcc98e4c099bb770e2b2a171b5
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorShorted")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","inductorTempSensorShorted")=2'
name: 'Status: Device has "inductorTempSensorShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -598,7 +598,7 @@ zabbix_export:
value: notice
-
uuid: 217935cd6c7547bc95f5af51b3e643d4
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2'
name: 'Status: Device has "loadCurrentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -608,7 +608,7 @@ zabbix_export:
value: notice
-
uuid: cb05261f120240bf944b304ffc4979e6
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2'
name: 'Status: Device has "loadLvd" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -618,7 +618,7 @@ zabbix_export:
value: notice
-
uuid: 1ed1de932e084ce5ba03747bdd8ca4e5
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2'
name: 'Status: Device has "logTimeout" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -628,7 +628,7 @@ zabbix_export:
value: notice
-
uuid: 8824f80f1ef245508d6d0d660e3cabf1
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2'
name: 'Status: Device has "mosfetOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -638,7 +638,7 @@ zabbix_export:
value: notice
-
uuid: 59569aaebf32403c9fd310f6b26845b0
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2'
name: 'Status: Device has "p12SupplyOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -648,7 +648,7 @@ zabbix_export:
value: notice
-
uuid: 4775d3a7b843455eb404661c070be092
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2'
name: 'Status: Device has "p33SupplyOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -658,7 +658,7 @@ zabbix_export:
value: notice
-
uuid: 2015d2b876564ad79699a23fc6b60f07
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -668,7 +668,7 @@ zabbix_export:
value: notice
-
uuid: cce1eb2bee094a3b9a993ec2d60d182b
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -678,7 +678,7 @@ zabbix_export:
value: notice
-
uuid: 7a07b757660a4c9a879ac03a94832720
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","tb5v")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","tb5v")=2'
name: 'Status: Device has "tb5v" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -688,7 +688,7 @@ zabbix_export:
value: notice
-
uuid: 39205fc6d2cd4888994cccb016b4b2f8
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
name: 'Status: Device has "uncalibrated" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -750,7 +750,7 @@ zabbix_export:
triggers:
-
uuid: 8322f8ca8e2e462a8799dc399f17ba27
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2'
name: 'Status: Device has "arrayHvd" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -760,7 +760,7 @@ zabbix_export:
value: notice
-
uuid: 6a138cd2af754bb3a22173e8da28b254
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2'
name: 'Status: Device has "batteryHvd" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -770,7 +770,7 @@ zabbix_export:
value: notice
-
uuid: 8e42cf21ec10409da840021bfd26f74c
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2'
name: 'Status: Device has "batteryLowVoltageDisconnect" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -780,7 +780,7 @@ zabbix_export:
value: notice
-
uuid: d1112d9828064a879d56626ac6339dbf
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -790,7 +790,7 @@ zabbix_export:
value: notice
-
uuid: 75a67f17a33e41eea34585fade6319ef
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2'
name: 'Status: Device has "dipSwitchChanged" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -800,7 +800,7 @@ zabbix_export:
value: notice
-
uuid: 4502112383524f0499ea13e6f83ce789
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2'
name: 'Status: Device has "localTempSensorDamaged" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -810,7 +810,7 @@ zabbix_export:
value: notice
-
uuid: f1489dc1f8574895bd233b14ce080748
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2'
name: 'Status: Device has "mosfetSShorted" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -820,7 +820,7 @@ zabbix_export:
value: notice
-
uuid: 4ea903d3e8644ddaa5309eaa9715b894
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -830,7 +830,7 @@ zabbix_export:
value: notice
-
uuid: e12a29ec16ea423cb69ca4ce460f201b
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2'
name: 'Status: Device has "rtsNoLongerValid" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -840,7 +840,7 @@ zabbix_export:
value: notice
-
uuid: 3ec4307bb2c444fc8eca27f9b7a136e2
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -850,7 +850,7 @@ zabbix_export:
value: notice
-
uuid: 915c00d98e144ee7a9a2d50d0bd474c0
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2'
name: 'Status: Device has "slaveTimeout" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -860,7 +860,7 @@ zabbix_export:
value: notice
-
uuid: 9aac314eef594a8d86fd4b88308428e5
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2'
name: 'Status: Device has "software" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -942,7 +942,7 @@ zabbix_export:
triggers:
-
uuid: 93750f768ba94f1bb9302fc17c76faeb
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -952,7 +952,7 @@ zabbix_export:
value: notice
-
uuid: 456e2c36369f4519b2c80bcfe1acb4b0
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2'
name: 'Status: Device has "dipSwitchChanged" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -962,7 +962,7 @@ zabbix_export:
value: notice
-
uuid: 359df17c40684187b7ae92c8aa0c9624
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2'
name: 'Status: Device has "externalShortCircuit" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -972,7 +972,7 @@ zabbix_export:
value: notice
-
uuid: 6dadf09064304f4381ad9ed0436e562a
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2'
name: 'Status: Device has "highTempDisconnect" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -982,7 +982,7 @@ zabbix_export:
value: notice
-
uuid: bc41145ae8074290913a47cc3fd11e1e
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2'
name: 'Status: Device has "loadHvd" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -992,7 +992,7 @@ zabbix_export:
value: notice
-
uuid: 8c8a7021928e4bf78b6309574e298876
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2'
name: 'Status: Device has "mosfetShorted" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1002,7 +1002,7 @@ zabbix_export:
value: notice
-
uuid: b7d3f05837bd4d788d14f1aaf18b0482
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1012,7 +1012,7 @@ zabbix_export:
value: notice
-
uuid: 801728740c1948b1a751469e6443daab
- expression: 'count(/Morningstar ProStar MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2'
+ expression: 'count(/Morningstar ProStar MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2'
name: 'Status: Device has "software" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1041,7 +1041,7 @@ zabbix_export:
triggers:
-
uuid: 59cbcaaee8304b38a1144b3abf40bd9d
- expression: 'nodata(/Morningstar ProStar MPPT SNMP/status.net.uptime,5m)=1'
+ expression: 'nodata(/Morningstar ProStar MPPT by SNMP/status.net.uptime,5m)=1'
name: 'Status: Failed to fetch data'
event_name: 'Status: Failed to fetch data (or no data for 5m)'
priority: WARNING
@@ -1122,7 +1122,7 @@ zabbix_export:
triggers:
-
uuid: c74e1d3be1c24bde986bbce068db4bb8
- expression: 'min(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
name: 'Temperature: Critically high battery temperature'
event_name: 'Temperature: Critically high battery temperature (over {$BATTERY.TEMP.MAX.CRIT}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1133,7 +1133,7 @@ zabbix_export:
value: notice
-
uuid: 0c2180ae5deb41adb503e37bf91c34e2
- expression: 'max(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
name: 'Temperature: Critically low battery temperature'
event_name: 'Temperature: Critically low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1144,7 +1144,7 @@ zabbix_export:
value: notice
-
uuid: 1ab91d781c734f1eb2b9552f6dee9370
- expression: 'min(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
name: 'Temperature: High battery temperature'
event_name: 'Temperature: High battery temperature (over {$BATTERY.TEMP.MAX.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1152,21 +1152,21 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically high battery temperature'
- expression: 'min(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: 6ec855dc6a5c42a79f1f40e14655418a
- expression: 'max(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
+ expression: 'max(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
name: 'Temperature: Low battery temperature'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Temperature: Critically low battery temperature'
- expression: 'max(/Morningstar ProStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
tags:
-
tag: scope
@@ -1225,7 +1225,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 402f73ca5b8d412689a7e715223e890d
- expression: 'min(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
name: 'Battery: Critically high battery voltage'
event_name: 'Battery: Critically high battery voltage (over {#VOLTAGE.MAX.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1236,7 +1236,7 @@ zabbix_export:
value: capacity
-
uuid: 753a0d25832d434186f586f895124f31
- expression: 'max(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
name: 'Battery: Critically low battery voltage'
event_name: 'Battery: Critically low battery voltage (below {#VOLTAGE.MIN.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1247,7 +1247,7 @@ zabbix_export:
value: capacity
-
uuid: 66e1fdfbfa5740dfa8945626f7f8be78
- expression: 'min(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
+ expression: 'min(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
name: 'Battery: High battery voltage'
event_name: 'Battery: High battery voltage (over {#VOLTAGE.MAX.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1255,14 +1255,14 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically high battery voltage'
- expression: 'min(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
tags:
-
tag: scope
value: capacity
-
uuid: c9f3d03ce06641eb9b184f511a3a0341
- expression: 'max(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
+ expression: 'max(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
name: 'Battery: Low battery voltage'
event_name: 'Battery: Low battery voltage (below {#VOLTAGE.MIN.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1270,7 +1270,7 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically low battery voltage'
- expression: 'max(/Morningstar ProStar MPPT SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar MPPT by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
tags:
-
tag: scope
@@ -1284,14 +1284,14 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'battery.voltage[batteryTerminalVoltage.0{#SINGLETON}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'load.voltage[loadVoltage.0]'
master_item:
key: 'battery.voltage.discovery[batteryTerminalVoltage.0]'
@@ -1453,7 +1453,7 @@ zabbix_export:
triggers:
-
uuid: ca65a39c019046c29a522a6ca93ceb75
- expression: '(last(/Morningstar ProStar MPPT SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar MPPT SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar MPPT SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar MPPT SNMP/status.net.uptime)<10m)'
+ expression: '(last(/Morningstar ProStar MPPT by SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar MPPT by SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar MPPT by SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar MPPT by SNMP/status.net.uptime)<10m)'
name: 'Status: Device has been restarted'
event_name: 'Status: Device has been restarted (uptime < 10m)'
priority: INFO
@@ -1472,21 +1472,21 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'array.sweep_vmp[arrayVmp.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'array.sweep_voc[arrayVoc.0]'
-
sortorder: '2'
drawtype: GRADIENT_LINE
color: F63100
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'array.voltage[arrayVoltage.0]'
-
uuid: 94bbfd8a60a8412998ff617011db9372
@@ -1496,14 +1496,14 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'charge.current[chargeCurrent.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'load.current[loadCurrent.0]'
-
uuid: 02652b1251244702bf28f691e72ba27e
@@ -1513,19 +1513,19 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'temp.ambient[ambientTemperature.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'temp.battery[batteryTemperature.0]'
-
sortorder: '2'
drawtype: GRADIENT_LINE
color: F63100
item:
- host: 'Morningstar ProStar MPPT SNMP'
+ host: 'Morningstar ProStar MPPT by SNMP'
key: 'temp.heatsink[heatsinkTemperature.0]'
diff --git a/templates/net/morningstar/morningstar_prostar_pwm_snmp/README.md b/templates/net/morningstar/morningstar_prostar_pwm_snmp/README.md
index ad79e7950a1..d7834571797 100644
--- a/templates/net/morningstar/morningstar_prostar_pwm_snmp/README.md
+++ b/templates/net/morningstar/morningstar_prostar_pwm_snmp/README.md
@@ -1,9 +1,9 @@
-# Morningstar ProStar PWM SNMP
+# Morningstar ProStar PWM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -74,66 +74,66 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar ProStar PWM SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
-|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar ProStar PWM SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
-|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
-|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
-|Battery: High battery voltage |<p>-</p> |`min(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
-|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
-|Load: Device load in warning state |<p>-</p> |`last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
-|Load: Device load in critical state |<p>-</p> |`last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
-|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar ProStar PWM SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar PWM SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar PWM SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar PWM SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar ProStar PWM SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
-|Status: Device has "overcurrent" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "mosfetSShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
-|Status: Device has "software" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2` |HIGH | |
-|Status: Device has "batteryHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2` |HIGH | |
-|Status: Device has "arrayHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "rtsShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2` |HIGH | |
-|Status: Device has "rtsNoLongerValid" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2` |HIGH | |
-|Status: Device has "localTempSensorDamaged" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2` |HIGH | |
-|Status: Device has "batteryLowVoltageDisconnect" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2` |HIGH | |
-|Status: Device has "slaveTimeout" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2` |HIGH | |
-|Status: Device has "dipSwitchChanged" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
-|Status: Device has "p3Fault" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","p3Fault")=2` |HIGH | |
-|Status: Device has "externalShortCircuit" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2` |HIGH | |
-|Status: Device has "overcurrent" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "mosfetShorted" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2` |HIGH | |
-|Status: Device has "software" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2` |HIGH | |
-|Status: Device has "loadHvd" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2` |HIGH | |
-|Status: Device has "highTempDisconnect" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2` |HIGH | |
-|Status: Device has "dipSwitchChanged" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "p3Fault" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","p3Fault")=2` |HIGH | |
-|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
-|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
-|Status: Device has "heatsinkTempLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2` |WARNING | |
-|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
-|Status: Device has "currentMeasurementError" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2` |WARNING | |
-|Status: Device has "batterySenseOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2` |WARNING | |
-|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
-|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
-|Status: Device has "batteryTempOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","batteryTempOutOfRange")=2` |WARNING | |
-|Status: Device has "fp10SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2` |WARNING | |
-|Status: Device has "mosfetOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2` |WARNING | |
-|Status: Device has "arrayCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2` |WARNING | |
-|Status: Device has "loadCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2` |WARNING | |
-|Status: Device has "p33SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2` |WARNING | |
-|Status: Device has "p12SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2` |WARNING | |
-|Status: Device has "hightInputVoltageLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2` |WARNING | |
-|Status: Device has "controllerReset" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2` |WARNING | |
-|Status: Device has "loadLvd" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2` |WARNING | |
-|Status: Device has "logTimeout" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2` |WARNING | |
-|Status: Device has "eepromAccessFailure" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2` |WARNING | |
-|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
-|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
-|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
-|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
+|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar ProStar PWM by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
+|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar ProStar PWM by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
+|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
+|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
+|Battery: High battery voltage |<p>-</p> |`min(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
+|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
+|Load: Device load in warning state |<p>-</p> |`last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
+|Load: Device load in critical state |<p>-</p> |`last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
+|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar ProStar PWM by SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar PWM by SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar PWM by SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar PWM by SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar ProStar PWM by SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
+|Status: Device has "overcurrent" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "mosfetSShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
+|Status: Device has "software" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2` |HIGH | |
+|Status: Device has "batteryHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2` |HIGH | |
+|Status: Device has "arrayHvd" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "rtsShorted" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2` |HIGH | |
+|Status: Device has "rtsNoLongerValid" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2` |HIGH | |
+|Status: Device has "localTempSensorDamaged" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2` |HIGH | |
+|Status: Device has "batteryLowVoltageDisconnect" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2` |HIGH | |
+|Status: Device has "slaveTimeout" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2` |HIGH | |
+|Status: Device has "dipSwitchChanged" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
+|Status: Device has "p3Fault" array faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","p3Fault")=2` |HIGH | |
+|Status: Device has "externalShortCircuit" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2` |HIGH | |
+|Status: Device has "overcurrent" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "mosfetShorted" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2` |HIGH | |
+|Status: Device has "software" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2` |HIGH | |
+|Status: Device has "loadHvd" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2` |HIGH | |
+|Status: Device has "highTempDisconnect" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2` |HIGH | |
+|Status: Device has "dipSwitchChanged" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "p3Fault" load faults flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","p3Fault")=2` |HIGH | |
+|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
+|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
+|Status: Device has "heatsinkTempLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2` |WARNING | |
+|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
+|Status: Device has "currentMeasurementError" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2` |WARNING | |
+|Status: Device has "batterySenseOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2` |WARNING | |
+|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
+|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
+|Status: Device has "batteryTempOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batteryTempOutOfRange")=2` |WARNING | |
+|Status: Device has "fp10SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2` |WARNING | |
+|Status: Device has "mosfetOpen" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2` |WARNING | |
+|Status: Device has "arrayCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2` |WARNING | |
+|Status: Device has "loadCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2` |WARNING | |
+|Status: Device has "p33SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2` |WARNING | |
+|Status: Device has "p12SupplyOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2` |WARNING | |
+|Status: Device has "hightInputVoltageLimit" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2` |WARNING | |
+|Status: Device has "controllerReset" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2` |WARNING | |
+|Status: Device has "loadLvd" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2` |WARNING | |
+|Status: Device has "logTimeout" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2` |WARNING | |
+|Status: Device has "eepromAccessFailure" alarm flag |<p>-</p> |`count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2` |WARNING | |
+|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
+|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
+|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
+|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/morningstar/morningstar_prostar_pwm_snmp/template_net_morningstar_prostar_pwm_snmp.yaml b/templates/net/morningstar/morningstar_prostar_pwm_snmp/template_net_morningstar_prostar_pwm_snmp.yaml
index 937c6936992..12fd8986e1a 100644
--- a/templates/net/morningstar/morningstar_prostar_pwm_snmp/template_net_morningstar_prostar_pwm_snmp.yaml
+++ b/templates/net/morningstar/morningstar_prostar_pwm_snmp/template_net_morningstar_prostar_pwm_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:44Z'
+ date: '2022-10-27T14:44:09Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 24bed6339f0a492fab86fe757394b937
- template: 'Morningstar ProStar PWM SNMP'
- name: 'Morningstar ProStar PWM SNMP'
+ template: 'Morningstar ProStar PWM by SNMP'
+ name: 'Morningstar ProStar PWM by SNMP'
description: |
MIBs used:
PROSTAR-PWM
@@ -116,7 +116,7 @@ zabbix_export:
triggers:
-
uuid: f12fc2c1a7a142a287304c18bafa1181
- expression: 'last(/Morningstar ProStar PWM SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar ProStar PWM by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
name: 'Battery: Device charge in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -126,14 +126,14 @@ zabbix_export:
value: notice
-
uuid: adf8cf02aa1e42fa84e1f11ddae4df01
- expression: 'last(/Morningstar ProStar PWM SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
+ expression: 'last(/Morningstar ProStar PWM by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
name: 'Battery: Device charge in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Battery: Device charge in critical state'
- expression: 'last(/Morningstar ProStar PWM SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar ProStar PWM by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
tags:
-
tag: scope
@@ -264,7 +264,7 @@ zabbix_export:
triggers:
-
uuid: 7a8bf4420b6b48ab8a5bc999eecae760
- expression: 'last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
name: 'Load: Device load in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -274,14 +274,14 @@ zabbix_export:
value: notice
-
uuid: 5152f9cd4ee34be485f3cb0a0f60afd5
- expression: 'last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
+ expression: 'last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
name: 'Load: Device load in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Load: Device load in critical state'
- expression: 'last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar PWM SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar ProStar PWM by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
tags:
-
tag: scope
@@ -371,7 +371,7 @@ zabbix_export:
triggers:
-
uuid: 67fd46f034c3486e9af3cabfc5dc8056
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2'
name: 'Status: Device has "arrayCurrentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -381,7 +381,7 @@ zabbix_export:
value: notice
-
uuid: 31cc0b05b83045de80a7d07f26545010
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
name: 'Status: Device has "batterySenseDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -391,7 +391,7 @@ zabbix_export:
value: notice
-
uuid: 9e498d21bc7f4ca1937f1628f4b1ea55
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySenseOutOfRange")=2'
name: 'Status: Device has "batterySenseOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -401,7 +401,7 @@ zabbix_export:
value: notice
-
uuid: 8a09c7609f9a45cea5b217757a7d2e5e
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","batteryTempOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batteryTempOutOfRange")=2'
name: 'Status: Device has "batteryTempOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -411,7 +411,7 @@ zabbix_export:
value: notice
-
uuid: b173b8ca12f8464aae6476009b4c89e8
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","controllerReset")=2'
name: 'Status: Device has "controllerReset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -421,7 +421,7 @@ zabbix_export:
value: notice
-
uuid: cdbac88810ff49caa35771e661d8b312
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
name: 'Status: Device has "currentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -431,7 +431,7 @@ zabbix_export:
value: notice
-
uuid: 7758388df28d4540ba393f4423fef00a
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentMeasurementError")=2'
name: 'Status: Device has "currentMeasurementError" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -441,7 +441,7 @@ zabbix_export:
value: notice
-
uuid: a56fef1f61c44ba884ec448b0d306c1d
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","eepromAccessFailure")=2'
name: 'Status: Device has "eepromAccessFailure" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -451,7 +451,7 @@ zabbix_export:
value: notice
-
uuid: fefea5daa03d453c8c5148ddb39997f9
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","fp10SupplyOutOfRange")=2'
name: 'Status: Device has "fp10SupplyOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -461,7 +461,7 @@ zabbix_export:
value: notice
-
uuid: c252c82aff2a4ac680965115cb2fab64
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempLimit")=2'
name: 'Status: Device has "heatsinkTempLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -471,7 +471,7 @@ zabbix_export:
value: notice
-
uuid: 5b93a0a09a62481d8096ec743c2ceaff
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
name: 'Status: Device has "heatsinkTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -481,7 +481,7 @@ zabbix_export:
value: notice
-
uuid: f28e5143a238470ba93c1345c814f87d
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
name: 'Status: Device has "heatsinkTempSensorShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -491,7 +491,7 @@ zabbix_export:
value: notice
-
uuid: 75c84ef378984fca854b34a8ef79668c
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","hightInputVoltageLimit")=2'
name: 'Status: Device has "hightInputVoltageLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -501,7 +501,7 @@ zabbix_export:
value: notice
-
uuid: 5c1551f7e2be40e0b8b50ed263f8e293
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","loadCurrentOffset")=2'
name: 'Status: Device has "loadCurrentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -511,7 +511,7 @@ zabbix_export:
value: notice
-
uuid: 665117c5b9b64ea09a1d661e9c40fc43
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","loadLvd")=2'
name: 'Status: Device has "loadLvd" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -521,7 +521,7 @@ zabbix_export:
value: notice
-
uuid: b89c002c859c419ea748b43d575e9e27
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","logTimeout")=2'
name: 'Status: Device has "logTimeout" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -531,7 +531,7 @@ zabbix_export:
value: notice
-
uuid: 17f51e7b248b4e63934e8b529b85b2ef
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","mosfetOpen")=2'
name: 'Status: Device has "mosfetOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -541,7 +541,7 @@ zabbix_export:
value: notice
-
uuid: 75e23772250741d0b1fc1ddff2a72ef6
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","p12SupplyOutOfRange")=2'
name: 'Status: Device has "p12SupplyOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -551,7 +551,7 @@ zabbix_export:
value: notice
-
uuid: fc374c9ac9fa4f979fbff9f7c7d83565
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","p33SupplyOutOfRange")=2'
name: 'Status: Device has "p33SupplyOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: fbec2a1fdbe54d8da352471acf67bad1
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -571,7 +571,7 @@ zabbix_export:
value: notice
-
uuid: 915da6e7b1cd410da9a6c68e3b4abd85
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -581,7 +581,7 @@ zabbix_export:
value: notice
-
uuid: e8bf2213a5444e2c9923b6f093d43f75
- expression: 'count(/Morningstar ProStar PWM SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
name: 'Status: Device has "uncalibrated" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -644,7 +644,7 @@ zabbix_export:
triggers:
-
uuid: b2ff69793e124031a79a668b03678fac
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2'
name: 'Status: Device has "arrayHvd" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -654,7 +654,7 @@ zabbix_export:
value: notice
-
uuid: a4ca36ccaa9d45ceb79303afef1c49f0
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2'
name: 'Status: Device has "batteryHvd" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -664,7 +664,7 @@ zabbix_export:
value: notice
-
uuid: f4d1120afb13456b9d45f8795dbc30b7
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryLowVoltageDisconnect")=2'
name: 'Status: Device has "batteryLowVoltageDisconnect" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -674,7 +674,7 @@ zabbix_export:
value: notice
-
uuid: 9e5f2c575945458ea8a39f33cb23b833
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -684,7 +684,7 @@ zabbix_export:
value: notice
-
uuid: fd904f4469324784ac2c469e64069f94
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","dipSwitchChanged")=2'
name: 'Status: Device has "dipSwitchChanged" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -694,7 +694,7 @@ zabbix_export:
value: notice
-
uuid: 62076ce0967049c8bde39f71afcb85d9
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2'
name: 'Status: Device has "localTempSensorDamaged" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -704,7 +704,7 @@ zabbix_export:
value: notice
-
uuid: ea8487afe1c14bc08f3d9fd7f75d208f
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2'
name: 'Status: Device has "mosfetSShorted" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -714,7 +714,7 @@ zabbix_export:
value: notice
-
uuid: b0bb139541ae493bafc40dac9074d898
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -724,7 +724,7 @@ zabbix_export:
value: notice
-
uuid: 8af94d7ff1a84e18b10122b0e3743d45
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","p3Fault")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","p3Fault")=2'
name: 'Status: Device has "p3Fault" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -734,7 +734,7 @@ zabbix_export:
value: notice
-
uuid: b41cb2e05acb40f59efa50a25f66cd62
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2'
name: 'Status: Device has "rtsNoLongerValid" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -744,7 +744,7 @@ zabbix_export:
value: notice
-
uuid: d99c3f126c7e480cb4fcc705349eb61d
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -754,7 +754,7 @@ zabbix_export:
value: notice
-
uuid: 711b28f19cb74c0faeef73263ca1fb8f
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","slaveTimeout")=2'
name: 'Status: Device has "slaveTimeout" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -764,7 +764,7 @@ zabbix_export:
value: notice
-
uuid: e4a261d750d546c7b5d5067dd9a0ec25
- expression: 'count(/Morningstar ProStar PWM SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.array_faults[arrayFaults.0],#3,"like","software")=2'
name: 'Status: Device has "software" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -847,7 +847,7 @@ zabbix_export:
triggers:
-
uuid: 99ab5f0d3014459a8cd7d137d3a1f688
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -857,7 +857,7 @@ zabbix_export:
value: notice
-
uuid: 77752192092f4f1caceef19c3c164b72
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","dipSwitchChanged")=2'
name: 'Status: Device has "dipSwitchChanged" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -867,7 +867,7 @@ zabbix_export:
value: notice
-
uuid: d2e55501d89844aeb47f7887a11754a9
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2'
name: 'Status: Device has "externalShortCircuit" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -877,7 +877,7 @@ zabbix_export:
value: notice
-
uuid: a6548502cfc4406098ba3129af8efcb5
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2'
name: 'Status: Device has "highTempDisconnect" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -887,7 +887,7 @@ zabbix_export:
value: notice
-
uuid: 6e8f0127bc7b42dea9d867ab174f458c
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2'
name: 'Status: Device has "loadHvd" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -897,7 +897,7 @@ zabbix_export:
value: notice
-
uuid: 2a303d4712e244a9b051fb1b0247fac5
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2'
name: 'Status: Device has "mosfetShorted" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -907,7 +907,7 @@ zabbix_export:
value: notice
-
uuid: 5720e2e15e5f42099fd7de361f62c99a
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -917,7 +917,7 @@ zabbix_export:
value: notice
-
uuid: 2f522d50a8124ed2a8af4d7b6417c31c
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","p3Fault")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","p3Fault")=2'
name: 'Status: Device has "p3Fault" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -927,7 +927,7 @@ zabbix_export:
value: notice
-
uuid: e75abe852b9c4e1d91a1f8f83622ef64
- expression: 'count(/Morningstar ProStar PWM SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2'
+ expression: 'count(/Morningstar ProStar PWM by SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2'
name: 'Status: Device has "software" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -956,7 +956,7 @@ zabbix_export:
triggers:
-
uuid: 16c1444a745a47e59fd22bd1a64baef3
- expression: 'nodata(/Morningstar ProStar PWM SNMP/status.net.uptime,5m)=1'
+ expression: 'nodata(/Morningstar ProStar PWM by SNMP/status.net.uptime,5m)=1'
name: 'Status: Failed to fetch data'
event_name: 'Status: Failed to fetch data (or no data for 5m)'
priority: WARNING
@@ -1034,7 +1034,7 @@ zabbix_export:
triggers:
-
uuid: 46eb3a0e80294a4db8324d56337ed712
- expression: 'min(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
name: 'Temperature: Critically high battery temperature'
event_name: 'Temperature: Critically high battery temperature (over {$BATTERY.TEMP.MAX.CRIT}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1045,7 +1045,7 @@ zabbix_export:
value: notice
-
uuid: c3f3ba5b2cab4481bb62fa8527554e96
- expression: 'max(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
name: 'Temperature: Critically low battery temperature'
event_name: 'Temperature: Critically low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1056,7 +1056,7 @@ zabbix_export:
value: notice
-
uuid: 80aaf1de029b4d6eadce9f2a946f6dde
- expression: 'min(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
name: 'Temperature: High battery temperature'
event_name: 'Temperature: High battery temperature (over {$BATTERY.TEMP.MAX.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1064,14 +1064,14 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically high battery temperature'
- expression: 'min(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: cf1db336ea124f9a9fd6eb367f93f0e8
- expression: 'max(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
+ expression: 'max(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
name: 'Temperature: Low battery temperature'
event_name: 'Temperature: Low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1079,7 +1079,7 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically low battery temperature'
- expression: 'max(/Morningstar ProStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
tags:
-
tag: scope
@@ -1133,7 +1133,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e89cf2b8066840c2876642f0d8db1edd
- expression: 'min(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
name: 'Battery: Critically high battery voltage'
event_name: 'Battery: Critically high battery voltage (over {#VOLTAGE.MAX.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1144,7 +1144,7 @@ zabbix_export:
value: capacity
-
uuid: 8356aba9afb242b09902873a5f0e1d47
- expression: 'max(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
name: 'Battery: Critically low battery voltage'
event_name: 'Battery: Critically low battery voltage (below {#VOLTAGE.MIN.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1155,7 +1155,7 @@ zabbix_export:
value: capacity
-
uuid: 77f130af976c43edb8c823de5cbd57b2
- expression: 'min(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
+ expression: 'min(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
name: 'Battery: High battery voltage'
event_name: 'Battery: High battery voltage (over {#VOLTAGE.MAX.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1163,14 +1163,14 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically high battery voltage'
- expression: 'min(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
tags:
-
tag: scope
value: capacity
-
uuid: 6c288c8b28db4f8e95c8ad2aa8b838ef
- expression: 'max(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
+ expression: 'max(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
name: 'Battery: Low battery voltage'
event_name: 'Battery: Low battery voltage (below {#VOLTAGE.MIN.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1178,7 +1178,7 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically low battery voltage'
- expression: 'max(/Morningstar ProStar PWM SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar ProStar PWM by SNMP/battery.voltage[batteryTerminalVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
tags:
-
tag: scope
@@ -1192,14 +1192,14 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'battery.voltage[batteryTerminalVoltage.0{#SINGLETON}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'load.voltage[loadVoltage.0]'
master_item:
key: 'battery.voltage.discovery[batteryTerminalVoltage.0]'
@@ -1355,7 +1355,7 @@ zabbix_export:
triggers:
-
uuid: dea364bf454746bca6be38d7e0759d06
- expression: '(last(/Morningstar ProStar PWM SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar PWM SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar PWM SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar PWM SNMP/status.net.uptime)<10m)'
+ expression: '(last(/Morningstar ProStar PWM by SNMP/status.hw.uptime)>0 and last(/Morningstar ProStar PWM by SNMP/status.hw.uptime)<10m) or (last(/Morningstar ProStar PWM by SNMP/status.hw.uptime)=0 and last(/Morningstar ProStar PWM by SNMP/status.net.uptime)<10m)'
name: 'Status: Device has been restarted'
event_name: 'Status: Device has been restarted (uptime < 10m)'
priority: INFO
@@ -1374,7 +1374,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'array.voltage[arrayVoltage.0]'
-
uuid: 252a40cfba4242deac69f8ed77a04b84
@@ -1384,14 +1384,14 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'charge.current[chargeCurrent.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'load.current[loadCurrent.0]'
-
uuid: 94e4d2db752b4c54a8b497516b515fe0
@@ -1401,19 +1401,19 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'temp.ambient[ambientTemperature.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'temp.battery[batteryTemperature.0]'
-
sortorder: '2'
drawtype: GRADIENT_LINE
color: F63100
item:
- host: 'Morningstar ProStar PWM SNMP'
+ host: 'Morningstar ProStar PWM by SNMP'
key: 'temp.heatsink[heatsinkTemperature.0]'
diff --git a/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/README.md b/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/README.md
index e522ee5a9e2..57b7d7c81a7 100644
--- a/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/README.md
+++ b/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/README.md
@@ -1,9 +1,9 @@
-# Morningstar SunSaver MPPT SNMP
+# Morningstar SunSaver MPPT by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -77,52 +77,52 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar SunSaver MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
-|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar SunSaver MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
-|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
-|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
-|Battery: High battery voltage |<p>-</p> |`min(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
-|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
-|Load: Device load in warning state |<p>-</p> |`last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
-|Load: Device load in critical state |<p>-</p> |`last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
-|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar SunSaver MPPT SNMP/status.hw.uptime)>0 and last(/Morningstar SunSaver MPPT SNMP/status.hw.uptime)<10m) or (last(/Morningstar SunSaver MPPT SNMP/status.hw.uptime)=0 and last(/Morningstar SunSaver MPPT SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar SunSaver MPPT SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
-|Status: Device has "overcurrent" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "mosfetSShorted" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
-|Status: Device has "softwareFault" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","softwareFault")=2` |HIGH | |
-|Status: Device has "batteryHvd" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2` |HIGH | |
-|Status: Device has "arrayHvd" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "rtsShorted" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2` |HIGH | |
-|Status: Device has "rtsNoLongerValid" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2` |HIGH | |
-|Status: Device has "localTempSensorDamaged" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2` |HIGH | |
-|Status: Device has "externalShortCircuit" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2` |HIGH | |
-|Status: Device has "overcurrent" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "mosfetShorted" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2` |HIGH | |
-|Status: Device has "software" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2` |HIGH | |
-|Status: Device has "loadHvd" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2` |HIGH | |
-|Status: Device has "highTempDisconnect" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "unknownLoadFault" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","unknownLoadFault")=2` |HIGH | |
-|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
-|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
-|Status: Device has "sspptHot" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","sspptHot")=2` |WARNING | |
-|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
-|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
-|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
-|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
-|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
-|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
-|Status: Device has "p12VoltageReferenceOff" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2` |WARNING | |
-|Status: Device has "highVaCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","highVaCurrentLimit")=2` |WARNING | |
-|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
-|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
-|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
-|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
+|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar SunSaver MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
+|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar SunSaver MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
+|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
+|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
+|Battery: High battery voltage |<p>-</p> |`min(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
+|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
+|Load: Device load in warning state |<p>-</p> |`last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
+|Load: Device load in critical state |<p>-</p> |`last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
+|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar SunSaver MPPT by SNMP/status.hw.uptime)>0 and last(/Morningstar SunSaver MPPT by SNMP/status.hw.uptime)<10m) or (last(/Morningstar SunSaver MPPT by SNMP/status.hw.uptime)=0 and last(/Morningstar SunSaver MPPT by SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar SunSaver MPPT by SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
+|Status: Device has "overcurrent" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "mosfetSShorted" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
+|Status: Device has "softwareFault" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","softwareFault")=2` |HIGH | |
+|Status: Device has "batteryHvd" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2` |HIGH | |
+|Status: Device has "arrayHvd" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "rtsShorted" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2` |HIGH | |
+|Status: Device has "rtsNoLongerValid" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2` |HIGH | |
+|Status: Device has "localTempSensorDamaged" array faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2` |HIGH | |
+|Status: Device has "externalShortCircuit" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2` |HIGH | |
+|Status: Device has "overcurrent" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "mosfetShorted" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2` |HIGH | |
+|Status: Device has "software" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2` |HIGH | |
+|Status: Device has "loadHvd" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2` |HIGH | |
+|Status: Device has "highTempDisconnect" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "unknownLoadFault" load faults flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","unknownLoadFault")=2` |HIGH | |
+|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
+|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
+|Status: Device has "sspptHot" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","sspptHot")=2` |WARNING | |
+|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
+|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
+|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
+|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
+|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
+|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
+|Status: Device has "p12VoltageReferenceOff" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2` |WARNING | |
+|Status: Device has "highVaCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","highVaCurrentLimit")=2` |WARNING | |
+|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
+|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
+|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
+|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/template_net_morningstar_sunsaver_mppt_snmp.yaml b/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/template_net_morningstar_sunsaver_mppt_snmp.yaml
index 54361d92991..a8f0526bc1c 100644
--- a/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/template_net_morningstar_sunsaver_mppt_snmp.yaml
+++ b/templates/net/morningstar/morningstar_sunsaver_mppt_snmp/template_net_morningstar_sunsaver_mppt_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:45Z'
+ date: '2022-10-27T14:44:09Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: f1336fd88ab0415a9c02892a71e50032
- template: 'Morningstar SunSaver MPPT SNMP'
- name: 'Morningstar SunSaver MPPT SNMP'
+ template: 'Morningstar SunSaver MPPT by SNMP'
+ name: 'Morningstar SunSaver MPPT by SNMP'
description: |
MIBs used:
SUNSAVER-MPPT
@@ -231,7 +231,7 @@ zabbix_export:
triggers:
-
uuid: 0362139c66f4464db8c022b9ffce5502
- expression: 'last(/Morningstar SunSaver MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar SunSaver MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
name: 'Battery: Device charge in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -241,14 +241,14 @@ zabbix_export:
value: notice
-
uuid: d5439cee53b148ecb4186286c4e93ada
- expression: 'last(/Morningstar SunSaver MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
+ expression: 'last(/Morningstar SunSaver MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
name: 'Battery: Device charge in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Battery: Device charge in critical state'
- expression: 'last(/Morningstar SunSaver MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar SunSaver MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
tags:
-
tag: scope
@@ -382,7 +382,7 @@ zabbix_export:
triggers:
-
uuid: bbd3a89b012a40daa646ec7113d43e43
- expression: 'last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
name: 'Load: Device load in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -392,14 +392,14 @@ zabbix_export:
value: notice
-
uuid: 8f6967c1b577431c995a3c13f8cdb1c1
- expression: 'last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
+ expression: 'last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
name: 'Load: Device load in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Load: Device load in critical state'
- expression: 'last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SunSaver MPPT SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SunSaver MPPT by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
tags:
-
tag: scope
@@ -494,7 +494,7 @@ zabbix_export:
triggers:
-
uuid: 86220f6cc9164490b6d80be4a249e749
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
name: 'Status: Device has "currentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -504,7 +504,7 @@ zabbix_export:
value: notice
-
uuid: 69016ea6a1204435b3ddb8de6b8944dc
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
name: 'Status: Device has "currentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -514,7 +514,7 @@ zabbix_export:
value: notice
-
uuid: 2c02465ea74e4c63ab783d235c8f1a30
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
name: 'Status: Device has "heatsinkTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -524,7 +524,7 @@ zabbix_export:
value: notice
-
uuid: 1aa289c68f0b4b44a043281e6df9e462
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
name: 'Status: Device has "heatsinkTempSensorShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: 6d0ce7d6e2cc407ba0f4d989bdd9a141
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","highVaCurrentLimit")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","highVaCurrentLimit")=2'
name: 'Status: Device has "highVaCurrentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -544,7 +544,7 @@ zabbix_export:
value: notice
-
uuid: 718a3426363040e1ab82864635444056
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
name: 'Status: Device has "mosfetSOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -554,7 +554,7 @@ zabbix_export:
value: notice
-
uuid: 4eb4df0b4cf04a198190312cdb33538f
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2'
name: 'Status: Device has "p12VoltageReferenceOff" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -564,7 +564,7 @@ zabbix_export:
value: notice
-
uuid: e2ac890bb16d4e0798b0410f33c8a860
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -574,7 +574,7 @@ zabbix_export:
value: notice
-
uuid: 3b02b27bd4674ae3b820730cee8e611a
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
name: 'Status: Device has "rtsMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -584,7 +584,7 @@ zabbix_export:
value: notice
-
uuid: d253c037d5974ee38e888162687b96ef
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -594,7 +594,7 @@ zabbix_export:
value: notice
-
uuid: 1bea0c0e01314dbaa1cfdfa5a0625755
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","sspptHot")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","sspptHot")=2'
name: 'Status: Device has "sspptHot" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -604,7 +604,7 @@ zabbix_export:
value: notice
-
uuid: d28d0e51500a45859ccb6969d9b5493f
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
name: 'Status: Device has "systemMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -614,7 +614,7 @@ zabbix_export:
value: notice
-
uuid: 427f75a98d4440a38e40522bccec03bb
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
name: 'Status: Device has "uncalibrated" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -673,7 +673,7 @@ zabbix_export:
triggers:
-
uuid: 2d8b0bdeb95c49d68771af384d985311
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","arrayHvd")=2'
name: 'Status: Device has "arrayHvd" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -683,7 +683,7 @@ zabbix_export:
value: notice
-
uuid: 2e07c5d51691462ca0961d77ea974bd5
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","batteryHvd")=2'
name: 'Status: Device has "batteryHvd" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -693,7 +693,7 @@ zabbix_export:
value: notice
-
uuid: 65d2cd1ff93f45db9d7f572ee0a8f568
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -703,7 +703,7 @@ zabbix_export:
value: notice
-
uuid: fe217d10399044d7b1008f0010691e1e
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","localTempSensorDamaged")=2'
name: 'Status: Device has "localTempSensorDamaged" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -713,7 +713,7 @@ zabbix_export:
value: notice
-
uuid: fa62f9e4f0f84e278938ba18785a1b5f
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","mosfetSShorted")=2'
name: 'Status: Device has "mosfetSShorted" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -723,7 +723,7 @@ zabbix_export:
value: notice
-
uuid: 6f450621a12e46369745b2a0fed018ac
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -733,7 +733,7 @@ zabbix_export:
value: notice
-
uuid: 7ea38daa41a94ab3a9c1efc34276b17b
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsNoLongerValid")=2'
name: 'Status: Device has "rtsNoLongerValid" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -743,7 +743,7 @@ zabbix_export:
value: notice
-
uuid: 91edc885c3f140cc85bb6085f06e6820
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -753,7 +753,7 @@ zabbix_export:
value: notice
-
uuid: cae74543a0da478d80b9302a2431fe4b
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.array_faults[arrayFaults.0],#3,"like","softwareFault")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.array_faults[arrayFaults.0],#3,"like","softwareFault")=2'
name: 'Status: Device has "softwareFault" array faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -835,7 +835,7 @@ zabbix_export:
triggers:
-
uuid: d086fbb093344723a4bb5fe928e984ff
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -845,7 +845,7 @@ zabbix_export:
value: notice
-
uuid: 5743ed062a954330928092fb8574002a
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","externalShortCircuit")=2'
name: 'Status: Device has "externalShortCircuit" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -855,7 +855,7 @@ zabbix_export:
value: notice
-
uuid: 354a1512bca5468585a489dd14fc793d
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","highTempDisconnect")=2'
name: 'Status: Device has "highTempDisconnect" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -865,7 +865,7 @@ zabbix_export:
value: notice
-
uuid: 3640e470580846ac9e1651cba186d0a3
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","loadHvd")=2'
name: 'Status: Device has "loadHvd" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -875,7 +875,7 @@ zabbix_export:
value: notice
-
uuid: d3911d64792e4b88b31cb51a405a1a2e
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","mosfetShorted")=2'
name: 'Status: Device has "mosfetShorted" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -885,7 +885,7 @@ zabbix_export:
value: notice
-
uuid: d1bfa4177c0844ec9fc2bc7270c09338
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -895,7 +895,7 @@ zabbix_export:
value: notice
-
uuid: baaba919b58546f08cdcd1e2791feb27
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","software")=2'
name: 'Status: Device has "software" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -905,7 +905,7 @@ zabbix_export:
value: notice
-
uuid: 41e47074c983421a83b1e500d4591188
- expression: 'count(/Morningstar SunSaver MPPT SNMP/status.load_faults[loadFaults.0],#3,"like","unknownLoadFault")=2'
+ expression: 'count(/Morningstar SunSaver MPPT by SNMP/status.load_faults[loadFaults.0],#3,"like","unknownLoadFault")=2'
name: 'Status: Device has "unknownLoadFault" load faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -934,7 +934,7 @@ zabbix_export:
triggers:
-
uuid: 72e6e08faed647a98a027bd25b6a7106
- expression: 'nodata(/Morningstar SunSaver MPPT SNMP/status.net.uptime,5m)=1'
+ expression: 'nodata(/Morningstar SunSaver MPPT by SNMP/status.net.uptime,5m)=1'
name: 'Status: Failed to fetch data'
event_name: 'Status: Failed to fetch data (or no data for 5m)'
priority: WARNING
@@ -1017,7 +1017,7 @@ zabbix_export:
triggers:
-
uuid: cc121c44be05440a82d3344c530456e5
- expression: 'min(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
name: 'Temperature: Critically high battery temperature'
event_name: 'Temperature: Critically high battery temperature (over {$BATTERY.TEMP.MAX.CRIT}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1028,7 +1028,7 @@ zabbix_export:
value: notice
-
uuid: 9e0d552b93ae402d98c327420c99d160
- expression: 'max(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
name: 'Temperature: Critically low battery temperature'
event_name: 'Temperature: Critically low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1039,7 +1039,7 @@ zabbix_export:
value: notice
-
uuid: 95b600e280b94949b41422eb60def010
- expression: 'min(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
name: 'Temperature: High battery temperature'
event_name: 'Temperature: High battery temperature (over {$BATTERY.TEMP.MAX.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1047,14 +1047,14 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically high battery temperature'
- expression: 'min(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: e351922a0a8c4c53972d9477d47af528
- expression: 'max(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
+ expression: 'max(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
name: 'Temperature: Low battery temperature'
event_name: 'Temperature: Low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1062,7 +1062,7 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically low battery temperature'
- expression: 'max(/Morningstar SunSaver MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar SunSaver MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
tags:
-
tag: scope
@@ -1126,7 +1126,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bf4ad2cee8cf41baafa3d81df5fbe4d3
- expression: 'min(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
name: 'Battery: Critically high battery voltage'
event_name: 'Battery: Critically high battery voltage (over {#VOLTAGE.MAX.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1137,7 +1137,7 @@ zabbix_export:
value: capacity
-
uuid: 2aedfef9b8764881a4768e6b32793820
- expression: 'max(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
name: 'Battery: Critically low battery voltage'
event_name: 'Battery: Critically low battery voltage (below {#VOLTAGE.MIN.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1148,7 +1148,7 @@ zabbix_export:
value: capacity
-
uuid: bec4c7a6a1ab44a4adc8e4286b9a41d9
- expression: 'min(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
+ expression: 'min(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
name: 'Battery: High battery voltage'
event_name: 'Battery: High battery voltage (over {#VOLTAGE.MAX.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1156,14 +1156,14 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically high battery voltage'
- expression: 'min(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
tags:
-
tag: scope
value: capacity
-
uuid: c06425d8a0a24b5f80fd0591be61b3f0
- expression: 'max(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
+ expression: 'max(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
name: 'Battery: Low battery voltage'
event_name: 'Battery: Low battery voltage (below {#VOLTAGE.MIN.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1171,7 +1171,7 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically low battery voltage'
- expression: 'max(/Morningstar SunSaver MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar SunSaver MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
tags:
-
tag: scope
@@ -1185,14 +1185,14 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'battery.voltage[batteryVoltage.0{#SINGLETON}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'load.voltage[loadVoltage.0]'
master_item:
key: 'battery.voltage.discovery[batteryVoltage.0]'
@@ -1348,7 +1348,7 @@ zabbix_export:
triggers:
-
uuid: fd5dcb256d4547da9c432c1b9c01b0ae
- expression: '(last(/Morningstar SunSaver MPPT SNMP/status.hw.uptime)>0 and last(/Morningstar SunSaver MPPT SNMP/status.hw.uptime)<10m) or (last(/Morningstar SunSaver MPPT SNMP/status.hw.uptime)=0 and last(/Morningstar SunSaver MPPT SNMP/status.net.uptime)<10m)'
+ expression: '(last(/Morningstar SunSaver MPPT by SNMP/status.hw.uptime)>0 and last(/Morningstar SunSaver MPPT by SNMP/status.hw.uptime)<10m) or (last(/Morningstar SunSaver MPPT by SNMP/status.hw.uptime)=0 and last(/Morningstar SunSaver MPPT by SNMP/status.net.uptime)<10m)'
name: 'Status: Device has been restarted'
event_name: 'Status: Device has been restarted (uptime < 10m)'
priority: INFO
@@ -1367,21 +1367,21 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'array.sweep_vmp[arrayVmp.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'array.sweep_voc[arrayVoc.0]'
-
sortorder: '2'
drawtype: GRADIENT_LINE
color: F63100
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'array.voltage[arrayVoltage.0]'
-
uuid: ad5b73c7352747a6930c9d8647f70bf1
@@ -1391,14 +1391,14 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'charge.current[chargeCurrent.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'load.current[loadCurrent.0]'
-
uuid: 7b96265600a748728d881f5dfee485d2
@@ -1408,19 +1408,19 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'temp.ambient[ambientTemperature.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'temp.battery[batteryTemperature.0]'
-
sortorder: '2'
drawtype: GRADIENT_LINE
color: F63100
item:
- host: 'Morningstar SunSaver MPPT SNMP'
+ host: 'Morningstar SunSaver MPPT by SNMP'
key: 'temp.heatsink[heatsinkTemperature.0]'
diff --git a/templates/net/morningstar/morningstar_suresine_snmp/README.md b/templates/net/morningstar/morningstar_suresine_snmp/README.md
index 8a9426d3cd0..4ee47c0cf80 100644
--- a/templates/net/morningstar/morningstar_suresine_snmp/README.md
+++ b/templates/net/morningstar/morningstar_suresine_snmp/README.md
@@ -1,9 +1,9 @@
-# Morningstar SureSine SNMP
+# Morningstar SureSine by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -63,28 +63,28 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
-|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
-|Battery: High battery voltage |<p>-</p> |`min(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
-|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
-|Load: Device load in warning state |<p>-</p> |`last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
-|Load: Device load in critical state |<p>-</p> |`last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
-|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar SureSine SNMP/status.hw.uptime)>0 and last(/Morningstar SureSine SNMP/status.hw.uptime)<10m) or (last(/Morningstar SureSine SNMP/status.hw.uptime)=0 and last(/Morningstar SureSine SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar SureSine SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
-|Status: Device has "reset" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","reset")=2` |HIGH | |
-|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "unknownFault" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","unknownFault")=2` |HIGH | |
-|Status: Device has "software" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","software")=2` |HIGH | |
-|Status: Device has "highVoltageDisconnect" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2` |HIGH | |
-|Status: Device has "suresineHot" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","suresineHot")=2` |HIGH | |
-|Status: Device has "dipSwitchChanged" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorShort" alarm flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShort")=2` |WARNING | |
-|Status: Device has "unknownAlarm" alarm flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","unknownAlarm")=2` |WARNING | |
-|Status: Device has "suresineHot" alarm flag |<p>-</p> |`count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","suresineHot")=2` |WARNING | |
+|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
+|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
+|Battery: High battery voltage |<p>-</p> |`min(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
+|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
+|Load: Device load in warning state |<p>-</p> |`last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
+|Load: Device load in critical state |<p>-</p> |`last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
+|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar SureSine by SNMP/status.hw.uptime)>0 and last(/Morningstar SureSine by SNMP/status.hw.uptime)<10m) or (last(/Morningstar SureSine by SNMP/status.hw.uptime)=0 and last(/Morningstar SureSine by SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar SureSine by SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
+|Status: Device has "reset" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","reset")=2` |HIGH | |
+|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "unknownFault" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","unknownFault")=2` |HIGH | |
+|Status: Device has "software" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","software")=2` |HIGH | |
+|Status: Device has "highVoltageDisconnect" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2` |HIGH | |
+|Status: Device has "suresineHot" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","suresineHot")=2` |HIGH | |
+|Status: Device has "dipSwitchChanged" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","dipSwitchChanged")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorShort" alarm flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShort")=2` |WARNING | |
+|Status: Device has "unknownAlarm" alarm flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","unknownAlarm")=2` |WARNING | |
+|Status: Device has "suresineHot" alarm flag |<p>-</p> |`count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","suresineHot")=2` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/morningstar/morningstar_suresine_snmp/template_net_morningstar_suresine_snmp.yaml b/templates/net/morningstar/morningstar_suresine_snmp/template_net_morningstar_suresine_snmp.yaml
index 958284f4af9..478cd7ede5f 100644
--- a/templates/net/morningstar/morningstar_suresine_snmp/template_net_morningstar_suresine_snmp.yaml
+++ b/templates/net/morningstar/morningstar_suresine_snmp/template_net_morningstar_suresine_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:46Z'
+ date: '2022-10-27T14:44:11Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 3bbfe42c78c74f04a2565431fbdd19e2
- template: 'Morningstar SureSine SNMP'
- name: 'Morningstar SureSine SNMP'
+ template: 'Morningstar SureSine by SNMP'
+ name: 'Morningstar SureSine by SNMP'
description: |
MIBs used:
SURESINE
@@ -115,7 +115,7 @@ zabbix_export:
triggers:
-
uuid: 83a1cad652b445a69541208f81b12c23
- expression: 'last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
name: 'Load: Device load in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -125,14 +125,14 @@ zabbix_export:
value: notice
-
uuid: bed6bfb29f5d4a3e89b9028b45bfb8b8
- expression: 'last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
+ expression: 'last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.WARN:"override"}'
name: 'Load: Device load in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Load: Device load in critical state'
- expression: 'last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SureSine SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar SureSine by SNMP/load.state[loadState.0])={$LOAD.STATE.CRIT:"fault"}'
tags:
-
tag: scope
@@ -183,7 +183,7 @@ zabbix_export:
triggers:
-
uuid: 6181b0f6c4cf4febaa86039dae994f30
- expression: 'count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
name: 'Status: Device has "heatsinkTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -193,7 +193,7 @@ zabbix_export:
value: notice
-
uuid: ebe250d8faf543429bd5732114f05fd4
- expression: 'count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShort")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShort")=2'
name: 'Status: Device has "heatsinkTempSensorShort" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -203,7 +203,7 @@ zabbix_export:
value: notice
-
uuid: ff3ee8e7bd074037a99a56f02dfaff72
- expression: 'count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","suresineHot")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","suresineHot")=2'
name: 'Status: Device has "suresineHot" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -213,7 +213,7 @@ zabbix_export:
value: notice
-
uuid: 64c7437f53f74578a85b358f73529322
- expression: 'count(/Morningstar SureSine SNMP/status.alarms[alarms.0],#3,"like","unknownAlarm")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.alarms[alarms.0],#3,"like","unknownAlarm")=2'
name: 'Status: Device has "unknownAlarm" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -271,7 +271,7 @@ zabbix_export:
triggers:
-
uuid: 438d1fb319234de9aaa74fa565e6c661
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -281,7 +281,7 @@ zabbix_export:
value: notice
-
uuid: 174685e8f89f4e21b7275db6be7623b2
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","dipSwitchChanged")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","dipSwitchChanged")=2'
name: 'Status: Device has "dipSwitchChanged" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -291,7 +291,7 @@ zabbix_export:
value: notice
-
uuid: 283d5eb818744b25b4275509b0492bfd
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2'
name: 'Status: Device has "highVoltageDisconnect" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -301,7 +301,7 @@ zabbix_export:
value: notice
-
uuid: a271f6d0e1504e46966da689b91cf1f7
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -311,7 +311,7 @@ zabbix_export:
value: notice
-
uuid: 88df087dcb434c5d9980d249f077a661
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","reset")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","reset")=2'
name: 'Status: Device has "reset" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -321,7 +321,7 @@ zabbix_export:
value: notice
-
uuid: 9fa2ec74f9b34f0082d9173f57e1edf6
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","software")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","software")=2'
name: 'Status: Device has "software" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -331,7 +331,7 @@ zabbix_export:
value: notice
-
uuid: 970e89c852c34a219ad0c1fce357e97a
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","suresineHot")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","suresineHot")=2'
name: 'Status: Device has "suresineHot" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -341,7 +341,7 @@ zabbix_export:
value: notice
-
uuid: fe023e11a544470cb09db1585d7f1e83
- expression: 'count(/Morningstar SureSine SNMP/status.faults[faults.0],#3,"like","unknownFault")=2'
+ expression: 'count(/Morningstar SureSine by SNMP/status.faults[faults.0],#3,"like","unknownFault")=2'
name: 'Status: Device has "unknownFault" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -394,7 +394,7 @@ zabbix_export:
triggers:
-
uuid: db5506294fd945659eae945014332a62
- expression: 'nodata(/Morningstar SureSine SNMP/status.net.uptime,5m)=1'
+ expression: 'nodata(/Morningstar SureSine by SNMP/status.net.uptime,5m)=1'
name: 'Status: Failed to fetch data'
event_name: 'Status: Failed to fetch data (or no data for 5m)'
priority: WARNING
@@ -466,7 +466,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4b27f6ecdc674803a883a8a60e3ddce2
- expression: 'min(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
name: 'Battery: Critically high battery voltage'
event_name: 'Battery: Critically high battery voltage (over {#VOLTAGE.MAX.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -477,7 +477,7 @@ zabbix_export:
value: capacity
-
uuid: dfbcd455a92d423fbb841f2d6b6293a8
- expression: 'max(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
name: 'Battery: Critically low battery voltage'
event_name: 'Battery: Critically low battery voltage (below {#VOLTAGE.MIN.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -488,7 +488,7 @@ zabbix_export:
value: capacity
-
uuid: e0173479978841ec8607430cf2fb356e
- expression: 'min(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
+ expression: 'min(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
name: 'Battery: High battery voltage'
event_name: 'Battery: High battery voltage (over {#VOLTAGE.MAX.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -496,14 +496,14 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically high battery voltage'
- expression: 'min(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
tags:
-
tag: scope
value: capacity
-
uuid: 75a433d7ec28440f947a4aaed3aed33d
- expression: 'max(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
+ expression: 'max(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
name: 'Battery: Low battery voltage'
event_name: 'Battery: Low battery voltage (below {#VOLTAGE.MIN.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -511,7 +511,7 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically low battery voltage'
- expression: 'max(/Morningstar SureSine SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar SureSine by SNMP/battery.voltage[batteryVoltageSlow.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
tags:
-
tag: scope
@@ -525,7 +525,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar SureSine SNMP'
+ host: 'Morningstar SureSine by SNMP'
key: 'battery.voltage[batteryVoltageSlow.0{#SINGLETON}]'
master_item:
key: 'battery.voltage.discovery[batteryVoltageSlow.0]'
@@ -650,7 +650,7 @@ zabbix_export:
triggers:
-
uuid: f9404001de4c4c1d8438e0b560977398
- expression: '(last(/Morningstar SureSine SNMP/status.hw.uptime)>0 and last(/Morningstar SureSine SNMP/status.hw.uptime)<10m) or (last(/Morningstar SureSine SNMP/status.hw.uptime)=0 and last(/Morningstar SureSine SNMP/status.net.uptime)<10m)'
+ expression: '(last(/Morningstar SureSine by SNMP/status.hw.uptime)>0 and last(/Morningstar SureSine by SNMP/status.hw.uptime)<10m) or (last(/Morningstar SureSine by SNMP/status.hw.uptime)=0 and last(/Morningstar SureSine by SNMP/status.net.uptime)<10m)'
name: 'Status: Device has been restarted'
event_name: 'Status: Device has been restarted (uptime < 10m)'
priority: INFO
@@ -669,7 +669,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar SureSine SNMP'
+ host: 'Morningstar SureSine by SNMP'
key: 'load.ac_current[acCurrent.0]'
-
uuid: e15d5c71b19444f18d5917519d3fdb74
@@ -679,5 +679,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar SureSine SNMP'
+ host: 'Morningstar SureSine by SNMP'
key: 'temp.heatsink[heatsinkTemperature.0]'
diff --git a/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/README.md b/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/README.md
index 9773f71838d..3b884ec3b71 100644
--- a/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/README.md
+++ b/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/README.md
@@ -1,9 +1,9 @@
-# Morningstar TriStar MPPT 600V SNMP
+# Morningstar TriStar MPPT 600V by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -73,77 +73,77 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar TriStar MPPT 600V SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
-|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar TriStar MPPT 600V SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
-|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
-|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
-|Battery: High battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
-|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
-|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar TriStar MPPT 600V SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT 600V SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT 600V SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT 600V SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar TriStar MPPT 600V SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
-|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "fetShort" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fetShort")=2` |HIGH | |
-|Status: Device has "softwareFault" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","softwareFault")=2` |HIGH | |
-|Status: Device has "batteryHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2` |HIGH | |
-|Status: Device has "arrayHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2` |HIGH | |
-|Status: Device has "dipSwitchChange" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "rtsShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2` |HIGH | |
-|Status: Device has "rtsDisconnected" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2` |HIGH | |
-|Status: Device has "eepromRetryLimit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2` |HIGH | |
-|Status: Device has "controllerWasReset" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","controllerWasReset")=2` |HIGH | |
-|Status: Device has "chargeSlaveControlTimeout" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","chargeSlaveControlTimeout")=2` |HIGH | |
-|Status: Device has "rs232SerialToMeterBridge" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","rs232SerialToMeterBridge")=2` |HIGH | |
-|Status: Device has "batteryLvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","batteryLvd")=2` |HIGH | |
-|Status: Device has "powerboardCommunicationFault" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","powerboardCommunicationFault")=2` |HIGH | |
-|Status: Device has "fault16Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault16Software")=2` |HIGH | |
-|Status: Device has "fault17Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault17Software")=2` |HIGH | |
-|Status: Device has "fault18Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault18Software")=2` |HIGH | |
-|Status: Device has "fault19Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault19Software")=2` |HIGH | |
-|Status: Device has "fault20Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault20Software")=2` |HIGH | |
-|Status: Device has "fault21Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault21Software")=2` |HIGH | |
-|Status: Device has "fpgaVersion" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fpgaVersion")=2` |HIGH | |
-|Status: Device has "currentSensorReferenceOutOfRange" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","currentSensorReferenceOutOfRange")=2` |HIGH | |
-|Status: Device has "ia-refSlaveModeTimeout" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","ia-refSlaveModeTimeout")=2` |HIGH | |
-|Status: Device has "blockbusBoot" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","blockbusBoot")=2` |HIGH | |
-|Status: Device has "hscommMaster" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","hscommMaster")=2` |HIGH | |
-|Status: Device has "hscomm" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","hscomm")=2` |HIGH | |
-|Status: Device has "slave" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","slave")=2` |HIGH | |
-|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
-|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
-|Status: Device has "highTemperatureCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2` |WARNING | |
-|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
-|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
-|Status: Device has "batterySense" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2` |WARNING | |
-|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
-|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
-|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
-|Status: Device has "highVoltageDisconnect" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2` |WARNING | |
-|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
-|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
-|Status: Device has "p12VoltageOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","p12VoltageOutOfRange")=2` |WARNING | |
-|Status: Device has "highArrayVCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2` |WARNING | |
-|Status: Device has "maxAdcValueReached" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2` |WARNING | |
-|Status: Device has "controllerWasReset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2` |WARNING | |
-|Status: Device has "alarm21Internal" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","alarm21Internal")=2` |WARNING | |
-|Status: Device has "p3VoltageOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","p3VoltageOutOfRange")=2` |WARNING | |
-|Status: Device has "derateLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","derateLimit")=2` |WARNING | |
-|Status: Device has "arrayCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2` |WARNING | |
-|Status: Device has "ee-i2cRetryLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","ee-i2cRetryLimit")=2` |WARNING | |
-|Status: Device has "ethernetAlarm" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","ethernetAlarm")=2` |WARNING | |
-|Status: Device has "lvd" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","lvd")=2` |WARNING | |
-|Status: Device has "software" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","software")=2` |WARNING | |
-|Status: Device has "fp12VoltageOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","fp12VoltageOutOfRange")=2` |WARNING | |
-|Status: Device has "extflashFault" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","extflashFault")=2` |WARNING | |
-|Status: Device has "slaveControlFault" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","slaveControlFault")=2` |WARNING | |
-|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
-|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
-|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
-|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
+|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar TriStar MPPT 600V by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
+|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar TriStar MPPT 600V by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
+|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
+|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
+|Battery: High battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
+|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
+|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar TriStar MPPT 600V by SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT 600V by SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT 600V by SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT 600V by SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar TriStar MPPT 600V by SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
+|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "fetShort" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fetShort")=2` |HIGH | |
+|Status: Device has "softwareFault" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","softwareFault")=2` |HIGH | |
+|Status: Device has "batteryHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2` |HIGH | |
+|Status: Device has "arrayHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2` |HIGH | |
+|Status: Device has "dipSwitchChange" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "rtsShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2` |HIGH | |
+|Status: Device has "rtsDisconnected" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2` |HIGH | |
+|Status: Device has "eepromRetryLimit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2` |HIGH | |
+|Status: Device has "controllerWasReset" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","controllerWasReset")=2` |HIGH | |
+|Status: Device has "chargeSlaveControlTimeout" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","chargeSlaveControlTimeout")=2` |HIGH | |
+|Status: Device has "rs232SerialToMeterBridge" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","rs232SerialToMeterBridge")=2` |HIGH | |
+|Status: Device has "batteryLvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","batteryLvd")=2` |HIGH | |
+|Status: Device has "powerboardCommunicationFault" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","powerboardCommunicationFault")=2` |HIGH | |
+|Status: Device has "fault16Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault16Software")=2` |HIGH | |
+|Status: Device has "fault17Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault17Software")=2` |HIGH | |
+|Status: Device has "fault18Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault18Software")=2` |HIGH | |
+|Status: Device has "fault19Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault19Software")=2` |HIGH | |
+|Status: Device has "fault20Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault20Software")=2` |HIGH | |
+|Status: Device has "fault21Software" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault21Software")=2` |HIGH | |
+|Status: Device has "fpgaVersion" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fpgaVersion")=2` |HIGH | |
+|Status: Device has "currentSensorReferenceOutOfRange" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","currentSensorReferenceOutOfRange")=2` |HIGH | |
+|Status: Device has "ia-refSlaveModeTimeout" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","ia-refSlaveModeTimeout")=2` |HIGH | |
+|Status: Device has "blockbusBoot" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","blockbusBoot")=2` |HIGH | |
+|Status: Device has "hscommMaster" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","hscommMaster")=2` |HIGH | |
+|Status: Device has "hscomm" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","hscomm")=2` |HIGH | |
+|Status: Device has "slave" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","slave")=2` |HIGH | |
+|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
+|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
+|Status: Device has "highTemperatureCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2` |WARNING | |
+|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
+|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
+|Status: Device has "batterySense" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2` |WARNING | |
+|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
+|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
+|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
+|Status: Device has "highVoltageDisconnect" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2` |WARNING | |
+|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
+|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
+|Status: Device has "p12VoltageOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageOutOfRange")=2` |WARNING | |
+|Status: Device has "highArrayVCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2` |WARNING | |
+|Status: Device has "maxAdcValueReached" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2` |WARNING | |
+|Status: Device has "controllerWasReset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2` |WARNING | |
+|Status: Device has "alarm21Internal" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","alarm21Internal")=2` |WARNING | |
+|Status: Device has "p3VoltageOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","p3VoltageOutOfRange")=2` |WARNING | |
+|Status: Device has "derateLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","derateLimit")=2` |WARNING | |
+|Status: Device has "arrayCurrentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2` |WARNING | |
+|Status: Device has "ee-i2cRetryLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","ee-i2cRetryLimit")=2` |WARNING | |
+|Status: Device has "ethernetAlarm" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","ethernetAlarm")=2` |WARNING | |
+|Status: Device has "lvd" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","lvd")=2` |WARNING | |
+|Status: Device has "software" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","software")=2` |WARNING | |
+|Status: Device has "fp12VoltageOutOfRange" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","fp12VoltageOutOfRange")=2` |WARNING | |
+|Status: Device has "extflashFault" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","extflashFault")=2` |WARNING | |
+|Status: Device has "slaveControlFault" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","slaveControlFault")=2` |WARNING | |
+|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
+|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
+|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
+|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/template_net_morningstar_tristar_mppt_600V_snmp.yaml b/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/template_net_morningstar_tristar_mppt_600V_snmp.yaml
index f837536d082..a472fa688e9 100644
--- a/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/template_net_morningstar_tristar_mppt_600V_snmp.yaml
+++ b/templates/net/morningstar/morningstar_tristar_mppt_600V_snmp/template_net_morningstar_tristar_mppt_600V_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:49Z'
+ date: '2022-10-27T14:44:10Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 2d20a2fbd540492089fdcafc8feb60e3
- template: 'Morningstar TriStar MPPT 600V SNMP'
- name: 'Morningstar TriStar MPPT 600V SNMP'
+ template: 'Morningstar TriStar MPPT 600V by SNMP'
+ name: 'Morningstar TriStar MPPT 600V by SNMP'
description: |
MIBs used:
TRISTAR-MPPT
@@ -224,7 +224,7 @@ zabbix_export:
triggers:
-
uuid: ed2b56b78fce47f88b679774640706b5
- expression: 'last(/Morningstar TriStar MPPT 600V SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar TriStar MPPT 600V by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
name: 'Battery: Device charge in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -234,14 +234,14 @@ zabbix_export:
value: notice
-
uuid: 6f21bda91cc640809f0f4faf04ba86f4
- expression: 'last(/Morningstar TriStar MPPT 600V SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
+ expression: 'last(/Morningstar TriStar MPPT 600V by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
name: 'Battery: Device charge in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Battery: Device charge in critical state'
- expression: 'last(/Morningstar TriStar MPPT 600V SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar TriStar MPPT 600V by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
tags:
-
tag: scope
@@ -360,7 +360,7 @@ zabbix_export:
triggers:
-
uuid: 62d1ffe8417c4ef9b746d17185d8853b
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","alarm21Internal")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","alarm21Internal")=2'
name: 'Status: Device has "alarm21Internal" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -370,7 +370,7 @@ zabbix_export:
value: notice
-
uuid: 367d91fa49c241e795a2b497739c6f01
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","arrayCurrentOffset")=2'
name: 'Status: Device has "arrayCurrentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -380,7 +380,7 @@ zabbix_export:
value: notice
-
uuid: 1c1baf4eea9e416a98bcf3e12d7ae01f
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2'
name: 'Status: Device has "batterySense" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -390,7 +390,7 @@ zabbix_export:
value: notice
-
uuid: b627e79de7b446d69ee245b07f755405
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
name: 'Status: Device has "batterySenseDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -400,7 +400,7 @@ zabbix_export:
value: notice
-
uuid: 73aba1af987843d98542105f2b41c5bd
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2'
name: 'Status: Device has "controllerWasReset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -410,7 +410,7 @@ zabbix_export:
value: notice
-
uuid: aae5a3441b9e4394a39e7a8c5ce29e0c
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
name: 'Status: Device has "currentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -420,7 +420,7 @@ zabbix_export:
value: notice
-
uuid: f8e42483b1534ed586252db0c8880aa6
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
name: 'Status: Device has "currentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -430,7 +430,7 @@ zabbix_export:
value: notice
-
uuid: bd32be9b60334cc1b80d2de129f0f1a2
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","derateLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","derateLimit")=2'
name: 'Status: Device has "derateLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -440,7 +440,7 @@ zabbix_export:
value: notice
-
uuid: e0886663f4df4ff0965fac33951d4ffc
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","ee-i2cRetryLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","ee-i2cRetryLimit")=2'
name: 'Status: Device has "ee-i2cRetryLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -450,7 +450,7 @@ zabbix_export:
value: notice
-
uuid: abfeb2c3c566401b9f30cd28765aacff
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","ethernetAlarm")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","ethernetAlarm")=2'
name: 'Status: Device has "ethernetAlarm" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -460,7 +460,7 @@ zabbix_export:
value: notice
-
uuid: a0ffdbf5695d4945960df6ea7defa071
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","extflashFault")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","extflashFault")=2'
name: 'Status: Device has "extflashFault" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -470,7 +470,7 @@ zabbix_export:
value: notice
-
uuid: f92ce5a55f0a4a65beca0abb748b7c04
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","fp12VoltageOutOfRange")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","fp12VoltageOutOfRange")=2'
name: 'Status: Device has "fp12VoltageOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -480,7 +480,7 @@ zabbix_export:
value: notice
-
uuid: 5bdcd298878a4baf97aab8df338e1123
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
name: 'Status: Device has "heatsinkTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -490,7 +490,7 @@ zabbix_export:
value: notice
-
uuid: 9fe220d99b524db8bbfe5b511ee91fa7
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
name: 'Status: Device has "heatsinkTempSensorShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -500,7 +500,7 @@ zabbix_export:
value: notice
-
uuid: dc8d3f71c60643b7a6a25a9d7452ce60
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2'
name: 'Status: Device has "highArrayVCurrentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -510,7 +510,7 @@ zabbix_export:
value: notice
-
uuid: d279f44217b046c789c865b8b44c9342
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2'
name: 'Status: Device has "highTemperatureCurrentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -520,7 +520,7 @@ zabbix_export:
value: notice
-
uuid: b48d1c04e95c4b89a7240fc2a611a499
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2'
name: 'Status: Device has "highVoltageDisconnect" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -530,7 +530,7 @@ zabbix_export:
value: notice
-
uuid: 767be108224d43a99ac2568166c9cd33
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","lvd")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","lvd")=2'
name: 'Status: Device has "lvd" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -540,7 +540,7 @@ zabbix_export:
value: notice
-
uuid: 107b8a4a63c146fa908f5b7ccc716258
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2'
name: 'Status: Device has "maxAdcValueReached" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -550,7 +550,7 @@ zabbix_export:
value: notice
-
uuid: 5792c3702ab94123891e02ee4c05339f
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
name: 'Status: Device has "mosfetSOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -560,7 +560,7 @@ zabbix_export:
value: notice
-
uuid: a115f88a282e41179b569633234f04e2
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","p3VoltageOutOfRange")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","p3VoltageOutOfRange")=2'
name: 'Status: Device has "p3VoltageOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 8a3906ceae5547ca8f9c916ca46e7be8
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","p12VoltageOutOfRange")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageOutOfRange")=2'
name: 'Status: Device has "p12VoltageOutOfRange" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -580,7 +580,7 @@ zabbix_export:
value: notice
-
uuid: 49d3fb027a88462aa7f67442a507c051
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -590,7 +590,7 @@ zabbix_export:
value: notice
-
uuid: 650cf2d3c06f4c55ac90b1dd23ca25d1
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
name: 'Status: Device has "rtsMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -600,7 +600,7 @@ zabbix_export:
value: notice
-
uuid: 48bb77b135c84d6a9e3792d8385f16da
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -610,7 +610,7 @@ zabbix_export:
value: notice
-
uuid: 7e363c7cc8ce4104a9c6269c9e94ac26
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","slaveControlFault")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","slaveControlFault")=2'
name: 'Status: Device has "slaveControlFault" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -620,7 +620,7 @@ zabbix_export:
value: notice
-
uuid: e1235a2201a542bb9ac67345c70641e3
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","software")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","software")=2'
name: 'Status: Device has "software" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -630,7 +630,7 @@ zabbix_export:
value: notice
-
uuid: cb5b84c99bcf45459bdc955c8604264b
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
name: 'Status: Device has "systemMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -640,7 +640,7 @@ zabbix_export:
value: notice
-
uuid: 72ce41657c1848d897255ad3de77d942
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
name: 'Status: Device has "uncalibrated" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -719,7 +719,7 @@ zabbix_export:
triggers:
-
uuid: 747a56182a6f4336b720a95b0609013c
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2'
name: 'Status: Device has "arrayHvd" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -729,7 +729,7 @@ zabbix_export:
value: notice
-
uuid: e9d7a51b64444e27b28b13ebf38a11c3
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2'
name: 'Status: Device has "batteryHvd" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -739,7 +739,7 @@ zabbix_export:
value: notice
-
uuid: b898ac485d094f1cb65020ad5459641b
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","batteryLvd")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","batteryLvd")=2'
name: 'Status: Device has "batteryLvd" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -749,7 +749,7 @@ zabbix_export:
value: notice
-
uuid: 806e83938072453ab66895044907c02d
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","blockbusBoot")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","blockbusBoot")=2'
name: 'Status: Device has "blockbusBoot" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -759,7 +759,7 @@ zabbix_export:
value: notice
-
uuid: f20f87cd6ce3414182cd2088a947ef24
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","chargeSlaveControlTimeout")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","chargeSlaveControlTimeout")=2'
name: 'Status: Device has "chargeSlaveControlTimeout" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -769,7 +769,7 @@ zabbix_export:
value: notice
-
uuid: f4478548ad17400c9cddbf8b27720952
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","controllerWasReset")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","controllerWasReset")=2'
name: 'Status: Device has "controllerWasReset" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -779,7 +779,7 @@ zabbix_export:
value: notice
-
uuid: 6c9a64ff6f61457daf826e831f51b048
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","currentSensorReferenceOutOfRange")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","currentSensorReferenceOutOfRange")=2'
name: 'Status: Device has "currentSensorReferenceOutOfRange" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -789,7 +789,7 @@ zabbix_export:
value: notice
-
uuid: 74d39d01841f454e8f72457104a42cb7
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -799,7 +799,7 @@ zabbix_export:
value: notice
-
uuid: 12d55fb0398c4fbb87ca948f2e692a38
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2'
name: 'Status: Device has "dipSwitchChange" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -809,7 +809,7 @@ zabbix_export:
value: notice
-
uuid: 25e71e9c3ad945ed9f48945cac45bb56
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2'
name: 'Status: Device has "eepromRetryLimit" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -819,7 +819,7 @@ zabbix_export:
value: notice
-
uuid: f6fafa09a41a428c87d5ef303071a7f7
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault16Software")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault16Software")=2'
name: 'Status: Device has "fault16Software" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -829,7 +829,7 @@ zabbix_export:
value: notice
-
uuid: 8f079e7606d14dc2ab6313fdae80bafc
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault17Software")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault17Software")=2'
name: 'Status: Device has "fault17Software" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -839,7 +839,7 @@ zabbix_export:
value: notice
-
uuid: c388f647dd48445d8b8e3eee02ea38fc
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault18Software")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault18Software")=2'
name: 'Status: Device has "fault18Software" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -849,7 +849,7 @@ zabbix_export:
value: notice
-
uuid: 1466954e09704b3092772f0996f692f4
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault19Software")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault19Software")=2'
name: 'Status: Device has "fault19Software" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -859,7 +859,7 @@ zabbix_export:
value: notice
-
uuid: 86595bafc3054fd99343f24bbfdc44e3
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault20Software")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault20Software")=2'
name: 'Status: Device has "fault20Software" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -869,7 +869,7 @@ zabbix_export:
value: notice
-
uuid: d269607e330243fe93e2f85c36d38114
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fault21Software")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fault21Software")=2'
name: 'Status: Device has "fault21Software" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -879,7 +879,7 @@ zabbix_export:
value: notice
-
uuid: 68d6b95b6b9e42ada5a212a913d1ae43
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fetShort")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fetShort")=2'
name: 'Status: Device has "fetShort" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -889,7 +889,7 @@ zabbix_export:
value: notice
-
uuid: dcb1c2bcc704405c8baae825124e3958
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","fpgaVersion")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","fpgaVersion")=2'
name: 'Status: Device has "fpgaVersion" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -899,7 +899,7 @@ zabbix_export:
value: notice
-
uuid: 351af5c43f984930b4ebdb8690c52e7d
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","hscomm")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","hscomm")=2'
name: 'Status: Device has "hscomm" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -909,7 +909,7 @@ zabbix_export:
value: notice
-
uuid: b32067a9b80c4836af4120f9f8e21bbd
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","hscommMaster")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","hscommMaster")=2'
name: 'Status: Device has "hscommMaster" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -919,7 +919,7 @@ zabbix_export:
value: notice
-
uuid: bb61ea6f03c94556bf4f333bc050206f
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","ia-refSlaveModeTimeout")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","ia-refSlaveModeTimeout")=2'
name: 'Status: Device has "ia-refSlaveModeTimeout" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -929,7 +929,7 @@ zabbix_export:
value: notice
-
uuid: 843654df3185400e854c8c1f0229c32c
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -939,7 +939,7 @@ zabbix_export:
value: notice
-
uuid: 642f03d6eda346aca835e75088b7067b
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","powerboardCommunicationFault")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","powerboardCommunicationFault")=2'
name: 'Status: Device has "powerboardCommunicationFault" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -949,7 +949,7 @@ zabbix_export:
value: notice
-
uuid: 4d8f0244f8d047bc8730ffc2f02a976d
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","rs232SerialToMeterBridge")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","rs232SerialToMeterBridge")=2'
name: 'Status: Device has "rs232SerialToMeterBridge" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -959,7 +959,7 @@ zabbix_export:
value: notice
-
uuid: 6c125b8f681b47a99f7535292bd0507c
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -969,7 +969,7 @@ zabbix_export:
value: notice
-
uuid: abad398631f34dac8094e4bcd14e3613
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -979,7 +979,7 @@ zabbix_export:
value: notice
-
uuid: 6824d221feb042da860248a4b418105c
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","slave")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","slave")=2'
name: 'Status: Device has "slave" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -989,7 +989,7 @@ zabbix_export:
value: notice
-
uuid: 56adf438e90f410497246b27b6da49f4
- expression: 'count(/Morningstar TriStar MPPT 600V SNMP/status.faults[faults.0],#3,"like","softwareFault")=2'
+ expression: 'count(/Morningstar TriStar MPPT 600V by SNMP/status.faults[faults.0],#3,"like","softwareFault")=2'
name: 'Status: Device has "softwareFault" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1042,7 +1042,7 @@ zabbix_export:
triggers:
-
uuid: c4f0ea9e18884bc0b546933871017098
- expression: 'nodata(/Morningstar TriStar MPPT 600V SNMP/status.net.uptime,5m)=1'
+ expression: 'nodata(/Morningstar TriStar MPPT 600V by SNMP/status.net.uptime,5m)=1'
name: 'Status: Failed to fetch data'
event_name: 'Status: Failed to fetch data (or no data for 5m)'
priority: WARNING
@@ -1100,7 +1100,7 @@ zabbix_export:
triggers:
-
uuid: bc117de353304889980c7836603abb0d
- expression: 'min(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
name: 'Temperature: Critically high battery temperature'
event_name: 'Temperature: Critically high battery temperature (over {$BATTERY.TEMP.MAX.CRIT}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1111,7 +1111,7 @@ zabbix_export:
value: notice
-
uuid: 25a8f16d632940c3a2c994a9f2a76851
- expression: 'max(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
name: 'Temperature: Critically low battery temperature'
event_name: 'Temperature: Critically low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1122,7 +1122,7 @@ zabbix_export:
value: notice
-
uuid: db1152c815c84d208be0db3dac63acb4
- expression: 'min(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
name: 'Temperature: High battery temperature'
event_name: 'Temperature: High battery temperature (over {$BATTERY.TEMP.MAX.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1130,14 +1130,14 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically high battery temperature'
- expression: 'min(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: 9c331fb9a30b4867a3e16acd7e9f8983
- expression: 'max(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
+ expression: 'max(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
name: 'Temperature: Low battery temperature'
event_name: 'Temperature: Low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1145,7 +1145,7 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically low battery temperature'
- expression: 'max(/Morningstar TriStar MPPT 600V SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT 600V by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
tags:
-
tag: scope
@@ -1202,7 +1202,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f326b9eb93fe4267bf9f4a07bb578eca
- expression: 'min(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
name: 'Battery: Critically high battery voltage'
event_name: 'Battery: Critically high battery voltage (over {#VOLTAGE.MAX.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1213,7 +1213,7 @@ zabbix_export:
value: capacity
-
uuid: 07fb5dd68c954da3982392dfcb2de0b8
- expression: 'max(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
name: 'Battery: Critically low battery voltage'
event_name: 'Battery: Critically low battery voltage (below {#VOLTAGE.MIN.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
value: capacity
-
uuid: aca6ef49842d4b3ba543fcf470473a96
- expression: 'min(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
+ expression: 'min(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
name: 'Battery: High battery voltage'
event_name: 'Battery: High battery voltage (over {#VOLTAGE.MAX.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1232,14 +1232,14 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically high battery voltage'
- expression: 'min(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
tags:
-
tag: scope
value: capacity
-
uuid: b8673c0802a244d0850730e3fdf5a6dc
- expression: 'max(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
+ expression: 'max(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
name: 'Battery: Low battery voltage'
event_name: 'Battery: Low battery voltage (below {#VOLTAGE.MIN.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1247,7 +1247,7 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically low battery voltage'
- expression: 'max(/Morningstar TriStar MPPT 600V SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT 600V by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
tags:
-
tag: scope
@@ -1261,7 +1261,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'battery.voltage[batteryVoltage.0{#SINGLETON}]'
master_item:
key: 'battery.voltage.discovery[batteryVoltage.0]'
@@ -1392,7 +1392,7 @@ zabbix_export:
triggers:
-
uuid: 5393dee9b39d438a8c1553a0be0fb0f2
- expression: '(last(/Morningstar TriStar MPPT 600V SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT 600V SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT 600V SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT 600V SNMP/status.net.uptime)<10m)'
+ expression: '(last(/Morningstar TriStar MPPT 600V by SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT 600V by SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT 600V by SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT 600V by SNMP/status.net.uptime)<10m)'
name: 'Status: Device has been restarted'
event_name: 'Status: Device has been restarted (uptime < 10m)'
priority: INFO
@@ -1411,21 +1411,21 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'array.sweep_vmp[arrayVmpLastSweep.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'array.sweep_voc[arrayVocLastSweep.0]'
-
sortorder: '2'
drawtype: GRADIENT_LINE
color: F63100
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'array.voltage[arrayVoltage.0]'
-
uuid: 711c5f397c5e4031b36070d20debcc13
@@ -1435,7 +1435,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'charge.current[batteryCurrent.0]'
-
uuid: 12163228805449dcb48116a1a0b470d9
@@ -1445,7 +1445,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'charge.output_power[ outputPower.0]'
-
uuid: 09e9cd48bb6241e8b667e6e1b9f7c3ad
@@ -1455,12 +1455,12 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'temp.battery[batteryTemperature.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar TriStar MPPT 600V SNMP'
+ host: 'Morningstar TriStar MPPT 600V by SNMP'
key: 'temp.heatsink[heatsinkTemperature.0]'
diff --git a/templates/net/morningstar/morningstar_tristar_mppt_snmp/README.md b/templates/net/morningstar/morningstar_tristar_mppt_snmp/README.md
index 2b2777350bd..5ba8598816a 100644
--- a/templates/net/morningstar/morningstar_tristar_mppt_snmp/README.md
+++ b/templates/net/morningstar/morningstar_tristar_mppt_snmp/README.md
@@ -1,9 +1,9 @@
-# Morningstar TriStar MPPT SNMP
+# Morningstar TriStar MPPT by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -73,49 +73,49 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar TriStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
-|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar TriStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
-|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
-|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
-|Battery: High battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
-|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
-|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar TriStar MPPT SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar TriStar MPPT SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
-|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "fetShort" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","fetShort")=2` |HIGH | |
-|Status: Device has "softwareFault" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","softwareFault")=2` |HIGH | |
-|Status: Device has "batteryHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2` |HIGH | |
-|Status: Device has "arrayHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2` |HIGH | |
-|Status: Device has "dipSwitchChange" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "rtsShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2` |HIGH | |
-|Status: Device has "rtsDisconnected" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2` |HIGH | |
-|Status: Device has "eepromRetryLimit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2` |HIGH | |
-|Status: Device has "slaveControlTimeout" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","slaveControlTimeout")=2` |HIGH | |
-|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
-|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
-|Status: Device has "highTemperatureCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2` |WARNING | |
-|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
-|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
-|Status: Device has "batterySense" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2` |WARNING | |
-|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
-|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
-|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
-|Status: Device has "highVoltageDisconnect" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2` |WARNING | |
-|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
-|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
-|Status: Device has "p12VoltageReferenceOff" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2` |WARNING | |
-|Status: Device has "highArrayVCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2` |WARNING | |
-|Status: Device has "maxAdcValueReached" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2` |WARNING | |
-|Status: Device has "controllerWasReset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2` |WARNING | |
-|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
-|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
-|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
-|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
+|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar TriStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
+|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar TriStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}` |HIGH | |
+|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
+|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
+|Battery: High battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
+|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
+|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT by SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar TriStar MPPT by SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
+|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "fetShort" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","fetShort")=2` |HIGH | |
+|Status: Device has "softwareFault" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","softwareFault")=2` |HIGH | |
+|Status: Device has "batteryHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2` |HIGH | |
+|Status: Device has "arrayHvd" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2` |HIGH | |
+|Status: Device has "dipSwitchChange" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "rtsShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2` |HIGH | |
+|Status: Device has "rtsDisconnected" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2` |HIGH | |
+|Status: Device has "eepromRetryLimit" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2` |HIGH | |
+|Status: Device has "slaveControlTimeout" faults flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","slaveControlTimeout")=2` |HIGH | |
+|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
+|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
+|Status: Device has "highTemperatureCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2` |WARNING | |
+|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
+|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
+|Status: Device has "batterySense" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2` |WARNING | |
+|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
+|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
+|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
+|Status: Device has "highVoltageDisconnect" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2` |WARNING | |
+|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
+|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
+|Status: Device has "p12VoltageReferenceOff" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2` |WARNING | |
+|Status: Device has "highArrayVCurrentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2` |WARNING | |
+|Status: Device has "maxAdcValueReached" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2` |WARNING | |
+|Status: Device has "controllerWasReset" alarm flag |<p>-</p> |`count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2` |WARNING | |
+|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
+|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
+|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
+|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/morningstar/morningstar_tristar_mppt_snmp/template_net_morningstar_tristar_mppt_snmp.yaml b/templates/net/morningstar/morningstar_tristar_mppt_snmp/template_net_morningstar_tristar_mppt_snmp.yaml
index ff5061510b8..032626f230b 100644
--- a/templates/net/morningstar/morningstar_tristar_mppt_snmp/template_net_morningstar_tristar_mppt_snmp.yaml
+++ b/templates/net/morningstar/morningstar_tristar_mppt_snmp/template_net_morningstar_tristar_mppt_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:48Z'
+ date: '2022-10-27T14:44:12Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 07b32152c3654e8ead4c1eeae24efa8f
- template: 'Morningstar TriStar MPPT SNMP'
- name: 'Morningstar TriStar MPPT SNMP'
+ template: 'Morningstar TriStar MPPT by SNMP'
+ name: 'Morningstar TriStar MPPT by SNMP'
description: |
MIBs used:
TRISTAR-MPPT
@@ -292,7 +292,7 @@ zabbix_export:
triggers:
-
uuid: 6c6371d2476246789d23404e068e5179
- expression: 'last(/Morningstar TriStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar TriStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
name: 'Battery: Device charge in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -302,14 +302,14 @@ zabbix_export:
value: notice
-
uuid: 65bdeac02fed4febae857f571319bf37
- expression: 'last(/Morningstar TriStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
+ expression: 'last(/Morningstar TriStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.WARN}'
name: 'Battery: Device charge in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Battery: Device charge in critical state'
- expression: 'last(/Morningstar TriStar MPPT SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar TriStar MPPT by SNMP/charge.state[chargeState.0])={$CHARGE.STATE.CRIT}'
tags:
-
tag: scope
@@ -420,7 +420,7 @@ zabbix_export:
triggers:
-
uuid: b073c972bb64463aaee85c6129fad319
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2'
name: 'Status: Device has "batterySense" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -430,7 +430,7 @@ zabbix_export:
value: notice
-
uuid: 80a2d0a457024c22b39f0fcd45992e1e
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
name: 'Status: Device has "batterySenseDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -440,7 +440,7 @@ zabbix_export:
value: notice
-
uuid: bac1cc54818245f9baa8dc07ddc0f850
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","controllerWasReset")=2'
name: 'Status: Device has "controllerWasReset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -450,7 +450,7 @@ zabbix_export:
value: notice
-
uuid: 86c2dfb7b0984eaab02f47c58337f468
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
name: 'Status: Device has "currentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -460,7 +460,7 @@ zabbix_export:
value: notice
-
uuid: dd000390277a4e848a3236501817addf
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
name: 'Status: Device has "currentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -470,7 +470,7 @@ zabbix_export:
value: notice
-
uuid: 650ecb9c06464937a3f797e73a3d756d
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
name: 'Status: Device has "heatsinkTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -480,7 +480,7 @@ zabbix_export:
value: notice
-
uuid: 5999a4b6c49a4dabb6350d826b01e646
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
name: 'Status: Device has "heatsinkTempSensorShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -490,7 +490,7 @@ zabbix_export:
value: notice
-
uuid: 7331337c7ffb4933bca3982614657912
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highArrayVCurrentLimit")=2'
name: 'Status: Device has "highArrayVCurrentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -500,7 +500,7 @@ zabbix_export:
value: notice
-
uuid: 82a2e0adba7444c6945666fcb9430808
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highTemperatureCurrentLimit")=2'
name: 'Status: Device has "highTemperatureCurrentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -510,7 +510,7 @@ zabbix_export:
value: notice
-
uuid: b1f6d22d205e449a811da905e679800f
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2'
name: 'Status: Device has "highVoltageDisconnect" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -520,7 +520,7 @@ zabbix_export:
value: notice
-
uuid: e3ce50b9b696486f945ee5a4c1a7a753
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","maxAdcValueReached")=2'
name: 'Status: Device has "maxAdcValueReached" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -530,7 +530,7 @@ zabbix_export:
value: notice
-
uuid: 1536cf07556b4cddb62186030a4321ca
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
name: 'Status: Device has "mosfetSOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -540,7 +540,7 @@ zabbix_export:
value: notice
-
uuid: 136621f032544ea8af5e86a14ec03cb6
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2'
name: 'Status: Device has "p12VoltageReferenceOff" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -550,7 +550,7 @@ zabbix_export:
value: notice
-
uuid: 62ecaaf59a984b2999d13540c5220470
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -560,7 +560,7 @@ zabbix_export:
value: notice
-
uuid: 12037d207b3f413198594877cc7a3862
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
name: 'Status: Device has "rtsMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 330f9dfe6ea34b17bcf4cac2c908d78c
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -580,7 +580,7 @@ zabbix_export:
value: notice
-
uuid: fba13770ff67433489ec95d62b65d4b5
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
name: 'Status: Device has "systemMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -590,7 +590,7 @@ zabbix_export:
value: notice
-
uuid: de6208b4474f4743ad99444fd7eb135d
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
name: 'Status: Device has "uncalibrated" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -652,7 +652,7 @@ zabbix_export:
triggers:
-
uuid: 2a1b5a65311144d69c03255336f9f15f
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","arrayHvd")=2'
name: 'Status: Device has "arrayHvd" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -662,7 +662,7 @@ zabbix_export:
value: notice
-
uuid: f837f0839967493bb0e38b21000f5e9a
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","batteryHvd")=2'
name: 'Status: Device has "batteryHvd" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -672,7 +672,7 @@ zabbix_export:
value: notice
-
uuid: 05b70b4be5554dd5ac2c65af04d79986
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -682,7 +682,7 @@ zabbix_export:
value: notice
-
uuid: 24ecb8842ea84a82b4d05a4e85150c55
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2'
name: 'Status: Device has "dipSwitchChange" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -692,7 +692,7 @@ zabbix_export:
value: notice
-
uuid: 008d82bc793b49afa6cd37d038c837fe
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","eepromRetryLimit")=2'
name: 'Status: Device has "eepromRetryLimit" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -702,7 +702,7 @@ zabbix_export:
value: notice
-
uuid: 71dbbf441c234dcfbf014fc043bf5d3a
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","fetShort")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","fetShort")=2'
name: 'Status: Device has "fetShort" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -712,7 +712,7 @@ zabbix_export:
value: notice
-
uuid: c100ec68ddaf40e6964ba2598141daa7
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -722,7 +722,7 @@ zabbix_export:
value: notice
-
uuid: 435df7ebe3e047ffada64dcf7e69148a
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -732,7 +732,7 @@ zabbix_export:
value: notice
-
uuid: 88443c84eaa0415db976e7a5d6c1dec4
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -742,7 +742,7 @@ zabbix_export:
value: notice
-
uuid: b19111ec08094dbca30a804011b02ed2
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","slaveControlTimeout")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","slaveControlTimeout")=2'
name: 'Status: Device has "slaveControlTimeout" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -752,7 +752,7 @@ zabbix_export:
value: notice
-
uuid: 0d90cab800ad4bbcbf880c157a7a9dae
- expression: 'count(/Morningstar TriStar MPPT SNMP/status.faults[faults.0],#3,"like","softwareFault")=2'
+ expression: 'count(/Morningstar TriStar MPPT by SNMP/status.faults[faults.0],#3,"like","softwareFault")=2'
name: 'Status: Device has "softwareFault" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -805,7 +805,7 @@ zabbix_export:
triggers:
-
uuid: db9317cb9a6645d2bd8f4760f7579c17
- expression: 'nodata(/Morningstar TriStar MPPT SNMP/status.net.uptime,5m)=1'
+ expression: 'nodata(/Morningstar TriStar MPPT by SNMP/status.net.uptime,5m)=1'
name: 'Status: Failed to fetch data'
event_name: 'Status: Failed to fetch data (or no data for 5m)'
priority: WARNING
@@ -868,7 +868,7 @@ zabbix_export:
triggers:
-
uuid: 5ec1c2e4786048fc889a37a12a2f4ad6
- expression: 'min(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
name: 'Temperature: Critically high battery temperature'
event_name: 'Temperature: Critically high battery temperature (over {$BATTERY.TEMP.MAX.CRIT}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -879,7 +879,7 @@ zabbix_export:
value: notice
-
uuid: 84c059ff133f4f4d8145615c0a98eb50
- expression: 'max(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
name: 'Temperature: Critically low battery temperature'
event_name: 'Temperature: Critically low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -890,7 +890,7 @@ zabbix_export:
value: notice
-
uuid: 11d2b988cfec425c9ffb082e9c78490d
- expression: 'min(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
name: 'Temperature: High battery temperature'
event_name: 'Temperature: High battery temperature (over {$BATTERY.TEMP.MAX.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -898,14 +898,14 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically high battery temperature'
- expression: 'min(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: 46122992e8a04c7bb7a8c8037a2da74a
- expression: 'max(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
+ expression: 'max(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
name: 'Temperature: Low battery temperature'
event_name: 'Temperature: Low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -913,7 +913,7 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically low battery temperature'
- expression: 'max(/Morningstar TriStar MPPT SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
tags:
-
tag: scope
@@ -980,7 +980,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: cf9bb1b6e84d4b03b38f13c1c1d4905c
- expression: 'min(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
name: 'Battery: Critically high battery voltage'
event_name: 'Battery: Critically high battery voltage (over {#VOLTAGE.MAX.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -991,7 +991,7 @@ zabbix_export:
value: capacity
-
uuid: d977ded736704d748ca49595f3658b89
- expression: 'max(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
name: 'Battery: Critically low battery voltage'
event_name: 'Battery: Critically low battery voltage (below {#VOLTAGE.MIN.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1002,7 +1002,7 @@ zabbix_export:
value: capacity
-
uuid: 00deb7608b3e4444bd4833f5b8ae5875
- expression: 'min(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
+ expression: 'min(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
name: 'Battery: High battery voltage'
event_name: 'Battery: High battery voltage (over {#VOLTAGE.MAX.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1010,14 +1010,14 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically high battery voltage'
- expression: 'min(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
tags:
-
tag: scope
value: capacity
-
uuid: 2877138cdfb0448a9a83eb807b5da24a
- expression: 'max(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
+ expression: 'max(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
name: 'Battery: Low battery voltage'
event_name: 'Battery: Low battery voltage (below {#VOLTAGE.MIN.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1025,7 +1025,7 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically low battery voltage'
- expression: 'max(/Morningstar TriStar MPPT SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar MPPT by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
tags:
-
tag: scope
@@ -1039,7 +1039,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'battery.voltage[batteryVoltage.0{#SINGLETON}]'
master_item:
key: 'battery.voltage.discovery[batteryVoltage.0]'
@@ -1167,7 +1167,7 @@ zabbix_export:
triggers:
-
uuid: aab5be196ac64dc69883c3109fcd094f
- expression: '(last(/Morningstar TriStar MPPT SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT SNMP/status.net.uptime)<10m)'
+ expression: '(last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar MPPT by SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar MPPT by SNMP/status.net.uptime)<10m)'
name: 'Status: Device has been restarted'
event_name: 'Status: Device has been restarted (uptime < 10m)'
priority: INFO
@@ -1186,21 +1186,21 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'array.sweep_vmp[arrayVmpLastSweep.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'array.sweep_voc[arrayVocLastSweep.0]'
-
sortorder: '2'
drawtype: GRADIENT_LINE
color: F63100
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'array.voltage[arrayVoltage.0]'
-
uuid: 067062eca2b34488a9defc3aa002c88c
@@ -1210,7 +1210,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'charge.current[batteryCurrent.0]'
-
uuid: 1889ace5679d4f63b59237812b5d0718
@@ -1220,7 +1220,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'charge.output_power[ outputPower.0]'
-
uuid: 87918502df2743e1be04a02b02c44b61
@@ -1230,12 +1230,12 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'temp.battery[batteryTemperature.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar TriStar MPPT SNMP'
+ host: 'Morningstar TriStar MPPT by SNMP'
key: 'temp.heatsink[heatsinkTemperature.0]'
diff --git a/templates/net/morningstar/morningstar_tristar_pwm_snmp/README.md b/templates/net/morningstar/morningstar_tristar_pwm_snmp/README.md
index 8f54d67c997..5672e18beec 100644
--- a/templates/net/morningstar/morningstar_tristar_pwm_snmp/README.md
+++ b/templates/net/morningstar/morningstar_tristar_pwm_snmp/README.md
@@ -1,9 +1,9 @@
-# Morningstar TriStar PWM SNMP
+# Morningstar TriStar PWM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -78,51 +78,51 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
-|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
-|Battery: High battery voltage |<p>-</p> |`min(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
-|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
-|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar TriStar PWM SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
-|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar TriStar PWM SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.CRIT}` |HIGH | |
-|Load: Device load in warning state |<p>-</p> |`last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
-|Load: Device load in critical state |<p>-</p> |`last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
-|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar TriStar PWM SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar PWM SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar PWM SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar PWM SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar TriStar PWM SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
-|Status: Device has "externalShort" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","externalShort")=2` |HIGH | |
-|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
-|Status: Device has "mosfetSShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
-|Status: Device has "softwareFault" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","softwareFault")=2` |HIGH | |
-|Status: Device has "highVoltageDisconnect" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2` |HIGH | |
-|Status: Device has "tristarHot" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","tristarHot")=2` |HIGH | |
-|Status: Device has "dipSwitchChange" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2` |HIGH | |
-|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
-|Status: Device has "reset" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","reset")=2` |HIGH | |
-|Status: Device has "systemMiswire" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","systemMiswire")=2` |HIGH | |
-|Status: Device has "rtsShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2` |HIGH | |
-|Status: Device has "rtsDisconnected" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2` |HIGH | |
-|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
-|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
-|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
-|Status: Device has "tristarHot" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","tristarHot")=2` |WARNING | |
-|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
-|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
-|Status: Device has "batterySense" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2` |WARNING | |
-|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
-|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
-|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
-|Status: Device has "highVoltageDisconnect" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2` |WARNING | |
-|Status: Device has "diversionLoadNearMax" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","diversionLoadNearMax")=2` |WARNING | |
-|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
-|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
-|Status: Device has "p12VoltageReferenceOff" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2` |WARNING | |
-|Status: Device has "loadDisconnectState" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","loadDisconnectState")=2` |WARNING | |
-|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
-|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
-|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
-|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
+|Battery: Low battery voltage |<p>-</p> |`max(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically low battery voltage</p> |
+|Battery: Critically low battery voltage |<p>-</p> |`max(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}` |HIGH | |
+|Battery: High battery voltage |<p>-</p> |`min(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Critically high battery voltage</p> |
+|Battery: Critically high battery voltage |<p>-</p> |`min(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}` |HIGH | |
+|Battery: Device charge in warning state |<p>-</p> |`last(/Morningstar TriStar PWM by SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.WARN}` |WARNING |<p>**Depends on**:</p><p>- Battery: Device charge in critical state</p> |
+|Battery: Device charge in critical state |<p>-</p> |`last(/Morningstar TriStar PWM by SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.CRIT}` |HIGH | |
+|Load: Device load in warning state |<p>-</p> |`last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"override"}` |WARNING |<p>**Depends on**:</p><p>- Load: Device load in critical state</p> |
+|Load: Device load in critical state |<p>-</p> |`last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"fault"}` |HIGH | |
+|Status: Device has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Morningstar TriStar PWM by SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar PWM by SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar PWM by SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar PWM by SNMP/status.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|Status: Failed to fetch data |<p>Zabbix has not received data for items for the last 5 minutes.</p> |`nodata(/Morningstar TriStar PWM by SNMP/status.net.uptime,5m)=1` |WARNING |<p>Manual close: YES</p> |
+|Status: Device has "externalShort" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","externalShort")=2` |HIGH | |
+|Status: Device has "overcurrent" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2` |HIGH | |
+|Status: Device has "mosfetSShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","mosfetSShorted")=2` |HIGH | |
+|Status: Device has "softwareFault" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","softwareFault")=2` |HIGH | |
+|Status: Device has "highVoltageDisconnect" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2` |HIGH | |
+|Status: Device has "tristarHot" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","tristarHot")=2` |HIGH | |
+|Status: Device has "dipSwitchChange" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2` |HIGH | |
+|Status: Device has "customSettingsEdit" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2` |HIGH | |
+|Status: Device has "reset" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","reset")=2` |HIGH | |
+|Status: Device has "systemMiswire" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","systemMiswire")=2` |HIGH | |
+|Status: Device has "rtsShorted" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2` |HIGH | |
+|Status: Device has "rtsDisconnected" faults flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2` |HIGH | |
+|Status: Device has "rtsShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2` |WARNING | |
+|Status: Device has "rtsDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2` |WARNING | |
+|Status: Device has "heatsinkTempSensorShorted" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2` |WARNING | |
+|Status: Device has "tristarHot" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","tristarHot")=2` |WARNING | |
+|Status: Device has "currentLimit" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2` |WARNING | |
+|Status: Device has "currentOffset" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2` |WARNING | |
+|Status: Device has "batterySense" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2` |WARNING | |
+|Status: Device has "batterySenseDisconnected" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2` |WARNING | |
+|Status: Device has "uncalibrated" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2` |WARNING | |
+|Status: Device has "rtsMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2` |WARNING | |
+|Status: Device has "highVoltageDisconnect" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2` |WARNING | |
+|Status: Device has "diversionLoadNearMax" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","diversionLoadNearMax")=2` |WARNING | |
+|Status: Device has "systemMiswire" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2` |WARNING | |
+|Status: Device has "mosfetSOpen" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2` |WARNING | |
+|Status: Device has "p12VoltageReferenceOff" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2` |WARNING | |
+|Status: Device has "loadDisconnectState" alarm flag |<p>-</p> |`count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","loadDisconnectState")=2` |WARNING | |
+|Temperature: Low battery temperature |<p>-</p> |`max(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically low battery temperature</p> |
+|Temperature: Critically low battery temperature |<p>-</p> |`max(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}` |HIGH | |
+|Temperature: High battery temperature |<p>-</p> |`min(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}` |WARNING |<p>**Depends on**:</p><p>- Temperature: Critically high battery temperature</p> |
+|Temperature: Critically high battery temperature |<p>-</p> |`min(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/morningstar/morningstar_tristar_pwm_snmp/template_net_morningstar_tristar_pwm_snmp.yaml b/templates/net/morningstar/morningstar_tristar_pwm_snmp/template_net_morningstar_tristar_pwm_snmp.yaml
index dacbee08cf6..c0666c1e9a2 100644
--- a/templates/net/morningstar/morningstar_tristar_pwm_snmp/template_net_morningstar_tristar_pwm_snmp.yaml
+++ b/templates/net/morningstar/morningstar_tristar_pwm_snmp/template_net_morningstar_tristar_pwm_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:50Z'
+ date: '2022-10-27T14:44:08Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 230fa9f7c1774821bbe6cdcbbba5cbc6
- template: 'Morningstar TriStar PWM SNMP'
- name: 'Morningstar TriStar PWM SNMP'
+ template: 'Morningstar TriStar PWM by SNMP'
+ name: 'Morningstar TriStar PWM by SNMP'
description: |
MIBs used:
TRISTAR
@@ -189,7 +189,7 @@ zabbix_export:
triggers:
-
uuid: 121d47c6bbdd45bca261df2e01ea41c6
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySense")=2'
name: 'Status: Device has "batterySense" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -199,7 +199,7 @@ zabbix_export:
value: notice
-
uuid: fd2d9290144143d39bb5a3cf0a2d261f
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","batterySenseDisconnected")=2'
name: 'Status: Device has "batterySenseDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -209,7 +209,7 @@ zabbix_export:
value: notice
-
uuid: 83d5b8d52acd4e21ac6d3a9cf05dcd04
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentLimit")=2'
name: 'Status: Device has "currentLimit" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -219,7 +219,7 @@ zabbix_export:
value: notice
-
uuid: d9529a4372d848038e6ee561d62e9f22
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","currentOffset")=2'
name: 'Status: Device has "currentOffset" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -229,7 +229,7 @@ zabbix_export:
value: notice
-
uuid: 5f3983acc1cc417e860c1305b11c15ea
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","diversionLoadNearMax")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","diversionLoadNearMax")=2'
name: 'Status: Device has "diversionLoadNearMax" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -239,7 +239,7 @@ zabbix_export:
value: notice
-
uuid: 878e04df7e7b416bb0d2213b5dbb80e6
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorOpen")=2'
name: 'Status: Device has "heatsinkTempSensorOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -249,7 +249,7 @@ zabbix_export:
value: notice
-
uuid: c642ed9496ce4322809c7142d32929a5
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","heatsinkTempSensorShorted")=2'
name: 'Status: Device has "heatsinkTempSensorShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -259,7 +259,7 @@ zabbix_export:
value: notice
-
uuid: 532421fe17bf4732a01a6990e34e649a
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","highVoltageDisconnect")=2'
name: 'Status: Device has "highVoltageDisconnect" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -269,7 +269,7 @@ zabbix_export:
value: notice
-
uuid: ae90e8034baf4b21906d56d18bfa4da8
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","loadDisconnectState")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","loadDisconnectState")=2'
name: 'Status: Device has "loadDisconnectState" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -279,7 +279,7 @@ zabbix_export:
value: notice
-
uuid: 8d8b721c6dee40499b29bee44b21589a
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","mosfetSOpen")=2'
name: 'Status: Device has "mosfetSOpen" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -289,7 +289,7 @@ zabbix_export:
value: notice
-
uuid: 8cda8e5773de4583b9baa6a6e542e32c
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","p12VoltageReferenceOff")=2'
name: 'Status: Device has "p12VoltageReferenceOff" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -299,7 +299,7 @@ zabbix_export:
value: notice
-
uuid: 1b6192b8ca364c229b35ba6de89ad56b
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -309,7 +309,7 @@ zabbix_export:
value: notice
-
uuid: 176de77a142d45a3ac39ea42989e209c
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsMiswire")=2'
name: 'Status: Device has "rtsMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -319,7 +319,7 @@ zabbix_export:
value: notice
-
uuid: f63029eabc8e498ea7e6336d312ac169
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -329,7 +329,7 @@ zabbix_export:
value: notice
-
uuid: 480b69c1febf45a2971788c2f967c45d
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","systemMiswire")=2'
name: 'Status: Device has "systemMiswire" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -339,7 +339,7 @@ zabbix_export:
value: notice
-
uuid: 4a287e4086c4458aaa3dc48bbb8ee219
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","tristarHot")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","tristarHot")=2'
name: 'Status: Device has "tristarHot" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -349,7 +349,7 @@ zabbix_export:
value: notice
-
uuid: de665482d2574730a3a839948dd730ea
- expression: 'count(/Morningstar TriStar PWM SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.alarms[alarms.0],#3,"like","uncalibrated")=2'
name: 'Status: Device has "uncalibrated" alarm flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -414,7 +414,7 @@ zabbix_export:
triggers:
-
uuid: 514b041aebdd4ddb8ab2d1222c0ef295
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","customSettingsEdit")=2'
name: 'Status: Device has "customSettingsEdit" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -424,7 +424,7 @@ zabbix_export:
value: notice
-
uuid: 1a40ce8b87f04ab1b4f30387e9ce2d9d
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","dipSwitchChange")=2'
name: 'Status: Device has "dipSwitchChange" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -434,7 +434,7 @@ zabbix_export:
value: notice
-
uuid: 49b120c3933c43b1b7f5c77f7b359997
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","externalShort")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","externalShort")=2'
name: 'Status: Device has "externalShort" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -444,7 +444,7 @@ zabbix_export:
value: notice
-
uuid: f063b9f717c44ab988db7ac95bfca68f
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","highVoltageDisconnect")=2'
name: 'Status: Device has "highVoltageDisconnect" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -454,7 +454,7 @@ zabbix_export:
value: notice
-
uuid: 468716d748f1470cb764ce1af922164d
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","mosfetSShorted")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","mosfetSShorted")=2'
name: 'Status: Device has "mosfetSShorted" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -464,7 +464,7 @@ zabbix_export:
value: notice
-
uuid: b6f65dfca421490eafff48991cdf1e3b
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","overcurrent")=2'
name: 'Status: Device has "overcurrent" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -474,7 +474,7 @@ zabbix_export:
value: notice
-
uuid: 73561a5765694633b1dc0ef1b1f60fd4
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","reset")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","reset")=2'
name: 'Status: Device has "reset" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -484,7 +484,7 @@ zabbix_export:
value: notice
-
uuid: d14c7d928f57448390c2b4c588a28c65
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","rtsDisconnected")=2'
name: 'Status: Device has "rtsDisconnected" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -494,7 +494,7 @@ zabbix_export:
value: notice
-
uuid: d94067598c234968b4929404067eff86
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","rtsShorted")=2'
name: 'Status: Device has "rtsShorted" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -504,7 +504,7 @@ zabbix_export:
value: notice
-
uuid: 886b18bee7cd4f8eb454973e2d2ae59f
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","softwareFault")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","softwareFault")=2'
name: 'Status: Device has "softwareFault" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -514,7 +514,7 @@ zabbix_export:
value: notice
-
uuid: 2e520cdafaaa4eefad5ebea71819c3a6
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","systemMiswire")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","systemMiswire")=2'
name: 'Status: Device has "systemMiswire" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -524,7 +524,7 @@ zabbix_export:
value: notice
-
uuid: 041be44e639d4d1eadb15230a678e278
- expression: 'count(/Morningstar TriStar PWM SNMP/status.faults[faults.0],#3,"like","tristarHot")=2'
+ expression: 'count(/Morningstar TriStar PWM by SNMP/status.faults[faults.0],#3,"like","tristarHot")=2'
name: 'Status: Device has "tristarHot" faults flag'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -577,7 +577,7 @@ zabbix_export:
triggers:
-
uuid: 64aa2a79fe854def8e179a4d27790417
- expression: 'nodata(/Morningstar TriStar PWM SNMP/status.net.uptime,5m)=1'
+ expression: 'nodata(/Morningstar TriStar PWM by SNMP/status.net.uptime,5m)=1'
name: 'Status: Failed to fetch data'
event_name: 'Status: Failed to fetch data (or no data for 5m)'
priority: WARNING
@@ -610,7 +610,7 @@ zabbix_export:
triggers:
-
uuid: e759b90e2bf44bbb8e5efe5b9e458e40
- expression: 'min(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
name: 'Temperature: Critically high battery temperature'
event_name: 'Temperature: Critically high battery temperature (over {$BATTERY.TEMP.MAX.CRIT}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -621,7 +621,7 @@ zabbix_export:
value: notice
-
uuid: e57f335f657d45768509f139d31dcdae
- expression: 'max(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
name: 'Temperature: Critically low battery temperature'
event_name: 'Temperature: Critically low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -632,7 +632,7 @@ zabbix_export:
value: notice
-
uuid: 7d1444dba9334e91ad425a6f2ff9fef9
- expression: 'min(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.WARN}'
name: 'Temperature: High battery temperature'
event_name: 'Temperature: High battery temperature (over {$BATTERY.TEMP.MAX.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -640,14 +640,14 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically high battery temperature'
- expression: 'min(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)>{$BATTERY.TEMP.MAX.CRIT}'
tags:
-
tag: scope
value: notice
-
uuid: 14fe4a22b28c4d08a24da51a54e36e81
- expression: 'max(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
+ expression: 'max(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.WARN}'
name: 'Temperature: Low battery temperature'
event_name: 'Temperature: Low battery temperature (below {$BATTERY.TEMP.MIN.WARN}C for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -655,7 +655,7 @@ zabbix_export:
dependencies:
-
name: 'Temperature: Critically low battery temperature'
- expression: 'max(/Morningstar TriStar PWM SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar PWM by SNMP/temp.battery[batteryTemperature.0],5m)<{$BATTERY.TEMP.MIN.CRIT}'
tags:
-
tag: scope
@@ -722,7 +722,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 156ec13d673b4a8aa02a87b1794cb722
- expression: 'min(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
name: 'Battery: Critically high battery voltage'
event_name: 'Battery: Critically high battery voltage (over {#VOLTAGE.MAX.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -733,7 +733,7 @@ zabbix_export:
value: capacity
-
uuid: 5e4400321f4f45b39397c68a4ba54d8e
- expression: 'max(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
name: 'Battery: Critically low battery voltage'
event_name: 'Battery: Critically low battery voltage (below {#VOLTAGE.MIN.CRIT}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -744,7 +744,7 @@ zabbix_export:
value: capacity
-
uuid: fa6502a4a0214f7f933e982182d21d6b
- expression: 'min(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
+ expression: 'min(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.WARN}'
name: 'Battery: High battery voltage'
event_name: 'Battery: High battery voltage (over {#VOLTAGE.MAX.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -752,14 +752,14 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically high battery voltage'
- expression: 'min(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
+ expression: 'min(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)>{#VOLTAGE.MAX.CRIT}'
tags:
-
tag: scope
value: capacity
-
uuid: a5275748f4c742ea8ab9efd266901e95
- expression: 'max(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
+ expression: 'max(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.WARN}'
name: 'Battery: Low battery voltage'
event_name: 'Battery: Low battery voltage (below {#VOLTAGE.MIN.WARN}V for 5m)'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -767,7 +767,7 @@ zabbix_export:
dependencies:
-
name: 'Battery: Critically low battery voltage'
- expression: 'max(/Morningstar TriStar PWM SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
+ expression: 'max(/Morningstar TriStar PWM by SNMP/battery.voltage[batteryVoltage.0{#SINGLETON}],5m)<{#VOLTAGE.MIN.CRIT}'
tags:
-
tag: scope
@@ -781,7 +781,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar PWM SNMP'
+ host: 'Morningstar TriStar PWM by SNMP'
key: 'battery.voltage[batteryVoltage.0{#SINGLETON}]'
master_item:
key: 'battery.voltage.discovery[batteryVoltage.0]'
@@ -889,7 +889,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar PWM SNMP'
+ host: 'Morningstar TriStar PWM by SNMP'
key: 'array.voltage[arrayloadVoltage.0{#SINGLETON}]'
-
uuid: cd64c57669314d2e9526fbc580034c81
@@ -899,7 +899,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar PWM SNMP'
+ host: 'Morningstar TriStar PWM by SNMP'
key: 'charge.current[chargeCurrent.0{#SINGLETON}]'
master_item:
key: 'control.mode[controlMode.0]'
@@ -943,7 +943,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: da21473ce79c42269cc24d3e470b7d07
- expression: 'last(/Morningstar TriStar PWM SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar TriStar PWM by SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.CRIT}'
name: 'Battery: Device charge in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -953,14 +953,14 @@ zabbix_export:
value: notice
-
uuid: 79a592050bc64c018cfa5c7b779fba02
- expression: 'last(/Morningstar TriStar PWM SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.WARN}'
+ expression: 'last(/Morningstar TriStar PWM by SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.WARN}'
name: 'Battery: Device charge in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Battery: Device charge in critical state'
- expression: 'last(/Morningstar TriStar PWM SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.CRIT}'
+ expression: 'last(/Morningstar TriStar PWM by SNMP/charge.state[controlState.0{#SINGLETON}])={$CHARGE.STATE.CRIT}'
tags:
-
tag: scope
@@ -1094,7 +1094,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9035e0a92d384a3c844b8a4d4ebd1eb9
- expression: 'last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"fault"}'
name: 'Load: Device load in critical state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1104,14 +1104,14 @@ zabbix_export:
value: notice
-
uuid: a2d13f97c4bd46bfab8e74a2f2a7df2e
- expression: 'last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"override"}'
+ expression: 'last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"lvdWarning"} or last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.WARN:"override"}'
name: 'Load: Device load in warning state'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Load: Device load in critical state'
- expression: 'last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar TriStar PWM SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"fault"}'
+ expression: 'last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"lvd"} or last(/Morningstar TriStar PWM by SNMP/load.state[loadState.0{#SINGLETON}])={$LOAD.STATE.CRIT:"fault"}'
tags:
-
tag: scope
@@ -1201,7 +1201,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar PWM SNMP'
+ host: 'Morningstar TriStar PWM by SNMP'
key: 'load.current[loadCurrent.0{#SINGLETON}]'
-
uuid: b4b595193e0c40a2b390f7ce6eefba4a
@@ -1211,7 +1211,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar PWM SNMP'
+ host: 'Morningstar TriStar PWM by SNMP'
key: 'load.voltage[arrayloadVoltage.0{#SINGLETON}]'
master_item:
key: 'control.mode[controlMode.0]'
@@ -1364,7 +1364,7 @@ zabbix_export:
triggers:
-
uuid: f0549419f015448497cd7d15a2bf96fa
- expression: '(last(/Morningstar TriStar PWM SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar PWM SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar PWM SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar PWM SNMP/status.net.uptime)<10m)'
+ expression: '(last(/Morningstar TriStar PWM by SNMP/status.hw.uptime)>0 and last(/Morningstar TriStar PWM by SNMP/status.hw.uptime)<10m) or (last(/Morningstar TriStar PWM by SNMP/status.hw.uptime)=0 and last(/Morningstar TriStar PWM by SNMP/status.net.uptime)<10m)'
name: 'Status: Device has been restarted'
event_name: 'Status: Device has been restarted (uptime < 10m)'
priority: INFO
@@ -1383,12 +1383,12 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Morningstar TriStar PWM SNMP'
+ host: 'Morningstar TriStar PWM by SNMP'
key: 'temp.battery[batteryTemperature.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Morningstar TriStar PWM SNMP'
+ host: 'Morningstar TriStar PWM by SNMP'
key: 'temp.heatsink[heatsinkTemperature.0]'
diff --git a/templates/net/netgear_snmp/README.md b/templates/net/netgear_snmp/README.md
index 88f4fc076c5..dff058cd992 100644
--- a/templates/net/netgear_snmp/README.md
+++ b/templates/net/netgear_snmp/README.md
@@ -1,9 +1,9 @@
-# Netgear Fastpath SNMP
+# Netgear Fastpath by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://kb.netgear.com/24352/MIBs-for-Smart-switches
This template was tested on:
@@ -104,27 +104,27 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Netgear Fastpath SNMP/system.cpu.util[agentSwitchCpuProcessTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|#{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Netgear Fastpath SNMP/sensor.fan.status[boxServicesFanItemState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Netgear Fastpath SNMP/system.name,#1)<>last(/Netgear Fastpath SNMP/system.name,#2) and length(last(/Netgear Fastpath SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Netgear Fastpath SNMP/system.sw.os[agentInventoryOperatingSystem.0],#1)<>last(/Netgear Fastpath SNMP/system.sw.os[agentInventoryOperatingSystem.0],#2) and length(last(/Netgear Fastpath SNMP/system.sw.os[agentInventoryOperatingSystem.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Netgear Fastpath SNMP/system.hw.serialnumber,#1)<>last(/Netgear Fastpath SNMP/system.hw.serialnumber,#2) and length(last(/Netgear Fastpath SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Netgear Fastpath SNMP/vm.memory.util[memoryUsedPercentage.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Netgear Fastpath SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Netgear Fastpath SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Netgear Fastpath SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Netgear Fastpath SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Netgear Fastpath SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Netgear Fastpath SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Netgear Fastpath SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Netgear Fastpath SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|#{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Netgear Fastpath SNMP/sensor.psu.status[boxServicesPowSupplyItemState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"failed\"}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Netgear Fastpath SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Netgear Fastpath SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Netgear Fastpath SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Netgear Fastpath SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Netgear Fastpath SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Netgear Fastpath SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Netgear Fastpath SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Netgear Fastpath SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Netgear Fastpath SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|#{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Netgear Fastpath SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- #{#SNMPVALUE}: Temperature is above critical threshold</p> |
-|#{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Netgear Fastpath SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} `<p>Recovery expression:</p>`max(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|#{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Netgear Fastpath by SNMP/system.cpu.util[agentSwitchCpuProcessTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|#{#SNMPVALUE}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Netgear Fastpath by SNMP/sensor.fan.status[boxServicesFanItemState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Netgear Fastpath by SNMP/system.name,#1)<>last(/Netgear Fastpath by SNMP/system.name,#2) and length(last(/Netgear Fastpath by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Netgear Fastpath by SNMP/system.sw.os[agentInventoryOperatingSystem.0],#1)<>last(/Netgear Fastpath by SNMP/system.sw.os[agentInventoryOperatingSystem.0],#2) and length(last(/Netgear Fastpath by SNMP/system.sw.os[agentInventoryOperatingSystem.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Netgear Fastpath by SNMP/system.hw.serialnumber,#1)<>last(/Netgear Fastpath by SNMP/system.hw.serialnumber,#2) and length(last(/Netgear Fastpath by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Netgear Fastpath by SNMP/vm.memory.util[memoryUsedPercentage.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Netgear Fastpath by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Netgear Fastpath by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Netgear Fastpath by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Netgear Fastpath by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Netgear Fastpath by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Netgear Fastpath by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Netgear Fastpath by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Netgear Fastpath by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|#{#SNMPVALUE}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Netgear Fastpath by SNMP/sensor.psu.status[boxServicesPowSupplyItemState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"failed\"}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Netgear Fastpath by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Netgear Fastpath by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Netgear Fastpath by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Netgear Fastpath by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Netgear Fastpath by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Netgear Fastpath by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Netgear Fastpath by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Netgear Fastpath by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Netgear Fastpath by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|#{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"} or last(/Netgear Fastpath by SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- #{#SNMPVALUE}: Temperature is above critical threshold</p> |
+|#{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"} or last(/Netgear Fastpath by SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} `<p>Recovery expression:</p>`max(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|#{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/netgear_snmp/template_net_netgear_snmp.yaml b/templates/net/netgear_snmp/template_net_netgear_snmp.yaml
index 7a4344c1ca0..d47e048ea41 100644
--- a/templates/net/netgear_snmp/template_net_netgear_snmp.yaml
+++ b/templates/net/netgear_snmp/template_net_netgear_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:17:07Z'
+ date: '2022-10-27T14:44:30Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 5920713da492452889adabc25e259caa
- template: 'Netgear Fastpath SNMP'
- name: 'Netgear Fastpath SNMP'
+ template: 'Netgear Fastpath by SNMP'
+ name: 'Netgear Fastpath by SNMP'
description: |
Template Net Netgear Fastpath
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 424d07aafe9f4e8c8f647db6a43363d0
- expression: 'max(/Netgear Fastpath SNMP/icmpping,#3)=0'
+ expression: 'max(/Netgear Fastpath by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 9d2efd0614ba4e16b3479ed515d3a9a2
- expression: 'min(/Netgear Fastpath SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Netgear Fastpath SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Netgear Fastpath by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Netgear Fastpath by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Netgear Fastpath SNMP/icmpping,#3)=0'
+ expression: 'max(/Netgear Fastpath by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: 99888c77fc084d43b742a1f156d87832
- expression: 'avg(/Netgear Fastpath SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Netgear Fastpath by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Netgear Fastpath SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Netgear Fastpath SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Netgear Fastpath by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Netgear Fastpath by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Netgear Fastpath SNMP/icmpping,#3)=0'
+ expression: 'max(/Netgear Fastpath by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -182,7 +182,7 @@ zabbix_export:
triggers:
-
uuid: 1e47f984c5514205aad2be5db1157fd2
- expression: 'min(/Netgear Fastpath SNMP/system.cpu.util[agentSwitchCpuProcessTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Netgear Fastpath by SNMP/system.cpu.util[agentSwitchCpuProcessTotalUtilization.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -263,7 +263,7 @@ zabbix_export:
triggers:
-
uuid: eba057a7ef5743ecb2c037476c97fc38
- expression: 'last(/Netgear Fastpath SNMP/system.hw.serialnumber,#1)<>last(/Netgear Fastpath SNMP/system.hw.serialnumber,#2) and length(last(/Netgear Fastpath SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Netgear Fastpath by SNMP/system.hw.serialnumber,#1)<>last(/Netgear Fastpath by SNMP/system.hw.serialnumber,#2) and length(last(/Netgear Fastpath by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -350,7 +350,7 @@ zabbix_export:
triggers:
-
uuid: 61e82ab169374a51a1ebd876cc7813a8
- expression: 'last(/Netgear Fastpath SNMP/system.name,#1)<>last(/Netgear Fastpath SNMP/system.name,#2) and length(last(/Netgear Fastpath SNMP/system.name))>0'
+ expression: 'last(/Netgear Fastpath by SNMP/system.name,#1)<>last(/Netgear Fastpath by SNMP/system.name,#2) and length(last(/Netgear Fastpath by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -433,7 +433,7 @@ zabbix_export:
triggers:
-
uuid: bf0a6ff122a14f4c9baa640d27c8f982
- expression: 'last(/Netgear Fastpath SNMP/system.sw.os[agentInventoryOperatingSystem.0],#1)<>last(/Netgear Fastpath SNMP/system.sw.os[agentInventoryOperatingSystem.0],#2) and length(last(/Netgear Fastpath SNMP/system.sw.os[agentInventoryOperatingSystem.0]))>0'
+ expression: 'last(/Netgear Fastpath by SNMP/system.sw.os[agentInventoryOperatingSystem.0],#1)<>last(/Netgear Fastpath by SNMP/system.sw.os[agentInventoryOperatingSystem.0],#2) and length(last(/Netgear Fastpath by SNMP/system.sw.os[agentInventoryOperatingSystem.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -441,7 +441,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Netgear Fastpath SNMP/system.name,#1)<>last(/Netgear Fastpath SNMP/system.name,#2) and length(last(/Netgear Fastpath SNMP/system.name))>0'
+ expression: 'last(/Netgear Fastpath by SNMP/system.name,#1)<>last(/Netgear Fastpath by SNMP/system.name,#2) and length(last(/Netgear Fastpath by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -493,7 +493,7 @@ zabbix_export:
triggers:
-
uuid: 21c1a017dcc14148a9020207a6fd7488
- expression: 'min(/Netgear Fastpath SNMP/vm.memory.util[memoryUsedPercentage.0],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Netgear Fastpath by SNMP/vm.memory.util[memoryUsedPercentage.0],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -529,7 +529,7 @@ zabbix_export:
triggers:
-
uuid: cc91cb171901433bbb35752127e54ad0
- expression: 'max(/Netgear Fastpath SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Netgear Fastpath by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -537,7 +537,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Netgear Fastpath SNMP/icmpping,#3)=0'
+ expression: 'max(/Netgear Fastpath by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -573,7 +573,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ce48c2b0a07d4528b95668c853b6b4e0
- expression: 'count(/Netgear Fastpath SNMP/sensor.fan.status[boxServicesFanItemState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1'
+ expression: 'count(/Netgear Fastpath by SNMP/sensor.fan.status[boxServicesFanItemState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1'
name: '#{#SNMPVALUE}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -889,9 +889,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8e06e74957de4467bb127e6f16cdd84c
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -942,21 +942,21 @@ zabbix_export:
-
uuid: 443260352dec4467b6eafdd4c6a8ba9c
expression: |
- change(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Netgear Fastpath SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Netgear Fastpath by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -965,8 +965,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -974,13 +974,13 @@ zabbix_export:
-
uuid: 8b33b079505846558c6ee4f0afb05c5d
expression: |
- (avg(/Netgear Fastpath SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Netgear Fastpath SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Netgear Fastpath by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Netgear Fastpath by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Netgear Fastpath SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Netgear Fastpath SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Netgear Fastpath by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Netgear Fastpath by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Netgear Fastpath by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -990,8 +990,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -999,12 +999,12 @@ zabbix_export:
-
uuid: bfc9aaa24f17487184a8b88d4bf310a5
expression: |
- min(/Netgear Fastpath SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Netgear Fastpath SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Netgear Fastpath by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Netgear Fastpath by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Netgear Fastpath SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Netgear Fastpath SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Netgear Fastpath by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Netgear Fastpath by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1014,8 +1014,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Netgear Fastpath SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Netgear Fastpath by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1032,42 +1032,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 251d90e9c6ae4dad92328b677f6d6edf
@@ -1099,7 +1099,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 78d4bcad8d7d4694ad492b37003fa0b0
- expression: 'count(/Netgear Fastpath SNMP/sensor.psu.status[boxServicesPowSupplyItemState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"failed\"}")=1'
+ expression: 'count(/Netgear Fastpath by SNMP/sensor.psu.status[boxServicesPowSupplyItemState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"failed\"}")=1'
name: '#{#SNMPVALUE}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1157,9 +1157,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 222b4523c61144d1a91bb1b5cbd63caf
- expression: 'avg(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '#{#SNMPVALUE}: Temperature is too low'
event_name: '#{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1175,11 +1175,11 @@ zabbix_export:
-
uuid: bead54e2d2f34d45bafb41600e84ac2d
expression: |
- avg(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Netgear Fastpath SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Netgear Fastpath by SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '#{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '#{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1195,11 +1195,11 @@ zabbix_export:
-
uuid: f3444dbde8344a1782449ec4260972d1
expression: |
- avg(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
+ avg(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}
or
- last(/Netgear Fastpath SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Netgear Fastpath by SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '#{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '#{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1209,10 +1209,10 @@ zabbix_export:
-
name: '#{#SNMPVALUE}: Temperature is above critical threshold'
expression: |
- avg(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
+ avg(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}
or
- last(/Netgear Fastpath SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
- recovery_expression: 'max(/Netgear Fastpath SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ last(/Netgear Fastpath by SNMP/sensor.temp.status[boxServicesTempSensorState.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ recovery_expression: 'max(/Netgear Fastpath by SNMP/sensor.temp.value[boxServicesTempSensorTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -1344,7 +1344,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2317,7 +2317,7 @@ zabbix_export:
triggers:
-
uuid: d68e4595fd4c4e5a9307b268cfe06b3e
- expression: '(last(/Netgear Fastpath SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Netgear Fastpath SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Netgear Fastpath SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Netgear Fastpath SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Netgear Fastpath by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Netgear Fastpath by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Netgear Fastpath by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Netgear Fastpath by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2326,7 +2326,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Netgear Fastpath SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Netgear Fastpath by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2342,7 +2342,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'system.cpu.util[agentSwitchCpuProcessTotalUtilization.0]'
-
uuid: 1cb7d7036dfe4999b0489cc8bfa254aa
@@ -2353,14 +2353,14 @@ zabbix_export:
drawtype: BOLD_LINE
color: 1A7C11
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'vm.memory.total[agentSwitchCpuProcessMemAvailable.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'vm.memory.available[agentSwitchCpuProcessMemFree.0]'
-
uuid: 88124449b8984ee6bca46269d1d3f1ae
@@ -2372,5 +2372,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Netgear Fastpath SNMP'
+ host: 'Netgear Fastpath by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.0]'
diff --git a/templates/net/qtech_snmp/README.md b/templates/net/qtech_snmp/README.md
index 67f9b06b65d..01bdec46584 100644
--- a/templates/net/qtech_snmp/README.md
+++ b/templates/net/qtech_snmp/README.md
@@ -1,9 +1,9 @@
-# QTech QSW SNMP
+# QTech QSW by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -99,29 +99,29 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/QTech QSW SNMP/system.cpu.util[switchCpuUsage.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|{#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/QTech QSW SNMP/sensor.fan.status[sysFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/QTech QSW SNMP/system.name,#1)<>last(/QTech QSW SNMP/system.name,#2) and length(last(/QTech QSW SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/QTech QSW SNMP/system.hw.serialnumber,#1)<>last(/QTech QSW SNMP/system.hw.serialnumber,#2) and length(last(/QTech QSW SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/QTech QSW SNMP/system.hw.firmware,#1)<>last(/QTech QSW SNMP/system.hw.firmware,#2) and length(last(/QTech QSW SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/QTech QSW SNMP/system.sw.os[sysSoftwareVersion.0],#1)<>last(/QTech QSW SNMP/system.sw.os[sysSoftwareVersion.0],#2) and length(last(/QTech QSW SNMP/system.sw.os[sysSoftwareVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/QTech QSW SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/QTech QSW SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/QTech QSW SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/QTech QSW SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/QTech QSW SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/QTech QSW SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/QTech QSW SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/QTech QSW SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/QTech QSW SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/QTech QSW SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#SNMPINDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/QTech QSW SNMP/sensor.psu.status[sysPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/QTech QSW SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/QTech QSW SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/QTech QSW SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/QTech QSW SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/QTech QSW SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/QTech QSW SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/QTech QSW SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/QTech QSW SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/QTech QSW SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_WARN}`<p>Recovery expression:</p>`max(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_WARN}-3` |WARNING |<p>**Depends on**:</p><p>- Temperature is above critical threshold</p> |
-|Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT}`<p>Recovery expression:</p>`max(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT}-3` |HIGH | |
-|Temperature is too low |<p>-</p> |`avg(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT_LOW}`<p>Recovery expression:</p>`min(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT_LOW}+3` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/QTech QSW by SNMP/system.cpu.util[switchCpuUsage.0],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|{#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/QTech QSW by SNMP/sensor.fan.status[sysFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/QTech QSW by SNMP/system.name,#1)<>last(/QTech QSW by SNMP/system.name,#2) and length(last(/QTech QSW by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/QTech QSW by SNMP/system.hw.serialnumber,#1)<>last(/QTech QSW by SNMP/system.hw.serialnumber,#2) and length(last(/QTech QSW by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/QTech QSW by SNMP/system.hw.firmware,#1)<>last(/QTech QSW by SNMP/system.hw.firmware,#2) and length(last(/QTech QSW by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/QTech QSW by SNMP/system.sw.os[sysSoftwareVersion.0],#1)<>last(/QTech QSW by SNMP/system.sw.os[sysSoftwareVersion.0],#2) and length(last(/QTech QSW by SNMP/system.sw.os[sysSoftwareVersion.0]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/QTech QSW by SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/QTech QSW by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/QTech QSW by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/QTech QSW by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/QTech QSW by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/QTech QSW by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/QTech QSW by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/QTech QSW by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/QTech QSW by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/QTech QSW by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#SNMPINDEX}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/QTech QSW by SNMP/sensor.psu.status[sysPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/QTech QSW by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/QTech QSW by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/QTech QSW by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/QTech QSW by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/QTech QSW by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/QTech QSW by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/QTech QSW by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/QTech QSW by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/QTech QSW by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_WARN}`<p>Recovery expression:</p>`max(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_WARN}-3` |WARNING |<p>**Depends on**:</p><p>- Temperature is above critical threshold</p> |
+|Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT}`<p>Recovery expression:</p>`max(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT}-3` |HIGH | |
+|Temperature is too low |<p>-</p> |`avg(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT_LOW}`<p>Recovery expression:</p>`min(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT_LOW}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/net/qtech_snmp/template_net_qtech_snmp.yaml b/templates/net/qtech_snmp/template_net_qtech_snmp.yaml
index 2f2293c5365..3af7e7f2929 100644
--- a/templates/net/qtech_snmp/template_net_qtech_snmp.yaml
+++ b/templates/net/qtech_snmp/template_net_qtech_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:17:13Z'
+ date: '2022-10-27T14:44:32Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 21f3e79e1d2e4f5e868d1ef81c94bbfd
- template: 'QTech QSW SNMP'
- name: 'QTech QSW SNMP'
+ template: 'QTech QSW by SNMP'
+ name: 'QTech QSW by SNMP'
description: |
Template Net QTech QSW
@@ -44,7 +44,7 @@ zabbix_export:
triggers:
-
uuid: fd05f449cbc64dcba10029c246594568
- expression: 'max(/QTech QSW SNMP/icmpping,#3)=0'
+ expression: 'max(/QTech QSW by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -70,14 +70,14 @@ zabbix_export:
triggers:
-
uuid: 4b2e2d168a0b4da3b5999263f52f3c36
- expression: 'min(/QTech QSW SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/QTech QSW SNMP/icmppingloss,5m)<100'
+ expression: 'min(/QTech QSW by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/QTech QSW by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/QTech QSW SNMP/icmpping,#3)=0'
+ expression: 'max(/QTech QSW by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -103,17 +103,17 @@ zabbix_export:
triggers:
-
uuid: 18f41db36192463eabaa3797034e578a
- expression: 'avg(/QTech QSW SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/QTech QSW by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/QTech QSW SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/QTech QSW SNMP/icmppingloss,5m)<100'
+ expression: 'min(/QTech QSW by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/QTech QSW by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/QTech QSW SNMP/icmpping,#3)=0'
+ expression: 'max(/QTech QSW by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -140,9 +140,9 @@ zabbix_export:
triggers:
-
uuid: 8ca8b9dfed0e4af898d9182150bb1ad0
- expression: 'avg(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT}'
+ expression: 'avg(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT}-3'
+ recovery_expression: 'max(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT}-3'
name: 'Temperature is above critical threshold'
event_name: 'Temperature is above critical threshold: >{$TEMP_CRIT}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -157,9 +157,9 @@ zabbix_export:
value: performance
-
uuid: b9122f253bf440ccb413d577790e46a0
- expression: 'avg(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_WARN}'
+ expression: 'avg(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_WARN}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_WARN}-3'
+ recovery_expression: 'max(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_WARN}-3'
name: 'Temperature is above warning threshold'
event_name: 'Temperature is above warning threshold: >{$TEMP_WARN}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -168,8 +168,8 @@ zabbix_export:
dependencies:
-
name: 'Temperature is above critical threshold'
- expression: 'avg(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT}'
- recovery_expression: 'max(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT}-3'
+ expression: 'avg(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT}'
+ recovery_expression: 'max(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT}-3'
tags:
-
tag: scope
@@ -179,9 +179,9 @@ zabbix_export:
value: performance
-
uuid: d7607e97e2f549caaefa184c9fee8220
- expression: 'avg(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT_LOW}'
+ expression: 'avg(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)<{$TEMP_CRIT_LOW}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/QTech QSW SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT_LOW}+3'
+ recovery_expression: 'min(/QTech QSW by SNMP/sensor.temp.value[switchTemperature.0],5m)>{$TEMP_CRIT_LOW}+3'
name: 'Temperature is too low'
event_name: 'Temperature is too low: <{$TEMP_CRIT_LOW}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 57bf78318ded4574bde08adfafe94454
- expression: 'min(/QTech QSW SNMP/system.cpu.util[switchCpuUsage.0],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/QTech QSW by SNMP/system.cpu.util[switchCpuUsage.0],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -306,7 +306,7 @@ zabbix_export:
triggers:
-
uuid: e4682afd0cc547eea9605452b7df79f4
- expression: 'last(/QTech QSW SNMP/system.hw.firmware,#1)<>last(/QTech QSW SNMP/system.hw.firmware,#2) and length(last(/QTech QSW SNMP/system.hw.firmware))>0'
+ expression: 'last(/QTech QSW by SNMP/system.hw.firmware,#1)<>last(/QTech QSW by SNMP/system.hw.firmware,#2) and length(last(/QTech QSW by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -361,7 +361,7 @@ zabbix_export:
triggers:
-
uuid: 83db3bd248994482a92ba86e5d3ae5ab
- expression: 'last(/QTech QSW SNMP/system.hw.serialnumber,#1)<>last(/QTech QSW SNMP/system.hw.serialnumber,#2) and length(last(/QTech QSW SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/QTech QSW by SNMP/system.hw.serialnumber,#1)<>last(/QTech QSW by SNMP/system.hw.serialnumber,#2) and length(last(/QTech QSW by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -468,7 +468,7 @@ zabbix_export:
triggers:
-
uuid: 27fa16e646224f88ad3b35ce7a71a18a
- expression: 'last(/QTech QSW SNMP/system.name,#1)<>last(/QTech QSW SNMP/system.name,#2) and length(last(/QTech QSW SNMP/system.name))>0'
+ expression: 'last(/QTech QSW by SNMP/system.name,#1)<>last(/QTech QSW by SNMP/system.name,#2) and length(last(/QTech QSW by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -549,7 +549,7 @@ zabbix_export:
triggers:
-
uuid: 6431f9a46fcb4a42ab3e04c8289bd07d
- expression: 'last(/QTech QSW SNMP/system.sw.os[sysSoftwareVersion.0],#1)<>last(/QTech QSW SNMP/system.sw.os[sysSoftwareVersion.0],#2) and length(last(/QTech QSW SNMP/system.sw.os[sysSoftwareVersion.0]))>0'
+ expression: 'last(/QTech QSW by SNMP/system.sw.os[sysSoftwareVersion.0],#1)<>last(/QTech QSW by SNMP/system.sw.os[sysSoftwareVersion.0],#2) and length(last(/QTech QSW by SNMP/system.sw.os[sysSoftwareVersion.0]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -557,7 +557,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/QTech QSW SNMP/system.name,#1)<>last(/QTech QSW SNMP/system.name,#2) and length(last(/QTech QSW SNMP/system.name))>0'
+ expression: 'last(/QTech QSW by SNMP/system.name,#1)<>last(/QTech QSW by SNMP/system.name,#2) and length(last(/QTech QSW by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -609,7 +609,7 @@ zabbix_export:
triggers:
-
uuid: 082a768e190d4e8e97e0857cd3412ea1
- expression: 'min(/QTech QSW SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/QTech QSW by SNMP/vm.memory.util[vm.memory.util.0],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -645,7 +645,7 @@ zabbix_export:
triggers:
-
uuid: 7a7c0c7501ca484491394fe82c75b401
- expression: 'max(/QTech QSW SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/QTech QSW by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -653,7 +653,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/QTech QSW SNMP/icmpping,#3)=0'
+ expression: 'max(/QTech QSW by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -686,7 +686,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9961328558a74e45a3154559ed582e41
- expression: 'count(/QTech QSW SNMP/sensor.fan.status[sysFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/QTech QSW by SNMP/sensor.fan.status[sysFanStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: '{#SNMPINDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1002,9 +1002,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: efa56904fcf54fa5bbd0ba21381dc415
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1055,21 +1055,21 @@ zabbix_export:
-
uuid: cb39728aac4940dda2b3a307d12be813
expression: |
- change(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/QTech QSW SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/QTech QSW by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1078,8 +1078,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1087,13 +1087,13 @@ zabbix_export:
-
uuid: 303873dbb6224b4abc2f678100a72eda
expression: |
- (avg(/QTech QSW SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/QTech QSW SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/QTech QSW by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/QTech QSW by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/QTech QSW SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/QTech QSW SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/QTech QSW by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/QTech QSW by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/QTech QSW by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1103,8 +1103,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1112,12 +1112,12 @@ zabbix_export:
-
uuid: 0e0544466c6845349078ca2a72d2cf6c
expression: |
- min(/QTech QSW SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/QTech QSW SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/QTech QSW by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/QTech QSW by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/QTech QSW SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/QTech QSW SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/QTech QSW by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/QTech QSW by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1127,8 +1127,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/QTech QSW SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/QTech QSW by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1145,42 +1145,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: c646f18c6ab34ff285f5de376fbe3dd3
@@ -1250,7 +1250,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8688cff304604fd7b015e92ef9f98647
- expression: 'last(/QTech QSW SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/QTech QSW by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1304,7 +1304,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d047cf0b9e9f4e169e4a62c60358178d
- expression: 'count(/QTech QSW SNMP/sensor.psu.status[sysPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/QTech QSW by SNMP/sensor.psu.status[sysPowerStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: '{#SNMPINDEX}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1434,7 +1434,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -2383,7 +2383,7 @@ zabbix_export:
triggers:
-
uuid: 44d6c66a6a1641f8816031c0d5bf4040
- expression: '(last(/QTech QSW SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/QTech QSW SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/QTech QSW SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/QTech QSW SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/QTech QSW by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/QTech QSW by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/QTech QSW by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/QTech QSW by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2392,7 +2392,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/QTech QSW SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/QTech QSW by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2408,7 +2408,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'system.cpu.util[switchCpuUsage.0]'
-
uuid: 2d662728c6ca4ff1a690a3eb2ab2e51b
@@ -2420,5 +2420,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'QTech QSW SNMP'
+ host: 'QTech QSW by SNMP'
key: 'vm.memory.util[vm.memory.util.0]'
diff --git a/templates/net/tplink_snmp/README.md b/templates/net/tplink_snmp/README.md
index 15079da2b73..af6793733b9 100644
--- a/templates/net/tplink_snmp/README.md
+++ b/templates/net/tplink_snmp/README.md
@@ -1,9 +1,9 @@
-# TP-LINK SNMP
+# TP-LINK by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
Link to MIBs: https://www.tp-link.com/en/support/download/t2600g-28ts/#MIBs_Files
Sample device overview page: https://www.tp-link.com/en/business-networking/managed-switch/t2600g-28ts/#overview
Emulation page (web): https://emulator.tp-link.com/T2600G-28TS(UN)_1.0/Index.htm
@@ -92,24 +92,24 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|#{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/TP-LINK SNMP/system.cpu.util[tpSysMonitorCpu1Minute.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/TP-LINK SNMP/system.name,#1)<>last(/TP-LINK SNMP/system.name,#2) and length(last(/TP-LINK SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/TP-LINK SNMP/system.hw.serialnumber,#1)<>last(/TP-LINK SNMP/system.hw.serialnumber,#2) and length(last(/TP-LINK SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/TP-LINK SNMP/system.hw.firmware,#1)<>last(/TP-LINK SNMP/system.hw.firmware,#2) and length(last(/TP-LINK SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/TP-LINK SNMP/vm.memory.util[tpSysMonitorMemoryUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/TP-LINK SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/TP-LINK SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/TP-LINK SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/TP-LINK SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/TP-LINK SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/TP-LINK SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/TP-LINK SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/TP-LINK SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/TP-LINK SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/TP-LINK SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/TP-LINK SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/TP-LINK SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/TP-LINK SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/TP-LINK SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/TP-LINK SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TP-LINK SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/TP-LINK SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|#{#SNMPVALUE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/TP-LINK by SNMP/system.cpu.util[tpSysMonitorCpu1Minute.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/TP-LINK by SNMP/system.name,#1)<>last(/TP-LINK by SNMP/system.name,#2) and length(last(/TP-LINK by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/TP-LINK by SNMP/system.hw.serialnumber,#1)<>last(/TP-LINK by SNMP/system.hw.serialnumber,#2) and length(last(/TP-LINK by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/TP-LINK by SNMP/system.hw.firmware,#1)<>last(/TP-LINK by SNMP/system.hw.firmware,#2) and length(last(/TP-LINK by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|#{#SNMPVALUE}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/TP-LINK by SNMP/vm.memory.util[tpSysMonitorMemoryUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/TP-LINK by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/TP-LINK by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/TP-LINK by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/TP-LINK by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/TP-LINK by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/TP-LINK by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/TP-LINK by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/TP-LINK by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/TP-LINK by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/TP-LINK by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/TP-LINK by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/TP-LINK by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/TP-LINK by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/TP-LINK by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/TP-LINK by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TP-LINK by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/TP-LINK by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/net/tplink_snmp/template_net_tplink_snmp.yaml b/templates/net/tplink_snmp/template_net_tplink_snmp.yaml
index 7c208eda70a..b5863ba81fe 100644
--- a/templates/net/tplink_snmp/template_net_tplink_snmp.yaml
+++ b/templates/net/tplink_snmp/template_net_tplink_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:17:15Z'
+ date: '2022-10-27T14:44:08Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 2b9039885edf45b8bdd39f16dd069133
- template: 'TP-LINK SNMP'
- name: 'TP-LINK SNMP'
+ template: 'TP-LINK by SNMP'
+ name: 'TP-LINK by SNMP'
description: |
Template Net TP-LINK
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 5b86c558f99d4ff5a8abca830df6e86e
- expression: 'max(/TP-LINK SNMP/icmpping,#3)=0'
+ expression: 'max(/TP-LINK by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -79,14 +79,14 @@ zabbix_export:
triggers:
-
uuid: 421d12d2c2a0405ba31c869c4d481b70
- expression: 'min(/TP-LINK SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TP-LINK SNMP/icmppingloss,5m)<100'
+ expression: 'min(/TP-LINK by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TP-LINK by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/TP-LINK SNMP/icmpping,#3)=0'
+ expression: 'max(/TP-LINK by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -112,17 +112,17 @@ zabbix_export:
triggers:
-
uuid: 4d1df00b9476483fa77e6064708abf58
- expression: 'avg(/TP-LINK SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/TP-LINK by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/TP-LINK SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TP-LINK SNMP/icmppingloss,5m)<100'
+ expression: 'min(/TP-LINK by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/TP-LINK by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/TP-LINK SNMP/icmpping,#3)=0'
+ expression: 'max(/TP-LINK by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -216,7 +216,7 @@ zabbix_export:
triggers:
-
uuid: ee797ebfc568468d8a3e9a8b388afb6d
- expression: 'last(/TP-LINK SNMP/system.hw.firmware,#1)<>last(/TP-LINK SNMP/system.hw.firmware,#2) and length(last(/TP-LINK SNMP/system.hw.firmware))>0'
+ expression: 'last(/TP-LINK by SNMP/system.hw.firmware,#1)<>last(/TP-LINK by SNMP/system.hw.firmware,#2) and length(last(/TP-LINK by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -275,7 +275,7 @@ zabbix_export:
triggers:
-
uuid: 57a906ac8f994ebaa2543a5eb4949db7
- expression: 'last(/TP-LINK SNMP/system.hw.serialnumber,#1)<>last(/TP-LINK SNMP/system.hw.serialnumber,#2) and length(last(/TP-LINK SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/TP-LINK by SNMP/system.hw.serialnumber,#1)<>last(/TP-LINK by SNMP/system.hw.serialnumber,#2) and length(last(/TP-LINK by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -384,7 +384,7 @@ zabbix_export:
triggers:
-
uuid: 367bce2d38fe4ecbbe23c34bc7ec6226
- expression: 'last(/TP-LINK SNMP/system.name,#1)<>last(/TP-LINK SNMP/system.name,#2) and length(last(/TP-LINK SNMP/system.name))>0'
+ expression: 'last(/TP-LINK by SNMP/system.name,#1)<>last(/TP-LINK by SNMP/system.name,#2) and length(last(/TP-LINK by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -465,7 +465,7 @@ zabbix_export:
triggers:
-
uuid: 7b533ce3df8c4405a04f90dd1e850a32
- expression: 'max(/TP-LINK SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/TP-LINK by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -473,7 +473,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/TP-LINK SNMP/icmpping,#3)=0'
+ expression: 'max(/TP-LINK by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -508,7 +508,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 667a09c4f1c04a1a84c7c79adb9cbc70
- expression: 'min(/TP-LINK SNMP/system.cpu.util[tpSysMonitorCpu1Minute.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/TP-LINK by SNMP/system.cpu.util[tpSysMonitorCpu1Minute.{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: '#{#SNMPVALUE}: High CPU utilization'
event_name: '#{#SNMPVALUE}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -529,7 +529,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'system.cpu.util[tpSysMonitorCpu1Minute.{#SNMPINDEX}]'
-
uuid: 7a3144453fc644b3bd42dec4ba843bef
@@ -560,7 +560,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3bd3af786eb34b5e9a05f3113fce8007
- expression: 'min(/TP-LINK SNMP/vm.memory.util[tpSysMonitorMemoryUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/TP-LINK by SNMP/vm.memory.util[tpSysMonitorMemoryUtilization.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '#{#SNMPVALUE}: High memory utilization'
event_name: '#{#SNMPVALUE}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -583,7 +583,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'vm.memory.util[tpSysMonitorMemoryUtilization.{#SNMPINDEX}]'
-
uuid: eec7aaed43e14fbca8c07cdc68d8b683
@@ -876,9 +876,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ce16733da6d24beb9cea97d61368e21b
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFDESCR}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -929,21 +929,21 @@ zabbix_export:
-
uuid: ebcdfd6d8c974c06810375d98e7d76c7
expression: |
- change(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ change(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
and (
- last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/TP-LINK SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/TP-LINK by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -952,8 +952,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -961,13 +961,13 @@ zabbix_export:
-
uuid: ae472f99d7ab480c947293f09c4b9dbb
expression: |
- (avg(/TP-LINK SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
- avg(/TP-LINK SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
- last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ (avg(/TP-LINK by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
+ avg(/TP-LINK by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
+ last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/TP-LINK SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
- avg(/TP-LINK SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
+ avg(/TP-LINK by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
+ avg(/TP-LINK by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/TP-LINK by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
name: 'Interface {#IFDESCR}: High bandwidth usage'
event_name: 'Interface {#IFDESCR}: High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -977,8 +977,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -986,12 +986,12 @@ zabbix_export:
-
uuid: ec28cbfaaf6245a194fe001555d05e5c
expression: |
- min(/TP-LINK SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/TP-LINK SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/TP-LINK by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/TP-LINK by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/TP-LINK SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/TP-LINK SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/TP-LINK by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/TP-LINK by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFDESCR}: High error rate'
event_name: 'Interface {#IFDESCR}: High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1001,8 +1001,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/TP-LINK SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/TP-LINK by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1016,42 +1016,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'net.if.in[ifInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'net.if.out[ifOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
tags:
-
@@ -1147,7 +1147,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'TP-LINK SNMP'
+ host: 'TP-LINK by SNMP'
name: 'Interface {#IFDESCR}: Network traffic'
valuemaps:
-
@@ -2060,7 +2060,7 @@ zabbix_export:
triggers:
-
uuid: 63b45803131d4391abfa313a222339e5
- expression: '(last(/TP-LINK SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/TP-LINK SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/TP-LINK SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/TP-LINK SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/TP-LINK by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/TP-LINK by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/TP-LINK by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/TP-LINK by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2069,7 +2069,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/TP-LINK SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/TP-LINK by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/net/ubiquiti_airos_snmp/README.md b/templates/net/ubiquiti_airos_snmp/README.md
index 8a37837b492..2880ea94742 100644
--- a/templates/net/ubiquiti_airos_snmp/README.md
+++ b/templates/net/ubiquiti_airos_snmp/README.md
@@ -1,9 +1,9 @@
-# Ubiquiti AirOS SNMP
+# Ubiquiti AirOS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -84,23 +84,23 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Ubiquiti AirOS SNMP/system.cpu.util[loadValue.2],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Ubiquiti AirOS SNMP/system.name,#1)<>last(/Ubiquiti AirOS SNMP/system.name,#2) and length(last(/Ubiquiti AirOS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Ubiquiti AirOS SNMP/system.hw.firmware,#1)<>last(/Ubiquiti AirOS SNMP/system.hw.firmware,#2) and length(last(/Ubiquiti AirOS SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Ubiquiti AirOS SNMP/vm.memory.util[memoryUsedPercentage],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Ubiquiti AirOS SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/Ubiquiti AirOS SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Ubiquiti AirOS SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/Ubiquiti AirOS SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Ubiquiti AirOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Ubiquiti AirOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Ubiquiti AirOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Ubiquiti AirOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Ubiquiti AirOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Ubiquiti AirOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Ubiquiti AirOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Ubiquiti AirOS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Ubiquiti AirOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Ubiquiti AirOS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Ubiquiti AirOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Ubiquiti AirOS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Ubiquiti AirOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Ubiquiti AirOS by SNMP/system.cpu.util[loadValue.2],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Ubiquiti AirOS by SNMP/system.name,#1)<>last(/Ubiquiti AirOS by SNMP/system.name,#2) and length(last(/Ubiquiti AirOS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Ubiquiti AirOS by SNMP/system.hw.firmware,#1)<>last(/Ubiquiti AirOS by SNMP/system.hw.firmware,#2) and length(last(/Ubiquiti AirOS by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Ubiquiti AirOS by SNMP/vm.memory.util[memoryUsedPercentage],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFDESCR}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFDESCR}: High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Ubiquiti AirOS by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or avg(/Ubiquiti AirOS by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Ubiquiti AirOS by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and avg(/Ubiquiti AirOS by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Ubiquiti AirOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Ubiquiti AirOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Ubiquiti AirOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Ubiquiti AirOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and ( last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFDESCR}: Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Ubiquiti AirOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Ubiquiti AirOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Ubiquiti AirOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Ubiquiti AirOS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Ubiquiti AirOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Ubiquiti AirOS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Ubiquiti AirOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Ubiquiti AirOS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Ubiquiti AirOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/net/ubiquiti_airos_snmp/template_net_ubiquiti_airos_snmp.yaml b/templates/net/ubiquiti_airos_snmp/template_net_ubiquiti_airos_snmp.yaml
index 856aafb935e..fca9af2b1b6 100644
--- a/templates/net/ubiquiti_airos_snmp/template_net_ubiquiti_airos_snmp.yaml
+++ b/templates/net/ubiquiti_airos_snmp/template_net_ubiquiti_airos_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:17:18Z'
+ date: '2022-10-27T14:41:44Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 6c235d126c1f4895acfe2156b140a886
- template: 'Ubiquiti AirOS SNMP'
- name: 'Ubiquiti AirOS SNMP'
+ template: 'Ubiquiti AirOS by SNMP'
+ name: 'Ubiquiti AirOS by SNMP'
description: |
Template Net Ubiquiti AirOS
@@ -61,7 +61,7 @@ zabbix_export:
triggers:
-
uuid: 2a6711992f354095b056b628be78022c
- expression: 'max(/Ubiquiti AirOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Ubiquiti AirOS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -87,14 +87,14 @@ zabbix_export:
triggers:
-
uuid: 8e66ba0787b54af2897dd348e5453f10
- expression: 'min(/Ubiquiti AirOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Ubiquiti AirOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Ubiquiti AirOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Ubiquiti AirOS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Ubiquiti AirOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Ubiquiti AirOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -120,17 +120,17 @@ zabbix_export:
triggers:
-
uuid: 4ae253aa403a42ad8cd4721e2ffdfbca
- expression: 'avg(/Ubiquiti AirOS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Ubiquiti AirOS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Ubiquiti AirOS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Ubiquiti AirOS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Ubiquiti AirOS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Ubiquiti AirOS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Ubiquiti AirOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Ubiquiti AirOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -194,7 +194,7 @@ zabbix_export:
triggers:
-
uuid: 0a779320c2ba4494b8c55aef969e7c9d
- expression: 'min(/Ubiquiti AirOS SNMP/system.cpu.util[loadValue.2],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Ubiquiti AirOS by SNMP/system.cpu.util[loadValue.2],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -253,7 +253,7 @@ zabbix_export:
triggers:
-
uuid: ab4a91cf3c2a4305a59727558c00a1f8
- expression: 'last(/Ubiquiti AirOS SNMP/system.hw.firmware,#1)<>last(/Ubiquiti AirOS SNMP/system.hw.firmware,#2) and length(last(/Ubiquiti AirOS SNMP/system.hw.firmware))>0'
+ expression: 'last(/Ubiquiti AirOS by SNMP/system.hw.firmware,#1)<>last(/Ubiquiti AirOS by SNMP/system.hw.firmware,#2) and length(last(/Ubiquiti AirOS by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -363,7 +363,7 @@ zabbix_export:
triggers:
-
uuid: 15523bce03a24cd6a4818ab655d1d2ad
- expression: 'last(/Ubiquiti AirOS SNMP/system.name,#1)<>last(/Ubiquiti AirOS SNMP/system.name,#2) and length(last(/Ubiquiti AirOS SNMP/system.name))>0'
+ expression: 'last(/Ubiquiti AirOS by SNMP/system.name,#1)<>last(/Ubiquiti AirOS by SNMP/system.name,#2) and length(last(/Ubiquiti AirOS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -515,7 +515,7 @@ zabbix_export:
triggers:
-
uuid: 30c0c80ae6df45bb96c434016e394bba
- expression: 'min(/Ubiquiti AirOS SNMP/vm.memory.util[memoryUsedPercentage],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Ubiquiti AirOS by SNMP/vm.memory.util[memoryUsedPercentage],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -551,7 +551,7 @@ zabbix_export:
triggers:
-
uuid: 7735f20ab7fd40b8b34cead6cb306b30
- expression: 'max(/Ubiquiti AirOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Ubiquiti AirOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -559,7 +559,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Ubiquiti AirOS SNMP/icmpping,#3)=0'
+ expression: 'max(/Ubiquiti AirOS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -856,9 +856,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c360a22671ea4dcda48fc49ec7847c2d
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFDESCR}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -909,21 +909,21 @@ zabbix_export:
-
uuid: 9ccbb6859cd7422684e1946c1e321b3c
expression: |
- change(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ change(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])<0 and last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
and (
- last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Ubiquiti AirOS SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Ubiquiti AirOS by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0 and last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFDESCR}: Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -932,8 +932,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -941,13 +941,13 @@ zabbix_export:
-
uuid: 80e37d44eddf49c89b39dacc8c88ac07
expression: |
- (avg(/Ubiquiti AirOS SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
- avg(/Ubiquiti AirOS SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
- last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
+ (avg(/Ubiquiti AirOS by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) or
+ avg(/Ubiquiti AirOS by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])) and
+ last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Ubiquiti AirOS SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
- avg(/Ubiquiti AirOS SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
+ avg(/Ubiquiti AirOS by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}]) and
+ avg(/Ubiquiti AirOS by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Ubiquiti AirOS by SNMP/net.if.speed[ifSpeed.{#SNMPINDEX}])
name: 'Interface {#IFDESCR}: High bandwidth usage'
event_name: 'Interface {#IFDESCR}: High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -957,8 +957,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -966,12 +966,12 @@ zabbix_export:
-
uuid: 3d7c8f98d0c447038c630f4e2ad81c06
expression: |
- min(/Ubiquiti AirOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Ubiquiti AirOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Ubiquiti AirOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Ubiquiti AirOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Ubiquiti AirOS SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Ubiquiti AirOS SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Ubiquiti AirOS by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Ubiquiti AirOS by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFDESCR}: High error rate'
event_name: 'Interface {#IFDESCR}: High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -981,8 +981,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFDESCR}: Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Ubiquiti AirOS SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Ubiquiti AirOS by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -996,42 +996,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'net.if.in[ifInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'net.if.out[ifOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
tags:
-
@@ -1130,7 +1130,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
name: 'Interface {#IFDESCR}: Network traffic'
valuemaps:
-
@@ -2043,7 +2043,7 @@ zabbix_export:
triggers:
-
uuid: 2d9ed5a3b714461bbcdc4c530f955e5b
- expression: '(last(/Ubiquiti AirOS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Ubiquiti AirOS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Ubiquiti AirOS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Ubiquiti AirOS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Ubiquiti AirOS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Ubiquiti AirOS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Ubiquiti AirOS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Ubiquiti AirOS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2052,7 +2052,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Ubiquiti AirOS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Ubiquiti AirOS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2068,7 +2068,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'system.cpu.util[loadValue.2]'
-
uuid: cbce9bb057b14b8eb81f8cbb463442d6
@@ -2080,5 +2080,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Ubiquiti AirOS SNMP'
+ host: 'Ubiquiti AirOS by SNMP'
key: 'vm.memory.util[memoryUsedPercentage]'
diff --git a/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/README.md b/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/README.md
index 148367d0579..2776fadc7f2 100644
--- a/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL AAM1212-51 IES-612 SNMP
+# ZYXEL AAM1212-51 IES-612 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
http://origin-eu.zyxel.com/products_services/ies_1248_51v.shtml?t=p
This template was tested on:
@@ -39,8 +39,8 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|ADSL interface discovery |<p>-</p> |SNMP |zyxel.aam1212.net.adsl.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
-|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.aam1212.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|ADSL interface discovery |<p>-</p> |SNMP |zyxel.aam1212.net.adsl.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
+|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.aam1212.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Temperature discovery |<p>An entry in tempTable.</p> |SNMP |zyxel.aam1212.temp.discovery |
|Voltage discovery |<p>An entry in voltageTable.</p> |SNMP |zyxel.aam1212.volt.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
@@ -82,26 +82,26 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL AAM1212-51 / IES-612: Template does not match hardware |<p>This template is for Zyxel AAM1212-51 / IES-612, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.model)<>"AAM1212-51 / IES-612"` |INFO | |
-|ZYXEL AAM1212-51 / IES-612: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.fwversion,#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.fwversion,#2) and length(last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL AAM1212-51 / IES-612: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.serialnumber,#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.serialnumber,#2) and length(last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL AAM1212-51 / IES-612: Port {#ZYXEL.IF.NAME}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL AAM1212-51 / IES-612: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL AAM1212-51 / IES-612: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL AAM1212-51 / IES-612: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL AAM1212-51 IES-612 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL AAM1212-51 / IES-612: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.hw.uptime)>0 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.hw.uptime)<10m) or (last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.hw.uptime)=0 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL AAM1212-51 / IES-612: Port {#SNMPINDEX} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.slot.alarm,,"like","moduleNoDefect")=0` |AVERAGE | |
-|ZYXEL AAM1212-51 / IES-612: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL AAM1212-51 / IES-612: Template does not match hardware |<p>This template is for Zyxel AAM1212-51 / IES-612, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.model)<>"AAM1212-51 / IES-612"` |INFO | |
+|ZYXEL AAM1212-51 / IES-612: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.fwversion,#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.fwversion,#2) and length(last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL AAM1212-51 / IES-612: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.serialnumber,#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.serialnumber,#2) and length(last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL AAM1212-51 / IES-612: Port {#ZYXEL.IF.NAME}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL AAM1212-51 / IES-612: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL AAM1212-51 / IES-612: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL AAM1212-51 / IES-612: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL AAM1212-51 IES-612 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL AAM1212-51 / IES-612: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.hw.uptime)>0 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.hw.uptime)<10m) or (last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.hw.uptime)=0 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL AAM1212-51 / IES-612: Port {#SNMPINDEX} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.slot.alarm,,"like","moduleNoDefect")=0` |AVERAGE | |
+|ZYXEL AAM1212-51 / IES-612: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/template_net_zyxel_aam1212-51_snmp.yaml b/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/template_net_zyxel_aam1212-51_snmp.yaml
index cab97e0944c..c39acc7d78a 100644
--- a/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/template_net_zyxel_aam1212-51_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_aam1212-51_snmp/template_net_zyxel_aam1212-51_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:02Z'
+ date: '2022-10-27T14:44:26Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 3a71dcdcfe0b4a0e8284d8939d335cce
- template: 'ZYXEL AAM1212-51 IES-612 SNMP'
- name: 'ZYXEL AAM1212-51 IES-612 SNMP'
+ template: 'ZYXEL AAM1212-51 IES-612 by SNMP'
+ name: 'ZYXEL AAM1212-51 IES-612 by SNMP'
description: |
ZYXEL AAM1212-51 / IES-612
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 40839f3008b84e3c9ffa8858bd2ab616
- expression: 'max(/ZYXEL AAM1212-51 IES-612 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL AAM1212-51 IES-612 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL AAM1212-51 / IES-612: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -111,7 +111,7 @@ zabbix_export:
triggers:
-
uuid: 02ba3941993f48ca8d5f40b3b19804e8
- expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.fwversion,#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.fwversion,#2) and length(last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.fwversion))>0'
+ expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.fwversion,#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.fwversion,#2) and length(last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.fwversion))>0'
name: 'ZYXEL AAM1212-51 / IES-612: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -234,7 +234,7 @@ zabbix_export:
triggers:
-
uuid: 5a3f459afc4f42fb90849e98c7639a96
- expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.model)<>"AAM1212-51 / IES-612"'
+ expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.model)<>"AAM1212-51 / IES-612"'
name: 'ZYXEL AAM1212-51 / IES-612: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel AAM1212-51 / IES-612, but connected to {ITEM.VALUE}'
@@ -317,7 +317,7 @@ zabbix_export:
triggers:
-
uuid: 7528520bca7c4524b7451aeaca440cc5
- expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.serialnumber,#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.serialnumber,#2) and length(last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.serialnumber))>0'
+ expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.serialnumber,#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.serialnumber,#2) and length(last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.serialnumber))>0'
name: 'ZYXEL AAM1212-51 / IES-612: Device has been replaced'
event_name: 'ZYXEL AAM1212-51 / IES-612: Device has been replaced (new serial number received)'
priority: INFO
@@ -400,7 +400,7 @@ zabbix_export:
triggers:
-
uuid: eec541b07a434770b2a3301825cc5e82
- expression: 'find(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.slot.alarm,,"like","moduleNoDefect")=0'
+ expression: 'find(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.slot.alarm,,"like","moduleNoDefect")=0'
name: 'ZYXEL AAM1212-51 / IES-612: Port {#SNMPINDEX} alarm'
priority: AVERAGE
description: 'The slot reported an error.'
@@ -498,7 +498,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0c78247a1003496abab584a526777a40
- expression: 'min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX}'
event_name: 'ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -575,7 +575,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 14cbae6c16c245b09ed46e0cc01a556c
- expression: 'min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX}'
event_name: 'ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -620,7 +620,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e917c9a8d6bb4af3a40c6c5b41f90c22
- expression: 'min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX}'
event_name: 'ZYXEL AAM1212-51 / IES-612: High the DSL line attenuation in Port {#SNMPINDEX} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -697,7 +697,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 125b08332e2f409985cade88ab3842f1
- expression: 'min(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX}'
event_name: 'ZYXEL AAM1212-51 / IES-612: Low the DSL line noise margins in Port {#SNMPINDEX} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -796,9 +796,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 956fc99c2c5341a2b29ba2f302cc0a3a
- expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.adsl.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL AAM1212-51 / IES-612: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -853,13 +853,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL AAM1212-51 IES-612 SNMP'
+ host: 'ZYXEL AAM1212-51 IES-612 by SNMP'
key: 'zyxel.aam1212.net.adsl.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL AAM1212-51 IES-612 SNMP'
+ host: 'ZYXEL AAM1212-51 IES-612 by SNMP'
key: 'zyxel.aam1212.net.adsl.out.traffic[{#SNMPINDEX}]'
overrides:
-
@@ -877,7 +877,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 8e327f4a888b417db390148e7a894d10
@@ -1022,9 +1021,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 805f49836f794aad9ee00f66dd90ffc1
- expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL AAM1212-51 / IES-612: Port {#ZYXEL.IF.NAME}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1079,13 +1078,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL AAM1212-51 IES-612 SNMP'
+ host: 'ZYXEL AAM1212-51 IES-612 by SNMP'
key: 'zyxel.aam1212.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL AAM1212-51 IES-612 SNMP'
+ host: 'ZYXEL AAM1212-51 IES-612 by SNMP'
key: 'zyxel.aam1212.net.if.out.traffic[{#SNMPINDEX}]'
overrides:
-
@@ -1103,7 +1102,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 4bc61b4441a840a79bbd118a1d3cf66e
@@ -1140,7 +1138,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 321b2efb6e8e4117949b3644cc101ff2
- expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL AAM1212-51 / IES-612: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1157,7 +1155,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL AAM1212-51 IES-612 SNMP'
+ host: 'ZYXEL AAM1212-51 IES-612 by SNMP'
key: 'zyxel.aam1212.temp[{#SNMPINDEX}]'
-
uuid: fbb48a267b7646a98246da0357a1ee95
@@ -1199,7 +1197,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a7aa1ae207bb462bb23d3f2fca2c3533
- expression: 'last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL AAM1212-51 / IES-612: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1216,7 +1214,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL AAM1212-51 IES-612 SNMP'
+ host: 'ZYXEL AAM1212-51 IES-612 by SNMP'
key: 'zyxel.aam1212.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1327,7 +1325,7 @@ zabbix_export:
triggers:
-
uuid: 819190f68248439292fc4622c3eec5a9
- expression: '(last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.hw.uptime)>0 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.hw.uptime)<10m) or (last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.hw.uptime)=0 and last(/ZYXEL AAM1212-51 IES-612 SNMP/zyxel.aam1212.net.uptime)<10m)'
+ expression: '(last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.hw.uptime)>0 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.hw.uptime)<10m) or (last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.hw.uptime)=0 and last(/ZYXEL AAM1212-51 IES-612 by SNMP/zyxel.aam1212.net.uptime)<10m)'
name: 'ZYXEL AAM1212-51 / IES-612: Host has been restarted'
event_name: 'ZYXEL AAM1212-51 / IES-612: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
diff --git a/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/README.md b/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/README.md
index ceff7a3a0b9..cfc7c3b1b87 100644
--- a/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL ES3500-8PD SNMP
+# ZYXEL ES3500-8PD by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mes3500-series
This template was tested on:
@@ -46,7 +46,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|Interface discovery |<p>-</p> |SNMP |zyxel.3500_8pd.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3500_8pd.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Memory pool discovery |<p>-</p> |SNMP |zyxel.3500_8pd.memory.discovery |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3500_8pd.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3500_8pd.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
@@ -101,25 +101,25 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL ES3500-8PD: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL ES3500-8PD: Template does not match hardware |<p>This template is for Zyxel ES3500-8PD, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.model)<>"ES3500-8PD"` |INFO | |
-|ZYXEL ES3500-8PD: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.fwversion,#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.fwversion,#2) and length(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL ES3500-8PD: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.serialnumber,#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.serialnumber,#2) and length(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL ES3500-8PD: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|ZYXEL ES3500-8PD: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL ES3500-8PD: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL ES3500-8PD: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL ES3500-8PD: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL ES3500-8PD SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL ES3500-8PD: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.hw.uptime)>0 and last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.hw.uptime)<10m) or (last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.hw.uptime)=0 and last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL ES3500-8PD: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL ES3500-8PD: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL ES3500-8PD: Template does not match hardware |<p>This template is for Zyxel ES3500-8PD, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.model)<>"ES3500-8PD"` |INFO | |
+|ZYXEL ES3500-8PD: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.fwversion,#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.fwversion,#2) and length(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL ES3500-8PD: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.serialnumber,#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.serialnumber,#2) and length(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL ES3500-8PD: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|ZYXEL ES3500-8PD: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL ES3500-8PD: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL ES3500-8PD: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL ES3500-8PD: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL ES3500-8PD by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL ES3500-8PD: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.hw.uptime)>0 and last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.hw.uptime)<10m) or (last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.hw.uptime)=0 and last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL ES3500-8PD: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/template_net_zyxel_es3500-8pd_snmp.yaml b/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/template_net_zyxel_es3500-8pd_snmp.yaml
index 74254be829b..ecc29715736 100644
--- a/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/template_net_zyxel_es3500-8pd_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_es3500-8pd_snmp/template_net_zyxel_es3500-8pd_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:03Z'
+ date: '2022-10-27T14:44:23Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: b8a6f34fd5c447b1b9310746a96f4e80
- template: 'ZYXEL ES3500-8PD SNMP'
- name: 'ZYXEL ES3500-8PD SNMP'
+ template: 'ZYXEL ES3500-8PD by SNMP'
+ name: 'ZYXEL ES3500-8PD by SNMP'
description: |
ZYXEL ES3500-8PD
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 3bbbd93c114f4bf5b8f4788ca6825afd
- expression: 'max(/ZYXEL ES3500-8PD SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL ES3500-8PD by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL ES3500-8PD: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -107,7 +107,7 @@ zabbix_export:
triggers:
-
uuid: 3cf67f911a854d2ebeb9e006f3f97738
- expression: 'min(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL ES3500-8PD: High CPU utilization'
event_name: 'ZYXEL ES3500-8PD: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: bd6d0fe201094c00b6c93d7c04c27729
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.fwversion,#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.fwversion,#2) and length(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.fwversion))>0'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.fwversion,#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.fwversion,#2) and length(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.fwversion))>0'
name: 'ZYXEL ES3500-8PD: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -277,7 +277,7 @@ zabbix_export:
triggers:
-
uuid: e03ca45643354a18a9d6ffbb38a07654
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.model)<>"ES3500-8PD"'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.model)<>"ES3500-8PD"'
name: 'ZYXEL ES3500-8PD: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel ES3500-8PD, but connected to {ITEM.VALUE}'
@@ -360,7 +360,7 @@ zabbix_export:
triggers:
-
uuid: 83548aba74c148e28e6611d5abfb9694
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.serialnumber,#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.serialnumber,#2) and length(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.serialnumber))>0'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.serialnumber,#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.serialnumber,#2) and length(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.serialnumber))>0'
name: 'ZYXEL ES3500-8PD: Device has been replaced'
event_name: 'ZYXEL ES3500-8PD: Device has been replaced (new serial number received)'
priority: INFO
@@ -402,7 +402,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c59c3730eea44cf7a842fe46aa12fa3d
- expression: 'min(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: 'ZYXEL ES3500-8PD: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool'
event_name: 'ZYXEL ES3500-8PD: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -759,9 +759,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 27ba4832c79d447186ae6de254aad9d7
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL ES3500-8PD: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -962,37 +962,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 4e20dd0297a94188a6e4032df91432dc
@@ -1001,13 +1001,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: c57f41ad6c084a358668e4d7a57b902e
@@ -1018,13 +1018,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1042,7 +1042,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 21d6664eb56c41b388b4f4709a81d33d
@@ -1100,7 +1099,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8ce109a9f09b41458a4e9d8698238ad0
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1111,7 +1110,7 @@ zabbix_export:
value: notice
-
uuid: 6ecef48a1fdd4e16afe9472f59e0ad1a
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL ES3500-8PD: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1128,7 +1127,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1288,7 +1287,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 46739144d51b441886d544829749cf21
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL ES3500-8PD: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL ES3500-8PD: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1419,7 +1418,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 51fad2cd7daf49ad9027f44fd9ea81af
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL ES3500-8PD: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1436,7 +1435,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -1491,7 +1490,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2cce1a60cfea4bb89e1b9582f6045d3c
- expression: 'last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL ES3500-8PD: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1508,7 +1507,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: 'zyxel.3500_8pd.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1698,7 +1697,7 @@ zabbix_export:
triggers:
-
uuid: eb7a268bfa324366953221e3c1788127
- expression: '(last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.hw.uptime)>0 and last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.hw.uptime)<10m) or (last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.hw.uptime)=0 and last(/ZYXEL ES3500-8PD SNMP/zyxel.3500_8pd.net.uptime)<10m)'
+ expression: '(last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.hw.uptime)>0 and last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.hw.uptime)<10m) or (last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.hw.uptime)=0 and last(/ZYXEL ES3500-8PD by SNMP/zyxel.3500_8pd.net.uptime)<10m)'
name: 'ZYXEL ES3500-8PD: Host has been restarted'
event_name: 'ZYXEL ES3500-8PD: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1719,5 +1718,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL ES3500-8PD SNMP'
+ host: 'ZYXEL ES3500-8PD by SNMP'
key: zyxel.3500_8pd.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/README.md b/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/README.md
index 5e927943e0f..c5320e801c9 100644
--- a/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL GS-4012F SNMP
+# ZYXEL GS-4012F by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/global/en/products/carrier-and-access-switches/access-switches/mgs-3712f
This template was tested on:
@@ -41,7 +41,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.4012f.fan.discovery |
-|Interface discovery |<p>-</p> |SNMP |zyxel.4012f.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.4012f.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Temperature discovery |<p>An entry in tempTable.</p><p>Index of temperature unit. 1:MAC, 2:CPU, 3:PHY</p> |SNMP |zyxel.4012f.temp.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
|Voltage discovery |<p>An entry in voltageTable.</p> |SNMP |zyxel.4012f.volt.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
@@ -85,22 +85,22 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL GS-4012F: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL GS-4012F SNMP/zyxel.4012f.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL GS-4012F: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
-|ZYXEL GS-4012F: Template does not match hardware |<p>This template is for Zyxel GS-4012F, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.model)<>"GS-4012F"` |INFO | |
-|ZYXEL GS-4012F: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fwversion,#1)<>last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fwversion,#2) and length(last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL GS-4012F: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.serialnumber,#1)<>last(/ZYXEL GS-4012F SNMP/zyxel.4012f.serialnumber,#2) and length(last(/ZYXEL GS-4012F SNMP/zyxel.4012f.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL GS-4012F: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL GS-4012F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL GS-4012F: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL GS-4012F SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL GS-4012F: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL GS-4012F SNMP/zyxel.4012f.hw.uptime)>0 and last(/ZYXEL GS-4012F SNMP/zyxel.4012f.hw.uptime)<10m) or (last(/ZYXEL GS-4012F SNMP/zyxel.4012f.hw.uptime)=0 and last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL GS-4012F: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL GS-4012F SNMP/zyxel.4012f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL GS-4012F: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL GS-4012F by SNMP/zyxel.4012f.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL GS-4012F: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
+|ZYXEL GS-4012F: Template does not match hardware |<p>This template is for Zyxel GS-4012F, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.model)<>"GS-4012F"` |INFO | |
+|ZYXEL GS-4012F: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion,#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion,#2) and length(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL GS-4012F: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber,#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber,#2) and length(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL GS-4012F: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL GS-4012F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL GS-4012F: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL GS-4012F by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL GS-4012F: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)>0 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)<10m) or (last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)=0 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL GS-4012F: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/template_net_zyxel_gs4012f_snmp.yaml b/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/template_net_zyxel_gs4012f_snmp.yaml
index 1a0e8f86047..107f4ec7f04 100644
--- a/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/template_net_zyxel_gs4012f_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_gs4012f_snmp/template_net_zyxel_gs4012f_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:04Z'
+ date: '2022-10-27T14:44:26Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 73f123bb9ffe4587a0269c7e8752b2ed
- template: 'ZYXEL GS-4012F SNMP'
- name: 'ZYXEL GS-4012F SNMP'
+ template: 'ZYXEL GS-4012F by SNMP'
+ name: 'ZYXEL GS-4012F by SNMP'
description: |
ZYXEL GS-4012F
@@ -52,7 +52,7 @@ zabbix_export:
triggers:
-
uuid: 07b74d3face24c838c7efe8dfb87564e
- expression: 'max(/ZYXEL GS-4012F SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL GS-4012F by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL GS-4012F: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -106,7 +106,7 @@ zabbix_export:
triggers:
-
uuid: 2052d9e6becd48e5a3aed8037eaf9e87
- expression: 'min(/ZYXEL GS-4012F SNMP/zyxel.4012f.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL GS-4012F by SNMP/zyxel.4012f.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL GS-4012F: High CPU utilization'
event_name: 'ZYXEL GS-4012F: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -153,7 +153,7 @@ zabbix_export:
triggers:
-
uuid: ecde6db248674039a30874f29e704e65
- expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fwversion,#1)<>last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fwversion,#2) and length(last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fwversion))>0'
+ expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion,#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion,#2) and length(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion))>0'
name: 'ZYXEL GS-4012F: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -276,7 +276,7 @@ zabbix_export:
triggers:
-
uuid: 1ba1faabe15c4d46adaa4dc74c5dc05c
- expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.model)<>"GS-4012F"'
+ expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.model)<>"GS-4012F"'
name: 'ZYXEL GS-4012F: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel GS-4012F, but connected to {ITEM.VALUE}'
@@ -359,7 +359,7 @@ zabbix_export:
triggers:
-
uuid: ae941404115d4b10809bce603528ceaa
- expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.serialnumber,#1)<>last(/ZYXEL GS-4012F SNMP/zyxel.4012f.serialnumber,#2) and length(last(/ZYXEL GS-4012F SNMP/zyxel.4012f.serialnumber))>0'
+ expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber,#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber,#2) and length(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber))>0'
name: 'ZYXEL GS-4012F: Device has been replaced'
event_name: 'ZYXEL GS-4012F: Device has been replaced (new serial number received)'
priority: INFO
@@ -405,7 +405,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c91993daf9e44102a04b1ff2b72bf773
- expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
+ expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
name: 'ZYXEL GS-4012F: FAN{#SNMPINDEX} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -422,7 +422,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.fan[{#SNMPINDEX}]'
-
uuid: 2f731cdb2e2943fbae17b6858859eb7a
@@ -772,9 +772,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9c332411a6db46acaab2b49ccabd2970
- expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL GS-4012F: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -975,37 +975,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: ca2e18634f87486987251a2894eabaa0
@@ -1014,13 +1014,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: 3223519ee24947c5a82b584fc3f2dd3d
@@ -1031,13 +1031,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1055,7 +1055,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: de7fbcbcaa8a460d8048e7816ccc1a87
@@ -1094,7 +1093,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 719aad00708e4fd3b99997834c5d68b2
- expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL GS-4012F: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1111,7 +1110,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -1166,7 +1165,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7d28666404bd4cedb687214846f89d4a
- expression: 'last(/ZYXEL GS-4012F SNMP/zyxel.4012f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL GS-4012F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1183,7 +1182,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: 'zyxel.4012f.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1333,7 +1332,7 @@ zabbix_export:
triggers:
-
uuid: 93c70a5dd2504d0d9b13a17af942d45e
- expression: '(last(/ZYXEL GS-4012F SNMP/zyxel.4012f.hw.uptime)>0 and last(/ZYXEL GS-4012F SNMP/zyxel.4012f.hw.uptime)<10m) or (last(/ZYXEL GS-4012F SNMP/zyxel.4012f.hw.uptime)=0 and last(/ZYXEL GS-4012F SNMP/zyxel.4012f.net.uptime)<10m)'
+ expression: '(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)>0 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)<10m) or (last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)=0 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.uptime)<10m)'
name: 'ZYXEL GS-4012F: Host has been restarted'
event_name: 'ZYXEL GS-4012F: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1354,5 +1353,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL GS-4012F SNMP'
+ host: 'ZYXEL GS-4012F by SNMP'
key: zyxel.4012f.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/README.md b/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/README.md
index 125b830e263..1e0aae8bd66 100644
--- a/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL IES-500x SNMP
+# ZYXEL IES-500x by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/global/en/products/msansdslams/central-msans/chassis-msans/ies-5000-series
This template was tested on:
@@ -43,9 +43,9 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|ADSL interface discovery |<p>-</p> |SNMP |zyxel.ies500x.net.adsl.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|ADSL interface discovery |<p>-</p> |SNMP |zyxel.ies500x.net.adsl.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|CPU discovery |<p>A table that contains CPU utilization information.</p><p>This table is supported by R1.03 and later versions.</p> |SNMP |zyxel.ies500x.cpu.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
-|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.ies500x.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.ies500x.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.ies500x.fan.discovery |
|Memory discovery |<p>A table that contains memory usage information.</p> |SNMP |zyxel.ies500x.memory.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
|Packet buffer discovery |<p>A table that contains packet buffer usage information.</p> |SNMP |zyxel.ies500x.buffer.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
@@ -121,34 +121,34 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} high CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL IES-500x SNMP/zyxel.ies500x.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}` |WARNING | |
-|ZYXEL IES-500x: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}` |AVERAGE | |
-|ZYXEL IES-500x: Template does not match hardware |<p>This template is for Zyxel IES-500x, but connected to {ITEM.VALUE}</p> |`not(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.model)="IES-5000" or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.model)="IES-5005")` |INFO | |
-|ZYXEL IES-500x: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL IES-500x SNMP/zyxel.ies500x.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}` |AVERAGE | |
-|ZYXEL IES-500x: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID} |<p>The system is running out of free buffer.</p> |`min(/ZYXEL IES-500x SNMP/zyxel.ies500x.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}` |AVERAGE | |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Driver has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: DSL modem code has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0` |AVERAGE | |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Hardware version has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been replaced |<p>Slot {#ZYXEL.SLOT.ID} serial number has changed. Ack to close</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been restarted |<p>Uptime is less than 10 minutes</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.uptime[{#SNMPINDEX}])<10m` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL IES-500x: Voltage Slot {#ZYXEL.SLOT.ID} {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}` |AVERAGE | |
-|ZYXEL IES-500x: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL IES-500x SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL IES-500x: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.hw.uptime)>0 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.hw.uptime)<10m) or (last(/ZYXEL IES-500x SNMP/zyxel.ies500x.hw.uptime)=0 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-500x: Temperature Slot {#ZYXEL.SLOT.ID} Sensor: {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL IES-500x SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}` |AVERAGE | |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} high CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}` |WARNING | |
+|ZYXEL IES-500x: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL IES-500x: Template does not match hardware |<p>This template is for Zyxel IES-500x, but connected to {ITEM.VALUE}</p> |`not(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.model)="IES-5000" or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.model)="IES-5005")` |INFO | |
+|ZYXEL IES-500x: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}` |AVERAGE | |
+|ZYXEL IES-500x: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID} |<p>The system is running out of free buffer.</p> |`min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}` |AVERAGE | |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Driver has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: DSL modem code has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0` |AVERAGE | |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Hardware version has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been replaced |<p>Slot {#ZYXEL.SLOT.ID} serial number has changed. Ack to close</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been restarted |<p>Uptime is less than 10 minutes</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.uptime[{#SNMPINDEX}])<10m` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL IES-500x: Voltage Slot {#ZYXEL.SLOT.ID} {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL IES-500x: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL IES-500x by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL IES-500x: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.hw.uptime)>0 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.hw.uptime)<10m) or (last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.hw.uptime)=0 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-500x: Temperature Slot {#ZYXEL.SLOT.ID} Sensor: {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/template_net_zyxel_ies-500x_snmp.yaml b/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/template_net_zyxel_ies-500x_snmp.yaml
index c5ea7e1c39d..fdd5dba0aa0 100644
--- a/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/template_net_zyxel_ies-500x_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_ies-500x_snmp/template_net_zyxel_ies-500x_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:05Z'
+ date: '2022-10-27T14:44:20Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 3db86b0d235e4c7b80f7d6144ca08925
- template: 'ZYXEL IES-500x SNMP'
- name: 'ZYXEL IES-500x SNMP'
+ template: 'ZYXEL IES-500x by SNMP'
+ name: 'ZYXEL IES-500x by SNMP'
description: |
ZYXEL IES-500x
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 73967d1d3d01458c8e947a1aacb838b0
- expression: 'max(/ZYXEL IES-500x SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL IES-500x by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL IES-500x: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -200,7 +200,7 @@ zabbix_export:
triggers:
-
uuid: d4b378535f5c4299af1295029e94f9d1
- expression: 'not(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.model)="IES-5000" or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.model)="IES-5005")'
+ expression: 'not(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.model)="IES-5000" or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.model)="IES-5005")'
name: 'ZYXEL IES-500x: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel IES-500x, but connected to {ITEM.VALUE}'
@@ -290,7 +290,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b02248180f314948bdbb68e8b940cb99
- expression: 'min(/ZYXEL IES-500x SNMP/zyxel.ies500x.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}'
+ expression: 'min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}'
name: 'ZYXEL IES-500x: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID}'
event_name: 'ZYXEL IES-500x: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID} (>{#ZYXEL.BUFFERHIGHTHRESH}% for 5m)'
priority: AVERAGE
@@ -307,7 +307,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.buffer[{#SNMPINDEX}]'
preprocessing:
-
@@ -356,7 +356,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e2e689642a884509a5254e946deaf69f
- expression: 'min(/ZYXEL IES-500x SNMP/zyxel.ies500x.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}'
+ expression: 'min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} high CPU utilization'
event_name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} high CPU utilization (over {#ZYXEL.CPU.THRESH.HIGH}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -374,7 +374,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.cpu[{#SNMPINDEX}]'
preprocessing:
-
@@ -424,7 +424,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9e249839db314f05a7a3cd16172ae9a7
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}'
name: 'ZYXEL IES-500x: FAN{#SNMPINDEX} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -441,7 +441,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.fan[{#SNMPINDEX}]'
-
uuid: 3b33b6eb85b14bfba025b0cd4909fa3e
@@ -475,7 +475,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c3099861742f4303af838a0bf3921fac
- expression: 'min(/ZYXEL IES-500x SNMP/zyxel.ies500x.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}'
+ expression: 'min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}'
name: 'ZYXEL IES-500x: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool'
event_name: 'ZYXEL IES-500x: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool (>{#ZYXEL.MEMORYHIGHTHRESH}% for 5m)'
priority: AVERAGE
@@ -492,7 +492,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.memory[{#SNMPINDEX}]'
preprocessing:
-
@@ -605,7 +605,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 375982ea68ec4800aa27a50a89fd79d5
- expression: 'min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -682,7 +682,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8d2f57548d4e47f2981a4fd79d065246
- expression: 'min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -727,7 +727,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1dec7ed135a348b1a1cebb3b4319d77f
- expression: 'min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-500x: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -804,7 +804,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7f8f4a2bff14464fbe2f956be87ad56d
- expression: 'min(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-500x: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -1015,9 +1015,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8afcc973a7e94a0782a057205cc1b8ed
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.adsl.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1160,37 +1160,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 184fddf8b22047e6a7ff4c5837642e60
@@ -1199,13 +1199,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.adsl.out.traffic[{#SNMPINDEX}]'
preprocessing:
-
@@ -1236,7 +1236,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 5121e130194244869e45f9f7bda7cd01
@@ -1563,9 +1562,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 71a10836f3094184bba728a0cf4d005a
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL IES-500x: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1739,37 +1738,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 82fd413110454b88ab811229cc598eeb
@@ -1778,13 +1777,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: c4cbf45592f8421eacc85a833509a819
@@ -1795,13 +1794,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1819,7 +1818,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 3edd9015b1794d39819acf0a2fdc35ba
@@ -1915,7 +1913,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d2dd1a23dbbb467e90ab99ff59a817a2
- expression: 'find(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0'
+ expression: 'find(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} alarm'
priority: AVERAGE
description: 'The slot reported an error.'
@@ -1954,7 +1952,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1b163693dc87407db836021da67bdccc
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.cv.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: DSL modem code has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2019,7 +2017,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 44f7087bcb524593a419887c199fb613
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.dv.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Driver has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2060,7 +2058,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6de6e5adadf04a79813ed7778b454043
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.fw.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2101,7 +2099,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 42969016e9c846a8954ebf95d2ff0ffc
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.hw.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID}: Hardware version has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2186,7 +2184,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0994c0ab8b004dc280d1a036e7043cc0
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.serial[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been replaced'
event_name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been replaced (new serial number received)'
priority: INFO
@@ -2265,7 +2263,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6717069c115147b095321f2c4c5ec51b
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.slot.uptime[{#SNMPINDEX}])<10m'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.slot.uptime[{#SNMPINDEX}])<10m'
name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been restarted'
event_name: 'ZYXEL IES-500x: Slot {#ZYXEL.SLOT.ID} has been restarted (uptime < 10m)'
priority: INFO
@@ -2310,7 +2308,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c4993b2d52e04808862ac0d043b0e982
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}'
name: 'ZYXEL IES-500x: Temperature Slot {#ZYXEL.SLOT.ID} Sensor: {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2327,7 +2325,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -2382,7 +2380,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 55bc511ff2094a86b10c542e896d10e2
- expression: 'last(/ZYXEL IES-500x SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-500x SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}'
+ expression: 'last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}'
name: 'ZYXEL IES-500x: Voltage Slot {#ZYXEL.SLOT.ID} {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2399,7 +2397,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-500x SNMP'
+ host: 'ZYXEL IES-500x by SNMP'
key: 'zyxel.ies500x.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -2627,7 +2625,7 @@ zabbix_export:
triggers:
-
uuid: d618295a763f42cd9063fad5cd600c34
- expression: '(last(/ZYXEL IES-500x SNMP/zyxel.ies500x.hw.uptime)>0 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.hw.uptime)<10m) or (last(/ZYXEL IES-500x SNMP/zyxel.ies500x.hw.uptime)=0 and last(/ZYXEL IES-500x SNMP/zyxel.ies500x.net.uptime)<10m)'
+ expression: '(last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.hw.uptime)>0 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.hw.uptime)<10m) or (last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.hw.uptime)=0 and last(/ZYXEL IES-500x by SNMP/zyxel.ies500x.net.uptime)<10m)'
name: 'ZYXEL IES-500x: Host has been restarted'
event_name: 'ZYXEL IES-500x: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
diff --git a/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/README.md b/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/README.md
index 701f04eb767..435f4107515 100644
--- a/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL IES-6000 SNMP
+# ZYXEL IES-6000 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/global/en/products/msansdslams/central-msans/chassis-msans/ies-6000-series
This template was tested on:
@@ -43,9 +43,9 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|ADSL interface discovery |<p>-</p> |SNMP |zyxel.ies6000.net.adsl.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|ADSL interface discovery |<p>-</p> |SNMP |zyxel.ies6000.net.adsl.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|CPU discovery |<p>A table that contains CPU utilization information.</p><p>This table is supported by R1.03 and later versions.</p> |SNMP |zyxel.ies6000.cpu.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
-|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.ies6000.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.ies6000.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.DESC} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.MATCHES}`</p><p>- {#ZYXEL.IF.DESC} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.DESC.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.ies6000.fan.discovery |
|Memory discovery |<p>A table that contains memory usage information.</p> |SNMP |zyxel.ies6000.memory.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
|Packet buffer discovery |<p>A table that contains packet buffer usage information.</p> |SNMP |zyxel.ies6000.buffer.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
@@ -121,34 +121,34 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} high CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}` |WARNING | |
-|ZYXEL IES-6000: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}` |AVERAGE | |
-|ZYXEL IES-6000: Template does not match hardware |<p>This template is for Zyxel IES-6000, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.model)<>"IES-6000"` |INFO | |
-|ZYXEL IES-6000: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}` |AVERAGE | |
-|ZYXEL IES-6000: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID} |<p>The system is running out of free buffer.</p> |`min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}` |AVERAGE | |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Driver has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: DSL modem code has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0` |AVERAGE | |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Hardware version has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been replaced |<p>Slot {#ZYXEL.SLOT.ID} serial number has changed. Ack to close</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been restarted |<p>Uptime is less than 10 minutes</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.uptime[{#SNMPINDEX}])<10m` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])=2 and (last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#2))=1`<p>Recovery expression:</p>`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL IES-6000: Voltage Slot {#ZYXEL.SLOT.ID} {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}` |AVERAGE | |
-|ZYXEL IES-6000: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL IES-6000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL IES-6000: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.hw.uptime)>0 and last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.hw.uptime)<10m) or (last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.hw.uptime)=0 and last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES-6000: Temperature Slot {#ZYXEL.SLOT.ID} Sensor: {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}` |AVERAGE | |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} high CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}` |WARNING | |
+|ZYXEL IES-6000: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL IES-6000: Template does not match hardware |<p>This template is for Zyxel IES-6000, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.model)<>"IES-6000"` |INFO | |
+|ZYXEL IES-6000: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}` |AVERAGE | |
+|ZYXEL IES-6000: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID} |<p>The system is running out of free buffer.</p> |`min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}` |AVERAGE | |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Driver has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: DSL modem code has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0` |AVERAGE | |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Hardware version has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been replaced |<p>Slot {#ZYXEL.SLOT.ID} serial number has changed. Ack to close</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been restarted |<p>Uptime is less than 10 minutes</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.uptime[{#SNMPINDEX}])<10m` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])=2 and (last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#2))=1`<p>Recovery expression:</p>`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL IES-6000: Voltage Slot {#ZYXEL.SLOT.ID} {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL IES-6000: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL IES-6000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL IES-6000: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.hw.uptime)>0 and last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.hw.uptime)<10m) or (last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.hw.uptime)=0 and last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES-6000: Temperature Slot {#ZYXEL.SLOT.ID} Sensor: {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/template_net_zyxel_ies-6000_snmp.yaml b/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/template_net_zyxel_ies-6000_snmp.yaml
index 6015f83480d..36983647195 100644
--- a/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/template_net_zyxel_ies-6000_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_ies-6000_snmp/template_net_zyxel_ies-6000_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:05Z'
+ date: '2022-10-27T14:44:21Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 3645654baaf04f11927b171bcb048349
- template: 'ZYXEL IES-6000 SNMP'
- name: 'ZYXEL IES-6000 SNMP'
+ template: 'ZYXEL IES-6000 by SNMP'
+ name: 'ZYXEL IES-6000 by SNMP'
description: |
ZYXEL IES-6000
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 41eb76d6be3e47b8b0ca1296470372aa
- expression: 'max(/ZYXEL IES-6000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL IES-6000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL IES-6000: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -200,7 +200,7 @@ zabbix_export:
triggers:
-
uuid: 7f6f8bdde2644182a892792ff2bb7c68
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.model)<>"IES-6000"'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.model)<>"IES-6000"'
name: 'ZYXEL IES-6000: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel IES-6000, but connected to {ITEM.VALUE}'
@@ -290,7 +290,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1173ae0cf9f440f595366a6da7a4c672
- expression: 'min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}'
+ expression: 'min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.buffer[{#SNMPINDEX}],5m)>{#ZYXEL.BUFFERHIGHTHRESH}'
name: 'ZYXEL IES-6000: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID}'
event_name: 'ZYXEL IES-6000: High Packet buffer utilization in Slot {#ZYXEL.SLOT.ID} (>{#ZYXEL.BUFFERHIGHTHRESH}% for 5m)'
priority: AVERAGE
@@ -307,7 +307,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.buffer[{#SNMPINDEX}]'
preprocessing:
-
@@ -356,7 +356,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0d882e8f017e46c78727437bd55759d4
- expression: 'min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}'
+ expression: 'min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.cpu[{#SNMPINDEX}],5m)>{#ZYXEL.CPU.THRESH.HIGH}'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} high CPU utilization'
event_name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} high CPU utilization (over {#ZYXEL.CPU.THRESH.HIGH}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -374,7 +374,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.cpu[{#SNMPINDEX}]'
preprocessing:
-
@@ -424,7 +424,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d5f65aebabf741798dcd0b452302aefb
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW} or last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.fan[{#SNMPINDEX}])>{#ZYXEL.FANRPM.THRESH.HIGH}'
name: 'ZYXEL IES-6000: FAN{#SNMPINDEX} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -441,7 +441,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.fan[{#SNMPINDEX}]'
-
uuid: 691c50d10ae342e0b9825c9d72a4cff9
@@ -475,7 +475,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 64108d56dc6d43148f67503383fc6705
- expression: 'min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}'
+ expression: 'min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.memory[{#SNMPINDEX}],5m)>{#ZYXEL.MEMORYHIGHTHRESH}'
name: 'ZYXEL IES-6000: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool'
event_name: 'ZYXEL IES-6000: High memory utilization in Slot {#ZYXEL.SLOT.ID} pool (>{#ZYXEL.MEMORYHIGHTHRESH}% for 5m)'
priority: AVERAGE
@@ -492,7 +492,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.memory[{#SNMPINDEX}]'
preprocessing:
-
@@ -605,7 +605,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e1233b29eb764b0bb5a2ce35f79060bf
- expression: 'min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -682,7 +682,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d7392fd0c372459bb21b9a85a47ccb8c
- expression: 'min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -727,7 +727,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2ef5b800bb4148ce82bed8c4bf977a35
- expression: 'min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-6000: High the DSL line attenuation in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -804,7 +804,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ba6eb4b3b6904b5dac4c057d3f6f3c17
- expression: 'min(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}'
event_name: 'ZYXEL IES-6000: Low the DSL line noise margins in Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -1015,9 +1015,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3fbe4b16a94648089df78829ee7e683f
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.adsl.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} Port {#ZYXEL.PORTID}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1160,37 +1160,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 60c44917db2045c19efd64718a9f37cf
@@ -1199,13 +1199,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.adsl.out.traffic[{#SNMPINDEX}]'
preprocessing:
-
@@ -1236,7 +1236,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 8f9073a53cee4e6fb8c36feda5185900
@@ -1563,9 +1562,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a9aac7e6c66a4a69a77f8c165f9a9d5c
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])=2 and (last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#2))=1'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])=2 and (last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}],#2))=1'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL IES-6000: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1739,37 +1738,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 6c545945185743b2929edf1b81fe0872
@@ -1778,13 +1777,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: b7085154d7694b9aba49b56bc412d458
@@ -1795,13 +1794,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1819,7 +1818,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 10a176c3da924a95939cd35c0d0be862
@@ -1915,7 +1913,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c3f610ab856e42c7bb6460f552779e12
- expression: 'find(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0'
+ expression: 'find(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.alarm[{#SNMPINDEX}],,"like","moduleNoDefect")=0'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} alarm'
priority: AVERAGE
description: 'The slot reported an error.'
@@ -1954,7 +1952,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c62327e51d27445b893e80bf77c9696c
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.cv.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: DSL modem code has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2019,7 +2017,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 63a4bdc73f8c49a7abb914f47e162dec
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.dv.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Driver has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2060,7 +2058,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7a2ef454d9624fd78416d2e1345be9a5
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.fw.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2101,7 +2099,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 537f28be56984664822b574a2064453b
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.hw.ver[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID}: Hardware version has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -2186,7 +2184,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3fbbcffe1c46497d89fe0d987a5f6eff
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#1)<>last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}],#2) and length(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.serial[{#SNMPINDEX}]))>0'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been replaced'
event_name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been replaced (new serial number received)'
priority: INFO
@@ -2265,7 +2263,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 50e43c41d0e241238b65da25c12d1616
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.slot.uptime[{#SNMPINDEX}])<10m'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.slot.uptime[{#SNMPINDEX}])<10m'
name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been restarted'
event_name: 'ZYXEL IES-6000: Slot {#ZYXEL.SLOT.ID} has been restarted (uptime < 10m)'
priority: INFO
@@ -2310,7 +2308,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c517b703b5084e9b8053fb139e3350ae
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH} or last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.temp[{#SNMPINDEX}])<{#ZYXEL.TEMP.THRESH.LOW}'
name: 'ZYXEL IES-6000: Temperature Slot {#ZYXEL.SLOT.ID} Sensor: {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2327,7 +2325,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -2382,7 +2380,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 14c98fc8b4864a3c87062510a079d948
- expression: 'last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}'
+ expression: 'last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW} or last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.volt[{#SNMPINDEX}])>{#ZYXEL.VOLT.THRESH.HIGH}'
name: 'ZYXEL IES-6000: Voltage Slot {#ZYXEL.SLOT.ID} {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -2399,7 +2397,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES-6000 SNMP'
+ host: 'ZYXEL IES-6000 by SNMP'
key: 'zyxel.ies6000.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -2624,7 +2622,7 @@ zabbix_export:
triggers:
-
uuid: 7a52520cc3dc4350bd7aa14260899f1c
- expression: '(last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.hw.uptime)>0 and last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.hw.uptime)<10m) or (last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.hw.uptime)=0 and last(/ZYXEL IES-6000 SNMP/zyxel.ies6000.net.uptime)<10m)'
+ expression: '(last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.hw.uptime)>0 and last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.hw.uptime)<10m) or (last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.hw.uptime)=0 and last(/ZYXEL IES-6000 by SNMP/zyxel.ies6000.net.uptime)<10m)'
name: 'ZYXEL IES-6000: Host has been restarted'
event_name: 'ZYXEL IES-6000: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
diff --git a/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/README.md b/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/README.md
index f6bbb6c5f04..471997becc6 100644
--- a/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL IES1248-51 SNMP
+# ZYXEL IES1248-51 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
http://origin-eu.zyxel.com/products_services/ies_1248_51v.shtml?t=p
This template was tested on:
@@ -39,8 +39,8 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|ADSL interface discovery |<p>-</p> |SNMP |zyxel.ies1248.net.adsl.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
-|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.ies1248.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Trigger disabled<br> - {#ZYXEL.IF.NAME} MATCHES_REGEX `.*`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p><p>Trigger enabled<br> - {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - DISCOVER</p> |
+|ADSL interface discovery |<p>-</p> |SNMP |zyxel.ies1248.net.adsl.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `adsl`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
+|Ethernet interface discovery |<p>-</p> |SNMP |zyxel.ies1248.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.LINKSTATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.MATCHES}`</p><p>- {#ZYXEL.IF.LINKSTATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKSTATUS.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `enet`</p><p>**Overrides:**</p><p>Trigger disabled<br> - {#ZYXEL.IF.NAME} MATCHES_REGEX `.*`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p><p>Trigger enabled<br> - {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - DISCOVER</p> |
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.ies1248.fan.discovery |
|Temperature discovery |<p>An entry in tempTable.</p> |SNMP |zyxel.ies1248.temp.discovery |
|Voltage discovery |<p>An entry in voltageTable.</p> |SNMP |zyxel.ies1248.volt.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
@@ -84,27 +84,27 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL IES1248-51: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
-|ZYXEL IES1248-51: Template does not match hardware |<p>This template is for Zyxel IES1248-51, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.model)<>"IES1248-51"` |INFO | |
-|ZYXEL IES1248-51: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fwversion,#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fwversion,#2) and length(last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES1248-51: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.serialnumber,#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.serialnumber,#2) and length(last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES1248-51: Port {#ZYXEL.IF.NAME}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL IES1248-51: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
-|ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
-|ZYXEL IES1248-51: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL IES1248-51: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL IES1248-51 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL IES1248-51: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.hw.uptime)>0 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.hw.uptime)<10m) or (last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.hw.uptime)=0 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL IES1248-51: Port {#SNMPINDEX} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.slot.alarm,,"like","moduleNoDefect")=0` |AVERAGE | |
-|ZYXEL IES1248-51: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL IES1248-51: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
+|ZYXEL IES1248-51: Template does not match hardware |<p>This template is for Zyxel IES1248-51, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.model)<>"IES1248-51"` |INFO | |
+|ZYXEL IES1248-51: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fwversion,#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fwversion,#2) and length(last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES1248-51: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.serialnumber,#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.serialnumber,#2) and length(last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES1248-51: Port {#ZYXEL.IF.NAME}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL IES1248-51: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX} |<p>Signal-to-noise margin (SNR Margin) which is the difference between the actual SNR and the SNR required to sync at a specific speed</p> |`min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}` |WARNING | |
+|ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX} |<p>The reductions in amplitude of the downstream and upstream DSL signals.</p> |`min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}` |WARNING | |
+|ZYXEL IES1248-51: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL IES1248-51: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL IES1248-51 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL IES1248-51: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.hw.uptime)>0 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.hw.uptime)<10m) or (last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.hw.uptime)=0 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL IES1248-51: Port {#SNMPINDEX} alarm |<p>The slot reported an error.</p> |`find(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.slot.alarm,,"like","moduleNoDefect")=0` |AVERAGE | |
+|ZYXEL IES1248-51: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/template_net_zyxel_ies1248-51_snmp.yaml b/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/template_net_zyxel_ies1248-51_snmp.yaml
index 93df47a9750..e1c983fb179 100644
--- a/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/template_net_zyxel_ies1248-51_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_ies1248-51_snmp/template_net_zyxel_ies1248-51_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:06Z'
+ date: '2022-10-27T14:44:25Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 8e6d7067cd094e56a52db999b3199edc
- template: 'ZYXEL IES1248-51 SNMP'
- name: 'ZYXEL IES1248-51 SNMP'
+ template: 'ZYXEL IES1248-51 by SNMP'
+ name: 'ZYXEL IES1248-51 by SNMP'
description: |
ZYXEL IES1248-51
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 40466f29b8e54dc88cb49e818fc48281
- expression: 'max(/ZYXEL IES1248-51 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL IES1248-51 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL IES1248-51: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -111,7 +111,7 @@ zabbix_export:
triggers:
-
uuid: b64e891456674457ab4abf994b097277
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fwversion,#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fwversion,#2) and length(last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fwversion))>0'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fwversion,#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fwversion,#2) and length(last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fwversion))>0'
name: 'ZYXEL IES1248-51: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -234,7 +234,7 @@ zabbix_export:
triggers:
-
uuid: 21b638f9f1154b6bb78a652d8e54c1c2
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.model)<>"IES1248-51"'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.model)<>"IES1248-51"'
name: 'ZYXEL IES1248-51: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel IES1248-51, but connected to {ITEM.VALUE}'
@@ -317,7 +317,7 @@ zabbix_export:
triggers:
-
uuid: 2f2972169c164053a8d439b0e572b0c6
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.serialnumber,#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.serialnumber,#2) and length(last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.serialnumber))>0'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.serialnumber,#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.serialnumber,#2) and length(last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.serialnumber))>0'
name: 'ZYXEL IES1248-51: Device has been replaced'
event_name: 'ZYXEL IES1248-51: Device has been replaced (new serial number received)'
priority: INFO
@@ -400,7 +400,7 @@ zabbix_export:
triggers:
-
uuid: 6b1b1b27241f42229e8b159320371356
- expression: 'find(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.slot.alarm,,"like","moduleNoDefect")=0'
+ expression: 'find(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.slot.alarm,,"like","moduleNoDefect")=0'
name: 'ZYXEL IES1248-51: Port {#SNMPINDEX} alarm'
priority: AVERAGE
description: 'The slot reported an error.'
@@ -444,7 +444,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 86f18f4e598443ab9e0ec30554d78e1a
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
name: 'ZYXEL IES1248-51: FAN{#SNMPINDEX} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -461,7 +461,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES1248-51 SNMP'
+ host: 'ZYXEL IES1248-51 by SNMP'
key: 'zyxel.ies1248.fan[{#SNMPINDEX}]'
-
uuid: 47dc5ba65f25444c961b7684d65bbc07
@@ -552,7 +552,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 23e50c0031c1457596b1366a40606ef9
- expression: 'min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atuc.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX}'
event_name: 'ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -629,7 +629,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 23bbc44b2f114afe99a8175a2b7f0ddd
- expression: 'min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atuc.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX}'
event_name: 'ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -674,7 +674,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2132fed26fe54a7daa017b7264c37f1c
- expression: 'min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
+ expression: 'min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atur.atn[{#SNMPINDEX}],5m)>{$ZYXEL.ADSL.ATN.MAX}'
name: 'ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX}'
event_name: 'ZYXEL IES1248-51: High the DSL line attenuation in Port {#SNMPINDEX} (>{$ZYXEL.ADSL.ATN.MAX}dB for 5m)'
priority: WARNING
@@ -751,7 +751,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2d8f752b376f4c10bc8efbd39c8f45a9
- expression: 'min(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
+ expression: 'min(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.atur.snrmgn[{#SNMPINDEX}],5m)<{$ZYXEL.ADSL.SNR.MIN}'
name: 'ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX}'
event_name: 'ZYXEL IES1248-51: Low the DSL line noise margins in Port {#SNMPINDEX} (<{$ZYXEL.ADSL.SNR.MIN}dB for 5m)'
priority: WARNING
@@ -850,9 +850,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 93a58c14939d4c3491646171910fe5ad
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.adsl.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL IES1248-51: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -907,13 +907,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES1248-51 SNMP'
+ host: 'ZYXEL IES1248-51 by SNMP'
key: 'zyxel.ies1248.net.adsl.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES1248-51 SNMP'
+ host: 'ZYXEL IES1248-51 by SNMP'
key: 'zyxel.ies1248.net.adsl.out.traffic[{#SNMPINDEX}]'
overrides:
-
@@ -931,7 +931,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 4b32903336ad4c9e826cfd65a89a8960
@@ -1076,9 +1075,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8d90a989c82a4890a3a1a0b8eeb53462
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL IES1248-51: Port {#ZYXEL.IF.NAME}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1133,13 +1132,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES1248-51 SNMP'
+ host: 'ZYXEL IES1248-51 by SNMP'
key: 'zyxel.ies1248.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL IES1248-51 SNMP'
+ host: 'ZYXEL IES1248-51 by SNMP'
key: 'zyxel.ies1248.net.if.out.traffic[{#SNMPINDEX}]'
overrides:
-
@@ -1156,7 +1155,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
name: 'Trigger enabled'
@@ -1172,7 +1170,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: DISCOVER
-
uuid: f8e1575174f9414e9ddf1459a420b2d6
@@ -1209,7 +1206,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f0d7f5282c784224b0cd5f76d3c2ad90
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL IES1248-51: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1226,7 +1223,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES1248-51 SNMP'
+ host: 'ZYXEL IES1248-51 by SNMP'
key: 'zyxel.ies1248.temp[{#SNMPINDEX}]'
-
uuid: a2df63bd07f24277acf36e7a3854bd81
@@ -1268,7 +1265,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9815420fe46c45ce8731b9688b4a543e
- expression: 'last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL IES1248-51: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1285,7 +1282,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL IES1248-51 SNMP'
+ host: 'ZYXEL IES1248-51 by SNMP'
key: 'zyxel.ies1248.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1396,7 +1393,7 @@ zabbix_export:
triggers:
-
uuid: bbccceac3dc24b9ab76a820fe5be4788
- expression: '(last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.hw.uptime)>0 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.hw.uptime)<10m) or (last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.hw.uptime)=0 and last(/ZYXEL IES1248-51 SNMP/zyxel.ies1248.net.uptime)<10m)'
+ expression: '(last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.hw.uptime)>0 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.hw.uptime)<10m) or (last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.hw.uptime)=0 and last(/ZYXEL IES1248-51 by SNMP/zyxel.ies1248.net.uptime)<10m)'
name: 'ZYXEL IES1248-51: Host has been restarted'
event_name: 'ZYXEL IES1248-51: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
diff --git a/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/README.md b/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/README.md
index fc589a0ed0a..a413a5877fb 100644
--- a/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL MES-3528 SNMP
+# ZYXEL MES-3528 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mes3500-series
This template was tested on:
@@ -45,7 +45,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|Interface discovery |<p>-</p> |SNMP |zyxel.3528.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3528.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3528.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3528.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
@@ -94,22 +94,22 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL MES-3528: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES-3528 SNMP/zyxel.3528.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL MES-3528: Template does not match hardware |<p>This template is for Zyxel MES-3528, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES-3528 SNMP/zyxel.3528.model)<>"MES-3528"` |INFO | |
-|ZYXEL MES-3528: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES-3528 SNMP/zyxel.3528.fwversion,#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.fwversion,#2) and length(last(/ZYXEL MES-3528 SNMP/zyxel.3528.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES-3528: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES-3528 SNMP/zyxel.3528.serialnumber,#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.serialnumber,#2) and length(last(/ZYXEL MES-3528 SNMP/zyxel.3528.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES-3528: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL MES-3528: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL MES-3528: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES-3528 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL MES-3528: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES-3528 SNMP/zyxel.3528.hw.uptime)>0 and last(/ZYXEL MES-3528 SNMP/zyxel.3528.hw.uptime)<10m) or (last(/ZYXEL MES-3528 SNMP/zyxel.3528.hw.uptime)=0 and last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES-3528: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES-3528 by SNMP/zyxel.3528.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL MES-3528: Template does not match hardware |<p>This template is for Zyxel MES-3528, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.model)<>"MES-3528"` |INFO | |
+|ZYXEL MES-3528: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.fwversion,#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.fwversion,#2) and length(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES-3528: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.serialnumber,#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.serialnumber,#2) and length(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES-3528: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL MES-3528: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL MES-3528: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES-3528 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL MES-3528: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.hw.uptime)>0 and last(/ZYXEL MES-3528 by SNMP/zyxel.3528.hw.uptime)<10m) or (last(/ZYXEL MES-3528 by SNMP/zyxel.3528.hw.uptime)=0 and last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/template_net_zyxel_mes-3528_snmp.yaml b/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/template_net_zyxel_mes-3528_snmp.yaml
index ccc1065a3a8..26deac380aa 100644
--- a/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/template_net_zyxel_mes-3528_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_mes-3528_snmp/template_net_zyxel_mes-3528_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:07Z'
+ date: '2022-10-27T14:44:20Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 249de8d8d21e4dda9c3f766ab6201378
- template: 'ZYXEL MES-3528 SNMP'
- name: 'ZYXEL MES-3528 SNMP'
+ template: 'ZYXEL MES-3528 by SNMP'
+ name: 'ZYXEL MES-3528 by SNMP'
description: |
ZYXEL MES-3528
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 0e38d148fc29439488b3b23ee308b1d9
- expression: 'max(/ZYXEL MES-3528 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL MES-3528 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL MES-3528: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -107,7 +107,7 @@ zabbix_export:
triggers:
-
uuid: 247a25a4976a45eca78853aea112cdd6
- expression: 'min(/ZYXEL MES-3528 SNMP/zyxel.3528.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL MES-3528 by SNMP/zyxel.3528.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL MES-3528: High CPU utilization'
event_name: 'ZYXEL MES-3528: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: 7c4cfa75447a4eeda874d916d052eb6e
- expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.fwversion,#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.fwversion,#2) and length(last(/ZYXEL MES-3528 SNMP/zyxel.3528.fwversion))>0'
+ expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.fwversion,#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.fwversion,#2) and length(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.fwversion))>0'
name: 'ZYXEL MES-3528: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -277,7 +277,7 @@ zabbix_export:
triggers:
-
uuid: b98e244abe2a4bd481be50048234afe6
- expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.model)<>"MES-3528"'
+ expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.model)<>"MES-3528"'
name: 'ZYXEL MES-3528: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel MES-3528, but connected to {ITEM.VALUE}'
@@ -360,7 +360,7 @@ zabbix_export:
triggers:
-
uuid: d08bc1ffb11e4bbc98851c30595e996c
- expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.serialnumber,#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.serialnumber,#2) and length(last(/ZYXEL MES-3528 SNMP/zyxel.3528.serialnumber))>0'
+ expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.serialnumber,#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.serialnumber,#2) and length(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.serialnumber))>0'
name: 'ZYXEL MES-3528: Device has been replaced'
event_name: 'ZYXEL MES-3528: Device has been replaced (new serial number received)'
priority: INFO
@@ -719,9 +719,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c23272db35f44fe6958e3b5e31a52974
- expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL MES-3528: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -922,37 +922,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 936c27e914044b0eb31f874995c0571c
@@ -961,13 +961,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: f50ceeef9c6446a685127383176fe811
@@ -978,13 +978,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1002,7 +1002,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: a4850c41f31a4bdfa3506c2ef3077d88
@@ -1060,7 +1059,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f9e2991ea38343c8b2c9815bf733aef8
- expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1071,7 +1070,7 @@ zabbix_export:
value: notice
-
uuid: 341bff907cd943219bbed92773d9b005
- expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES-3528: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1088,7 +1087,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: 'zyxel.3528.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1248,7 +1247,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5cd22f26211a428099d2a41c5c41efab
- expression: 'last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES-3528 SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL MES-3528: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL MES-3528: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1514,7 +1513,7 @@ zabbix_export:
triggers:
-
uuid: d138c874f4de4f3a97a0c615d589826a
- expression: '(last(/ZYXEL MES-3528 SNMP/zyxel.3528.hw.uptime)>0 and last(/ZYXEL MES-3528 SNMP/zyxel.3528.hw.uptime)<10m) or (last(/ZYXEL MES-3528 SNMP/zyxel.3528.hw.uptime)=0 and last(/ZYXEL MES-3528 SNMP/zyxel.3528.net.uptime)<10m)'
+ expression: '(last(/ZYXEL MES-3528 by SNMP/zyxel.3528.hw.uptime)>0 and last(/ZYXEL MES-3528 by SNMP/zyxel.3528.hw.uptime)<10m) or (last(/ZYXEL MES-3528 by SNMP/zyxel.3528.hw.uptime)=0 and last(/ZYXEL MES-3528 by SNMP/zyxel.3528.net.uptime)<10m)'
name: 'ZYXEL MES-3528: Host has been restarted'
event_name: 'ZYXEL MES-3528: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1535,5 +1534,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL MES-3528 SNMP'
+ host: 'ZYXEL MES-3528 by SNMP'
key: zyxel.3528.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/README.md b/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/README.md
index ed306b737fb..afa5f46dc29 100644
--- a/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL MES3500-10 SNMP
+# ZYXEL MES3500-10 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mes3500-series
This template was tested on:
@@ -46,7 +46,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|Interface discovery |<p>-</p> |SNMP |zyxel.3500_10.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3500_10.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Memory pool discovery |<p>-</p> |SNMP |zyxel.3500_10.memory.discovery |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3500_10.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3500_10.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
@@ -101,25 +101,25 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL MES3500-10: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL MES3500-10: Template does not match hardware |<p>This template is for Zyxel MES3500-10, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.model)<>"MES3500-10"` |INFO | |
-|ZYXEL MES3500-10: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.fwversion,#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.fwversion,#2) and length(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-10: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.serialnumber,#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.serialnumber,#2) and length(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-10: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|ZYXEL MES3500-10: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL MES3500-10: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL MES3500-10: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MES3500-10: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES3500-10 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL MES3500-10: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.hw.uptime)>0 and last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.hw.uptime)<10m) or (last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.hw.uptime)=0 and last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-10: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL MES3500-10: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL MES3500-10: Template does not match hardware |<p>This template is for Zyxel MES3500-10, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.model)<>"MES3500-10"` |INFO | |
+|ZYXEL MES3500-10: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.fwversion,#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.fwversion,#2) and length(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-10: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.serialnumber,#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.serialnumber,#2) and length(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-10: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|ZYXEL MES3500-10: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL MES3500-10: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL MES3500-10: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MES3500-10: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES3500-10 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL MES3500-10: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.hw.uptime)>0 and last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.hw.uptime)<10m) or (last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.hw.uptime)=0 and last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-10: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/template_net_zyxel_mes3500-10_snmp.yaml b/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/template_net_zyxel_mes3500-10_snmp.yaml
index 3bfb47aea5c..05ce3ed765a 100644
--- a/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/template_net_zyxel_mes3500-10_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_mes3500-10_snmp/template_net_zyxel_mes3500-10_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:08Z'
+ date: '2022-10-27T14:44:23Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 21a95afef0e74fb19691693090403d1d
- template: 'ZYXEL MES3500-10 SNMP'
- name: 'ZYXEL MES3500-10 SNMP'
+ template: 'ZYXEL MES3500-10 by SNMP'
+ name: 'ZYXEL MES3500-10 by SNMP'
description: |
ZYXEL MES3500-10
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: c33a4bffd5464934b4b9f1e7160806e1
- expression: 'max(/ZYXEL MES3500-10 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL MES3500-10 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL MES3500-10: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -107,7 +107,7 @@ zabbix_export:
triggers:
-
uuid: 0d31c154f8f34ed18a99558f7839bbb6
- expression: 'min(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL MES3500-10: High CPU utilization'
event_name: 'ZYXEL MES3500-10: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: db567c7693b6437e89ef7a5b78c889f9
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.fwversion,#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.fwversion,#2) and length(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.fwversion))>0'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.fwversion,#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.fwversion,#2) and length(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.fwversion))>0'
name: 'ZYXEL MES3500-10: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -277,7 +277,7 @@ zabbix_export:
triggers:
-
uuid: 27f1cb5a297c4b1eafd4056317a37f01
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.model)<>"MES3500-10"'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.model)<>"MES3500-10"'
name: 'ZYXEL MES3500-10: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel MES3500-10, but connected to {ITEM.VALUE}'
@@ -360,7 +360,7 @@ zabbix_export:
triggers:
-
uuid: ee14abdf61b04a90adf6e2afcc3d73f4
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.serialnumber,#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.serialnumber,#2) and length(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.serialnumber))>0'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.serialnumber,#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.serialnumber,#2) and length(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.serialnumber))>0'
name: 'ZYXEL MES3500-10: Device has been replaced'
event_name: 'ZYXEL MES3500-10: Device has been replaced (new serial number received)'
priority: INFO
@@ -402,7 +402,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 91609e57df4941faa9fee17051f8ac24
- expression: 'min(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: 'ZYXEL MES3500-10: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool'
event_name: 'ZYXEL MES3500-10: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -759,9 +759,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: fb9bb0e2ceb643f495b93bbaf04b0cc1
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL MES3500-10: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -962,37 +962,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 9b6213d6ab0248bd9bfd62a5af0846a7
@@ -1001,13 +1001,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: c209a6e8cdb748978b90584432f0a09e
@@ -1018,13 +1018,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1042,7 +1042,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 1c6952a276fa454bb83f64a11424b7ec
@@ -1100,7 +1099,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bc09d6c1771d4d04afe86f49dbd98852
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1111,7 +1110,7 @@ zabbix_export:
value: notice
-
uuid: d05ae92b624347cc9a8fe1154995f3f9
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES3500-10: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1128,7 +1127,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1288,7 +1287,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8832e1fa622449f582218cf5a7bf6b75
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL MES3500-10: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL MES3500-10: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1419,7 +1418,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6970c577993343dfaa97f4317acf0f08
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL MES3500-10: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1436,7 +1435,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -1491,7 +1490,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c86b60bc2d0842e28f0718314db4cde0
- expression: 'last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL MES3500-10: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1508,7 +1507,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: 'zyxel.3500_10.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1698,7 +1697,7 @@ zabbix_export:
triggers:
-
uuid: 9899ada82b0e4507948a8a0068e5640d
- expression: '(last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.hw.uptime)>0 and last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.hw.uptime)<10m) or (last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.hw.uptime)=0 and last(/ZYXEL MES3500-10 SNMP/zyxel.3500_10.net.uptime)<10m)'
+ expression: '(last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.hw.uptime)>0 and last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.hw.uptime)<10m) or (last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.hw.uptime)=0 and last(/ZYXEL MES3500-10 by SNMP/zyxel.3500_10.net.uptime)<10m)'
name: 'ZYXEL MES3500-10: Host has been restarted'
event_name: 'ZYXEL MES3500-10: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1719,5 +1718,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL MES3500-10 SNMP'
+ host: 'ZYXEL MES3500-10 by SNMP'
key: zyxel.3500_10.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/README.md b/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/README.md
index 80ea3028acd..baab93fc68d 100644
--- a/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL MES3500-24 SNMP
+# ZYXEL MES3500-24 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mes3500-series
This template was tested on:
@@ -46,7 +46,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
-|Interface discovery |<p>-</p> |SNMP |zyxel.3500_24.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3500_24.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Memory pool discovery |<p>-</p> |SNMP |zyxel.3500_24.memory.discovery |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3500_24.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3500_24.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
@@ -101,25 +101,25 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL MES3500-24: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL MES3500-24: Template does not match hardware |<p>This template is for Zyxel MES3500-24, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.model)<>"MES3500-24"` |INFO | |
-|ZYXEL MES3500-24: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.fwversion,#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.fwversion,#2) and length(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.serialnumber,#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.serialnumber,#2) and length(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|ZYXEL MES3500-24: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL MES3500-24: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MES3500-24: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES3500-24 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL MES3500-24: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.hw.uptime)>0 and last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.hw.uptime)<10m) or (last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.hw.uptime)=0 and last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL MES3500-24: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL MES3500-24: Template does not match hardware |<p>This template is for Zyxel MES3500-24, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.model)<>"MES3500-24"` |INFO | |
+|ZYXEL MES3500-24: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.fwversion,#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.fwversion,#2) and length(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.serialnumber,#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.serialnumber,#2) and length(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|ZYXEL MES3500-24: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL MES3500-24: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MES3500-24: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES3500-24 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL MES3500-24: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.hw.uptime)>0 and last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.hw.uptime)<10m) or (last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.hw.uptime)=0 and last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/template_net_zyxel_mes3500-24_snmp.yaml b/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/template_net_zyxel_mes3500-24_snmp.yaml
index 695619ba22c..368d08168ca 100644
--- a/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/template_net_zyxel_mes3500-24_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_mes3500-24_snmp/template_net_zyxel_mes3500-24_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:09Z'
+ date: '2022-10-27T14:44:25Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 292970ad91204722b5e5cb3233fc0026
- template: 'ZYXEL MES3500-24 SNMP'
- name: 'ZYXEL MES3500-24 SNMP'
+ template: 'ZYXEL MES3500-24 by SNMP'
+ name: 'ZYXEL MES3500-24 by SNMP'
description: |
ZYXEL MES3500-24
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: 96435fde17384c6bb4f9811ad9ca184a
- expression: 'max(/ZYXEL MES3500-24 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL MES3500-24 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL MES3500-24: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -107,7 +107,7 @@ zabbix_export:
triggers:
-
uuid: 911d1c7e921f43af8ab3c0035be57a27
- expression: 'min(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL MES3500-24: High CPU utilization'
event_name: 'ZYXEL MES3500-24: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: f3daea29a34b4cf992d3c23ba8a64d2e
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.fwversion,#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.fwversion,#2) and length(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.fwversion))>0'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.fwversion,#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.fwversion,#2) and length(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.fwversion))>0'
name: 'ZYXEL MES3500-24: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -277,7 +277,7 @@ zabbix_export:
triggers:
-
uuid: ab363c150ecd447ea4d3a3a9c311b992
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.model)<>"MES3500-24"'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.model)<>"MES3500-24"'
name: 'ZYXEL MES3500-24: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel MES3500-24, but connected to {ITEM.VALUE}'
@@ -360,7 +360,7 @@ zabbix_export:
triggers:
-
uuid: a475d29129664eec82fc7ed85cb74df9
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.serialnumber,#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.serialnumber,#2) and length(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.serialnumber))>0'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.serialnumber,#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.serialnumber,#2) and length(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.serialnumber))>0'
name: 'ZYXEL MES3500-24: Device has been replaced'
event_name: 'ZYXEL MES3500-24: Device has been replaced (new serial number received)'
priority: INFO
@@ -402,7 +402,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 66802198e0764ee29cdf557378b5566b
- expression: 'min(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: 'ZYXEL MES3500-24: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool'
event_name: 'ZYXEL MES3500-24: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -759,9 +759,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5a9faa35f7d547a987e78075832cf38e
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL MES3500-24: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -962,37 +962,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: b4c385f72ca243c8a7681c8220229d8d
@@ -1001,13 +1001,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: ae845a9a10204c40a1a044002f5b1a72
@@ -1018,13 +1018,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1042,7 +1042,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 302fdabe174e425d9f32d36694453331
@@ -1100,7 +1099,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ef830e34f83347bebba87a72208d805b
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1111,7 +1110,7 @@ zabbix_export:
value: notice
-
uuid: 229f44666e6043a1a8e34437ad24e3ae
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES3500-24: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1128,7 +1127,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1288,7 +1287,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f84b378d79b74174842cc49af29c2a0c
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL MES3500-24: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL MES3500-24: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1419,7 +1418,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9963d3848c774563881689da1bcddefc
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL MES3500-24: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1436,7 +1435,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -1491,7 +1490,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2eef8cabb2e141dd8b6d1868ebc79db4
- expression: 'last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL MES3500-24: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1508,7 +1507,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: 'zyxel.3500_24.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1698,7 +1697,7 @@ zabbix_export:
triggers:
-
uuid: c389b0db83bc404e8cb84ce65db79700
- expression: '(last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.hw.uptime)>0 and last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.hw.uptime)<10m) or (last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.hw.uptime)=0 and last(/ZYXEL MES3500-24 SNMP/zyxel.3500_24.net.uptime)<10m)'
+ expression: '(last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.hw.uptime)>0 and last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.hw.uptime)<10m) or (last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.hw.uptime)=0 and last(/ZYXEL MES3500-24 by SNMP/zyxel.3500_24.net.uptime)<10m)'
name: 'ZYXEL MES3500-24: Host has been restarted'
event_name: 'ZYXEL MES3500-24: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1719,5 +1718,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24 SNMP'
+ host: 'ZYXEL MES3500-24 by SNMP'
key: zyxel.3500_24.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/README.md b/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/README.md
index cd1dc8301b4..9c40ef018a2 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL MGS-3712 SNMP
+# ZYXEL MGS-3712 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/global/en/products/carrier-and-access-switches/access-switches/MGS-3712f
This template was tested on:
@@ -46,7 +46,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.3712.fan.discovery |
-|Interface discovery |<p>-</p> |SNMP |zyxel.3712.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3712.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3712.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3712.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
|Temperature discovery |<p>An entry in tempTable.</p><p>Index of temperature unit. 1:MAC, 2:CPU, 3:PHY</p> |SNMP |zyxel.3712.temp.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
@@ -100,25 +100,25 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL MGS-3712: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MGS-3712 SNMP/zyxel.3712.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL MGS-3712: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MGS-3712: Template does not match hardware |<p>This template is for Zyxel MGS-3712, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.model)<>"MGS-3712"` |INFO | |
-|ZYXEL MGS-3712: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fwversion,#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fwversion,#2) and length(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.serialnumber,#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.serialnumber,#2) and length(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL MGS-3712: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MGS-3712: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MGS-3712 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL MGS-3712: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.hw.uptime)>0 and last(/ZYXEL MGS-3712 SNMP/zyxel.3712.hw.uptime)<10m) or (last(/ZYXEL MGS-3712 SNMP/zyxel.3712.hw.uptime)=0 and last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MGS-3712 SNMP/zyxel.3712.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL MGS-3712: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MGS-3712 by SNMP/zyxel.3712.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL MGS-3712: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MGS-3712: Template does not match hardware |<p>This template is for Zyxel MGS-3712, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.model)<>"MGS-3712"` |INFO | |
+|ZYXEL MGS-3712: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fwversion,#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fwversion,#2) and length(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.serialnumber,#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.serialnumber,#2) and length(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL MGS-3712: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MGS-3712: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MGS-3712 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL MGS-3712: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.hw.uptime)>0 and last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.hw.uptime)<10m) or (last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.hw.uptime)=0 and last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/template_net_zyxel_mgs-3712_snmp.yaml b/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/template_net_zyxel_mgs-3712_snmp.yaml
index b8086cafd4a..379d8a7bb33 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/template_net_zyxel_mgs-3712_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_mgs-3712_snmp/template_net_zyxel_mgs-3712_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:09Z'
+ date: '2022-10-27T14:44:22Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 8ea7299983f24d0a913606e334f0e526
- template: 'ZYXEL MGS-3712 SNMP'
- name: 'ZYXEL MGS-3712 SNMP'
+ template: 'ZYXEL MGS-3712 by SNMP'
+ name: 'ZYXEL MGS-3712 by SNMP'
description: |
ZYXEL MGS-3712
@@ -52,7 +52,7 @@ zabbix_export:
triggers:
-
uuid: 60787fd1204b42bfb515b1b204c1d14f
- expression: 'max(/ZYXEL MGS-3712 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL MGS-3712 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL MGS-3712: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -106,7 +106,7 @@ zabbix_export:
triggers:
-
uuid: b1ca06637dbe4c9ca84e2811e780d5d5
- expression: 'min(/ZYXEL MGS-3712 SNMP/zyxel.3712.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL MGS-3712 by SNMP/zyxel.3712.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL MGS-3712: High CPU utilization'
event_name: 'ZYXEL MGS-3712: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -153,7 +153,7 @@ zabbix_export:
triggers:
-
uuid: de7d7e7d976c4b9894259c4e7fb5a4dd
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fwversion,#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fwversion,#2) and length(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fwversion))>0'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fwversion,#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fwversion,#2) and length(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fwversion))>0'
name: 'ZYXEL MGS-3712: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -276,7 +276,7 @@ zabbix_export:
triggers:
-
uuid: e0b4c4f09f6f496cb035af320fcf96a0
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.model)<>"MGS-3712"'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.model)<>"MGS-3712"'
name: 'ZYXEL MGS-3712: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel MGS-3712, but connected to {ITEM.VALUE}'
@@ -359,7 +359,7 @@ zabbix_export:
triggers:
-
uuid: 4a9495748e09477ca5f12443fff533c9
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.serialnumber,#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.serialnumber,#2) and length(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.serialnumber))>0'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.serialnumber,#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.serialnumber,#2) and length(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.serialnumber))>0'
name: 'ZYXEL MGS-3712: Device has been replaced'
event_name: 'ZYXEL MGS-3712: Device has been replaced (new serial number received)'
priority: INFO
@@ -405,7 +405,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: edc0057dbdb64fd584cc968c5d8bb41f
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
name: 'ZYXEL MGS-3712: FAN{#SNMPINDEX} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -422,7 +422,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.fan[{#SNMPINDEX}]'
-
uuid: 1568af5125ee4005abc1860e0610f7c4
@@ -772,9 +772,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e21751b08fe740f2ad9ad6bde6b879c4
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL MGS-3712: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -975,37 +975,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 489edc6b24844d8cb5c718a8a4d45a3c
@@ -1014,13 +1014,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: 1466f28d9f014bb39396cda181630fc4
@@ -1031,13 +1031,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1055,7 +1055,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 65477e8c3f8948aea5f6101b08e307cc
@@ -1113,7 +1112,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e9d242819d7345a0b44cc14a392f05fa
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1124,7 +1123,7 @@ zabbix_export:
value: notice
-
uuid: 177c2fe88ec24e3d9a5ea9f6b3f346d9
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MGS-3712: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1141,7 +1140,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1301,7 +1300,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: aaa3492aa0c64e8a973d1a755fd24f50
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL MGS-3712: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL MGS-3712: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1432,7 +1431,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b5ba7daf05204f2b987b879a3d44fac2
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL MGS-3712: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1449,7 +1448,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -1504,7 +1503,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 02a7a32af7a440b6a7199b425305fdde
- expression: 'last(/ZYXEL MGS-3712 SNMP/zyxel.3712.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL MGS-3712: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1521,7 +1520,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: 'zyxel.3712.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1708,7 +1707,7 @@ zabbix_export:
triggers:
-
uuid: eefe29ad784d40d3980a4cb1118dd816
- expression: '(last(/ZYXEL MGS-3712 SNMP/zyxel.3712.hw.uptime)>0 and last(/ZYXEL MGS-3712 SNMP/zyxel.3712.hw.uptime)<10m) or (last(/ZYXEL MGS-3712 SNMP/zyxel.3712.hw.uptime)=0 and last(/ZYXEL MGS-3712 SNMP/zyxel.3712.net.uptime)<10m)'
+ expression: '(last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.hw.uptime)>0 and last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.hw.uptime)<10m) or (last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.hw.uptime)=0 and last(/ZYXEL MGS-3712 by SNMP/zyxel.3712.net.uptime)<10m)'
name: 'ZYXEL MGS-3712: Host has been restarted'
event_name: 'ZYXEL MGS-3712: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1729,5 +1728,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712 SNMP'
+ host: 'ZYXEL MGS-3712 by SNMP'
key: zyxel.3712.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/README.md b/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/README.md
index f3dfea4b2e9..a86afec6906 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL MGS-3712F SNMP
+# ZYXEL MGS-3712F by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/global/en/products/carrier-and-access-switches/access-switches/mgs-3712f
This template was tested on:
@@ -46,7 +46,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.3712f.fan.discovery |
-|Interface discovery |<p>-</p> |SNMP |zyxel.3712f.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3712f.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3712f.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3712f.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
|Temperature discovery |<p>An entry in tempTable.</p><p>Index of temperature unit. 1:MAC, 2:CPU, 3:PHY</p> |SNMP |zyxel.3712f.temp.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p> |
@@ -100,25 +100,25 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL MGS-3712F: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MGS-3712F SNMP/zyxel.3712f.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL MGS-3712F: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MGS-3712F: Template does not match hardware |<p>This template is for Zyxel MGS-3712F, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.model)<>"MGS-3712F"` |INFO | |
-|ZYXEL MGS-3712F: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fwversion,#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fwversion,#2) and length(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712F: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.serialnumber,#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.serialnumber,#2) and length(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712F: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712F: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL MGS-3712F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MGS-3712F: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MGS-3712F SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL MGS-3712F: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.hw.uptime)>0 and last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.hw.uptime)<10m) or (last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.hw.uptime)=0 and last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS-3712F: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL MGS-3712F: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL MGS-3712F: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MGS-3712F: Template does not match hardware |<p>This template is for Zyxel MGS-3712F, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.model)<>"MGS-3712F"` |INFO | |
+|ZYXEL MGS-3712F: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fwversion,#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fwversion,#2) and length(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712F: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.serialnumber,#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.serialnumber,#2) and length(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712F: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712F: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL MGS-3712F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MGS-3712F: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MGS-3712F by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL MGS-3712F: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.hw.uptime)>0 and last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.hw.uptime)<10m) or (last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.hw.uptime)=0 and last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS-3712F: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/template_net_zyxel_mgs-3712f_snmp.yaml b/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/template_net_zyxel_mgs-3712f_snmp.yaml
index 6b41ea9586b..afdf89832e3 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/template_net_zyxel_mgs-3712f_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_mgs-3712f_snmp/template_net_zyxel_mgs-3712f_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:10Z'
+ date: '2022-10-27T14:44:19Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 01deb47efa1f4a9092de67fd61820a7d
- template: 'ZYXEL MGS-3712F SNMP'
- name: 'ZYXEL MGS-3712F SNMP'
+ template: 'ZYXEL MGS-3712F by SNMP'
+ name: 'ZYXEL MGS-3712F by SNMP'
description: |
ZYXEL MGS-3712F
@@ -52,7 +52,7 @@ zabbix_export:
triggers:
-
uuid: c4244d60e8aa4cc380442992c031b2fd
- expression: 'max(/ZYXEL MGS-3712F SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL MGS-3712F by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL MGS-3712F: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -106,7 +106,7 @@ zabbix_export:
triggers:
-
uuid: 084cf3c89c9c48eeac9131d831a4f71b
- expression: 'min(/ZYXEL MGS-3712F SNMP/zyxel.3712f.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL MGS-3712F: High CPU utilization'
event_name: 'ZYXEL MGS-3712F: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -153,7 +153,7 @@ zabbix_export:
triggers:
-
uuid: fbf62d3f9ce54baab9a16f3e123811ef
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fwversion,#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fwversion,#2) and length(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fwversion))>0'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fwversion,#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fwversion,#2) and length(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fwversion))>0'
name: 'ZYXEL MGS-3712F: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -276,7 +276,7 @@ zabbix_export:
triggers:
-
uuid: bf3d28b088db48a59aaa9e88f6b13cb8
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.model)<>"MGS-3712F"'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.model)<>"MGS-3712F"'
name: 'ZYXEL MGS-3712F: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel MGS-3712F, but connected to {ITEM.VALUE}'
@@ -359,7 +359,7 @@ zabbix_export:
triggers:
-
uuid: ccb3fe676cd742af954b8c5e7898e5f0
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.serialnumber,#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.serialnumber,#2) and length(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.serialnumber))>0'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.serialnumber,#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.serialnumber,#2) and length(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.serialnumber))>0'
name: 'ZYXEL MGS-3712F: Device has been replaced'
event_name: 'ZYXEL MGS-3712F: Device has been replaced (new serial number received)'
priority: INFO
@@ -405,7 +405,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4672af40f7434a419d063c6f00f4f9f8
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
name: 'ZYXEL MGS-3712F: FAN{#SNMPINDEX} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -422,7 +422,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.fan[{#SNMPINDEX}]'
-
uuid: 4e39a7b918fd44a1bd3986380d116e9f
@@ -772,9 +772,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: d92c1f55c21e4780ada69269d95c5f45
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL MGS-3712F: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -975,37 +975,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: 337c2059cb87491fbacae5690da55ca7
@@ -1014,13 +1014,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: 3e75d1f6271943eaaf19644716fe4e40
@@ -1031,13 +1031,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1055,7 +1055,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: d48eedbbb8ad448da866d11d6f40ce91
@@ -1113,7 +1112,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1ef8b878bd334f1eac9d9c4258d1f4f2
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1124,7 +1123,7 @@ zabbix_export:
value: notice
-
uuid: 6605455fa4764a578feff4ce12a20883
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MGS-3712F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1141,7 +1140,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1301,7 +1300,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8fc46b61f7854893839a307700627d18
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL MGS-3712F: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL MGS-3712F: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1432,7 +1431,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b0d3093a36984493a7ffe87c7c4d408e
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL MGS-3712F: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1449,7 +1448,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -1504,7 +1503,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9a15b78bae564c879a5c95290cde63fe
- expression: 'last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL MGS-3712F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1521,7 +1520,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: 'zyxel.3712f.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1708,7 +1707,7 @@ zabbix_export:
triggers:
-
uuid: 6a31fdd61b9f4aa99c8ad15ff243c6b2
- expression: '(last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.hw.uptime)>0 and last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.hw.uptime)<10m) or (last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.hw.uptime)=0 and last(/ZYXEL MGS-3712F SNMP/zyxel.3712f.net.uptime)<10m)'
+ expression: '(last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.hw.uptime)>0 and last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.hw.uptime)<10m) or (last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.hw.uptime)=0 and last(/ZYXEL MGS-3712F by SNMP/zyxel.3712f.net.uptime)<10m)'
name: 'ZYXEL MGS-3712F: Host has been restarted'
event_name: 'ZYXEL MGS-3712F: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1729,5 +1728,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL MGS-3712F SNMP'
+ host: 'ZYXEL MGS-3712F by SNMP'
key: zyxel.3712f.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/README.md b/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/README.md
index fb0614f4b9f..c0ba92470e3 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL MES3500-24S SNMP
+# ZYXEL MES3500-24S by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mes3500-series
This template was tested on:
@@ -47,7 +47,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.3500_24s.fan.discovery |
-|Interface discovery |<p>-</p> |SNMP |zyxel.3500_24s.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3500_24s.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3500_24s.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3500_24s.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
|Temperature discovery |<p>An entry in tempTable.</p> |SNMP |zyxel.3500_24s.temp.discovery |
@@ -102,26 +102,26 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL MES3500-24S: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL MES3500-24S: {#ZYXEL.FAN.DESCRIPTION} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MES3500-24S: Template does not match hardware |<p>This template is for Zyxel MES3500-24S series, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.model)<>"MES3500-24S"` |INFO | |
-|ZYXEL MES3500-24S: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fwversion,#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fwversion,#2) and length(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24S: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.serialnumber,#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.serialnumber,#2) and length(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24S: High memory utilization |<p>The system is running out of free memory.</p> |`min(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.memusage,5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|ZYXEL MES3500-24S: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24S: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL MES3500-24S: Voltage {#ZYXEL.DESCRIPTION} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MES3500-24S: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES3500-24S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL ES3500-8PD: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.hw.uptime)>0 and last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.hw.uptime)<10m) or (last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.hw.uptime)=0 and last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MES3500-24S: Temperature {#ZYXEL.TEMPDESCRIPTION} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL MES3500-24S: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL MES3500-24S: {#ZYXEL.FAN.DESCRIPTION} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MES3500-24S: Template does not match hardware |<p>This template is for Zyxel MES3500-24S series, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.model)<>"MES3500-24S"` |INFO | |
+|ZYXEL MES3500-24S: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion,#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion,#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24S: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber,#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber,#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24S: High memory utilization |<p>The system is running out of free memory.</p> |`min(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.memusage,5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|ZYXEL MES3500-24S: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24S: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL MES3500-24S: Voltage {#ZYXEL.DESCRIPTION} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MES3500-24S: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MES3500-24S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL ES3500-8PD: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)>0 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)<10m) or (last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)=0 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MES3500-24S: Temperature {#ZYXEL.TEMPDESCRIPTION} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/template_net_zyxel_mgs3500-24s_snmp.yaml b/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/template_net_zyxel_mgs3500-24s_snmp.yaml
index 3c82faba397..7523e29de5a 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/template_net_zyxel_mgs3500-24s_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_mgs3500-24s_snmp/template_net_zyxel_mgs3500-24s_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:11Z'
+ date: '2022-10-27T14:44:24Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 89eef2fe23964f44bf9aec6d00e39efd
- template: 'ZYXEL MES3500-24S SNMP'
- name: 'ZYXEL MES3500-24S SNMP'
+ template: 'ZYXEL MES3500-24S by SNMP'
+ name: 'ZYXEL MES3500-24S by SNMP'
description: |
ZYXEL MES3500-24S
@@ -55,7 +55,7 @@ zabbix_export:
triggers:
-
uuid: d80bc493096b4da4857651e7e28829e7
- expression: 'max(/ZYXEL MES3500-24S SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL MES3500-24S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL MES3500-24S: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -109,7 +109,7 @@ zabbix_export:
triggers:
-
uuid: 7bf51ce2b7a64f3f8151edc224c601e8
- expression: 'min(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL MES3500-24S: High CPU utilization'
event_name: 'ZYXEL MES3500-24S: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -143,7 +143,7 @@ zabbix_export:
triggers:
-
uuid: 182e8b14935445268c096a3e4fdb5795
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fwversion,#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fwversion,#2) and length(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fwversion))>0'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion,#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion,#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion))>0'
name: 'ZYXEL MES3500-24S: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -252,7 +252,7 @@ zabbix_export:
triggers:
-
uuid: d3a4dca93ad946589b1b83e0fe647dde
- expression: 'min(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.memusage,5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.memusage,5m)>{$MEMORY.UTIL.MAX}'
name: 'ZYXEL MES3500-24S: High memory utilization'
event_name: 'ZYXEL MES3500-24S: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -295,7 +295,7 @@ zabbix_export:
triggers:
-
uuid: 96c011542d5b4473934e0de9e442479c
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.model)<>"MES3500-24S"'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.model)<>"MES3500-24S"'
name: 'ZYXEL MES3500-24S: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel MES3500-24S series, but connected to {ITEM.VALUE}'
@@ -378,7 +378,7 @@ zabbix_export:
triggers:
-
uuid: 90268ffbf33049d6adc6ed96badd67ec
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.serialnumber,#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.serialnumber,#2) and length(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.serialnumber))>0'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber,#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber,#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber))>0'
name: 'ZYXEL MES3500-24S: Device has been replaced'
event_name: 'ZYXEL MES3500-24S: Device has been replaced (new serial number received)'
priority: INFO
@@ -424,7 +424,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 19846f8e671945c68b065ac53ebb2d38
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
name: 'ZYXEL MES3500-24S: {#ZYXEL.FAN.DESCRIPTION} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -441,7 +441,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.fan[{#SNMPINDEX}]'
-
uuid: 75336fa715834ade8a5434520543bf1c
@@ -791,9 +791,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 60f1b7c76a6b410db3f3a2ae40c3b74c
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL MES3500-24S: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1001,37 +1001,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: f9f04b1fffeb49d3995957c026a5de5b
@@ -1040,13 +1040,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: a9d922236e12416a85f07c7caff3e3cb
@@ -1057,13 +1057,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1081,7 +1081,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: f90783a6170c4802a1833ae25008b618
@@ -1139,7 +1138,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2a75ca5b7ef444d0a96dcf2d7c824f03
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1150,7 +1149,7 @@ zabbix_export:
value: notice
-
uuid: f2989317c3f847da84979dde3b4f4db4
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MES3500-24S: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1167,7 +1166,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1327,7 +1326,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f6533a3fe07c4f0290e7758ac4183a1f
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL MES3500-24S: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL MES3500-24S: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1456,7 +1455,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c6db10ac3bec446e9152545119b555bc
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL MES3500-24S: Temperature {#ZYXEL.TEMPDESCRIPTION} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1473,7 +1472,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.temp[{#SNMPINDEX}]'
-
uuid: e8a886916c37490f9ba6b29c57d7331e
@@ -1515,7 +1514,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 52ac34f156aa434dace3447bb5745b34
- expression: 'last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL MES3500-24S: Voltage {#ZYXEL.DESCRIPTION} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1532,7 +1531,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: 'zyxel.3500_24s.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1741,7 +1740,7 @@ zabbix_export:
triggers:
-
uuid: 6c8fce36fd9c49569be0ba2bfb70f478
- expression: '(last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.hw.uptime)>0 and last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.hw.uptime)<10m) or (last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.hw.uptime)=0 and last(/ZYXEL MES3500-24S SNMP/zyxel.3500_24s.net.uptime)<10m)'
+ expression: '(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)>0 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)<10m) or (last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)=0 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.uptime)<10m)'
name: 'ZYXEL ES3500-8PD: Host has been restarted'
event_name: 'ZYXEL ES3500-8PD: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1762,5 +1761,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL MES3500-24S SNMP'
+ host: 'ZYXEL MES3500-24S by SNMP'
key: zyxel.3500_24s.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/README.md b/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/README.md
index 63f34b1f2de..6959a3d8418 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL MGS3520-28x SNMP
+# ZYXEL MGS3520-28x by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mgs3520-series
This template was tested on:
@@ -48,7 +48,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.3520_28.fan.discovery |
-|Interface discovery |<p>-</p> |SNMP |zyxel.3520_28.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.3520_28.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.3520_28.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.3520_28.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
|Temperature discovery |<p>An entry in tempTable.</p> |SNMP |zyxel.3520_28.temp.discovery |
@@ -103,26 +103,26 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL MGS3520-28x: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL MGS3520-28x: {#ZYXEL.FAN.DESCRIPTION} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MGS3520-28x: Template does not match hardware |<p>This template is for Zyxel MGS3520-28x series, but connected to {ITEM.VALUE}</p> |`not(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.model)="MGS3520-28" or last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.model)="MGS3520-28F")` |INFO | |
-|ZYXEL MGS3520-28x: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fwversion,#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fwversion,#2) and length(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS3520-28x: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.serialnumber,#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.serialnumber,#2) and length(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS3520-28x: High memory utilization |<p>The system is running out of free memory.</p> |`min(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.memusage,5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|ZYXEL MGS3520-28x: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL MGS3520-28x: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL MGS3520-28x: Voltage {#ZYXEL.DESCRIPTION} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL MGS3520-28x: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MGS3520-28x SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL MGS3520-28x: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.hw.uptime)>0 and last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.hw.uptime)<10m) or (last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.hw.uptime)=0 and last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL MGS3520-28x: Temperature {#ZYXEL.TEMPDESCRIPTION} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL MGS3520-28x: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL MGS3520-28x: {#ZYXEL.FAN.DESCRIPTION} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MGS3520-28x: Template does not match hardware |<p>This template is for Zyxel MGS3520-28x series, but connected to {ITEM.VALUE}</p> |`not(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.model)="MGS3520-28" or last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.model)="MGS3520-28F")` |INFO | |
+|ZYXEL MGS3520-28x: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion,#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion,#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS3520-28x: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber,#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber,#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS3520-28x: High memory utilization |<p>The system is running out of free memory.</p> |`min(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.memusage,5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|ZYXEL MGS3520-28x: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL MGS3520-28x: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL MGS3520-28x: Voltage {#ZYXEL.DESCRIPTION} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL MGS3520-28x: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL MGS3520-28x by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL MGS3520-28x: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)>0 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)<10m) or (last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)=0 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL MGS3520-28x: Temperature {#ZYXEL.TEMPDESCRIPTION} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/template_net_zyxel_mgs3520-28x_snmp.yaml b/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/template_net_zyxel_mgs3520-28x_snmp.yaml
index 78edbb36221..4ed10637dc9 100644
--- a/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/template_net_zyxel_mgs3520-28x_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_mgs3520-28x_snmp/template_net_zyxel_mgs3520-28x_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:11Z'
+ date: '2022-10-27T14:44:24Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 9cc843a085bb4ee5af0dc4d764a7eee9
- template: 'ZYXEL MGS3520-28x SNMP'
- name: 'ZYXEL MGS3520-28x SNMP'
+ template: 'ZYXEL MGS3520-28x by SNMP'
+ name: 'ZYXEL MGS3520-28x by SNMP'
description: |
ZYXEL MGS3520-28x
@@ -55,7 +55,7 @@ zabbix_export:
triggers:
-
uuid: 3bf5d80d383e4e98853caa02063d69c9
- expression: 'max(/ZYXEL MGS3520-28x SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL MGS3520-28x by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL MGS3520-28x: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -109,7 +109,7 @@ zabbix_export:
triggers:
-
uuid: 96ed7ee3906541ea9cb2c95cf4da1a62
- expression: 'min(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL MGS3520-28x: High CPU utilization'
event_name: 'ZYXEL MGS3520-28x: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -143,7 +143,7 @@ zabbix_export:
triggers:
-
uuid: 3785991565b948c2a1e1a2a140c42df4
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fwversion,#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fwversion,#2) and length(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fwversion))>0'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion,#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion,#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion))>0'
name: 'ZYXEL MGS3520-28x: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -252,7 +252,7 @@ zabbix_export:
triggers:
-
uuid: 1a999dff1dd9481083681741e71aba76
- expression: 'min(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.memusage,5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.memusage,5m)>{$MEMORY.UTIL.MAX}'
name: 'ZYXEL MGS3520-28x: High memory utilization'
event_name: 'ZYXEL MGS3520-28x: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -295,7 +295,7 @@ zabbix_export:
triggers:
-
uuid: d72bc70a67014d818d593d6c484fc9ee
- expression: 'not(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.model)="MGS3520-28" or last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.model)="MGS3520-28F")'
+ expression: 'not(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.model)="MGS3520-28" or last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.model)="MGS3520-28F")'
name: 'ZYXEL MGS3520-28x: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel MGS3520-28x series, but connected to {ITEM.VALUE}'
@@ -378,7 +378,7 @@ zabbix_export:
triggers:
-
uuid: e953886c5a464fc18bb1e221d801901c
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.serialnumber,#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.serialnumber,#2) and length(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.serialnumber))>0'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber,#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber,#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber))>0'
name: 'ZYXEL MGS3520-28x: Device has been replaced'
event_name: 'ZYXEL MGS3520-28x: Device has been replaced (new serial number received)'
priority: INFO
@@ -424,7 +424,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9eedeb7aaba943c0947896cd50b39c7f
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
name: 'ZYXEL MGS3520-28x: {#ZYXEL.FAN.DESCRIPTION} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -441,7 +441,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.fan[{#SNMPINDEX}]'
-
uuid: 800ea9596e6f4fa0b59966f9e9e7cf74
@@ -791,9 +791,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: abb9d47ee9624d6f9805e6eedd5532c5
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL MGS3520-28x: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1001,37 +1001,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: b5446d1f3394422d81ca94dd617d6e95
@@ -1040,13 +1040,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: 7314e57ea54c42d2ac6a341943204c04
@@ -1057,13 +1057,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1081,7 +1081,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: c313274b317c42cab5b7dd3c88d0c14b
@@ -1139,7 +1138,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 27cd25ea30fa4f1c9b7b431218241d0c
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1150,7 +1149,7 @@ zabbix_export:
value: notice
-
uuid: 1188909e81c14c23aa9eefbb25a4c367
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1167,7 +1166,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1327,7 +1326,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b9c3894fed8140c684be7c1fe2bbca8d
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL MGS3520-28x: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL MGS3520-28x: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1456,7 +1455,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c2d4142fb8934eb7b66f5a5e4fa04398
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL MGS3520-28x: Temperature {#ZYXEL.TEMPDESCRIPTION} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1473,7 +1472,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.temp[{#SNMPINDEX}]'
-
uuid: b390ed15aca64c49b654734ef35a9d60
@@ -1515,7 +1514,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 22b6f2f48eae4167b31c8fe3ccbc138a
- expression: 'last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL MGS3520-28x: Voltage {#ZYXEL.DESCRIPTION} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1532,7 +1531,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: 'zyxel.3520_28.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1744,7 +1743,7 @@ zabbix_export:
triggers:
-
uuid: 308761b6dffb44c7b827f6ca76312233
- expression: '(last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.hw.uptime)>0 and last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.hw.uptime)<10m) or (last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.hw.uptime)=0 and last(/ZYXEL MGS3520-28x SNMP/zyxel.3520_28.net.uptime)<10m)'
+ expression: '(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)>0 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)<10m) or (last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)=0 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.uptime)<10m)'
name: 'ZYXEL MGS3520-28x: Host has been restarted'
event_name: 'ZYXEL MGS3520-28x: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1765,5 +1764,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL MGS3520-28x SNMP'
+ host: 'ZYXEL MGS3520-28x by SNMP'
key: zyxel.3520_28.cpuusage
diff --git a/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/README.md b/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/README.md
index 158b4489891..7657bd5d7ac 100644
--- a/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/README.md
+++ b/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/README.md
@@ -1,9 +1,9 @@
-# ZYXEL XGS-4728F SNMP
+# ZYXEL XGS-4728F by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
https://www.zyxel.com/products_services/xgs_4728f.shtml
This template was tested on:
@@ -47,7 +47,7 @@ There are no template links in this template.
|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|Fan discovery |<p>An entry in fanRpmTable.</p> |SNMP |zyxel.4728f.fan.discovery |
-|Interface discovery |<p>-</p> |SNMP |zyxel.4728f.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*` - NO_DISCOVER</p> |
+|Interface discovery |<p>-</p> |SNMP |zyxel.4728f.net.if.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.IF.NAME} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}`</p><p>- {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}`</p><p>- {#ZYXEL.IF.LINKUPTYPE} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Don't create triggers for matching interface<br> - {#ZYXEL.IF.NAME} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}`<br> - TRIGGER_PROTOTYPE REGEXP `.*`<br> - NO_DISCOVER</p> |
|Memory pool discovery |<p>-</p> |SNMP |zyxel.4728f.memory.discovery |
|SFP with DDM discovery |<p>SFP DDM module discovery.</p> |SNMP |zyxel.4728f.sfp.ddm.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.DESCRIPTION} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}`</p><p>- {#ZYXEL.SFP.DESCRIPTION} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}`</p> |
|SFP without DDM discovery |<p>SFP module discovery.</p> |SNMP |zyxel.4728f.sfp.discovery<p>**Filter**:</p>AND <p>- {#ZYXEL.SFP.STATUS} MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}`</p><p>- {#ZYXEL.SFP.STATUS} NOT_MATCHES_REGEX `{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}`</p> |
@@ -103,26 +103,26 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|ZYXEL XGS-4728F: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL XGS-4728F SNMP/zyxel.4728f.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|ZYXEL XGS-4728F: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
-|ZYXEL XGS-4728F: Template does not match hardware |<p>This template is for Zyxel XGS-4728F, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.model)<>"XGS-4728F"` |INFO | |
-|ZYXEL XGS-4728F: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fwversion,#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fwversion,#2) and length(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fwversion))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL XGS-4728F: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.serialnumber,#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.serialnumber,#2) and length(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL XGS-4728F: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL XGS-4728F SNMP/zyxel.4728f.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|ZYXEL XGS-4728F: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
-|ZYXEL XGS-4728F: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
-|ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
-|ZYXEL XGS-4728F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
-|ZYXEL XGS-4728F: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL XGS-4728F SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|ZYXEL XGS-4728F: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.hw.uptime)>0 and last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.hw.uptime)<10m) or (last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.hw.uptime)=0 and last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
-|ZYXEL XGS-4728F: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
+|ZYXEL XGS-4728F: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.cpuusage,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|ZYXEL XGS-4728F: FAN{#SNMPINDEX} is in critical state |<p>Please check the fan unit</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}` |AVERAGE | |
+|ZYXEL XGS-4728F: Template does not match hardware |<p>This template is for Zyxel XGS-4728F, but connected to {ITEM.VALUE}</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.model)<>"XGS-4728F"` |INFO | |
+|ZYXEL XGS-4728F: Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fwversion,#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fwversion,#2) and length(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fwversion))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL XGS-4728F: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.serialnumber,#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.serialnumber,#2) and length(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL XGS-4728F: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool |<p>The system is running out of free memory.</p> |`min(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|ZYXEL XGS-4728F: Port {#SNMPINDEX}: Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#2)`<p>Recovery expression:</p>`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])<>2` |AVERAGE |<p>Manual close: YES</p> |
+|ZYXEL XGS-4728F: SFP {#SNMPINDEX} has been replaced |<p>SFP {#SNMPINDEX} serial number has changed. Ack to close</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} |<p>The upper threshold value of the parameter is exceeded</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}` |WARNING | |
+|ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} |<p>The parameter values are less than the lower threshold</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}` |WARNING | |
+|ZYXEL XGS-4728F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state |<p>Please check the power supply</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}` |AVERAGE | |
+|ZYXEL XGS-4728F: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/ZYXEL XGS-4728F by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|ZYXEL XGS-4728F: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.hw.uptime)>0 and last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.hw.uptime)<10m) or (last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.hw.uptime)=0 and last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.uptime)<10m)` |INFO |<p>Manual close: YES</p> |
+|ZYXEL XGS-4728F: Temperature {#ZYXEL.TEMP.ID} is in critical state |<p>Please check the temperature</p> |`last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/422668-discussion-thread-for-official-zabbix-templates-for-zyxel).
## Known Issues
diff --git a/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/template_net_zyxel_xgs-4728f_snmp.yaml b/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/template_net_zyxel_xgs-4728f_snmp.yaml
index 24ea9ab493e..102441c131c 100644
--- a/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/template_net_zyxel_xgs-4728f_snmp.yaml
+++ b/templates/net/zyxel_snmp/zyxel_xgs-4728f_snmp/template_net_zyxel_xgs-4728f_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:12Z'
+ date: '2022-10-27T14:44:22Z'
template_groups:
-
uuid: 36bff6c29af64692839d077febfc7079
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: ab18a5665b7d4bed876881b5c4e8ce51
- template: 'ZYXEL XGS-4728F SNMP'
- name: 'ZYXEL XGS-4728F SNMP'
+ template: 'ZYXEL XGS-4728F by SNMP'
+ name: 'ZYXEL XGS-4728F by SNMP'
description: |
ZYXEL XGS-4728F
@@ -53,7 +53,7 @@ zabbix_export:
triggers:
-
uuid: fd9a321842544253896e5a4c1a58ced3
- expression: 'max(/ZYXEL XGS-4728F SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/ZYXEL XGS-4728F by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'ZYXEL XGS-4728F: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -107,7 +107,7 @@ zabbix_export:
triggers:
-
uuid: 20f368f955f74fc9b8380b1bbff7e057
- expression: 'min(/ZYXEL XGS-4728F SNMP/zyxel.4728f.cpuusage,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.cpuusage,5m)>{$CPU.UTIL.CRIT}'
name: 'ZYXEL XGS-4728F: High CPU utilization'
event_name: 'ZYXEL XGS-4728F: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: 5da304609e8c45d980c46579f6848f0a
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fwversion,#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fwversion,#2) and length(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fwversion))>0'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fwversion,#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fwversion,#2) and length(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fwversion))>0'
name: 'ZYXEL XGS-4728F: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -277,7 +277,7 @@ zabbix_export:
triggers:
-
uuid: 0329f3f5aa6a4315a4f3611ad662103e
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.model)<>"XGS-4728F"'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.model)<>"XGS-4728F"'
name: 'ZYXEL XGS-4728F: Template does not match hardware'
priority: INFO
description: 'This template is for Zyxel XGS-4728F, but connected to {ITEM.VALUE}'
@@ -360,7 +360,7 @@ zabbix_export:
triggers:
-
uuid: 4df7c31c3079411baabd4ae66e580652
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.serialnumber,#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.serialnumber,#2) and length(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.serialnumber))>0'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.serialnumber,#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.serialnumber,#2) and length(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.serialnumber))>0'
name: 'ZYXEL XGS-4728F: Device has been replaced'
event_name: 'ZYXEL XGS-4728F: Device has been replaced (new serial number received)'
priority: INFO
@@ -406,7 +406,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 012219b8b16941b59d1f9a3f685e9f38
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}'
name: 'ZYXEL XGS-4728F: FAN{#SNMPINDEX} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -423,7 +423,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.fan[{#SNMPINDEX}]'
-
uuid: 06f0e151e2a146028f80e60031d49b48
@@ -456,7 +456,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 90b328c3b56c417eb938091338bd07fc
- expression: 'min(/ZYXEL XGS-4728F SNMP/zyxel.4728f.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.memory[{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: 'ZYXEL XGS-4728F: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool'
event_name: 'ZYXEL XGS-4728F: High memory utilization in "{#ZYXEL.MEMORY.NAME}" pool (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -813,9 +813,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3f3ce5111d47490382cb0c18e2d36f77
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#2)'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])<>2'
+ recovery_expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.if.operstatus[{#SNMPINDEX}])<>2'
name: 'ZYXEL XGS-4728F: Port {#SNMPINDEX}: Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1016,37 +1016,37 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.in.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.out.ucastpkts[{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.in.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.out.multicastpkts[{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.in.broadcastpkts[{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.out.broadcastpkts[{#SNMPINDEX}]'
-
uuid: a8c07b7801d64c24bfedf10ea193f697
@@ -1055,13 +1055,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.in.traffic[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.out.traffic[{#SNMPINDEX}]'
-
uuid: 37e8454c3fa04f88be36d875638110c6
@@ -1072,13 +1072,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.out.util[{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.net.if.in.util[{#SNMPINDEX}]'
overrides:
-
@@ -1096,7 +1096,6 @@ zabbix_export:
operationobject: TRIGGER_PROTOTYPE
operator: REGEXP
value: '.*'
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 6e0b5b991865448780e042d98168d72c
@@ -1154,7 +1153,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 409c52cfed074352810bacfd52aa89f0
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}'
name: 'ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION} (over {#ZYXEL.SFP.WARN.MAX}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1165,7 +1164,7 @@ zabbix_export:
value: notice
-
uuid: a2c40df40a334f6da00a438eb70f8374
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}'
name: 'ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}'
event_name: 'ZYXEL XGS-4728F: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION} (less than {#ZYXEL.SFP.WARN.MIN}{#ZYXEL.SFP.UNIT})'
priority: WARNING
@@ -1182,7 +1181,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.sfp.ddm[{#SNMPINDEX}]'
preprocessing:
-
@@ -1342,7 +1341,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 632be557ffed439e98425eaa59361e50
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}]))>0'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.sfp.serialnumber[{#SNMPINDEX}]))>0'
name: 'ZYXEL XGS-4728F: SFP {#SNMPINDEX} has been replaced'
event_name: 'ZYXEL XGS-4728F: SFP {#SNMPINDEX} has been replaced (new serial number received)'
priority: INFO
@@ -1473,7 +1472,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6181f094ae4c4cf4ae4b2e198e2f9b6e
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}'
name: 'ZYXEL XGS-4728F: Temperature {#ZYXEL.TEMP.ID} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1490,7 +1489,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.temp[{#SNMPINDEX}]'
preprocessing:
-
@@ -1545,7 +1544,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 631202a132dc44afa90b0537f9957ee1
- expression: 'last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
+ expression: 'last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}'
name: 'ZYXEL XGS-4728F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1562,7 +1561,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: 'zyxel.4728f.volt[{#SNMPINDEX}]'
preprocessing:
-
@@ -1758,7 +1757,7 @@ zabbix_export:
triggers:
-
uuid: 36b9a7d3d3fb45f782a5ea05de6816f9
- expression: '(last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.hw.uptime)>0 and last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.hw.uptime)<10m) or (last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.hw.uptime)=0 and last(/ZYXEL XGS-4728F SNMP/zyxel.4728f.net.uptime)<10m)'
+ expression: '(last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.hw.uptime)>0 and last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.hw.uptime)<10m) or (last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.hw.uptime)=0 and last(/ZYXEL XGS-4728F by SNMP/zyxel.4728f.net.uptime)<10m)'
name: 'ZYXEL XGS-4728F: Host has been restarted'
event_name: 'ZYXEL XGS-4728F: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -1779,5 +1778,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'ZYXEL XGS-4728F SNMP'
+ host: 'ZYXEL XGS-4728F by SNMP'
key: zyxel.4728f.cpuusage
diff --git a/templates/os/linux_snmp_snmp/README.md b/templates/os/linux_snmp_snmp/README.md
index 7f5784b694e..9d799f98243 100644
--- a/templates/os/linux_snmp_snmp/README.md
+++ b/templates/os/linux_snmp_snmp/README.md
@@ -1,9 +1,9 @@
-# Linux SNMP
+# Linux by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -148,32 +148,32 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Load average is too high |<p>Per CPU load average is too high. Your system may be slow to respond.</p> |`min(/Linux SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN} and last(/Linux SNMP/system.cpu.load.avg5[laLoad.2])>0 and last(/Linux SNMP/system.cpu.load.avg15[laLoad.3])>0` |AVERAGE | |
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Linux SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Linux SNMP/system.name,#1)<>last(/Linux SNMP/system.name,#2) and length(last(/Linux SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Linux SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE |<p>**Depends on**:</p><p>- Lack of available memory</p> |
-|Lack of available memory |<p>-</p> |`max(/Linux SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux SNMP/vm.memory.total[memTotalReal.0])>0` |AVERAGE | |
-|High swap space usage |<p>This trigger is ignored, if there is no swap configured.</p> |`max(/Linux SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux SNMP/system.swap.total[memTotalSwap.0])>0` |WARNING |<p>**Depends on**:</p><p>- High memory utilization</p><p>- Lack of available memory</p> |
-|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Linux SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Linux SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Linux SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Linux SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Linux SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Linux SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Linux SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Linux SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Linux SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Linux SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Linux SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Linux SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Linux SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Linux SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Linux SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Linux SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Linux SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Linux SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Linux SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
-|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Linux SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
-|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}` |AVERAGE | |
-|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}` |WARNING |<p>**Depends on**:</p><p>- {#FSNAME}: Running out of free inodes</p> |
+|Load average is too high |<p>Per CPU load average is too high. Your system may be slow to respond.</p> |`min(/Linux by SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux by SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN} and last(/Linux by SNMP/system.cpu.load.avg5[laLoad.2])>0 and last(/Linux by SNMP/system.cpu.load.avg15[laLoad.3])>0` |AVERAGE | |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Linux by SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Linux by SNMP/system.name,#1)<>last(/Linux by SNMP/system.name,#2) and length(last(/Linux by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|High memory utilization |<p>The system is running out of free memory.</p> |`min(/Linux by SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE |<p>**Depends on**:</p><p>- Lack of available memory</p> |
+|Lack of available memory |<p>-</p> |`max(/Linux by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux by SNMP/vm.memory.total[memTotalReal.0])>0` |AVERAGE | |
+|High swap space usage |<p>This trigger is ignored, if there is no swap configured.</p> |`max(/Linux by SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux by SNMP/system.swap.total[memTotalSwap.0])>0` |WARNING |<p>**Depends on**:</p><p>- High memory utilization</p><p>- Lack of available memory</p> |
+|Interface {#IFNAME}({#IFALIAS}): In half-duplex mode |<p>Please check autonegotiation settings and cabling</p> |`last(/Linux by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2` |WARNING |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Linux by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Linux by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Linux by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Linux by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Linux by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Linux by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Linux by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Linux by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)`<p>Recovery expression:</p>`(change(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Linux by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Linux by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Linux by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Linux by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Linux by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Linux by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Linux by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Linux by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Linux by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Linux by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
+|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Linux by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
+|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}` |AVERAGE | |
+|{#FSNAME}: Running out of free inodes |<p>It may become impossible to write to disk if there are no index nodes left.</p><p>As symptoms, 'No space left on device' or 'Disk is full' errors may be seen even though free space is available.</p> |`min(/Linux by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}` |WARNING |<p>**Depends on**:</p><p>- {#FSNAME}: Running out of free inodes</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/387225-discussion-thread-for-official-zabbix-template-for-linux).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/387225-discussion-thread-for-official-zabbix-template-for-linux).
## References
diff --git a/templates/os/linux_snmp_snmp/template_os_linux_snmp_snmp.yaml b/templates/os/linux_snmp_snmp/template_os_linux_snmp_snmp.yaml
index 81fcf0fbd31..9a712bb53b9 100644
--- a/templates/os/linux_snmp_snmp/template_os_linux_snmp_snmp.yaml
+++ b/templates/os/linux_snmp_snmp/template_os_linux_snmp_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:18:20Z'
+ date: '2022-10-27T14:37:05Z'
template_groups:
-
uuid: 846977d1dfed4968bc5f8bdb363285bc
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 4d3a7adbb6964bd08f2b9d28e0da6496
- template: 'Linux SNMP'
- name: 'Linux SNMP'
+ template: 'Linux by SNMP'
+ name: 'Linux by SNMP'
description: |
Template OS Linux
@@ -46,7 +46,7 @@ zabbix_export:
triggers:
-
uuid: 28927c3715714a77a259d48943ddb8fe
- expression: 'max(/Linux SNMP/icmpping,#3)=0'
+ expression: 'max(/Linux by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -72,14 +72,14 @@ zabbix_export:
triggers:
-
uuid: f6d63c03e6f34888897464102fa369ec
- expression: 'min(/Linux SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Linux SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Linux by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Linux by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Linux SNMP/icmpping,#3)=0'
+ expression: 'max(/Linux by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -105,17 +105,17 @@ zabbix_export:
triggers:
-
uuid: 1c1b86790d6442e59f50d94f9844c337
- expression: 'avg(/Linux SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Linux by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Linux SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Linux SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Linux by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Linux by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Linux SNMP/icmpping,#3)=0'
+ expression: 'max(/Linux by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: eeb0355174d74892a4e3a078e6ac7952
- expression: 'last(/Linux SNMP/system.name,#1)<>last(/Linux SNMP/system.name,#2) and length(last(/Linux SNMP/system.name))>0'
+ expression: 'last(/Linux by SNMP/system.name,#1)<>last(/Linux by SNMP/system.name,#2) and length(last(/Linux by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -583,7 +583,7 @@ zabbix_export:
triggers:
-
uuid: 063b87d246b04e74a439114a05f00fe5
- expression: 'min(/Linux SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Linux by SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
name: 'High memory utilization'
event_name: 'High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -591,7 +591,7 @@ zabbix_export:
dependencies:
-
name: 'Lack of available memory'
- expression: 'max(/Linux SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux SNMP/vm.memory.total[memTotalReal.0])>0'
+ expression: 'max(/Linux by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux by SNMP/vm.memory.total[memTotalReal.0])>0'
tags:
-
tag: scope
@@ -623,7 +623,7 @@ zabbix_export:
triggers:
-
uuid: 63d99e49b3584fb2bf61a7d56725fb3c
- expression: 'max(/Linux SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Linux by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -631,7 +631,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Linux SNMP/icmpping,#3)=0'
+ expression: 'max(/Linux by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -941,7 +941,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 34b29a2e43b347d0ada6b80a472a659e
- expression: 'min(/Linux SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Linux by SNMP/system.cpu.util[snmp,{#SNMPINDEX}],5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -962,55 +962,55 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.system[ssCpuRawSystem.{#SNMPINDEX}]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.user[ssCpuRawUser.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.nice[ssCpuRawNice.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.iowait[ssCpuRawWait.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.steal[ssCpuRawSteal.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.interrupt[ssCpuRawInterrupt.{#SNMPINDEX}]'
-
sortorder: '6'
color: AC8C14
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.softirq[ssCpuRawSoftIRQ.{#SNMPINDEX}]'
-
sortorder: '7'
color: 611F27
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.guest[ssCpuRawGuest.{#SNMPINDEX}]'
-
sortorder: '8'
color: F230E0
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.guest_nice[ssCpuRawGuestNice.{#SNMPINDEX}]'
-
uuid: 22a742f192bb42a3b80e62b214eab9a8
@@ -1022,7 +1022,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.util[snmp,{#SNMPINDEX}]'
master_item:
key: 'system.cpu.num[snmp]'
@@ -1337,9 +1337,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 038c4ebc6bdf48f69b60fca856318638
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1390,21 +1390,21 @@ zabbix_export:
-
uuid: 02387536c92f449384c23a0744e71ee3
expression: |
- change(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Linux SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Linux by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1413,8 +1413,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1422,13 +1422,13 @@ zabbix_export:
-
uuid: efe5516d1c164a8cb243c4806b9684a2
expression: |
- (avg(/Linux SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Linux SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Linux by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Linux by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Linux SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Linux SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Linux by SNMP/net.if.in[ifHCInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Linux by SNMP/net.if.out[ifHCOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Linux by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -1438,8 +1438,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1447,12 +1447,12 @@ zabbix_export:
-
uuid: dbbd6222837345b891dd613f6d40f98f
expression: |
- min(/Linux SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Linux SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Linux by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Linux by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Linux SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Linux SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Linux by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Linux by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1462,8 +1462,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Linux SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Linux by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1480,42 +1480,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'net.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'net.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: 3943b515dcfc4321be0e15eb99eb0077
@@ -1585,7 +1585,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e1f12c0cf744fd3aaac6570325bd661
- expression: 'last(/Linux SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
+ expression: 'last(/Linux by SNMP/net.if.duplex[dot3StatsDuplexStatus.{#SNMPINDEX}])=2'
name: 'Interface {#IFNAME}({#IFALIAS}): In half-duplex mode'
priority: WARNING
description: 'Please check autonegotiation settings and cabling'
@@ -1708,14 +1708,14 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vfs.dev.read.rate[diskIOReads.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vfs.dev.write.rate[diskIOWrites.{#SNMPINDEX}]'
-
uuid: 0ba976a284574157b2b51f103a324d43
@@ -1774,7 +1774,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c2a464a9d8f24b1f96251feabeec8b6a
- expression: 'min(/Linux SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
+ expression: 'min(/Linux by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
name: '{#FSNAME}: Running out of free inodes'
event_name: '{#FSNAME}: Running out of free inodes (free < {$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}%)'
opdata: 'Free inodes: {ITEM.LASTVALUE1}'
@@ -1791,7 +1791,7 @@ zabbix_export:
value: performance
-
uuid: 396da67ae447497781d9f37215490b71
- expression: 'min(/Linux SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}'
+ expression: 'min(/Linux by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}'
name: '{#FSNAME}: Running out of free inodes'
event_name: '{#FSNAME}: Running out of free inodes (free < {$VFS.FS.INODE.PFREE.MIN.WARN:"{#FSNAME}"}%)'
opdata: 'Free inodes: {ITEM.LASTVALUE1}'
@@ -1802,7 +1802,7 @@ zabbix_export:
dependencies:
-
name: '{#FSNAME}: Running out of free inodes'
- expression: 'min(/Linux SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
+ expression: 'min(/Linux by SNMP/vfs.fs.inode.pfree[dskPercentNode.{#SNMPINDEX}],5m)<{$VFS.FS.INODE.PFREE.MIN.CRIT:"{#FSNAME}"}'
tags:
-
tag: scope
@@ -1879,8 +1879,8 @@ zabbix_export:
-
uuid: 4e84d5b0e3bb4729a6eabd5882d2d603
expression: |
- last(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Linux SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Linux by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is critically low'
event_name: '{#FSNAME}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1901,8 +1901,8 @@ zabbix_export:
-
uuid: 210ae86feef14fa0a82c97331e522937
expression: |
- last(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
- ((last(/Linux SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
+ ((last(/Linux by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is low'
event_name: '{#FSNAME}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1917,8 +1917,8 @@ zabbix_export:
-
name: '{#FSNAME}: Disk space is critically low'
expression: |
- last(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Linux SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Linux by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Linux by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Linux by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1940,14 +1940,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]'
tags:
-
@@ -2103,7 +2103,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
-
uuid: 59f09fada3ab43d1bdb70091f92e77f1
@@ -2124,7 +2124,7 @@ zabbix_export:
type: GRAPH
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: 'System load'
-
type: GRAPH_PROTOTYPE
@@ -2148,7 +2148,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: 'CPU usage{#SINGLETON}'
-
type: GRAPH_CLASSIC
@@ -2164,7 +2164,7 @@ zabbix_export:
type: GRAPH
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: 'Memory usage'
-
type: GRAPH_CLASSIC
@@ -2181,7 +2181,7 @@ zabbix_export:
type: GRAPH
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: 'Swap usage'
-
type: GRAPH_PROTOTYPE
@@ -2205,7 +2205,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: '{#FSNAME}: Disk space usage'
-
type: GRAPH_PROTOTYPE
@@ -2229,7 +2229,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: '{#DEVNAME}: Disk read/write rates'
-
type: GRAPH_PROTOTYPE
@@ -2253,7 +2253,7 @@ zabbix_export:
type: ITEM_PROTOTYPE
name: itemid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vfs.dev.util[diskIOLA1.{#SNMPINDEX}]'
-
type: GRAPH_PROTOTYPE
@@ -2277,7 +2277,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -3203,7 +3203,7 @@ zabbix_export:
triggers:
-
uuid: 8d66563ff7744cd6847325d473eaacfe
- expression: 'max(/Linux SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux SNMP/system.swap.total[memTotalSwap.0])>0'
+ expression: 'max(/Linux by SNMP/system.swap.pfree[snmp],5m)<{$SWAP.PFREE.MIN.WARN} and last(/Linux by SNMP/system.swap.total[memTotalSwap.0])>0'
name: 'High swap space usage'
event_name: 'High swap space usage (less than {$SWAP.PFREE.MIN.WARN}% free)'
opdata: 'Free: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
@@ -3212,17 +3212,17 @@ zabbix_export:
dependencies:
-
name: 'High memory utilization'
- expression: 'min(/Linux SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Linux by SNMP/vm.memory.util[snmp],5m)>{$MEMORY.UTIL.MAX}'
-
name: 'Lack of available memory'
- expression: 'max(/Linux SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux SNMP/vm.memory.total[memTotalReal.0])>0'
+ expression: 'max(/Linux by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux by SNMP/vm.memory.total[memTotalReal.0])>0'
tags:
-
tag: scope
value: capacity
-
uuid: e129fb90ec084a83806aec27141cd6eb
- expression: '(last(/Linux SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Linux SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Linux SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Linux SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Linux by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Linux by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Linux by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Linux by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -3231,14 +3231,14 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Linux SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Linux by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
value: notice
-
uuid: b0a04a6a01854d0eb6f9f225c1108261
- expression: 'max(/Linux SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux SNMP/vm.memory.total[memTotalReal.0])>0'
+ expression: 'max(/Linux by SNMP/vm.memory.available[snmp],5m)<{$MEMORY.AVAILABLE.MIN} and last(/Linux by SNMP/vm.memory.total[memTotalReal.0])>0'
name: 'Lack of available memory'
event_name: 'Lack of available memory (<{$MEMORY.AVAILABLE.MIN} of {ITEM.VALUE2})'
opdata: 'Available: {ITEM.LASTVALUE1}, total: {ITEM.LASTVALUE2}'
@@ -3253,9 +3253,9 @@ zabbix_export:
-
uuid: 33df3354161047f0b47ad7736b70a302
expression: |
- min(/Linux SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN}
- and last(/Linux SNMP/system.cpu.load.avg5[laLoad.2])>0
- and last(/Linux SNMP/system.cpu.load.avg15[laLoad.3])>0
+ min(/Linux by SNMP/system.cpu.load.avg1[laLoad.1],5m)/last(/Linux by SNMP/system.cpu.num[snmp])>{$LOAD_AVG_PER_CPU.MAX.WARN}
+ and last(/Linux by SNMP/system.cpu.load.avg5[laLoad.2])>0
+ and last(/Linux by SNMP/system.cpu.load.avg15[laLoad.3])>0
name: 'Load average is too high'
event_name: 'Load average is too high (per CPU load over {$LOAD_AVG_PER_CPU.MAX.WARN} for 5m)'
opdata: 'Load averages(1m 5m 15m): ({ITEM.LASTVALUE1} {ITEM.LASTVALUE3} {ITEM.LASTVALUE4}), # of CPUs: {ITEM.LASTVALUE2}'
@@ -3276,13 +3276,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.switches[ssRawContexts.0]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.intr[ssRawInterrupts.0]'
-
uuid: 16b11e6079864c71a7d068276a8e8650
@@ -3293,14 +3293,14 @@ zabbix_export:
drawtype: BOLD_LINE
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vm.memory.total[memTotalReal.0]'
-
sortorder: '1'
drawtype: GRADIENT_LINE
color: 2774A4
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vm.memory.available[snmp]'
-
uuid: 5cd95425d8fe4705833995ccfb484c66
@@ -3312,7 +3312,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'vm.memory.util[snmp]'
-
uuid: 421c99e9076c4f24931206255577c988
@@ -3321,13 +3321,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.swap.free[memAvailSwap.0]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.swap.total[memTotalSwap.0]'
-
uuid: feff7234e6cc420e94acc3c0dab0a61e
@@ -3337,24 +3337,24 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.load.avg1[laLoad.1]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.load.avg5[laLoad.2]'
-
sortorder: '2'
color: F63100
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.load.avg15[laLoad.3]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Linux SNMP'
+ host: 'Linux by SNMP'
key: 'system.cpu.num[snmp]'
diff --git a/templates/os/windows_snmp/README.md b/templates/os/windows_snmp/README.md
index bceb3d592c4..7432bbdc95c 100644
--- a/templates/os/windows_snmp/README.md
+++ b/templates/os/windows_snmp/README.md
@@ -1,9 +1,9 @@
-# Windows SNMP
+# Windows by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
## Setup
@@ -99,24 +99,24 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Windows SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Windows SNMP/system.name,#1)<>last(/Windows SNMP/system.name,#2) and length(last(/Windows SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Windows SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Windows SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Windows SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Windows SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Windows SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Windows SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Windows SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Windows SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Windows SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Windows SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Windows SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
-|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Windows SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
+|High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Windows by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Windows by SNMP/system.name,#1)<>last(/Windows by SNMP/system.name,#2) and length(last(/Windows by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|{#MEMNAME}: High memory utilization |<p>The system is running out of free memory.</p> |`min(/Windows by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}` |AVERAGE | |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High bandwidth usage |<p>The network interface utilization is close to its estimated maximum bandwidth.</p> |`(avg(/Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or avg(/Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0`<p>Recovery expression:</p>`avg(/Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and avg(/Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}`<p>Recovery expression:</p>`max(/Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before |<p>This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Ack to close.</p> |`change(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and ( last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117 ) and (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2) `<p>Recovery expression:</p>`(change(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2) ` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Windows by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Windows by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Windows by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Windows by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Windows by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Windows by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Windows by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Windows by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Windows by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#FSNAME}: Disk space is critically low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and ((last(/Windows by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |AVERAGE |<p>Manual close: YES</p> |
+|{#FSNAME}: Disk space is low |<p>Two conditions should match: First, space utilization should be above {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}.</p><p> Second condition should be one of the following:</p><p> - The disk free space is less than {$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"}.</p><p> - The disk will be full in less than 24 hours.</p> |`last(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and ((last(/Windows by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d) ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- {#FSNAME}: Disk space is critically low</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/os/windows_snmp/template_os_windows_snmp.yaml b/templates/os/windows_snmp/template_os_windows_snmp.yaml
index 83ec0bab337..ecdc98fb54a 100644
--- a/templates/os/windows_snmp/template_os_windows_snmp.yaml
+++ b/templates/os/windows_snmp/template_os_windows_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:18:23Z'
+ date: '2022-10-27T14:34:50Z'
template_groups:
-
uuid: 846977d1dfed4968bc5f8bdb363285bc
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: f9a59315c8944853bb91c0a9ec3056d7
- template: 'Windows SNMP'
- name: 'Windows SNMP'
+ template: 'Windows by SNMP'
+ name: 'Windows by SNMP'
description: |
Official Windows SNMP template. Requires Zabbix server 4.0.14, 4.2.8, 4.4.0 or newer (JSONPath function avg() used with types autoconversion).
@@ -57,7 +57,7 @@ zabbix_export:
triggers:
-
uuid: 08e22bd77606469d9e03183ec70dc89d
- expression: 'max(/Windows SNMP/icmpping,#3)=0'
+ expression: 'max(/Windows by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -83,14 +83,14 @@ zabbix_export:
triggers:
-
uuid: fa81e50132464ec486ea72929d18d778
- expression: 'min(/Windows SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Windows SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Windows by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Windows by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Windows SNMP/icmpping,#3)=0'
+ expression: 'max(/Windows by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -116,17 +116,17 @@ zabbix_export:
triggers:
-
uuid: fba819f734de4b469fb7851501e55b21
- expression: 'avg(/Windows SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Windows by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Windows SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Windows SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Windows by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Windows by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Windows SNMP/icmpping,#3)=0'
+ expression: 'max(/Windows by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -196,7 +196,7 @@ zabbix_export:
triggers:
-
uuid: ad2261f1ab77449cb1279725e8cf02f9
- expression: 'min(/Windows SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Windows by SNMP/system.cpu.util,5m)>{$CPU.UTIL.CRIT}'
name: 'High CPU utilization'
event_name: 'High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -307,7 +307,7 @@ zabbix_export:
triggers:
-
uuid: e257b5cf5d9949028c690722e4153612
- expression: 'last(/Windows SNMP/system.name,#1)<>last(/Windows SNMP/system.name,#2) and length(last(/Windows SNMP/system.name))>0'
+ expression: 'last(/Windows by SNMP/system.name,#1)<>last(/Windows by SNMP/system.name,#2) and length(last(/Windows by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -388,7 +388,7 @@ zabbix_export:
triggers:
-
uuid: a20254c09f7a4d4d9793da7b075121f3
- expression: 'max(/Windows SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Windows by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -396,7 +396,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Windows SNMP/icmpping,#3)=0'
+ expression: 'max(/Windows by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -706,9 +706,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 101b888ea92348689bbc499bbe15b212
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -759,21 +759,21 @@ zabbix_export:
-
uuid: fe3e2d20c6eb475ba9f0e8f0c5766720
expression: |
- change(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ change(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])<0 and last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
and (
- last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
- last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
- last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
- last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
- last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
- last(/Windows SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
+ last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=6 or
+ last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=7 or
+ last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=11 or
+ last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=62 or
+ last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=69 or
+ last(/Windows by SNMP/net.if.type[ifType.{#SNMPINDEX}])=117
)
and
- (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
+ (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2)
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- (change(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
- (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
+ (change(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0 and last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}],#2)>0) or
+ (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2)
name: 'Interface {#IFNAME}({#IFALIAS}): Ethernet has changed to lower speed than it was before'
opdata: 'Current reported speed: {ITEM.LASTVALUE1}'
priority: INFO
@@ -782,8 +782,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -791,13 +791,13 @@ zabbix_export:
-
uuid: 5ab179badc3747438cf988c437b7b735
expression: |
- (avg(/Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
- avg(/Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
- last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
+ (avg(/Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) or
+ avg(/Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)>({$IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])) and
+ last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])>0
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- avg(/Windows SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
- avg(/Windows SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
+ avg(/Windows by SNMP/net.if.in[ifInOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}]) and
+ avg(/Windows by SNMP/net.if.out[ifOutOctets.{#SNMPINDEX}],15m)<(({$IF.UTIL.MAX:"{#IFNAME}"}-3)/100)*last(/Windows by SNMP/net.if.speed[ifHighSpeed.{#SNMPINDEX}])
name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High bandwidth usage (>{$IF.UTIL.MAX:"{#IFNAME}"}%)'
opdata: 'In: {ITEM.LASTVALUE1}, out: {ITEM.LASTVALUE3}, speed: {ITEM.LASTVALUE2}'
@@ -807,8 +807,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -816,12 +816,12 @@ zabbix_export:
-
uuid: 8acdf247d86b4b2785c92266291682ac
expression: |
- min(/Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/Windows SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/Windows SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/Windows by SNMP/net.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/Windows by SNMP/net.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -831,8 +831,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Windows SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Windows by SNMP/net.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -846,42 +846,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'net.if.in[ifInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'net.if.out[ifOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'net.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'net.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'net.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'net.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
-
uuid: b2c0a897e22d438f8b1bbff44e493b13
@@ -982,8 +982,8 @@ zabbix_export:
-
uuid: 597ea2f6059746c0b2e5b7312f764224
expression: |
- last(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Windows SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Windows by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is critically low'
event_name: '{#FSNAME}: Disk space is critically low (used > {$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1004,8 +1004,8 @@ zabbix_export:
-
uuid: 028b24edaf9c4640a2316845f50a4a7e
expression: |
- last(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
- ((last(/Windows SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"} and
+ ((last(/Windows by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.WARN:"{#FSNAME}"} or timeleft(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
name: '{#FSNAME}: Disk space is low'
event_name: '{#FSNAME}: Disk space is low (used > {$VFS.FS.PUSED.MAX.WARN:"{#FSNAME}"}%)'
opdata: 'Space used: {ITEM.LASTVALUE3} of {ITEM.LASTVALUE2} ({ITEM.LASTVALUE1})'
@@ -1020,8 +1020,8 @@ zabbix_export:
-
name: '{#FSNAME}: Disk space is critically low'
expression: |
- last(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
- ((last(/Windows SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Windows SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
+ last(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}])>{$VFS.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and
+ ((last(/Windows by SNMP/vfs.fs.total[hrStorageSize.{#SNMPINDEX}])-last(/Windows by SNMP/vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]))<{$VFS.FS.FREE.MIN.CRIT:"{#FSNAME}"} or timeleft(/Windows by SNMP/vfs.fs.pused[storageUsedPercentage.{#SNMPINDEX}],1h,100)<1d)
tags:
-
tag: scope
@@ -1043,14 +1043,14 @@ zabbix_export:
calc_fnc: LAST
type: GRAPH_SUM
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'vfs.fs.total[hrStorageSize.{#SNMPINDEX}]'
-
sortorder: '1'
color: C80000
calc_fnc: LAST
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'vfs.fs.used[hrStorageUsed.{#SNMPINDEX}]'
-
uuid: 23bb0567e4194546a09da96ded5182dd
@@ -1141,7 +1141,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ab4b4ad08664454096f5e2cf3b7da1e9
- expression: 'min(/Windows SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
+ expression: 'min(/Windows by SNMP/vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}],5m)>{$MEMORY.UTIL.MAX}'
name: '{#MEMNAME}: High memory utilization'
event_name: '{#MEMNAME}: High memory utilization (>{$MEMORY.UTIL.MAX}% for 5m)'
priority: AVERAGE
@@ -1164,7 +1164,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: 'vm.memory.util[memoryUsedPercentage.{#SNMPINDEX}]'
tags:
-
@@ -1312,7 +1312,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
-
uuid: 3b28bdbfdb6d4cf1a69c7466a4f059f3
@@ -1333,7 +1333,7 @@ zabbix_export:
type: GRAPH
name: graphid
value:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
name: 'CPU utilization'
-
type: GRAPH_PROTOTYPE
@@ -1357,7 +1357,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
name: '{#MEMNAME}: Memory utilization'
-
type: GRAPH_PROTOTYPE
@@ -1381,7 +1381,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
name: '{#FSNAME}: Disk space usage'
valuemaps:
-
@@ -2294,7 +2294,7 @@ zabbix_export:
triggers:
-
uuid: b7a0b390f8844d2aa05ee849d12495f7
- expression: '(last(/Windows SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Windows SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Windows SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Windows SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Windows by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Windows by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Windows by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Windows by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2303,7 +2303,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Windows SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Windows by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2319,5 +2319,5 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Windows SNMP'
+ host: 'Windows by SNMP'
key: system.cpu.util
diff --git a/templates/power/apc/apc_ups_galaxy_3500_snmp/README.md b/templates/power/apc/apc_ups_galaxy_3500_snmp/README.md
index 9f20c49a491..fc1f0d89f9a 100644
--- a/templates/power/apc/apc_ups_galaxy_3500_snmp/README.md
+++ b/templates/power/apc/apc_ups_galaxy_3500_snmp/README.md
@@ -1,9 +1,9 @@
-# APC UPS Galaxy 3500 SNMP
+# APC UPS Galaxy 3500 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC UPS Galaxy 3500 by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Galaxy 3500 SNMP/system.name[sysName.0],#1)<>last(/APC UPS Galaxy 3500 SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Galaxy 3500 SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Galaxy 3500 SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Galaxy 3500 SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Galaxy 3500 SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC UPS Galaxy 3500 SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Galaxy 3500 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Galaxy 3500 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Galaxy 3500 SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Galaxy 3500 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Galaxy 3500 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Galaxy 3500 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Galaxy 3500 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Galaxy 3500 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Galaxy 3500 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Galaxy 3500 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Galaxy 3500 SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Galaxy 3500 SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Galaxy 3500 SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Galaxy 3500 by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Galaxy 3500 by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Galaxy 3500 by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Galaxy 3500 by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Galaxy 3500 by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Galaxy 3500 by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC UPS Galaxy 3500 by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Galaxy 3500 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Galaxy 3500 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Galaxy 3500 by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Galaxy 3500 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Galaxy 3500 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Galaxy 3500 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Galaxy 3500 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Galaxy 3500 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Galaxy 3500 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Galaxy 3500 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Galaxy 3500 by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Galaxy 3500 by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Galaxy 3500 by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_galaxy_3500_snmp/template_power_apc_ups_galaxy_3500_snmp.yaml b/templates/power/apc/apc_ups_galaxy_3500_snmp/template_power_apc_ups_galaxy_3500_snmp.yaml
index 4a1f21516f7..ba50e45733c 100644
--- a/templates/power/apc/apc_ups_galaxy_3500_snmp/template_power_apc_ups_galaxy_3500_snmp.yaml
+++ b/templates/power/apc/apc_ups_galaxy_3500_snmp/template_power_apc_ups_galaxy_3500_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:50Z'
+ date: '2022-10-27T14:24:43Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 5d3971cd973b46e7915d7ae0750bac57
- template: 'APC UPS Galaxy 3500 SNMP'
- name: 'APC UPS Galaxy 3500 SNMP'
+ template: 'APC UPS Galaxy 3500 by SNMP'
+ name: 'APC UPS Galaxy 3500 by SNMP'
description: |
Template Power APC UPS Galaxy 3500
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: 1800690ba0504df9940a4e667c846132
- expression: 'last(/APC UPS Galaxy 3500 SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: b4d10f8908f4473facde6d2db1520e0f
- expression: 'last(/APC UPS Galaxy 3500 SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: d84ec0d0b8d84e3294cbe7ffaed0c83e
- expression: 'last(/APC UPS Galaxy 3500 SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 8f569ce6c916456581e1cb2cdd8d4dba
- expression: 'last(/APC UPS Galaxy 3500 SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 0e1f47f0604d4b1b8769e497d7f328b9
- expression: 'min(/APC UPS Galaxy 3500 SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Galaxy 3500 by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: 786d9928356e41ad9b6b2de3b4f3a96f
- expression: 'min(/APC UPS Galaxy 3500 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC UPS Galaxy 3500 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: de88ed3b64644d3f9ad1cc3f965757bc
- expression: 'min(/APC UPS Galaxy 3500 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC UPS Galaxy 3500 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Galaxy 3500 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: fb7ca4b92e714fda95152b698cf1aa92
- expression: 'min(/APC UPS Galaxy 3500 SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC UPS Galaxy 3500 by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: efed1ccf301740c1a29e71cd89e5659f
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: 44394841911641c4972165b59b8f6a5b
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: d60b075bfaaa4aeea2398d058fb79c92
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 4d54e6e979f94801a3c1e9d6080886bb
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: eb430f5409a24f89b0a9e56fb28087c4
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 77dbd58283b542cfbca9a9255344e97e
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: 3856ff4ac1d64f8e80c4e0cbb1e04c1a
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 10d8d392f93a492b9be767c7ccdf06ed
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 2ab92cb281754de6ad5245509c20056d
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 8fabe8958cfd4dbbabd70648dff1be06
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 9846ac1bbf024e63a05a83e2c02de7ba
- expression: 'last(/APC UPS Galaxy 3500 SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: 811ff6e90d904c8c98feadc89a18e733
- expression: 'last(/APC UPS Galaxy 3500 SNMP/system.name[sysName.0],#1)<>last(/APC UPS Galaxy 3500 SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Galaxy 3500 SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Galaxy 3500 by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Galaxy 3500 by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: e12b11324a634eeba56db1aec1834d5f
- expression: 'max(/APC UPS Galaxy 3500 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Galaxy 3500 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 94e469f639cb4ae4ab3ac23918cfa651
- expression: 'find(/APC UPS Galaxy 3500 SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC UPS Galaxy 3500 by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 60bf7de80cd741caa1c622e797da1d69
- expression: 'find(/APC UPS Galaxy 3500 SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC UPS Galaxy 3500 by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: bdd4bb9fac784bc0b0dc72db3ac9e040
- expression: 'min(/APC UPS Galaxy 3500 SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Galaxy 3500 by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 93d474d1badc45d5a48fe0e610744ff6
- expression: 'last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 48fa5f120bd5495185a9d6f86fc823fd
- expression: 'last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: b0652e627c10477c9e61786d85560d93
- expression: 'last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 463ed9f01f3a4cf6ba91f2707baded15
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 55acc85739e04ebea3414059907ef2e4
- expression: 'last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: e8753aa5ca16449c8dc21af6c8c2a727
- expression: 'last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: d16c60a30b5d46459237eef4df38df9f
- expression: 'last(/APC UPS Galaxy 3500 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Galaxy 3500 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: f16f2ab100614ae6bccf66e5a840c7db
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1824f0be30284d13bad9f895f7adaa0e
- expression: 'min(/APC UPS Galaxy 3500 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Galaxy 3500 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 675dc7c59e974f7eadd5d1562dec00ce
- expression: 'min(/APC UPS Galaxy 3500 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Galaxy 3500 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Galaxy 3500 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: 23bf458b1bbc4ae0b145597292d098cb
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Galaxy 3500 by SNMP'
+ name: Output
valuemaps:
-
uuid: 30a78904cbc94fc58609dc1a11aa48ef
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 5c50881846c649dbb47adcfb3dfc7d68
- expression: '(last(/APC UPS Galaxy 3500 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Galaxy 3500 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Galaxy 3500 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Galaxy 3500 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC UPS Galaxy 3500 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Galaxy 3500 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Galaxy 3500 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Galaxy 3500 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC UPS Galaxy 3500 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Galaxy 3500 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Galaxy 3500 SNMP'
+ host: 'APC UPS Galaxy 3500 by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: d8c7c0451bfd40bf9feb085fb6c5fcf0
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Galaxy 3500 SNMP'
+ host: 'APC UPS Galaxy 3500 by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Galaxy 3500 SNMP'
+ host: 'APC UPS Galaxy 3500 by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: ad9f9b407ae24dd8ba7d2a652bb21fe7
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Galaxy 3500 SNMP'
+ host: 'APC UPS Galaxy 3500 by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Galaxy 3500 SNMP'
+ host: 'APC UPS Galaxy 3500 by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_smart_2200_rm_snmp/README.md b/templates/power/apc/apc_ups_smart_2200_rm_snmp/README.md
index 38215ecdcad..3e470494008 100644
--- a/templates/power/apc/apc_ups_smart_2200_rm_snmp/README.md
+++ b/templates/power/apc/apc_ups_smart_2200_rm_snmp/README.md
@@ -1,9 +1,9 @@
-# APC Smart-UPS 2200 RM SNMP
+# APC Smart-UPS 2200 RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC Smart-UPS 2200 RM by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS 2200 RM SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 2200 RM SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 2200 RM SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 2200 RM SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS 2200 RM SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 2200 RM SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 2200 RM SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS 2200 RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS 2200 RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS 2200 RM SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS 2200 RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 2200 RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 2200 RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 2200 RM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS 2200 RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS 2200 RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS 2200 RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS 2200 RM SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 2200 RM SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS 2200 RM SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 2200 RM by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 2200 RM by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 2200 RM by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS 2200 RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS 2200 RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS 2200 RM by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS 2200 RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 2200 RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 2200 RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 2200 RM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS 2200 RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS 2200 RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS 2200 RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS 2200 RM by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 2200 RM by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS 2200 RM by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_smart_2200_rm_snmp/template_power_apc_ups_smart_2200_rm_snmp.yaml b/templates/power/apc/apc_ups_smart_2200_rm_snmp/template_power_apc_ups_smart_2200_rm_snmp.yaml
index ad6ebfb51e6..e668ce6b48d 100644
--- a/templates/power/apc/apc_ups_smart_2200_rm_snmp/template_power_apc_ups_smart_2200_rm_snmp.yaml
+++ b/templates/power/apc/apc_ups_smart_2200_rm_snmp/template_power_apc_ups_smart_2200_rm_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:51Z'
+ date: '2022-10-27T14:24:46Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: e8c0b2c40e884f1598d86f3edf020ea7
- template: 'APC Smart-UPS 2200 RM SNMP'
- name: 'APC Smart-UPS 2200 RM SNMP'
+ template: 'APC Smart-UPS 2200 RM by SNMP'
+ name: 'APC Smart-UPS 2200 RM by SNMP'
description: |
Template Power APC Smart-UPS 2200 RM
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: 58a0749ef9c94cf9802a62d274b6dad9
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: 8370727883de45dfa6b6d79f60cc86b3
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: 2fb002b1a4584aa0bf0389360171893c
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 05aa81dc53ab45ffaf46580c9f827759
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 1e8c0b3d2d65487199e7fc3e1dde6e50
- expression: 'min(/APC Smart-UPS 2200 RM SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS 2200 RM by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: b89b059a430842aebbd3e6af71514303
- expression: 'min(/APC Smart-UPS 2200 RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS 2200 RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: 2dbc2b96d332488cae4cbf87c985c6b0
- expression: 'min(/APC Smart-UPS 2200 RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS 2200 RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 2200 RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: edb059eeee004d80a9b42154f16ab18a
- expression: 'min(/APC Smart-UPS 2200 RM SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS 2200 RM by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: 20ffc78c2f314ff58b5e75907605c82f
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: ec6e892f4c51414f887d428510d889e7
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: f4cb0ed7e65d4ea29394435cce7600f0
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: e29c2a37586f474f87c388fa8eaf8b9c
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: a07afe38040c4fd08488786ca3f529e5
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 58f44a830386434db0f76553f64ebe67
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: eb99c49157a948769128bc9eeeaff3fc
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: b3d77823096e4bf4a06db8f2307284db
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 000d6b412dd3467aaee40ce230cc059e
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: f1f86a1f23c745658d0c5d10557f67fc
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 434d70c967a9447a9fa927fc2867aa6d
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: 30153a623f0649e380de8f9ec5086b48
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 2200 RM SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 2200 RM SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 2200 RM by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 2200 RM by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: e9dc225935594e8aa25fb80fcfa68e4c
- expression: 'max(/APC Smart-UPS 2200 RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS 2200 RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 02e19fb51d6949cdb99a6aafa71ff654
- expression: 'find(/APC Smart-UPS 2200 RM SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC Smart-UPS 2200 RM by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a4f42d0a944f41349e0d206f1181bd3b
- expression: 'find(/APC Smart-UPS 2200 RM SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC Smart-UPS 2200 RM by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: cb9603c5b7674e12a1a1ac98d4b73a65
- expression: 'min(/APC Smart-UPS 2200 RM SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS 2200 RM by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 603b13b89c7b4ad0bd51d63b93501174
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 9e108d20e6c74e8b96d92f4ce0e7c840
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: 007b2f89fc1f445c8e5afb06a176748d
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 291c45432792490fb3dbccab1a0b9183
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7639c07a79054f9b99687f84db5c95a0
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: a499a1af78a04c77a21c424f3e790787
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: c6fc64bbdb3845d5b80d868c392259ac
- expression: 'last(/APC Smart-UPS 2200 RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS 2200 RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: f39e3c1e6b774ada90ca722cb6ca59b4
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0e9c22ab97cb4db8b96fb907e4b21e04
- expression: 'min(/APC Smart-UPS 2200 RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS 2200 RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 91ac886a5dda41cdb6a6912672d70625
- expression: 'min(/APC Smart-UPS 2200 RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS 2200 RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 2200 RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: ac27c888a2c547b2b71fe6bf1aad69b1
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS 2200 RM by SNMP'
+ name: Output
valuemaps:
-
uuid: 6940a4d08173433bb4bc8ff3b44e578c
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: f23282a63bec4b1d951f80439947672d
- expression: '(last(/APC Smart-UPS 2200 RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 2200 RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 2200 RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 2200 RM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC Smart-UPS 2200 RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 2200 RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 2200 RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 2200 RM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC Smart-UPS 2200 RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS 2200 RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS 2200 RM SNMP'
+ host: 'APC Smart-UPS 2200 RM by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 3d687b2515494fe191fccaaca5c40333
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS 2200 RM SNMP'
+ host: 'APC Smart-UPS 2200 RM by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS 2200 RM SNMP'
+ host: 'APC Smart-UPS 2200 RM by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 17a289b5764947758d8eb20425e229d2
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS 2200 RM SNMP'
+ host: 'APC Smart-UPS 2200 RM by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS 2200 RM SNMP'
+ host: 'APC Smart-UPS 2200 RM by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_smart_3000_xlm_snmp/README.md b/templates/power/apc/apc_ups_smart_3000_xlm_snmp/README.md
index e576579b8da..c7a9f5a8438 100644
--- a/templates/power/apc/apc_ups_smart_3000_xlm_snmp/README.md
+++ b/templates/power/apc/apc_ups_smart_3000_xlm_snmp/README.md
@@ -1,9 +1,9 @@
-# APC Smart-UPS 3000 XLM SNMP
+# APC Smart-UPS 3000 XLM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC Smart-UPS 3000 XLM by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 3000 XLM SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 3000 XLM SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 3000 XLM SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS 3000 XLM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS 3000 XLM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS 3000 XLM SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS 3000 XLM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 3000 XLM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 3000 XLM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 3000 XLM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS 3000 XLM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS 3000 XLM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS 3000 XLM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS 3000 XLM SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 3000 XLM SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS 3000 XLM SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 3000 XLM by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 3000 XLM by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 3000 XLM by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS 3000 XLM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS 3000 XLM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS 3000 XLM by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS 3000 XLM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 3000 XLM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 3000 XLM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 3000 XLM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS 3000 XLM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS 3000 XLM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS 3000 XLM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS 3000 XLM by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS 3000 XLM by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS 3000 XLM by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_smart_3000_xlm_snmp/template_power_apc_ups_smart_3000_xlm_snmp.yaml b/templates/power/apc/apc_ups_smart_3000_xlm_snmp/template_power_apc_ups_smart_3000_xlm_snmp.yaml
index 03f45c0b2d8..220d71bb397 100644
--- a/templates/power/apc/apc_ups_smart_3000_xlm_snmp/template_power_apc_ups_smart_3000_xlm_snmp.yaml
+++ b/templates/power/apc/apc_ups_smart_3000_xlm_snmp/template_power_apc_ups_smart_3000_xlm_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:53Z'
+ date: '2022-10-27T14:24:41Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: eafd78764fde4110b9e46ae184f327ba
- template: 'APC Smart-UPS 3000 XLM SNMP'
- name: 'APC Smart-UPS 3000 XLM SNMP'
+ template: 'APC Smart-UPS 3000 XLM by SNMP'
+ name: 'APC Smart-UPS 3000 XLM by SNMP'
description: |
Template Power APC Smart-UPS 3000 XLM
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: 13fe1336e40c4bafb8dbd409497abf8f
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: 4590ac935e044c19978fe01d117e2995
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: e98ba83e63d246408aeeda76da62d5a4
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 51e3281c49454cf997561c857a34a803
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 1c67af712882479bbf7143bd3e16ed77
- expression: 'min(/APC Smart-UPS 3000 XLM SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS 3000 XLM by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: 78e47553d4bb488991067f53cc8f8a01
- expression: 'min(/APC Smart-UPS 3000 XLM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS 3000 XLM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: 28ad85fa6035433f9a7ec45a8393b603
- expression: 'min(/APC Smart-UPS 3000 XLM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS 3000 XLM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS 3000 XLM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: f667172a5cf44ed6b98f2bb38a3f3806
- expression: 'min(/APC Smart-UPS 3000 XLM SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS 3000 XLM by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: 80e30d37b1724c6ba1d58cedbcf6307f
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: 9bb143ada4194c0084eb70af7bb2c5dc
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: 7132f256542540acadb0caf90144a29c
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 737693e5e4274823a9a21ff92a6ca98a
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: c2fd31cfe3b8474f80b52a2340108b6a
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 2c3a2e962c1e45f6858e5c1aaecee4a3
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: 59d415b15bbf43de85453f5b2ffb73d7
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 6811d34cec57401089af9accfd66ca8f
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 3c96ce14f54a4a59a2568f1f62117e7b
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 60e83c77157741cbb3d24920e87d7d59
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: da442de0e8874736aaab88f009aabe76
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: c9b1f69a882148a180ec1e2600068671
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 3000 XLM SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 3000 XLM SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS 3000 XLM by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS 3000 XLM by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: 71994587c45546bfb0950606d7f69936
- expression: 'max(/APC Smart-UPS 3000 XLM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS 3000 XLM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 400987be93b34a78865685fedb72a5ee
- expression: 'find(/APC Smart-UPS 3000 XLM SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC Smart-UPS 3000 XLM by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 03a100c0bb8d457690e2467c502fcadb
- expression: 'find(/APC Smart-UPS 3000 XLM SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC Smart-UPS 3000 XLM by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9760f6a951a64e3fa6c67a9dd751f79a
- expression: 'min(/APC Smart-UPS 3000 XLM SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS 3000 XLM by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9ba51ee0398444e1bd12cb805c1f7452
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 490e952dfac944afb23eb0e72e081db3
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: 8b740b88389b457eaa4d1d6c768ec8ae
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: c64b5cb02dec4873a2e041359da3cdf7
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 944fd36a2ad14fd29dd063ad03197cd7
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: 1a4473a5e1bf4fbbb5761fdb141769c0
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: af8e01a221b84c73a3f67ab84ed9cfa0
- expression: 'last(/APC Smart-UPS 3000 XLM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS 3000 XLM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: ecca1791b7744f30bfcc1018a10cf1fa
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 709ad3894aca49f0be051d338d4ffaed
- expression: 'min(/APC Smart-UPS 3000 XLM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS 3000 XLM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: dbdf66b61dce4b6dbf49371e9b1f8146
- expression: 'min(/APC Smart-UPS 3000 XLM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS 3000 XLM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS 3000 XLM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: 829373d305ce44cc9441714fc9d828a5
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
+ name: Output
valuemaps:
-
uuid: 55fecbd639c44c328b4199569a7305ef
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 15764a5819174d3fadc75436f42650fb
- expression: '(last(/APC Smart-UPS 3000 XLM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 3000 XLM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 3000 XLM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 3000 XLM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC Smart-UPS 3000 XLM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS 3000 XLM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS 3000 XLM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS 3000 XLM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC Smart-UPS 3000 XLM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS 3000 XLM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS 3000 XLM SNMP'
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 3c778f0c837d4979abb39aabe0cb321e
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS 3000 XLM SNMP'
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS 3000 XLM SNMP'
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 5f44db14cfc94ae7adf98f8cf1f4b647
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS 3000 XLM SNMP'
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS 3000 XLM SNMP'
+ host: 'APC Smart-UPS 3000 XLM by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/README.md b/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/README.md
index 0cc48745ada..50b5975aaa8 100644
--- a/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/README.md
+++ b/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/README.md
@@ -1,9 +1,9 @@
-# APC Smart-UPS RT 1000 RM XL SNMP
+# APC Smart-UPS RT 1000 RM XL by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC Smart-UPS RT 1000 RM XL by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 RM XL SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 RM XL SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS RT 1000 RM XL SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS RT 1000 RM XL SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 RM XL SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 RM XL SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 RM XL SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS RT 1000 RM XL SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS RT 1000 RM XL SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS RT 1000 RM XL SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS RT 1000 RM XL by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS RT 1000 RM XL by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/template_power_apc_ups_smart_rt_1000_rm_xl_snmp.yaml b/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/template_power_apc_ups_smart_rt_1000_rm_xl_snmp.yaml
index b5a7baac001..5e23aeb8b8d 100644
--- a/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/template_power_apc_ups_smart_rt_1000_rm_xl_snmp.yaml
+++ b/templates/power/apc/apc_ups_smart_rt_1000_rm_xl_snmp/template_power_apc_ups_smart_rt_1000_rm_xl_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:54Z'
+ date: '2022-10-27T14:24:38Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 340ec6917c274ead8fab36925e57f30a
- template: 'APC Smart-UPS RT 1000 RM XL SNMP'
- name: 'APC Smart-UPS RT 1000 RM XL SNMP'
+ template: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ name: 'APC Smart-UPS RT 1000 RM XL by SNMP'
description: |
Template Power APC Smart-UPS RT 1000 RM XL
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: 8ab182b26a0443539a1a114767d8acd7
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: ab0db1327cf04a9c9a9ee757f0869603
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: c8787a09c2ea4aeb977b868ae0a3218b
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 40d1fdcec63d4c3785b5ba77fbd14ee7
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: e2debe06675d4d4584b60b768633887b
- expression: 'min(/APC Smart-UPS RT 1000 RM XL SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: b29cd7e33c1e4e16b10fe436c1f7e6d6
- expression: 'min(/APC Smart-UPS RT 1000 RM XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: d38f2151f0eb486e8d44b72a2e361a5f
- expression: 'min(/APC Smart-UPS RT 1000 RM XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 RM XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: 57197c601f8a433d8ccdcb040d047f6f
- expression: 'min(/APC Smart-UPS RT 1000 RM XL SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 RM XL by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: e9289d8f4e124097990e2af98e916368
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: 13735964f51d4d1bb17e6b0587a43020
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: d74ae82199884a7fb4a20b48f3c7ff1f
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 4df5271075904c228a0372d5f667530e
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: 3f02d9cb7f5142599e59e7781808e5c3
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 515ad03892694fd4a2f2350a6bb8af6f
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: 2a2d35e4e4674b6aa49068a7970caa03
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: ef1ddb8869074847b70e8f669883c56b
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 0d6e4e664ddf425e8c03155802fe45be
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 12a3a33152824ffe863a8d79c1372195
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 273c561c2afb4d78be86218e370c9a1f
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: b13b087b9828426aac82a281071ceb8b
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 RM XL SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 RM XL SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: 53263bf0536d479785b45883b9b7ab21
- expression: 'max(/APC Smart-UPS RT 1000 RM XL SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS RT 1000 RM XL by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c1eefbeeb0d146c3bea5cae929d0c30b
- expression: 'find(/APC Smart-UPS RT 1000 RM XL SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 28b8fb69a85549288cf0e26b9ca0a2cf
- expression: 'find(/APC Smart-UPS RT 1000 RM XL SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fa007fcfbe7c499d8f97a808991f2800
- expression: 'min(/APC Smart-UPS RT 1000 RM XL SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 RM XL by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 175c1def62ac412eb5f9ef015a9b8ac3
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: e7610cf822674591bea6ed7ba5e4198d
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: 44353bbfcfbe42e59d2e58b544d32b43
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: d4b34302c7d74f83a409947f2eed37b0
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5e937c991aa146fe98c1a4f868be6b70
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: f8dd227322784a708ae6297e796177f9
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: b142607d33e9447d88f23fc3ff7dc11d
- expression: 'last(/APC Smart-UPS RT 1000 RM XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS RT 1000 RM XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 525a204918834dbfa788a3681c2d0527
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 971301abf4d6457da125fd7ebd903728
- expression: 'min(/APC Smart-UPS RT 1000 RM XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d7167a129de146d19218edb85c82c69b
- expression: 'min(/APC Smart-UPS RT 1000 RM XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 RM XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: 2fba6e227f9b4d8fa584664bfd600cf4
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
+ name: Output
valuemaps:
-
uuid: 7cf932d3b9304f2cb151134e9ea3be82
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 87ebd137f2744ae6879d6fd9d51314ef
- expression: '(last(/APC Smart-UPS RT 1000 RM XL SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 RM XL SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 RM XL SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 RM XL SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 RM XL by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC Smart-UPS RT 1000 RM XL SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS RT 1000 RM XL by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS RT 1000 RM XL SNMP'
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 09da5776f4ff4e978e488a12f33dc8bc
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS RT 1000 RM XL SNMP'
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS RT 1000 RM XL SNMP'
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: df0833759bae450e8125c3fb76519775
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS RT 1000 RM XL SNMP'
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS RT 1000 RM XL SNMP'
+ host: 'APC Smart-UPS RT 1000 RM XL by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/README.md b/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/README.md
index 9ebaa372ca7..6f7d3723b08 100644
--- a/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/README.md
+++ b/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/README.md
@@ -1,9 +1,9 @@
-# APC Smart-UPS RT 1000 XL SNMP
+# APC Smart-UPS RT 1000 XL by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC Smart-UPS RT 1000 XL by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 XL SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 XL SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS RT 1000 XL SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS RT 1000 XL SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 XL SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 XL SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 XL SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS RT 1000 XL SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS RT 1000 XL SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS RT 1000 XL SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 XL by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 XL by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS RT 1000 XL by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS RT 1000 XL by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 XL by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 XL by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 XL by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS RT 1000 XL by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS RT 1000 XL by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS RT 1000 XL by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS RT 1000 XL by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/template_power_apc_ups_smart_rt_1000_xl_snmp.yaml b/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/template_power_apc_ups_smart_rt_1000_xl_snmp.yaml
index 03de1d390a9..c16b9662a11 100644
--- a/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/template_power_apc_ups_smart_rt_1000_xl_snmp.yaml
+++ b/templates/power/apc/apc_ups_smart_rt_1000_xl_snmp/template_power_apc_ups_smart_rt_1000_xl_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:55Z'
+ date: '2022-10-27T14:24:45Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 32d3c78ff44c4c3c9ff5b893ad7f5fc9
- template: 'APC Smart-UPS RT 1000 XL SNMP'
- name: 'APC Smart-UPS RT 1000 XL SNMP'
+ template: 'APC Smart-UPS RT 1000 XL by SNMP'
+ name: 'APC Smart-UPS RT 1000 XL by SNMP'
description: |
Template Power APC Smart-UPS RT 1000 XL
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: b5d618c6090447429191fe4d07e85afa
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: dc92c19a5b7e43a4b155d6d51912aaf8
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: 70c32834ea40487c8f13a55b7ed7c88f
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: e7aeaae896664729b66b42a94f626f9b
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 33695c02cf6141f78e21ca899af10c03
- expression: 'min(/APC Smart-UPS RT 1000 XL SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 XL by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: 167de2d832984944878767571b0b5fe4
- expression: 'min(/APC Smart-UPS RT 1000 XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS RT 1000 XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: b8741bc0081a4a9db2824c9f93ecb399
- expression: 'min(/APC Smart-UPS RT 1000 XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS RT 1000 XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS RT 1000 XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: a4faec3975134cd59e83f1ca7fa3ef7d
- expression: 'min(/APC Smart-UPS RT 1000 XL SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 XL by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: deedd977f1ed4b9fbb5cc161dde0c116
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: a7bbe6ca410743919f7c611a6faec9ba
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: 974042a124b945068c6c16c4a01433dc
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 90e810043e41467b8460278fc7923397
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: 656ae233f3a946799c3ed3d48914c0b0
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 3fcbd14931854831ac603a254ffea0c3
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: 65085178eef54189afdaf4937de49177
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 0aa402907ee446c0a13fa086b500fa87
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: be6cdd1fc22a4f0eacdbce4361cd6788
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: b4375fc980ae4bee87531d18ea9a5397
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 7ae9e31ac32944928065d1cefb2c4e2f
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: 31bb0ff1ea334cd59d9f8b8f489611ef
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 XL SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 XL SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS RT 1000 XL by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS RT 1000 XL by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: 21fc3a198f3b423fa14676278f53a4be
- expression: 'max(/APC Smart-UPS RT 1000 XL SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS RT 1000 XL by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c353d8e0b0584c6c8ba81514f5c66995
- expression: 'find(/APC Smart-UPS RT 1000 XL SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC Smart-UPS RT 1000 XL by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 26535b11c27b4fbe92285b56cbbf5a73
- expression: 'find(/APC Smart-UPS RT 1000 XL SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC Smart-UPS RT 1000 XL by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7f8613d752524d588e60aa1cab2c60bd
- expression: 'min(/APC Smart-UPS RT 1000 XL SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 XL by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 40e22c5379f34edf87d1ea52ffae60b8
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: a482de04a5d34807874fc7a7c506dd40
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: dca875c511b04dc1857de74223c4f27b
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: c4df3e0e0eba4585bdd01358f9d7f5d9
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 650a1d16e56c45188c6246e960d62857
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: 7518ae06e3a14866b9e6d90a224055f7
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: 65aa8a5380f141498dd9c718972110b3
- expression: 'last(/APC Smart-UPS RT 1000 XL SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS RT 1000 XL by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 68610f5b6df44229bcb0ad4b0fa1c3f8
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8c9226411afb4b32ba3e9d6232ff4710
- expression: 'min(/APC Smart-UPS RT 1000 XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 58e0697a9a9147a4b1dfda251f2b593e
- expression: 'min(/APC Smart-UPS RT 1000 XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS RT 1000 XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS RT 1000 XL by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: 8e5f02a3eab44a5f85011b7331696284
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
+ name: Output
valuemaps:
-
uuid: b2af1e2dcb874d43949c383f9b347f36
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 860d3beb50c0400283a71c2c4b4ea5e2
- expression: '(last(/APC Smart-UPS RT 1000 XL SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 XL SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 XL SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 XL SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC Smart-UPS RT 1000 XL by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS RT 1000 XL by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS RT 1000 XL by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS RT 1000 XL by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC Smart-UPS RT 1000 XL SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS RT 1000 XL by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS RT 1000 XL SNMP'
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 0817d2550d9642fe95ce182dce5cefd8
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS RT 1000 XL SNMP'
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS RT 1000 XL SNMP'
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: ce2f4070e7a14d8283d0a8aff0fcd5e6
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS RT 1000 XL SNMP'
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS RT 1000 XL SNMP'
+ host: 'APC Smart-UPS RT 1000 XL by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_smart_srt_5000_snmp/README.md b/templates/power/apc/apc_ups_smart_srt_5000_snmp/README.md
index 5973b3e02ee..b5f89138b1e 100644
--- a/templates/power/apc/apc_ups_smart_srt_5000_snmp/README.md
+++ b/templates/power/apc/apc_ups_smart_srt_5000_snmp/README.md
@@ -1,9 +1,9 @@
-# APC Smart-UPS SRT 5000 SNMP
+# APC Smart-UPS SRT 5000 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC Smart-UPS SRT 5000 by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 5000 SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 5000 SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 5000 SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 5000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS SRT 5000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS SRT 5000 SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS SRT 5000 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 5000 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 5000 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 5000 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS SRT 5000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 5000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS SRT 5000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS SRT 5000 SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 5000 SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS SRT 5000 SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 5000 by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 5000 by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 5000 by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 5000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS SRT 5000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS SRT 5000 by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS SRT 5000 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 5000 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 5000 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 5000 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS SRT 5000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 5000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS SRT 5000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS SRT 5000 by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 5000 by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS SRT 5000 by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_smart_srt_5000_snmp/template_power_apc_ups_smart_srt_5000_snmp.yaml b/templates/power/apc/apc_ups_smart_srt_5000_snmp/template_power_apc_ups_smart_srt_5000_snmp.yaml
index 2571ad62cef..a31fa272a9c 100644
--- a/templates/power/apc/apc_ups_smart_srt_5000_snmp/template_power_apc_ups_smart_srt_5000_snmp.yaml
+++ b/templates/power/apc/apc_ups_smart_srt_5000_snmp/template_power_apc_ups_smart_srt_5000_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:57Z'
+ date: '2022-10-27T14:24:40Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 8ec76aeb703747a5affdf435bc12f572
- template: 'APC Smart-UPS SRT 5000 SNMP'
- name: 'APC Smart-UPS SRT 5000 SNMP'
+ template: 'APC Smart-UPS SRT 5000 by SNMP'
+ name: 'APC Smart-UPS SRT 5000 by SNMP'
description: |
Template Power APC Smart-UPS SRT 5000
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: 0103da3d5f414d8ba1e9914d5c8d5f76
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: 09573345f6ce4d648f56117c8755e368
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: 743aef1e53ee464da48d2953ddc3b85c
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: d648d686ff994625bd17f959c311fddd
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: e47ba98e74c94bd3886ac65cd1075359
- expression: 'min(/APC Smart-UPS SRT 5000 SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 5000 by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: 3fa853edcebe42eba858e45f1a4465ee
- expression: 'min(/APC Smart-UPS SRT 5000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS SRT 5000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: 74b42439050b48b6bf41abb5bb39808b
- expression: 'min(/APC Smart-UPS SRT 5000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS SRT 5000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 5000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: e099efa7266f44008819979830147665
- expression: 'min(/APC Smart-UPS SRT 5000 SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 5000 by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: edcc1dc962fa4a228b2f5cd3617efbc6
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: 869fed8cdd5a4f369e3b1ff2474280de
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: 378a246b34454d73b2248757be60a7ea
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 286dc25a245f45c3bdcc64925b41aef6
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: 4d02a4c4f25a4efda7bd30def8364972
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: ae91f99b089748cdaeb0185e31ffe82e
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: 0bb0ef56d82e4c2a9414468c61fb3a96
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 6a5a7e4b17384131a337619ec4a9c1e6
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 232c98b7ca654c91a20d52ce6f21d7a1
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 65b8d109db8d4448a7ead131581fcbbe
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 917c1f3c82e044a89f2f56a2c8a602a6
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: 154aad534c35473cb4513cb4e3d4a082
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 5000 SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 5000 SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 5000 by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 5000 by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: 6e0f9b15effd4c9e9c416a99fd8f4517
- expression: 'max(/APC Smart-UPS SRT 5000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS SRT 5000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b29f9bd2e80242be940682139f303121
- expression: 'find(/APC Smart-UPS SRT 5000 SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC Smart-UPS SRT 5000 by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0a96a9726cdd4431ad6e6d52e7461d69
- expression: 'find(/APC Smart-UPS SRT 5000 SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC Smart-UPS SRT 5000 by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: dbb191572a17451296ae4ee8d3aeec73
- expression: 'min(/APC Smart-UPS SRT 5000 SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 5000 by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fc448a3d2ae4462a903863364bec836d
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 3340123b060949a4b806a5a757862026
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: 5ac7c47c37804492947716e5857275c4
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 415a43bfe1d845f88f0ac15e80a0dc14
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8774e39abe784f6b9fe2f33c30f3fa05
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: d41c9de571ea4b48a1213f98a058c550
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: c9e751b9449f4616beeb36b51cf0a3b9
- expression: 'last(/APC Smart-UPS SRT 5000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS SRT 5000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 5971a05073b84056bf4e30dfa3e2e18e
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b8d5cbee0bc14df58a217b33222aa75d
- expression: 'min(/APC Smart-UPS SRT 5000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 5000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 176a3014124f4f23bedbad120cb2b69a
- expression: 'min(/APC Smart-UPS SRT 5000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 5000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 5000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: ceb28c7c39e44859a4c1076978a40788
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
+ name: Output
valuemaps:
-
uuid: 41e166e2a5f948488238198920ab4b17
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 7793a5e111c6466584ef6610aae707c1
- expression: '(last(/APC Smart-UPS SRT 5000 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 5000 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 5000 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 5000 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC Smart-UPS SRT 5000 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 5000 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 5000 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 5000 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC Smart-UPS SRT 5000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS SRT 5000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS SRT 5000 SNMP'
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 4317390560354b369a884abcbce9a026
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS SRT 5000 SNMP'
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS SRT 5000 SNMP'
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 595018e4c5d8406a805aed647cd2f5d1
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS SRT 5000 SNMP'
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS SRT 5000 SNMP'
+ host: 'APC Smart-UPS SRT 5000 by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_smart_srt_8000_snmp/README.md b/templates/power/apc/apc_ups_smart_srt_8000_snmp/README.md
index 1a3b3d15dad..a0a4df8ed50 100644
--- a/templates/power/apc/apc_ups_smart_srt_8000_snmp/README.md
+++ b/templates/power/apc/apc_ups_smart_srt_8000_snmp/README.md
@@ -1,9 +1,9 @@
-# APC Smart-UPS SRT 8000 SNMP
+# APC Smart-UPS SRT 8000 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC Smart-UPS SRT 8000 by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 8000 SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 8000 SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 8000 SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 8000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS SRT 8000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS SRT 8000 SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS SRT 8000 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 8000 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 8000 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 8000 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS SRT 8000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 8000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS SRT 8000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS SRT 8000 SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 8000 SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS SRT 8000 SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 8000 by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 8000 by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 8000 by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 8000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC Smart-UPS SRT 8000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC Smart-UPS SRT 8000 by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC Smart-UPS SRT 8000 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 8000 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 8000 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 8000 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC Smart-UPS SRT 8000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC Smart-UPS SRT 8000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC Smart-UPS SRT 8000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC Smart-UPS SRT 8000 by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC Smart-UPS SRT 8000 by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC Smart-UPS SRT 8000 by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_smart_srt_8000_snmp/template_power_apc_ups_smart_srt_8000_snmp.yaml b/templates/power/apc/apc_ups_smart_srt_8000_snmp/template_power_apc_ups_smart_srt_8000_snmp.yaml
index 473a39e7e60..f3e21d234b2 100644
--- a/templates/power/apc/apc_ups_smart_srt_8000_snmp/template_power_apc_ups_smart_srt_8000_snmp.yaml
+++ b/templates/power/apc/apc_ups_smart_srt_8000_snmp/template_power_apc_ups_smart_srt_8000_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:58Z'
+ date: '2022-10-27T14:24:46Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: b3caafda8c5345cc832ac3be3cefa615
- template: 'APC Smart-UPS SRT 8000 SNMP'
- name: 'APC Smart-UPS SRT 8000 SNMP'
+ template: 'APC Smart-UPS SRT 8000 by SNMP'
+ name: 'APC Smart-UPS SRT 8000 by SNMP'
description: |
Template Power APC Smart-UPS SRT 8000
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: 92e6a65ffc6d4a6bae62303ee2796580
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: 0e8030c0028144728361153c2b47016b
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: cf186014cfd94ccbad3cc4cbd22b6aa1
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: e1957ee82be847e7bfb171560fc59293
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 1e883961b65e445997c57870734a58ca
- expression: 'min(/APC Smart-UPS SRT 8000 SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 8000 by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: b9a134c942da46ffba1acdf85a7832e4
- expression: 'min(/APC Smart-UPS SRT 8000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS SRT 8000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: 694ab76079b1447b99ef510d80faab6a
- expression: 'min(/APC Smart-UPS SRT 8000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC Smart-UPS SRT 8000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC Smart-UPS SRT 8000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: 68f92026e7b345c88bf4aa679f9b642c
- expression: 'min(/APC Smart-UPS SRT 8000 SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 8000 by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: 9952679fada845228bbbf05bcdada305
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: ee306606159f4930bcf580b5084c846a
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: c4623dc4c6ae4c5b9ff4bdf4f43ed8b2
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 26c0b9b62d864c1ead7b16e0076a7226
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: 5c8408069c03421cb60b388451869b6f
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 156c5260ed4444c19313ba491ce9352c
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: c233bc86198140659ec3dd609c94ec94
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 944e49d1b6d44adc8d720bd689d8c8cf
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 9b376dbd2d614878b681b42bb2c7fe4d
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 499ac46836c1454dad3c1ffc5714c073
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 8a0a5af39647494681e52595d179c336
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: 852083234a55441aa2fa57b202227bef
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 8000 SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 8000 SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/system.name[sysName.0],#1)<>last(/APC Smart-UPS SRT 8000 by SNMP/system.name[sysName.0],#2) and length(last(/APC Smart-UPS SRT 8000 by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: 9a0cb26712c14045a18a0e86de4cdd54
- expression: 'max(/APC Smart-UPS SRT 8000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS SRT 8000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2d9c4ef006994ebea581b895424203f3
- expression: 'find(/APC Smart-UPS SRT 8000 SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC Smart-UPS SRT 8000 by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5358b97f94aa47f59351be88673407a0
- expression: 'find(/APC Smart-UPS SRT 8000 SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC Smart-UPS SRT 8000 by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b88678e600694bc19ebaf57472d8658f
- expression: 'min(/APC Smart-UPS SRT 8000 SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 8000 by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 33f4ac80a8d44752b97bc4f885a8c95f
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 1a2080a561394f8c8a0dc639cbf2c812
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: a53d5dd33e8548d5bcb73ffb936af910
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 39f516180a1b4727907b1e2974111fe1
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9247973676c44377a4fa550990384eeb
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: 6b054505c2704c8d8e38b096885bbbe5
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: f56f165d71084b75a716d04337f5fcb1
- expression: 'last(/APC Smart-UPS SRT 8000 SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC Smart-UPS SRT 8000 by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 10363e965d97464a9344baa5fa7a2f53
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 755f972a32904dbf81a6da77f4ba57f0
- expression: 'min(/APC Smart-UPS SRT 8000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 8000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5846a7a3d56f43de8394823ed64a11ae
- expression: 'min(/APC Smart-UPS SRT 8000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC Smart-UPS SRT 8000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC Smart-UPS SRT 8000 by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: 268ead40a9dd40798df6d75f554ec1bb
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
+ name: Output
valuemaps:
-
uuid: 864d59cbfcc8431cb334b812bf7ef3a3
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 6f0fbe74ad4945e987e7ffdfa741d92f
- expression: '(last(/APC Smart-UPS SRT 8000 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 8000 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 8000 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 8000 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC Smart-UPS SRT 8000 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC Smart-UPS SRT 8000 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC Smart-UPS SRT 8000 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC Smart-UPS SRT 8000 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC Smart-UPS SRT 8000 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC Smart-UPS SRT 8000 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS SRT 8000 SNMP'
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 7cd3c6f5dcaf40e28cbc0ac9e3c35d7a
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS SRT 8000 SNMP'
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS SRT 8000 SNMP'
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 2fe4eba0af2745c994ad3d6abfe30140
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC Smart-UPS SRT 8000 SNMP'
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC Smart-UPS SRT 8000 SNMP'
+ host: 'APC Smart-UPS SRT 8000 by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_snmp/README.md b/templates/power/apc/apc_ups_snmp/README.md
index 1d4dc21e84c..80603c8a9b0 100644
--- a/templates/power/apc/apc_ups_snmp/README.md
+++ b/templates/power/apc/apc_ups_snmp/README.md
@@ -1,9 +1,9 @@
-# APC UPS SNMP
+# APC UPS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC UPS with NMC by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -49,8 +49,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery | |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -106,43 +106,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS SNMP/system.name[sysName.0],#1)<>last(/APC UPS SNMP/system.name[sysName.0],#2) and length(last(/APC UPS SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC UPS SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC UPS SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC UPS SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC UPS SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS by SNMP/system.name[sysName.0],#1)<>last(/APC UPS by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC UPS by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC UPS by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC UPS by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC UPS by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_snmp/template_power_apc_ups_snmp.yaml b/templates/power/apc/apc_ups_snmp/template_power_apc_ups_snmp.yaml
index fa909848d2d..2ba27b80188 100644
--- a/templates/power/apc/apc_ups_snmp/template_power_apc_ups_snmp.yaml
+++ b/templates/power/apc/apc_ups_snmp/template_power_apc_ups_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:48Z'
+ date: '2022-10-27T14:24:35Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 3ec55c9966624ef5bc1b50502812d581
- template: 'APC UPS SNMP'
- name: 'APC UPS SNMP'
+ template: 'APC UPS by SNMP'
+ name: 'APC UPS by SNMP'
description: |
Template Power APC UPS
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: aa0bbfb321d440438fb421825f23e140
- expression: 'last(/APC UPS SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC UPS by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: 7e40918732e74b5e8bd854422989e77d
- expression: 'last(/APC UPS SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC UPS by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: 7ae03f3f307b4f11ad2bc0548911cbd3
- expression: 'last(/APC UPS SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC UPS by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 1282326bb61d45d88671bbbde3fab8ff
- expression: 'last(/APC UPS SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC UPS by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 36a14fe061d1433e9875373307a4e0f4
- expression: 'min(/APC UPS SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: 1ddd2699b87f452a8893f75f805c0a81
- expression: 'min(/APC UPS SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC UPS by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: f6527c4fed3d41168be23f9367f18405
- expression: 'min(/APC UPS SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC UPS by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: ebef08a42d1e47ffa82ea586c1a5b3d6
- expression: 'min(/APC UPS SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC UPS by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: c0e0b1db9a1f41379c340c122426778d
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: 381a6a75d9084ff1bfcc30b6870a2682
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: da75b5277ceb423fac8d90b58d49c21f
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: b0330f707fc64605934ed95233bd2246
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: f8d75a2fdb6942e6b63831d206c78e56
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 8eb59b4873e14acfa8e05791ed30c9d1
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: e06247b357b849d3ad1886f797705320
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 9b4424babc284dcabfb44dc725c03f40
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 9ac2faafee484894bb304da02d6ab0b2
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: ce16d33b10e74b129d22378f96ede052
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: aa84fc5fd4434101a481481beb616a7c
- expression: 'last(/APC UPS SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC UPS by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: facbfd1f8bb04401b563c162d7fe13a5
- expression: 'last(/APC UPS SNMP/system.name[sysName.0],#1)<>last(/APC UPS SNMP/system.name[sysName.0],#2) and length(last(/APC UPS SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC UPS by SNMP/system.name[sysName.0],#1)<>last(/APC UPS by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: 4572d871f1d944bb855b93fdc6de5e88
- expression: 'max(/APC UPS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a248194aa30645c5918278b83944b20e
- expression: 'find(/APC UPS SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC UPS by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 834b1a48cbab46a3bfb0209fb4302674
- expression: 'find(/APC UPS SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC UPS by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 80f084121d56464f90e4a3ef9e198889
- expression: 'min(/APC UPS SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3a40f3cb0a3b411697fe8d37f82404d4
- expression: 'last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 63ba879a2a324ffc958b761f2010ac8e
- expression: 'last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: dc90cd795879495fa473b71a2ff57b49
- expression: 'last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 06a853147fe646659d066fff34f67faa
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8a62bc38e49e4779938c45839a190856
- expression: 'last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: ca02e8f92e134dce9834bd1d6f3ab469
- expression: 'last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: 36ad29900db7410782daeddb9d7c648f
- expression: 'last(/APC UPS SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 16e8b3b4d38040a7961b1de4c18a4ea9
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 63c623a2a9af44f38388a17742c87486
- expression: 'min(/APC UPS SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: feeb23a58ccb4ec1bed9d61f5d2ffc9e
- expression: 'min(/APC UPS SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1636,6 +1634,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: e1b2126fa06d44e3b0984f5bb904cd9a
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS by SNMP'
+ name: Output
valuemaps:
-
uuid: a808aadebf964e0cb6b8724bf1165013
@@ -1811,7 +1939,7 @@ zabbix_export:
triggers:
-
uuid: b0959bdb606542bcb2952e820ac972c9
- expression: '(last(/APC UPS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC UPS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1820,7 +1948,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC UPS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1834,7 +1962,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS SNMP'
+ host: 'APC UPS by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: d4b2320e0515407cb32afa388f91cd29
@@ -1843,13 +1971,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS SNMP'
+ host: 'APC UPS by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS SNMP'
+ host: 'APC UPS by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 4988c266dc15493592112371b061f9e2
@@ -1858,11 +1986,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS SNMP'
+ host: 'APC UPS by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS SNMP'
+ host: 'APC UPS by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_symmetra_lx_snmp/README.md b/templates/power/apc/apc_ups_symmetra_lx_snmp/README.md
index 0b3461c841b..e453cc69257 100644
--- a/templates/power/apc/apc_ups_symmetra_lx_snmp/README.md
+++ b/templates/power/apc/apc_ups_symmetra_lx_snmp/README.md
@@ -1,9 +1,9 @@
-# APC UPS Symmetra LX SNMP
+# APC UPS Symmetra LX by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC UPS Symmetra LX by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Symmetra LX SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra LX SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra LX SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra LX SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Symmetra LX SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra LX SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra LX SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Symmetra LX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Symmetra LX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Symmetra LX SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Symmetra LX SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra LX SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra LX SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra LX SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Symmetra LX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Symmetra LX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Symmetra LX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Symmetra LX SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra LX SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Symmetra LX SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Symmetra LX by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra LX by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra LX by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra LX by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Symmetra LX by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra LX by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra LX by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Symmetra LX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Symmetra LX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Symmetra LX by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Symmetra LX by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra LX by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra LX by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra LX by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Symmetra LX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Symmetra LX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Symmetra LX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Symmetra LX by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra LX by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Symmetra LX by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_symmetra_lx_snmp/template_power_apc_ups_symmetra_lx_snmp.yaml b/templates/power/apc/apc_ups_symmetra_lx_snmp/template_power_apc_ups_symmetra_lx_snmp.yaml
index 8918c875069..f4967b3fdfc 100644
--- a/templates/power/apc/apc_ups_symmetra_lx_snmp/template_power_apc_ups_symmetra_lx_snmp.yaml
+++ b/templates/power/apc/apc_ups_symmetra_lx_snmp/template_power_apc_ups_symmetra_lx_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:56:59Z'
+ date: '2022-10-27T14:24:42Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 0b9a899ff8f1467c9fdf999d02b9fd77
- template: 'APC UPS Symmetra LX SNMP'
- name: 'APC UPS Symmetra LX SNMP'
+ template: 'APC UPS Symmetra LX by SNMP'
+ name: 'APC UPS Symmetra LX by SNMP'
description: |
Template Power APC UPS Symmetra LX
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: fdece80f2fc44ac1974fafe190ce186f
- expression: 'last(/APC UPS Symmetra LX SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: a1bd434a249b48b2ac0ef69ede417a72
- expression: 'last(/APC UPS Symmetra LX SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: 955d79a0cf5447dd9a11d4608758e983
- expression: 'last(/APC UPS Symmetra LX SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 3ca8156ecc1c4ee4b5623c4a085b993f
- expression: 'last(/APC UPS Symmetra LX SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 5b43659a10644a51861282bc72116f9f
- expression: 'min(/APC UPS Symmetra LX SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra LX by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: 94a5c26b89e2416f96b61bbfc6e60a97
- expression: 'min(/APC UPS Symmetra LX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC UPS Symmetra LX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: 2b640b94d48446609802ce6e57c7bd46
- expression: 'min(/APC UPS Symmetra LX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC UPS Symmetra LX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra LX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: 34562b5c734d492c89c386902dfd6e90
- expression: 'min(/APC UPS Symmetra LX SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra LX by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: 6ade2b9fb9ad432596d16b3df6237ec4
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: da9a0fa7669e454b8ba44c0458a94ea8
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: 01a2bcb5f20b4fe889a48e4bed2a2a63
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: d0b154dd92424af8bb841d91d4e7ddd5
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: afc071d0ccfb4226a3c5ee3058270937
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 12259f4a961a40b39de12d0202d41c56
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: ef9d1e4b1ec244f6bcf36d19a9e7c9c7
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: c673928e7b764b5db0fa3168edd2cc67
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: c9b24aa16e124d8c9cd6cfb188ded816
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 02904426801d4d42b3f634267f8697e7
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: fa08f8a60c2c4d88a3f9ebf317fcd06e
- expression: 'last(/APC UPS Symmetra LX SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: 61d0836efd33437894e1edd595373f1e
- expression: 'last(/APC UPS Symmetra LX SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra LX SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra LX SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra LX by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra LX by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: aeaaa7e2bd2d46a481f9d8b33ec18cb5
- expression: 'max(/APC UPS Symmetra LX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Symmetra LX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2ea1a8d2bd3746dabafed72e1f6216fd
- expression: 'find(/APC UPS Symmetra LX SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC UPS Symmetra LX by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3870634ad8c1414dabeebc10c510fba3
- expression: 'find(/APC UPS Symmetra LX SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC UPS Symmetra LX by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 730bdb68d90f4bc6aaf6cb22e04e1845
- expression: 'min(/APC UPS Symmetra LX SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra LX by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 97b4078788d244d0b501e9465c659ff7
- expression: 'last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 86cd9908372045618672d6ff82bca705
- expression: 'last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: 4ba13efc27da411785410109340b6a26
- expression: 'last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 14e6acae826e4e87b68c04beee67a5cb
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3155c8cf446c40d896755a25a46ec90b
- expression: 'last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: 9ef9a4dc80c84087b44b5f0e8aa94202
- expression: 'last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: 74a3585b0cc74a4887eb3683fb1e6f64
- expression: 'last(/APC UPS Symmetra LX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Symmetra LX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: b4f271299e9a47bf8543863a7d9be479
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 90e3258375e047b594deb0ecf7300c22
- expression: 'min(/APC UPS Symmetra LX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Symmetra LX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b8c42d5d66d9403eba697920439ae956
- expression: 'min(/APC UPS Symmetra LX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Symmetra LX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra LX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: fbf5cb79251d48bdbe4bc7b81dbd2d65
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra LX by SNMP'
+ name: Output
valuemaps:
-
uuid: aec3362485c242ec928cb8ecfe5e61cf
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 9d0c32f93c0c44f69b54c91fabfa1529
- expression: '(last(/APC UPS Symmetra LX SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra LX SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra LX SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra LX SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC UPS Symmetra LX by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra LX by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra LX by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra LX by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC UPS Symmetra LX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Symmetra LX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra LX SNMP'
+ host: 'APC UPS Symmetra LX by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 2ef61780d42c4d61bcb89faf08691d08
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra LX SNMP'
+ host: 'APC UPS Symmetra LX by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Symmetra LX SNMP'
+ host: 'APC UPS Symmetra LX by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 4432ed7ca97d4d989b253383037f48ee
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra LX SNMP'
+ host: 'APC UPS Symmetra LX by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Symmetra LX SNMP'
+ host: 'APC UPS Symmetra LX by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_symmetra_rm_snmp/README.md b/templates/power/apc/apc_ups_symmetra_rm_snmp/README.md
index 79088522a9f..1be066ff96a 100644
--- a/templates/power/apc/apc_ups_symmetra_rm_snmp/README.md
+++ b/templates/power/apc/apc_ups_symmetra_rm_snmp/README.md
@@ -1,9 +1,9 @@
-# APC UPS Symmetra RM SNMP
+# APC UPS Symmetra RM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC UPS Symmetra RM by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -53,8 +53,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -110,43 +110,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Symmetra RM SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RM SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RM SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RM SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Symmetra RM SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RM SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RM SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Symmetra RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Symmetra RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Symmetra RM SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Symmetra RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Symmetra RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Symmetra RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Symmetra RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Symmetra RM SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RM SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Symmetra RM SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Symmetra RM by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RM by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RM by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RM by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Symmetra RM by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RM by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RM by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Symmetra RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Symmetra RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Symmetra RM by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Symmetra RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Symmetra RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Symmetra RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Symmetra RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Symmetra RM by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RM by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Symmetra RM by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_symmetra_rm_snmp/template_power_apc_ups_symmetra_rm_snmp.yaml b/templates/power/apc/apc_ups_symmetra_rm_snmp/template_power_apc_ups_symmetra_rm_snmp.yaml
index bf0869a8ab9..1704a5bef9c 100644
--- a/templates/power/apc/apc_ups_symmetra_rm_snmp/template_power_apc_ups_symmetra_rm_snmp.yaml
+++ b/templates/power/apc/apc_ups_symmetra_rm_snmp/template_power_apc_ups_symmetra_rm_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:00Z'
+ date: '2022-10-27T14:24:45Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 1dac0a88c3774315b90622a48031e369
- template: 'APC UPS Symmetra RM SNMP'
- name: 'APC UPS Symmetra RM SNMP'
+ template: 'APC UPS Symmetra RM by SNMP'
+ name: 'APC UPS Symmetra RM by SNMP'
description: |
Template Power APC UPS Symmetra RM
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: dbfdc4e6eaca4d65adcde13b0682c1c2
- expression: 'last(/APC UPS Symmetra RM SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: 0af287bae1ee44ba997a02ae585bdd4b
- expression: 'last(/APC UPS Symmetra RM SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: aedb557acbe44390809a27b95919e10f
- expression: 'last(/APC UPS Symmetra RM SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 1afe1859563f481faa623781028a38ca
- expression: 'last(/APC UPS Symmetra RM SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 0b4490eaaf964fdabf228d34d2992d30
- expression: 'min(/APC UPS Symmetra RM SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra RM by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: af166242e3674f2da489a232c7bba6f1
- expression: 'min(/APC UPS Symmetra RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC UPS Symmetra RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: 3b51bbae66914b19a93e7a2da289b056
- expression: 'min(/APC UPS Symmetra RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC UPS Symmetra RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: a25499c49d0043cda248136eb6307ef9
- expression: 'min(/APC UPS Symmetra RM SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra RM by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: f7b0e2f05c9b4b14916f99ecb89fcd49
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: 77081726414047a5a1c698fcfbf19e73
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: 87beb54ac57848e3896fd715a5918a88
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 5f46c436fab741ec86cb32339e8bd7b4
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: a7457e3d6c6f4e99a3ccc08a1436d34a
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 976395b6acea4f5cb4f7f3d4f0bc67af
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: 72c9677a2157412ebd14004a5e024a3a
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 75d189cd8b5944c4b7987931c834e949
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: 24e1cfde22da48b0bf28ca2cdf8cd917
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 4fff7b4a29b84cdea245b2704e357f5d
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 647178a4cb674815a65517c073b4adee
- expression: 'last(/APC UPS Symmetra RM SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: e3cf119c19b54dddb3d26d9b789ea4f5
- expression: 'last(/APC UPS Symmetra RM SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RM SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RM SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RM by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RM by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: 56f25581382a43efbddd4aba44aa86b3
- expression: 'max(/APC UPS Symmetra RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Symmetra RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 002caa5fac72437187ab9711eb2fc7ad
- expression: 'find(/APC UPS Symmetra RM SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC UPS Symmetra RM by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9ca2e1e1a81e4e2388f735c03f9bc1de
- expression: 'find(/APC UPS Symmetra RM SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC UPS Symmetra RM by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b9a868a2f4a0410e9a03744eef9a5515
- expression: 'min(/APC UPS Symmetra RM SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra RM by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e6fa00989994e6f885c9ce2fde6ab24
- expression: 'last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: b8b78dcb3f6d47e583565b7588cf9f4c
- expression: 'last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: ba421cf1871a4bcabb06f92be0a983dc
- expression: 'last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 8243825c5bbc42639f8796d1082a4a05
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 97ef6f2fc4374174912b16db90b615a8
- expression: 'last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: 39db14da83714689b6bac140a9347c64
- expression: 'last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: d318122e192a401c95f24ad17d3bda93
- expression: 'last(/APC UPS Symmetra RM SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Symmetra RM by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 6d6d6b6a71434315a0bbc38b56d47f49
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 341c10188b984ce7aac7bb995847b69e
- expression: 'min(/APC UPS Symmetra RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Symmetra RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 85551dd4ca0b4ef6994348891ad77b57
- expression: 'min(/APC UPS Symmetra RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Symmetra RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RM by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: 3d8fa7f93f9f4a0bbc0b9f70282aa5cd
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra RM by SNMP'
+ name: Output
valuemaps:
-
uuid: 8516e97893ed4f2ebe70766d17eeacde
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: fb2b4e564040422da234cdb309163b7b
- expression: '(last(/APC UPS Symmetra RM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC UPS Symmetra RM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC UPS Symmetra RM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Symmetra RM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra RM SNMP'
+ host: 'APC UPS Symmetra RM by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: d340e1d477bc4bc4b099c94b1fe6d2da
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra RM SNMP'
+ host: 'APC UPS Symmetra RM by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Symmetra RM SNMP'
+ host: 'APC UPS Symmetra RM by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 42f5e7154634464fabafe352508b50db
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra RM SNMP'
+ host: 'APC UPS Symmetra RM by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Symmetra RM SNMP'
+ host: 'APC UPS Symmetra RM by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/power/apc/apc_ups_symmetra_rx_snmp/README.md b/templates/power/apc/apc_ups_symmetra_rx_snmp/README.md
index e39348678d0..dc79b0aa8c0 100644
--- a/templates/power/apc/apc_ups_symmetra_rx_snmp/README.md
+++ b/templates/power/apc/apc_ups_symmetra_rx_snmp/README.md
@@ -1,9 +1,9 @@
-# APC UPS Symmetra RX SNMP
+# APC UPS Symmetra RX by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor APC UPS Symmetra RX by Zabbix SNMP agent.
Note: please, use the latest version of the firmware for your NMC in order for the template to work correctly.
@@ -49,8 +49,8 @@ There are no template links in this template.
|----|-----------|----|----|
|External bad battery packs discovery |<p>Discovery of the number of external defective battery packs.</p> |SNMP |battery.packs.bad.discovery |
|External battery packs discovery |<p>-</p> |SNMP |battery.packs.discovery<p>**Filter**:</p>AND <p>- {#CARTRIDGE_STATUS} NOT_MATCHES_REGEX `^$`</p> |
-|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
-|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity` - NO_DISCOVER</p> |
+|External sensor port 1 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor1.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR1_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
+|External sensor port 2 discovery |<p>uioSensorStatusTable</p> |SNMP |external.sensor2.discovery<p>**Overrides:**</p><p>Temp<br> - {#EXTERNAL_SENSOR2_NAME} MATCHES_REGEX `Temp`<br> - ITEM_PROTOTYPE LIKE `Humidity`<br> - NO_DISCOVER</p> |
|Input phases discovery |<p>The input phase identifier. OID upsPhaseInputPhaseIndex.1.1</p> |SNMP |input.phases.discovery |
|Output phases discovery |<p>The output phase identifier. OID upsPhaseOutputPhaseIndex.1.1</p> |SNMP |output.phases.discovery |
@@ -106,43 +106,43 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Symmetra RX SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RX SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RX SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RX SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
-|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Symmetra RX SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
-|Battery has low capacity |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
-|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RX SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
-|Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RX SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Symmetra RX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
-|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Symmetra RX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
-|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Symmetra RX SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
-|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
-|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
-|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
-|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
-|UPS is Rebooting |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
-|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
-|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
-|UPS is on battery |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
-|UPS is Off |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
-|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
-|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Symmetra RX SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RX SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RX SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RX SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Symmetra RX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Symmetra RX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Symmetra RX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Symmetra RX SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RX SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
-|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Symmetra RX SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
-|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/APC UPS Symmetra RX by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RX by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RX by SNMP/system.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|Battery has an internal error condition |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RX by SNMP/battery.status[upsBasicBatteryStatus])=4` |AVERAGE | |
+|Battery is Low |<p>The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.</p> |`last(/APC UPS Symmetra RX by SNMP/battery.status[upsBasicBatteryStatus])=3` |AVERAGE | |
+|Battery has low capacity |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}` |HIGH | |
+|Battery needs replacement |<p>A battery installed has an internal error condition.</p> |`last(/APC UPS Symmetra RX by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2` |HIGH | |
+|Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RX by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|Unacceptable input voltage |<p>-</p> |`min(/APC UPS Symmetra RX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})` |HIGH | |
+|Unacceptable input frequency |<p>-</p> |`min(/APC UPS Symmetra RX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})` |HIGH | |
+|Output load is high |<p>A battery installed has an internal error condition.</p> |`min(/APC UPS Symmetra RX by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}` |HIGH | |
+|UPS is Timed Sleeping |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=5` |AVERAGE | |
+|UPS is Switched Bypass |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=9` |AVERAGE | |
+|UPS is Software Bypass |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=6` |AVERAGE | |
+|UPS is Sleeping Until Power Return |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=11` |AVERAGE | |
+|UPS is Rebooting |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=8` |AVERAGE | |
+|UPS is On Smart Trim |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=12` |AVERAGE | |
+|UPS is on Smart Boost |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=4` |AVERAGE | |
+|UPS is on battery |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=3` |AVERAGE | |
+|UPS is Off |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=7` |AVERAGE | |
+|UPS is Emergency Static Bypass |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=16` |AVERAGE | |
+|UPS is Hardware Failure Bypass |<p>-</p> |`last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=10` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/APC UPS Symmetra RX by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RX by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RX by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RX by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/APC UPS Symmetra RX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage |<p>-</p> |`min(/APC UPS Symmetra RX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage |<p>-</p> |`min(/APC UPS Symmetra RX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay |<p>The battery cartridge status:</p><p>bit 0 Disconnected</p><p>bit 1 Overvoltage</p><p>bit 2 NeedsReplacement</p><p>bit 3 OvertemperatureCritical</p><p>bit 4 Charger</p><p>bit 5 TemperatureSensor</p><p>bit 6 BusSoftStart</p><p>bit 7 OvertemperatureWarning</p><p>bit 8 GeneralError</p><p>bit 9 Communication</p><p>bit 10 DisconnectedFrame</p><p>bit 11 FirmwareMismatch</p> |`find(/APC UPS Symmetra RX by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0` |WARNING | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature |<p>-</p> |`min(/APC UPS Symmetra RX by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}` |HIGH | |
+|{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay |<p>The battery cartridge health.</p><p> bit 0 Battery lifetime okay</p><p> bit 1 Battery lifetime near end, order replacement cartridge</p><p> bit 2 Battery lifetime exceeded, replace battery</p><p> bit 3 Battery lifetime near end acknowledged, order replacement cartridge</p><p> bit 4 Battery lifetime exceeded acknowledged, replace battery</p><p> bit 5 Battery measured lifetime near end, order replacement cartridge</p><p> bit 6 Battery measured lifetime near end acknowledged, order replacement cartridge</p> |`find(/APC UPS Symmetra RX by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1` |WARNING | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3` |HIGH | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable |<p>The external sensor does not work or is not connected.</p> |`last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4` |INFO | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning |<p>The external sensor has returned a value greater than the warning threshold.</p> |`last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2` |AVERAGE | |
+|{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical |<p>The external sensor has returned a value greater than the critical threshold.</p> |`last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3` |HIGH | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/420730-discussion-thread-for-official-zabbix-template-apc-ups).
diff --git a/templates/power/apc/apc_ups_symmetra_rx_snmp/template_power_apc_ups_symmetra_rx_snmp.yaml b/templates/power/apc/apc_ups_symmetra_rx_snmp/template_power_apc_ups_symmetra_rx_snmp.yaml
index d8fa66a22b5..23305e2eb26 100644
--- a/templates/power/apc/apc_ups_symmetra_rx_snmp/template_power_apc_ups_symmetra_rx_snmp.yaml
+++ b/templates/power/apc/apc_ups_symmetra_rx_snmp/template_power_apc_ups_symmetra_rx_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:57:01Z'
+ date: '2022-10-27T14:24:44Z'
template_groups:
-
uuid: 3dcd5bbe90534f9e8eb5c2d53756af63
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 4ffb0f9103084384a98379ed533865e9
- template: 'APC UPS Symmetra RX SNMP'
- name: 'APC UPS Symmetra RX SNMP'
+ template: 'APC UPS Symmetra RX by SNMP'
+ name: 'APC UPS Symmetra RX by SNMP'
description: |
Template Power APC UPS Symmetra RX
@@ -54,7 +54,7 @@ zabbix_export:
triggers:
-
uuid: 5626e87891ec4c28a17a6b5965b47e46
- expression: 'last(/APC UPS Symmetra RX SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/battery.capacity[upsHighPrecBatteryCapacity]) < {$BATTERY.CAPACITY.MIN.WARN}'
name: 'Battery has low capacity'
event_name: 'Battery has low capacity (below {$BATTERY.CAPACITY.MIN.WARN}%)'
opdata: 'Current capacity: {ITEM.LASTVALUE1}'
@@ -135,7 +135,7 @@ zabbix_export:
triggers:
-
uuid: a74eccd4442c401a98ac3c80dd3baa13
- expression: 'last(/APC UPS Symmetra RX SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/battery.replace_indicator[upsAdvBatteryReplaceIndicator])=2'
name: 'Battery needs replacement'
priority: HIGH
description: 'A battery installed has an internal error condition.'
@@ -202,7 +202,7 @@ zabbix_export:
triggers:
-
uuid: 107454c372cb413bad4d4a807c254ae0
- expression: 'last(/APC UPS Symmetra RX SNMP/battery.status[upsBasicBatteryStatus])=4'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/battery.status[upsBasicBatteryStatus])=4'
name: 'Battery has an internal error condition'
priority: AVERAGE
description: 'A battery installed has an internal error condition.'
@@ -212,7 +212,7 @@ zabbix_export:
value: notice
-
uuid: 4a410279dba04d37924eade4bb927228
- expression: 'last(/APC UPS Symmetra RX SNMP/battery.status[upsBasicBatteryStatus])=3'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/battery.status[upsBasicBatteryStatus])=3'
name: 'Battery is Low'
priority: AVERAGE
description: 'The UPS will be unable to sustain the current load, and its services will be lost if power is not restored.'
@@ -249,7 +249,7 @@ zabbix_export:
triggers:
-
uuid: 225ccc34992f4c718277b436bfecdc72
- expression: 'min(/APC UPS Symmetra RX SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra RX by SNMP/battery.temperature[upsHighPrecBatteryTemperature],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: 'Battery has high temperature'
event_name: 'Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -355,7 +355,7 @@ zabbix_export:
triggers:
-
uuid: 03b674d215604dc8acc3449610b05878
- expression: 'min(/APC UPS Symmetra RX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
+ expression: 'min(/APC UPS Symmetra RX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) > {$UPS.INPUT_FREQ.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/input.frequency[upsHighPrecInputFrequency],{$TIME.PERIOD}) < {$UPS.INPUT_FREQ.MIN.WARN})'
name: 'Unacceptable input frequency'
event_name: 'Unacceptable input frequency (out of range {$UPS.INPUT_FREQ.MIN.WARN}-{$UPS.INPUT_FREQ.MAX.WARN}Hz for {$TIME.PERIOD})'
opdata: 'Current frequency: {ITEM.LASTVALUE1}'
@@ -392,7 +392,7 @@ zabbix_export:
triggers:
-
uuid: bf495f3ffefd4e65af488d91b360539c
- expression: 'min(/APC UPS Symmetra RX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
+ expression: 'min(/APC UPS Symmetra RX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > 0 and (min(/APC UPS Symmetra RX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/input.voltage[upsHighPrecInputLineVoltage],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN})'
name: 'Unacceptable input voltage'
event_name: 'Unacceptable input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current voltage: {ITEM.LASTVALUE1}'
@@ -455,7 +455,7 @@ zabbix_export:
triggers:
-
uuid: f2790aa869724c5bbeff6031561f2ca4
- expression: 'min(/APC UPS Symmetra RX SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra RX by SNMP/output.load[upsHighPrecOutputLoad],{$TIME.PERIOD}) > {$UPS.OUTPUT.MAX.WARN}'
name: 'Output load is high'
event_name: 'Output load is high (over {$UPS.OUTPUT.MAX.WARN}% for {$TIME.PERIOD})'
opdata: 'Current load: {ITEM.LASTVALUE1}'
@@ -498,7 +498,7 @@ zabbix_export:
triggers:
-
uuid: 48a2bee152664ede98bed55c05cc437d
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=16'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=16'
name: 'UPS is Emergency Static Bypass'
priority: AVERAGE
tags:
@@ -507,7 +507,7 @@ zabbix_export:
value: notice
-
uuid: ccd80d5877e0401b8f56f22ca2da2f94
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=10'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=10'
name: 'UPS is Hardware Failure Bypass'
priority: AVERAGE
tags:
@@ -516,7 +516,7 @@ zabbix_export:
value: notice
-
uuid: e54fd69ac4354716a107d4d094b387f0
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=7'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=7'
name: 'UPS is Off'
priority: AVERAGE
tags:
@@ -525,7 +525,7 @@ zabbix_export:
value: notice
-
uuid: 92df44ef170d471394f4cf8ff6882c39
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=3'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=3'
name: 'UPS is on battery'
priority: AVERAGE
tags:
@@ -534,7 +534,7 @@ zabbix_export:
value: notice
-
uuid: b6f6c160466e43d8b7f210b2efdd8ca3
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=4'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=4'
name: 'UPS is on Smart Boost'
priority: AVERAGE
tags:
@@ -543,7 +543,7 @@ zabbix_export:
value: notice
-
uuid: 7d6323e1a03a48efb9f349ecd7e10153
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=12'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=12'
name: 'UPS is On Smart Trim'
priority: AVERAGE
tags:
@@ -552,7 +552,7 @@ zabbix_export:
value: notice
-
uuid: 18a31f11313b47c8ab9e9cd4791c1532
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=8'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=8'
name: 'UPS is Rebooting'
priority: AVERAGE
tags:
@@ -561,7 +561,7 @@ zabbix_export:
value: notice
-
uuid: 142e25b05d1547f0a683f6caee773ef5
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=11'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=11'
name: 'UPS is Sleeping Until Power Return'
priority: AVERAGE
tags:
@@ -570,7 +570,7 @@ zabbix_export:
value: notice
-
uuid: b6e22e8295c84fbebb8061c96ddd75f9
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=6'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=6'
name: 'UPS is Software Bypass'
priority: AVERAGE
tags:
@@ -579,7 +579,7 @@ zabbix_export:
value: notice
-
uuid: 1c97c8ca6d6640fe829bf896f989bd91
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=9'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=9'
name: 'UPS is Switched Bypass'
priority: AVERAGE
tags:
@@ -588,7 +588,7 @@ zabbix_export:
value: notice
-
uuid: 0683dbba9f4b4480ba15e040b8b83211
- expression: 'last(/APC UPS Symmetra RX SNMP/output.status[upsBasicOutputStatus])=5'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/output.status[upsBasicOutputStatus])=5'
name: 'UPS is Timed Sleeping'
priority: AVERAGE
tags:
@@ -788,7 +788,7 @@ zabbix_export:
triggers:
-
uuid: 5224767a1bee42738c49361ddabfed4b
- expression: 'last(/APC UPS Symmetra RX SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RX SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RX SNMP/system.name[sysName.0]))>0'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/system.name[sysName.0],#1)<>last(/APC UPS Symmetra RX by SNMP/system.name[sysName.0],#2) and length(last(/APC UPS Symmetra RX by SNMP/system.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -905,7 +905,7 @@ zabbix_export:
triggers:
-
uuid: c0ad0941746546aeb6de2fee087c8252
- expression: 'max(/APC UPS Symmetra RX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Symmetra RX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1021,7 +1021,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3a48257337a84a2296db92410a8aed8c
- expression: 'find(/APC UPS Symmetra RX SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
+ expression: 'find(/APC UPS Symmetra RX by SNMP/battery.pack.cartridge_health[upsHighPrecBatteryPackCartridgeHealth.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0)[0|1]{15}$")=1'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery lifetime is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4498d376328e405bad7da5f1832cde8a
- expression: 'find(/APC UPS Symmetra RX SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
+ expression: 'find(/APC UPS Symmetra RX by SNMP/battery.pack.status[upsHighPrecBatteryPackCartridgeStatus.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],,"regexp","^(0{16})$")=0'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery status is not okay'
opdata: 'Current bit set: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1127,7 +1127,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f710e2b952054f35ab6e3e8e90ab7f83
- expression: 'min(/APC UPS Symmetra RX SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
+ expression: 'min(/APC UPS Symmetra RX by SNMP/battery.temperature[upsHighPrecBatteryPackTemperature.{#BATTERY_PACK}.{#CARTRIDGE_INDEX}],{$TIME.PERIOD}) > {$BATTERY.TEMP.MAX.WARN}'
name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature'
event_name: '{#BATTERY_PACK}.{#CARTRIDGE_INDEX}: Battery has high temperature (over {$BATTERY.TEMP.MAX.WARN}℃ for {$TIME.PERIOD})'
opdata: 'Current temperature: {ITEM.LASTVALUE1}'
@@ -1224,7 +1224,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0de21ba7495d41f4834170122620c37d
- expression: 'last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1234,7 +1234,7 @@ zabbix_export:
value: notice
-
uuid: 69fbc11262f74fdfb49da43bb59c1810
- expression: 'last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1244,7 +1244,7 @@ zabbix_export:
value: notice
-
uuid: 0ce46cad353c4299ad5540a831b5c467
- expression: 'last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.1.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR1_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1292,7 +1292,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 7cd4c33584004a6d811478e8a83e0898
@@ -1360,7 +1359,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f27f80f391a04927bb138ba66d48d364
- expression: 'last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=3'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Critical'
priority: HIGH
description: 'The external sensor has returned a value greater than the critical threshold.'
@@ -1370,7 +1369,7 @@ zabbix_export:
value: notice
-
uuid: a84e1b5140b643ad8bee020d74821255
- expression: 'last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=4'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Not Applicable'
priority: INFO
description: 'The external sensor does not work or is not connected.'
@@ -1380,7 +1379,7 @@ zabbix_export:
value: notice
-
uuid: b67ed4a3ce5a49e4ac4079e258d7fe7c
- expression: 'last(/APC UPS Symmetra RX SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
+ expression: 'last(/APC UPS Symmetra RX by SNMP/external.sensor.status[uioSensorStatusAlarmStatus.2.{#SNMPINDEX}])=2'
name: '{#EXTERNAL_SENSOR2_NAME}: Sensor has status Warning'
priority: AVERAGE
description: 'The external sensor has returned a value greater than the warning threshold.'
@@ -1428,7 +1427,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Humidity
- status: ENABLED
discover: NO_DISCOVER
-
uuid: 88032aa9a832464ca2a077271113e7c9
@@ -1490,7 +1488,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 212cf86650fc4c189115da565111f5d3
- expression: 'min(/APC UPS Symmetra RX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Symmetra RX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/phase.input.voltage[upsPhaseInputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} input voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1583,7 +1581,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 47069f8d431f45d490674d7ba01d2bb2
- expression: 'min(/APC UPS Symmetra RX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
+ expression: 'min(/APC UPS Symmetra RX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) > {$UPS.INPUT_VOLT.MAX.WARN} or max(/APC UPS Symmetra RX by SNMP/phase.output.voltage[upsPhaseOutputVoltage.1.1.{#PHASEINDEX}],{$TIME.PERIOD}) < {$UPS.INPUT_VOLT.MIN.WARN}'
name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage'
event_name: '{#PHASEINDEX}: Unacceptable phase {#PHASEINDEX} output voltage (out of range {$UPS.INPUT_VOLT.MIN.WARN}-{$UPS.INPUT_VOLT.MAX.WARN}V for {$TIME.PERIOD})'
opdata: 'Current phase {#PHASEINDEX} voltage: {ITEM.LASTVALUE1}'
@@ -1639,6 +1637,136 @@ zabbix_export:
macro: '{$UPS.OUTPUT.MAX.WARN}'
value: '80'
description: 'Maximum output load in % for trigger expression.'
+ dashboards:
+ -
+ uuid: 6819b4e7963340438675de6c3f72bb4f
+ name: 'UPS Summary'
+ pages:
+ -
+ widgets:
+ -
+ type: PLAIN_TEXT
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ key: 'system.net.uptime[sysUpTime.0]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ key: 'input.fail[upsAdvInputLineFailCause]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ key: 'output.status[upsBasicOutputStatus]'
+ -
+ type: PLAIN_TEXT
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ key: 'battery.status[upsBasicBatteryStatus]'
+ -
+ type: PLAIN_TEXT
+ x: '8'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ key: 'battery.runtime_remaining[upsAdvBatteryRunTimeRemaining]'
+ -
+ type: PLAIN_TEXT
+ x: '16'
+ 'y': '5'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: ITEM
+ name: itemids
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ key: 'battery.last_replace_date[upsBasicBatteryLastReplaceDate]'
+ -
+ type: GRAPH_CLASSIC
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ name: 'Capacity of the UPS batteries'
+ -
+ type: GRAPH_CLASSIC
+ x: '8'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ name: Voltage
+ -
+ type: GRAPH_CLASSIC
+ x: '16'
+ 'y': '10'
+ width: '8'
+ height: '5'
+ fields:
+ -
+ type: INTEGER
+ name: source_type
+ value: '0'
+ -
+ type: GRAPH
+ name: graphid
+ value:
+ host: 'APC UPS Symmetra RX by SNMP'
+ name: Output
valuemaps:
-
uuid: e2877a188bd24918992f8c7878550924
@@ -1814,7 +1942,7 @@ zabbix_export:
triggers:
-
uuid: 990c0545543c42a78022589838a8a1ff
- expression: '(last(/APC UPS Symmetra RX SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RX SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RX SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RX SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/APC UPS Symmetra RX by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/APC UPS Symmetra RX by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/APC UPS Symmetra RX by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/APC UPS Symmetra RX by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1823,7 +1951,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/APC UPS Symmetra RX SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/APC UPS Symmetra RX by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -1837,7 +1965,7 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra RX SNMP'
+ host: 'APC UPS Symmetra RX by SNMP'
key: 'battery.capacity[upsHighPrecBatteryCapacity]'
-
uuid: 782c8a349b7f4f93a65aeaa058454b14
@@ -1846,13 +1974,13 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra RX SNMP'
+ host: 'APC UPS Symmetra RX by SNMP'
key: 'output.current[upsHighPrecOutputCurrent]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Symmetra RX SNMP'
+ host: 'APC UPS Symmetra RX by SNMP'
key: 'output.load[upsHighPrecOutputLoad]'
-
uuid: 8bc9d8e4bb284134b67498daccb85d5e
@@ -1861,11 +1989,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'APC UPS Symmetra RX SNMP'
+ host: 'APC UPS Symmetra RX by SNMP'
key: 'input.voltage[upsHighPrecInputLineVoltage]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'APC UPS Symmetra RX SNMP'
+ host: 'APC UPS Symmetra RX by SNMP'
key: 'output.voltage[upsHighPrecOutputVoltage]'
diff --git a/templates/san/huawei_5300v5_snmp/README.md b/templates/san/huawei_5300v5_snmp/README.md
index c1694fa84fc..0c8c24a46a5 100644
--- a/templates/san/huawei_5300v5_snmp/README.md
+++ b/templates/san/huawei_5300v5_snmp/README.md
@@ -1,9 +1,9 @@
-# Huawei OceanStor 5300 V5 SNMP
+# Huawei OceanStor 5300 V5 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor SAN Huawei OceanStor 5300 V5 by Zabbix SNMP agent.
This template was tested on:
@@ -127,39 +127,39 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Controller {#ID}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerCPUUsage, "{#ID}"],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|Node {#NODE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwPerfNodeCPUUsage, "{#NODE}"],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Huawei OceanStor 5300 V5 SNMP/system.name,#1)<>last(/Huawei OceanStor 5300 V5 SNMP/system.name,#2) and length(last(/Huawei OceanStor 5300 V5 SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|OceanStor 5300 V5: Storage version has been changed |<p>OceanStor 5300 V5 version has changed. Ack to close.</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[version],#1)<>last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[version],#2) and length(last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[version]))>0` |INFO |<p>Manual close: YES</p> |
-|Controller {#ID}: Memory usage is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerMemoryUsage, "{#ID}"],{$HUAWEI.5300.MEM.MAX.TIME})>{$HUAWEI.5300.MEM.MAX.WARN}` |AVERAGE | |
-|Controller {#ID}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerHealthStatus, "{#ID}"])<>1` |HIGH | |
-|Controller {#ID}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerRunningStatus, "{#ID}"])<>27` |AVERAGE | |
-|Controller {#ID}: Role has been changed |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#1)<>last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#2)` |WARNING |<p>Manual close: YES</p> |
-|Enclosure {#NAME}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoEnclosureHealthStatus, "{#NAME}"])<>1` |HIGH | |
-|Enclosure {#NAME}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoEnclosureRunningStatus, "{#NAME}"])<>27` |AVERAGE | |
-|Enclosure {#NAME}: Temperature is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoEnclosureTemperature, "{#NAME}"],{$HUAWEI.5300.TEMP.MAX.TIME})>{$HUAWEI.5300.TEMP.MAX.WARN}` |HIGH | |
-|FAN {#ID} on {#LOCATION}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoFanHealthStatus, "{#ID}:{#LOCATION}"])<>1` |HIGH | |
-|FAN {#ID} on {#LOCATION}: Running status is not Running |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoFanRunningStatus, "{#ID}:{#LOCATION}"])<>2` |AVERAGE | |
-|BBU {#ID} on {#LOCATION}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoBBUHealthStatus, "{#ID}:{#LOCATION}"])<>1` |HIGH | |
-|BBU {#ID} on {#LOCATION}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoBBURunningStatus, "{#ID}:{#LOCATION}"])<>2` |AVERAGE | |
-|Disk {#MODEL} on {#LOCATION}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoDiskHealthStatus, "{#ID}"])<>1` |HIGH | |
-|Disk {#MODEL} on {#LOCATION}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoDiskRunningStatus, "{#ID}"])<>27` |AVERAGE | |
-|Disk {#MODEL} on {#LOCATION}: Temperature is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoDiskTemperature, "{#ID}"],{$HUAWEI.5300.DISK.TEMP.MAX.TIME})>{$HUAWEI.5300.DISK.TEMP.MAX.WARN:"{#MODEL}"}` |HIGH | |
-|Node {#NODE}: Average I/O latency is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwPerfNodeDelay, "{#NODE}"],{$HUAWEI.5300.NODE.IO.DELAY.MAX.TIME})>{$HUAWEI.5300.NODE.IO.DELAY.MAX.WARN}` |WARNING | |
-|LUN {#NAME}: Status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwStorageLunStatus, "{#NAME}"])<>1` |AVERAGE | |
-|LUN {#NAME}: Average I/O response time is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwPerfLunAverageIOResponseTime, "{#NAME}"],{$HUAWEI.5300.LUN.IO.TIME.MAX.TIME})>{$HUAWEI.5300.LUN.IO.TIME.MAX.WARN}` |WARNING | |
-|Pool {#NAME}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoStoragePoolHealthStatus, "{#NAME}"])<>1` |HIGH | |
-|Pool {#NAME}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoStoragePoolRunningStatus, "{#NAME}"])<>27` |AVERAGE | |
-|Pool {#NAME}: Used capacity is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoStoragePoolFreeCapacityPct, "{#NAME}"],{$HUAWEI.5300.POOL.CAPACITY.THRESH.TIME})>{#THRESHOLD}` |AVERAGE | |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Huawei OceanStor 5300 V5 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei OceanStor 5300 V5 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei OceanStor 5300 V5 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei OceanStor 5300 V5 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Huawei OceanStor 5300 V5 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Huawei OceanStor 5300 V5 SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Huawei OceanStor 5300 V5 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei OceanStor 5300 V5 SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Huawei OceanStor 5300 V5 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Controller {#ID}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerCPUUsage, "{#ID}"],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|Node {#NODE}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwPerfNodeCPUUsage, "{#NODE}"],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/system.name,#1)<>last(/Huawei OceanStor 5300 V5 by SNMP/system.name,#2) and length(last(/Huawei OceanStor 5300 V5 by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|OceanStor 5300 V5: Storage version has been changed |<p>OceanStor 5300 V5 version has changed. Ack to close.</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[version],#1)<>last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[version],#2) and length(last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[version]))>0` |INFO |<p>Manual close: YES</p> |
+|Controller {#ID}: Memory usage is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerMemoryUsage, "{#ID}"],{$HUAWEI.5300.MEM.MAX.TIME})>{$HUAWEI.5300.MEM.MAX.WARN}` |AVERAGE | |
+|Controller {#ID}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerHealthStatus, "{#ID}"])<>1` |HIGH | |
+|Controller {#ID}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerRunningStatus, "{#ID}"])<>27` |AVERAGE | |
+|Controller {#ID}: Role has been changed |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#1)<>last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#2)` |WARNING |<p>Manual close: YES</p> |
+|Enclosure {#NAME}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoEnclosureHealthStatus, "{#NAME}"])<>1` |HIGH | |
+|Enclosure {#NAME}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoEnclosureRunningStatus, "{#NAME}"])<>27` |AVERAGE | |
+|Enclosure {#NAME}: Temperature is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoEnclosureTemperature, "{#NAME}"],{$HUAWEI.5300.TEMP.MAX.TIME})>{$HUAWEI.5300.TEMP.MAX.WARN}` |HIGH | |
+|FAN {#ID} on {#LOCATION}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoFanHealthStatus, "{#ID}:{#LOCATION}"])<>1` |HIGH | |
+|FAN {#ID} on {#LOCATION}: Running status is not Running |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoFanRunningStatus, "{#ID}:{#LOCATION}"])<>2` |AVERAGE | |
+|BBU {#ID} on {#LOCATION}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoBBUHealthStatus, "{#ID}:{#LOCATION}"])<>1` |HIGH | |
+|BBU {#ID} on {#LOCATION}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoBBURunningStatus, "{#ID}:{#LOCATION}"])<>2` |AVERAGE | |
+|Disk {#MODEL} on {#LOCATION}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoDiskHealthStatus, "{#ID}"])<>1` |HIGH | |
+|Disk {#MODEL} on {#LOCATION}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoDiskRunningStatus, "{#ID}"])<>27` |AVERAGE | |
+|Disk {#MODEL} on {#LOCATION}: Temperature is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoDiskTemperature, "{#ID}"],{$HUAWEI.5300.DISK.TEMP.MAX.TIME})>{$HUAWEI.5300.DISK.TEMP.MAX.WARN:"{#MODEL}"}` |HIGH | |
+|Node {#NODE}: Average I/O latency is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwPerfNodeDelay, "{#NODE}"],{$HUAWEI.5300.NODE.IO.DELAY.MAX.TIME})>{$HUAWEI.5300.NODE.IO.DELAY.MAX.WARN}` |WARNING | |
+|LUN {#NAME}: Status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwStorageLunStatus, "{#NAME}"])<>1` |AVERAGE | |
+|LUN {#NAME}: Average I/O response time is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwPerfLunAverageIOResponseTime, "{#NAME}"],{$HUAWEI.5300.LUN.IO.TIME.MAX.TIME})>{$HUAWEI.5300.LUN.IO.TIME.MAX.WARN}` |WARNING | |
+|Pool {#NAME}: Health status is not Normal |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoStoragePoolHealthStatus, "{#NAME}"])<>1` |HIGH | |
+|Pool {#NAME}: Running status is not Online |<p>-</p> |`last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoStoragePoolRunningStatus, "{#NAME}"])<>27` |AVERAGE | |
+|Pool {#NAME}: Used capacity is too high |<p>-</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoStoragePoolFreeCapacityPct, "{#NAME}"],{$HUAWEI.5300.POOL.CAPACITY.THRESH.TIME})>{#THRESHOLD}` |AVERAGE | |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Huawei OceanStor 5300 V5 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei OceanStor 5300 V5 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei OceanStor 5300 V5 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei OceanStor 5300 V5 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Huawei OceanStor 5300 V5 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Huawei OceanStor 5300 V5 by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Huawei OceanStor 5300 V5 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei OceanStor 5300 V5 by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Huawei OceanStor 5300 V5 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418855-discussion-thread-for-official-zabbix-template-huawei-oceanstor).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418855-discussion-thread-for-official-zabbix-template-huawei-oceanstor).
diff --git a/templates/san/huawei_5300v5_snmp/template_san_huawei_5300v5_snmp.yaml b/templates/san/huawei_5300v5_snmp/template_san_huawei_5300v5_snmp.yaml
index 834fbc5e319..1ae500273e9 100644
--- a/templates/san/huawei_5300v5_snmp/template_san_huawei_5300v5_snmp.yaml
+++ b/templates/san/huawei_5300v5_snmp/template_san_huawei_5300v5_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:19:58Z'
+ date: '2022-10-27T14:34:05Z'
template_groups:
-
uuid: 7c2cb727f85b492d88cd56e17127c64d
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: c5564dd58c394b969d5365cc5de3e7f8
- template: 'Huawei OceanStor 5300 V5 SNMP'
- name: 'Huawei OceanStor 5300 V5 SNMP'
+ template: 'Huawei OceanStor 5300 V5 by SNMP'
+ name: 'Huawei OceanStor 5300 V5 by SNMP'
description: |
The template to monitor SAN Huawei OceanStor 5300 V5 by Zabbix SNMP agent.
@@ -106,7 +106,7 @@ zabbix_export:
triggers:
-
uuid: b6eb791cc14644dfb0a69a2cce150ab1
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[version],#1)<>last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[version],#2) and length(last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[version]))>0'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[version],#1)<>last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[version],#2) and length(last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[version]))>0'
name: 'OceanStor 5300 V5: Storage version has been changed'
event_name: 'OceanStor 5300 V5: Version has changed (new version: {ITEM.VALUE})'
priority: INFO
@@ -134,7 +134,7 @@ zabbix_export:
triggers:
-
uuid: ef6b5dc40f9a49599aae97c2cf68d3cb
- expression: 'max(/Huawei OceanStor 5300 V5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei OceanStor 5300 V5 by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -160,14 +160,14 @@ zabbix_export:
triggers:
-
uuid: c9765f7f271d46c99ad7dd45efa79849
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei OceanStor 5300 V5 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei OceanStor 5300 V5 by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Huawei OceanStor 5300 V5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei OceanStor 5300 V5 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -193,17 +193,17 @@ zabbix_export:
triggers:
-
uuid: b8815a9e952047e09d1e657cea5d538e
- expression: 'avg(/Huawei OceanStor 5300 V5 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Huawei OceanStor 5300 V5 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei OceanStor 5300 V5 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Huawei OceanStor 5300 V5 by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Huawei OceanStor 5300 V5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei OceanStor 5300 V5 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -349,7 +349,7 @@ zabbix_export:
triggers:
-
uuid: 72a31faa805b40e795a57649c724da1e
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/system.name,#1)<>last(/Huawei OceanStor 5300 V5 SNMP/system.name,#2) and length(last(/Huawei OceanStor 5300 V5 SNMP/system.name))>0'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/system.name,#1)<>last(/Huawei OceanStor 5300 V5 by SNMP/system.name,#2) and length(last(/Huawei OceanStor 5300 V5 by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -430,7 +430,7 @@ zabbix_export:
triggers:
-
uuid: b0c4103eac9447ee9f7f31627baf4eea
- expression: 'max(/Huawei OceanStor 5300 V5 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Huawei OceanStor 5300 V5 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -438,7 +438,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Huawei OceanStor 5300 V5 SNMP/icmpping,#3)=0'
+ expression: 'max(/Huawei OceanStor 5300 V5 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -486,7 +486,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fb73cddd30164af8aa243bd3e2b2f803
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoBBUHealthStatus, "{#ID}:{#LOCATION}"])<>1'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoBBUHealthStatus, "{#ID}:{#LOCATION}"])<>1'
name: 'BBU {#ID} on {#LOCATION}: Health status is not Normal'
priority: HIGH
tags:
@@ -526,7 +526,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 15d809b0be1c4d1da9158a83d303789c
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoBBURunningStatus, "{#ID}:{#LOCATION}"])<>2'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoBBURunningStatus, "{#ID}:{#LOCATION}"])<>2'
name: 'BBU {#ID} on {#LOCATION}: Running status is not Online'
priority: AVERAGE
tags:
@@ -562,7 +562,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a51b4e42efaa4924b6c2990c9c0abf30
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerCPUUsage, "{#ID}"],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerCPUUsage, "{#ID}"],5m)>{$CPU.UTIL.CRIT}'
name: 'Controller {#ID}: High CPU utilization'
event_name: 'Controller {#ID}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -599,7 +599,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 52cf517dd30146578b32fd1399ec81cc
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerHealthStatus, "{#ID}"])<>1'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerHealthStatus, "{#ID}"])<>1'
name: 'Controller {#ID}: Health status is not Normal'
priority: HIGH
tags:
@@ -625,7 +625,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8d4fe305737f41a595c1d2efb3e8a153
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerMemoryUsage, "{#ID}"],{$HUAWEI.5300.MEM.MAX.TIME})>{$HUAWEI.5300.MEM.MAX.WARN}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerMemoryUsage, "{#ID}"],{$HUAWEI.5300.MEM.MAX.TIME})>{$HUAWEI.5300.MEM.MAX.WARN}'
name: 'Controller {#ID}: Memory usage is too high'
event_name: 'Controller {#ID}: Memory usage is too high (over {$HUAWEI.5300.MEM.MAX.WARN} for {$HUAWEI.5300.MEM.MAX.TIME})'
priority: AVERAGE
@@ -658,7 +658,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8b8ec3f843e74533a43f24393004cc84
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#1)<>last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#2)'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#1)<>last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerRole, "{#ID}"],#2)'
name: 'Controller {#ID}: Role has been changed'
priority: WARNING
manual_close: 'YES'
@@ -693,7 +693,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6ab64eb5e1c146838ad48b7b9b063587
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoControllerRunningStatus, "{#ID}"])<>27'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoControllerRunningStatus, "{#ID}"])<>27'
name: 'Controller {#ID}: Running status is not Online'
priority: AVERAGE
tags:
@@ -711,7 +711,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwInfoControllerCPUUsage, "{#ID}"]'
-
uuid: 3a0b0a1fcdd9402cb67e93903049b070
@@ -775,7 +775,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fc1c8d30f09c49a3999e282bff6ea370
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoDiskHealthStatus, "{#ID}"])<>1'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoDiskHealthStatus, "{#ID}"])<>1'
name: 'Disk {#MODEL} on {#LOCATION}: Health status is not Normal'
priority: HIGH
tags:
@@ -812,7 +812,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 53aaf06848a346f188799d1cbb5d948f
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoDiskRunningStatus, "{#ID}"])<>27'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoDiskRunningStatus, "{#ID}"])<>27'
name: 'Disk {#MODEL} on {#LOCATION}: Running status is not Online'
priority: AVERAGE
tags:
@@ -841,7 +841,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 906de152d3594f1d8cc15b4b717d6202
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoDiskTemperature, "{#ID}"],{$HUAWEI.5300.DISK.TEMP.MAX.TIME})>{$HUAWEI.5300.DISK.TEMP.MAX.WARN:"{#MODEL}"}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoDiskTemperature, "{#ID}"],{$HUAWEI.5300.DISK.TEMP.MAX.TIME})>{$HUAWEI.5300.DISK.TEMP.MAX.WARN:"{#MODEL}"}'
name: 'Disk {#MODEL} on {#LOCATION}: Temperature is too high'
event_name: 'Disk {#MODEL} on {#LOCATION}: Temperature is too high (over {$HUAWEI.5300.DISK.TEMP.MAX.WARN:"{#MODEL}"} for {$HUAWEI.5300.DISK.TEMP.MAX.TIME})'
opdata: 'Current value: {ITEM.LASTVALUE}'
@@ -889,7 +889,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9b8fb5b02b0b4158a2b564f47281f716
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoEnclosureHealthStatus, "{#NAME}"])<>1'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoEnclosureHealthStatus, "{#NAME}"])<>1'
name: 'Enclosure {#NAME}: Health status is not Normal'
priority: HIGH
tags:
@@ -923,7 +923,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3c430a2073ff42d9908490858c9c2817
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoEnclosureRunningStatus, "{#NAME}"])<>27'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoEnclosureRunningStatus, "{#NAME}"])<>27'
name: 'Enclosure {#NAME}: Running status is not Online'
priority: AVERAGE
tags:
@@ -949,7 +949,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 622fcc16c03e4ba4ad8371ea5c1c314f
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoEnclosureTemperature, "{#NAME}"],{$HUAWEI.5300.TEMP.MAX.TIME})>{$HUAWEI.5300.TEMP.MAX.WARN}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoEnclosureTemperature, "{#NAME}"],{$HUAWEI.5300.TEMP.MAX.TIME})>{$HUAWEI.5300.TEMP.MAX.WARN}'
name: 'Enclosure {#NAME}: Temperature is too high'
event_name: 'Enclosure {#NAME}: Temperature is too high (over {$HUAWEI.5300.TEMP.MAX.WARN} for {$HUAWEI.5300.TEMP.MAX.TIME})'
opdata: 'Current value: {ITEM.LASTVALUE}'
@@ -1000,7 +1000,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1f41c20696d44eb29a1273718c9faf2f
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoFanHealthStatus, "{#ID}:{#LOCATION}"])<>1'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoFanHealthStatus, "{#ID}:{#LOCATION}"])<>1'
name: 'FAN {#ID} on {#LOCATION}: Health status is not Normal'
priority: HIGH
tags:
@@ -1037,7 +1037,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c225c9d853184d579d18c27f7e906fd2
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoFanRunningStatus, "{#ID}:{#LOCATION}"])<>2'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoFanRunningStatus, "{#ID}:{#LOCATION}"])<>2'
name: 'FAN {#ID} on {#LOCATION}: Running status is not Running'
priority: AVERAGE
tags:
@@ -1077,7 +1077,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: aae494cb840049fb83df354c13daaf53
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwPerfLunAverageIOResponseTime, "{#NAME}"],{$HUAWEI.5300.LUN.IO.TIME.MAX.TIME})>{$HUAWEI.5300.LUN.IO.TIME.MAX.WARN}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwPerfLunAverageIOResponseTime, "{#NAME}"],{$HUAWEI.5300.LUN.IO.TIME.MAX.TIME})>{$HUAWEI.5300.LUN.IO.TIME.MAX.WARN}'
name: 'LUN {#NAME}: Average I/O response time is too high'
event_name: 'LUN {#NAME}: Average I/O response time is too high (over {$HUAWEI.5300.LUN.IO.TIME.MAX.WARN}ms for {$HUAWEI.5300.LUN.IO.TIME.MAX.TIME})'
priority: WARNING
@@ -1288,7 +1288,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 757eef04912d44b4b4f9e1abab54fb4d
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwStorageLunStatus, "{#NAME}"])<>1'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwStorageLunStatus, "{#NAME}"])<>1'
name: 'LUN {#NAME}: Status is not Normal'
priority: AVERAGE
tags:
@@ -1303,19 +1303,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunTotalIOPS, "{#NAME}"]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunReadIOPS, "{#NAME}"]'
-
sortorder: '2'
color: F63100
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunWriteIOPS, "{#NAME}"]'
-
uuid: f86ef671d9454bb8878835ba1c96ba20
@@ -1324,19 +1324,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunAverageIOResponseTime, "{#NAME}"]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunAverageReadIOLatency, "{#NAME}"]'
-
sortorder: '2'
color: F63100
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunAverageWriteIOLatency, "{#NAME}"]'
-
uuid: eb10b5b56a964c2ba7870d2dc7cf787b
@@ -1345,19 +1345,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunTotalTraffic, "{#NAME}"]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunReadTraffic, "{#NAME}"]'
-
sortorder: '2'
color: F63100
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfLunWriteTraffic, "{#NAME}"]'
-
uuid: 6b934c21d8c54adf8b2e6d28e250537b
@@ -1388,7 +1388,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8495a55d6549460d9b132675a39b818b
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwPerfNodeCPUUsage, "{#NODE}"],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwPerfNodeCPUUsage, "{#NODE}"],5m)>{$CPU.UTIL.CRIT}'
name: 'Node {#NODE}: High CPU utilization'
event_name: 'Node {#NODE}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -1418,7 +1418,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8f54bfe029fe43c7a049c6a97c8598bf
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwPerfNodeDelay, "{#NODE}"],{$HUAWEI.5300.NODE.IO.DELAY.MAX.TIME})>{$HUAWEI.5300.NODE.IO.DELAY.MAX.WARN}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwPerfNodeDelay, "{#NODE}"],{$HUAWEI.5300.NODE.IO.DELAY.MAX.TIME})>{$HUAWEI.5300.NODE.IO.DELAY.MAX.WARN}'
name: 'Node {#NODE}: Average I/O latency is too high'
event_name: 'Node {#NODE}: Average I/O latency is too high (over {$HUAWEI.5300.NODE.IO.DELAY.MAX.WARN}ms for {$HUAWEI.5300.NODE.IO.DELAY.MAX.TIME})'
priority: WARNING
@@ -1548,7 +1548,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfNodeCPUUsage, "{#NODE}"]'
-
uuid: 1061657e43594c139c49125c1710a10a
@@ -1557,19 +1557,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfNodeTotalIOPS, "{#NODE}"]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfNodeReadIOPS, "{#NODE}"]'
-
sortorder: '2'
color: F63100
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfNodeWriteIOPS, "{#NODE}"]'
-
uuid: 81b69fee1dde49e0b0fbe5c06077d289
@@ -1578,19 +1578,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfNodeTotalTraffic, "{#NODE}"]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfNodeReadTraffic, "{#NODE}"]'
-
sortorder: '2'
color: F63100
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwPerfNodeWriteTraffic, "{#NODE}"]'
-
uuid: 746fcf5132a54e0588713e6313d03e02
@@ -1641,7 +1641,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2ea46713fe664a64a851edca422257f8
- expression: 'min(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoStoragePoolFreeCapacityPct, "{#NAME}"],{$HUAWEI.5300.POOL.CAPACITY.THRESH.TIME})>{#THRESHOLD}'
+ expression: 'min(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoStoragePoolFreeCapacityPct, "{#NAME}"],{$HUAWEI.5300.POOL.CAPACITY.THRESH.TIME})>{#THRESHOLD}'
name: 'Pool {#NAME}: Used capacity is too high'
event_name: 'Pool {#NAME}: Used capacity is too high (over {#THRESHOLD}%)'
priority: AVERAGE
@@ -1676,7 +1676,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8089b48aafb4403fa3187164685f8ca3
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoStoragePoolHealthStatus, "{#NAME}"])<>1'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoStoragePoolHealthStatus, "{#NAME}"])<>1'
name: 'Pool {#NAME}: Health status is not Normal'
priority: HIGH
tags:
@@ -1710,7 +1710,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5ff1d6b5d90040928b90908859c2e8cd
- expression: 'last(/Huawei OceanStor 5300 V5 SNMP/huawei.5300.v5[hwInfoStoragePoolRunningStatus, "{#NAME}"])<>27'
+ expression: 'last(/Huawei OceanStor 5300 V5 by SNMP/huawei.5300.v5[hwInfoStoragePoolRunningStatus, "{#NAME}"])<>27'
name: 'Pool {#NAME}: Running status is not Online'
priority: AVERAGE
tags:
@@ -1771,19 +1771,19 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwInfoStoragePoolTotalCapacity, "{#NAME}"]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwInfoStoragePoolSubscribedCapacity, "{#NAME}"]'
-
sortorder: '2'
color: F63100
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[hwInfoStoragePoolFreeCapacity, "{#NAME}"]'
tags:
-
@@ -2298,7 +2298,7 @@ zabbix_export:
triggers:
-
uuid: 0e3713bdf52e40d692cf256ac2a01988
- expression: '(last(/Huawei OceanStor 5300 V5 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei OceanStor 5300 V5 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei OceanStor 5300 V5 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei OceanStor 5300 V5 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Huawei OceanStor 5300 V5 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Huawei OceanStor 5300 V5 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Huawei OceanStor 5300 V5 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Huawei OceanStor 5300 V5 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2307,7 +2307,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Huawei OceanStor 5300 V5 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Huawei OceanStor 5300 V5 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
@@ -2320,11 +2320,11 @@ zabbix_export:
-
color: 1A7C11
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[totalCapacity]'
-
sortorder: '1'
color: 2774A4
item:
- host: 'Huawei OceanStor 5300 V5 SNMP'
+ host: 'Huawei OceanStor 5300 V5 by SNMP'
key: 'huawei.5300.v5[usedCapacity]'
diff --git a/templates/san/netapp_fas3220_snmp/README.md b/templates/san/netapp_fas3220_snmp/README.md
index ae8a3bee158..ac4a5edc2c8 100644
--- a/templates/san/netapp_fas3220_snmp/README.md
+++ b/templates/san/netapp_fas3220_snmp/README.md
@@ -1,9 +1,9 @@
-# NetApp FAS3220 SNMP
+# NetApp FAS3220 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
The template to monitor SAN NetApp FAS3220 cluster by Zabbix SNMP agent.
@@ -63,7 +63,7 @@ There are no template links in this template.
|----|-----------|----|----|
|Cluster metrics discovery |<p>Discovery of Cluster metrics per node</p> |SNMP |fas3220.cluster.discovery |
|CPU discovery |<p>Discovery of CPU metrics per node</p> |SNMP |fas3220.cpu.discovery |
-|Filesystems discovery |<p>Filesystems discovery with filter.</p> |SNMP |fas3220.fs.discovery<p>**Filter**:</p>AND <p>- {#FSTYPE} MATCHES_REGEX `{$FAS3220.FS.TYPE.MATCHES}`</p><p>- {#FSTYPE} NOT_MATCHES_REGEX `{$FAS3220.FS.TYPE.NOT_MATCHES}`</p><p>- {#FSNAME} MATCHES_REGEX `{$FAS3220.FS.NAME.MATCHES}`</p><p>- {#FSNAME} NOT_MATCHES_REGEX `{$FAS3220.FS.NAME.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Do not discover aggregate metrics<br> - {#FSTYPE} MATCHES_REGEX `3|4`<br> - ITEM_PROTOTYPE LIKE `Saved` - NO_DISCOVER</p> |
+|Filesystems discovery |<p>Filesystems discovery with filter.</p> |SNMP |fas3220.fs.discovery<p>**Filter**:</p>AND <p>- {#FSTYPE} MATCHES_REGEX `{$FAS3220.FS.TYPE.MATCHES}`</p><p>- {#FSTYPE} NOT_MATCHES_REGEX `{$FAS3220.FS.TYPE.NOT_MATCHES}`</p><p>- {#FSNAME} MATCHES_REGEX `{$FAS3220.FS.NAME.MATCHES}`</p><p>- {#FSNAME} NOT_MATCHES_REGEX `{$FAS3220.FS.NAME.NOT_MATCHES}`</p><p>**Overrides:**</p><p>Do not discover aggregate metrics<br> - {#FSTYPE} MATCHES_REGEX `3|4`<br> - ITEM_PROTOTYPE LIKE `Saved`<br> - NO_DISCOVER</p> |
|HA discovery |<p>Discovery of high availability metrics per node</p> |SNMP |fas3220.ha.discovery |
|Network ports discovery |<p>Network interfaces discovery with filter.</p> |SNMP |fas3220.net.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>**Filter**:</p>AND <p>- {#TYPE} MATCHES_REGEX `{$FAS3220.NET.PORT.TYPE.MATCHES}`</p><p>- {#TYPE} NOT_MATCHES_REGEX `{$FAS3220.NET.PORT.TYPE.NOT_MATCHES}`</p><p>- {#ROLE} MATCHES_REGEX `{$FAS3220.NET.PORT.ROLE.MATCHES}`</p><p>- {#TYPE} NOT_MATCHES_REGEX `{$FAS3220.NET.PORT.ROLE.NOT_MATCHES}`</p><p>- {#IFNAME} MATCHES_REGEX `{$FAS3220.NET.PORT.NAME.MATCHES}`</p><p>- {#IFNAME} NOT_MATCHES_REGEX `{$FAS3220.NET.PORT.NAME.NOT_MATCHES}`</p> |
@@ -124,32 +124,32 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Node {#NODE.NAME}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/NetApp FAS3220 SNMP/fas3220.cpu[cDOTCpuBusyTimePerCent, "{#NODE.NAME}"],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/NetApp FAS3220 SNMP/system.name,#1)<>last(/NetApp FAS3220 SNMP/system.name,#2) and length(last(/NetApp FAS3220 SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|NetApp FAS3220: Number of failed disks has changed |<p>{{ITEM.LASTVALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedCount])>0 and last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedMessage],#1)<>last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedMessage],#2)`<p>Recovery expression:</p>`last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedCount])=0` |WARNING | |
-|Node {#NODE.NAME}: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeUptime, "{#NODE.NAME}"])<10m` |INFO |<p>Manual close: YES</p> |
-|Node {#NODE.NAME}: Node can not communicate with the cluster |<p>-</p> |`last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeHealth, "{#NODE.NAME}"])=0` |HIGH |<p>Manual close: YES</p> |
-|Node {#NODE.NAME}: NVRAM battery status is not OK |<p>-</p> |`last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeNvramBatteryStatus, "{#NODE.NAME}"])<>1` |AVERAGE |<p>Manual close: YES</p> |
-|Node {#NODE.NAME}: Temperature is over than recommended |<p>The hardware will shutdown if the temperature exceeds critical thresholds.</p> |`last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvOverTemperature, "{#NODE.NAME}"])=2` |HIGH | |
-|Node {#NODE.NAME}: Failed FAN count is over than zero |<p>{{ITEM.VALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedFanCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])` |HIGH | |
-|Node {#NODE.NAME}: Degraded power supplies count is more than zero |<p>{{ITEM.VALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])` |AVERAGE | |
-|Node {#NODE.NAME}: Node cannot takeover it's HA partner {#PARTNER.NAME}. Reason: {ITEM.VALUE} |<p>Possible reasons:</p><p> unknownReason(2),</p><p> disabledByOperator(3),</p><p> interconnectOffline(4),</p><p> disabledByPartner(5),</p><p> takeoverFailed(6),</p><p> mailboxIsInDegradedState(7),</p><p> partnermailboxIsInUninitialisedState(8),</p><p> mailboxVersionMismatch(9),</p><p> nvramSizeMismatch(10),</p><p> kernelVersionMismatch(11),</p><p> partnerIsInBootingStage(12),</p><p> diskshelfIsTooHot(13),</p><p> partnerIsPerformingRevert(14),</p><p> nodeIsPerformingRevert(15),</p><p> sametimePartnerIsAlsoTryingToTakeUsOver(16),</p><p> alreadyInTakenoverMode(17),</p><p> nvramLogUnsynchronized(18),</p><p> stateofBackupMailboxIsDoubtful(19).</p> |`last(/NetApp FAS3220 SNMP/fas3220.ha[haCannotTakeoverCause, "{#NODE.NAME}"])<>1` |HIGH | |
-|Node {#NODE.NAME}: Node has been taken over |<p>The thisNodeDead(5) setting indicates that this node has been takenover.</p> |`last(/NetApp FAS3220 SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=5` |HIGH | |
-|Node {#NODE.NAME}: HA is not licensed |<p>The value notConfigured(1) indicates that the HA is not licensed.</p> |`last(/NetApp FAS3220 SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=1` |AVERAGE | |
-|{#VSERVER}{#FSNAME}: Disk space is too low |<p>-</p> |`min(/NetApp FAS3220 SNMP/fas3220.fs[df64AvailKBytes, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})<{$FAS3220.FS.AVAIL.MIN.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=0` |HIGH | |
-|{#VSERVER}{#FSNAME}: Disk space is too low |<p>-</p> |`max(/NetApp FAS3220 SNMP/fas3220.fs[dfPerCentKBytesCapacity, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})>{$FAS3220.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=1` |HIGH | |
-|Node {#NODE}: port {#IFNAME} ({#TYPE}): Link down |<p>Link state is not UP and the port status is set 'UP' by an administrator.</p> |`last(/NetApp FAS3220 SNMP/fas3220.net.port[netportLinkState, "{#NODE}", "{#IFNAME}"])<>2 and last(/NetApp FAS3220 SNMP/fas3220.net.port[netportUpAdmin, "{#NODE}", "{#IFNAME}"])=1` |AVERAGE |<p>Manual close: YES</p> |
-|Node {#NODE}: port {#IFNAME} ({#TYPE}): Port is not healthy |<p>{{ITEM.LASTVALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 SNMP/fas3220.net.port[netportHealthStatus, "{#NODE}", "{#IFNAME}"])<>0 and length(last(/NetApp FAS3220 SNMP/fas3220.net.port[netportDegradedReason, "{#NODE}", "{#IFNAME}"]))>0` |INFO | |
-|Node {#NODE}: port {#IFNAME} ({#TYPE}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/NetApp FAS3220 SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/NetApp FAS3220 SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} `<p>Recovery expression:</p>`max(/NetApp FAS3220 SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/NetApp FAS3220 SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 ` |WARNING |<p>Manual close: YES</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/NetApp FAS3220 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/NetApp FAS3220 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/NetApp FAS3220 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/NetApp FAS3220 SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/NetApp FAS3220 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/NetApp FAS3220 SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/NetApp FAS3220 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/NetApp FAS3220 SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/NetApp FAS3220 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|Node {#NODE.NAME}: High CPU utilization |<p>CPU utilization is too high. The system might be slow to respond.</p> |`min(/NetApp FAS3220 by SNMP/fas3220.cpu[cDOTCpuBusyTimePerCent, "{#NODE.NAME}"],5m)>{$CPU.UTIL.CRIT}` |WARNING | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/NetApp FAS3220 by SNMP/system.name,#1)<>last(/NetApp FAS3220 by SNMP/system.name,#2) and length(last(/NetApp FAS3220 by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|NetApp FAS3220: Number of failed disks has changed |<p>{{ITEM.LASTVALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedCount])>0 and last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedMessage],#1)<>last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedMessage],#2)`<p>Recovery expression:</p>`last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedCount])=0` |WARNING | |
+|Node {#NODE.NAME}: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeUptime, "{#NODE.NAME}"])<10m` |INFO |<p>Manual close: YES</p> |
+|Node {#NODE.NAME}: Node can not communicate with the cluster |<p>-</p> |`last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeHealth, "{#NODE.NAME}"])=0` |HIGH |<p>Manual close: YES</p> |
+|Node {#NODE.NAME}: NVRAM battery status is not OK |<p>-</p> |`last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeNvramBatteryStatus, "{#NODE.NAME}"])<>1` |AVERAGE |<p>Manual close: YES</p> |
+|Node {#NODE.NAME}: Temperature is over than recommended |<p>The hardware will shutdown if the temperature exceeds critical thresholds.</p> |`last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvOverTemperature, "{#NODE.NAME}"])=2` |HIGH | |
+|Node {#NODE.NAME}: Failed FAN count is over than zero |<p>{{ITEM.VALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedFanCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])` |HIGH | |
+|Node {#NODE.NAME}: Degraded power supplies count is more than zero |<p>{{ITEM.VALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])` |AVERAGE | |
+|Node {#NODE.NAME}: Node cannot takeover it's HA partner {#PARTNER.NAME}. Reason: {ITEM.VALUE} |<p>Possible reasons:</p><p> unknownReason(2),</p><p> disabledByOperator(3),</p><p> interconnectOffline(4),</p><p> disabledByPartner(5),</p><p> takeoverFailed(6),</p><p> mailboxIsInDegradedState(7),</p><p> partnermailboxIsInUninitialisedState(8),</p><p> mailboxVersionMismatch(9),</p><p> nvramSizeMismatch(10),</p><p> kernelVersionMismatch(11),</p><p> partnerIsInBootingStage(12),</p><p> diskshelfIsTooHot(13),</p><p> partnerIsPerformingRevert(14),</p><p> nodeIsPerformingRevert(15),</p><p> sametimePartnerIsAlsoTryingToTakeUsOver(16),</p><p> alreadyInTakenoverMode(17),</p><p> nvramLogUnsynchronized(18),</p><p> stateofBackupMailboxIsDoubtful(19).</p> |`last(/NetApp FAS3220 by SNMP/fas3220.ha[haCannotTakeoverCause, "{#NODE.NAME}"])<>1` |HIGH | |
+|Node {#NODE.NAME}: Node has been taken over |<p>The thisNodeDead(5) setting indicates that this node has been takenover.</p> |`last(/NetApp FAS3220 by SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=5` |HIGH | |
+|Node {#NODE.NAME}: HA is not licensed |<p>The value notConfigured(1) indicates that the HA is not licensed.</p> |`last(/NetApp FAS3220 by SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=1` |AVERAGE | |
+|{#VSERVER}{#FSNAME}: Disk space is too low |<p>-</p> |`min(/NetApp FAS3220 by SNMP/fas3220.fs[df64AvailKBytes, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})<{$FAS3220.FS.AVAIL.MIN.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=0` |HIGH | |
+|{#VSERVER}{#FSNAME}: Disk space is too low |<p>-</p> |`max(/NetApp FAS3220 by SNMP/fas3220.fs[dfPerCentKBytesCapacity, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})>{$FAS3220.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=1` |HIGH | |
+|Node {#NODE}: port {#IFNAME} ({#TYPE}): Link down |<p>Link state is not UP and the port status is set 'UP' by an administrator.</p> |`last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportLinkState, "{#NODE}", "{#IFNAME}"])<>2 and last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportUpAdmin, "{#NODE}", "{#IFNAME}"])=1` |AVERAGE |<p>Manual close: YES</p> |
+|Node {#NODE}: port {#IFNAME} ({#TYPE}): Port is not healthy |<p>{{ITEM.LASTVALUE2}.regsub("(.*)", \1)}</p> |`last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportHealthStatus, "{#NODE}", "{#IFNAME}"])<>0 and length(last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportDegradedReason, "{#NODE}", "{#IFNAME}"]))>0` |INFO | |
+|Node {#NODE}: port {#IFNAME} ({#TYPE}): High error rate |<p>Recovers when below 80% of {$IF.ERRORS.WARN:"{#IFNAME}"} threshold</p> |`min(/NetApp FAS3220 by SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/NetApp FAS3220 by SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} `<p>Recovery expression:</p>`max(/NetApp FAS3220 by SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 and max(/NetApp FAS3220 by SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8 ` |WARNING |<p>Manual close: YES</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/NetApp FAS3220 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/NetApp FAS3220 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/NetApp FAS3220 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/NetApp FAS3220 by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/NetApp FAS3220 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/NetApp FAS3220 by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/NetApp FAS3220 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/NetApp FAS3220 by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/NetApp FAS3220 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/416694-discussion-thread-for-official-zabbix-template-netapp-fas3220).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/416694-discussion-thread-for-official-zabbix-template-netapp-fas3220).
diff --git a/templates/san/netapp_fas3220_snmp/template_san_netapp_fas3220_snmp.yaml b/templates/san/netapp_fas3220_snmp/template_san_netapp_fas3220_snmp.yaml
index e8b5942c1d8..11efae28336 100644
--- a/templates/san/netapp_fas3220_snmp/template_san_netapp_fas3220_snmp.yaml
+++ b/templates/san/netapp_fas3220_snmp/template_san_netapp_fas3220_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:20:01Z'
+ date: '2022-10-27T14:30:19Z'
template_groups:
-
uuid: 7c2cb727f85b492d88cd56e17127c64d
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: e118ab11c1ec4f9cbe21dfce1441c0f6
- template: 'NetApp FAS3220 SNMP'
- name: 'NetApp FAS3220 SNMP'
+ template: 'NetApp FAS3220 by SNMP'
+ name: 'NetApp FAS3220 by SNMP'
description: |
The template to monitor SAN NetApp FAS3220 cluster by Zabbix SNMP agent.
@@ -120,7 +120,7 @@ zabbix_export:
triggers:
-
uuid: 826eb817329249f59b7989c92ca62d99
- expression: 'max(/NetApp FAS3220 SNMP/icmpping,#3)=0'
+ expression: 'max(/NetApp FAS3220 by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -146,14 +146,14 @@ zabbix_export:
triggers:
-
uuid: 4fb4b0022ca3433c8da1402f1d996760
- expression: 'min(/NetApp FAS3220 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/NetApp FAS3220 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/NetApp FAS3220 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/NetApp FAS3220 by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/NetApp FAS3220 SNMP/icmpping,#3)=0'
+ expression: 'max(/NetApp FAS3220 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -179,17 +179,17 @@ zabbix_export:
triggers:
-
uuid: bb13f4d369294c0d83f8e6d888cbb062
- expression: 'avg(/NetApp FAS3220 SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/NetApp FAS3220 by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/NetApp FAS3220 SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/NetApp FAS3220 SNMP/icmppingloss,5m)<100'
+ expression: 'min(/NetApp FAS3220 by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/NetApp FAS3220 by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/NetApp FAS3220 SNMP/icmpping,#3)=0'
+ expression: 'max(/NetApp FAS3220 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -335,7 +335,7 @@ zabbix_export:
triggers:
-
uuid: 5266fcf7c9db457885c219385cfd5025
- expression: 'last(/NetApp FAS3220 SNMP/system.name,#1)<>last(/NetApp FAS3220 SNMP/system.name,#2) and length(last(/NetApp FAS3220 SNMP/system.name))>0'
+ expression: 'last(/NetApp FAS3220 by SNMP/system.name,#1)<>last(/NetApp FAS3220 by SNMP/system.name,#2) and length(last(/NetApp FAS3220 by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -416,7 +416,7 @@ zabbix_export:
triggers:
-
uuid: e778b1ae80174f7aa82085b4882e1160
- expression: 'max(/NetApp FAS3220 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/NetApp FAS3220 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -424,7 +424,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/NetApp FAS3220 SNMP/icmpping,#3)=0'
+ expression: 'max(/NetApp FAS3220 by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -546,7 +546,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e03547e4ede74580909ed57c7f53dac1
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvOverTemperature, "{#NODE.NAME}"])=2'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvOverTemperature, "{#NODE.NAME}"])=2'
name: 'Node {#NODE.NAME}: Temperature is over than recommended'
priority: HIGH
description: 'The hardware will shutdown if the temperature exceeds critical thresholds.'
@@ -582,7 +582,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0c331366ac9d4398bfc815c3cb241e7c
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeHealth, "{#NODE.NAME}"])=0'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeHealth, "{#NODE.NAME}"])=0'
name: 'Node {#NODE.NAME}: Node can not communicate with the cluster'
priority: HIGH
manual_close: 'YES'
@@ -674,7 +674,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 567a28dd5b364aea84a43438aee24c5c
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeNvramBatteryStatus, "{#NODE.NAME}"])<>1'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeNvramBatteryStatus, "{#NODE.NAME}"])<>1'
name: 'Node {#NODE.NAME}: NVRAM battery status is not OK'
priority: AVERAGE
manual_close: 'YES'
@@ -728,7 +728,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6040422dc0b34863a90af558d72956ee
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeUptime, "{#NODE.NAME}"])<10m'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeUptime, "{#NODE.NAME}"])<10m'
name: 'Node {#NODE.NAME}: Host has been restarted'
event_name: 'Node {#NODE.NAME}: {HOST.NAME} has been restarted (uptime < 10m)'
priority: INFO
@@ -741,7 +741,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 64a737bc63b1463eb533d2a187c6b58a
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedPowerSupplyMessage, "{#NODE.NAME}"])'
name: 'Node {#NODE.NAME}: Degraded power supplies count is more than zero'
priority: AVERAGE
description: '{{ITEM.VALUE2}.regsub("(.*)", \1)}'
@@ -751,7 +751,7 @@ zabbix_export:
value: availability
-
uuid: 36b7326a738e41b7be3e0a478bc9f858
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedFanCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedFanCount, "{#NODE.NAME}"])>0 and last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])=last(/NetApp FAS3220 by SNMP/fas3220.cluster[nodeEnvFailedFanMessage, "{#NODE.NAME}"])'
name: 'Node {#NODE.NAME}: Failed FAN count is over than zero'
priority: HIGH
description: '{{ITEM.VALUE2}.regsub("(.*)", \1)}'
@@ -791,7 +791,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: adb98d2d2f13435bbe1897208bb86989
- expression: 'min(/NetApp FAS3220 SNMP/fas3220.cpu[cDOTCpuBusyTimePerCent, "{#NODE.NAME}"],5m)>{$CPU.UTIL.CRIT}'
+ expression: 'min(/NetApp FAS3220 by SNMP/fas3220.cpu[cDOTCpuBusyTimePerCent, "{#NODE.NAME}"],5m)>{$CPU.UTIL.CRIT}'
name: 'Node {#NODE.NAME}: High CPU utilization'
event_name: 'Node {#NODE.NAME}: High CPU utilization (over {$CPU.UTIL.CRIT}% for 5m)'
opdata: 'Current utilization: {ITEM.LASTVALUE1}'
@@ -815,7 +815,7 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.cpu[cDOTCpuBusyTimePerCent, "{#NODE.NAME}"]'
-
uuid: b6dcacd213ce436aabb6c33d236fc077
@@ -874,7 +874,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6ab014a44ad84966a97125c478b10789
- expression: 'min(/NetApp FAS3220 SNMP/fas3220.fs[df64AvailKBytes, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})<{$FAS3220.FS.AVAIL.MIN.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=0'
+ expression: 'min(/NetApp FAS3220 by SNMP/fas3220.fs[df64AvailKBytes, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})<{$FAS3220.FS.AVAIL.MIN.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=0'
name: '{#VSERVER}{#FSNAME}: Disk space is too low'
event_name: '{#VSERVER}{#FSNAME}: Disk space is too low (below {$FAS3220.FS.AVAIL.MIN.CRIT:"{#FSNAME}"} for {$FAS3220.FS.TIME:"{#FSNAME}"})'
priority: HIGH
@@ -995,7 +995,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 712d9096c8064ef19005c4989794db45
- expression: 'max(/NetApp FAS3220 SNMP/fas3220.fs[dfPerCentKBytesCapacity, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})>{$FAS3220.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=1'
+ expression: 'max(/NetApp FAS3220 by SNMP/fas3220.fs[dfPerCentKBytesCapacity, "{#VSERVER}{#FSNAME}"],{$FAS3220.FS.TIME:"{#FSNAME}"})>{$FAS3220.FS.PUSED.MAX.CRIT:"{#FSNAME}"} and {$FAS3220.FS.USE.PCT:"{#FSNAME}"}=1'
name: '{#VSERVER}{#FSNAME}: Disk space is too low'
event_name: '{#VSERVER}{#FSNAME}: Disk space is too low (used over {$FAS3220.FS.PUSED.MAX.CRIT:"{#FSNAME}"}% for {$FAS3220.FS.TIME:"{#FSNAME}"})'
priority: HIGH
@@ -1016,14 +1016,14 @@ zabbix_export:
drawtype: FILLED_REGION
color: 1A7C11
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.fs[df64UsedKBytes, "{#VSERVER}{#FSNAME}"]'
-
sortorder: '1'
drawtype: FILLED_REGION
color: 2774A4
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.fs[df64UsedKBytes, "{#VSERVER}{#FSNAME}"]'
overrides:
-
@@ -1040,7 +1040,6 @@ zabbix_export:
operationobject: ITEM_PROTOTYPE
operator: LIKE
value: Saved
- status: ENABLED
discover: NO_DISCOVER
-
uuid: e06a66c956164722a289cb8832341451
@@ -1097,7 +1096,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 798e093f3c9941e6a2d7edc24dd22835
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.ha[haCannotTakeoverCause, "{#NODE.NAME}"])<>1'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.ha[haCannotTakeoverCause, "{#NODE.NAME}"])<>1'
name: 'Node {#NODE.NAME}: Node cannot takeover it''s HA partner {#PARTNER.NAME}. Reason: {ITEM.VALUE}'
priority: HIGH
description: |
@@ -1152,7 +1151,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f4ee8e2a63e8471598b6aad929151404
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=1'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=1'
name: 'Node {#NODE.NAME}: HA is not licensed'
priority: AVERAGE
description: 'The value notConfigured(1) indicates that the HA is not licensed.'
@@ -1165,7 +1164,7 @@ zabbix_export:
value: performance
-
uuid: db2c37150e1649fba89898459150ada8
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=5'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.ha[haSettings, "{#NODE.NAME}"])=5'
name: 'Node {#NODE.NAME}: Node has been taken over'
priority: HIGH
description: 'The thisNodeDead(5) setting indicates that this node has been takenover.'
@@ -1530,12 +1529,12 @@ zabbix_export:
-
uuid: 9ea5b5b667df4bd1943892150c9f2fda
expression: |
- min(/NetApp FAS3220 SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/NetApp FAS3220 SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/NetApp FAS3220 by SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/NetApp FAS3220 by SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
recovery_mode: RECOVERY_EXPRESSION
recovery_expression: |
- max(/NetApp FAS3220 SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
- and max(/NetApp FAS3220 SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ max(/NetApp FAS3220 by SNMP/fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
+ and max(/NetApp FAS3220 by SNMP/fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"],5m)<{$IF.ERRORS.WARN:"{#IFNAME}"}*0.8
name: 'Node {#NODE}: port {#IFNAME} ({#TYPE}): High error rate'
event_name: 'Node {#NODE}: port {#IFNAME} ({#TYPE}): High error rate (>{$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1548,7 +1547,7 @@ zabbix_export:
value: performance
-
uuid: 2c7730f4606a4833bc729c108349d7b4
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.net.port[netportLinkState, "{#NODE}", "{#IFNAME}"])<>2 and last(/NetApp FAS3220 SNMP/fas3220.net.port[netportUpAdmin, "{#NODE}", "{#IFNAME}"])=1'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportLinkState, "{#NODE}", "{#IFNAME}"])<>2 and last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportUpAdmin, "{#NODE}", "{#IFNAME}"])=1'
name: 'Node {#NODE}: port {#IFNAME} ({#TYPE}): Link down'
priority: AVERAGE
description: 'Link state is not UP and the port status is set ''UP'' by an administrator.'
@@ -1562,7 +1561,7 @@ zabbix_export:
value: performance
-
uuid: a95e60addfe04055bb15138dd9d1f37f
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.net.port[netportHealthStatus, "{#NODE}", "{#IFNAME}"])<>0 and length(last(/NetApp FAS3220 SNMP/fas3220.net.port[netportDegradedReason, "{#NODE}", "{#IFNAME}"]))>0'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportHealthStatus, "{#NODE}", "{#IFNAME}"])<>0 and length(last(/NetApp FAS3220 by SNMP/fas3220.net.port[netportDegradedReason, "{#NODE}", "{#IFNAME}"]))>0'
name: 'Node {#NODE}: port {#IFNAME} ({#TYPE}): Port is not healthy'
priority: INFO
description: '{{ITEM.LASTVALUE2}.regsub("(.*)", \1)}'
@@ -1582,42 +1581,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.net.if[if64InOctets, "{#NODE}", "{#IFNAME}"]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.net.if[if64OutOctets, "{#NODE}", "{#IFNAME}"]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.net.if[if64OutErrors, "{#NODE}", "{#IFNAME}"]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.net.if[if64InErrors, "{#NODE}", "{#IFNAME}"]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.net.if[if64OutDiscards, "{#NODE}", "{#IFNAME}"]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'NetApp FAS3220 SNMP'
+ host: 'NetApp FAS3220 by SNMP'
key: 'fas3220.net.if[if64InDiscards, "{#NODE}", "{#IFNAME}"]'
preprocessing:
-
@@ -2006,7 +2005,7 @@ zabbix_export:
triggers:
-
uuid: d33ca3f0d2f14feca01dce7bdf476776
- expression: '(last(/NetApp FAS3220 SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/NetApp FAS3220 SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/NetApp FAS3220 SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/NetApp FAS3220 SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/NetApp FAS3220 by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/NetApp FAS3220 by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/NetApp FAS3220 by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/NetApp FAS3220 by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2015,16 +2014,16 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/NetApp FAS3220 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/NetApp FAS3220 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
value: notice
-
uuid: 3e2d95918f364248ae07a2e436a986a0
- expression: 'last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedCount])>0 and last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedMessage],#1)<>last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedMessage],#2)'
+ expression: 'last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedCount])>0 and last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedMessage],#1)<>last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedMessage],#2)'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/NetApp FAS3220 SNMP/fas3220.disk[diskFailedCount])=0'
+ recovery_expression: 'last(/NetApp FAS3220 by SNMP/fas3220.disk[diskFailedCount])=0'
name: 'NetApp FAS3220: Number of failed disks has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: WARNING
diff --git a/templates/server/cisco_ucs_manager_snmp/README.md b/templates/server/cisco_ucs_manager_snmp/README.md
index fee044239c9..3509fb66771 100644
--- a/templates/server/cisco_ucs_manager_snmp/README.md
+++ b/templates/server/cisco_ucs_manager_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco UCS Manager SNMP
+# Cisco UCS Manager by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
Cisco UCS® Manager provides unified, embedded management of all software and hardware
components of the Cisco Unified Computing Systemâ„¢ (Cisco UCS) across multiple chassis
and rack servers. It enables server, fabric, and storage provisioning as well as,
@@ -145,41 +145,41 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#DISKARRAY_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}` |HIGH | |
-|{#DISKARRAY_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p> |
-|{#DISKARRAY_LOCATION}: Disk array controller is not in optimal state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])>{$DISK.ARRAY.STATUS.OK:"operable"}` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in warning state</p> |
-|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
-|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is not in optimal state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!</p> |
-|{#FAN_LOCATION}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"inoperable"}` |AVERAGE | |
-|{#FAN_LOCATION}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- {#FAN_LOCATION}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.name[sysName.0],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.name[sysName.0],#2) and length(last(/Cisco UCS Manager SNMP/cisco.ucs.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
-|{#UNIT_LOCATION}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
-|Interface {#IFNAME}({#IFALIAS}): High error rate on {#IFNAME} |<p>Recovers when value below {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/Cisco UCS Manager SNMP/cisco.ucs.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco UCS Manager SNMP/cisco.ucs.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
-|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"failed"}` |HIGH | |
-|{#DISK_LOCATION}: Physical disk error |<p>Please check physical disk for warnings or errors</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"bad"} or last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"predictiveFailure"}` |AVERAGE |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#PSU_LOCATION}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"inoperable"}` |AVERAGE | |
-|{#PSU_LOCATION}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- {#PSU_LOCATION}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco UCS Manager SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS Manager SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS Manager SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS Manager SNMP/cisco.ucs.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco UCS Manager SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#UNIT_LOCATION}: System status is in critical state |<p>Please check the device for errors</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"computeFailed"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"configFailure"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"unconfigFailure"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"inoperable"}` |HIGH | |
-|{#UNIT_LOCATION}: System status is in warning state |<p>Please check the device for warnings</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"testFailed"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"thermalProblem"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"powerProblem"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"voltageProblem"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"diagnosticsFailed"}` |WARNING |<p>**Depends on**:</p><p>- {#UNIT_LOCATION}: System status is in critical state</p> |
-|{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}.Front: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Front: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.Front: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Rear: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.IOH: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"CPU"}-3` |HIGH | |
-|{#VDISK_LOCATION}: Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors</p> |`last(/Cisco UCS Manager SNMP/cisco.ucs.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}])<>{$VDISK.STATUS.OK:"equipped"}` |WARNING | |
+|{#DISKARRAY_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}` |HIGH | |
+|{#DISKARRAY_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p> |
+|{#DISKARRAY_LOCATION}: Disk array controller is not in optimal state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])>{$DISK.ARRAY.STATUS.OK:"operable"}` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in warning state</p> |
+|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
+|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is not in optimal state |<p>Please check the device for faults</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!</p> |
+|{#FAN_LOCATION}: Fan is in critical state |<p>Please check the fan unit</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"inoperable"}` |AVERAGE | |
+|{#FAN_LOCATION}: Fan is in warning state |<p>Please check the fan unit</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- {#FAN_LOCATION}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.name[sysName.0],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.name[sysName.0],#2) and length(last(/Cisco UCS Manager by SNMP/cisco.ucs.name[sysName.0]))>0` |INFO |<p>Manual close: YES</p> |
+|{#UNIT_LOCATION}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): Link down |<p>This trigger expression works as follows:</p><p>1. Can be triggered if operations status is down.</p><p>2. {$IFCONTROL:"{#IFNAME}"}=1 - user can redefine Context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.</p><p>3. {TEMPLATE_NAME:METRIC.diff()}=1) - trigger fires only if operational status was up(1) sometime before. (So, do not fire 'ethernal off' interfaces.)</p><p>WARNING: if closed manually - won't fire again on next poll, because of .diff.</p> |`{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#2))`<p>Recovery expression:</p>`last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0` |AVERAGE |<p>Manual close: YES</p> |
+|Interface {#IFNAME}({#IFALIAS}): High error rate on {#IFNAME} |<p>Recovers when value below {$IF.ERRORS.WARN:"{#IFNAME}"} threshold.</p> |`min(/Cisco UCS Manager by SNMP/cisco.ucs.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco UCS Manager by SNMP/cisco.ucs.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"} ` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Interface {#IFNAME}({#IFALIAS}): Link down</p> |
+|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"failed"}` |HIGH | |
+|{#DISK_LOCATION}: Physical disk error |<p>Please check physical disk for warnings or errors</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"bad"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"predictiveFailure"}` |AVERAGE |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#PSU_LOCATION}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"inoperable"}` |AVERAGE | |
+|{#PSU_LOCATION}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- {#PSU_LOCATION}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS Manager by SNMP/cisco.ucs.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco UCS Manager by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#UNIT_LOCATION}: System status is in critical state |<p>Please check the device for errors</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"computeFailed"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"configFailure"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"unconfigFailure"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"inoperable"}` |HIGH | |
+|{#UNIT_LOCATION}: System status is in warning state |<p>Please check the device for warnings</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"testFailed"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"thermalProblem"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"powerProblem"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"voltageProblem"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"diagnosticsFailed"}` |WARNING |<p>**Depends on**:</p><p>- {#UNIT_LOCATION}: System status is in critical state</p> |
+|{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}.Front: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Front: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.Front: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Rear: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.IOH: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"CPU"}-3` |HIGH | |
+|{#VDISK_LOCATION}: Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors</p> |`last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}])<>{$VDISK.STATUS.OK:"equipped"}` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/418396-discussion-thread-for-official-zabbix-templates-for-cisco).
diff --git a/templates/server/cisco_ucs_manager_snmp/template_server_cisco_ucs_manager_snmp.yaml b/templates/server/cisco_ucs_manager_snmp/template_server_cisco_ucs_manager_snmp.yaml
index f3f4f161977..5bf501d22c0 100644
--- a/templates/server/cisco_ucs_manager_snmp/template_server_cisco_ucs_manager_snmp.yaml
+++ b/templates/server/cisco_ucs_manager_snmp/template_server_cisco_ucs_manager_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:54:52Z'
+ date: '2022-10-27T14:23:08Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: d5eb4ce08a334098a85e6e02c534be90
- template: 'Cisco UCS Manager SNMP'
- name: 'Cisco UCS Manager SNMP'
+ template: 'Cisco UCS Manager by SNMP'
+ name: 'Cisco UCS Manager by SNMP'
description: |
This is a template for Cisco UCS Manager monitoring via Zabbix SNMP Agent that works without any external scripts.
@@ -162,7 +162,7 @@ zabbix_export:
triggers:
-
uuid: 622ac72c0e534bba94bb93636e4dc103
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.name[sysName.0],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.name[sysName.0],#2) and length(last(/Cisco UCS Manager SNMP/cisco.ucs.name[sysName.0]))>0'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.name[sysName.0],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.name[sysName.0],#2) and length(last(/Cisco UCS Manager by SNMP/cisco.ucs.name[sysName.0]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -265,7 +265,7 @@ zabbix_export:
triggers:
-
uuid: 010a749e3a3242cd8e3ea30459fae5a4
- expression: 'max(/Cisco UCS Manager SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco UCS Manager by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -313,7 +313,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0300b4bf4e0b42adb1b9e4985e80e356
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
name: '{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -327,7 +327,7 @@ zabbix_export:
value: performance
-
uuid: 158561ecab8b4bbd9c0a616f419bda10
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
name: '{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -335,7 +335,7 @@ zabbix_export:
dependencies:
-
name: '{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
tags:
-
tag: scope
@@ -408,7 +408,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 28c32222815f47e193d09afe5aafae79
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}'
name: '{#DISKARRAY_LOCATION}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -422,7 +422,7 @@ zabbix_export:
value: performance
-
uuid: 4e758fac4df54388b5f4555bb170bdd3
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN:"degraded"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN:"degraded"}'
name: '{#DISKARRAY_LOCATION}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -430,7 +430,7 @@ zabbix_export:
dependencies:
-
name: '{#DISKARRAY_LOCATION}: Disk array controller is in critical state'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}'
tags:
-
tag: scope
@@ -440,7 +440,7 @@ zabbix_export:
value: performance
-
uuid: 264e15d04626432987c2193bf190c56c
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])>{$DISK.ARRAY.STATUS.OK:"operable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])>{$DISK.ARRAY.STATUS.OK:"operable"}'
name: '{#DISKARRAY_LOCATION}: Disk array controller is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -448,10 +448,10 @@ zabbix_export:
dependencies:
-
name: '{#DISKARRAY_LOCATION}: Disk array controller is in critical state'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT:"inoperable"}'
-
name: '{#DISKARRAY_LOCATION}: Disk array controller is in warning state'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN:"degraded"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN:"degraded"}'
tags:
-
tag: scope
@@ -493,7 +493,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7417bd7646c248eb9664875d7d19e9ea
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"inoperable"}'
name: '{#FAN_LOCATION}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -507,7 +507,7 @@ zabbix_export:
value: performance
-
uuid: b3d6cb64470e4e4c9bf1d619c0015823
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.WARN:"degraded"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.WARN:"degraded"}'
name: '{#FAN_LOCATION}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -515,7 +515,7 @@ zabbix_export:
dependencies:
-
name: '{#FAN_LOCATION}: Fan is in critical state'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"inoperable"}'
tags:
-
tag: scope
@@ -999,9 +999,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: edfbf339b2664fae88e2a9003383e37f
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ recovery_expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1052,8 +1052,8 @@ zabbix_export:
-
uuid: caaa61b8d89540c496678d739610ae38
expression: |
- min(/Cisco UCS Manager SNMP/cisco.ucs.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
- or min(/Cisco UCS Manager SNMP/cisco.ucs.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ min(/Cisco UCS Manager by SNMP/cisco.ucs.if.in.errors[ifInErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
+ or min(/Cisco UCS Manager by SNMP/cisco.ucs.if.out.errors[ifOutErrors.{#SNMPINDEX}],5m)>{$IF.ERRORS.WARN:"{#IFNAME}"}
name: 'Interface {#IFNAME}({#IFALIAS}): High error rate on {#IFNAME}'
event_name: 'Interface {#IFNAME}({#IFALIAS}): High error rate on {#IFNAME} ( > {$IF.ERRORS.WARN:"{#IFNAME}"} for 5m)'
opdata: 'errors in: {ITEM.LASTVALUE1}, errors out: {ITEM.LASTVALUE2}'
@@ -1063,8 +1063,8 @@ zabbix_export:
dependencies:
-
name: 'Interface {#IFNAME}({#IFALIAS}): Link down'
- expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
- recovery_expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
+ expression: '{$IFCONTROL:"{#IFNAME}"}=1 and last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])=2 and (last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}],#2))'
+ recovery_expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.if.status[ifOperStatus.{#SNMPINDEX}])<>2 or {$IFCONTROL:"{#IFNAME}"}=0'
tags:
-
tag: scope
@@ -1078,42 +1078,42 @@ zabbix_export:
drawtype: GRADIENT_LINE
color: 1A7C11
item:
- host: 'Cisco UCS Manager SNMP'
+ host: 'Cisco UCS Manager by SNMP'
key: 'cisco.ucs.if.in[ifHCInOctets.{#SNMPINDEX}]'
-
sortorder: '1'
drawtype: BOLD_LINE
color: 2774A4
item:
- host: 'Cisco UCS Manager SNMP'
+ host: 'Cisco UCS Manager by SNMP'
key: 'cisco.ucs.if.out[ifHCOutOctets.{#SNMPINDEX}]'
-
sortorder: '2'
color: F63100
yaxisside: RIGHT
item:
- host: 'Cisco UCS Manager SNMP'
+ host: 'Cisco UCS Manager by SNMP'
key: 'cisco.ucs.if.out.errors[ifOutErrors.{#SNMPINDEX}]'
-
sortorder: '3'
color: A54F10
yaxisside: RIGHT
item:
- host: 'Cisco UCS Manager SNMP'
+ host: 'Cisco UCS Manager by SNMP'
key: 'cisco.ucs.if.in.errors[ifInErrors.{#SNMPINDEX}]'
-
sortorder: '4'
color: FC6EA3
yaxisside: RIGHT
item:
- host: 'Cisco UCS Manager SNMP'
+ host: 'Cisco UCS Manager by SNMP'
key: 'cisco.ucs.if.out.discards[ifOutDiscards.{#SNMPINDEX}]'
-
sortorder: '5'
color: 6C59DC
yaxisside: RIGHT
item:
- host: 'Cisco UCS Manager SNMP'
+ host: 'Cisco UCS Manager by SNMP'
key: 'cisco.ucs.if.in.discards[ifInDiscards.{#SNMPINDEX}]'
preprocessing:
-
@@ -1221,7 +1221,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 693cdcf58cb34def90ade23e2f2485cb
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.serialnumber[cucsStorageLocalDiskSerial.{#SNMPINDEX}]))>0'
name: '{#DISK_LOCATION}: Disk has been replaced'
event_name: '{#DISK_LOCATION}: Disk has been replaced (new serial number received)'
priority: INFO
@@ -1288,7 +1288,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ba92b99606fa4bf0bc4f1b6a362c2cdb
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"bad"} or last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"predictiveFailure"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"bad"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.CRIT:"predictiveFailure"}'
name: '{#DISK_LOCATION}: Physical disk error'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1296,7 +1296,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"failed"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"failed"}'
tags:
-
tag: scope
@@ -1306,7 +1306,7 @@ zabbix_export:
value: performance
-
uuid: eabf5aa62f004a2c996cc11bb5a6716a
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"failed"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"failed"}'
name: '{#DISK_LOCATION}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1352,7 +1352,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0d2713cf2b72472c8d8896880476c20e
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"inoperable"}'
name: '{#PSU_LOCATION}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1366,7 +1366,7 @@ zabbix_export:
value: performance
-
uuid: 468f08407a7448a384e5dcde589cb9d0
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.WARN:"degraded"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.WARN:"degraded"}'
name: '{#PSU_LOCATION}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1374,7 +1374,7 @@ zabbix_export:
dependencies:
-
name: '{#PSU_LOCATION}: Power supply is in critical state'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"inoperable"}'
tags:
-
tag: scope
@@ -1414,9 +1414,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: c3b3933ceb504207a87054a1f9773a76
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"CPU"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"CPU"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"CPU"}-3'
name: '{#SENSOR_LOCATION}: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}: Temperature is above critical threshold: >{$TEMP.MAX.CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1431,9 +1431,9 @@ zabbix_export:
value: performance
-
uuid: 13b393265f59431687b776297cb0b104
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"CPU"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"CPU"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"CPU"}-3'
name: '{#SENSOR_LOCATION}: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}: Temperature is above warning threshold: >{$TEMP.MAX.WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1442,8 +1442,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"CPU"}'
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"CPU"}-3'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"CPU"}'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -1483,9 +1483,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: aa4bf1c8b942462dbd21ccf8bd8c4a6b
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold: >{$TEMP.MAX.CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1500,9 +1500,9 @@ zabbix_export:
value: performance
-
uuid: 7751dd6bf1394daa9d918005d2d99d10
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold: >{$TEMP.MAX.WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1511,8 +1511,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -1544,9 +1544,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 230958b560374a118857b77418c6ba11
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold: >{$TEMP.MAX.CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1561,9 +1561,9 @@ zabbix_export:
value: performance
-
uuid: 4cdcddd04b0e4625893a1e20ce22a10f
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold: >{$TEMP.MAX.WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1572,8 +1572,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -1605,9 +1605,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8ee1dfc360aa4aca84a03b452ead92ce
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Front: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.Front: Temperature is above critical threshold: >{$TEMP.MAX.CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1622,9 +1622,9 @@ zabbix_export:
value: performance
-
uuid: 196c9fe3facf4e3db348337714c77e17
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Front: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.Front: Temperature is above warning threshold: >{$TEMP.MAX.WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1633,8 +1633,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.Front: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -1666,9 +1666,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a8714fcba51c46f9aa84fa02fba37743
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold: >{$TEMP.MAX.CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1683,9 +1683,9 @@ zabbix_export:
value: performance
-
uuid: 87068c693e574cd3952ca90e95a7a681
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold: >{$TEMP.MAX.WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1694,8 +1694,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS Manager SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP.MAX.CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS Manager by SNMP/cisco.ucs.sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP.MAX.CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -1758,7 +1758,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 27253665837647bb9c3be58f7d0881ae
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0'
name: '{#UNIT_LOCATION}: Device has been replaced'
event_name: '{#UNIT_LOCATION}: Device has been replaced (new serial number received)'
priority: INFO
@@ -1794,7 +1794,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7f7c337f4f9f44a3a176acce5bf27f29
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"computeFailed"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"configFailure"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"unconfigFailure"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"computeFailed"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"configFailure"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"unconfigFailure"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"inoperable"}'
name: '{#UNIT_LOCATION}: System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1808,7 +1808,7 @@ zabbix_export:
value: performance
-
uuid: 15ee6a98f2af4da4bcaa95821ffff524
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"testFailed"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"thermalProblem"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"powerProblem"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"voltageProblem"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"diagnosticsFailed"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"testFailed"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"thermalProblem"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"powerProblem"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"voltageProblem"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.WARN:"diagnosticsFailed"}'
name: '{#UNIT_LOCATION}: System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1816,7 +1816,7 @@ zabbix_export:
dependencies:
-
name: '{#UNIT_LOCATION}: System status is in critical state'
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"computeFailed"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"configFailure"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"unconfigFailure"} or last(/Cisco UCS Manager SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"inoperable"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"computeFailed"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"configFailure"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"unconfigFailure"} or last(/Cisco UCS Manager by SNMP/cisco.ucs.status[cucsComputeRackUnitOperState.{#SNMPINDEX}])={$HEALTH.STATUS.CRIT:"inoperable"}'
tags:
-
tag: scope
@@ -1917,7 +1917,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 63232b4e1f6b411a93ff8abad1ff3200
- expression: 'last(/Cisco UCS Manager SNMP/cisco.ucs.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}])<>{$VDISK.STATUS.OK:"equipped"}'
+ expression: 'last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}])<>{$VDISK.STATUS.OK:"equipped"}'
name: '{#VDISK_LOCATION}: Virtual disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2122,7 +2122,7 @@ zabbix_export:
type: GRAPH_PROTOTYPE
name: graphid
value:
- host: 'Cisco UCS Manager SNMP'
+ host: 'Cisco UCS Manager by SNMP'
name: 'Interface {#IFNAME}({#IFALIAS}): Network traffic'
valuemaps:
-
@@ -3403,7 +3403,7 @@ zabbix_export:
triggers:
-
uuid: 9026e680b409424e8fa29934878cb771
- expression: '(last(/Cisco UCS Manager SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS Manager SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS Manager SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS Manager SNMP/cisco.ucs.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS Manager by SNMP/cisco.ucs.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS Manager by SNMP/cisco.ucs.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -3412,7 +3412,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Cisco UCS Manager SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco UCS Manager by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/server/cisco_ucs_snmp/README.md b/templates/server/cisco_ucs_snmp/README.md
index 3cf442456cb..5fcfef6c972 100644
--- a/templates/server/cisco_ucs_snmp/README.md
+++ b/templates/server/cisco_ucs_snmp/README.md
@@ -1,9 +1,9 @@
-# Cisco UCS SNMP
+# Cisco UCS by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
for Cisco UCS via Integrated Management Controller
This template was tested on:
@@ -112,44 +112,44 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#DISKARRAY_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1` |HIGH | |
-|{#DISKARRAY_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"degraded\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p> |
-|{#DISKARRAY_LOCATION}: Disk array controller is not in optimal state |<p>Please check the device for faults</p> |`count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_OK_STATUS:\"operable\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in warning state</p> |
-|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`count(/Cisco UCS SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1` |AVERAGE | |
-|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is not in optimal state |<p>Please check the device for faults</p> |`count(/Cisco UCS SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!</p> |
-|{#FAN_LOCATION}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco UCS SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"inoperable\"}")=1` |AVERAGE | |
-|{#FAN_LOCATION}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco UCS SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"degraded\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#FAN_LOCATION}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco UCS SNMP/system.name,#1)<>last(/Cisco UCS SNMP/system.name,#2) and length(last(/Cisco UCS SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|{#UNIT_LOCATION}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco UCS SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`count(/Cisco UCS SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"failed\"}")=1` |HIGH | |
-|{#DISK_LOCATION}: Physical disk error |<p>Please check physical disk for warnings or errors</p> |`count(/Cisco UCS SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"bad\"}")=1 or count(/Cisco UCS SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"predictiveFailure\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#PSU_LOCATION}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco UCS SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"inoperable\"}")=1` |AVERAGE | |
-|{#PSU_LOCATION}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco UCS SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"degraded\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#PSU_LOCATION}: Power supply is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco UCS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco UCS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco UCS SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Cisco UCS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco UCS SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Cisco UCS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#UNIT_LOCATION}: System status is in critical state |<p>Please check the device for errors</p> |`count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"computeFailed\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"configFailure\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"unconfigFailure\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"inoperable\"}")=1` |HIGH | |
-|{#UNIT_LOCATION}: System status is in warning state |<p>Please check the device for warnings</p> |`count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"testFailed\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"thermalProblem\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"powerProblem\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"voltageProblem\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"diagnosticsFailed\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#UNIT_LOCATION}: System status is in critical state</p> |
-|{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}.Ambient: Temperature is too low |<p>-</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
-|{#SENSOR_LOCATION}.Front: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Front: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.Front: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}.Front: Temperature is too low |<p>-</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
-|{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Rear: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}.Rear: Temperature is too low |<p>-</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
-|{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.IOH: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCATION}.IOH: Temperature is too low |<p>-</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
-|{#SENSOR_LOCATION}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCATION}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|{#SENSOR_LOCATION}: Temperature is too low |<p>-</p> |`avg(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|{#VDISK_LOCATION}: Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors</p> |`count(/Cisco UCS SNMP/system.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS:\"equipped\"}")=1` |WARNING | |
+|{#DISKARRAY_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1` |HIGH | |
+|{#DISKARRAY_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"degraded\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p> |
+|{#DISKARRAY_LOCATION}: Disk array controller is not in optimal state |<p>Please check the device for faults</p> |`count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_OK_STATUS:\"operable\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in critical state</p><p>- {#DISKARRAY_LOCATION}: Disk array controller is in warning state</p> |
+|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`count(/Cisco UCS by SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1` |AVERAGE | |
+|{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is not in optimal state |<p>Please check the device for faults</p> |`count(/Cisco UCS by SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!</p> |
+|{#FAN_LOCATION}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Cisco UCS by SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"inoperable\"}")=1` |AVERAGE | |
+|{#FAN_LOCATION}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Cisco UCS by SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"degraded\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#FAN_LOCATION}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Cisco UCS by SNMP/system.name,#1)<>last(/Cisco UCS by SNMP/system.name,#2) and length(last(/Cisco UCS by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|{#UNIT_LOCATION}: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Cisco UCS by SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS by SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS by SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`count(/Cisco UCS by SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"failed\"}")=1` |HIGH | |
+|{#DISK_LOCATION}: Physical disk error |<p>Please check physical disk for warnings or errors</p> |`count(/Cisco UCS by SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"bad\"}")=1 or count(/Cisco UCS by SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"predictiveFailure\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#PSU_LOCATION}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Cisco UCS by SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"inoperable\"}")=1` |AVERAGE | |
+|{#PSU_LOCATION}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Cisco UCS by SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"degraded\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#PSU_LOCATION}: Power supply is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Cisco UCS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Cisco UCS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Cisco UCS by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Cisco UCS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco UCS by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Cisco UCS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#UNIT_LOCATION}: System status is in critical state |<p>Please check the device for errors</p> |`count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"computeFailed\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"configFailure\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"unconfigFailure\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"inoperable\"}")=1` |HIGH | |
+|{#UNIT_LOCATION}: System status is in warning state |<p>Please check the device for warnings</p> |`count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"testFailed\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"thermalProblem\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"powerProblem\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"voltageProblem\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"diagnosticsFailed\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#UNIT_LOCATION}: System status is in critical state</p> |
+|{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}.Ambient: Temperature is too low |<p>-</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
+|{#SENSOR_LOCATION}.Front: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Front: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.Front: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}.Front: Temperature is too low |<p>-</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
+|{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.Rear: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}.Rear: Temperature is too low |<p>-</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
+|{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}.IOH: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCATION}.IOH: Temperature is too low |<p>-</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
+|{#SENSOR_LOCATION}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCATION}: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCATION}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|{#SENSOR_LOCATION}: Temperature is too low |<p>-</p> |`avg(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|{#VDISK_LOCATION}: Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors</p> |`count(/Cisco UCS by SNMP/system.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS:\"equipped\"}")=1` |WARNING | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/cisco_ucs_snmp/template_server_cisco_ucs_snmp.yaml b/templates/server/cisco_ucs_snmp/template_server_cisco_ucs_snmp.yaml
index af033d99a7d..18aa5be3747 100644
--- a/templates/server/cisco_ucs_snmp/template_server_cisco_ucs_snmp.yaml
+++ b/templates/server/cisco_ucs_snmp/template_server_cisco_ucs_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:20:59Z'
+ date: '2022-10-27T14:22:48Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: cb66d34564e44b3893442fc74cf6e951
- template: 'Cisco UCS SNMP'
- name: 'Cisco UCS SNMP'
+ template: 'Cisco UCS by SNMP'
+ name: 'Cisco UCS by SNMP'
description: |
Template Server Cisco UCS
@@ -44,7 +44,7 @@ zabbix_export:
triggers:
-
uuid: 301541972752471e86046ce494a2febb
- expression: 'max(/Cisco UCS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco UCS by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -70,14 +70,14 @@ zabbix_export:
triggers:
-
uuid: e051db53cf32406bb0d5ff9cc8d5ce7b
- expression: 'min(/Cisco UCS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco UCS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco UCS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco UCS by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco UCS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco UCS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -103,17 +103,17 @@ zabbix_export:
triggers:
-
uuid: a11942dac3504b64977c2de3e575d2eb
- expression: 'avg(/Cisco UCS SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Cisco UCS by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Cisco UCS SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco UCS SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Cisco UCS by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Cisco UCS by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco UCS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco UCS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -259,7 +259,7 @@ zabbix_export:
triggers:
-
uuid: 3544e4ac11b44d14a6161523081c470e
- expression: 'last(/Cisco UCS SNMP/system.name,#1)<>last(/Cisco UCS SNMP/system.name,#2) and length(last(/Cisco UCS SNMP/system.name))>0'
+ expression: 'last(/Cisco UCS by SNMP/system.name,#1)<>last(/Cisco UCS by SNMP/system.name,#2) and length(last(/Cisco UCS by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -340,7 +340,7 @@ zabbix_export:
triggers:
-
uuid: 3c487a6b20c746eca9a7efc6058a60d9
- expression: 'max(/Cisco UCS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco UCS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -348,7 +348,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Cisco UCS SNMP/icmpping,#3)=0'
+ expression: 'max(/Cisco UCS by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -387,7 +387,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0b09b93602c94821ae1126e4f9550436
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
name: '{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -401,7 +401,7 @@ zabbix_export:
value: performance
-
uuid: d2af6de00e57412d8a2efcb20b1524a4
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1'
name: '{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -409,7 +409,7 @@ zabbix_export:
dependencies:
-
name: '{#DISKARRAY_CACHE_LOCATION}: Disk array cache controller battery is in critical state!'
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.cache.battery.status[cucsStorageRaidBatteryOperability.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -470,7 +470,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 44ec209460fb4010a087e971427b2fde
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1'
name: '{#DISKARRAY_LOCATION}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -484,7 +484,7 @@ zabbix_export:
value: performance
-
uuid: b419e0d296614f4285645954f8a7a970
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"degraded\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"degraded\"}")=1'
name: '{#DISKARRAY_LOCATION}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -492,7 +492,7 @@ zabbix_export:
dependencies:
-
name: '{#DISKARRAY_LOCATION}: Disk array controller is in critical state'
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1'
tags:
-
tag: scope
@@ -502,7 +502,7 @@ zabbix_export:
value: performance
-
uuid: a83202bb105d481c93464650272c14eb
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_OK_STATUS:\"operable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_OK_STATUS:\"operable\"}")=1'
name: '{#DISKARRAY_LOCATION}: Disk array controller is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -510,10 +510,10 @@ zabbix_export:
dependencies:
-
name: '{#DISKARRAY_LOCATION}: Disk array controller is in critical state'
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"inoperable\"}")=1'
-
name: '{#DISKARRAY_LOCATION}: Disk array controller is in warning state'
- expression: 'count(/Cisco UCS SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"degraded\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.diskarray.status[cucsStorageControllerOperState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"degraded\"}")=1'
tags:
-
tag: scope
@@ -550,7 +550,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5135b24c775f448c8998cadea3042e5b
- expression: 'count(/Cisco UCS SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"inoperable\"}")=1'
name: '{#FAN_LOCATION}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -564,7 +564,7 @@ zabbix_export:
value: performance
-
uuid: 895df7f89587441fa61223d5b2e442a2
- expression: 'count(/Cisco UCS SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"degraded\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"degraded\"}")=1'
name: '{#FAN_LOCATION}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -572,7 +572,7 @@ zabbix_export:
dependencies:
-
name: '{#FAN_LOCATION}: Fan is in critical state'
- expression: 'count(/Cisco UCS SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/sensor.fan.status[cucsEquipmentFanOperState.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"inoperable\"}")=1'
tags:
-
tag: scope
@@ -677,7 +677,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 445919e1ec414fd888f8911abc65650b
- expression: 'count(/Cisco UCS SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"bad\"}")=1 or count(/Cisco UCS SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"predictiveFailure\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"bad\"}")=1 or count(/Cisco UCS by SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_CRIT_STATUS:\"predictiveFailure\"}")=1'
name: '{#DISK_LOCATION}: Physical disk error'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -685,7 +685,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'count(/Cisco UCS SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"failed\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"failed\"}")=1'
tags:
-
tag: scope
@@ -695,7 +695,7 @@ zabbix_export:
value: performance
-
uuid: 77ce5c74eefd4a9b818c11c8c1581cd8
- expression: 'count(/Cisco UCS SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"failed\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.physicaldisk.status[cucsStorageLocalDiskDiskState.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"failed\"}")=1'
name: '{#DISK_LOCATION}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -736,7 +736,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 480d51d19be74b6e95f702b31baa5666
- expression: 'count(/Cisco UCS SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"inoperable\"}")=1'
name: '{#PSU_LOCATION}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -750,7 +750,7 @@ zabbix_export:
value: performance
-
uuid: 07fa90b5296b48d9b45cc6a76e72ceeb
- expression: 'count(/Cisco UCS SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"degraded\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"degraded\"}")=1'
name: '{#PSU_LOCATION}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -758,7 +758,7 @@ zabbix_export:
dependencies:
-
name: '{#PSU_LOCATION}: Power supply is in critical state'
- expression: 'count(/Cisco UCS SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/sensor.psu.status[cucsEquipmentPsuOperState.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"inoperable\"}")=1'
tags:
-
tag: scope
@@ -793,9 +793,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 35549eb00faf48ff8fdb7769b8a13895
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: '{#SENSOR_LOCATION}: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -810,9 +810,9 @@ zabbix_export:
value: performance
-
uuid: eaadcea2dc0d468d886654c3ec380390
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: '{#SENSOR_LOCATION}: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -821,8 +821,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -832,9 +832,9 @@ zabbix_export:
value: performance
-
uuid: ccb9b9edd7ba4a62b33e34ebf3647825
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco UCS SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/Cisco UCS by SNMP/sensor.temp.value[cucsProcessorEnvStatsTemperature.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: '{#SENSOR_LOCATION}: Temperature is too low'
event_name: '{#SENSOR_LOCATION}: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -873,9 +873,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: a43eb91c4ae044729f4312466fcbd5da
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold: >{$TEMP_CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -890,9 +890,9 @@ zabbix_export:
value: performance
-
uuid: da5d63d3411a4d2299d50cc21beae1c4
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.IOH: Temperature is above warning threshold: >{$TEMP_WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -901,8 +901,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.IOH: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -912,9 +912,9 @@ zabbix_export:
value: performance
-
uuid: ce811e4247d5484caf4b095e829f162e
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
+ recovery_expression: 'min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempSltatsIoh1Temp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
name: '{#SENSOR_LOCATION}.IOH: Temperature is too low'
event_name: '{#SENSOR_LOCATION}.IOH: Temperature is too low: <{$TEMP_CRIT_LOW:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -945,9 +945,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4e293138ca374c96a18e4dbca8e45c72
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold: >{$TEMP_CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -962,9 +962,9 @@ zabbix_export:
value: performance
-
uuid: cf21a0259b6e4402815651357cdcce76
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.Ambient: Temperature is above warning threshold: >{$TEMP_WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -973,8 +973,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.Ambient: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -984,9 +984,9 @@ zabbix_export:
value: performance
-
uuid: 5139f8dd56094561a573a0b7b15a5ef0
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
+ recovery_expression: 'min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsAmbientTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
name: '{#SENSOR_LOCATION}.Ambient: Temperature is too low'
event_name: '{#SENSOR_LOCATION}.Ambient: Temperature is too low: <{$TEMP_CRIT_LOW:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1017,9 +1017,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 98b9a6bd22e648e1bce3e5ee3ed5f6b4
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Front: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.Front: Temperature is above critical threshold: >{$TEMP_CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1034,9 +1034,9 @@ zabbix_export:
value: performance
-
uuid: 068f42b490ad41eb97a65dbc718ae566
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Front: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.Front: Temperature is above warning threshold: >{$TEMP_WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1045,8 +1045,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.Front: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -1056,9 +1056,9 @@ zabbix_export:
value: performance
-
uuid: f208cad426cf45338b6487cf87588220
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
+ recovery_expression: 'min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsFrontTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
name: '{#SENSOR_LOCATION}.Front: Temperature is too low'
event_name: '{#SENSOR_LOCATION}.Front: Temperature is too low: <{$TEMP_CRIT_LOW:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1089,9 +1089,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: ef03cd1e2356409ea2651fab589c9d19
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold: >{$TEMP_CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1106,9 +1106,9 @@ zabbix_export:
value: performance
-
uuid: ed302fd9bdbe47cda2456aa7cdc6ce66
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
name: '{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCATION}.Rear: Temperature is above warning threshold: >{$TEMP_WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1117,8 +1117,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_LOCATION}.Rear: Temperature is above critical threshold'
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
- recovery_expression: 'max(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ recovery_expression: 'max(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -1128,9 +1128,9 @@ zabbix_export:
value: performance
-
uuid: bb81b628d804411480d3b4066d626f82
- expression: 'avg(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
+ expression: 'avg(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Cisco UCS SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
+ recovery_expression: 'min(/Cisco UCS by SNMP/sensor.temp.value[cucsComputeRackUnitMbTempStatsRearTemp.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
name: '{#SENSOR_LOCATION}.Rear: Temperature is too low'
event_name: '{#SENSOR_LOCATION}.Rear: Temperature is too low: <{$TEMP_CRIT_LOW:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1197,7 +1197,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b9667c535fe542eeb21dea7aaf2bbf80
- expression: 'last(/Cisco UCS SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0'
+ expression: 'last(/Cisco UCS by SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#1)<>last(/Cisco UCS by SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}],#2) and length(last(/Cisco UCS by SNMP/system.hw.serialnumber[cucsComputeRackUnitSerial.{#SNMPINDEX}]))>0'
name: '{#UNIT_LOCATION}: Device has been replaced'
event_name: '{#UNIT_LOCATION}: Device has been replaced (new serial number received)'
priority: INFO
@@ -1228,7 +1228,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 70fbf187bc474aa88a26fb5a8d862694
- expression: 'count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"computeFailed\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"configFailure\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"unconfigFailure\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"computeFailed\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"configFailure\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"unconfigFailure\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"inoperable\"}")=1'
name: '{#UNIT_LOCATION}: System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1242,7 +1242,7 @@ zabbix_export:
value: performance
-
uuid: b69f6876b7de4e1c89934281696249c8
- expression: 'count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"testFailed\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"thermalProblem\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"powerProblem\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"voltageProblem\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"diagnosticsFailed\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"testFailed\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"thermalProblem\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"powerProblem\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"voltageProblem\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_WARN_STATUS:\"diagnosticsFailed\"}")=1'
name: '{#UNIT_LOCATION}: System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1250,7 +1250,7 @@ zabbix_export:
dependencies:
-
name: '{#UNIT_LOCATION}: System status is in critical state'
- expression: 'count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"computeFailed\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"configFailure\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"unconfigFailure\"}")=1 or count(/Cisco UCS SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"inoperable\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"computeFailed\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"configFailure\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"unconfigFailure\"}")=1 or count(/Cisco UCS by SNMP/system.status[cucsComputeRackUnitOperState.{#SNMPINDEX}],#1,"eq","{$HEALTH_CRIT_STATUS:\"inoperable\"}")=1'
tags:
-
tag: scope
@@ -1337,7 +1337,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 97b0c8177dca421f9535cb6f0abea7aa
- expression: 'count(/Cisco UCS SNMP/system.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS:\"equipped\"}")=1'
+ expression: 'count(/Cisco UCS by SNMP/system.hw.virtualdisk.status[cucsStorageLocalLunPresence.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS:\"equipped\"}")=1'
name: '{#VDISK_LOCATION}: Virtual disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1836,7 +1836,7 @@ zabbix_export:
triggers:
-
uuid: a933ba0e5c7f4e908afaba4381f65482
- expression: '(last(/Cisco UCS SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Cisco UCS by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Cisco UCS by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Cisco UCS by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Cisco UCS by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1845,7 +1845,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Cisco UCS SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Cisco UCS by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/server/dell/dell_r720_snmp/README.md b/templates/server/dell/dell_r720_snmp/README.md
index 00057890dfc..7a2502da1ac 100644
--- a/templates/server/dell/dell_r720_snmp/README.md
+++ b/templates/server/dell/dell_r720_snmp/README.md
@@ -1,9 +1,9 @@
-# DELL PowerEdge R720 SNMP
+# DELL PowerEdge R720 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring DELL PowerEdge R720 servers with iDRAC version 7 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -113,38 +113,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Dell R720: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
-|Dell R720: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R720: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R720: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R720: {#CNTLR_NAME} is in critical state</p><p>- Dell R720: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R720: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
-|Dell R720: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#BATTERY_NAME} is in critical state</p> |
-|Dell R720: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#BATTERY_NAME} is in critical state</p><p>- Dell R720: {#BATTERY_NAME} is in warning state</p> |
-|Dell R720: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
-|Dell R720: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#FAN_DESCR} is in critical state</p> |
-|Dell R720: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R720: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R720: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R720: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R720: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
-|Dell R720: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#DISK_NAME} failed</p> |
-|Dell R720: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R720: {#DISK_NAME} failed</p> |
-|Dell R720: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R720: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
-|Dell R720: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: Power supply {#PSU_DESCR} is in critical state</p> |
-|Dell R720: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
-|Dell R720: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|Dell R720: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: System status is in critical state</p> |
-|Dell R720: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R720 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R720 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R720 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R720 SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|Dell R720: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R720 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|Dell R720: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
-|Dell R720: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: Probe {#SENSOR_LOCALE} is in critical status</p> |
-|Dell R720: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R720: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R720: Probe {#SENSOR_LOCALE} is in warning status</p> |
-|Dell R720: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
-|Dell R720: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R720: {#DISK_NAME} failed</p> |
+|Dell R720: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
+|Dell R720: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R720: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R720: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R720: {#CNTLR_NAME} is in critical state</p><p>- Dell R720: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R720: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
+|Dell R720: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#BATTERY_NAME} is in critical state</p> |
+|Dell R720: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#BATTERY_NAME} is in critical state</p><p>- Dell R720: {#BATTERY_NAME} is in warning state</p> |
+|Dell R720: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
+|Dell R720: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#FAN_DESCR} is in critical state</p> |
+|Dell R720: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R720: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R720: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R720: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R720: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
+|Dell R720: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: {#DISK_NAME} failed</p> |
+|Dell R720: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R720: {#DISK_NAME} failed</p> |
+|Dell R720: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R720: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
+|Dell R720: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: Power supply {#PSU_DESCR} is in critical state</p> |
+|Dell R720: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
+|Dell R720: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|Dell R720: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: System status is in critical state</p> |
+|Dell R720: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R720 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R720 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R720 by SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|Dell R720: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R720 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|Dell R720: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
+|Dell R720: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R720: Probe {#SENSOR_LOCALE} is in critical status</p> |
+|Dell R720: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R720: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R720: Probe {#SENSOR_LOCALE} is in warning status</p> |
+|Dell R720: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
+|Dell R720: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R720 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R720: {#DISK_NAME} failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
diff --git a/templates/server/dell/dell_r720_snmp/template_server_dell_r720_snmp.yaml b/templates/server/dell/dell_r720_snmp/template_server_dell_r720_snmp.yaml
index 6bc992c3064..29d6e03833b 100644
--- a/templates/server/dell/dell_r720_snmp/template_server_dell_r720_snmp.yaml
+++ b/templates/server/dell/dell_r720_snmp/template_server_dell_r720_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:27Z'
+ date: '2022-10-27T14:23:01Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: fe5b8448661f41b9a6d948fccd7f9045
- template: 'DELL PowerEdge R720 SNMP'
- name: 'DELL PowerEdge R720 SNMP'
+ template: 'DELL PowerEdge R720 by SNMP'
+ name: 'DELL PowerEdge R720 by SNMP'
description: |
Template for DELL PowerEdge R720 servers with iDRAC version 7 and later.
@@ -97,7 +97,7 @@ zabbix_export:
triggers:
-
uuid: 8b88b49aa9584e0e99f1ac5933ece512
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
name: 'Dell R720: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: 7d8f8509b7c24cd495ca16f3b66311a2
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
name: 'Dell R720: Device has been replaced'
event_name: 'Dell R720: Device has been replaced (new serial number received)'
priority: INFO
@@ -240,7 +240,7 @@ zabbix_export:
triggers:
-
uuid: 8223bb1771ff435eab1e2473073daf63
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.name[sysName]))>0'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.name[sysName]))>0'
name: 'Dell R720: System name has changed'
event_name: 'Dell R720: System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -321,7 +321,7 @@ zabbix_export:
triggers:
-
uuid: 8a3c959a946b4945848857b249b6384e
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
name: 'Dell R720: System is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -332,7 +332,7 @@ zabbix_export:
value: availability
-
uuid: 922bb76a936741aab560a6c7fdf1609f
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
name: 'Dell R720: System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -343,7 +343,7 @@ zabbix_export:
value: availability
-
uuid: e5335391a2a74e87a4f9964e2b421150
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
name: 'Dell R720: System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -351,7 +351,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: System status is in critical state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -382,7 +382,7 @@ zabbix_export:
triggers:
-
uuid: a9556b21495c4ee4acba1c7b2be8b5b6
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.sw.os[systemOSName]))>0'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.sw.os[systemOSName]))>0'
name: 'Dell R720: Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.'
@@ -428,7 +428,7 @@ zabbix_export:
triggers:
-
uuid: ff70ec8e9ea64cbf9638e6d8f5282b0f
- expression: 'max(/DELL PowerEdge R720 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/DELL PowerEdge R720 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'Dell R720: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -483,7 +483,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 560ced8dc58a498db8f511e8ecbd7a7d
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
name: 'Dell R720: {#BATTERY_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -494,7 +494,7 @@ zabbix_export:
value: availability
-
uuid: c3f0750f9d0f4875b81a9381570a9cca
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
name: 'Dell R720: {#BATTERY_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -502,14 +502,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
tags:
-
tag: scope
value: availability
-
uuid: d79579790be2485e9f8227be9f460b18
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
name: 'Dell R720: {#BATTERY_NAME} is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -517,10 +517,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
-
name: 'Dell R720: {#BATTERY_NAME} is in warning state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
tags:
-
tag: scope
@@ -598,7 +598,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: dfd11c71843c4d19b8c216864146217a
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: 'Dell R720: {#CNTLR_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -606,14 +606,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
value: availability
-
uuid: 73b701ac3ef448ceab5df956c9ebefe6
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
name: 'Dell R720: {#CNTLR_NAME} is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -624,7 +624,7 @@ zabbix_export:
value: availability
-
uuid: 4c17ab46f1624c81b5f6ccebaddf76e2
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: 'Dell R720: {#CNTLR_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -632,10 +632,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#CNTLR_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
-
name: 'Dell R720: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
@@ -705,7 +705,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 02e8e8e511c04ce6b1ced1c9515e4960
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
name: 'Dell R720: {#FAN_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -716,7 +716,7 @@ zabbix_export:
value: availability
-
uuid: 50a0052574744bc0870bfaab56637f16
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R720: {#FAN_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -724,7 +724,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#FAN_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -822,7 +822,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 10427c2fdc4243ff9735c3491c65e935
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
name: 'Dell R720: {#DISK_NAME} has been replaced'
event_name: 'Dell R720: {#DISK_NAME} has been replaced (new serial number received)'
priority: INFO
@@ -888,7 +888,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7da1638a51604539a0e1c01b4b038504
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: 'Dell R720: {#DISK_NAME} S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -896,7 +896,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -936,7 +936,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 38cfba465f624cf897d0650e5a4290c3
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
name: 'Dell R720: {#DISK_NAME} failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -947,7 +947,7 @@ zabbix_export:
value: availability
-
uuid: 779c4a8c62f24d238b53f0ed8ebfcf5b
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
name: 'Dell R720: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -955,7 +955,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R720 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -999,7 +999,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b40edbb84f174a98be55b659c7766554
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
name: 'Dell R720: Power supply {#PSU_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1010,7 +1010,7 @@ zabbix_export:
value: availability
-
uuid: 217985fe9aed41338e8c2a48af3ceb99
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
name: 'Dell R720: Power supply {#PSU_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1018,7 +1018,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: Power supply {#PSU_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
tags:
-
tag: scope
@@ -1074,7 +1074,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 153e7512141f489b84dcc35a7350d6bf
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
name: 'Dell R720: Probe {#SENSOR_LOCALE} is in critical status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1085,7 +1085,7 @@ zabbix_export:
value: availability
-
uuid: eec3e64901d44a60a268ed30a8394d36
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R720: Probe {#SENSOR_LOCALE} is in warning status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1093,14 +1093,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
tags:
-
tag: scope
value: availability
-
uuid: 16dec7f89d9a44c0954bf29c3e32040b
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
name: 'Dell R720: Probe {#SENSOR_LOCALE} is not in optimal status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1109,10 +1109,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
-
name: 'Dell R720: Probe {#SENSOR_LOCALE} is in warning status'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R720 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
tags:
-
tag: scope
@@ -1302,7 +1302,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 42bcb2a7d63a46e082f3b6a1c5997fee
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
name: 'Dell R720: {#DISK_NAME} failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1313,7 +1313,7 @@ zabbix_export:
value: availability
-
uuid: ea36db6addcf4bcb9f1c3b822e6c4422
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
name: 'Dell R720: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1321,7 +1321,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R720: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R720 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R720 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -1736,7 +1736,7 @@ zabbix_export:
triggers:
-
uuid: a5505bd8d3f64ea1ae02e421a4114d2f
- expression: '(last(/DELL PowerEdge R720 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R720 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R720 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R720 SNMP/dell.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/DELL PowerEdge R720 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R720 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R720 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R720 by SNMP/dell.server.net.uptime[sysUpTime])<10m)'
name: 'Dell R720: Host has been restarted'
event_name: 'Dell R720: {HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/dell/dell_r740_snmp/README.md b/templates/server/dell/dell_r740_snmp/README.md
index 79bea9c7334..cf6b94cd955 100644
--- a/templates/server/dell/dell_r740_snmp/README.md
+++ b/templates/server/dell/dell_r740_snmp/README.md
@@ -1,9 +1,9 @@
-# DELL PowerEdge R740 SNMP
+# DELL PowerEdge R740 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring DELL PowerEdge R740 servers with iDRAC version 7 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -113,38 +113,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Dell R740: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
-|Dell R740: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R740: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R740: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R740: {#CNTLR_NAME} is in critical state</p><p>- Dell R740: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R740: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
-|Dell R740: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#BATTERY_NAME} is in critical state</p> |
-|Dell R740: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#BATTERY_NAME} is in critical state</p><p>- Dell R740: {#BATTERY_NAME} is in warning state</p> |
-|Dell R740: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
-|Dell R740: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#FAN_DESCR} is in critical state</p> |
-|Dell R740: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R740: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R740: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R740: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R740: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
-|Dell R740: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#DISK_NAME} failed</p> |
-|Dell R740: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R740: {#DISK_NAME} failed</p> |
-|Dell R740: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R740: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
-|Dell R740: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: Power supply {#PSU_DESCR} is in critical state</p> |
-|Dell R740: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
-|Dell R740: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|Dell R740: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: System status is in critical state</p> |
-|Dell R740: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R740 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R740 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R740 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R740 SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|Dell R740: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R740 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|Dell R740: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
-|Dell R740: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: Probe {#SENSOR_LOCALE} is in critical status</p> |
-|Dell R740: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R740: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R740: Probe {#SENSOR_LOCALE} is in warning status</p> |
-|Dell R740: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
-|Dell R740: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R740: {#DISK_NAME} failed</p> |
+|Dell R740: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
+|Dell R740: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R740: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R740: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R740: {#CNTLR_NAME} is in critical state</p><p>- Dell R740: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R740: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
+|Dell R740: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#BATTERY_NAME} is in critical state</p> |
+|Dell R740: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#BATTERY_NAME} is in critical state</p><p>- Dell R740: {#BATTERY_NAME} is in warning state</p> |
+|Dell R740: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
+|Dell R740: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#FAN_DESCR} is in critical state</p> |
+|Dell R740: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R740: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R740: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R740: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R740: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
+|Dell R740: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: {#DISK_NAME} failed</p> |
+|Dell R740: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R740: {#DISK_NAME} failed</p> |
+|Dell R740: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R740: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
+|Dell R740: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: Power supply {#PSU_DESCR} is in critical state</p> |
+|Dell R740: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
+|Dell R740: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|Dell R740: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: System status is in critical state</p> |
+|Dell R740: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R740 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R740 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R740 by SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|Dell R740: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R740 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|Dell R740: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
+|Dell R740: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R740: Probe {#SENSOR_LOCALE} is in critical status</p> |
+|Dell R740: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R740: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R740: Probe {#SENSOR_LOCALE} is in warning status</p> |
+|Dell R740: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
+|Dell R740: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R740 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R740: {#DISK_NAME} failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
diff --git a/templates/server/dell/dell_r740_snmp/template_server_dell_r740_snmp.yaml b/templates/server/dell/dell_r740_snmp/template_server_dell_r740_snmp.yaml
index d9cec890424..e0510e99f1a 100644
--- a/templates/server/dell/dell_r740_snmp/template_server_dell_r740_snmp.yaml
+++ b/templates/server/dell/dell_r740_snmp/template_server_dell_r740_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:29Z'
+ date: '2022-10-27T14:23:00Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 9fde0e1c36f8453da72f97535d4e74ca
- template: 'DELL PowerEdge R740 SNMP'
- name: 'DELL PowerEdge R740 SNMP'
+ template: 'DELL PowerEdge R740 by SNMP'
+ name: 'DELL PowerEdge R740 by SNMP'
description: |
Template for DELL PowerEdge R740 servers with iDRAC version 7 and later.
@@ -97,7 +97,7 @@ zabbix_export:
triggers:
-
uuid: fc9618eb512e4d9b9eddf21c2700582e
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
name: 'Dell R740: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: 21ee92eed6f04ea59864dd09b1fac68a
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
name: 'Dell R740: Device has been replaced'
event_name: 'Dell R740: Device has been replaced (new serial number received)'
priority: INFO
@@ -240,7 +240,7 @@ zabbix_export:
triggers:
-
uuid: edc8087b2d2b423fb637b7caefeb50fb
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.name[sysName]))>0'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.name[sysName]))>0'
name: 'Dell R740: System name has changed'
event_name: 'Dell R740: System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -321,7 +321,7 @@ zabbix_export:
triggers:
-
uuid: 2a44b7a84ef84d25a40e58239cc305d1
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
name: 'Dell R740: System is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -332,7 +332,7 @@ zabbix_export:
value: availability
-
uuid: 7efda5ac8a21449ba32ff3f005433fc1
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
name: 'Dell R740: System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -343,7 +343,7 @@ zabbix_export:
value: availability
-
uuid: 5d3dd609897a4f9ba644db1916045a6f
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
name: 'Dell R740: System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -351,7 +351,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: System status is in critical state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -382,7 +382,7 @@ zabbix_export:
triggers:
-
uuid: 9917b5d4d2684398b09ce42842b15146
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.sw.os[systemOSName]))>0'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.sw.os[systemOSName]))>0'
name: 'Dell R740: Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.'
@@ -428,7 +428,7 @@ zabbix_export:
triggers:
-
uuid: 6c5688c758b64c2f91f2523855578be9
- expression: 'max(/DELL PowerEdge R740 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/DELL PowerEdge R740 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'Dell R740: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -483,7 +483,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 19f9217f3d3a4f98a516c3569d35bd21
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
name: 'Dell R740: {#BATTERY_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -494,7 +494,7 @@ zabbix_export:
value: availability
-
uuid: b89350f48b354abf864372e3210cbb76
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
name: 'Dell R740: {#BATTERY_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -502,14 +502,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
tags:
-
tag: scope
value: availability
-
uuid: df1277db9cae4a10b18d08a38fefaec5
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
name: 'Dell R740: {#BATTERY_NAME} is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -517,10 +517,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
-
name: 'Dell R740: {#BATTERY_NAME} is in warning state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
tags:
-
tag: scope
@@ -598,7 +598,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1be163a9cbf241deb9075ff06b596eb6
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: 'Dell R740: {#CNTLR_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -606,14 +606,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
value: availability
-
uuid: 9ba11fff789445e69be1a53fa7d0e07e
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
name: 'Dell R740: {#CNTLR_NAME} is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -624,7 +624,7 @@ zabbix_export:
value: availability
-
uuid: 0c06b18258914e7c8dc9941d0b94f512
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: 'Dell R740: {#CNTLR_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -632,10 +632,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#CNTLR_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
-
name: 'Dell R740: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
@@ -705,7 +705,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 87d1cd50bf134d6e8bf30e1c97b63880
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
name: 'Dell R740: {#FAN_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -716,7 +716,7 @@ zabbix_export:
value: availability
-
uuid: 79dc96ea76e44df9b7e0615c97bcd3a7
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R740: {#FAN_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -724,7 +724,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#FAN_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -822,7 +822,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6a99f1c73c9644369947c25d187e812c
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
name: 'Dell R740: {#DISK_NAME} has been replaced'
event_name: 'Dell R740: {#DISK_NAME} has been replaced (new serial number received)'
priority: INFO
@@ -888,7 +888,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b8d469d16cd7455a94daeeeafb1be82e
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: 'Dell R740: {#DISK_NAME} S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -896,7 +896,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -936,7 +936,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 940630ac993842379dbd17168fcc3f4e
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
name: 'Dell R740: {#DISK_NAME} failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -947,7 +947,7 @@ zabbix_export:
value: availability
-
uuid: 4b252f24da774362a77be992e0c2e1da
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
name: 'Dell R740: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -955,7 +955,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R740 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -999,7 +999,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6e055e9cf8e34d189b96c121f05cb529
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
name: 'Dell R740: Power supply {#PSU_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1010,7 +1010,7 @@ zabbix_export:
value: availability
-
uuid: 65f2765b5b4e4297ac7cc93499466cc2
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
name: 'Dell R740: Power supply {#PSU_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1018,7 +1018,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: Power supply {#PSU_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
tags:
-
tag: scope
@@ -1074,7 +1074,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a145a8ebf20641b8b2907e1c3e4048d5
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
name: 'Dell R740: Probe {#SENSOR_LOCALE} is in critical status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1085,7 +1085,7 @@ zabbix_export:
value: availability
-
uuid: fa01e3ea0b5e44739f5ceef4db36cf43
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R740: Probe {#SENSOR_LOCALE} is in warning status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1093,14 +1093,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
tags:
-
tag: scope
value: availability
-
uuid: 128395cf2bbf43cf9311bb6dd6573f40
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
name: 'Dell R740: Probe {#SENSOR_LOCALE} is not in optimal status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1109,10 +1109,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
-
name: 'Dell R740: Probe {#SENSOR_LOCALE} is in warning status'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R740 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
tags:
-
tag: scope
@@ -1302,7 +1302,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 128bcdb7dc7b445390edd429d01dabf8
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
name: 'Dell R740: {#DISK_NAME} failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1313,7 +1313,7 @@ zabbix_export:
value: availability
-
uuid: ce63508ee9c64b80bfaf95568dd7954f
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
name: 'Dell R740: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1321,7 +1321,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R740: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R740 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R740 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -1736,7 +1736,7 @@ zabbix_export:
triggers:
-
uuid: 91449180f6dd435f8104a51ae5645fc3
- expression: '(last(/DELL PowerEdge R740 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R740 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R740 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R740 SNMP/dell.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/DELL PowerEdge R740 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R740 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R740 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R740 by SNMP/dell.server.net.uptime[sysUpTime])<10m)'
name: 'Dell R740: Host has been restarted'
event_name: 'Dell R740: {HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/dell/dell_r820_snmp/README.md b/templates/server/dell/dell_r820_snmp/README.md
index e8097fbde61..a0e52de1fa3 100644
--- a/templates/server/dell/dell_r820_snmp/README.md
+++ b/templates/server/dell/dell_r820_snmp/README.md
@@ -1,9 +1,9 @@
-# DELL PowerEdge R820 SNMP
+# DELL PowerEdge R820 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring DELL PowerEdge R820 servers with iDRAC version 7 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -113,38 +113,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Dell R820: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
-|Dell R820: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R820: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R820: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R820: {#CNTLR_NAME} is in critical state</p><p>- Dell R820: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R820: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
-|Dell R820: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#BATTERY_NAME} is in critical state</p> |
-|Dell R820: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#BATTERY_NAME} is in critical state</p><p>- Dell R820: {#BATTERY_NAME} is in warning state</p> |
-|Dell R820: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
-|Dell R820: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#FAN_DESCR} is in critical state</p> |
-|Dell R820: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R820: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R820: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R820: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R820: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
-|Dell R820: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#DISK_NAME} failed</p> |
-|Dell R820: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R820: {#DISK_NAME} failed</p> |
-|Dell R820: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R820: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
-|Dell R820: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: Power supply {#PSU_DESCR} is in critical state</p> |
-|Dell R820: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
-|Dell R820: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|Dell R820: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: System status is in critical state</p> |
-|Dell R820: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R820 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R820 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R820 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R820 SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|Dell R820: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R820 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|Dell R820: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
-|Dell R820: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: Probe {#SENSOR_LOCALE} is in critical status</p> |
-|Dell R820: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R820: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R820: Probe {#SENSOR_LOCALE} is in warning status</p> |
-|Dell R820: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
-|Dell R820: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R820: {#DISK_NAME} failed</p> |
+|Dell R820: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
+|Dell R820: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R820: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R820: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R820: {#CNTLR_NAME} is in critical state</p><p>- Dell R820: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R820: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
+|Dell R820: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#BATTERY_NAME} is in critical state</p> |
+|Dell R820: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#BATTERY_NAME} is in critical state</p><p>- Dell R820: {#BATTERY_NAME} is in warning state</p> |
+|Dell R820: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
+|Dell R820: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#FAN_DESCR} is in critical state</p> |
+|Dell R820: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R820: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R820: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R820: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R820: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
+|Dell R820: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: {#DISK_NAME} failed</p> |
+|Dell R820: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R820: {#DISK_NAME} failed</p> |
+|Dell R820: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R820: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
+|Dell R820: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: Power supply {#PSU_DESCR} is in critical state</p> |
+|Dell R820: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
+|Dell R820: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|Dell R820: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: System status is in critical state</p> |
+|Dell R820: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R820 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R820 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R820 by SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|Dell R820: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R820 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|Dell R820: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
+|Dell R820: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R820: Probe {#SENSOR_LOCALE} is in critical status</p> |
+|Dell R820: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R820: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R820: Probe {#SENSOR_LOCALE} is in warning status</p> |
+|Dell R820: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
+|Dell R820: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R820 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R820: {#DISK_NAME} failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
diff --git a/templates/server/dell/dell_r820_snmp/template_server_dell_r820_snmp.yaml b/templates/server/dell/dell_r820_snmp/template_server_dell_r820_snmp.yaml
index 75675569a73..4acad39a220 100644
--- a/templates/server/dell/dell_r820_snmp/template_server_dell_r820_snmp.yaml
+++ b/templates/server/dell/dell_r820_snmp/template_server_dell_r820_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:31Z'
+ date: '2022-10-27T14:23:04Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: d41c5d0fa91545d68cced1b5dabe4bf1
- template: 'DELL PowerEdge R820 SNMP'
- name: 'DELL PowerEdge R820 SNMP'
+ template: 'DELL PowerEdge R820 by SNMP'
+ name: 'DELL PowerEdge R820 by SNMP'
description: |
Template for DELL PowerEdge R820 servers with iDRAC version 7 and later.
@@ -97,7 +97,7 @@ zabbix_export:
triggers:
-
uuid: db34a06be1bc43e2a244148cb742bcea
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
name: 'Dell R820: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: 07b08a664af94a889e000aaf4d137bbb
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
name: 'Dell R820: Device has been replaced'
event_name: 'Dell R820: Device has been replaced (new serial number received)'
priority: INFO
@@ -240,7 +240,7 @@ zabbix_export:
triggers:
-
uuid: 57624ace90564129926aadc7019452ff
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.name[sysName]))>0'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.name[sysName]))>0'
name: 'Dell R820: System name has changed'
event_name: 'Dell R820: System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -321,7 +321,7 @@ zabbix_export:
triggers:
-
uuid: ba4a8d9fc5ef43af959456a10c8f7daf
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
name: 'Dell R820: System is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -332,7 +332,7 @@ zabbix_export:
value: availability
-
uuid: 6626cc1193d04c48be02de9b261d0d4e
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
name: 'Dell R820: System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -343,7 +343,7 @@ zabbix_export:
value: availability
-
uuid: 535ea4f1ed6a44ebacbc94c899f60965
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
name: 'Dell R820: System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -351,7 +351,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: System status is in critical state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -382,7 +382,7 @@ zabbix_export:
triggers:
-
uuid: f0331e24079347d58f3e5df328cfbd0c
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.sw.os[systemOSName]))>0'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.sw.os[systemOSName]))>0'
name: 'Dell R820: Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.'
@@ -428,7 +428,7 @@ zabbix_export:
triggers:
-
uuid: 85492273336d43219fa7e2eef4208359
- expression: 'max(/DELL PowerEdge R820 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/DELL PowerEdge R820 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'Dell R820: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -483,7 +483,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e6e2bd66c55744b0854d95669c0aa626
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
name: 'Dell R820: {#BATTERY_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -494,7 +494,7 @@ zabbix_export:
value: availability
-
uuid: 3a7bfd13ad224bb6b0d4a3d38aa0a319
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
name: 'Dell R820: {#BATTERY_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -502,14 +502,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
tags:
-
tag: scope
value: availability
-
uuid: e7d512abbd204adc81e2f5a59f0e761b
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
name: 'Dell R820: {#BATTERY_NAME} is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -517,10 +517,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
-
name: 'Dell R820: {#BATTERY_NAME} is in warning state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
tags:
-
tag: scope
@@ -598,7 +598,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 70087ca390524853bd80dd6906ed038d
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: 'Dell R820: {#CNTLR_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -606,14 +606,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
value: availability
-
uuid: b516a87aac0d48c285cf23c8a2d5e9be
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
name: 'Dell R820: {#CNTLR_NAME} is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -624,7 +624,7 @@ zabbix_export:
value: availability
-
uuid: a53035ca17604f69b2d878c50b69bbc1
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: 'Dell R820: {#CNTLR_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -632,10 +632,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#CNTLR_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
-
name: 'Dell R820: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
@@ -705,7 +705,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: faf3982240ea4424af8b3c9135d240ca
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
name: 'Dell R820: {#FAN_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -716,7 +716,7 @@ zabbix_export:
value: availability
-
uuid: 6f80cea251574ed7895694de10f0742c
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R820: {#FAN_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -724,7 +724,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#FAN_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -822,7 +822,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2c5ca847d2ca41e199740645c74a2fd7
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
name: 'Dell R820: {#DISK_NAME} has been replaced'
event_name: 'Dell R820: {#DISK_NAME} has been replaced (new serial number received)'
priority: INFO
@@ -888,7 +888,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b2b1013ff96243d48b468213c56bf51f
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: 'Dell R820: {#DISK_NAME} S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -896,7 +896,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -936,7 +936,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a78f3f6171e748e695d464adefe1978c
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
name: 'Dell R820: {#DISK_NAME} failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -947,7 +947,7 @@ zabbix_export:
value: availability
-
uuid: f62e8c34700e4b668af71da9a8d0c973
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
name: 'Dell R820: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -955,7 +955,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R820 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -999,7 +999,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8e28009ef16c441d93bc0fa794232b4c
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
name: 'Dell R820: Power supply {#PSU_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1010,7 +1010,7 @@ zabbix_export:
value: availability
-
uuid: 1de5a20506d04b3a84deaa70b232101b
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
name: 'Dell R820: Power supply {#PSU_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1018,7 +1018,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: Power supply {#PSU_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
tags:
-
tag: scope
@@ -1074,7 +1074,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9a082c7fc18641fe8e2d42d9c2acc607
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
name: 'Dell R820: Probe {#SENSOR_LOCALE} is in critical status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1085,7 +1085,7 @@ zabbix_export:
value: availability
-
uuid: fdf4ccc98a894cabbdf4cbd4d32b2270
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R820: Probe {#SENSOR_LOCALE} is in warning status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1093,14 +1093,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
tags:
-
tag: scope
value: availability
-
uuid: c26c12068ec2429694491c3c74380091
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
name: 'Dell R820: Probe {#SENSOR_LOCALE} is not in optimal status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1109,10 +1109,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
-
name: 'Dell R820: Probe {#SENSOR_LOCALE} is in warning status'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R820 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
tags:
-
tag: scope
@@ -1302,7 +1302,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1c5a5635d0b548839e19d8272642f0aa
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
name: 'Dell R820: {#DISK_NAME} failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1313,7 +1313,7 @@ zabbix_export:
value: availability
-
uuid: 6d35cf89f9a44498b25303811609ccdb
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
name: 'Dell R820: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1321,7 +1321,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R820: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R820 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R820 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -1736,7 +1736,7 @@ zabbix_export:
triggers:
-
uuid: 97c232039b0e441997642bb39cc7bf2b
- expression: '(last(/DELL PowerEdge R820 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R820 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R820 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R820 SNMP/dell.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/DELL PowerEdge R820 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R820 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R820 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R820 by SNMP/dell.server.net.uptime[sysUpTime])<10m)'
name: 'Dell R820: Host has been restarted'
event_name: 'Dell R820: {HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/dell/dell_r840_snmp/README.md b/templates/server/dell/dell_r840_snmp/README.md
index d4cc7eadfbf..2ea312243f5 100644
--- a/templates/server/dell/dell_r840_snmp/README.md
+++ b/templates/server/dell/dell_r840_snmp/README.md
@@ -1,9 +1,9 @@
-# DELL PowerEdge R840 SNMP
+# DELL PowerEdge R840 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring DELL PowerEdge R840 servers with iDRAC version 7 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -113,38 +113,38 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|Dell R840: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
-|Dell R840: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R840: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R840: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R840: {#CNTLR_NAME} is in critical state</p><p>- Dell R840: {#CNTLR_NAME} is in unrecoverable state</p> |
-|Dell R840: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
-|Dell R840: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#BATTERY_NAME} is in critical state</p> |
-|Dell R840: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#BATTERY_NAME} is in critical state</p><p>- Dell R840: {#BATTERY_NAME} is in warning state</p> |
-|Dell R840: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
-|Dell R840: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#FAN_DESCR} is in critical state</p> |
-|Dell R840: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R840: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R840: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R840: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R840: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
-|Dell R840: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#DISK_NAME} failed</p> |
-|Dell R840: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R840: {#DISK_NAME} failed</p> |
-|Dell R840: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Dell R840: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
-|Dell R840: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: Power supply {#PSU_DESCR} is in critical state</p> |
-|Dell R840: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
-|Dell R840: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|Dell R840: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: System status is in critical state</p> |
-|Dell R840: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R840 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R840 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R840 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R840 SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|Dell R840: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R840 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|Dell R840: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
-|Dell R840: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: Probe {#SENSOR_LOCALE} is in critical status</p> |
-|Dell R840: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R840: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R840: Probe {#SENSOR_LOCALE} is in warning status</p> |
-|Dell R840: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
-|Dell R840: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R840: {#DISK_NAME} failed</p> |
+|Dell R840: {#CNTLR_NAME} is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}` |DISASTER | |
+|Dell R840: {#CNTLR_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH |<p>**Depends on**:</p><p>- Dell R840: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R840: {#CNTLR_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R840: {#CNTLR_NAME} is in critical state</p><p>- Dell R840: {#CNTLR_NAME} is in unrecoverable state</p> |
+|Dell R840: {#BATTERY_NAME} is in critical state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}` |AVERAGE | |
+|Dell R840: {#BATTERY_NAME} is in warning state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#BATTERY_NAME} is in critical state</p> |
+|Dell R840: {#BATTERY_NAME} is not in optimal state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#BATTERY_NAME} is in critical state</p><p>- Dell R840: {#BATTERY_NAME} is in warning state</p> |
+|Dell R840: {#FAN_DESCR} is in critical state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}` |AVERAGE | |
+|Dell R840: {#FAN_DESCR} is in warning state |<p>Please check the fan unit.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#FAN_DESCR} is in critical state</p> |
+|Dell R840: System name has changed |<p>System name has changed. Ack to close.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R840: Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R840: Operating system description has changed |<p>Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R840: Firmware has changed |<p>Firmware version has changed. Ack to close.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R840: {#DISK_NAME} failed |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}` |HIGH | |
+|Dell R840: {#DISK_NAME} is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: {#DISK_NAME} failed</p> |
+|Dell R840: {#DISK_NAME} S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- Dell R840: {#DISK_NAME} failed</p> |
+|Dell R840: {#DISK_NAME} has been replaced |<p>{#DISK_NAME} serial number has changed. Ack to close</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Dell R840: Power supply {#PSU_DESCR} is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}` |AVERAGE | |
+|Dell R840: Power supply {#PSU_DESCR} is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: Power supply {#PSU_DESCR} is in critical state</p> |
+|Dell R840: System is in unrecoverable state |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}` |DISASTER | |
+|Dell R840: System status is in critical state |<p>Please check the device for errors.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|Dell R840: System status is in warning state |<p>Please check the device for warnings.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: System status is in critical state</p> |
+|Dell R840: Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R840 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R840 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R840 by SNMP/dell.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|Dell R840: No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/DELL PowerEdge R840 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|Dell R840: Probe {#SENSOR_LOCALE} is in critical status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}` |AVERAGE | |
+|Dell R840: Probe {#SENSOR_LOCALE} is in warning status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}` |WARNING |<p>**Depends on**:</p><p>- Dell R840: Probe {#SENSOR_LOCALE} is in critical status</p> |
+|Dell R840: Probe {#SENSOR_LOCALE} is not in optimal status |<p>Please check the device for faults.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- Dell R840: Probe {#SENSOR_LOCALE} is in critical status</p><p>- Dell R840: Probe {#SENSOR_LOCALE} is in warning status</p> |
+|Dell R840: {#DISK_NAME} failed |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}` |HIGH | |
+|Dell R840: {#DISK_NAME} is in warning state |<p>Please check the virtual disk for warnings or errors.</p> |`last(/DELL PowerEdge R840 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}` |AVERAGE |<p>**Depends on**:</p><p>- Dell R840: {#DISK_NAME} failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
-You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
+You can also provide feedback, discuss the template, or ask for help at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/426752-discussion-thread-for-official-zabbix-dell-templates).
diff --git a/templates/server/dell/dell_r840_snmp/template_server_dell_r840_snmp.yaml b/templates/server/dell/dell_r840_snmp/template_server_dell_r840_snmp.yaml
index 28f55981206..0fd7079c7a2 100644
--- a/templates/server/dell/dell_r840_snmp/template_server_dell_r840_snmp.yaml
+++ b/templates/server/dell/dell_r840_snmp/template_server_dell_r840_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:50:33Z'
+ date: '2022-10-27T14:23:04Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: fc834b8da8864678b55557e9a237eac9
- template: 'DELL PowerEdge R840 SNMP'
- name: 'DELL PowerEdge R840 SNMP'
+ template: 'DELL PowerEdge R840 by SNMP'
+ name: 'DELL PowerEdge R840 by SNMP'
description: |
Template for DELL PowerEdge R840 servers with iDRAC version 7 and later.
@@ -97,7 +97,7 @@ zabbix_export:
triggers:
-
uuid: c8e3831037544a87abbd671fe191ab98
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.hw.firmware[racFirmwareVersion],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.firmware[racFirmwareVersion]))>0'
name: 'Dell R840: Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -154,7 +154,7 @@ zabbix_export:
triggers:
-
uuid: 89f591b666d34aceb71715bfcdda6bff
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.hw.serialnumber[systemServiceTag],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.serialnumber[systemServiceTag]))>0'
name: 'Dell R840: Device has been replaced'
event_name: 'Dell R840: Device has been replaced (new serial number received)'
priority: INFO
@@ -240,7 +240,7 @@ zabbix_export:
triggers:
-
uuid: 7a56b961a858470d82c6fdef62f88f43
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.name[sysName]))>0'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.name[sysName],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.name[sysName],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.name[sysName]))>0'
name: 'Dell R840: System name has changed'
event_name: 'Dell R840: System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -321,7 +321,7 @@ zabbix_export:
triggers:
-
uuid: db2cabad4c3048d692333ae02ec125fe
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.DISASTER}'
name: 'Dell R840: System is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -332,7 +332,7 @@ zabbix_export:
value: availability
-
uuid: 65c0bb42f06c463abbf667480cafa40f
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
name: 'Dell R840: System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -343,7 +343,7 @@ zabbix_export:
value: availability
-
uuid: 4f8b4ed834504bb5bb6d7c7b9d22700e
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.WARN}'
name: 'Dell R840: System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -351,7 +351,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: System status is in critical state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.status[globalSystemStatus])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -382,7 +382,7 @@ zabbix_export:
triggers:
-
uuid: 09a2b4ec3e1943b598347358b442b662
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.sw.os[systemOSName]))>0'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sw.os[systemOSName],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.sw.os[systemOSName],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.sw.os[systemOSName]))>0'
name: 'Dell R840: Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possibly, the system has been updated or replaced. Ack to close.'
@@ -428,7 +428,7 @@ zabbix_export:
triggers:
-
uuid: c428f917029346679f8763611f5357f0
- expression: 'max(/DELL PowerEdge R840 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/DELL PowerEdge R840 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'Dell R840: No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -483,7 +483,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 8d4d468bddf14d659ecbf002e37dcafc
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
name: 'Dell R840: {#BATTERY_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -494,7 +494,7 @@ zabbix_export:
value: availability
-
uuid: afcd3be7b0e343bdbeff78f87ba4f803
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
name: 'Dell R840: {#BATTERY_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -502,14 +502,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
tags:
-
tag: scope
value: availability
-
uuid: ab4482d1d0244a25a5dccf787af77fe0
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.BATTERY.STATUS.OK}'
name: 'Dell R840: {#BATTERY_NAME} is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -517,10 +517,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#BATTERY_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT}'
-
name: 'Dell R840: {#BATTERY_NAME} is in warning state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN}'
tags:
-
tag: scope
@@ -598,7 +598,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d3111ea966db4b4993d119eb92c5362b
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: 'Dell R840: {#CNTLR_NAME} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -606,14 +606,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
value: availability
-
uuid: ee5704a6f6fc4e5396a90fc51293fbe6
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
name: 'Dell R840: {#CNTLR_NAME} is in unrecoverable state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -624,7 +624,7 @@ zabbix_export:
value: availability
-
uuid: 3bd0b53f65114218b4ce01b4923add3b
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: 'Dell R840: {#CNTLR_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -632,10 +632,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#CNTLR_NAME} is in critical state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
-
name: 'Dell R840: {#CNTLR_NAME} is in unrecoverable state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.FAIL}'
tags:
-
tag: scope
@@ -705,7 +705,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c35ca42a1b304ef6a279c959970ce205
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
name: 'Dell R840: {#FAN_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -716,7 +716,7 @@ zabbix_export:
value: availability
-
uuid: c5f641ddfb9547188d937f9a5554931a
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R840: {#FAN_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -724,7 +724,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#FAN_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"nonRecoverableLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}])={$FAN.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -822,7 +822,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 98c1eb636c534d20ba14d19efe174d9c
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
name: 'Dell R840: {#DISK_NAME} has been replaced'
event_name: 'Dell R840: {#DISK_NAME} has been replaced (new serial number received)'
priority: INFO
@@ -888,7 +888,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f86285d7142e494998da999d56173dd7
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: 'Dell R840: {#DISK_NAME} S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -896,7 +896,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -936,7 +936,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 034509befd5e497ba9c255034171b6c0
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
name: 'Dell R840: {#DISK_NAME} failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -947,7 +947,7 @@ zabbix_export:
value: availability
-
uuid: be7cfc31a83a4ab9a91150e480c2a1f0
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN:"nonCritical"}'
name: 'Dell R840: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -955,7 +955,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"critical"} or last(/DELL PowerEdge R840 by SNMP/dell.server.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL:"nonRecoverable"}'
tags:
-
tag: scope
@@ -999,7 +999,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2228b8364d12446181b79a7d5efdc598
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
name: 'Dell R840: Power supply {#PSU_DESCR} is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1010,7 +1010,7 @@ zabbix_export:
value: availability
-
uuid: c661b2832e1d4c0392e24bbb2c8eaca5
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.WARN:"nonCritical"}'
name: 'Dell R840: Power supply {#PSU_DESCR} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1018,7 +1018,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: Power supply {#PSU_DESCR} is in critical state'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"critical"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}])={$PSU.STATUS.CRIT:"nonRecoverable"}'
tags:
-
tag: scope
@@ -1074,7 +1074,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5b552c02873e4ae39b378362c083fb8b
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
name: 'Dell R840: Probe {#SENSOR_LOCALE} is in critical status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1085,7 +1085,7 @@ zabbix_export:
value: availability
-
uuid: 34638bcb7b3940e7ad69c7cf2f2c330d
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
name: 'Dell R840: Probe {#SENSOR_LOCALE} is in warning status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1093,14 +1093,14 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
tags:
-
tag: scope
value: availability
-
uuid: 0f7c75277fb64927943339a8b32d7dfb
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])<>{$SENSOR.TEMP.STATUS.OK}'
name: 'Dell R840: Probe {#SENSOR_LOCALE} is not in optimal status'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: INFO
@@ -1109,10 +1109,10 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: Probe {#SENSOR_LOCALE} is in critical status'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"criticalLower"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.CRIT:"nonRecoverableLower"}'
-
name: 'Dell R840: Probe {#SENSOR_LOCALE} is in warning status'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalUpper"} or last(/DELL PowerEdge R840 by SNMP/dell.server.sensor.temp.status[temperatureProbeStatus.{#SNMPINDEX}])={$SENSOR.TEMP.STATUS.WARN:"nonCriticalLower"}'
tags:
-
tag: scope
@@ -1302,7 +1302,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 96f488d383e9445b9646ff18f69eea9a
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
name: 'Dell R840: {#DISK_NAME} failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1313,7 +1313,7 @@ zabbix_export:
value: availability
-
uuid: 37777a2664ea46399847736412b937c5
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.WARN:"degraded"}'
name: 'Dell R840: {#DISK_NAME} is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1321,7 +1321,7 @@ zabbix_export:
dependencies:
-
name: 'Dell R840: {#DISK_NAME} failed'
- expression: 'last(/DELL PowerEdge R840 SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
+ expression: 'last(/DELL PowerEdge R840 by SNMP/dell.server.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}])={$VDISK.STATUS.CRIT:"failed"}'
tags:
-
tag: scope
@@ -1736,7 +1736,7 @@ zabbix_export:
triggers:
-
uuid: def9f4b7093f421893d2a65f6416cfe5
- expression: '(last(/DELL PowerEdge R840 SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R840 SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R840 SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R840 SNMP/dell.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/DELL PowerEdge R840 by SNMP/dell.server.hw.uptime[hrSystemUptime])>0 and last(/DELL PowerEdge R840 by SNMP/dell.server.hw.uptime[hrSystemUptime])<10m) or (last(/DELL PowerEdge R840 by SNMP/dell.server.hw.uptime[hrSystemUptime])=0 and last(/DELL PowerEdge R840 by SNMP/dell.server.net.uptime[sysUpTime])<10m)'
name: 'Dell R840: Host has been restarted'
event_name: 'Dell R840: {HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/dell_idrac_snmp/README.md b/templates/server/dell_idrac_snmp/README.md
index 7edb2706b38..20c0f81666d 100644
--- a/templates/server/dell_idrac_snmp/README.md
+++ b/templates/server/dell_idrac_snmp/README.md
@@ -1,9 +1,9 @@
-# Dell iDRAC SNMP
+# Dell iDRAC by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
for Dell servers with iDRAC controllers
http://www.dell.com/support/manuals/us/en/19/dell-openmanage-server-administrator-v8.3/snmp_idrac8/idrac-mib?guid=guid-e686536d-bc8e-4e09-8e8b-de8eb052efee
Supported systems: http://www.dell.com/support/manuals/us/en/04/dell-openmanage-server-administrator-v8.3/snmp_idrac8/supported-systems?guid=guid-f72b75ba-e686-4e8a-b8c5-ca11c7c21381
@@ -131,42 +131,42 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#CNTLR_NAME}: Disk array controller is in unrecoverable state! |<p>Please check the device for faults</p> |`count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1` |DISASTER | |
-|{#CNTLR_NAME}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"critical\"}")=1` |HIGH |<p>**Depends on**:</p><p>- {#CNTLR_NAME}: Disk array controller is in unrecoverable state!</p> |
-|{#CNTLR_NAME}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"nonCritical\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_NAME}: Disk array controller is in critical state</p><p>- {#CNTLR_NAME}: Disk array controller is in unrecoverable state!</p> |
-|Battery {#BATTERY_NUM}: Disk array cache controller battery is in warning state |<p>Please check the device for faults</p> |`count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state!</p> |
-|Battery {#BATTERY_NUM}: Disk array cache controller battery is not in optimal state |<p>Please check the device for faults</p> |`count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state!</p><p>- Battery {#BATTERY_NUM}: Disk array cache controller battery is in warning state</p> |
-|Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1` |AVERAGE | |
-|{#FAN_DESCR}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalLower\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableLower\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1` |AVERAGE | |
-|{#FAN_DESCR}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalLower\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#FAN_DESCR}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Dell iDRAC SNMP/system.name,#1)<>last(/Dell iDRAC SNMP/system.name,#2) and length(last(/Dell iDRAC SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Dell iDRAC SNMP/system.sw.os[systemOSName],#1)<>last(/Dell iDRAC SNMP/system.sw.os[systemOSName],#2) and length(last(/Dell iDRAC SNMP/system.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Dell iDRAC SNMP/system.hw.serialnumber,#1)<>last(/Dell iDRAC SNMP/system.hw.serialnumber,#2) and length(last(/Dell iDRAC SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Dell iDRAC SNMP/system.hw.firmware,#1)<>last(/Dell iDRAC SNMP/system.hw.firmware,#2) and length(last(/Dell iDRAC SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
-|{#DISK_NAME}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1` |HIGH | |
-|{#DISK_NAME}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors</p> |`count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS:\"nonCritical\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISK_NAME}: Physical disk failed</p> |
-|{#DISK_NAME}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/Dell iDRAC SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/Dell iDRAC SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/Dell iDRAC SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|{#DISK_NAME}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`count(/Dell iDRAC SNMP/system.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS}")=1` |HIGH |<p>**Depends on**:</p><p>- {#DISK_NAME}: Physical disk failed</p> |
-|{#PSU_DESCR}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"nonRecoverable\"}")=1` |AVERAGE | |
-|{#PSU_DESCR}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"nonCritical\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#PSU_DESCR}: Power supply is in critical state</p> |
-|System is in unrecoverable state! |<p>Please check the device for faults</p> |`count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1` |HIGH | |
-|System status is in critical state |<p>Please check the device for errors</p> |`count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p> |
-|System status is in warning state |<p>Please check the device for warnings</p> |`count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Dell iDRAC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell iDRAC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell iDRAC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell iDRAC SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Dell iDRAC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Dell iDRAC SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Dell iDRAC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell iDRAC SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Dell iDRAC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_LOCALE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"} or last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCALE}: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCALE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"} or last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|{#SENSOR_LOCALE}: Temperature is too low |<p>-</p> |`avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
-|{#SENSOR_LOCALE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"} or last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCALE}: Temperature is above critical threshold</p> |
-|{#SENSOR_LOCALE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"} or last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
-|{#SENSOR_LOCALE}: Temperature is too low |<p>-</p> |`avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
-|Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors</p> |`count(/Dell iDRAC SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS:\"failed\"}")=1` |HIGH | |
-|Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk is in warning state |<p>Please check virtual disk for warnings or errors</p> |`count(/Dell iDRAC SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_WARN_STATUS:\"degraded\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk failed</p> |
+|{#CNTLR_NAME}: Disk array controller is in unrecoverable state! |<p>Please check the device for faults</p> |`count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1` |DISASTER | |
+|{#CNTLR_NAME}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"critical\"}")=1` |HIGH |<p>**Depends on**:</p><p>- {#CNTLR_NAME}: Disk array controller is in unrecoverable state!</p> |
+|{#CNTLR_NAME}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"nonCritical\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_NAME}: Disk array controller is in critical state</p><p>- {#CNTLR_NAME}: Disk array controller is in unrecoverable state!</p> |
+|Battery {#BATTERY_NUM}: Disk array cache controller battery is in warning state |<p>Please check the device for faults</p> |`count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state!</p> |
+|Battery {#BATTERY_NUM}: Disk array cache controller battery is not in optimal state |<p>Please check the device for faults</p> |`count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state!</p><p>- Battery {#BATTERY_NUM}: Disk array cache controller battery is in warning state</p> |
+|Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1` |AVERAGE | |
+|{#FAN_DESCR}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalLower\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableLower\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1` |AVERAGE | |
+|{#FAN_DESCR}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalLower\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#FAN_DESCR}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Dell iDRAC by SNMP/system.name,#1)<>last(/Dell iDRAC by SNMP/system.name,#2) and length(last(/Dell iDRAC by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Operating system description has changed |<p>Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.</p> |`last(/Dell iDRAC by SNMP/system.sw.os[systemOSName],#1)<>last(/Dell iDRAC by SNMP/system.sw.os[systemOSName],#2) and length(last(/Dell iDRAC by SNMP/system.sw.os[systemOSName]))>0` |INFO |<p>Manual close: YES</p><p>**Depends on**:</p><p>- System name has changed</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/Dell iDRAC by SNMP/system.hw.serialnumber,#1)<>last(/Dell iDRAC by SNMP/system.hw.serialnumber,#2) and length(last(/Dell iDRAC by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|Firmware has changed |<p>Firmware version has changed. Ack to close</p> |`last(/Dell iDRAC by SNMP/system.hw.firmware,#1)<>last(/Dell iDRAC by SNMP/system.hw.firmware,#2) and length(last(/Dell iDRAC by SNMP/system.hw.firmware))>0` |INFO |<p>Manual close: YES</p> |
+|{#DISK_NAME}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1` |HIGH | |
+|{#DISK_NAME}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors</p> |`count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS:\"nonCritical\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISK_NAME}: Physical disk failed</p> |
+|{#DISK_NAME}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/Dell iDRAC by SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/Dell iDRAC by SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/Dell iDRAC by SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|{#DISK_NAME}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`count(/Dell iDRAC by SNMP/system.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS}")=1` |HIGH |<p>**Depends on**:</p><p>- {#DISK_NAME}: Physical disk failed</p> |
+|{#PSU_DESCR}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"nonRecoverable\"}")=1` |AVERAGE | |
+|{#PSU_DESCR}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"nonCritical\"}")=1` |WARNING |<p>**Depends on**:</p><p>- {#PSU_DESCR}: Power supply is in critical state</p> |
+|System is in unrecoverable state! |<p>Please check the device for faults</p> |`count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1` |HIGH | |
+|System status is in critical state |<p>Please check the device for errors</p> |`count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p> |
+|System status is in warning state |<p>Please check the device for warnings</p> |`count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Dell iDRAC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell iDRAC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell iDRAC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell iDRAC by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Dell iDRAC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Dell iDRAC by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Dell iDRAC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell iDRAC by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Dell iDRAC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_LOCALE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"} or last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCALE}: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCALE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"} or last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|{#SENSOR_LOCALE}: Temperature is too low |<p>-</p> |`avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|{#SENSOR_LOCALE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"} or last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_WARN_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_LOCALE}: Temperature is above critical threshold</p> |
+|{#SENSOR_LOCALE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"} or last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_CRIT_STATUS} or last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS} `<p>Recovery expression:</p>`max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
+|{#SENSOR_LOCALE}: Temperature is too low |<p>-</p> |`avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
+|Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors</p> |`count(/Dell iDRAC by SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS:\"failed\"}")=1` |HIGH | |
+|Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk is in warning state |<p>Please check virtual disk for warnings or errors</p> |`count(/Dell iDRAC by SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_WARN_STATUS:\"degraded\"}")=1` |AVERAGE |<p>**Depends on**:</p><p>- Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/dell_idrac_snmp/template_server_dell_idrac_snmp.yaml b/templates/server/dell_idrac_snmp/template_server_dell_idrac_snmp.yaml
index 33ef0688d01..34ae4218c7e 100644
--- a/templates/server/dell_idrac_snmp/template_server_dell_idrac_snmp.yaml
+++ b/templates/server/dell_idrac_snmp/template_server_dell_idrac_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:21:01Z'
+ date: '2022-10-27T14:23:00Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 43dc5c8a9a0e4786b64e44422c7f32b4
- template: 'Dell iDRAC SNMP'
- name: 'Dell iDRAC SNMP'
+ template: 'Dell iDRAC by SNMP'
+ name: 'Dell iDRAC by SNMP'
description: |
Template Server iDRAC
@@ -41,7 +41,7 @@ zabbix_export:
triggers:
-
uuid: a6e3c67a99104c6f8672e3826cba009f
- expression: 'max(/Dell iDRAC SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell iDRAC by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -67,14 +67,14 @@ zabbix_export:
triggers:
-
uuid: 145ea57d03d3460cb86272493e99356a
- expression: 'min(/Dell iDRAC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell iDRAC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Dell iDRAC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell iDRAC by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Dell iDRAC SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell iDRAC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -100,17 +100,17 @@ zabbix_export:
triggers:
-
uuid: cd49c04001c74051b585f519503861d0
- expression: 'avg(/Dell iDRAC SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Dell iDRAC by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Dell iDRAC SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell iDRAC SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Dell iDRAC by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Dell iDRAC by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Dell iDRAC SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell iDRAC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -204,7 +204,7 @@ zabbix_export:
triggers:
-
uuid: e816b86474e6471eb48cbda563dfddd6
- expression: 'last(/Dell iDRAC SNMP/system.hw.firmware,#1)<>last(/Dell iDRAC SNMP/system.hw.firmware,#2) and length(last(/Dell iDRAC SNMP/system.hw.firmware))>0'
+ expression: 'last(/Dell iDRAC by SNMP/system.hw.firmware,#1)<>last(/Dell iDRAC by SNMP/system.hw.firmware,#2) and length(last(/Dell iDRAC by SNMP/system.hw.firmware))>0'
name: 'Firmware has changed'
opdata: 'Current value: {ITEM.LASTVALUE1}'
priority: INFO
@@ -263,7 +263,7 @@ zabbix_export:
triggers:
-
uuid: 6f5b00a889804fbeb41c4246b29bd5f1
- expression: 'last(/Dell iDRAC SNMP/system.hw.serialnumber,#1)<>last(/Dell iDRAC SNMP/system.hw.serialnumber,#2) and length(last(/Dell iDRAC SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/Dell iDRAC by SNMP/system.hw.serialnumber,#1)<>last(/Dell iDRAC by SNMP/system.hw.serialnumber,#2) and length(last(/Dell iDRAC by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -350,7 +350,7 @@ zabbix_export:
triggers:
-
uuid: ce1b064b2a07450d9b51b6b12bd752a9
- expression: 'last(/Dell iDRAC SNMP/system.name,#1)<>last(/Dell iDRAC SNMP/system.name,#2) and length(last(/Dell iDRAC SNMP/system.name))>0'
+ expression: 'last(/Dell iDRAC by SNMP/system.name,#1)<>last(/Dell iDRAC by SNMP/system.name,#2) and length(last(/Dell iDRAC by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -428,7 +428,7 @@ zabbix_export:
triggers:
-
uuid: 6d07848a4ded4e4fb0383ff12234ed25
- expression: 'count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
name: 'System is in unrecoverable state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -442,7 +442,7 @@ zabbix_export:
value: performance
-
uuid: b47601a02003409896d79e3c99093aca
- expression: 'count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -450,7 +450,7 @@ zabbix_export:
dependencies:
-
name: 'System is in unrecoverable state!'
- expression: 'count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
tags:
-
tag: scope
@@ -460,7 +460,7 @@ zabbix_export:
value: performance
-
uuid: a323c8f5ca8d4517b0451677bd43c4db
- expression: 'count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -468,10 +468,10 @@ zabbix_export:
dependencies:
-
name: 'System is in unrecoverable state!'
- expression: 'count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
-
name: 'System status is in critical state'
- expression: 'count(/Dell iDRAC SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.status[globalSystemStatus.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -505,7 +505,7 @@ zabbix_export:
triggers:
-
uuid: fba72cbc4f12495b9f35d0f77a9330b8
- expression: 'last(/Dell iDRAC SNMP/system.sw.os[systemOSName],#1)<>last(/Dell iDRAC SNMP/system.sw.os[systemOSName],#2) and length(last(/Dell iDRAC SNMP/system.sw.os[systemOSName]))>0'
+ expression: 'last(/Dell iDRAC by SNMP/system.sw.os[systemOSName],#1)<>last(/Dell iDRAC by SNMP/system.sw.os[systemOSName],#2) and length(last(/Dell iDRAC by SNMP/system.sw.os[systemOSName]))>0'
name: 'Operating system description has changed'
priority: INFO
description: 'Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.'
@@ -513,7 +513,7 @@ zabbix_export:
dependencies:
-
name: 'System name has changed'
- expression: 'last(/Dell iDRAC SNMP/system.name,#1)<>last(/Dell iDRAC SNMP/system.name,#2) and length(last(/Dell iDRAC SNMP/system.name))>0'
+ expression: 'last(/Dell iDRAC by SNMP/system.name,#1)<>last(/Dell iDRAC by SNMP/system.name,#2) and length(last(/Dell iDRAC by SNMP/system.name))>0'
tags:
-
tag: scope
@@ -542,7 +542,7 @@ zabbix_export:
triggers:
-
uuid: 22ae441fffdd48919be0041e1507a479
- expression: 'max(/Dell iDRAC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Dell iDRAC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -550,7 +550,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Dell iDRAC SNMP/icmpping,#3)=0'
+ expression: 'max(/Dell iDRAC by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -599,7 +599,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7b9a7b970ac049589912d8e208baf2e2
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
name: 'Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -613,7 +613,7 @@ zabbix_export:
value: performance
-
uuid: fc2eeac871464a65930bbbb2341c803f
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS}")=1'
name: 'Battery {#BATTERY_NUM}: Disk array cache controller battery is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -621,7 +621,7 @@ zabbix_export:
dependencies:
-
name: 'Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state!'
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -631,7 +631,7 @@ zabbix_export:
value: performance
-
uuid: d36acb231d99493b9a760bf231001b4d
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_BATTERY_OK_STATUS}")=1'
name: 'Battery {#BATTERY_NUM}: Disk array cache controller battery is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -639,10 +639,10 @@ zabbix_export:
dependencies:
-
name: 'Battery {#BATTERY_NUM}: Disk array cache controller battery is in critical state!'
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS}")=1'
-
name: 'Battery {#BATTERY_NUM}: Disk array cache controller battery is in warning state'
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.cache.battery.status[batteryState.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS}")=1'
tags:
-
tag: scope
@@ -705,7 +705,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a1bca91682e84a7b8866ce443cfcbd44
- expression: 'count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalLower\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableLower\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalLower\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableLower\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1'
name: '{#FAN_DESCR}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -719,7 +719,7 @@ zabbix_export:
value: performance
-
uuid: 981f52ec4ba44b558bdbc5775622bc0c
- expression: 'count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalLower\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS:\"nonCriticalLower\"}")=1'
name: '{#FAN_DESCR}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -727,7 +727,7 @@ zabbix_export:
dependencies:
-
name: '{#FAN_DESCR}: Fan is in critical state'
- expression: 'count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableUpper\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalLower\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableLower\"}")=1 or count(/Dell iDRAC SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableUpper\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"criticalLower\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"nonRecoverableLower\"}")=1 or count(/Dell iDRAC by SNMP/sensor.fan.status[coolingDeviceStatus.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS:\"failed\"}")=1'
tags:
-
tag: scope
@@ -799,7 +799,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b037fad011764721a030bdde50f6ede3
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"critical\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"critical\"}")=1'
name: '{#CNTLR_NAME}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -807,7 +807,7 @@ zabbix_export:
dependencies:
-
name: '{#CNTLR_NAME}: Disk array controller is in unrecoverable state!'
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1'
tags:
-
tag: scope
@@ -817,7 +817,7 @@ zabbix_export:
value: performance
-
uuid: 55a0631d0ab24bc6ad5a6c4ef7d1be30
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1'
name: '{#CNTLR_NAME}: Disk array controller is in unrecoverable state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: DISASTER
@@ -831,7 +831,7 @@ zabbix_export:
value: performance
-
uuid: 226ab2efc25d46c9adda8f763fe4a65f
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"nonCritical\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS:\"nonCritical\"}")=1'
name: '{#CNTLR_NAME}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -839,10 +839,10 @@ zabbix_export:
dependencies:
-
name: '{#CNTLR_NAME}: Disk array controller is in critical state'
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"critical\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS:\"critical\"}")=1'
-
name: '{#CNTLR_NAME}: Disk array controller is in unrecoverable state!'
- expression: 'count(/Dell iDRAC SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.diskarray.status[controllerComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_FAIL_STATUS:\"nonRecoverable\"}")=1'
tags:
-
tag: scope
@@ -945,7 +945,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: eb26b6915b9f4ce6983566df9ee4db96
- expression: 'last(/Dell iDRAC SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/Dell iDRAC SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/Dell iDRAC SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
+ expression: 'last(/Dell iDRAC by SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#1)<>last(/Dell iDRAC by SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}],#2) and length(last(/Dell iDRAC by SNMP/system.hw.physicaldisk.serialnumber[physicalDiskSerialNo.{#SNMPINDEX}]))>0'
name: '{#DISK_NAME}: Disk has been replaced'
event_name: '{#DISK_NAME}: Disk has been replaced (new serial number received)'
priority: INFO
@@ -1003,7 +1003,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7dc1a088ebd74702b0fb4e0a20edbed2
- expression: 'count(/Dell iDRAC SNMP/system.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.physicaldisk.smart_status[physicalDiskSmartAlertIndication.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS}")=1'
name: '{#DISK_NAME}: Physical disk S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1011,7 +1011,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_NAME}: Physical disk failed'
- expression: 'count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1'
tags:
-
tag: scope
@@ -1049,7 +1049,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5eedc39db9a348df8e547be6401c0814
- expression: 'count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1'
name: '{#DISK_NAME}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1063,7 +1063,7 @@ zabbix_export:
value: performance
-
uuid: 6defa44f91ee4fb5b11b92ba64f07b48
- expression: 'count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS:\"nonCritical\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS:\"nonCritical\"}")=1'
name: '{#DISK_NAME}: Physical disk is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1071,7 +1071,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_NAME}: Physical disk failed'
- expression: 'count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"critical\"}")=1 or count(/Dell iDRAC by SNMP/system.hw.physicaldisk.status[physicalDiskComponentStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS:\"nonRecoverable\"}")=1'
tags:
-
tag: scope
@@ -1109,7 +1109,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 9f57b49984864af188b178dc2da85b71
- expression: 'count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"nonRecoverable\"}")=1'
name: '{#PSU_DESCR}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1123,7 +1123,7 @@ zabbix_export:
value: performance
-
uuid: d7d1b3d889254ae288348cd6b77bad5f
- expression: 'count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"nonCritical\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS:\"nonCritical\"}")=1'
name: '{#PSU_DESCR}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1131,7 +1131,7 @@ zabbix_export:
dependencies:
-
name: '{#PSU_DESCR}: Power supply is in critical state'
- expression: 'count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Dell iDRAC SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"nonRecoverable\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"critical\"}")=1 or count(/Dell iDRAC by SNMP/sensor.psu.status[powerSupplyStatus.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS:\"nonRecoverable\"}")=1'
tags:
-
tag: scope
@@ -1198,9 +1198,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 992e0a871cef40f6b859e251fd5d75fd
- expression: 'avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
+ expression: 'avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
+ recovery_expression: 'min(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
name: '{#SENSOR_LOCALE}: Temperature is too low'
event_name: '{#SENSOR_LOCALE}: Temperature is too low: <{$TEMP_CRIT_LOW:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1216,13 +1216,13 @@ zabbix_export:
-
uuid: 8d659cefdff143bbaff8d6cdc8bbf7a3
expression: |
- avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}
+ avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
name: '{#SENSOR_LOCALE}: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCALE}: Temperature is above critical threshold: >{$TEMP_CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1238,11 +1238,11 @@ zabbix_export:
-
uuid: 45ab3beb5a3b4271861330632ff37c55
expression: |
- avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}
+ avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
+ recovery_expression: 'max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
name: '{#SENSOR_LOCALE}: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCALE}: Temperature is above warning threshold: >{$TEMP_WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1252,12 +1252,12 @@ zabbix_export:
-
name: '{#SENSOR_LOCALE}: Temperature is above critical threshold'
expression: |
- avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}
+ avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
- recovery_expression: 'max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.Ambient.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ recovery_expression: 'max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -1324,9 +1324,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: edb89d83ecc144cdbccdb41f8842d572
- expression: 'avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: '{#SENSOR_LOCALE}: Temperature is too low'
event_name: '{#SENSOR_LOCALE}: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1342,13 +1342,13 @@ zabbix_export:
-
uuid: 54c2b7095b7d4550a2d1dbe14990dd0a
expression: |
- avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}
+ avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: '{#SENSOR_LOCALE}: Temperature is above critical threshold'
event_name: '{#SENSOR_LOCALE}: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1364,11 +1364,11 @@ zabbix_export:
-
uuid: eb2182b46c294fa381b35ab31c7ac6d4
expression: |
- avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}
+ avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: '{#SENSOR_LOCALE}: Temperature is above warning threshold'
event_name: '{#SENSOR_LOCALE}: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1378,12 +1378,12 @@ zabbix_export:
-
name: '{#SENSOR_LOCALE}: Temperature is above critical threshold'
expression: |
- avg(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}
+ avg(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_CRIT_STATUS}
or
- last(/Dell iDRAC SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
- recovery_expression: 'max(/Dell iDRAC SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ last(/Dell iDRAC by SNMP/sensor.temp.status[temperatureProbeStatus.CPU.{#SNMPINDEX}])={$TEMP_DISASTER_STATUS}
+ recovery_expression: 'max(/Dell iDRAC by SNMP/sensor.temp.value[temperatureProbeReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -1533,7 +1533,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 457783fb014a4cae9d47a1cb17d8d31e
- expression: 'count(/Dell iDRAC SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS:\"failed\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS:\"failed\"}")=1'
name: 'Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1547,7 +1547,7 @@ zabbix_export:
value: performance
-
uuid: d0c6dbaa042f40559d855acb1b61977a
- expression: 'count(/Dell iDRAC SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_WARN_STATUS:\"degraded\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_WARN_STATUS:\"degraded\"}")=1'
name: 'Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1555,7 +1555,7 @@ zabbix_export:
dependencies:
-
name: 'Disk {#SNMPVALUE}({#DISK_NAME}): Virtual disk failed'
- expression: 'count(/Dell iDRAC SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS:\"failed\"}")=1'
+ expression: 'count(/Dell iDRAC by SNMP/system.hw.virtualdisk.status[virtualDiskState.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS:\"failed\"}")=1'
tags:
-
tag: scope
@@ -1947,7 +1947,7 @@ zabbix_export:
triggers:
-
uuid: c0efbe61effc494a970e0e02b9ce8f55
- expression: '(last(/Dell iDRAC SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell iDRAC SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell iDRAC SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell iDRAC SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Dell iDRAC by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Dell iDRAC by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Dell iDRAC by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Dell iDRAC by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1956,7 +1956,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Dell iDRAC SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Dell iDRAC by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/server/hp/hp_bl460_snmp/README.md b/templates/server/hp/hp_bl460_snmp/README.md
index d6e1a8e3159..c7927e839fc 100644
--- a/templates/server/hp/hp_bl460_snmp/README.md
+++ b/templates/server/hp/hp_bl460_snmp/README.md
@@ -1,9 +1,9 @@
-# HPE ProLiant BL460 SNMP
+# HPE ProLiant BL460 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring HPE ProLiant BL460 servers with HP iLO version 4 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -122,54 +122,54 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
-|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
-|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
-|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL460 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL460 SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL460 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL460 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
-|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
-|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
-|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant BL460 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL460 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL460 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL460 SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant BL460 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
-|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
-|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
-|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
-|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
-|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
-|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
-|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
-|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
-|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
-|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
-|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
-|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
-|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
-|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
+|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
+|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
+|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
+|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL460 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL460 by SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL460 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL460 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
+|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
+|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
+|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant BL460 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL460 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL460 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL460 by SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant BL460 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
+|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
+|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
+|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
+|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
+|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
+|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
+|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
+|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
+|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
+|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
+|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
+|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
+|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
+|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL460 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/hp/hp_bl460_snmp/template_server_hp_bl460_snmp.yaml b/templates/server/hp/hp_bl460_snmp/template_server_hp_bl460_snmp.yaml
index 1dd56363b8a..aa0f52262c1 100644
--- a/templates/server/hp/hp_bl460_snmp/template_server_hp_bl460_snmp.yaml
+++ b/templates/server/hp/hp_bl460_snmp/template_server_hp_bl460_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:52:39Z'
+ date: '2022-10-27T14:22:57Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 172ec7e51f1c4a6ba49baffbab3dda97
- template: 'HPE ProLiant BL460 SNMP'
- name: 'HPE ProLiant BL460 SNMP'
+ template: 'HPE ProLiant BL460 by SNMP'
+ name: 'HPE ProLiant BL460 by SNMP'
description: |
Template for HPE ProLiant BL460 servers with HP iLO version 4 and later.
@@ -120,7 +120,7 @@ zabbix_export:
triggers:
-
uuid: 1bc442ba67dc42d298d98feb845d8730
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL460 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL460 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL460 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL460 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 87570f607b174ebe887920034a1be1ef
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL460 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL460 SNMP/hp.server.name[sysName]))>0'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL460 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL460 by SNMP/hp.server.name[sysName]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -314,7 +314,7 @@ zabbix_export:
triggers:
-
uuid: 4d7ac12aec954df2b369ddd0536d3bd5
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -325,7 +325,7 @@ zabbix_export:
value: available
-
uuid: 9ffbca9c012541b9a36956b4ae06d339
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -333,7 +333,7 @@ zabbix_export:
dependencies:
-
name: 'System status is in critical state'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -375,7 +375,7 @@ zabbix_export:
triggers:
-
uuid: 236a5d37e58a415aa81db6e59eb826dc
- expression: 'max(/HPE ProLiant BL460 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HPE ProLiant BL460 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -441,7 +441,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 42c0ff05c06f47089322dface6c54778
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -452,7 +452,7 @@ zabbix_export:
value: available
-
uuid: 28f83720bdd84ab3acb43cc8caac7507
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -460,7 +460,7 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
tags:
-
tag: scope
@@ -522,7 +522,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d9fc0ecef7844e7190d89f4747f82661
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -533,7 +533,7 @@ zabbix_export:
value: available
-
uuid: 9b60ae9eec734644bcff9cbac9407b08
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -541,14 +541,14 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
tags:
-
tag: scope
value: available
-
uuid: 61e28304c16f4855abfbcef8249a2fa6
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -556,10 +556,10 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
tags:
-
tag: scope
@@ -632,7 +632,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d0e8bcc0510c4e86bfcd3e9d601f83e0
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -643,7 +643,7 @@ zabbix_export:
value: available
-
uuid: a38ea92527b44599b690c068a62481ed
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: '{#CNTLR_LOCATION}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -651,7 +651,7 @@ zabbix_export:
dependencies:
-
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
tags:
-
tag: scope
@@ -700,7 +700,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ab33e6666fd14aac8f703c72fd9b760e
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -711,7 +711,7 @@ zabbix_export:
value: available
-
uuid: a9098b4dcbe04b3a82f0353f115345d7
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
name: 'Fan {#SNMPINDEX}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -719,7 +719,7 @@ zabbix_export:
dependencies:
-
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
tags:
-
tag: scope
@@ -770,7 +770,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 477f8237ed7c4d99af92e94f7563e01c
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -781,7 +781,7 @@ zabbix_export:
value: available
-
uuid: 5962382262854335bc42ae47203e44a7
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -789,7 +789,7 @@ zabbix_export:
dependencies:
-
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
tags:
-
tag: scope
@@ -893,7 +893,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d3dbef930bca4808ae3bf32ba84a987a
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
name: '{#DISK_LOCATION}: Disk has been replaced'
event_name: '{#DISK_LOCATION}: Disk has been replaced (new serial number received)'
priority: INFO
@@ -968,7 +968,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6fb9a3a867f74290974b106755763369
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: '{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -976,7 +976,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1014,7 +1014,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 21224423e69148a797e5ae4fcdda8ed5
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
name: '{#DISK_LOCATION}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1025,7 +1025,7 @@ zabbix_export:
value: available
-
uuid: ff246b7598f24ab88aa6e7119750e57b
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
name: '{#DISK_LOCATION}: Physical disk is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1033,7 +1033,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1081,7 +1081,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c0976740671a4ee1b524b2be84eac05f
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1092,7 +1092,7 @@ zabbix_export:
value: available
-
uuid: 4245fe8df0ec42fb8698cd54810357d0
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1100,7 +1100,7 @@ zabbix_export:
dependencies:
-
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
tags:
-
tag: scope
@@ -1166,7 +1166,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 12ca340ef2cc4d639940375e84fc1384
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
name: 'Ambient: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1177,7 +1177,7 @@ zabbix_export:
value: notice
-
uuid: 83775e86b0b6450399f0739bcd7aeb42
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
name: 'Ambient: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1187,7 +1187,7 @@ zabbix_export:
value: available
-
uuid: 1e61e8b2ba4346f2962a3498a147f65e
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
name: 'Ambient: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1276,7 +1276,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b3b17ce8480f4ff5bbc4cba02e53190d
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
name: 'CPU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1287,7 +1287,7 @@ zabbix_export:
value: notice
-
uuid: 1d2cc0b823134b9b901a0292e731f882
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
name: 'CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1297,7 +1297,7 @@ zabbix_export:
value: available
-
uuid: c9edcad3712d4915a5a3700916621525
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
name: 'CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1386,7 +1386,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1978105618f44f439f40b7e6b7dbb5dc
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
name: '{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1397,7 +1397,7 @@ zabbix_export:
value: notice
-
uuid: feee1c3e792044ecbb07ffed47b2fddd
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
name: '{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1407,7 +1407,7 @@ zabbix_export:
value: available
-
uuid: 250291ba7b404dd287b14034145d7ee0
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
name: '{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1514,7 +1514,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2d06da621e5946ea88bf158cabd4fcbd
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
name: 'I/O-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1525,7 +1525,7 @@ zabbix_export:
value: notice
-
uuid: 5ca16e1ea7d84aa7bed31ba05f7df50e
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
name: 'I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1535,7 +1535,7 @@ zabbix_export:
value: available
-
uuid: 8a2468bf1cd14065af733b0d045c6031
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
name: 'I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1624,7 +1624,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 997f65c5ee1d473dbe22a8517091cf3e
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
name: 'Memory-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1635,7 +1635,7 @@ zabbix_export:
value: notice
-
uuid: 8c3b5591160e4797ae1b49f9f14439ff
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
name: 'Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1645,7 +1645,7 @@ zabbix_export:
value: available
-
uuid: 8665b434ba594073bc55f44b668dcee0
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
name: 'Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1737,7 +1737,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a292c5aaa1b3428aa4b011854d9c5e1d
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
name: 'PSU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1748,7 +1748,7 @@ zabbix_export:
value: notice
-
uuid: f557d93b186b42b4931e23640e54648f
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
name: 'PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1758,7 +1758,7 @@ zabbix_export:
value: available
-
uuid: e3cac6176199401181fbbeacf4838bad
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
name: 'PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1847,7 +1847,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1bad1b13dcdf4689b9a784e44726196b
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
name: 'System-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1858,7 +1858,7 @@ zabbix_export:
value: notice
-
uuid: 42fff974036d4fb6b9181adf1b3efa09
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
name: 'System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1868,7 +1868,7 @@ zabbix_export:
value: available
-
uuid: d184f774ab614a0b9f1f7ebc82cd1356
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
name: 'System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1992,7 +1992,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e11c5781a34642c49ad15cdcd71dacc3
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -2003,7 +2003,7 @@ zabbix_export:
value: available
-
uuid: 10f0bdba64184a9389a46b9bab18719a
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2011,7 +2011,7 @@ zabbix_export:
dependencies:
-
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
- expression: 'last(/HPE ProLiant BL460 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL460 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
tags:
-
tag: scope
@@ -2767,7 +2767,7 @@ zabbix_export:
triggers:
-
uuid: 9159ee66dbe4498cba29daca24ddcb5f
- expression: '(last(/HPE ProLiant BL460 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL460 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL460 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL460 SNMP/hp.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/HPE ProLiant BL460 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL460 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL460 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL460 by SNMP/hp.server.net.uptime[sysUpTime])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/hp/hp_bl920_snmp/README.md b/templates/server/hp/hp_bl920_snmp/README.md
index 02eb6d5a60d..e2e5f21938f 100644
--- a/templates/server/hp/hp_bl920_snmp/README.md
+++ b/templates/server/hp/hp_bl920_snmp/README.md
@@ -1,9 +1,9 @@
-# HPE ProLiant BL920 SNMP
+# HPE ProLiant BL920 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring HPE ProLiant BL920 servers with HP iLO version 4 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -122,54 +122,54 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
-|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
-|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
-|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL920 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL920 SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL920 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL920 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
-|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
-|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
-|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant BL920 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL920 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL920 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL920 SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant BL920 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
-|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
-|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
-|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
-|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
-|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
-|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
-|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
-|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
-|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
-|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
-|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
-|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
-|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
-|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
+|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
+|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
+|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
+|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL920 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL920 by SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL920 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL920 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
+|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
+|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
+|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant BL920 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL920 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL920 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL920 by SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant BL920 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
+|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
+|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
+|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
+|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
+|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
+|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
+|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
+|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
+|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
+|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
+|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
+|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
+|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
+|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant BL920 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/hp/hp_bl920_snmp/template_server_hp_bl920_snmp.yaml b/templates/server/hp/hp_bl920_snmp/template_server_hp_bl920_snmp.yaml
index 3783cdf0038..05b93d3886c 100644
--- a/templates/server/hp/hp_bl920_snmp/template_server_hp_bl920_snmp.yaml
+++ b/templates/server/hp/hp_bl920_snmp/template_server_hp_bl920_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:52:42Z'
+ date: '2022-10-27T14:22:58Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 586119e5e27e4062a3cce8601ecb8d71
- template: 'HPE ProLiant BL920 SNMP'
- name: 'HPE ProLiant BL920 SNMP'
+ template: 'HPE ProLiant BL920 by SNMP'
+ name: 'HPE ProLiant BL920 by SNMP'
description: |
Template for HPE ProLiant BL920 servers with HP iLO version 4 and later.
@@ -120,7 +120,7 @@ zabbix_export:
triggers:
-
uuid: 9eb77df5f95149e49d63a7191e68756c
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL920 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL920 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant BL920 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant BL920 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: c0eed9d2eccc4ae99128a318de92df8d
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL920 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL920 SNMP/hp.server.name[sysName]))>0'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant BL920 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant BL920 by SNMP/hp.server.name[sysName]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -314,7 +314,7 @@ zabbix_export:
triggers:
-
uuid: 187f7a3872a2481f962f16c422911827
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -325,7 +325,7 @@ zabbix_export:
value: available
-
uuid: 51c633cbed0d4684b2e0619e2f0ab64d
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -333,7 +333,7 @@ zabbix_export:
dependencies:
-
name: 'System status is in critical state'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -375,7 +375,7 @@ zabbix_export:
triggers:
-
uuid: 35cce5a461c04163a0575d7f831ea3d9
- expression: 'max(/HPE ProLiant BL920 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HPE ProLiant BL920 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -441,7 +441,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 507e925180034f2d97d09f9fd5c9e311
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -452,7 +452,7 @@ zabbix_export:
value: available
-
uuid: 20625bb4b0b74d98818685991ac5df66
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -460,7 +460,7 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
tags:
-
tag: scope
@@ -522,7 +522,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a470d994b661401882162dc2267eaa3d
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -533,7 +533,7 @@ zabbix_export:
value: available
-
uuid: 5d0fd4a9b8bc49aaaeb213b310b85606
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -541,14 +541,14 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
tags:
-
tag: scope
value: available
-
uuid: 1efe26e2e6a8404b86143b3fea812f23
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -556,10 +556,10 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
tags:
-
tag: scope
@@ -632,7 +632,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a8c87ea0b6ba42e7ba6f97a2441237bb
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -643,7 +643,7 @@ zabbix_export:
value: available
-
uuid: 1cb40d36fda945df940c39f0ea1adf22
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: '{#CNTLR_LOCATION}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -651,7 +651,7 @@ zabbix_export:
dependencies:
-
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
tags:
-
tag: scope
@@ -700,7 +700,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c2a1f0726e6e46658bf236c7daea432c
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -711,7 +711,7 @@ zabbix_export:
value: available
-
uuid: f8e66a8a7df84962be215388d6fd567b
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
name: 'Fan {#SNMPINDEX}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -719,7 +719,7 @@ zabbix_export:
dependencies:
-
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
tags:
-
tag: scope
@@ -770,7 +770,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 880d8c11080043f4a1b8e31823bee081
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -781,7 +781,7 @@ zabbix_export:
value: available
-
uuid: 7894c073515c42abac3a3704acaf124c
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -789,7 +789,7 @@ zabbix_export:
dependencies:
-
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
tags:
-
tag: scope
@@ -893,7 +893,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 97b42a2ce49f4a1786cfa8db1f6477ac
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
name: '{#DISK_LOCATION}: Disk has been replaced'
event_name: '{#DISK_LOCATION}: Disk has been replaced (new serial number received)'
priority: INFO
@@ -968,7 +968,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fdd888b4e72344eda1845fdfe7d261e4
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: '{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -976,7 +976,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1014,7 +1014,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1e8640dc080c4d19a94c6fcda2451cfb
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
name: '{#DISK_LOCATION}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1025,7 +1025,7 @@ zabbix_export:
value: available
-
uuid: 74eef1a7f26145d7963d8801c8a625e7
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
name: '{#DISK_LOCATION}: Physical disk is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1033,7 +1033,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1081,7 +1081,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a256fdd66c0043dfb337163bcf0c5ebe
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1092,7 +1092,7 @@ zabbix_export:
value: available
-
uuid: 18e8aca665b34fb5a2af5d94cdd40f84
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1100,7 +1100,7 @@ zabbix_export:
dependencies:
-
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
tags:
-
tag: scope
@@ -1166,7 +1166,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 74b07fcf8ef34e20a142ae11f6dbfeb4
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
name: 'Ambient: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1177,7 +1177,7 @@ zabbix_export:
value: notice
-
uuid: 0df275f3b0dd4c6d93936b39a88052fa
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
name: 'Ambient: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1187,7 +1187,7 @@ zabbix_export:
value: available
-
uuid: 1052d51569c543619e38b48318baaa29
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
name: 'Ambient: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1276,7 +1276,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 602bbb3e632540d4a46830c2c67d3b1c
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
name: 'CPU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1287,7 +1287,7 @@ zabbix_export:
value: notice
-
uuid: 25ea3db9def64b21b08f25f019c15fbd
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
name: 'CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1297,7 +1297,7 @@ zabbix_export:
value: available
-
uuid: f5ecaae4989f4e249138916b3657210d
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
name: 'CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1386,7 +1386,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6ea76d08b1e64364b15a9daa95c72d7c
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
name: '{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1397,7 +1397,7 @@ zabbix_export:
value: notice
-
uuid: 6287b204066e47d68871bc0783840b4c
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
name: '{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1407,7 +1407,7 @@ zabbix_export:
value: available
-
uuid: 8010259635ef4d92af61e935c9f62ff7
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
name: '{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1514,7 +1514,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 5f7818d02b764218a481e59cbcfe5fd7
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
name: 'I/O-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1525,7 +1525,7 @@ zabbix_export:
value: notice
-
uuid: fffdfe1c6d254f3fb096ab0561705223
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
name: 'I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1535,7 +1535,7 @@ zabbix_export:
value: available
-
uuid: a00a767a3b8349c2846139a6c76f826d
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
name: 'I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1624,7 +1624,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 78d936059d744eae8be8150dab2a6e5e
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
name: 'Memory-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1635,7 +1635,7 @@ zabbix_export:
value: notice
-
uuid: a6db4978fa834a7facd46a76f45f92a3
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
name: 'Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1645,7 +1645,7 @@ zabbix_export:
value: available
-
uuid: ee7cbf1997ca476283e3301856d22a5a
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
name: 'Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1737,7 +1737,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 809aea1302064232a321c12f2256414f
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
name: 'PSU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1748,7 +1748,7 @@ zabbix_export:
value: notice
-
uuid: b70bb5f4fe4b4d3bb6fa7027200f2b25
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
name: 'PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1758,7 +1758,7 @@ zabbix_export:
value: available
-
uuid: a4e3939f59a64dbfab377f68a62fa26b
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
name: 'PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1847,7 +1847,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6848521afcb54d72b136ee53176bc01d
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
name: 'System-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1858,7 +1858,7 @@ zabbix_export:
value: notice
-
uuid: 6b15c19600f9433093aa8d7d624fb623
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
name: 'System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1868,7 +1868,7 @@ zabbix_export:
value: available
-
uuid: 407c07a6d4f94ca1a8cf1f9db9d685db
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
name: 'System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1992,7 +1992,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7dadede9eb5640c5920b95dafc7191bb
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -2003,7 +2003,7 @@ zabbix_export:
value: available
-
uuid: ffdd42c48a7b493a941887b46be64fb0
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2011,7 +2011,7 @@ zabbix_export:
dependencies:
-
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
- expression: 'last(/HPE ProLiant BL920 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant BL920 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
tags:
-
tag: scope
@@ -2767,7 +2767,7 @@ zabbix_export:
triggers:
-
uuid: 97f107c88b6048f1b74412e8dfedc857
- expression: '(last(/HPE ProLiant BL920 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL920 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL920 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL920 SNMP/hp.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/HPE ProLiant BL920 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant BL920 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant BL920 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant BL920 by SNMP/hp.server.net.uptime[sysUpTime])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/hp/hp_dl360_snmp/README.md b/templates/server/hp/hp_dl360_snmp/README.md
index a97a9fe05ad..f0e6bcfbb8c 100644
--- a/templates/server/hp/hp_dl360_snmp/README.md
+++ b/templates/server/hp/hp_dl360_snmp/README.md
@@ -1,9 +1,9 @@
-# HPE ProLiant DL360 SNMP
+# HPE ProLiant DL360 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring HPE ProLiant DL360 servers with HP iLO version 4 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -122,54 +122,54 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
-|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
-|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
-|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL360 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL360 SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL360 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL360 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
-|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
-|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
-|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant DL360 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL360 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL360 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL360 SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant DL360 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
-|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
-|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
-|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
-|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
-|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
-|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
-|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
-|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
-|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
-|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
-|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
-|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
-|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
-|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
+|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
+|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
+|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
+|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL360 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL360 by SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL360 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL360 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
+|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
+|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
+|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant DL360 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL360 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL360 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL360 by SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant DL360 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
+|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
+|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
+|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
+|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
+|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
+|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
+|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
+|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
+|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
+|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
+|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
+|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
+|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
+|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL360 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/hp/hp_dl360_snmp/template_server_hp_dl360_snmp.yaml b/templates/server/hp/hp_dl360_snmp/template_server_hp_dl360_snmp.yaml
index a92cebdad6f..03a9df76c5a 100644
--- a/templates/server/hp/hp_dl360_snmp/template_server_hp_dl360_snmp.yaml
+++ b/templates/server/hp/hp_dl360_snmp/template_server_hp_dl360_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:52:44Z'
+ date: '2022-10-27T14:22:59Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 60cb9ccb922e4fd194a1d9573db10237
- template: 'HPE ProLiant DL360 SNMP'
- name: 'HPE ProLiant DL360 SNMP'
+ template: 'HPE ProLiant DL360 by SNMP'
+ name: 'HPE ProLiant DL360 by SNMP'
description: |
Template for HPE ProLiant DL360 servers with HP iLO version 4 and later.
@@ -120,7 +120,7 @@ zabbix_export:
triggers:
-
uuid: 1316d7def24a4a80adfdf4bc8ac5a12c
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL360 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL360 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL360 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL360 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 6431a1a0b8494b50bcbd18e283e7158e
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL360 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL360 SNMP/hp.server.name[sysName]))>0'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL360 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL360 by SNMP/hp.server.name[sysName]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -314,7 +314,7 @@ zabbix_export:
triggers:
-
uuid: 6cc840d5bccc4f1abfd7df6a161154ad
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -325,7 +325,7 @@ zabbix_export:
value: available
-
uuid: eab6760dda124629a9edcb2218ad3ad3
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -333,7 +333,7 @@ zabbix_export:
dependencies:
-
name: 'System status is in critical state'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -375,7 +375,7 @@ zabbix_export:
triggers:
-
uuid: 0b91663d4b684e46aaccdf480d1622f0
- expression: 'max(/HPE ProLiant DL360 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HPE ProLiant DL360 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -441,7 +441,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a6cd582e11804f0f939e841287305edc
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -452,7 +452,7 @@ zabbix_export:
value: available
-
uuid: bb1f9560a6d74bd9aaca3ffa04aec311
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -460,7 +460,7 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
tags:
-
tag: scope
@@ -522,7 +522,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6a3002495b7540a981c9909c540ede36
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -533,7 +533,7 @@ zabbix_export:
value: available
-
uuid: 2ee4cf4ddd9944c985ac522a04371a13
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -541,14 +541,14 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
tags:
-
tag: scope
value: available
-
uuid: 2cbed500a4c34f138623c31a86e227c4
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -556,10 +556,10 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
tags:
-
tag: scope
@@ -632,7 +632,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1c518fee6dbc49228768b3dd61a98057
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -643,7 +643,7 @@ zabbix_export:
value: available
-
uuid: 2dd65457ec524248ac5b1c1cfd9f3821
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: '{#CNTLR_LOCATION}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -651,7 +651,7 @@ zabbix_export:
dependencies:
-
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
tags:
-
tag: scope
@@ -700,7 +700,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 90cc1704d8c340309e23deb78620c861
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -711,7 +711,7 @@ zabbix_export:
value: available
-
uuid: 9b7692f49b604f0791934b58294881cd
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
name: 'Fan {#SNMPINDEX}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -719,7 +719,7 @@ zabbix_export:
dependencies:
-
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
tags:
-
tag: scope
@@ -770,7 +770,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: aaf66f1530f74d59919a1c505a8ae147
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -781,7 +781,7 @@ zabbix_export:
value: available
-
uuid: f943117ce7004390854a21c2e1cdb514
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -789,7 +789,7 @@ zabbix_export:
dependencies:
-
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
tags:
-
tag: scope
@@ -893,7 +893,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: ad74fc6568a0487e834b9e9da4127bb7
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
name: '{#DISK_LOCATION}: Disk has been replaced'
event_name: '{#DISK_LOCATION}: Disk has been replaced (new serial number received)'
priority: INFO
@@ -968,7 +968,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d0a86e4ee6ef46e8ade36dae70f69ad6
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: '{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -976,7 +976,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1014,7 +1014,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3eb8efcf6caa46ff892bd1d693996a4f
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
name: '{#DISK_LOCATION}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1025,7 +1025,7 @@ zabbix_export:
value: available
-
uuid: 1559184494d849cda3946a2b05b81cf3
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
name: '{#DISK_LOCATION}: Physical disk is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1033,7 +1033,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1081,7 +1081,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e01e8d01d65a4ce7a2990ee30ab02d84
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1092,7 +1092,7 @@ zabbix_export:
value: available
-
uuid: cbd3d4d3d3e0427f89a0972fbef56f63
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1100,7 +1100,7 @@ zabbix_export:
dependencies:
-
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
tags:
-
tag: scope
@@ -1166,7 +1166,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7a56b1e7bc7a4464abdf3004a903020e
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
name: 'Ambient: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1177,7 +1177,7 @@ zabbix_export:
value: notice
-
uuid: d0e3ccfb13a9489f877e07cccbecf89f
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
name: 'Ambient: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1187,7 +1187,7 @@ zabbix_export:
value: available
-
uuid: 4f40a124d4c949a89e6c31796faf37ae
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
name: 'Ambient: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1276,7 +1276,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a27ee21d95ff46f78807eaf31cdc0db4
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
name: 'CPU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1287,7 +1287,7 @@ zabbix_export:
value: notice
-
uuid: 97d97920b65c418186af30fdc8fea55e
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
name: 'CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1297,7 +1297,7 @@ zabbix_export:
value: available
-
uuid: f06e48cef80d4e13b8e1d1ba89b60d9d
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
name: 'CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1386,7 +1386,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fbbfe6536c1b4852916e93c6a6d8efd9
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
name: '{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1397,7 +1397,7 @@ zabbix_export:
value: notice
-
uuid: ef76129efb9a4744809682ff041cca21
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
name: '{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1407,7 +1407,7 @@ zabbix_export:
value: available
-
uuid: 1a2dd7941efa4792b0e933c26e4e9802
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
name: '{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1514,7 +1514,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1918208a434145668d0a196ad53bdefd
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
name: 'I/O-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1525,7 +1525,7 @@ zabbix_export:
value: notice
-
uuid: e6d9e708b1704c229e010cb0ae3f53c1
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
name: 'I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1535,7 +1535,7 @@ zabbix_export:
value: available
-
uuid: 325bf55e8d374d97ab240873ea177636
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
name: 'I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1624,7 +1624,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3d335c0712dd40eaa085714cbac51cca
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
name: 'Memory-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1635,7 +1635,7 @@ zabbix_export:
value: notice
-
uuid: e4b619a640d549099ead16e2c5085746
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
name: 'Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1645,7 +1645,7 @@ zabbix_export:
value: available
-
uuid: 7be4e1200cdf418497158e59979edf86
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
name: 'Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1737,7 +1737,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: fc3a93d232b144b9b2f2d8b95538b941
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
name: 'PSU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1748,7 +1748,7 @@ zabbix_export:
value: notice
-
uuid: 2f95466ff7ee4cf0bb45dfc800d680d3
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
name: 'PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1758,7 +1758,7 @@ zabbix_export:
value: available
-
uuid: 147e9de1a91d4473be384c5951812d9f
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
name: 'PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1847,7 +1847,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 31a1d664064644cba700ef61e4602523
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
name: 'System-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1858,7 +1858,7 @@ zabbix_export:
value: notice
-
uuid: c51ac08efa464b91a44e01387a9c3a6d
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
name: 'System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1868,7 +1868,7 @@ zabbix_export:
value: available
-
uuid: cca796d265034389afd8236ec26a1990
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
name: 'System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1992,7 +1992,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c49fb63092eb4764aae145d93f9daa33
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -2003,7 +2003,7 @@ zabbix_export:
value: available
-
uuid: 698ef7d90e95463c8ea7a14c5fa72be9
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2011,7 +2011,7 @@ zabbix_export:
dependencies:
-
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
- expression: 'last(/HPE ProLiant DL360 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL360 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
tags:
-
tag: scope
@@ -2767,7 +2767,7 @@ zabbix_export:
triggers:
-
uuid: 383e0e2d556d4354ae50f68c94333ded
- expression: '(last(/HPE ProLiant DL360 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL360 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL360 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL360 SNMP/hp.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/HPE ProLiant DL360 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL360 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL360 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL360 by SNMP/hp.server.net.uptime[sysUpTime])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/hp/hp_dl380_snmp/README.md b/templates/server/hp/hp_dl380_snmp/README.md
index 6ddd9bad5b7..b669a0c71c0 100644
--- a/templates/server/hp/hp_dl380_snmp/README.md
+++ b/templates/server/hp/hp_dl380_snmp/README.md
@@ -1,9 +1,9 @@
-# HPE ProLiant DL380 SNMP
+# HPE ProLiant DL380 by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
This is a template for monitoring HPE ProLiant DL380 servers with HP iLO version 4 and later via Zabbix SNMP agent that works without any external scripts.
## Setup
@@ -122,54 +122,54 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
-|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
-|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
-|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL380 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL380 SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL380 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL380 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
-|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
-|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
-|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
-|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
-|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant DL380 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL380 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL380 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL380 SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant DL380 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
-|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
-|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
-|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
-|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
-|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
-|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
-|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
-|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
-|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
-|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
-|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
-|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
-|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
-|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
-|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
+|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}` |HIGH | |
+|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state</p> |
+|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}` |AVERAGE | |
+|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL380 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL380 by SNMP/hp.server.name[sysName]))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL380 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL380 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0` |INFO |<p>Manual close: YES</p> |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed |<p>Please check the physical adapter.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3` |HIGH | |
+|{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link |<p>Please check the cable connections to this adapter.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4` |AVERAGE |<p>**Depends on**:</p><p>- {#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed</p> |
+|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}` |HIGH | |
+|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}` |AVERAGE | |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
+|System status is in critical state |<p>Please check the device for errors.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}` |HIGH | |
+|System status is in warning state |<p>Please check the device for warnings.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HPE ProLiant DL380 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL380 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL380 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL380 by SNMP/hp.server.net.uptime[sysUpTime])<10m)` |WARNING |<p>Manual close: YES</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HPE ProLiant DL380 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING | |
+|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
+|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
+|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
+|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
+|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
+|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
+|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
+|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
+|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
+|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
+|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
+|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
+|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
+|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
+|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors.</p> |`last(/HPE ProLiant DL380 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/hp/hp_dl380_snmp/template_server_hp_dl380_snmp.yaml b/templates/server/hp/hp_dl380_snmp/template_server_hp_dl380_snmp.yaml
index f2c09088e24..56f1935ec4f 100644
--- a/templates/server/hp/hp_dl380_snmp/template_server_hp_dl380_snmp.yaml
+++ b/templates/server/hp/hp_dl380_snmp/template_server_hp_dl380_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T10:52:46Z'
+ date: '2022-10-27T14:22:56Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: 379aaf7e87574debb4f5c3947a22ec68
- template: 'HPE ProLiant DL380 SNMP'
- name: 'HPE ProLiant DL380 SNMP'
+ template: 'HPE ProLiant DL380 by SNMP'
+ name: 'HPE ProLiant DL380 by SNMP'
description: |
Template for HPE ProLiant DL380 servers with HP iLO version 4 and later.
@@ -120,7 +120,7 @@ zabbix_export:
triggers:
-
uuid: bd81b8c420904f0bafa4fbf90d195967
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL380 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL380 SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#1)<>last(/HPE ProLiant DL380 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum],#2) and length(last(/HPE ProLiant DL380 by SNMP/hp.server.hw.serialnumber[cpqSiSysSerialNum]))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -206,7 +206,7 @@ zabbix_export:
triggers:
-
uuid: 168b1742abc340558631a577a1a3c4d9
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL380 SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL380 SNMP/hp.server.name[sysName]))>0'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.name[sysName],#1)<>last(/HPE ProLiant DL380 by SNMP/hp.server.name[sysName],#2) and length(last(/HPE ProLiant DL380 by SNMP/hp.server.name[sysName]))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -314,7 +314,7 @@ zabbix_export:
triggers:
-
uuid: e9bf032edb2e45f0b64cb904bf8d8403
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -325,7 +325,7 @@ zabbix_export:
value: available
-
uuid: 537c411a3d454a8b9dc64378e0e9a6cd
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.WARN}'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -333,7 +333,7 @@ zabbix_export:
dependencies:
-
name: 'System status is in critical state'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.status[cpqHeMibCondition])={$HEALTH.STATUS.CRIT}'
tags:
-
tag: scope
@@ -375,7 +375,7 @@ zabbix_export:
triggers:
-
uuid: 97c3665497ae46eb91d81c14c5f4ac06
- expression: 'max(/HPE ProLiant DL380 SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HPE ProLiant DL380 by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -441,7 +441,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4eb29401f4c7400ca87bb2449eb0f8e2
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -452,7 +452,7 @@ zabbix_export:
value: available
-
uuid: 0378b7339a3d482ea92f523f3d84c498
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.WARN:"degraded"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -460,7 +460,7 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"failed"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.BATTERY.STATUS.CRIT:"capacitorFailed"}'
tags:
-
tag: scope
@@ -522,7 +522,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 26955f1b216a493c9faa95b95359aa79
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -533,7 +533,7 @@ zabbix_export:
value: available
-
uuid: fc24efc3b41f410e9b0e806692f3dcf6
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -541,14 +541,14 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
tags:
-
tag: scope
value: available
-
uuid: d5a1edb8f9ea46f08344a07a84bd8865
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.OK:"enabled"} and last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK.ARRAY.CACHE.STATUS.WARN:"invalid"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -556,10 +556,10 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.CRIT:"cacheModCriticalFailure"}'
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModDegradedFailsafeSpeed"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheReadCacheNotMapped"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])={$DISK.ARRAY.CACHE.STATUS.WARN:"cacheModFlashMemNotAttached"}'
tags:
-
tag: scope
@@ -632,7 +632,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0e57c741a6d248b69cdc70b75fc63a0f
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -643,7 +643,7 @@ zabbix_export:
value: available
-
uuid: 4a66354e25c949d4aaaad02114f09e44
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.WARN}'
name: '{#CNTLR_LOCATION}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -651,7 +651,7 @@ zabbix_export:
dependencies:
-
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}])={$DISK.ARRAY.STATUS.CRIT}'
tags:
-
tag: scope
@@ -700,7 +700,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: f246a5184ea94ae3a793efec27998d5f
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -711,7 +711,7 @@ zabbix_export:
value: available
-
uuid: ba7f63e795764d77aae0b7ce62a19514
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.WARN}'
name: 'Fan {#SNMPINDEX}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -719,7 +719,7 @@ zabbix_export:
dependencies:
-
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}])={$FAN.STATUS.CRIT}'
tags:
-
tag: scope
@@ -770,7 +770,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 917ab8f90c3e43b887eb7fd851cf3b25
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -781,7 +781,7 @@ zabbix_export:
value: available
-
uuid: 51bb602b67624c5d932109a5e04068d3
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=4'
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has lost link'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -789,7 +789,7 @@ zabbix_export:
dependencies:
-
name: '{#ADAPTER_NAME} port {#ADAPTER_INDEX}: Adapter has failed'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.net.if.status[cpqNicIfPhysAdapterStatus.{#SNMPINDEX}])=3'
tags:
-
tag: scope
@@ -893,7 +893,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2b173fa3eec941e3b3d73c732740e210
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
name: '{#DISK_LOCATION}: Disk has been replaced'
event_name: '{#DISK_LOCATION}: Disk has been replaced (new serial number received)'
priority: INFO
@@ -968,7 +968,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 531875c8a5f54ca8ad2dabfa8a47b36b
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDrive"} or last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}])={$DISK.SMART.STATUS.FAIL:"replaceDriveSSDWearOut"}'
name: '{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -976,7 +976,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1014,7 +1014,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 12eac58ddff14f7dbbdba48eca464a5f
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
name: '{#DISK_LOCATION}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1025,7 +1025,7 @@ zabbix_export:
value: available
-
uuid: 977a4d4fb6604877a0f02bb2455691c4
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.WARN}'
name: '{#DISK_LOCATION}: Physical disk is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1033,7 +1033,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}])={$DISK.STATUS.FAIL}'
tags:
-
tag: scope
@@ -1081,7 +1081,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b42e415d5eb941989daaed3d1ac2e762
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1092,7 +1092,7 @@ zabbix_export:
value: available
-
uuid: d5b8b12a72934bcfb7ad6675a68a5297
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.WARN}'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1100,7 +1100,7 @@ zabbix_export:
dependencies:
-
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}])={$PSU.STATUS.CRIT}'
tags:
-
tag: scope
@@ -1166,7 +1166,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1af0ddbc9ffd43b2b6800d634d8186bb
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
name: 'Ambient: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1177,7 +1177,7 @@ zabbix_export:
value: notice
-
uuid: c49e51ac10c941798213d0f086e0631f
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
name: 'Ambient: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1187,7 +1187,7 @@ zabbix_export:
value: available
-
uuid: b1cfbc1702f54670b3f486da26c4887b
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
name: 'Ambient: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1276,7 +1276,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 039ab34804f446e580b779d1ab25ed4f
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
name: 'CPU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1287,7 +1287,7 @@ zabbix_export:
value: notice
-
uuid: 2cf8b917076440aa8209938cec69b905
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
name: 'CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1297,7 +1297,7 @@ zabbix_export:
value: available
-
uuid: cf69b02334e541b7a912a14c182dd56a
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
name: 'CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1386,7 +1386,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 6d7eb6bd348b43a2b584ceb1694c8bce
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
name: '{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1397,7 +1397,7 @@ zabbix_export:
value: notice
-
uuid: 43911269576b435db928e83901a16c5a
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
name: '{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1407,7 +1407,7 @@ zabbix_export:
value: available
-
uuid: b26842b776c545449354ccafb809d115
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
name: '{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1514,7 +1514,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: c8f2ef7311804357bff65d2d5c7f5d90
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
name: 'I/O-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1525,7 +1525,7 @@ zabbix_export:
value: notice
-
uuid: dda9f8bf4a094b69bb30affb26e23dd3
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
name: 'I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1535,7 +1535,7 @@ zabbix_export:
value: available
-
uuid: a0220dea091d4aca8d68a21a3d976496
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
name: 'I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1624,7 +1624,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: eca9c54385084934b88f4dc9d914b2e2
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
name: 'Memory-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1635,7 +1635,7 @@ zabbix_export:
value: notice
-
uuid: 70b139e0c8c644918c7f01cd09604078
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
name: 'Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1645,7 +1645,7 @@ zabbix_export:
value: available
-
uuid: 89aab6bad94e4d188475d6e36084593e
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
name: 'Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1737,7 +1737,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e792b530014d45b6ac7fc819db776c37
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
name: 'PSU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1748,7 +1748,7 @@ zabbix_export:
value: notice
-
uuid: 803317e9eaf04b519e63b7d1b9bfd610
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
name: 'PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1758,7 +1758,7 @@ zabbix_export:
value: available
-
uuid: 98616a3bae174922a0108b7c90339f08
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
name: 'PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1847,7 +1847,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2a0503b359904c71b355cb9e3da1b8fa
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
name: 'System-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1858,7 +1858,7 @@ zabbix_export:
value: notice
-
uuid: 09287730b82a47c4b365c09047d0b8e2
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
name: 'System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1868,7 +1868,7 @@ zabbix_export:
value: available
-
uuid: 5c7097cb91184a619fee33bd4faa296b
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
name: 'System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1992,7 +1992,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a59f9e473b7a4afd900edce47b11443d
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -2003,7 +2003,7 @@ zabbix_export:
value: available
-
uuid: 776bff7fb02e4948be7d81347c0c8624
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])<>{$VDISK.STATUS.OK}'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2011,7 +2011,7 @@ zabbix_export:
dependencies:
-
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
- expression: 'last(/HPE ProLiant DL380 SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
+ expression: 'last(/HPE ProLiant DL380 by SNMP/hp.server.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}])={$VDISK.STATUS.CRIT}'
tags:
-
tag: scope
@@ -2767,7 +2767,7 @@ zabbix_export:
triggers:
-
uuid: 9612f37005e5420582d499d7cb84a24e
- expression: '(last(/HPE ProLiant DL380 SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL380 SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL380 SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL380 SNMP/hp.server.net.uptime[sysUpTime])<10m)'
+ expression: '(last(/HPE ProLiant DL380 by SNMP/hp.server.hw.uptime[hrSystemUptime])>0 and last(/HPE ProLiant DL380 by SNMP/hp.server.hw.uptime[hrSystemUptime])<10m) or (last(/HPE ProLiant DL380 by SNMP/hp.server.hw.uptime[hrSystemUptime])=0 and last(/HPE ProLiant DL380 by SNMP/hp.server.net.uptime[sysUpTime])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
diff --git a/templates/server/hp_ilo_snmp/README.md b/templates/server/hp_ilo_snmp/README.md
index 6e1bf4f3a43..b9ab56040ea 100644
--- a/templates/server/hp_ilo_snmp/README.md
+++ b/templates/server/hp_ilo_snmp/README.md
@@ -1,9 +1,9 @@
-# HP iLO SNMP
+# HP iLO by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
for HP iLO adapters that support SNMP get. Or via operating system, using SNMP HP subagent
This template was tested on:
@@ -127,55 +127,55 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`count(/HP iLO SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS}")=1` |HIGH | |
-|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`count(/HP iLO SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults</p> |`count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults</p> |`count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModDegradedFailsafeSpeed\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheReadCacheNotMapped\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModFlashMemNotAttached\"}")=1` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults</p> |`count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_OK_STATUS:\"enabled\"}")=1 and last(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK_ARRAY_CACHE_WARN_STATUS:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"failed\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"capacitorFailed\"}")=1` |AVERAGE | |
-|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults</p> |`count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS:\"degraded\"}")=1` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state!</p> |
-|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/HP iLO SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
-|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/HP iLO SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HP iLO SNMP/system.name,#1)<>last(/HP iLO SNMP/system.name,#2) and length(last(/HP iLO SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HP iLO SNMP/system.hw.serialnumber,#1)<>last(/HP iLO SNMP/system.hw.serialnumber,#2) and length(last(/HP iLO SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`count(/HP iLO SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1` |HIGH | |
-|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors</p> |`count(/HP iLO SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`count(/HP iLO SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDrive\"}")=1 or count(/HP iLO SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDriveSSDWearOut\"}")=1` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
-|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HP iLO SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HP iLO SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HP iLO SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/HP iLO SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
-|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/HP iLO SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
-|System status is in critical state |<p>Please check the device for errors</p> |`count(/HP iLO SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH | |
-|System status is in warning state |<p>Please check the device for warnings</p> |`count(/HP iLO SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HP iLO SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP iLO SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP iLO SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP iLO SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HP iLO SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/HP iLO SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/HP iLO SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP iLO SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/HP iLO SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
-|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
-|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
-|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
-|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
-|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
-|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
-|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
-|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
-|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
-|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
-|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
-|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
-|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
-|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
-|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors</p> |`count(/HP iLO SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS}")=1` |HIGH | |
-|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors</p> |`count(/HP iLO SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
+|{#CNTLR_LOCATION}: Disk array controller is in critical state |<p>Please check the device for faults</p> |`count(/HP iLO by SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS}")=1` |HIGH | |
+|{#CNTLR_LOCATION}: Disk array controller is in warning state |<p>Please check the device for faults</p> |`count(/HP iLO by SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS}")=1` |AVERAGE |<p>**Depends on**:</p><p>- {#CNTLR_LOCATION}: Disk array controller is in critical state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state! |<p>Please check the device for faults</p> |`count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state |<p>Please check the device for faults</p> |`count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModDegradedFailsafeSpeed\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheReadCacheNotMapped\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModFlashMemNotAttached\"}")=1` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state |<p>Please check the device for faults</p> |`count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_OK_STATUS:\"enabled\"}")=1 and last(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK_ARRAY_CACHE_WARN_STATUS:"invalid"}` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state</p> |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state! |<p>Please check the device for faults</p> |`count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"failed\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"capacitorFailed\"}")=1` |AVERAGE | |
+|#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state |<p>Please check the device for faults</p> |`count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS:\"degraded\"}")=1` |WARNING |<p>**Depends on**:</p><p>- #{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state!</p> |
+|Fan {#SNMPINDEX}: Fan is in critical state |<p>Please check the fan unit</p> |`count(/HP iLO by SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1` |AVERAGE | |
+|Fan {#SNMPINDEX}: Fan is in warning state |<p>Please check the fan unit</p> |`count(/HP iLO by SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Fan {#SNMPINDEX}: Fan is in critical state</p> |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/HP iLO by SNMP/system.name,#1)<>last(/HP iLO by SNMP/system.name,#2) and length(last(/HP iLO by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/HP iLO by SNMP/system.hw.serialnumber,#1)<>last(/HP iLO by SNMP/system.hw.serialnumber,#2) and length(last(/HP iLO by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|{#DISK_LOCATION}: Physical disk failed |<p>Please check physical disk for warnings or errors</p> |`count(/HP iLO by SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1` |HIGH | |
+|{#DISK_LOCATION}: Physical disk is in warning state |<p>Please check physical disk for warnings or errors</p> |`count(/HP iLO by SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed |<p>Disk probably requires replacement.</p> |`count(/HP iLO by SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDrive\"}")=1 or count(/HP iLO by SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDriveSSDWearOut\"}")=1` |HIGH |<p>**Depends on**:</p><p>- {#DISK_LOCATION}: Physical disk failed</p> |
+|{#DISK_LOCATION}: Disk has been replaced |<p>Disk serial number has changed. Ack to close</p> |`last(/HP iLO by SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HP iLO by SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HP iLO by SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0` |INFO |<p>Manual close: YES</p> |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state |<p>Please check the power supply unit for errors</p> |`count(/HP iLO by SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1` |AVERAGE | |
+|Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state |<p>Please check the power supply unit for errors</p> |`count(/HP iLO by SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state</p> |
+|System status is in critical state |<p>Please check the device for errors</p> |`count(/HP iLO by SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH | |
+|System status is in warning state |<p>Please check the device for warnings</p> |`count(/HP iLO by SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/HP iLO by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP iLO by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP iLO by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP iLO by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/HP iLO by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/HP iLO by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/HP iLO by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP iLO by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/HP iLO by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3` |WARNING | |
+|{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4` |HIGH | |
+|Ambient: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Ambient: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3` |WARNING | |
+|Ambient: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4` |HIGH | |
+|CPU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3` |WARNING | |
+|CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4` |HIGH | |
+|Memory-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3` |WARNING | |
+|Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4` |HIGH | |
+|PSU-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3` |WARNING | |
+|PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4` |HIGH | |
+|I/O-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1` |INFO |<p>Manual close: YES</p> |
+|I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3` |WARNING | |
+|I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4` |HIGH | |
+|System-{#SNMPINDEX}: Temperature could not be determined |<p>Temperature could not be determined.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1` |INFO |<p>Manual close: YES</p> |
+|System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range |<p>If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3` |WARNING | |
+|System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system. |<p>The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.</p> |`last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed |<p>Please check virtual disk for warnings or errors</p> |`count(/HP iLO by SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS}")=1` |HIGH | |
+|Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state |<p>Please check virtual disk for warnings or errors</p> |`count(/HP iLO by SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed</p> |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/hp_ilo_snmp/template_server_hp_ilo_snmp.yaml b/templates/server/hp_ilo_snmp/template_server_hp_ilo_snmp.yaml
index 9266288f0bf..1076b3523f7 100644
--- a/templates/server/hp_ilo_snmp/template_server_hp_ilo_snmp.yaml
+++ b/templates/server/hp_ilo_snmp/template_server_hp_ilo_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:21:59Z'
+ date: '2022-10-27T14:23:06Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: c2a7ddca051d4b4a9553f339c57e47a9
- template: 'HP iLO SNMP'
- name: 'HP iLO SNMP'
+ template: 'HP iLO by SNMP'
+ name: 'HP iLO by SNMP'
description: |
Template Server HP iLO
@@ -43,7 +43,7 @@ zabbix_export:
triggers:
-
uuid: 755a4c5e809d418cbb1162102b0d1c26
- expression: 'max(/HP iLO SNMP/icmpping,#3)=0'
+ expression: 'max(/HP iLO by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -69,14 +69,14 @@ zabbix_export:
triggers:
-
uuid: 0492380bc6374f24b92b4661b27d8f2c
- expression: 'min(/HP iLO SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP iLO SNMP/icmppingloss,5m)<100'
+ expression: 'min(/HP iLO by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP iLO by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP iLO SNMP/icmpping,#3)=0'
+ expression: 'max(/HP iLO by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -102,17 +102,17 @@ zabbix_export:
triggers:
-
uuid: a869db9f341c479c80dca50bac0ff309
- expression: 'avg(/HP iLO SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/HP iLO by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/HP iLO SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP iLO SNMP/icmppingloss,5m)<100'
+ expression: 'min(/HP iLO by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/HP iLO by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP iLO SNMP/icmpping,#3)=0'
+ expression: 'max(/HP iLO by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -255,7 +255,7 @@ zabbix_export:
triggers:
-
uuid: 7e8d377e1b49469a8b19b94e6dad97ce
- expression: 'last(/HP iLO SNMP/system.hw.serialnumber,#1)<>last(/HP iLO SNMP/system.hw.serialnumber,#2) and length(last(/HP iLO SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/HP iLO by SNMP/system.hw.serialnumber,#1)<>last(/HP iLO by SNMP/system.hw.serialnumber,#2) and length(last(/HP iLO by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -342,7 +342,7 @@ zabbix_export:
triggers:
-
uuid: df3c9e64b0f844ddac8f40f6df956595
- expression: 'last(/HP iLO SNMP/system.name,#1)<>last(/HP iLO SNMP/system.name,#2) and length(last(/HP iLO SNMP/system.name))>0'
+ expression: 'last(/HP iLO by SNMP/system.name,#1)<>last(/HP iLO by SNMP/system.name,#2) and length(last(/HP iLO by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -424,7 +424,7 @@ zabbix_export:
triggers:
-
uuid: 6d0d0554e1c945dc90701aebd531f9cb
- expression: 'count(/HP iLO SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -438,7 +438,7 @@ zabbix_export:
value: performance
-
uuid: 273c27c7929649f1a45ddc92c09ab982
- expression: 'count(/HP iLO SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -446,7 +446,7 @@ zabbix_export:
dependencies:
-
name: 'System status is in critical state'
- expression: 'count(/HP iLO SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.status[cpqHeMibCondition.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -478,7 +478,7 @@ zabbix_export:
triggers:
-
uuid: 8870beab300f41ea8d54619fd2bf0371
- expression: 'max(/HP iLO SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HP iLO by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -486,7 +486,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/HP iLO SNMP/icmpping,#3)=0'
+ expression: 'max(/HP iLO by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -551,7 +551,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b3049aa19e5d45d28937c1af262aba3e
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"failed\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"capacitorFailed\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"failed\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"capacitorFailed\"}")=1'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -565,7 +565,7 @@ zabbix_export:
value: performance
-
uuid: 384fd446bcb042f89ca348ec7459f1aa
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS:\"degraded\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_WARN_STATUS:\"degraded\"}")=1'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -573,7 +573,7 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller battery is in critical state!'
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"failed\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"capacitorFailed\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"failed\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.battery.status[cpqDaAccelBattery.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_BATTERY_CRIT_STATUS:\"capacitorFailed\"}")=1'
tags:
-
tag: scope
@@ -641,7 +641,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a4c81fb1ef6140199bbde241691183cd
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -658,7 +658,7 @@ zabbix_export:
value: performance
-
uuid: 7370a7c6388c4ff8b094959ca0c34a72
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModDegradedFailsafeSpeed\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheReadCacheNotMapped\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModFlashMemNotAttached\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModDegradedFailsafeSpeed\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheReadCacheNotMapped\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModFlashMemNotAttached\"}")=1'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -666,7 +666,7 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1'
tags:
-
tag: scope
@@ -676,7 +676,7 @@ zabbix_export:
value: performance
-
uuid: 4db3b402580c43eba0d9dc6349cf95ca
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_OK_STATUS:\"enabled\"}")=1 and last(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK_ARRAY_CACHE_WARN_STATUS:"invalid"}'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"ne","{$DISK_ARRAY_CACHE_OK_STATUS:\"enabled\"}")=1 and last(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}])<>{$DISK_ARRAY_CACHE_WARN_STATUS:"invalid"}'
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is not in optimal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -684,10 +684,10 @@ zabbix_export:
dependencies:
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in critical state!'
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_CRIT_STATUS:\"cacheModCriticalFailure\"}")=1'
-
name: '#{#CACHE_CNTRL_INDEX}: Disk array cache controller is in warning state'
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModDegradedFailsafeSpeed\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheReadCacheNotMapped\"}")=1 or count(/HP iLO SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModFlashMemNotAttached\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModDegradedFailsafeSpeed\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheReadCacheNotMapped\"}")=1 or count(/HP iLO by SNMP/system.hw.diskarray.cache.status[cpqDaAccelStatus.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CACHE_WARN_STATUS:\"cacheModFlashMemNotAttached\"}")=1'
tags:
-
tag: scope
@@ -769,7 +769,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: a318564fe4eb488eba251f3cba3d31b6
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS}")=1'
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -783,7 +783,7 @@ zabbix_export:
value: performance
-
uuid: 6b65d2b2477c4567953fcec31b1ab9a3
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_WARN_STATUS}")=1'
name: '{#CNTLR_LOCATION}: Disk array controller is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -791,7 +791,7 @@ zabbix_export:
dependencies:
-
name: '{#CNTLR_LOCATION}: Disk array controller is in critical state'
- expression: 'count(/HP iLO SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.diskarray.status[cpqDaCntlrCondition.{#SNMPINDEX}],#1,"eq","{$DISK_ARRAY_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -843,7 +843,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 0731e25040504428acb466b0d4e2803a
- expression: 'count(/HP iLO SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -857,7 +857,7 @@ zabbix_export:
value: performance
-
uuid: c8c9ea062fa849b0b550ad4dd1d2cec7
- expression: 'count(/HP iLO SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_WARN_STATUS}")=1'
name: 'Fan {#SNMPINDEX}: Fan is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -865,7 +865,7 @@ zabbix_export:
dependencies:
-
name: 'Fan {#SNMPINDEX}: Fan is in critical state'
- expression: 'count(/HP iLO SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/sensor.fan.status[cpqHeFltTolFanCondition.{#SNMPINDEX}],#1,"eq","{$FAN_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -972,7 +972,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 87bcd812474b44729da19f49344ba976
- expression: 'last(/HP iLO SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HP iLO SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HP iLO SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
+ expression: 'last(/HP iLO by SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#1)<>last(/HP iLO by SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}],#2) and length(last(/HP iLO by SNMP/system.hw.physicaldisk.serialnumber[cpqDaPhyDrvSerialNum.{#SNMPINDEX}]))>0'
name: '{#DISK_LOCATION}: Disk has been replaced'
event_name: '{#DISK_LOCATION}: Disk has been replaced (new serial number received)'
priority: INFO
@@ -1047,7 +1047,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 180f8f9124a041d0bf1c350d0226c3d3
- expression: 'count(/HP iLO SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDrive\"}")=1 or count(/HP iLO SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDriveSSDWearOut\"}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDrive\"}")=1 or count(/HP iLO by SNMP/system.hw.physicaldisk.smart_status[cpqDaPhyDrvSmartStatus.{#SNMPINDEX}],#1,"eq","{$DISK_SMART_FAIL_STATUS:\"replaceDriveSSDWearOut\"}")=1'
name: '{#DISK_LOCATION}: Physical disk S.M.A.R.T. failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1055,7 +1055,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'count(/HP iLO SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1'
tags:
-
tag: scope
@@ -1096,7 +1096,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 95e887baa0b9480a8a59848b07418c6b
- expression: 'count(/HP iLO SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1'
name: '{#DISK_LOCATION}: Physical disk failed'
opdata: 'Current status: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -1110,7 +1110,7 @@ zabbix_export:
value: performance
-
uuid: 857540089794495799eb1a04b172c70c
- expression: 'count(/HP iLO SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_WARN_STATUS}")=1'
name: '{#DISK_LOCATION}: Physical disk is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1118,7 +1118,7 @@ zabbix_export:
dependencies:
-
name: '{#DISK_LOCATION}: Physical disk failed'
- expression: 'count(/HP iLO SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.physicaldisk.status[cpqDaPhyDrvStatus.{#SNMPINDEX}],#1,"eq","{$DISK_FAIL_STATUS}")=1'
tags:
-
tag: scope
@@ -1169,7 +1169,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 7a34714fcbb74294af97bc4f39c21413
- expression: 'count(/HP iLO SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: AVERAGE
@@ -1183,7 +1183,7 @@ zabbix_export:
value: performance
-
uuid: db7679204aa544cb8ffe38df5c68b7ce
- expression: 'count(/HP iLO SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_WARN_STATUS}")=1'
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -1191,7 +1191,7 @@ zabbix_export:
dependencies:
-
name: 'Chassis {#CHASSIS_NUM}, bay {#BAY_NUM}: Power supply is in critical state'
- expression: 'count(/HP iLO SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/sensor.psu.status[cpqHeFltTolPowerSupplyCondition.{#SNMPINDEX}],#1,"eq","{$PSU_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -1254,7 +1254,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b7786ff4c57a4143b79e95bfc5470dcd
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 1'
name: '{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1265,7 +1265,7 @@ zabbix_export:
value: notice
-
uuid: 11365923a7b242fea930250e26fcc548
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 4'
name: '{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1275,7 +1275,7 @@ zabbix_export:
value: notice
-
uuid: dd0fd44bd7bb43bd85fdd63a199e0e69
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.{#SNMPINDEX}]) = 3'
name: '{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1385,7 +1385,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: e955550a2496435eb799d317f2036c55
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 1'
name: 'Ambient: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1396,7 +1396,7 @@ zabbix_export:
value: notice
-
uuid: 8cd2c8b62b164923afed02da2be52dcc
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 4'
name: 'Ambient: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1406,7 +1406,7 @@ zabbix_export:
value: notice
-
uuid: d11e13c5714a42d49bea54d837f9f418
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Ambient.{#SNMPINDEX}]) = 3'
name: 'Ambient: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1490,7 +1490,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 512654c27ea94ed4993380793a67f68b
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 1'
name: 'CPU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1501,7 +1501,7 @@ zabbix_export:
value: notice
-
uuid: 7853d0c8ed4a4ebe98e38c7499417ebe
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 4'
name: 'CPU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1511,7 +1511,7 @@ zabbix_export:
value: notice
-
uuid: 0434d2a6a1b54cb7bcd0e6f58d973be4
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.CPU.{#SNMPINDEX}]) = 3'
name: 'CPU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1595,7 +1595,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 2875e5ebea474eccac8d53dd13539bd6
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 1'
name: 'I/O-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1606,7 +1606,7 @@ zabbix_export:
value: notice
-
uuid: 593b167fe62e4a7fae35ebb508540325
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 4'
name: 'I/O-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1616,7 +1616,7 @@ zabbix_export:
value: notice
-
uuid: bf6a10f0596a45b4b8f8a2f0acf7c778
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition."I/O.{#SNMPINDEX}"]) = 3'
name: 'I/O-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1700,7 +1700,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 881f28f6411c467493c56a64237d8ca8
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 1'
name: 'Memory-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1711,7 +1711,7 @@ zabbix_export:
value: notice
-
uuid: c05402995e6146d28c53fc33e88d8164
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 4'
name: 'Memory-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1721,7 +1721,7 @@ zabbix_export:
value: notice
-
uuid: bfac7287a9d842cb89d8089af72e2e12
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.Memory.{#SNMPINDEX}]) = 3'
name: 'Memory-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1805,7 +1805,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 14ab7adae80c4859952381bfe17a14a3
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 1'
name: 'PSU-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1816,7 +1816,7 @@ zabbix_export:
value: notice
-
uuid: 97481f1183c3444c851fe99428bd7bf3
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 4'
name: 'PSU-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1826,7 +1826,7 @@ zabbix_export:
value: notice
-
uuid: 8c7f5250756946a595b742519e4890a5
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.PSU.{#SNMPINDEX}]) = 3'
name: 'PSU-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -1910,7 +1910,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: d161829ab0ec496bb4718ed156853c3f
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 1'
name: 'System-{#SNMPINDEX}: Temperature could not be determined'
priority: INFO
description: 'Temperature could not be determined.'
@@ -1921,7 +1921,7 @@ zabbix_export:
value: notice
-
uuid: a65a8386fdd048f986a3aa3fcf29a959
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 4'
name: 'System-{#SNMPINDEX}: The temperature sensor detects a condition that could permanently damage the system.'
priority: HIGH
description: 'The system will automatically shutdown if the failed(4) condition results, so it is unlikely that this value will ever be returned by the agent.'
@@ -1931,7 +1931,7 @@ zabbix_export:
value: notice
-
uuid: 0b13f436c7984eef9624632bb5f43970
- expression: 'last(/HP iLO SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
+ expression: 'last(/HP iLO by SNMP/sensor.temp.condition[cpqHeTemperatureCondition.System.{#SNMPINDEX}]) = 3'
name: 'System-{#SNMPINDEX}: The temperature sensor is outside of normal operating range'
priority: WARNING
description: 'If the cpqHeThermalDegradedAction is set to shutdown(3) the system will be shutdown if the degraded(3) condition occurs.'
@@ -2055,7 +2055,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 3f809df0d34f47a2bc1addbf2f4387ac
- expression: 'count(/HP iLO SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS}")=1'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -2069,7 +2069,7 @@ zabbix_export:
value: performance
-
uuid: 439b8dfa246f42d190d8f4deeebfeb53
- expression: 'count(/HP iLO SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"ne","{$VDISK_OK_STATUS}")=1'
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -2077,7 +2077,7 @@ zabbix_export:
dependencies:
-
name: 'Disk {#SNMPINDEX}({#DISK_NAME}): Virtual disk failed'
- expression: 'count(/HP iLO SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS}")=1'
+ expression: 'count(/HP iLO by SNMP/system.hw.virtualdisk.status[cpqDaLogDrvStatus.{#SNMPINDEX}],#1,"eq","{$VDISK_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -2757,7 +2757,7 @@ zabbix_export:
triggers:
-
uuid: 261749b9936c4a26b48d660f01435fb7
- expression: '(last(/HP iLO SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP iLO SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP iLO SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP iLO SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/HP iLO by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/HP iLO by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/HP iLO by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/HP iLO by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -2766,7 +2766,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/HP iLO SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/HP iLO by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/server/ibm_imm_snmp/README.md b/templates/server/ibm_imm_snmp/README.md
index 3b17e211d3e..c602224fa04 100644
--- a/templates/server/ibm_imm_snmp/README.md
+++ b/templates/server/ibm_imm_snmp/README.md
@@ -1,9 +1,9 @@
-# IBM IMM SNMP
+# IBM IMM by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
for IMM2 and IMM1 IBM serverX hardware
This template was tested on:
@@ -87,32 +87,32 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|{#FAN_DESCR}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/IBM IMM SNMP/sensor.fan.status[fanHealthStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO | |
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/IBM IMM SNMP/system.name,#1)<>last(/IBM IMM SNMP/system.name,#2) and length(last(/IBM IMM SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/IBM IMM SNMP/system.hw.serialnumber,#1)<>last(/IBM IMM SNMP/system.hw.serialnumber,#2) and length(last(/IBM IMM SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
-|{#SNMPINDEX}: Physical disk is not in OK state |<p>Please check physical disk for warnings or errors</p> |`count(/IBM IMM SNMP/system.hw.physicaldisk.status[diskHealthStatus.{#SNMPINDEX}],#1,"ne","{$DISK_OK_STATUS}")=1` |WARNING | |
-|{#PSU_DESCR}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/IBM IMM SNMP/sensor.psu.status[powerHealthStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO | |
-|System is in unrecoverable state! |<p>Please check the device for faults</p> |`count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1` |HIGH | |
-|System status is in critical state |<p>Please check the device for errors</p> |`count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p> |
-|System status is in warning state |<p>Please check the device for warnings</p> |`count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p><p>- System status is in critical state</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/IBM IMM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/IBM IMM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/IBM IMM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/IBM IMM SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/IBM IMM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/IBM IMM SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/IBM IMM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/IBM IMM SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/IBM IMM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
-|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
-|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
-|Ambient: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- Ambient: Temperature is above critical threshold</p> |
-|Ambient: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
-|Ambient: Temperature is too low |<p>-</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
-|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
-|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
-|CPU: Temperature is too low |<p>-</p> |`avg(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
+|{#FAN_DESCR}: Fan is not in normal state |<p>Please check the fan unit</p> |`count(/IBM IMM by SNMP/sensor.fan.status[fanHealthStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1` |INFO | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/IBM IMM by SNMP/system.name,#1)<>last(/IBM IMM by SNMP/system.name,#2) and length(last(/IBM IMM by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Device has been replaced |<p>Device serial number has changed. Ack to close</p> |`last(/IBM IMM by SNMP/system.hw.serialnumber,#1)<>last(/IBM IMM by SNMP/system.hw.serialnumber,#2) and length(last(/IBM IMM by SNMP/system.hw.serialnumber))>0` |INFO |<p>Manual close: YES</p> |
+|{#SNMPINDEX}: Physical disk is not in OK state |<p>Please check physical disk for warnings or errors</p> |`count(/IBM IMM by SNMP/system.hw.physicaldisk.status[diskHealthStatus.{#SNMPINDEX}],#1,"ne","{$DISK_OK_STATUS}")=1` |WARNING | |
+|{#PSU_DESCR}: Power supply is not in normal state |<p>Please check the power supply unit for errors</p> |`count(/IBM IMM by SNMP/sensor.psu.status[powerHealthStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1` |INFO | |
+|System is in unrecoverable state! |<p>Please check the device for faults</p> |`count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1` |HIGH | |
+|System status is in critical state |<p>Please check the device for errors</p> |`count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1` |HIGH |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p> |
+|System status is in warning state |<p>Please check the device for warnings</p> |`count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1` |WARNING |<p>**Depends on**:</p><p>- System is in unrecoverable state!</p><p>- System status is in critical state</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/IBM IMM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/IBM IMM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/IBM IMM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/IBM IMM by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/IBM IMM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/IBM IMM by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/IBM IMM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/IBM IMM by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/IBM IMM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SNMPVALUE}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SNMPVALUE}: Temperature is above critical threshold</p> |
+|{#SNMPVALUE}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`max(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3` |HIGH | |
+|{#SNMPVALUE}: Temperature is too low |<p>-</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}`<p>Recovery expression:</p>`min(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3` |AVERAGE | |
+|Ambient: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}`<p>Recovery expression:</p>`max(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3` |WARNING |<p>**Depends on**:</p><p>- Ambient: Temperature is above critical threshold</p> |
+|Ambient: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}`<p>Recovery expression:</p>`max(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3` |HIGH | |
+|Ambient: Temperature is too low |<p>-</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}`<p>Recovery expression:</p>`min(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3` |AVERAGE | |
+|CPU: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}`<p>Recovery expression:</p>`max(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3` |WARNING |<p>**Depends on**:</p><p>- CPU: Temperature is above critical threshold</p> |
+|CPU: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}`<p>Recovery expression:</p>`max(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3` |HIGH | |
+|CPU: Temperature is too low |<p>-</p> |`avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}`<p>Recovery expression:</p>`min(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
## Known Issues
diff --git a/templates/server/ibm_imm_snmp/template_server_ibm_imm_snmp.yaml b/templates/server/ibm_imm_snmp/template_server_ibm_imm_snmp.yaml
index e030e52c129..e7ceef85057 100644
--- a/templates/server/ibm_imm_snmp/template_server_ibm_imm_snmp.yaml
+++ b/templates/server/ibm_imm_snmp/template_server_ibm_imm_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:22:01Z'
+ date: '2022-10-27T14:22:55Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: c9e1acd3ae4a427ab39724b6bcaf839e
- template: 'IBM IMM SNMP'
- name: 'IBM IMM SNMP'
+ template: 'IBM IMM by SNMP'
+ name: 'IBM IMM by SNMP'
description: |
Template Server IBM IMM
@@ -59,7 +59,7 @@ zabbix_export:
triggers:
-
uuid: 937225d93eea44b3a8328eee03cf66f0
- expression: 'max(/IBM IMM SNMP/icmpping,#3)=0'
+ expression: 'max(/IBM IMM by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -85,14 +85,14 @@ zabbix_export:
triggers:
-
uuid: ec37a141b33c46308b8d810069ce9142
- expression: 'min(/IBM IMM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/IBM IMM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/IBM IMM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/IBM IMM by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/IBM IMM SNMP/icmpping,#3)=0'
+ expression: 'max(/IBM IMM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -118,17 +118,17 @@ zabbix_export:
triggers:
-
uuid: 0541700de60549da8439f9b75cf83e7f
- expression: 'avg(/IBM IMM SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/IBM IMM by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/IBM IMM SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/IBM IMM SNMP/icmppingloss,5m)<100'
+ expression: 'min(/IBM IMM by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/IBM IMM by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/IBM IMM SNMP/icmpping,#3)=0'
+ expression: 'max(/IBM IMM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -244,7 +244,7 @@ zabbix_export:
triggers:
-
uuid: b2bf06198d5840c6905ea6cf6d9e443c
- expression: 'last(/IBM IMM SNMP/system.hw.serialnumber,#1)<>last(/IBM IMM SNMP/system.hw.serialnumber,#2) and length(last(/IBM IMM SNMP/system.hw.serialnumber))>0'
+ expression: 'last(/IBM IMM by SNMP/system.hw.serialnumber,#1)<>last(/IBM IMM by SNMP/system.hw.serialnumber,#2) and length(last(/IBM IMM by SNMP/system.hw.serialnumber))>0'
name: 'Device has been replaced'
event_name: 'Device has been replaced (new serial number received)'
priority: INFO
@@ -331,7 +331,7 @@ zabbix_export:
triggers:
-
uuid: 188852025e644d5ab583f9d7a9dea06c
- expression: 'last(/IBM IMM SNMP/system.name,#1)<>last(/IBM IMM SNMP/system.name,#2) and length(last(/IBM IMM SNMP/system.name))>0'
+ expression: 'last(/IBM IMM by SNMP/system.name,#1)<>last(/IBM IMM by SNMP/system.name,#2) and length(last(/IBM IMM by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -409,7 +409,7 @@ zabbix_export:
triggers:
-
uuid: ea8fbc9446d34033b60a8214b8199ea1
- expression: 'count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
name: 'System is in unrecoverable state!'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -423,7 +423,7 @@ zabbix_export:
value: performance
-
uuid: a76c198aeb7d452a8c710ddde21aa12e
- expression: 'count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
name: 'System status is in critical state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: HIGH
@@ -431,7 +431,7 @@ zabbix_export:
dependencies:
-
name: 'System is in unrecoverable state!'
- expression: 'count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
tags:
-
tag: scope
@@ -441,7 +441,7 @@ zabbix_export:
value: performance
-
uuid: acd147a3d41b49478410f4d49562cde2
- expression: 'count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_WARN_STATUS}")=1'
name: 'System status is in warning state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -449,10 +449,10 @@ zabbix_export:
dependencies:
-
name: 'System is in unrecoverable state!'
- expression: 'count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_DISASTER_STATUS}")=1'
-
name: 'System status is in critical state'
- expression: 'count(/IBM IMM SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/system.status[systemHealthStat.0],#1,"eq","{$HEALTH_CRIT_STATUS}")=1'
tags:
-
tag: scope
@@ -484,7 +484,7 @@ zabbix_export:
triggers:
-
uuid: fbec2f12ac244723bb31dec5efcc6f85
- expression: 'max(/IBM IMM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/IBM IMM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -492,7 +492,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/IBM IMM SNMP/icmpping,#3)=0'
+ expression: 'max(/IBM IMM by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -549,7 +549,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: b2d4ae5922174af6b0ef274accc8ae21
- expression: 'count(/IBM IMM SNMP/sensor.fan.status[fanHealthStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/sensor.fan.status[fanHealthStatus.{#SNMPINDEX}],#1,"ne","{$FAN_OK_STATUS}")=1'
name: '{#FAN_DESCR}: Fan is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -606,7 +606,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 45eb3fe3369a41b199179e2eca725027
- expression: 'count(/IBM IMM SNMP/system.hw.physicaldisk.status[diskHealthStatus.{#SNMPINDEX}],#1,"ne","{$DISK_OK_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/system.hw.physicaldisk.status[diskHealthStatus.{#SNMPINDEX}],#1,"ne","{$DISK_OK_STATUS}")=1'
name: '{#SNMPINDEX}: Physical disk is not in OK state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -647,7 +647,7 @@ zabbix_export:
trigger_prototypes:
-
uuid: 4e7767484cff49b098e73b068ef04160
- expression: 'count(/IBM IMM SNMP/sensor.psu.status[powerHealthStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
+ expression: 'count(/IBM IMM by SNMP/sensor.psu.status[powerHealthStatus.{#SNMPINDEX}],#1,"ne","{$PSU_OK_STATUS}")=1'
name: '{#PSU_DESCR}: Power supply is not in normal state'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: INFO
@@ -690,9 +690,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 958eebe18bd94670b2b9029064a84bc9
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above critical threshold'
event_name: '{#SNMPVALUE}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -707,9 +707,9 @@ zabbix_export:
value: performance
-
uuid: ecb8ac5828e44a94a32164dce9811fbc
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SNMPVALUE}"}-3'
name: '{#SNMPVALUE}: Temperature is above warning threshold'
event_name: '{#SNMPVALUE}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -718,8 +718,8 @@ zabbix_export:
dependencies:
-
name: '{#SNMPVALUE}: Temperature is above critical threshold'
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SNMPVALUE}"}'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SNMPVALUE}"}-3'
tags:
-
tag: scope
@@ -729,9 +729,9 @@ zabbix_export:
value: performance
-
uuid: 8ff82421c9f74d509766e7dc139ab2c8
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/IBM IMM SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
+ recovery_expression: 'min(/IBM IMM by SNMP/sensor.temp.value[tempReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}+3'
name: '{#SNMPVALUE}: Temperature is too low'
event_name: '{#SNMPVALUE}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SNMPVALUE}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -777,9 +777,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 615967071d6b40f6b02e386c9586a66e
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
name: 'Ambient: Temperature is above critical threshold'
event_name: 'Ambient: Temperature is above critical threshold: >{$TEMP_CRIT:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -794,9 +794,9 @@ zabbix_export:
value: performance
-
uuid: e6bcdf201e304471aa84cc8d34b290ec
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_WARN:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_WARN:"Ambient"}-3'
name: 'Ambient: Temperature is above warning threshold'
event_name: 'Ambient: Temperature is above warning threshold: >{$TEMP_WARN:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -805,8 +805,8 @@ zabbix_export:
dependencies:
-
name: 'Ambient: Temperature is above critical threshold'
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"Ambient"}'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"Ambient"}-3'
tags:
-
tag: scope
@@ -816,9 +816,9 @@ zabbix_export:
value: performance
-
uuid: dd773e52746840e4b6f7517740873102
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"Ambient"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/IBM IMM SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
+ recovery_expression: 'min(/IBM IMM by SNMP/sensor.temp.value[tempReading.Ambient.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"Ambient"}+3'
name: 'Ambient: Temperature is too low'
event_name: 'Ambient: Temperature is too low: <{$TEMP_CRIT_LOW:"Ambient"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -864,9 +864,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: e994d3d8398147c49062bc712dc4c204
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
name: 'CPU: Temperature is above critical threshold'
event_name: 'CPU: Temperature is above critical threshold: >{$TEMP_CRIT:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -881,9 +881,9 @@ zabbix_export:
value: performance
-
uuid: 3b7396311de1487e90416aa2c42cb03d
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_WARN:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_WARN:"CPU"}-3'
name: 'CPU: Temperature is above warning threshold'
event_name: 'CPU: Temperature is above warning threshold: >{$TEMP_WARN:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -892,8 +892,8 @@ zabbix_export:
dependencies:
-
name: 'CPU: Temperature is above critical threshold'
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
- recovery_expression: 'max(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"CPU"}'
+ recovery_expression: 'max(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"CPU"}-3'
tags:
-
tag: scope
@@ -903,9 +903,9 @@ zabbix_export:
value: performance
-
uuid: e39d0e009efb4216ac7cbbe544ad4bc0
- expression: 'avg(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
+ expression: 'avg(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"CPU"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/IBM IMM SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
+ recovery_expression: 'min(/IBM IMM by SNMP/sensor.temp.value[tempReading.CPU.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"CPU"}+3'
name: 'CPU: Temperature is too low'
event_name: 'CPU: Temperature is too low: <{$TEMP_CRIT_LOW:"CPU"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -1013,7 +1013,7 @@ zabbix_export:
triggers:
-
uuid: 7dd529ec3f1a4a59846a3a76536a7fa0
- expression: '(last(/IBM IMM SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/IBM IMM SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/IBM IMM SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/IBM IMM SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/IBM IMM by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/IBM IMM by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/IBM IMM by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/IBM IMM by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -1022,7 +1022,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/IBM IMM SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/IBM IMM by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/templates/server/supermicro_aten_snmp/README.md b/templates/server/supermicro_aten_snmp/README.md
index fa931f25add..0e15cca5c6f 100644
--- a/templates/server/supermicro_aten_snmp/README.md
+++ b/templates/server/supermicro_aten_snmp/README.md
@@ -1,9 +1,9 @@
-# Supermicro Aten SNMP
+# Supermicro Aten by SNMP
## Overview
-For Zabbix version: 6.4 and higher
+For Zabbix version: 6.4 and higher.
for BMC ATEN IPMI controllers of Supermicro servers
https://www.supermicro.com/solutions/IPMI.cfm
@@ -65,17 +65,17 @@ There are no template links in this template.
|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
-|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Supermicro Aten SNMP/system.name,#1)<>last(/Supermicro Aten SNMP/system.name,#2) and length(last(/Supermicro Aten SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
-|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Supermicro Aten SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Supermicro Aten SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Supermicro Aten SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Supermicro Aten SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
-|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Supermicro Aten SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Supermicro Aten SNMP/icmpping,#3)=0` |HIGH | |
-|High ICMP ping loss |<p>-</p> |`min(/Supermicro Aten SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Supermicro Aten SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
-|High ICMP ping response time |<p>-</p> |`avg(/Supermicro Aten SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
-|{#SENSOR_DESCR}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_DESCR}: Temperature is above critical threshold</p> |
-|{#SENSOR_DESCR}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3` |HIGH | |
-|{#SENSOR_DESCR}: Temperature is too low |<p>-</p> |`avg(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`min(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3` |AVERAGE | |
+|System name has changed |<p>System name has changed. Ack to close.</p> |`last(/Supermicro Aten by SNMP/system.name,#1)<>last(/Supermicro Aten by SNMP/system.name,#2) and length(last(/Supermicro Aten by SNMP/system.name))>0` |INFO |<p>Manual close: YES</p> |
+|Host has been restarted |<p>Uptime is less than 10 minutes.</p> |`(last(/Supermicro Aten by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Supermicro Aten by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Supermicro Aten by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Supermicro Aten by SNMP/system.net.uptime[sysUpTime.0])<10m)` |WARNING |<p>Manual close: YES</p><p>**Depends on**:</p><p>- No SNMP data collection</p> |
+|No SNMP data collection |<p>SNMP is not available for polling. Please check device connectivity and SNMP settings.</p> |`max(/Supermicro Aten by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|Unavailable by ICMP ping |<p>Last three attempts returned timeout. Please check device connectivity.</p> |`max(/Supermicro Aten by SNMP/icmpping,#3)=0` |HIGH | |
+|High ICMP ping loss |<p>-</p> |`min(/Supermicro Aten by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Supermicro Aten by SNMP/icmppingloss,5m)<100` |WARNING |<p>**Depends on**:</p><p>- Unavailable by ICMP ping</p> |
+|High ICMP ping response time |<p>-</p> |`avg(/Supermicro Aten by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}` |WARNING |<p>**Depends on**:</p><p>- High ICMP ping loss</p><p>- Unavailable by ICMP ping</p> |
+|{#SENSOR_DESCR}: Temperature is above warning threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3` |WARNING |<p>**Depends on**:</p><p>- {#SENSOR_DESCR}: Temperature is above critical threshold</p> |
+|{#SENSOR_DESCR}: Temperature is above critical threshold |<p>This trigger uses temperature sensor values as well as temperature sensor status if available</p> |`avg(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`max(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3` |HIGH | |
+|{#SENSOR_DESCR}: Temperature is too low |<p>-</p> |`avg(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}`<p>Recovery expression:</p>`min(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3` |AVERAGE | |
## Feedback
-Please report any issues with the template at https://support.zabbix.com
+Please report any issues with the template at https://support.zabbix.com.
diff --git a/templates/server/supermicro_aten_snmp/template_server_supermicro_aten_snmp.yaml b/templates/server/supermicro_aten_snmp/template_server_supermicro_aten_snmp.yaml
index eafc84a3e35..8f58745a5f5 100644
--- a/templates/server/supermicro_aten_snmp/template_server_supermicro_aten_snmp.yaml
+++ b/templates/server/supermicro_aten_snmp/template_server_supermicro_aten_snmp.yaml
@@ -1,6 +1,6 @@
zabbix_export:
version: '6.4'
- date: '2022-08-16T11:22:02Z'
+ date: '2022-10-27T14:22:53Z'
template_groups:
-
uuid: e960332b3f6c46a1956486d4f3f99fce
@@ -8,8 +8,8 @@ zabbix_export:
templates:
-
uuid: cf0947cc05d3450b9a6d66b2eb180482
- template: 'Supermicro Aten SNMP'
- name: 'Supermicro Aten SNMP'
+ template: 'Supermicro Aten by SNMP'
+ name: 'Supermicro Aten by SNMP'
description: |
Template Server Supermicro Aten
@@ -41,7 +41,7 @@ zabbix_export:
triggers:
-
uuid: 680c72ab6bb441779553b198081e3bf4
- expression: 'max(/Supermicro Aten SNMP/icmpping,#3)=0'
+ expression: 'max(/Supermicro Aten by SNMP/icmpping,#3)=0'
name: 'Unavailable by ICMP ping'
priority: HIGH
description: 'Last three attempts returned timeout. Please check device connectivity.'
@@ -67,14 +67,14 @@ zabbix_export:
triggers:
-
uuid: e2e4bfca2d0c4f8ebd64bef322d2a368
- expression: 'min(/Supermicro Aten SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Supermicro Aten SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Supermicro Aten by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Supermicro Aten by SNMP/icmppingloss,5m)<100'
name: 'High ICMP ping loss'
opdata: 'Loss: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Supermicro Aten SNMP/icmpping,#3)=0'
+ expression: 'max(/Supermicro Aten by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -100,17 +100,17 @@ zabbix_export:
triggers:
-
uuid: b6fb489c6a624b2994c5e50ba75539b2
- expression: 'avg(/Supermicro Aten SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
+ expression: 'avg(/Supermicro Aten by SNMP/icmppingsec,5m)>{$ICMP_RESPONSE_TIME_WARN}'
name: 'High ICMP ping response time'
opdata: 'Value: {ITEM.LASTVALUE1}'
priority: WARNING
dependencies:
-
name: 'High ICMP ping loss'
- expression: 'min(/Supermicro Aten SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Supermicro Aten SNMP/icmppingloss,5m)<100'
+ expression: 'min(/Supermicro Aten by SNMP/icmppingloss,5m)>{$ICMP_LOSS_WARN} and min(/Supermicro Aten by SNMP/icmppingloss,5m)<100'
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Supermicro Aten SNMP/icmpping,#3)=0'
+ expression: 'max(/Supermicro Aten by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -256,7 +256,7 @@ zabbix_export:
triggers:
-
uuid: 07b7a49bffea4c03a022eed632754f47
- expression: 'last(/Supermicro Aten SNMP/system.name,#1)<>last(/Supermicro Aten SNMP/system.name,#2) and length(last(/Supermicro Aten SNMP/system.name))>0'
+ expression: 'last(/Supermicro Aten by SNMP/system.name,#1)<>last(/Supermicro Aten by SNMP/system.name,#2) and length(last(/Supermicro Aten by SNMP/system.name))>0'
name: 'System name has changed'
event_name: 'System name has changed (new name: {ITEM.VALUE})'
priority: INFO
@@ -337,7 +337,7 @@ zabbix_export:
triggers:
-
uuid: caeb9732846b4ae586ee103ac0c4a65b
- expression: 'max(/Supermicro Aten SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Supermicro Aten by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
name: 'No SNMP data collection'
opdata: 'Current state: {ITEM.LASTVALUE1}'
priority: WARNING
@@ -345,7 +345,7 @@ zabbix_export:
dependencies:
-
name: 'Unavailable by ICMP ping'
- expression: 'max(/Supermicro Aten SNMP/icmpping,#3)=0'
+ expression: 'max(/Supermicro Aten by SNMP/icmpping,#3)=0'
tags:
-
tag: scope
@@ -426,9 +426,9 @@ zabbix_export:
trigger_prototypes:
-
uuid: 1a48aee477d54d34bdea47fc6027968c
- expression: 'avg(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
+ recovery_expression: 'max(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
name: '{#SENSOR_DESCR}: Temperature is above critical threshold'
event_name: '{#SENSOR_DESCR}: Temperature is above critical threshold: >{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -443,9 +443,9 @@ zabbix_export:
value: performance
-
uuid: 2c2914d1c8c846d180ee308fa861540e
- expression: 'avg(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_WARN:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'max(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3'
+ recovery_expression: 'max(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_WARN:"{#SENSOR_DESCR}"}-3'
name: '{#SENSOR_DESCR}: Temperature is above warning threshold'
event_name: '{#SENSOR_DESCR}: Temperature is above warning threshold: >{$TEMP_WARN:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -454,8 +454,8 @@ zabbix_export:
dependencies:
-
name: '{#SENSOR_DESCR}: Temperature is above critical threshold'
- expression: 'avg(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
- recovery_expression: 'max(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
+ expression: 'avg(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT:"{#SENSOR_DESCR}"}'
+ recovery_expression: 'max(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT:"{#SENSOR_DESCR}"}-3'
tags:
-
tag: scope
@@ -465,9 +465,9 @@ zabbix_export:
value: performance
-
uuid: 1439e7a34bbf4046836890f208f99a48
- expression: 'avg(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
+ expression: 'avg(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)<{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
recovery_mode: RECOVERY_EXPRESSION
- recovery_expression: 'min(/Supermicro Aten SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3'
+ recovery_expression: 'min(/Supermicro Aten by SNMP/sensor.temp.value[sensorReading.{#SNMPINDEX}],5m)>{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}+3'
name: '{#SENSOR_DESCR}: Temperature is too low'
event_name: '{#SENSOR_DESCR}: Temperature is too low: <{$TEMP_CRIT_LOW:"{#SENSOR_DESCR}"}'
opdata: 'Current value: {ITEM.LASTVALUE1}'
@@ -535,7 +535,7 @@ zabbix_export:
triggers:
-
uuid: 37aab043ea474548ab1e54e504720bed
- expression: '(last(/Supermicro Aten SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Supermicro Aten SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Supermicro Aten SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Supermicro Aten SNMP/system.net.uptime[sysUpTime.0])<10m)'
+ expression: '(last(/Supermicro Aten by SNMP/system.hw.uptime[hrSystemUptime.0])>0 and last(/Supermicro Aten by SNMP/system.hw.uptime[hrSystemUptime.0])<10m) or (last(/Supermicro Aten by SNMP/system.hw.uptime[hrSystemUptime.0])=0 and last(/Supermicro Aten by SNMP/system.net.uptime[sysUpTime.0])<10m)'
name: 'Host has been restarted'
event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
priority: WARNING
@@ -544,7 +544,7 @@ zabbix_export:
dependencies:
-
name: 'No SNMP data collection'
- expression: 'max(/Supermicro Aten SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
+ expression: 'max(/Supermicro Aten by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0'
tags:
-
tag: scope
diff --git a/tests/libs/zbxalgo/Makefile.am b/tests/libs/zbxalgo/Makefile.am
index 23d5adffa0b..9f0e344cb6c 100644
--- a/tests/libs/zbxalgo/Makefile.am
+++ b/tests/libs/zbxalgo/Makefile.am
@@ -36,7 +36,9 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/libs/zbxsysinfo/libzbxserversysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
$(top_srcdir)/src/libs/zbxregexp/libzbxregexp.a \
$(top_srcdir)/src/libs/zbxself/libzbxself.a \
@@ -54,6 +56,7 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/libs/zbxicmpping/libzbxicmpping.a \
$(top_srcdir)/src/libs/zbxdbupgrade/libzbxdbupgrade.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
$(top_srcdir)/src/libs/zbxmodules/libzbxmodules.a \
$(top_srcdir)/src/libs/zbxtasks/libzbxtasks.a \
diff --git a/tests/libs/zbxcommon/Makefile.am b/tests/libs/zbxcommon/Makefile.am
index 3957328946d..ad72b2519ad 100644
--- a/tests/libs/zbxcommon/Makefile.am
+++ b/tests/libs/zbxcommon/Makefile.am
@@ -39,6 +39,7 @@ COMMON_SRC_FILES = \
../../zbxmocktest.h
COMMON_LIB_FILES = \
+ $(top_srcdir)/tests/libzbxmockdata.a \
$(top_srcdir)/src/zabbix_server/alerter/libzbxalerter.a \
$(top_srcdir)/src/zabbix_server/dbsyncer/libzbxdbsyncer.a \
$(top_srcdir)/src/zabbix_server/dbconfig/libzbxdbconfig.a \
@@ -65,7 +66,9 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo_http.a \
$(top_srcdir)/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/alias/libalias.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
$(top_srcdir)/src/libs/zbxself/libzbxself.a \
$(top_srcdir)/src/libs/zbxmedia/libzbxmedia.a \
@@ -84,6 +87,7 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/libs/zbxicmpping/libzbxicmpping.a \
$(top_srcdir)/src/libs/zbxdbupgrade/libzbxdbupgrade.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
$(top_srcdir)/src/libs/zbxmodules/libzbxmodules.a \
$(top_srcdir)/src/libs/zbxtasks/libzbxtasks.a \
diff --git a/tests/libs/zbxconf/Makefile.am b/tests/libs/zbxconf/Makefile.am
index e2d0cf4c6bd..b7fbab632a8 100644
--- a/tests/libs/zbxconf/Makefile.am
+++ b/tests/libs/zbxconf/Makefile.am
@@ -29,7 +29,9 @@ parse_cfg_file_LDADD = \
$(top_srcdir)/src/libs/zbxsysinfo/libzbxserversysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxhistory/libzbxhistory.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
$(top_srcdir)/src/libs/zbxregexp/libzbxregexp.a \
@@ -46,6 +48,7 @@ parse_cfg_file_LDADD = \
$(top_srcdir)/src/libs/zbxicmpping/libzbxicmpping.a \
$(top_srcdir)/src/libs/zbxdbupgrade/libzbxdbupgrade.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
$(top_srcdir)/src/libs/zbxmodules/libzbxmodules.a \
$(top_srcdir)/src/libs/zbxtasks/libzbxtasks.a \
diff --git a/tests/libs/zbxdbcache/Makefile.am b/tests/libs/zbxdbcache/Makefile.am
index 31db70b39bd..2aab76024ec 100644
--- a/tests/libs/zbxdbcache/Makefile.am
+++ b/tests/libs/zbxdbcache/Makefile.am
@@ -49,7 +49,9 @@ VALUECACHE_LIBS = \
$(top_srcdir)/tests/libzbxmockdata.a
CACHE_LIBS = \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxavailability/libzbxavailability.a \
$(top_srcdir)/src/zabbix_server/availability/libavailability.a \
$(top_srcdir)/src/libs/zbxipcservice/libzbxipcservice.a \
@@ -79,6 +81,7 @@ CACHE_LIBS = \
$(top_srcdir)/src/libs/zbxhash/libzbxhash.a \
$(top_srcdir)/src/libs/zbxcrypto/libzbxcrypto.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
$(top_builddir)/src/libs/zbxdbschema/libzbxdbschema.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
@@ -104,6 +107,9 @@ CACHE_LIBS = \
$(top_srcdir)/src/libs/zbxnix/libzbxnix.a \
$(top_srcdir)/src/libs/zbxstr/libzbxstr.a \
$(top_srcdir)/src/libs/zbxnum/libzbxnum.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxcommon/libzbxcommon.a \
$(top_srcdir)/tests/libzbxmocktest.a \
$(top_srcdir)/tests/libzbxmockdata.a
@@ -128,7 +134,7 @@ COMMON_WRAP_FUNCS = \
zbx_vc_get_values_SOURCES = \
zbx_vc_common.c \
zbx_vc_get_values.c \
- @top_srcdir@/src/libs/zbxdbcache/valuecache.c \
+ @top_srcdir@/src/libs/zbxcachevalue/valuecache.c \
@top_srcdir@/src/libs/zbxhistory/history.c \
../../zbxmocktest.h
@@ -137,14 +143,16 @@ zbx_vc_get_values_LDFLAGS = @SERVER_LDFLAGS@ $(COMMON_WRAP_FUNCS)
zbx_vc_get_values_CFLAGS = \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory \
-I@top_srcdir@/tests
zbx_vc_add_values_SOURCES = \
zbx_vc_common.c \
zbx_vc_add_values.c \
- @top_srcdir@/src/libs/zbxdbcache/valuecache.c \
+ @top_srcdir@/src/libs/zbxcachevalue/valuecache.c \
@top_srcdir@/src/libs/zbxhistory/history.c \
../../zbxmocktest.h
@@ -153,14 +161,16 @@ zbx_vc_add_values_LDFLAGS = @SERVER_LDFLAGS@ $(COMMON_WRAP_FUNCS)
zbx_vc_add_values_CFLAGS = \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory \
-I@top_srcdir@/tests
zbx_vc_get_value_SOURCES = \
zbx_vc_common.c \
zbx_vc_get_value.c \
- @top_srcdir@/src/libs/zbxdbcache/valuecache.c \
+ @top_srcdir@/src/libs/zbxcachevalue/valuecache.c \
@top_srcdir@/src/libs/zbxhistory/history.c \
../../zbxmocktest.h
@@ -169,16 +179,22 @@ zbx_vc_get_value_LDFLAGS = @SERVER_LDFLAGS@ $(COMMON_WRAP_FUNCS)
zbx_vc_get_value_CFLAGS = \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory \
-I@top_srcdir@/tests
dc_maintenance_match_tags_CFLAGS = \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/tests
dc_check_maintenance_period_CFLAGS = \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/tests
dc_maintenance_match_tags_SOURCES = dc_maintenance_match_tags.c
@@ -197,12 +213,16 @@ is_item_processed_by_server_CFLAGS = -I@top_srcdir@/tests
dc_item_poller_type_update_SOURCES = dc_item_poller_type_update.c
dc_item_poller_type_update_LDADD = $(CACHE_LIBS) @SERVER_LIBS@
dc_item_poller_type_update_LDFLAGS = @SERVER_LDFLAGS@
-dc_item_poller_type_update_CFLAGS = -I@top_srcdir@/tests -I@top_srcdir@/src/libs/zbxdbcache
+dc_item_poller_type_update_CFLAGS = -I@top_srcdir@/tests -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory -I@top_srcdir@/src/libs/zbxcachevalue
dc_expand_user_macros_in_func_params_CFLAGS = \
-I@top_srcdir@/tests \
-I@top_srcdir@/tests/mocks/configcache \
- -I@top_srcdir@/src/libs/zbxdbcache
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue
+
dc_expand_user_macros_in_func_params_SOURCES = \
dc_expand_user_macros_in_func_params.c
dc_expand_user_macros_in_func_params_LDADD = \
diff --git a/tests/libs/zbxdbcache/dc_check_maintenance_period.c b/tests/libs/zbxdbcache/dc_check_maintenance_period.c
index d4259968b70..deee63ddc97 100644
--- a/tests/libs/zbxdbcache/dc_check_maintenance_period.c
+++ b/tests/libs/zbxdbcache/dc_check_maintenance_period.c
@@ -25,7 +25,7 @@
#include "zbxcommon.h"
#include "zbxmutexs.h"
#include "zbxalgo.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "log.h"
#include "dbconfig.h"
diff --git a/tests/libs/zbxdbcache/dc_expand_user_macros_in_func_params.c b/tests/libs/zbxdbcache/dc_expand_user_macros_in_func_params.c
index ae751ad0d46..82985689eb6 100644
--- a/tests/libs/zbxdbcache/dc_expand_user_macros_in_func_params.c
+++ b/tests/libs/zbxdbcache/dc_expand_user_macros_in_func_params.c
@@ -25,7 +25,7 @@
#include "zbxserver.h"
#include "zbxcommon.h"
#include "zbxalgo.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxmutexs.h"
#include "dbconfig.h"
diff --git a/tests/libs/zbxdbcache/dc_function_calculate_nextcheck.c b/tests/libs/zbxdbcache/dc_function_calculate_nextcheck.c
index fd59577f016..e8b6a1bb388 100644
--- a/tests/libs/zbxdbcache/dc_function_calculate_nextcheck.c
+++ b/tests/libs/zbxdbcache/dc_function_calculate_nextcheck.c
@@ -26,7 +26,7 @@
#include "zbxtrends.h"
#include "log.h"
#include "zbxdbhigh.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int zbx_dc_function_calculate_nextcheck(const zbx_trigger_timer_t *timer, time_t from, zbx_uint64_t seed);
diff --git a/tests/libs/zbxdbcache/dc_item_poller_type_update.c b/tests/libs/zbxdbcache/dc_item_poller_type_update.c
index b6bc9869c70..0f9bec82c95 100644
--- a/tests/libs/zbxdbcache/dc_item_poller_type_update.c
+++ b/tests/libs/zbxdbcache/dc_item_poller_type_update.c
@@ -32,7 +32,7 @@
#include "zbxcommon.h"
#include "zbxmutexs.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "dbconfig.h"
#include "dc_item_poller_type_update_test.h"
diff --git a/tests/libs/zbxdbcache/dc_maintenance_match_tags.c b/tests/libs/zbxdbcache/dc_maintenance_match_tags.c
index 12815c5e6ca..9bdf9c17b19 100644
--- a/tests/libs/zbxdbcache/dc_maintenance_match_tags.c
+++ b/tests/libs/zbxdbcache/dc_maintenance_match_tags.c
@@ -25,7 +25,7 @@
#include "zbxcommon.h"
#include "zbxmutexs.h"
#include "zbxalgo.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "dbconfig.h"
#include "dbconfig_maintenance_test.h"
diff --git a/tests/libs/zbxdbcache/is_item_processed_by_server.c b/tests/libs/zbxdbcache/is_item_processed_by_server.c
index 63d912aa57b..e3da647a454 100644
--- a/tests/libs/zbxdbcache/is_item_processed_by_server.c
+++ b/tests/libs/zbxdbcache/is_item_processed_by_server.c
@@ -23,7 +23,7 @@
#include "zbxmockutil.h"
#include "zbxcommon.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
void zbx_mock_test_entry(void **state)
{
diff --git a/tests/libs/zbxdbcache/um_cache_mock.c b/tests/libs/zbxdbcache/um_cache_mock.c
index 6a06a30c852..a1337a3dbeb 100644
--- a/tests/libs/zbxdbcache/um_cache_mock.c
+++ b/tests/libs/zbxdbcache/um_cache_mock.c
@@ -24,8 +24,9 @@
#include "zbxnum.h"
#include "zbxalgo.h"
-#include "zbxdbcache/user_macro.h"
+#include "zbxcacheconfig/user_macro.h"
#include "um_cache_mock.h"
+#include "zbxshmem.h"
ZBX_PTR_VECTOR_IMPL(um_mock_macro, zbx_um_mock_macro_t *)
diff --git a/tests/libs/zbxdbcache/um_cache_mock.h b/tests/libs/zbxdbcache/um_cache_mock.h
index 588a84361aa..8ce1c585804 100644
--- a/tests/libs/zbxdbcache/um_cache_mock.h
+++ b/tests/libs/zbxdbcache/um_cache_mock.h
@@ -20,8 +20,8 @@
#ifndef ZABBIX_UM_CACHE_MOCK_H
#define ZABBIX_UM_CACHE_MOCK_H
-#include "zbxdbcache/dbconfig.h"
-#include "zbxdbcache/dbsync.h"
+#include "zbxcacheconfig/dbconfig.h"
+#include "zbxcacheconfig/dbsync.h"
typedef struct
{
diff --git a/tests/libs/zbxdbcache/um_cache_resolve.c b/tests/libs/zbxdbcache/um_cache_resolve.c
index 5119f718c81..17b5697c2ba 100644
--- a/tests/libs/zbxdbcache/um_cache_resolve.c
+++ b/tests/libs/zbxdbcache/um_cache_resolve.c
@@ -23,7 +23,7 @@
#include "zbxmockutil.h"
#include "zbxnum.h"
-#include "zbxdbcache/user_macro.h"
+#include "zbxcacheconfig/user_macro.h"
#include "um_cache_mock.h"
static void mock_get_hostids(zbx_vector_uint64_t *hostids, zbx_mock_handle_t handle)
diff --git a/tests/libs/zbxdbcache/um_cache_resolve_cont.c b/tests/libs/zbxdbcache/um_cache_resolve_cont.c
index fbf9c8152dc..bccc3ad6421 100644
--- a/tests/libs/zbxdbcache/um_cache_resolve_cont.c
+++ b/tests/libs/zbxdbcache/um_cache_resolve_cont.c
@@ -24,7 +24,7 @@
#include "zbxcommon.h"
#include "zbxjson.h"
-#include "zbxdbcache/user_macro.h"
+#include "zbxcacheconfig/user_macro.h"
#include "zbxalgo.h"
#include "um_cache_mock.h"
diff --git a/tests/libs/zbxdbcache/um_cache_sync.c b/tests/libs/zbxdbcache/um_cache_sync.c
index 54bdec14753..9e6120e4eb8 100644
--- a/tests/libs/zbxdbcache/um_cache_sync.c
+++ b/tests/libs/zbxdbcache/um_cache_sync.c
@@ -23,7 +23,7 @@
#include "zbxmockutil.h"
#include "zbxcommon.h"
-#include "zbxdbcache/user_macro.h"
+#include "zbxcacheconfig/user_macro.h"
#include "zbxalgo.h"
#include "um_cache_mock.h"
diff --git a/tests/libs/zbxdbcache/zbx_vc_add_values.c b/tests/libs/zbxdbcache/zbx_vc_add_values.c
index 574efdf2b7f..c4b489e97fe 100644
--- a/tests/libs/zbxdbcache/zbx_vc_add_values.c
+++ b/tests/libs/zbxdbcache/zbx_vc_add_values.c
@@ -23,7 +23,7 @@
#include "zbxmockutil.h"
#include "zbxcommon.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "valuecache_test.h"
#include "mocks/valuecache/valuecache_mock.h"
diff --git a/tests/libs/zbxdbcache/zbx_vc_common.c b/tests/libs/zbxdbcache/zbx_vc_common.c
index 1dcdc946f48..807f90f243f 100644
--- a/tests/libs/zbxdbcache/zbx_vc_common.c
+++ b/tests/libs/zbxdbcache/zbx_vc_common.c
@@ -25,7 +25,7 @@
#include "zbxnum.h"
#include "zbxmutexs.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "valuecache_test.h"
#include "mocks/valuecache/valuecache_mock.h"
diff --git a/tests/libs/zbxdbcache/zbx_vc_get_value.c b/tests/libs/zbxdbcache/zbx_vc_get_value.c
index fbdd784f588..2bc786c104f 100644
--- a/tests/libs/zbxdbcache/zbx_vc_get_value.c
+++ b/tests/libs/zbxdbcache/zbx_vc_get_value.c
@@ -23,7 +23,7 @@
#include "zbxmockutil.h"
#include "zbxnum.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "valuecache_test.h"
#include "mocks/valuecache/valuecache_mock.h"
diff --git a/tests/libs/zbxdbcache/zbx_vc_get_values.c b/tests/libs/zbxdbcache/zbx_vc_get_values.c
index 039616df687..b4187f54ccf 100644
--- a/tests/libs/zbxdbcache/zbx_vc_get_values.c
+++ b/tests/libs/zbxdbcache/zbx_vc_get_values.c
@@ -23,7 +23,7 @@
#include "zbxmockutil.h"
#include "zbxcommon.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "valuecache_test.h"
#include "mocks/valuecache/valuecache_mock.h"
diff --git a/tests/libs/zbxdbhigh/Makefile.am b/tests/libs/zbxdbhigh/Makefile.am
index 0ab3589a6f8..31ea5ed6962 100644
--- a/tests/libs/zbxdbhigh/Makefile.am
+++ b/tests/libs/zbxdbhigh/Makefile.am
@@ -20,9 +20,10 @@ COMMON_LIB = \
$(top_srcdir)/src/libs/zbxhistory/libzbxhistory.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
$(top_srcdir)/src/libs/zbxexec/libzbxexec.a \
- $(top_srcdir)/src/libs/zbxjson/libzbxjson.a \
$(top_srcdir)/src/libs/zbxmodules/libzbxmodules.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
+ $(top_srcdir)/src/libs/zbxjson/libzbxjson.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
$(top_srcdir)/src/libs/zbxdbschema/libzbxdbschema.a \
$(top_srcdir)/src/libs/zbxavailability/libzbxavailability.a \
@@ -33,6 +34,7 @@ COMMON_LIB = \
$(top_srcdir)/src/libs/zbxregexp/libzbxregexp.a \
$(top_srcdir)/src/libs/zbxhash/libzbxhash.a \
$(top_srcdir)/src/libs/zbxcrypto/libzbxcrypto.a \
+ $(top_srcdir)/src/libs/zbxhash/libzbxhash.a \
$(top_srcdir)/src/libs/zbxvault/libzbxvault.a \
$(top_builddir)/src/libs/zbxcyberark/libzbxcyberark.a \
$(top_builddir)/src/libs/zbxhashicorp/libzbxhashicorp.a \
@@ -55,10 +57,12 @@ COMMON_LIB = \
$(top_srcdir)/src/libs/zbxnum/libzbxnum.a \
$(top_srcdir)/src/libs/zbxcommon/libzbxcommon.a \
$(top_srcdir)/tests/libzbxmocktest.a \
- $(top_srcdir)/tests/libzbxmockdata.a
+ $(top_srcdir)/tests/libzbxmockdata.a \
+ $(top_srcdir)/src/libs/zbxalgo/libzbxalgo.a
if SERVER
SERVER_COMMON_LIB = \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
$(top_srcdir)/src/zabbix_server/libzbxserver.a \
$(top_srcdir)/src/zabbix_server/alerter/libzbxalerter.a \
@@ -87,7 +91,9 @@ SERVER_COMMON_LIB = \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo_http.a \
$(top_srcdir)/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/alias/libalias.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxeval/libzbxeval.a \
$(top_srcdir)/src/libs/zbxserialize/libzbxserialize.a \
$(top_srcdir)/src/zabbix_server/availability/libavailability.a \
@@ -131,9 +137,12 @@ if PROXY
PROXY_COMMON_LIB = \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxeval/libzbxeval.a \
$(top_srcdir)/src/libs/zbxserialize/libzbxserialize.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
$(top_srcdir)/src/zabbix_proxy/libzbxproxy.a \
$(top_srcdir)/src/libs/zbxsysinfo/libzbxproxysysinfo.a \
diff --git a/tests/libs/zbxeval/Makefile.am b/tests/libs/zbxeval/Makefile.am
index 2292d2c1963..022b60697c2 100755
--- a/tests/libs/zbxeval/Makefile.am
+++ b/tests/libs/zbxeval/Makefile.am
@@ -37,7 +37,9 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/zabbix_server/odbc/libzbxodbc.a \
$(top_srcdir)/src/zabbix_server/scripts/libzbxscripts.a \
$(top_srcdir)/src/zabbix_server/preprocessor/libpreprocessor.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxeval/libzbxeval.a \
$(top_srcdir)/src/libs/zbxserialize/libzbxserialize.a \
$(top_srcdir)/src/libs/zbxtrends/libzbxtrends.a \
@@ -67,6 +69,7 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/libs/zbxhistory/libzbxhistory.a \
$(top_srcdir)/src/zabbix_server/libzbxserver.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxvault/libzbxvault.a \
$(top_builddir)/src/libs/zbxcyberark/libzbxcyberark.a \
$(top_builddir)/src/libs/zbxhashicorp/libzbxhashicorp.a \
diff --git a/tests/libs/zbxhistory/Makefile.am b/tests/libs/zbxhistory/Makefile.am
index 1140766a527..31626819d63 100644
--- a/tests/libs/zbxhistory/Makefile.am
+++ b/tests/libs/zbxhistory/Makefile.am
@@ -10,6 +10,7 @@ HISTORY_LIBS = \
$(top_srcdir)/src/libs/zbxhistory/libzbxhistory.a \
$(top_srcdir)/src/libs/zbxvariant/libzbxvariant.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdbschema/libzbxdbschema.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
$(top_srcdir)/src/libs/zbxjson/libzbxjson.a \
diff --git a/tests/libs/zbxjson/Makefile.am b/tests/libs/zbxjson/Makefile.am
index d5190957c97..5f770afaf0f 100644
--- a/tests/libs/zbxjson/Makefile.am
+++ b/tests/libs/zbxjson/Makefile.am
@@ -3,7 +3,7 @@ noinst_PROGRAMS = \
zbx_json_decodevalue \
zbx_json_decodevalue_dyn \
zbx_jsonpath_compile \
- zbx_jsonpath_query
+ zbx_jsonobj_query
JSON_LIBS = \
$(top_srcdir)/tests/libzbxmocktest.a \
@@ -104,22 +104,22 @@ endif
zbx_jsonpath_compile_CFLAGS = -I@top_srcdir@/tests
-# zbx_jsonpath_query
+# zbx_jsonobj_query
-zbx_jsonpath_query_SOURCES = \
- zbx_jsonpath_query.c \
+zbx_jsonobj_query_SOURCES = \
+ zbx_jsonobj_query.c \
../../zbxmocktest.h
-zbx_jsonpath_query_LDADD = $(JSON_LIBS)
+zbx_jsonobj_query_LDADD = $(JSON_LIBS)
if SERVER
-zbx_jsonpath_query_LDADD += @SERVER_LIBS@
-zbx_jsonpath_query_LDFLAGS = @SERVER_LDFLAGS@
+zbx_jsonobj_query_LDADD += @SERVER_LIBS@
+zbx_jsonobj_query_LDFLAGS = @SERVER_LDFLAGS@
else
if PROXY
-zbx_jsonpath_query_LDADD += @PROXY_LIBS@
-zbx_jsonpath_query_LDFLAGS = @PROXY_LDFLAGS@
+zbx_jsonobj_query_LDADD += @PROXY_LIBS@
+zbx_jsonobj_query_LDFLAGS = @PROXY_LDFLAGS@
endif
endif
-zbx_jsonpath_query_CFLAGS = -I@top_srcdir@/tests
+zbx_jsonobj_query_CFLAGS = -I@top_srcdir@/tests
diff --git a/tests/libs/zbxjson/zbx_jsonpath_query.c b/tests/libs/zbxjson/zbx_jsonobj_query.c
index 6e560a6a494..25349d6932e 100644
--- a/tests/libs/zbxjson/zbx_jsonpath_query.c
+++ b/tests/libs/zbxjson/zbx_jsonobj_query.c
@@ -51,26 +51,13 @@ static void check_indefinite_path_result(zbx_mock_handle_t handle, const char *r
zbx_mock_assert_json_eq("Indefinite query result", expected_output, returned_output);
}
-void zbx_mock_test_entry(void **state)
+static void test_query(zbx_jsonobj_t *obj, const char *path, int expected_ret)
{
- const char *data, *path;
- struct zbx_json_parse jp;
char *output = NULL;
- int expected_ret, returned_ret;
+ int returned_ret;
zbx_mock_handle_t handle;
- ZBX_UNUSED(state);
-
- /* reset json error to check if compilation will set it */
- zbx_set_json_strerror("%s", "");
-
- data = zbx_mock_get_parameter_string("in.data");
- if (FAIL == zbx_json_open(data, &jp))
- fail_msg("Invalid json data: %s", zbx_json_strerror());
-
- path = zbx_mock_get_parameter_string("in.path");
- returned_ret = zbx_jsonpath_query(&jp, path, &output);
- expected_ret = zbx_mock_str_to_return_code(zbx_mock_get_parameter_string("out.return"));
+ returned_ret = zbx_jsonobj_query(obj, path, &output);
if (FAIL == returned_ret)
printf("\tzbx_jsonpath_query() failed with: %s\n", zbx_json_strerror());
@@ -97,4 +84,31 @@ void zbx_mock_test_entry(void **state)
zbx_mock_assert_str_ne("tzbx_jsonpath_query() error", "", zbx_json_strerror());
zbx_free(output);
+
+}
+
+void zbx_mock_test_entry(void **state)
+{
+ const char *data, *path;
+ int expected_ret;
+ zbx_jsonobj_t obj;
+
+ ZBX_UNUSED(state);
+
+ /* reset json error to check if compilation will set it */
+ zbx_set_json_strerror("%s", "");
+
+ data = zbx_mock_get_parameter_string("in.data");
+ if (FAIL == zbx_jsonobj_open(data, &obj))
+ fail_msg("Invalid json data: %s", zbx_json_strerror());
+
+ path = zbx_mock_get_parameter_string("in.path");
+ expected_ret = zbx_mock_str_to_return_code(zbx_mock_get_parameter_string("out.return"));
+
+ test_query(&obj, path, expected_ret);
+
+ /* query second time to check index reuse */
+ test_query(&obj, path, expected_ret);
+
+ zbx_jsonobj_clear(&obj);
}
diff --git a/tests/libs/zbxjson/zbx_jsonpath_query.inc.yaml b/tests/libs/zbxjson/zbx_jsonobj_query.inc.yaml
index 456f49ebe28..456f49ebe28 100644
--- a/tests/libs/zbxjson/zbx_jsonpath_query.inc.yaml
+++ b/tests/libs/zbxjson/zbx_jsonobj_query.inc.yaml
diff --git a/tests/libs/zbxjson/zbx_jsonpath_query.yaml b/tests/libs/zbxjson/zbx_jsonobj_query.yaml
index a4b784b90d9..7e9aae0044d 100644
--- a/tests/libs/zbxjson/zbx_jsonpath_query.yaml
+++ b/tests/libs/zbxjson/zbx_jsonobj_query.yaml
@@ -37,7 +37,7 @@ out:
return: SUCCEED
---
test case: Query $.filters.price
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.filters.price
@@ -46,7 +46,7 @@ out:
value: 10
---
test case: Query $.filters.category
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.filters.category
@@ -55,7 +55,7 @@ out:
value: fiction
---
test case: Query $.filters.id
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.filters.id
@@ -63,7 +63,7 @@ out:
return: SUCCEED
---
test case: Query $.books[1].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[1].title
@@ -72,7 +72,7 @@ out:
value: Sword of Honour
---
test case: Query $['closed message']
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $['closed message']
@@ -81,7 +81,7 @@ out:
value: Store is closed
---
test case: Query $.books[-1].author
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[-1].author
@@ -90,7 +90,7 @@ out:
value: J. R. R. Tolkien
---
test case: Query $.filters
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.filters
@@ -104,7 +104,7 @@ out:
}
---
test case: Query $.books.length()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books.length()
@@ -113,7 +113,7 @@ out:
value: 4
---
test case: Query $.tags[:]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.tags[:]
@@ -122,7 +122,7 @@ out:
value: '["a", "b", "c", "d", "e" ]'
---
test case: Query $.tags[2:]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.tags[2:]
@@ -131,7 +131,7 @@ out:
value: '["c", "d", "e" ]'
---
test case: Query $.tags[:2]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.tags[:2]
@@ -140,7 +140,7 @@ out:
value: '["a", "b"]'
---
test case: Query $.tags[1:4]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.tags[1:4]
@@ -149,7 +149,7 @@ out:
value: '["b", "c", "d"]'
---
test case: Query $.tags[-2:]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.tags[-2:]
@@ -158,7 +158,7 @@ out:
value: '["d", "e"]'
---
test case: Query $.tags[:-3]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.tags[:-3]
@@ -167,7 +167,7 @@ out:
value: '["a", "b"]'
---
test case: Query $.tags[:-3].length()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.tags[:-3].length()
@@ -176,25 +176,25 @@ out:
value: 2
---
test case: Query $.books[0, 2].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[0, 2].title
out:
return: SUCCEED
- value: '["Sayings of the Century", "Moby Dick"]'
+ value: '["Moby Dick", "Sayings of the Century"]'
---
test case: Query $.books[1]['author', "title"]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[1]['author', "title"]
out:
return: SUCCEED
- value: '["Evelyn Waugh", "Sword of Honour"]'
+ value: '["Sword of Honour", "Evelyn Waugh"]'
---
test case: Query $..id
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $..id
@@ -203,16 +203,16 @@ out:
value: '[1, 2, 3, 4]'
---
test case: Query $.services..price
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.services..price
out:
return: SUCCEED
- value: '[5, 154.99, 46, 24.5, 99.49]'
+ value: '[154.99, 5, 46, 24.5, 99.49]'
---
test case: Query $.books[?(@.id == 1 + 1)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 1 + 1)].title
@@ -221,7 +221,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == 4 / 2)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 4 / 2)].title
@@ -230,7 +230,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == 7 - 5)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 7 - 5)].title
@@ -239,7 +239,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == 0.4 * 5)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 0.4 * 5)].title
@@ -248,7 +248,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == 4 - 0.4 * 5)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 4 - 0.4 * 5)].title
@@ -257,7 +257,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == -0.4 * 5 + 4)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == -0.4 * 5 + 4)].title
@@ -266,7 +266,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == 0.4 * (-5) + 4)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 0.4 * (-5) + 4)].title
@@ -275,7 +275,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == 2 || @.id == 4)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 2 || @.id == 4)].title
@@ -284,7 +284,7 @@ out:
value: '["Sword of Honour", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.id == 2 && 2 * ((1 + 3) / 2 + 3) == 10)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 2 && 2 * ((1 + 3) / 2 + 3) == 10)].title
@@ -293,7 +293,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.id == 2 == 1)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 2 == 1)].title
@@ -302,7 +302,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(!(@.id == 2))].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(!(@.id == 2))].title
@@ -311,7 +311,7 @@ out:
value: '["Sayings of the Century", "Moby Dick", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.id != 2)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id != 2)].title
@@ -320,7 +320,7 @@ out:
value: '["Sayings of the Century", "Moby Dick", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.title =~ " of ")].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.title =~ " of ")].title
@@ -329,7 +329,7 @@ out:
value: '["Sayings of the Century", "Sword of Honour", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.price > 12.99)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.price > 12.99)].title
@@ -338,7 +338,7 @@ out:
value: '["The Lord of the Rings"]'
---
test case: Query $.books[?(@.price >= 12.99)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.price >= 12.99)].title
@@ -347,7 +347,7 @@ out:
value: '["Sword of Honour", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.price < 12.99)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.price < 12.99)].title
@@ -356,7 +356,7 @@ out:
value: '["Sayings of the Century", "Moby Dick"]'
---
test case: Query $.books[?(@.price <= 12.99)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.price <= 12.99)].title
@@ -365,7 +365,7 @@ out:
value: '["Sayings of the Century", "Sword of Honour", "Moby Dick"]'
---
test case: Query $.books[?(@.author > "Herman Melville")].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.author > "Herman Melville")].title
@@ -374,7 +374,7 @@ out:
value: '["Sayings of the Century", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.author >= "Herman Melville")].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.author >= "Herman Melville")].title
@@ -383,7 +383,7 @@ out:
value: '["Sayings of the Century", "Moby Dick", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.author < "Herman Melville")].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.author < "Herman Melville")].title
@@ -392,7 +392,7 @@ out:
value: '["Sword of Honour"]'
---
test case: Query $.books[?(@.author <= "Herman Melville")].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.author <= "Herman Melville")].title
@@ -401,7 +401,7 @@ out:
value: '["Sword of Honour", "Moby Dick"]'
---
test case: Query $.books[?(@.price > $.filters.price)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.price > $.filters.price)].title
@@ -410,7 +410,7 @@ out:
value: '["Sword of Honour", "The Lord of the Rings"]'
---
test case: Query $.books[?(@.category == $.filters.category)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.category == $.filters.category)].title
@@ -419,7 +419,7 @@ out:
value: '["Sword of Honour","Moby Dick","The Lord of the Rings"]'
---
test case: Query $.books[?(@.category != $.filters.category)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.category != $.filters.category)].title
@@ -428,7 +428,7 @@ out:
value: '["Sayings of the Century"]'
---
test case: Query $..[?(@.id)]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $..[?(@.id)]
@@ -469,7 +469,7 @@ out:
]
---
test case: Query $.services..[?(@.price > 50)].description
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.services..[?(@.price > 50)].description
@@ -478,7 +478,7 @@ out:
value: '["Printing and assembling book in A5 format", "Rebinding torn book"]'
---
test case: Query $..id.length()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $..id.length()
@@ -487,7 +487,7 @@ out:
value: 4
---
test case: Query $.books[?(@.price >= 12.99)].length()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.price >= 12.99)].length()
@@ -496,7 +496,7 @@ out:
value: 2
---
test case: Query $.books[?(@.id == 2)].title.first()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.id == 2)].title.first()
@@ -505,7 +505,7 @@ out:
value: Sword of Honour
---
test case: Query $..tags.first().length()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $..tags.first().length()
@@ -514,7 +514,7 @@ out:
value: 5
---
test case: Query $.bad.path.first().length()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.bad.path.first().length()
@@ -522,7 +522,7 @@ out:
return: FAIL
---
test case: Query $.[?(@.ElementName == "test")].values.first().length()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.[?(@.ElementName == "test")].values.first().length()
@@ -562,7 +562,7 @@ out:
value: a
---
test case: Query $.books[*].price.min()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[*].price.min()
@@ -571,7 +571,7 @@ out:
value: 8.95
---
test case: Query $..price.max()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $..price.max()
@@ -580,7 +580,7 @@ out:
value: 154.99
---
test case: Query $.books[?(@.category == "fiction")].price.avg()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.category == "fiction")].price.avg()
@@ -589,7 +589,7 @@ out:
value: 14.99
---
test case: Query $.books[?(@.category == $.filters.xyz)].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.category == $.filters.xyz)].title
@@ -597,7 +597,7 @@ out:
return: SUCCEED
---
test case: Query $.filters['no filters']
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.filters['no filters']
@@ -606,16 +606,16 @@ out:
value: no "filters"
---
test case: Query $.services[?(@.active=="true")].servicegroup
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.services[?(@.active=="true")].servicegroup
out:
return: SUCCEED
- value: '[1000,1001]'
+ value: '[1001,1000]'
---
test case: Query $.services[?(@.active=="false")].servicegroup
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.services[?(@.active=="false")].servicegroup
@@ -624,7 +624,7 @@ out:
value: '[1002]'
---
test case: Query $.books[?(@.title =~ "[a-z")].title
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.title =~ "[a-z")].title
@@ -632,7 +632,7 @@ out:
return: FAIL
---
test case: $..books[?(!@.isbn)]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $..books[?(!@.isbn)]
@@ -657,7 +657,7 @@ out:
]
---
test case: $..books[?(@.isbn)]
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $..books[?(@.isbn)]
@@ -684,7 +684,7 @@ out:
]
---
test case: Query $.books[*].price.sum()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[*].price.sum()
@@ -725,25 +725,25 @@ out:
values: '[2]'
---
test case: Query $.*~
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.*~
out:
return: SUCCEED
- value: '["books","services","filters","closed message","tags"]'
+ value: '["filters", "services", "tags", "books", "closed message"]'
---
test case: Query $.*~.first()
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.*~.first()
out:
return: SUCCEED
- value: 'books'
+ value: 'filters'
---
test case: Query $.services[?(@.servicegroup=="1002")]~
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.services[?(@.servicegroup=="1002")]~
@@ -752,11 +752,49 @@ out:
value: '["restoration"]'
---
test case: Query $.books[?(@.category=="fiction")]~
-include: &include zbx_jsonpath_query.inc.yaml
+include: &include zbx_jsonobj_query.inc.yaml
in:
data: *include
path: $.books[?(@.category=="fiction")]~
out:
return: SUCCEED
value: '["1","2","3"]'
+---
+test case: Query $.books[?(@.category=="reference")].price
+include: &include zbx_jsonobj_query.inc.yaml
+in:
+ data: *include
+ path: $.books[?(@.category=="reference")].price
+out:
+ return: SUCCEED
+ value: '[8.95]'
+---
+test case: Query $.books[1,1].title
+include: &include zbx_jsonobj_query.inc.yaml
+in:
+ data: *include
+ path: $.books[1,1].title
+out:
+ return: SUCCEED
+ value: Sword of Honour
+---
+test case: Query $.books[1:2].title
+include: &include zbx_jsonobj_query.inc.yaml
+in:
+ data: *include
+ path: $.books[1:2].title
+out:
+ return: SUCCEED
+ value: '["Sword of Honour"]'
+---
+test case: Query $.books[1]["title","title"]
+include: &include zbx_jsonobj_query.inc.yaml
+in:
+ data: *include
+ path: $.books[1].["title","title"]
+out:
+ return: SUCCEED
+ value: Sword of Honour
...
+
+
diff --git a/tests/libs/zbxjson/zbx_jsonpath_compile.c b/tests/libs/zbxjson/zbx_jsonpath_compile.c
index e98a2c7827c..0caab92de81 100644
--- a/tests/libs/zbxjson/zbx_jsonpath_compile.c
+++ b/tests/libs/zbxjson/zbx_jsonpath_compile.c
@@ -54,7 +54,7 @@ static void jsonpath_token_print(char **data, size_t *data_alloc, size_t *data_o
case ZBX_JSONPATH_TOKEN_PATH_RELATIVE:
case ZBX_JSONPATH_TOKEN_CONST_STR:
case ZBX_JSONPATH_TOKEN_CONST_NUM:
- zbx_strcpy_alloc(data, data_alloc, data_offset, token->data);
+ zbx_strcpy_alloc(data, data_alloc, data_offset, token->text);
break;
case ZBX_JSONPATH_TOKEN_PAREN_LEFT:
zbx_strcpy_alloc(data, data_alloc, data_offset, "(");
diff --git a/tests/libs/zbxserver/Makefile.am b/tests/libs/zbxserver/Makefile.am
index 4ecef916cf6..d6f5c02a45c 100755
--- a/tests/libs/zbxserver/Makefile.am
+++ b/tests/libs/zbxserver/Makefile.am
@@ -35,7 +35,9 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/zabbix_server/scripts/libzbxscripts.a \
$(top_srcdir)/src/zabbix_server/preprocessor/libpreprocessor.a \
$(top_srcdir)/src/libs/zbxserver/libzbxserver.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxtrends/libzbxtrends.a \
$(top_srcdir)/src/libs/zbxsysinfo/libzbxserversysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo.a \
@@ -45,7 +47,20 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/libs/zbxsysinfo/alias/libalias.a \
$(top_srcdir)/src/libs/zbxself/libzbxself.a \
$(top_srcdir)/src/libs/zbxmedia/libzbxmedia.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxserver/libzbxserver.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
+ $(top_srcdir)/src/libs/zbxtrends/libzbxtrends.a \
+ $(top_srcdir)/src/libs/zbxsysinfo/libzbxserversysinfo.a \
+ $(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo.a \
+ $(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo_httpmetrics.a \
+ $(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo_http.a \
+ $(top_srcdir)/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
+ $(top_srcdir)/src/libs/zbxsysinfo/alias/libalias.a \
+ $(top_srcdir)/src/libs/zbxself/libzbxself.a \
+ $(top_srcdir)/src/libs/zbxmedia/libzbxmedia.a \
$(top_srcdir)/src/libs/zbxserialize/libzbxserialize.a \
$(top_srcdir)/src/zabbix_server/availability/libavailability.a \
$(top_srcdir)/src/libs/zbxcompress/libzbxcompress.a \
@@ -72,6 +87,7 @@ COMMON_LIB_FILES = \
$(top_srcdir)/src/libs/zbxservice/libzbxservice.a \
$(top_srcdir)/src/zabbix_server/service/libservice.a \
$(top_srcdir)/src/libs/zbxexport/libzbxexport.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
$(top_srcdir)/src/libs/zbxdbschema/libzbxdbschema.a \
$(top_srcdir)/src/libs/zbxxml/libzbxxml.a \
@@ -132,7 +148,9 @@ macro_fmttime_LDADD += @SERVER_LIBS@
macro_fmttime_LDFLAGS = @SERVER_LDFLAGS@ $(VALUECACHE_WRAP_FUNCS)
macro_fmttime_CFLAGS = $(COMMON_COMPILER_FLAGS) \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxserver
evaluate_function_SOURCES = \
@@ -205,22 +223,30 @@ VALUECACHE_WRAP_FUNCS = \
evaluate_function_CFLAGS = $(COMMON_COMPILER_FLAGS) \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory
evaluate_stl_CFLAGS = $(COMMON_COMPILER_FLAGS) \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory
evaluate_percentage_deviations_in_remainder_CFLAGS = $(COMMON_COMPILER_FLAGS) \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory
valuemaps_CFLAGS = $(COMMON_COMPILER_FLAGS) \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory
endif
diff --git a/tests/libs/zbxserver/evaluate_function.c b/tests/libs/zbxserver/evaluate_function.c
index 21c0a655c8c..2a03937e3cb 100644
--- a/tests/libs/zbxserver/evaluate_function.c
+++ b/tests/libs/zbxserver/evaluate_function.c
@@ -22,7 +22,7 @@
#include "zbxmockassert.h"
#include "zbxmockutil.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "zbxserver.h"
#include "../../src/libs/zbxserver/evalfunc.h"
diff --git a/tests/libs/zbxserver/evaluate_percentage_deviations_in_remainder.c b/tests/libs/zbxserver/evaluate_percentage_deviations_in_remainder.c
index 8c962bc1964..a2e80741332 100644
--- a/tests/libs/zbxserver/evaluate_percentage_deviations_in_remainder.c
+++ b/tests/libs/zbxserver/evaluate_percentage_deviations_in_remainder.c
@@ -22,7 +22,7 @@
#include "zbxmockassert.h"
#include "zbxmockutil.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "zbxserver.h"
#include "zbxtrends.h"
#include "zbxparam.h"
diff --git a/tests/libs/zbxserver/evaluate_stl.c b/tests/libs/zbxserver/evaluate_stl.c
index 8ed26dc5805..d90d97545e5 100644
--- a/tests/libs/zbxserver/evaluate_stl.c
+++ b/tests/libs/zbxserver/evaluate_stl.c
@@ -23,7 +23,7 @@
#include "zbxmockutil.h"
#include "zbxserver.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "mocks/valuecache/valuecache_mock.h"
#include "../../../src/libs/zbxserver/anomalystl.h"
diff --git a/tests/libs/zbxserver/macro_fmttime.c b/tests/libs/zbxserver/macro_fmttime.c
index 651472c6b77..b92ca15064b 100644
--- a/tests/libs/zbxserver/macro_fmttime.c
+++ b/tests/libs/zbxserver/macro_fmttime.c
@@ -26,7 +26,7 @@
#include "macrofunc.h"
#include "log.h"
#include "zbxexpr.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "mocks/valuecache/valuecache_mock.h"
int __wrap_substitute_simple_macros(zbx_uint64_t *actionid, const ZBX_DB_EVENT *event, const ZBX_DB_EVENT *r_event,
diff --git a/tests/libs/zbxsysinfo/Makefile.am b/tests/libs/zbxsysinfo/Makefile.am
index 3107c5c9dc3..7532ec716cb 100644
--- a/tests/libs/zbxsysinfo/Makefile.am
+++ b/tests/libs/zbxsysinfo/Makefile.am
@@ -60,7 +60,9 @@ parse_item_key_LDADD = \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo_http.a \
$(top_srcdir)/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
$(top_srcdir)/src/libs/zbxsysinfo/alias/libalias.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxhistory/libzbxhistory.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
$(top_srcdir)/src/libs/zbxregexp/libzbxregexp.a \
@@ -78,6 +80,7 @@ parse_item_key_LDADD = \
$(top_srcdir)/src/libs/zbxicmpping/libzbxicmpping.a \
$(top_srcdir)/src/libs/zbxdbupgrade/libzbxdbupgrade.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
$(top_srcdir)/src/libs/zbxmodules/libzbxmodules.a \
$(top_srcdir)/src/libs/zbxtasks/libzbxtasks.a \
@@ -118,11 +121,11 @@ check_service_test_LDADD = \
$(top_srcdir)/src/libs/zbxthreads/libzbxthreads.a \
$(top_srcdir)/src/libs/zbxhash/libzbxhash.a \
$(top_srcdir)/src/libs/zbxnix/libzbxnix.a \
- $(top_srcdir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_srcdir)/src/libs/zbxlog/libzbxlog.a \
$(top_srcdir)/src/libs/zbxmutexs/libzbxmutexs.a \
$(top_srcdir)/src/libs/zbxconf/libzbxconf.a \
$(top_srcdir)/src/libs/zbxjson/libzbxjson.a \
+ $(top_srcdir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_srcdir)/src/libs/zbxexec/libzbxexec.a \
$(top_srcdir)/src/libs/zbxvariant/libzbxvariant.a \
$(top_srcdir)/src/libs/zbxhttp/libzbxhttp.a \
@@ -237,6 +240,7 @@ check_key_access_rules_SOURCES = \
check_key_access_rules_LDADD = $(COMMON_LIB_FILES) \
$(top_srcdir)/src/libs/zbxjson/libzbxjson.a \
+ $(top_srcdir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo_http.a \
$(top_srcdir)/src/libs/zbxhttp/libzbxhttp.a
diff --git a/tests/libs/zbxtime/Makefile.am b/tests/libs/zbxtime/Makefile.am
index 4cd52c8082b..68226b613b3 100644
--- a/tests/libs/zbxtime/Makefile.am
+++ b/tests/libs/zbxtime/Makefile.am
@@ -10,6 +10,7 @@ COMMON_SRC_FILES = \
../../zbxmocktest.h
COMMON_LIB_FILES = \
+ $(top_srcdir)/tests/libzbxmockdata.a \
$(top_srcdir)/src/libs/zbxtime/libzbxtime.a \
$(top_srcdir)/src/libs/zbxnix/libzbxnix.a \
$(top_srcdir)/src/libs/zbxlog/libzbxlog.a \
diff --git a/tests/libs/zbxtrends/Makefile.am b/tests/libs/zbxtrends/Makefile.am
index 064de208364..ae2b1c75245 100644
--- a/tests/libs/zbxtrends/Makefile.am
+++ b/tests/libs/zbxtrends/Makefile.am
@@ -11,6 +11,7 @@ COMMON_SRC_FILES = \
../../zbxmocktest.h
COMMON_LIB_FILES = \
+ $(top_srcdir)/tests/libzbxmockdata.a \
$(top_srcdir)/src/libs/zbxtrends/libzbxtrends.a \
$(top_srcdir)/src/libs/zbxregexp/libzbxregexp.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
diff --git a/tests/mocks/configcache/Makefile.am b/tests/mocks/configcache/Makefile.am
index 4bab279c50a..d4592463723 100644
--- a/tests/mocks/configcache/Makefile.am
+++ b/tests/mocks/configcache/Makefile.am
@@ -8,5 +8,7 @@ libconfigcachemock_a_SOURCES = \
libconfigcachemock_a_CFLAGS = \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/tests
diff --git a/tests/mocks/configcache/hosts.c b/tests/mocks/configcache/hosts.c
index f44ba9f9dcb..7ff4a59dc1c 100644
--- a/tests/mocks/configcache/hosts.c
+++ b/tests/mocks/configcache/hosts.c
@@ -25,7 +25,7 @@
#include "zbxserver.h"
#include "zbxcommon.h"
#include "zbxalgo.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxmutexs.h"
#include "dbconfig.h"
#include "configcache.h"
diff --git a/tests/mocks/valuecache/Makefile.am b/tests/mocks/valuecache/Makefile.am
index ea19d055a20..9a25aca30d0 100644
--- a/tests/mocks/valuecache/Makefile.am
+++ b/tests/mocks/valuecache/Makefile.am
@@ -6,6 +6,8 @@ libvaluecachemock_a_SOURCES = \
libvaluecachemock_a_CFLAGS = \
-I@top_srcdir@/src/libs/zbxalgo \
- -I@top_srcdir@/src/libs/zbxdbcache \
+ -I@top_srcdir@/src/libs/zbxcacheconfig \
+ -I@top_srcdir@/src/libs/zbxcachehistory \
+ -I@top_srcdir@/src/libs/zbxcachevalue \
-I@top_srcdir@/src/libs/zbxhistory \
-I@top_srcdir@/tests
diff --git a/tests/mocks/valuecache/valuecache_mock.c b/tests/mocks/valuecache/valuecache_mock.c
index c3b3ad4f5d7..cc0abaf11c1 100644
--- a/tests/mocks/valuecache/valuecache_mock.c
+++ b/tests/mocks/valuecache/valuecache_mock.c
@@ -22,7 +22,7 @@
#include "zbxmockutil.h"
#include "valuecache_mock.h"
-#include "valuecache.h"
+#include "zbxcachevalue.h"
#include "zbxnum.h"
#include "log.h"
#include "zbxmutexs.h"
@@ -30,7 +30,7 @@
#include "zbxalgo.h"
#include "zbxhistory.h"
#include "history.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include <setjmp.h>
#include <cmocka.h>
diff --git a/tests/zabbix_server/pinger/Makefile.am b/tests/zabbix_server/pinger/Makefile.am
index 2802b4b02e2..6e93b9aa8bd 100644
--- a/tests/zabbix_server/pinger/Makefile.am
+++ b/tests/zabbix_server/pinger/Makefile.am
@@ -9,7 +9,9 @@ COMMON_SRC_FILES = \
PINGER_LIBS = \
$(top_srcdir)/tests/libzbxmocktest.a \
$(top_srcdir)/tests/libzbxmockdata.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
$(top_srcdir)/src/libs/zbxmodules/libzbxmodules.a \
@@ -52,6 +54,10 @@ PINGER_LIBS = \
$(top_srcdir)/src/libs/zbxcyberark/libzbxcyberark.a \
$(top_srcdir)/src/libs/zbxhashicorp/libzbxhashicorp.a \
$(top_srcdir)/src/libs/zbxserialize/libzbxserialize.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
$(top_srcdir)/src/libs/zbxservice/libzbxservice.a \
$(top_srcdir)/src/libs/zbxaudit/libzbxaudit.a \
diff --git a/tests/zabbix_server/poller/Makefile.am b/tests/zabbix_server/poller/Makefile.am
index 5531959151d..31f478fa1bb 100644
--- a/tests/zabbix_server/poller/Makefile.am
+++ b/tests/zabbix_server/poller/Makefile.am
@@ -10,7 +10,6 @@ POLLER_LIBS = \
$(top_srcdir)/tests/libzbxmocktest.a \
$(top_srcdir)/tests/libzbxmockdata.a \
$(top_srcdir)/src/libs/zbxsysinfo/libzbxserversysinfo.a \
- $(top_srcdir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_srcdir)/src/libs/zbxlog/libzbxlog.a \
$(top_srcdir)/src/libs/zbxregexp/libzbxregexp.a \
$(top_srcdir)/src/libs/zbxsysinfo/common/libcommonsysinfo.a \
@@ -24,6 +23,7 @@ POLLER_LIBS = \
$(top_srcdir)/src/libs/zbxmutexs/libzbxmutexs.a \
$(top_srcdir)/src/libs/zbxexec/libzbxexec.a \
$(top_srcdir)/src/libs/zbxjson/libzbxjson.a \
+ $(top_srcdir)/src/libs/zbxalgo/libzbxalgo.a \
$(top_srcdir)/src/libs/zbxhash/libzbxhash.a \
$(top_srcdir)/src/libs/zbxhttp/libzbxhttp.a \
$(top_srcdir)/src/libs/zbxvariant/libzbxvariant.a \
diff --git a/tests/zabbix_server/poller/test_get_value_ssh.h b/tests/zabbix_server/poller/test_get_value_ssh.h
index 45f1f9d2d25..a9f9f44a36a 100644
--- a/tests/zabbix_server/poller/test_get_value_ssh.h
+++ b/tests/zabbix_server/poller/test_get_value_ssh.h
@@ -20,7 +20,7 @@
#ifndef POLLER_GET_VALUE_SSH_TEST_H
#define POLLER_GET_VALUE_SSH_TEST_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#if defined(HAVE_SSH2) || defined(HAVE_SSH)
int zbx_get_value_ssh_test_run(DC_ITEM *item, char **error);
diff --git a/tests/zabbix_server/poller/test_get_value_telnet.h b/tests/zabbix_server/poller/test_get_value_telnet.h
index adb776a2c88..cfc6b039a34 100644
--- a/tests/zabbix_server/poller/test_get_value_telnet.h
+++ b/tests/zabbix_server/poller/test_get_value_telnet.h
@@ -20,7 +20,7 @@
#ifndef POLLER_GET_VALUE_TELNET_TEST_H
#define POLLER_GET_VALUE_TELNET_TEST_H
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
int zbx_get_value_telnet_test_run(DC_ITEM *item, char **error);
diff --git a/tests/zabbix_server/preprocessor/zbx_item_preproc.c b/tests/zabbix_server/preprocessor/zbx_item_preproc.c
index d4936fae54b..7885c7d1a8d 100644
--- a/tests/zabbix_server/preprocessor/zbx_item_preproc.c
+++ b/tests/zabbix_server/preprocessor/zbx_item_preproc.c
@@ -24,7 +24,7 @@
#include "zbxcommon.h"
#include "zbxjson.h"
-#include "dbcache.h"
+#include "zbxcacheconfig.h"
#include "zbxembed.h"
#include "log.h"
diff --git a/tests/zabbix_server/preprocessor/zbx_item_preproc.yaml b/tests/zabbix_server/preprocessor/zbx_item_preproc.yaml
index ef12178fa0a..640fcbef4b7 100644
--- a/tests/zabbix_server/preprocessor/zbx_item_preproc.yaml
+++ b/tests/zabbix_server/preprocessor/zbx_item_preproc.yaml
@@ -965,7 +965,7 @@ in:
out:
return: SUCCEED
value: |-
- {"b":[1, 2, 3]}
+ {"b":[1,2,3]}
---
test case: jsonpath5
in:
@@ -980,7 +980,7 @@ in:
out:
return: SUCCEED
value: |-
- [1, 2, 3]
+ [1,2,3]
---
test case: jsonpath6
in:
@@ -1008,7 +1008,7 @@ in:
params: $.a['b c']
out:
return: SUCCEED
- value: '["one", "two", "three"]'
+ value: '["one","two","three"]'
---
test case: jsonpath8
in:
diff --git a/tests/zabbix_server/service/Makefile.am b/tests/zabbix_server/service/Makefile.am
index e099e8ed8a2..ee6d58ece9c 100644
--- a/tests/zabbix_server/service/Makefile.am
+++ b/tests/zabbix_server/service/Makefile.am
@@ -14,7 +14,9 @@ COMMON_SRC_FILES = \
COMMON_LIBS = \
$(top_srcdir)/tests/libzbxmocktest.a \
$(top_srcdir)/src/zabbix_server/service/libservice.a \
- $(top_srcdir)/src/libs/zbxdbcache/libzbxdbcache.a \
+ $(top_srcdir)/src/libs/zbxcacheconfig/libzbxcacheconfig.a \
+ $(top_srcdir)/src/libs/zbxcachehistory/libzbxcachehistory.a \
+ $(top_srcdir)/src/libs/zbxcachevalue/libzbxcachevalue.a \
$(top_srcdir)/src/libs/zbxavailability/libzbxavailability.a \
$(top_srcdir)/src/zabbix_server/availability/libavailability.a \
$(top_srcdir)/src/libs/zbxipcservice/libzbxipcservice.a \
@@ -38,6 +40,7 @@ COMMON_LIBS = \
$(top_srcdir)/src/libs/zbxexec/libzbxexec.a \
$(top_srcdir)/src/libs/zbxshmem/libzbxshmem.a \
$(top_srcdir)/src/libs/zbxdbhigh/libzbxdbhigh.a \
+ $(top_srcdir)/src/libs/zbxdbwrap/libzbxdbwrap.a \
$(top_srcdir)/src/libs/zbxdbschema/libzbxdbschema.a \
$(top_srcdir)/src/libs/zbxdb/libzbxdb.a \
$(top_srcdir)/src/libs/zbxjson/libzbxjson.a \
diff --git a/ui/app/controllers/CControllerDashboardConfigHash.php b/ui/app/controllers/CControllerDashboardConfigHash.php
new file mode 100644
index 00000000000..d56b08c3eaf
--- /dev/null
+++ b/ui/app/controllers/CControllerDashboardConfigHash.php
@@ -0,0 +1,103 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+class CControllerDashboardConfigHash extends CController {
+
+ protected function init(): void {
+ $this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
+ }
+
+ /**
+ * @throws JsonException
+ */
+ protected function checkInput(): bool {
+ $fields = [
+ 'dashboardid' => 'required|db dashboard.dashboardid|not_empty',
+ 'templateid' => 'db dashboard.dashboardid|not_empty'
+ ];
+
+ $ret = $this->validateInput($fields);
+
+ if (!$ret) {
+ $this->setResponse(
+ new CControllerResponseData(['main_block' => json_encode([
+ 'error' => [
+ 'messages' => array_column(get_and_clear_messages(), 'message')
+ ]
+ ], JSON_THROW_ON_ERROR)])
+ );
+ }
+
+ return $ret;
+ }
+
+ protected function checkPermissions(): bool {
+ /*
+ * Permission check errors (e.g. expired sessions) must be ignored by the frontend and must not cause dashboard
+ * reload.
+ */
+ return true;
+ }
+
+ /**
+ * @throws APIException|JsonException
+ */
+ protected function doAction(): void {
+ $configuration_hash = null;
+
+ if (($this->hasInput('templateid') && $this->checkAccess(CRoleHelper::UI_MONITORING_HOSTS))
+ || (!$this->hasInput('templateid') && $this->checkAccess(CRoleHelper::UI_MONITORING_DASHBOARD))) {
+ if ($this->hasInput('templateid')) {
+ $db_dashboards = API::TemplateDashboard()->get([
+ 'output' => ['name', 'display_period', 'auto_start'],
+ 'selectPages' => ['dashboard_pageid', 'name', 'display_period', 'widgets'],
+ 'dashboardids' => $this->getInput('dashboardid')
+ ]);
+ }
+ else {
+ $db_dashboards = API::Dashboard()->get([
+ 'output' => ['name', 'display_period', 'auto_start'],
+ 'selectPages' => ['dashboard_pageid', 'name', 'display_period', 'widgets'],
+ 'dashboardids' => $this->getInput('dashboardid')
+ ]);
+ }
+
+ if ($db_dashboards) {
+ $db_dashboard = $db_dashboards[0];
+
+ $db_dashboard['pages'] = CDashboardHelper::preparePagesForGrid($db_dashboard['pages'],
+ $this->hasInput('templateid') ? $this->getInput('templateid') : null,
+ true
+ );
+
+ $widget_defaults = APP::ModuleManager()->getWidgetsDefaults($this->hasInput('templateid'));
+
+ $configuration_hash = CDashboardHelper::getConfigurationHash($db_dashboard, $widget_defaults);
+ }
+ }
+
+ $output = [
+ 'configuration_hash' => $configuration_hash
+ ];
+
+ $this->setResponse(new CControllerResponseData(['main_block' => json_encode($output, JSON_THROW_ON_ERROR)]));
+ }
+}
diff --git a/ui/app/controllers/CControllerDashboardPrint.php b/ui/app/controllers/CControllerDashboardPrint.php
index 724ae1d15b4..4dc3a5886a6 100644
--- a/ui/app/controllers/CControllerDashboardPrint.php
+++ b/ui/app/controllers/CControllerDashboardPrint.php
@@ -63,7 +63,7 @@ class CControllerDashboardPrint extends CController {
$data = [
'dashboard' => $dashboard,
- 'widget_defaults' => CWidgetConfig::getDefaults(CWidgetConfig::CONTEXT_DASHBOARD),
+ 'widget_defaults' => APP::ModuleManager()->getWidgetsDefaults(),
'time_period' => getTimeSelectorPeriod($time_selector_options)
];
diff --git a/ui/app/controllers/CControllerDashboardUpdate.php b/ui/app/controllers/CControllerDashboardUpdate.php
index 899e2263ded..3ed6849c0fa 100644
--- a/ui/app/controllers/CControllerDashboardUpdate.php
+++ b/ui/app/controllers/CControllerDashboardUpdate.php
@@ -21,7 +21,9 @@
class CControllerDashboardUpdate extends CController {
- private $dashboard_pages;
+ private ?array $db_dashboard = null;
+
+ private ?array $dashboard_pages = null;
protected function init() {
$this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
@@ -35,17 +37,32 @@ class CControllerDashboardUpdate extends CController {
'display_period' => 'required|db dashboard.display_period|in '.implode(',', DASHBOARD_DISPLAY_PERIODS),
'auto_start' => 'required|db dashboard.auto_start|in 0,1',
'pages' => 'array',
- 'sharing' => 'array'
+ 'sharing' => 'array',
+ 'clone' => 'in 1'
];
$ret = $this->validateInput($fields);
+ if ($ret && $this->hasInput('clone')) {
+ $validator = new CNewValidator($this->getInputAll(), [
+ 'dashboardid' => 'required'
+ ]);
+
+ foreach ($validator->getAllErrors() as $error) {
+ info($error);
+ }
+
+ if ($validator->isErrorFatal() || $validator->isError()) {
+ $ret = false;
+ }
+ }
+
if ($ret) {
$sharing_errors = $this->validateSharing();
[
'dashboard_pages' => $this->dashboard_pages,
'errors' => $dashboard_pages_errors
- ] = CDashboardHelper::validateDashboardPages($this->getInput('pages', []), null);
+ ] = CDashboardHelper::validateDashboardPages($this->getInput('pages', []));
$errors = array_merge($sharing_errors, $dashboard_pages_errors);
@@ -70,90 +87,135 @@ class CControllerDashboardUpdate extends CController {
}
protected function checkPermissions() {
- return $this->checkAccess(CRoleHelper::UI_MONITORING_DASHBOARD)
- && $this->checkAccess(CRoleHelper::ACTIONS_EDIT_DASHBOARDS);
+ if (!$this->checkAccess(CRoleHelper::UI_MONITORING_DASHBOARD)
+ || !$this->checkAccess(CRoleHelper::ACTIONS_EDIT_DASHBOARDS)) {
+ return false;
+ }
+
+ if ($this->hasInput('dashboardid')) {
+ $db_dashboards = API::Dashboard()->get([
+ 'output' => ['dashboardid'],
+ 'selectPages' => ['widgets'],
+ 'dashboardids' => $this->getInput('dashboardid'),
+ 'editable' => true
+ ]);
+
+ if (!$db_dashboards) {
+ return false;
+ }
+
+ $this->db_dashboard = $db_dashboards[0];
+ }
+
+ return true;
}
protected function doAction() {
- $save_dashboard = [
- 'name' => $this->getInput('name'),
- 'userid' => $this->getInput('userid', 0),
- 'display_period' => $this->getInput('display_period'),
- 'auto_start' => $this->getInput('auto_start'),
- 'pages' => []
- ];
+ $output = [];
- if ($this->hasInput('dashboardid')) {
- $save_dashboard['dashboardid'] = $this->getInput('dashboardid');
- }
+ try {
+ $db_widgets = [];
+
+ if ($this->db_dashboard !== null) {
+ foreach ($this->db_dashboard['pages'] as $db_dashboard_page) {
+ foreach ($db_dashboard_page['widgets'] as $db_widget) {
+ $db_widgets[$db_widget['widgetid']] = $db_widget;
+ }
+ }
+ }
- foreach ($this->dashboard_pages as $dashboard_page) {
- $save_dashboard_page = [
- 'name' => $dashboard_page['name'],
- 'display_period' => $dashboard_page['display_period'],
- 'widgets' => []
+ $save_dashboard = [
+ 'name' => $this->getInput('name'),
+ 'userid' => $this->getInput('userid', 0),
+ 'display_period' => $this->getInput('display_period'),
+ 'auto_start' => $this->getInput('auto_start'),
+ 'pages' => []
];
- // Set dashboard_pageid if it exists and not cloning the dashboard.
- if (array_key_exists('dashboardid', $save_dashboard)
- && array_key_exists('dashboard_pageid', $dashboard_page)) {
- $save_dashboard_page['dashboard_pageid'] = $dashboard_page['dashboard_pageid'];
+ if ($this->db_dashboard !== null && !$this->hasInput('clone')) {
+ $save_dashboard['dashboardid'] = $this->db_dashboard['dashboardid'];
}
- foreach ($dashboard_page['widgets'] as $widget) {
- $save_widget = [
- 'x' => $widget['pos']['x'],
- 'y' => $widget['pos']['y'],
- 'width' => $widget['pos']['width'],
- 'height' => $widget['pos']['height'],
- 'type' => $widget['type'],
- 'name' => $widget['name'],
- 'view_mode' => $widget['view_mode'],
- 'fields' => $widget['form']->fieldsToApi()
+ foreach ($this->dashboard_pages as $dashboard_page) {
+ $save_dashboard_page = [
+ 'name' => $dashboard_page['name'],
+ 'display_period' => $dashboard_page['display_period'],
+ 'widgets' => []
];
- // Set widgetid if it exists and not cloning the dashboard.
- if (array_key_exists('dashboardid', $save_dashboard) && array_key_exists('widgetid', $widget)) {
- $save_widget['widgetid'] = $widget['widgetid'];
+ if (array_key_exists('dashboard_pageid', $dashboard_page) && !$this->hasInput('clone')) {
+ $save_dashboard_page['dashboard_pageid'] = $dashboard_page['dashboard_pageid'];
}
- $save_dashboard_page['widgets'][] = $save_widget;
- }
+ foreach ($dashboard_page['widgets'] as $widget) {
+ $save_widget = [
+ 'x' => $widget['pos']['x'],
+ 'y' => $widget['pos']['y'],
+ 'width' => $widget['pos']['width'],
+ 'height' => $widget['pos']['height']
+ ];
+
+ if ($widget['type'] !== ZBX_WIDGET_INACCESSIBLE) {
+ $save_widget += [
+ 'type' => $widget['type'],
+ 'name' => $widget['name'],
+ 'view_mode' => $widget['view_mode'],
+ 'fields' => $widget['form']->fieldsToApi()
+ ];
+ }
+ else {
+ if (!array_key_exists('widgetid', $widget)
+ || !array_key_exists($widget['widgetid'], $db_widgets)) {
+ error(_('No permissions to referred object or it does not exist!'));
- $save_dashboard['pages'][] = $save_dashboard_page;
- }
+ throw new InvalidArgumentException();
+ }
- if ($this->hasInput('sharing')) {
- $sharing = $this->getInput('sharing');
+ $db_widget = $db_widgets[$widget['widgetid']];
- $save_dashboard['private'] = $sharing['private'];
+ $save_widget += [
+ 'type' => $db_widget['type'],
+ 'name' => $db_widget['name'],
+ 'view_mode' => $db_widget['view_mode'],
+ 'fields' => $db_widget['fields']
+ ];
+ }
- if (array_key_exists('users', $sharing)) {
- $save_dashboard['users'] = $sharing['users'];
- }
+ if (array_key_exists('widgetid', $widget) && !$this->hasInput('clone')) {
+ $save_widget['widgetid'] = $widget['widgetid'];
+ }
+
+ $save_dashboard_page['widgets'][] = $save_widget;
+ }
- if (array_key_exists('userGroups', $sharing)) {
- $save_dashboard['userGroups'] = $sharing['userGroups'];
+ $save_dashboard['pages'][] = $save_dashboard_page;
}
- }
- if (array_key_exists('dashboardid', $save_dashboard)) {
- $result = API::Dashboard()->update($save_dashboard);
+ if ($this->hasInput('sharing')) {
+ $sharing = $this->getInput('sharing');
- $success_title = _('Dashboard updated');
- $error_title = _('Failed to update dashboard');
- }
- else {
- $result = API::Dashboard()->create($save_dashboard);
+ $save_dashboard['private'] = $sharing['private'];
- $success_title = _('Dashboard created');
- $error_title = _('Failed to create dashboard');
- }
+ if (array_key_exists('users', $sharing)) {
+ $save_dashboard['users'] = $sharing['users'];
+ }
- $output = [];
+ if (array_key_exists('userGroups', $sharing)) {
+ $save_dashboard['userGroups'] = $sharing['userGroups'];
+ }
+ }
+
+ $result = $this->db_dashboard !== null && !$this->hasInput('clone')
+ ? API::Dashboard()->update($save_dashboard)
+ : API::Dashboard()->create($save_dashboard);
+
+ if (!$result) {
+ throw new InvalidArgumentException();
+ }
- if ($result) {
- $output['success']['title'] = $success_title;
+ $output['success']['title'] = $this->db_dashboard !== null && !$this->hasInput('clone')
+ ? _('Dashboard updated')
+ : _('Dashboard created');
if ($messages = get_and_clear_messages()) {
$output['success']['messages'] = array_column($messages, 'message');
@@ -161,9 +223,11 @@ class CControllerDashboardUpdate extends CController {
$output['dashboardid'] = $result['dashboardids'][0];
}
- else {
+ catch (InvalidArgumentException $e) {
$output['error'] = [
- 'title' => $error_title,
+ 'title' => $this->db_dashboard !== null && !$this->hasInput('clone')
+ ? _('Failed to update dashboard')
+ : _('Failed to create dashboard'),
'messages' => array_column(get_and_clear_messages(), 'message')
];
}
diff --git a/ui/app/controllers/CControllerDashboardView.php b/ui/app/controllers/CControllerDashboardView.php
index ef207da6776..8ea10a11570 100644
--- a/ui/app/controllers/CControllerDashboardView.php
+++ b/ui/app/controllers/CControllerDashboardView.php
@@ -28,10 +28,10 @@ class CControllerDashboardView extends CController {
protected function checkInput() {
$fields = [
'dashboardid' => 'db dashboard.dashboardid',
- 'source_dashboardid' => 'db dashboard.dashboardid',
'hostid' => 'db hosts.hostid',
'new' => 'in 1',
'cancel' => 'in 1',
+ 'clone' => 'in 1',
'from' => 'range_time',
'to' => 'range_time',
'slideshow' => 'in 1'
@@ -39,6 +39,20 @@ class CControllerDashboardView extends CController {
$ret = $this->validateInput($fields) && $this->validateTimeSelectorPeriod();
+ if ($ret && $this->hasInput('clone')) {
+ $validator = new CNewValidator($this->getInputAll(), [
+ 'dashboardid' => 'required'
+ ]);
+
+ foreach ($validator->getAllErrors() as $error) {
+ info($error);
+ }
+
+ if ($validator->isErrorFatal() || $validator->isError()) {
+ $ret = false;
+ }
+ }
+
if (!$ret) {
$this->setResponse(new CControllerResponseFatal());
}
@@ -51,7 +65,7 @@ class CControllerDashboardView extends CController {
return false;
}
- if ($this->hasInput('new') || $this->hasInput('source_dashboardid')) {
+ if ($this->hasInput('new') || $this->hasInput('clone')) {
return $this->checkAccess(CRoleHelper::ACTIONS_EDIT_DASHBOARDS);
}
@@ -69,6 +83,9 @@ class CControllerDashboardView extends CController {
return true;
}
+ /**
+ * @throws JsonException
+ */
protected function doAction() {
[$dashboard, $error] = $this->getDashboard();
@@ -99,18 +116,25 @@ class CControllerDashboardView extends CController {
$time_selector_options = [
'profileIdx' => 'web.dashboard.filter',
- 'profileIdx2' => ($dashboard['dashboardid'] !== null) ? $dashboard['dashboardid'] : 0,
+ 'profileIdx2' => $dashboard['dashboardid'] ?? 0,
'from' => $this->hasInput('from') ? $this->getInput('from') : null,
'to' => $this->hasInput('to') ? $this->getInput('to') : null
];
updateTimeSelectorPeriod($time_selector_options);
+ $widget_defaults = APP::ModuleManager()->getWidgetsDefaults();
+
$data = [
'dashboard' => $dashboard,
- 'widget_defaults' => CWidgetConfig::getDefaults(CWidgetConfig::CONTEXT_DASHBOARD),
+ 'widget_defaults' => $widget_defaults,
+ 'widget_last_type' => CDashboardHelper::getWidgetLastType(),
+ 'configuration_hash' => $dashboard['dashboardid'] !== null
+ ? CDashboardHelper::getConfigurationHash($dashboard, $widget_defaults)
+ : null,
'has_time_selector' => CDashboardHelper::hasTimeSelector($dashboard['pages']),
'time_period' => getTimeSelectorPeriod($time_selector_options),
+ 'clone' => $this->hasInput('clone'),
'active_tab' => CProfile::get('web.dashboard.filter.active', 1)
];
@@ -143,10 +167,8 @@ class CControllerDashboardView extends CController {
/**
* Get dashboard data from API.
- *
- * @return array
*/
- private function getDashboard() {
+ private function getDashboard(): array {
$dashboard = null;
$error = null;
@@ -172,19 +194,18 @@ class CControllerDashboardView extends CController {
'has_related_reports' => false
];
}
- elseif ($this->hasInput('source_dashboardid')) {
- // Clone dashboard and show as new.
+ elseif ($this->hasInput('clone')) {
$dashboards = API::Dashboard()->get([
- 'output' => ['name', 'private', 'display_period', 'auto_start'],
+ 'output' => ['dashboardid', 'name', 'private', 'display_period', 'auto_start'],
'selectPages' => ['dashboard_pageid', 'name', 'display_period', 'widgets'],
'selectUsers' => ['userid', 'permission'],
'selectUserGroups' => ['usrgrpid', 'permission'],
- 'dashboardids' => [$this->getInput('source_dashboardid')]
+ 'dashboardids' => $this->getInput('dashboardid')
]);
if ($dashboards) {
$dashboard = [
- 'dashboardid' => null,
+ 'dashboardid' => $dashboards[0]['dashboardid'],
'name' => $dashboards[0]['name'],
'display_period' => $dashboards[0]['display_period'],
'auto_start' => $dashboards[0]['auto_start'],
@@ -231,7 +252,7 @@ class CControllerDashboardView extends CController {
$dashboards = API::Dashboard()->get([
'output' => ['dashboardid', 'name', 'userid', 'display_period', 'auto_start'],
'selectPages' => ['dashboard_pageid', 'name', 'display_period', 'widgets'],
- 'dashboardids' => [$dashboardid],
+ 'dashboardids' => $dashboardid,
'preservekeys' => true
]);
@@ -266,14 +287,8 @@ class CControllerDashboardView extends CController {
/**
* Checks, if any of widgets has checked dynamic field.
- *
- * @param array $grid_pages
- *
- * @static
- *
- * @return bool
*/
- private static function hasDynamicWidgets($grid_pages) {
+ private static function hasDynamicWidgets($grid_pages): bool {
foreach ($grid_pages as $page) {
foreach ($page['widgets'] as $widget) {
if (array_key_exists('dynamic', $widget['fields']) && $widget['fields']['dynamic'] == 1) {
diff --git a/ui/app/controllers/CControllerDashboardWidgetCheck.php b/ui/app/controllers/CControllerDashboardWidgetCheck.php
index 5c1c159bddc..6c9d3208dbf 100644
--- a/ui/app/controllers/CControllerDashboardWidgetCheck.php
+++ b/ui/app/controllers/CControllerDashboardWidgetCheck.php
@@ -19,9 +19,14 @@
**/
+use Zabbix\Core\{
+ CModule,
+ CWidget
+};
+
class CControllerDashboardWidgetCheck extends CController {
- private $context;
+ private ?CWidget $widget = null;
protected function init() {
$this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
@@ -29,26 +34,33 @@ class CControllerDashboardWidgetCheck extends CController {
protected function checkInput() {
$fields = [
- 'templateid' => 'db dashboard.templateid',
'type' => 'required|string',
- 'name' => 'required|string',
- 'fields' => 'json'
+ 'fields' => 'array',
+ 'templateid' => 'db dashboard.templateid',
+ 'name' => 'required|string'
];
$ret = $this->validateInput($fields);
if ($ret) {
- $this->context = $this->hasInput('templateid')
- ? CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- : CWidgetConfig::CONTEXT_DASHBOARD;
+ $widget = APP::ModuleManager()->getModule($this->getInput('type'));
- if (!CWidgetConfig::isWidgetTypeSupportedInContext($this->getInput('type'), $this->context)) {
- error(_('Widget type is not supported in this context.'));
+ if ($widget !== null && $widget->getType() === CModule::TYPE_WIDGET) {
+ $this->widget = $widget;
+ }
+ else {
+ error(_('Inaccessible widget type.'));
$ret = false;
}
}
+ if ($ret && $this->hasInput('templateid') && !$this->widget->hasTemplateSupport()) {
+ error(_('Widget type is not supported in this context.'));
+
+ $ret = false;
+ }
+
if (!$ret) {
$this->setResponse(
new CControllerResponseData(['main_block' => json_encode([
@@ -67,8 +79,8 @@ class CControllerDashboardWidgetCheck extends CController {
}
protected function doAction() {
- $form = CWidgetConfig::getForm($this->getInput('type'), $this->getInput('fields', '{}'),
- ($this->context === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD) ? $this->getInput('templateid') : null
+ $form = $this->widget->getForm($this->getInput('fields', []),
+ $this->hasInput('templateid') ? $this->getInput('templateid') : null
);
$output = [];
diff --git a/ui/app/controllers/CControllerDashboardWidgetConfigure.php b/ui/app/controllers/CControllerDashboardWidgetConfigure.php
deleted file mode 100644
index 9c34138eac8..00000000000
--- a/ui/app/controllers/CControllerDashboardWidgetConfigure.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CControllerDashboardWidgetConfigure extends CController {
-
- private $context;
-
- protected function init() {
- $this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
- }
-
- protected function checkInput() {
- $fields = [
- 'templateid' => 'db dashboard.templateid',
- 'type' => 'required|string',
- 'fields' => 'json',
- 'view_mode' => 'required|in '.implode(',', [ZBX_WIDGET_VIEW_MODE_NORMAL, ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER])
- ];
-
- $ret = $this->validateInput($fields);
-
- if ($ret) {
- $this->context = $this->hasInput('templateid')
- ? CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- : CWidgetConfig::CONTEXT_DASHBOARD;
-
- if (!CWidgetConfig::isWidgetTypeSupportedInContext($this->getInput('type'), $this->context)) {
- error(_('Widget type is not supported in this context.'));
-
- $ret = false;
- }
- }
-
- if (!$ret) {
- $this->setResponse(
- new CControllerResponseData(['main_block' => json_encode([
- 'error' => [
- 'messages' => array_column(get_and_clear_messages(), 'message')
- ]
- ])])
- );
- }
-
- return $ret;
- }
-
- protected function checkPermissions() {
- return ($this->getUserType() >= USER_TYPE_ZABBIX_USER);
- }
-
- protected function doAction() {
- $type = $this->getInput('type');
-
- $form = CWidgetConfig::getForm($type, $this->getInput('fields', '{}'),
- ($this->context === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD) ? $this->getInput('templateid') : null
- );
-
- // Fix possibly corrupted data to the defaults.
- $form->validate();
-
- $output = [
- 'configuration' => CWidgetConfig::getConfiguration($type, $form->getFieldsData(),
- $this->getInput('view_mode')
- )
- ];
-
- $this->setResponse(new CControllerResponseData(['main_block' => json_encode($output)]));
- }
-}
diff --git a/ui/app/controllers/CControllerDashboardWidgetEdit.php b/ui/app/controllers/CControllerDashboardWidgetEdit.php
index bf020dfe72d..7390872df0d 100644
--- a/ui/app/controllers/CControllerDashboardWidgetEdit.php
+++ b/ui/app/controllers/CControllerDashboardWidgetEdit.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,18 +19,36 @@
**/
+use Zabbix\Core\{
+ CModule,
+ CWidget
+};
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldMultiSelectGraph,
+ CWidgetFieldMultiSelectGraphPrototype,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldMultiSelectItem,
+ CWidgetFieldMultiSelectItemPrototype,
+ CWidgetFieldMultiSelectService,
+ CWidgetFieldMultiSelectSla,
+ CWidgetFieldSelectResource
+};
+
class CControllerDashboardWidgetEdit extends CController {
- private $context;
+ private ?CWidget $widget;
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
+ 'type' => 'string|required',
+ 'fields' => 'array',
'templateid' => 'db dashboard.templateid',
- 'type' => 'string',
'name' => 'string',
'view_mode' => 'in '.implode(',', [ZBX_WIDGET_VIEW_MODE_NORMAL, ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER]),
- 'prev_type' => 'string',
- 'fields' => 'json',
'unique_id' => 'string',
'dashboard_page_unique_id' => 'string'
];
@@ -38,94 +56,92 @@ class CControllerDashboardWidgetEdit extends CController {
$ret = $this->validateInput($fields);
if ($ret) {
- $this->context = $this->hasInput('templateid')
- ? CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- : CWidgetConfig::CONTEXT_DASHBOARD;
+ $widget = APP::ModuleManager()->getModule($this->getInput('type'));
- if ($this->hasInput('type')) {
- if (!CWidgetConfig::isWidgetTypeSupportedInContext($this->getInput('type'), $this->context)) {
- error(_('Widget type is not supported in this context.'));
+ if ($widget !== null && $widget->getType() === CModule::TYPE_WIDGET) {
+ $this->widget = $widget;
+ }
+ else {
+ error(_('Inaccessible widget type.'));
- $ret = false;
- }
+ $ret = false;
}
}
+ if ($ret && $this->hasInput('templateid') && !$this->widget->hasTemplateSupport()) {
+ error(_('Widget type is not supported in this context.'));
+
+ $ret = false;
+ }
+
if (!$ret) {
$this->setResponse(
- (new CControllerResponseData(['main_block' => json_encode([
- 'error' => [
- 'messages' => array_column(get_and_clear_messages(), 'message')
- ]
- ])]))->disableView()
+ (new CControllerResponseData([
+ 'main_block' => json_encode([
+ 'header' => $this->hasInput('unique_id') ? _('Edit widget') : _('Add widget'),
+ 'error' => [
+ 'messages' => array_column(get_and_clear_messages(), 'message')
+ ]
+ ], JSON_THROW_ON_ERROR)
+ ]))->disableView()
);
}
return $ret;
}
- protected function checkPermissions() {
- return ($this->context === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD)
+ protected function checkPermissions(): bool {
+ return $this->hasInput('templateid')
? ($this->getUserType() >= USER_TYPE_ZABBIX_ADMIN)
: ($this->getUserType() >= USER_TYPE_ZABBIX_USER);
}
- protected function doAction() {
- $known_widget_types = CWidgetConfig::getKnownWidgetTypes($this->context);
-
- natsort($known_widget_types);
+ protected function doAction(): void {
+ $known_types = [];
+ $deprecated_types = [];
- if ($this->hasInput('type')) {
- $type = $this->getInput('type');
-
- if (!array_key_exists($type, $known_widget_types) || $this->getInput('prev_type', $type) !== $type) {
- CProfile::update('web.dashboard.last_widget_type', $type, PROFILE_TYPE_STR);
+ /** @var CWidget $widget */
+ foreach (APP::ModuleManager()->getWidgets($this->hasInput('templateid')) as $widget) {
+ if (!$widget->isDeprecated()) {
+ $known_types[$widget->getId()] = $widget->getDefaultName();
}
- }
- else {
- $type = CProfile::get('web.dashboard.last_widget_type');
- if (!array_key_exists($type, $known_widget_types)) {
- $type = array_keys($known_widget_types)[0];
+ else {
+ $deprecated_types[$widget->getId()] = $widget->getDefaultName();
}
}
- $templateid = ($this->context === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD)
- ? $this->getInput('templateid')
- : null;
+ natcasesort($known_types);
+ natcasesort($deprecated_types);
- $form = CWidgetConfig::getForm($type, $this->getInput('fields', '{}'), $templateid);
+ $form = $this->widget->getForm($this->getInput('fields', []),
+ $this->hasInput('templateid') ? $this->getInput('templateid') : null
+ );
// Transforms corrupted data to default values.
$form->validate();
$this->setResponse(new CControllerResponseData([
- 'user' => [
- 'debug_mode' => $this->getDebugMode()
- ],
- 'dialogue' => [
- 'type' => $type,
- 'name' => $this->getInput('name', ''),
- 'view_mode' => $this->getInput('view_mode', ZBX_WIDGET_VIEW_MODE_NORMAL),
- 'fields' => $form->getFields()
- ],
- 'templateid' => $templateid,
+ 'name' => $this->getInput('name', ''),
+ 'type' => $this->getInput('type'),
+ 'known_types' => $known_types,
+ 'deprecated_types' => $deprecated_types,
+ 'fields' => $form->getFields(),
+ 'view_mode' => $this->getInput('view_mode', ZBX_WIDGET_VIEW_MODE_NORMAL),
'unique_id' => $this->hasInput('unique_id') ? $this->getInput('unique_id') : null,
'dashboard_page_unique_id' => $this->hasInput('dashboard_page_unique_id')
? $this->getInput('dashboard_page_unique_id')
: null,
- 'known_widget_types' => $known_widget_types,
- 'captions' => $this->getCaptions($form)
+ 'captions' => $this->getCaptions($form),
+ 'user' => [
+ 'debug_mode' => $this->getDebugMode()
+ ]
]));
}
/**
* Prepares mapped list of names for all required resources.
- *
- * @param CWidgetForm $form
- *
- * @return array
*/
- private function getCaptions($form) {
+ private function getCaptions(CWidgetForm $form): array {
$captions = ['simple' => [], 'ms' => []];
foreach ($form->getFields() as $field) {
@@ -137,12 +153,8 @@ class CControllerDashboardWidgetEdit extends CController {
$captions['simple'][$resource_type] = [];
}
- if ($id != 0) {
- switch ($resource_type) {
- case WIDGET_FIELD_SELECT_RES_SYSMAP:
- $captions['simple'][$resource_type][$id] = _('Inaccessible map');
- break;
- }
+ if ($id != 0 && $resource_type == CWidgetFieldSelectResource::RESOURCE_TYPE_SYSMAP) {
+ $captions['simple'][$resource_type][$id] = _('Inaccessible map');
}
}
}
@@ -152,19 +164,17 @@ class CControllerDashboardWidgetEdit extends CController {
continue;
}
- switch ($resource_type) {
- case WIDGET_FIELD_SELECT_RES_SYSMAP:
- $maps = API::Map()->get([
- 'sysmapids' => array_keys($list),
- 'output' => ['sysmapid', 'name']
- ]);
-
- if ($maps) {
- foreach ($maps as $map) {
- $list[$map['sysmapid']] = $map['name'];
- }
+ if ($resource_type == CWidgetFieldSelectResource::RESOURCE_TYPE_SYSMAP) {
+ $maps = API::Map()->get([
+ 'sysmapids' => array_keys($list),
+ 'output' => ['sysmapid', 'name']
+ ]);
+
+ if ($maps) {
+ foreach ($maps as $map) {
+ $list[$map['sysmapid']] = $map['name'];
}
- break;
+ }
}
}
unset($list);
@@ -182,35 +192,35 @@ class CControllerDashboardWidgetEdit extends CController {
];
foreach ($form->getFields() as $field) {
- if ($field instanceof CWidgetFieldMsGroup) {
+ if ($field instanceof CWidgetFieldMultiSelectGroup) {
$key = 'groups';
$var = 'group';
}
- elseif ($field instanceof CWidgetFieldMsHost) {
+ elseif ($field instanceof CWidgetFieldMultiSelectHost) {
$key = 'hosts';
$var = 'host';
}
- elseif ($field instanceof CWidgetFieldMsItem) {
+ elseif ($field instanceof CWidgetFieldMultiSelectItem) {
$key = 'items';
$var = 'item';
}
- elseif ($field instanceof CWidgetFieldMsGraph) {
+ elseif ($field instanceof CWidgetFieldMultiSelectGraph) {
$key = 'graphs';
$var = 'graph';
}
- elseif ($field instanceof CWidgetFieldMsItemPrototype) {
+ elseif ($field instanceof CWidgetFieldMultiSelectItemPrototype) {
$key = 'item_prototypes';
$var = 'prototype_item';
}
- elseif ($field instanceof CWidgetFieldMsGraphPrototype) {
+ elseif ($field instanceof CWidgetFieldMultiSelectGraphPrototype) {
$key = 'graph_prototypes';
$var = 'prototype_graph';
}
- elseif ($field instanceof CWidgetFieldMsService) {
+ elseif ($field instanceof CWidgetFieldMultiSelectService) {
$key = 'services';
$var = 'service';
}
- elseif ($field instanceof CWidgetFieldMsSla) {
+ elseif ($field instanceof CWidgetFieldMultiSelectSla) {
$key = 'slas';
$var = 'sla';
}
diff --git a/ui/app/controllers/CControllerDashboardWidgetRfRate.php b/ui/app/controllers/CControllerDashboardWidgetRfRate.php
index a7f8a2e603a..d8bc3432d47 100644
--- a/ui/app/controllers/CControllerDashboardWidgetRfRate.php
+++ b/ui/app/controllers/CControllerDashboardWidgetRfRate.php
@@ -19,8 +19,6 @@
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
-
class CControllerDashboardWidgetRfRate extends CController {
protected function init() {
diff --git a/ui/app/controllers/CControllerDashboardWidgetView.php b/ui/app/controllers/CControllerDashboardWidgetView.php
new file mode 100644
index 00000000000..5e19b86295c
--- /dev/null
+++ b/ui/app/controllers/CControllerDashboardWidgetView.php
@@ -0,0 +1,116 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Core\CWidget;
+
+use Zabbix\Widgets\CWidgetForm;
+
+/**
+ * Class containing methods for operations with widgets.
+ */
+class CControllerDashboardWidgetView extends CController {
+
+ protected ?CWidget $widget;
+ protected CWidgetForm $form;
+
+ protected array $validation_rules = [];
+ protected array $fields_values = [];
+
+ protected function init(): void {
+ $this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
+
+ $this->setValidationRules([
+ 'name' => 'string',
+ 'fields' => 'array'
+ ]);
+ }
+
+ protected function setValidationRules(array $validation_rules): self {
+ $this->validation_rules = $validation_rules;
+
+ return $this;
+ }
+
+ protected function addValidationRules(array $validation_rules): self {
+ $this->validation_rules = array_merge($this->validation_rules, $validation_rules);
+
+ return $this;
+ }
+
+ protected function checkPermissions(): bool {
+ return $this->getUserType() >= USER_TYPE_ZABBIX_USER;
+ }
+
+ protected function checkInput(): bool {
+ $this->widget = APP::ModuleManager()->getActionModule();
+
+ $validation_rules = $this->validation_rules;
+
+ if ($this->widget->hasTemplateSupport()) {
+ $validation_rules['templateid'] = 'db dashboard.templateid';
+ }
+
+ $ret = $this->validateInput($validation_rules);
+
+ if ($ret) {
+ $this->form = $this->widget->getForm($this->getInput('fields', []),
+ $this->hasInput('templateid') ? $this->getInput('templateid') : null
+ );
+
+ if ($errors = $this->form->validate()) {
+ foreach ($errors as $error) {
+ error($error);
+ }
+
+ $ret = false;
+ }
+ }
+
+ if ($ret) {
+ $this->fields_values = $this->form->getFieldsValues();
+ }
+
+ if (!$ret) {
+ $this->setResponse(
+ (new CControllerResponseData(['main_block' => json_encode([
+ 'error' => [
+ 'messages' => array_column(get_and_clear_messages(), 'message')
+ ]
+ ], JSON_THROW_ON_ERROR)]))->disableView()
+ );
+ }
+
+ return $ret;
+ }
+
+ protected function getForm(): CWidgetForm {
+ return $this->form;
+ }
+
+ protected function doAction(): void {
+ $this->setResponse(new CControllerResponseData([
+ 'name' => $this->getInput('name', $this->widget->getName()),
+ 'user' => [
+ 'debug_mode' => $this->getDebugMode()
+ ]
+ ]));
+ }
+}
diff --git a/ui/app/controllers/CControllerDashboardWidgetsSanitize.php b/ui/app/controllers/CControllerDashboardWidgetsSanitize.php
index 5d2f8d8a07a..7137ffd41b6 100644
--- a/ui/app/controllers/CControllerDashboardWidgetsSanitize.php
+++ b/ui/app/controllers/CControllerDashboardWidgetsSanitize.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,19 +19,20 @@
**/
+use Zabbix\Core\CModule;
+
/**
* Controller for sanitizing fields of widgets before pasting previously copied widget.
*/
class CControllerDashboardWidgetsSanitize extends CController {
- private $context;
- private $widgets = [];
+ private array $widgets_data = [];
- protected function init() {
+ protected function init(): void {
$this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
}
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
'templateid' => 'db dashboard.templateid',
'widgets' => 'array'
@@ -40,14 +41,10 @@ class CControllerDashboardWidgetsSanitize extends CController {
$ret = $this->validateInput($fields);
if ($ret) {
- $this->context = $this->hasInput('templateid')
- ? CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- : CWidgetConfig::CONTEXT_DASHBOARD;
-
foreach ($this->getInput('widgets', []) as $widget) {
$validator = new CNewValidator($widget, [
'type' => 'required|string',
- 'fields' => 'required|json'
+ 'fields' => 'required|array'
]);
foreach ($validator->getAllErrors() as $error) {
@@ -60,9 +57,17 @@ class CControllerDashboardWidgetsSanitize extends CController {
break;
}
- $widget = $validator->getValidInput();
+ $widget_input = $validator->getValidInput();
+
+ $widget = APP::ModuleManager()->getModule($widget_input['type']);
+
+ if ($widget === null || $widget->getType() !== CModule::TYPE_WIDGET) {
+ $this->widgets_data[] = null;
- if (!CWidgetConfig::isWidgetTypeSupportedInContext($widget['type'], $this->context)) {
+ continue;
+ }
+
+ if ($this->hasInput('templateid') && !$widget->hasTemplateSupport()) {
error(_('Widget type is not supported in this context.'));
$ret = false;
@@ -70,7 +75,12 @@ class CControllerDashboardWidgetsSanitize extends CController {
break;
}
- $this->widgets[] = $widget;
+ $this->widgets_data[] = [
+ 'type' => $widget_input['type'],
+ 'form' => $widget->getForm($widget_input['fields'],
+ $this->hasInput('templateid') ? $this->getInput('templateid') : null
+ )
+ ];
}
}
@@ -80,29 +90,27 @@ class CControllerDashboardWidgetsSanitize extends CController {
'error' => [
'messages' => array_column(get_and_clear_messages(), 'message')
]
- ])])
+ ], JSON_THROW_ON_ERROR)])
);
}
return $ret;
}
- protected function checkPermissions() {
+ protected function checkPermissions(): bool {
return ($this->getUserType() >= USER_TYPE_ZABBIX_USER);
}
- protected function doAction() {
+ protected function doAction(): void {
$widgets = [];
- foreach ($this->widgets as $widget) {
- $form = CWidgetConfig::getForm($widget['type'], $widget['fields'],
- ($this->context === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD) ? $this->getInput('templateid') : null
- );
-
- $widgets[] = ['fields' => $form->fieldsToApi()];
+ foreach ($this->widgets_data as $index => $widget_data) {
+ if ($widget_data !== null) {
+ $widgets[$index] = ['fields' => $widget_data['form']->fieldsToApi()];
+ }
}
- if ($this->context === CWidgetConfig::CONTEXT_DASHBOARD) {
+ if (!$this->hasInput('templateid')) {
$widgets = CDashboardHelper::unsetInaccessibleFields([['widgets' => $widgets]]);
$widgets = $widgets[0]['widgets'];
}
@@ -111,11 +119,16 @@ class CControllerDashboardWidgetsSanitize extends CController {
'widgets' => []
];
- foreach ($widgets as $widget_index => $widget) {
- $output_fields = [];
+ foreach ($this->widgets_data as $index => $widget_data) {
+ if ($widget_data === null) {
+ $output['widgets'][$index] = null;
- foreach ($widget['fields'] as $field) {
+ continue;
+ }
+
+ $output_fields = [];
+ foreach ($widgets[$index]['fields'] as $field) {
if (array_key_exists($field['name'], $output_fields)) {
if (!is_array($output_fields[$field['name']])) {
$output_fields[$field['name']] = [$output_fields[$field['name']]];
@@ -128,9 +141,9 @@ class CControllerDashboardWidgetsSanitize extends CController {
}
}
- $output['widgets'][$widget_index]['fields'] = $output_fields;
+ $output['widgets'][$index]['fields'] = $output_fields;
}
- $this->setResponse(new CControllerResponseData(['main_block' => json_encode($output)]));
+ $this->setResponse(new CControllerResponseData(['main_block' => json_encode($output, JSON_THROW_ON_ERROR)]));
}
}
diff --git a/ui/app/controllers/CControllerFavouriteCreate.php b/ui/app/controllers/CControllerFavoriteCreate.php
index bdc2ae6256c..33b7e6b29c0 100644
--- a/ui/app/controllers/CControllerFavouriteCreate.php
+++ b/ui/app/controllers/CControllerFavoriteCreate.php
@@ -19,7 +19,7 @@
**/
-class CControllerFavouriteCreate extends CController {
+class CControllerFavoriteCreate extends CController {
protected function checkInput() {
$fields = [
diff --git a/ui/app/controllers/CControllerFavouriteDelete.php b/ui/app/controllers/CControllerFavoriteDelete.php
index 1a7cf92c1ab..468d0a88373 100644
--- a/ui/app/controllers/CControllerFavouriteDelete.php
+++ b/ui/app/controllers/CControllerFavoriteDelete.php
@@ -19,7 +19,12 @@
**/
-class CControllerFavouriteDelete extends CController {
+use Zabbix\Core\CWidget;
+
+class CControllerFavoriteDelete extends CController {
+
+ private const WIDGET_FAV_GRAPHS = 'favgraphs';
+ private const WIDGET_FAV_MAPS = 'favmaps';
protected function checkInput() {
$fields = [
@@ -46,10 +51,10 @@ class CControllerFavouriteDelete extends CController {
'sysmapid' => 'web.favorite.sysmapids'
];
- $widgetids = [
- 'graphid' => WIDGET_FAV_GRAPHS,
- 'itemid' => WIDGET_FAV_GRAPHS,
- 'sysmapid' => WIDGET_FAV_MAPS
+ $affected_widget_types = [
+ 'graphid' => self::WIDGET_FAV_GRAPHS,
+ 'itemid' => self::WIDGET_FAV_GRAPHS,
+ 'sysmapid' => self::WIDGET_FAV_MAPS
];
$object = $this->getInput('object');
@@ -73,7 +78,8 @@ class CControllerFavouriteDelete extends CController {
}
else {
ZABBIX.Dashboard.getSelectedDashboardPage().getWidgets().forEach((widget) => {
- if (widget.getType() === "'.$widgetids[$object].'") {
+ if (widget.getType() === "'.$affected_widget_types[$object].'"
+ && widget.getState() === WIDGET_STATE_ACTIVE) {
widget._startUpdating();
}
});
diff --git a/ui/app/controllers/CControllerHintboxEventlist.php b/ui/app/controllers/CControllerHintboxEventlist.php
index 73f20d4f297..a6ccad55510 100644
--- a/ui/app/controllers/CControllerHintboxEventlist.php
+++ b/ui/app/controllers/CControllerHintboxEventlist.php
@@ -34,7 +34,7 @@ class CControllerHintboxEventlist extends CController {
$fields = [
'triggerid' => 'required|db triggers.triggerid',
'eventid_till' => 'required|db events.eventid',
- 'show_timeline' => 'required|in 0,1',
+ 'show_timeline' => 'required|in '.implode(',', [ZBX_TIMELINE_OFF, ZBX_TIMELINE_ON]),
'show_tags' => 'required|in '.implode(',', [SHOW_TAGS_NONE, SHOW_TAGS_1, SHOW_TAGS_2, SHOW_TAGS_3]),
'filter_tags' => 'array',
'tag_name_format' => 'required|in '.implode(',', [TAG_NAME_FULL, TAG_NAME_SHORTENED, TAG_NAME_NONE]),
diff --git a/ui/app/controllers/CControllerHostCreate.php b/ui/app/controllers/CControllerHostCreate.php
index c7f835922d0..ad46aeeb59b 100644
--- a/ui/app/controllers/CControllerHostCreate.php
+++ b/ui/app/controllers/CControllerHostCreate.php
@@ -117,6 +117,7 @@ class CControllerHostCreate extends CControllerHostUpdateGeneral {
$result = DBend(true);
}
catch (Exception $e) {
+ $result = false;
DBend(false);
}
@@ -205,7 +206,7 @@ class CControllerHostCreate extends CControllerHostUpdateGeneral {
return false;
}
- if (!copyItems($src_hostid, $hostid, true)) {
+ if (!copyItemsToHosts('hostids', [$src_hostid], false, [$hostid])) {
return false;
}
diff --git a/ui/app/controllers/CControllerHostDashboardView.php b/ui/app/controllers/CControllerHostDashboardView.php
index e738c79f444..efeed112c44 100644
--- a/ui/app/controllers/CControllerHostDashboardView.php
+++ b/ui/app/controllers/CControllerHostDashboardView.php
@@ -45,7 +45,7 @@ class CControllerHostDashboardView extends CController {
}
protected function checkPermissions() {
- if ($this->getUserType() < USER_TYPE_ZABBIX_USER) {
+ if (!$this->checkAccess(CRoleHelper::UI_MONITORING_HOSTS)) {
return false;
}
@@ -60,6 +60,9 @@ class CControllerHostDashboardView extends CController {
return (bool) $this->host;
}
+ /**
+ * @throws APIException|JsonException
+ */
protected function doAction() {
$host_dashboards = $this->getSortedHostDashboards();
@@ -101,11 +104,14 @@ class CControllerHostDashboardView extends CController {
updateTimeSelectorPeriod($time_selector_options);
+ $widget_defaults = APP::ModuleManager()->getWidgetsDefaults(true);
+
$data = [
'host' => $this->host,
'host_dashboards' => $host_dashboards,
'dashboard' => $dashboard,
- 'widget_defaults' => CWidgetConfig::getDefaults(CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD),
+ 'widget_defaults' => $widget_defaults,
+ 'configuration_hash' => CDashboardHelper::getConfigurationHash($dashboard, $widget_defaults),
'has_time_selector' => CDashboardHelper::hasTimeSelector($dashboard['pages']),
'time_period' => getTimeSelectorPeriod($time_selector_options),
'active_tab' => CProfile::get('web.dashboard.filter.active', 1)
diff --git a/ui/app/controllers/CControllerLatestView.php b/ui/app/controllers/CControllerLatestView.php
index d31f904b9a4..8c98c1b93df 100644
--- a/ui/app/controllers/CControllerLatestView.php
+++ b/ui/app/controllers/CControllerLatestView.php
@@ -200,6 +200,7 @@ class CControllerLatestView extends CControllerLatest {
'sort_order' => $sort_order,
'view_curl' => $view_url,
'paging' => $paging,
+ 'uncheck' => $this->hasInput('filter_reset'),
'config' => [
'hk_trends' => CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS),
'hk_trends_global' => CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_GLOBAL),
diff --git a/ui/app/controllers/CControllerModuleEdit.php b/ui/app/controllers/CControllerModuleEdit.php
index 0f0405e107a..faec576705d 100644
--- a/ui/app/controllers/CControllerModuleEdit.php
+++ b/ui/app/controllers/CControllerModuleEdit.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -26,16 +26,14 @@ class CControllerModuleEdit extends CController {
/**
* Current module data.
- *
- * @var array
*/
- private $module = [];
+ private array $module = [];
- protected function init() {
+ protected function init(): void {
$this->disableSIDValidation();
}
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
'moduleid' => 'required|db module.moduleid',
@@ -53,7 +51,7 @@ class CControllerModuleEdit extends CController {
return $ret;
}
- protected function checkPermissions() {
+ protected function checkPermissions(): bool {
if (!$this->checkAccess(CRoleHelper::UI_ADMINISTRATION_GENERAL)) {
return false;
}
@@ -72,12 +70,12 @@ class CControllerModuleEdit extends CController {
return true;
}
- protected function doAction() {
- $module_manager = new CModuleManager(APP::ModuleManager()->getModulesDir());
+ protected function doAction(): void {
+ $module_manager = new CModuleManager(APP::getRootDir());
$manifest = $module_manager->addModule($this->module['relative_path']);
- if ($manifest) {
+ if ($manifest !== null) {
$data = [
'moduleid' => $this->getInput('moduleid'),
'name' => $manifest['name'],
@@ -88,15 +86,12 @@ class CControllerModuleEdit extends CController {
'namespace' => $manifest['namespace'],
'url' => array_key_exists('url', $manifest) ? $manifest['url'] : null,
'status' => $this->hasInput('form_refresh')
- ? $this->hasInput('status')
- ? MODULE_STATUS_ENABLED
- : MODULE_STATUS_DISABLED
+ ? ($this->hasInput('status') ? MODULE_STATUS_ENABLED : MODULE_STATUS_DISABLED)
: $this->module['status']
];
$response = new CControllerResponseData($data);
$response->setTitle(_('Modules'));
- $this->setResponse($response);
}
else {
$response = new CControllerResponseRedirect((new CUrl('zabbix.php'))
@@ -104,7 +99,8 @@ class CControllerModuleEdit extends CController {
->setArgument('page', CPagerHelper::loadPage('module.list', null))
);
CMessageHelper::setErrorTitle(_s('Cannot load module at: %1$s.', $this->module['relative_path']));
- $this->setResponse($response);
}
+
+ $this->setResponse($response);
}
}
diff --git a/ui/app/controllers/CControllerModuleList.php b/ui/app/controllers/CControllerModuleList.php
index 9c953b870a9..7b9ac9b8abe 100644
--- a/ui/app/controllers/CControllerModuleList.php
+++ b/ui/app/controllers/CControllerModuleList.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -24,11 +24,11 @@
*/
class CControllerModuleList extends CController {
- protected function init() {
+ protected function init(): void {
$this->disableSIDValidation();
}
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
'sort' => 'in name',
'sortorder' => 'in '.ZBX_SORT_DOWN.','.ZBX_SORT_UP,
@@ -48,11 +48,11 @@ class CControllerModuleList extends CController {
return $ret;
}
- protected function checkPermissions() {
+ protected function checkPermissions(): bool {
return $this->checkAccess(CRoleHelper::UI_ADMINISTRATION_GENERAL);
}
- protected function doAction() {
+ protected function doAction(): void {
// sort fields
$sort_field = $this->getInput('sort', CProfile::get('web.modules.sort', 'name'));
$sort_order = $this->getInput('sortorder', CProfile::get('web.modules.sortorder', ZBX_SORT_UP));
@@ -87,13 +87,14 @@ class CControllerModuleList extends CController {
'preservekeys' => true
]);
- $module_manager = new CModuleManager(APP::ModuleManager()->getModulesDir());
+ $module_manager = new CModuleManager(APP::getRootDir());
$modules = [];
foreach ($db_modules as $moduleid => $db_module) {
$manifest = $module_manager->addModule($db_module['relative_path']);
- if ($manifest && ($filter['name'] === '' || mb_stripos($manifest['name'], $filter['name']) !== false)) {
+ if ($manifest !== null
+ && ($filter['name'] === '' || mb_stripos($manifest['name'], $filter['name']) !== false)) {
$modules[$moduleid] = $db_module + $manifest;
}
}
diff --git a/ui/app/controllers/CControllerModuleScan.php b/ui/app/controllers/CControllerModuleScan.php
index 257852a8a6e..832ee6e0b81 100644
--- a/ui/app/controllers/CControllerModuleScan.php
+++ b/ui/app/controllers/CControllerModuleScan.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -24,15 +24,15 @@
*/
class CControllerModuleScan extends CController {
- protected function checkInput() {
+ protected function checkInput(): bool {
return true;
}
- protected function checkPermissions() {
+ protected function checkPermissions(): bool {
return $this->checkAccess(CRoleHelper::UI_ADMINISTRATION_GENERAL);
}
- protected function doAction() {
+ protected function doAction(): void {
get_and_clear_messages();
$db_modules_create = [];
@@ -53,36 +53,38 @@ class CControllerModuleScan extends CController {
$db_moduleids[$db_module['relative_path']] = $moduleid;
}
- $module_manager = new CModuleManager(APP::ModuleManager()->getModulesDir());
+ $module_manager = new CModuleManager(APP::getRootDir());
- foreach (new DirectoryIterator($module_manager->getModulesDir()) as $item) {
- if (!$item->isDir() || $item->isDot()) {
- continue;
- }
+ foreach (['widgets', 'modules'] as $modules_dir) {
+ foreach (new DirectoryIterator(APP::getRootDir().'/'.$modules_dir) as $item) {
+ if (!$item->isDir() || $item->isDot()) {
+ continue;
+ }
- $relative_path = $item->getFilename();
+ $relative_path = $modules_dir.'/'.$item->getFilename();
- $manifest = $module_manager->addModule($relative_path);
+ $manifest = $module_manager->addModule($relative_path);
- if (!$manifest) {
- continue;
- }
+ if (!$manifest) {
+ continue;
+ }
- $is_stored = array_key_exists($relative_path, $db_moduleids);
- $is_healthy = !$is_stored || $db_modules[$db_moduleids[$relative_path]]['id'] === $manifest['id'];
+ $is_stored = array_key_exists($relative_path, $db_moduleids);
+ $is_healthy = !$is_stored || $db_modules[$db_moduleids[$relative_path]]['id'] === $manifest['id'];
- if ($is_healthy) {
- $healthy_modules[] = $relative_path;
- }
+ if ($is_healthy) {
+ $healthy_modules[] = $relative_path;
+ }
- if (!$is_stored || !$is_healthy) {
- $db_modules_create[] = [
- 'id' => $manifest['id'],
- 'relative_path' => $relative_path,
- 'status' => MODULE_STATUS_DISABLED,
- 'config' => $manifest['config']
- ];
- $db_modules_create_names[] = $manifest['name'];
+ if (!$is_stored || !$is_healthy) {
+ $db_modules_create[] = [
+ 'id' => $manifest['id'],
+ 'relative_path' => $relative_path,
+ 'status' => MODULE_STATUS_DISABLED,
+ 'config' => $manifest['config']
+ ];
+ $db_modules_create_names[] = $manifest['name'];
+ }
}
}
diff --git a/ui/app/controllers/CControllerModuleUpdate.php b/ui/app/controllers/CControllerModuleUpdate.php
index 3fcd763c5c1..f4a8a592df8 100644
--- a/ui/app/controllers/CControllerModuleUpdate.php
+++ b/ui/app/controllers/CControllerModuleUpdate.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -26,12 +26,10 @@ class CControllerModuleUpdate extends CController {
/**
* List of modules to update.
- *
- * @var array
*/
- private $modules = [];
+ private array $modules = [];
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
'moduleids' => 'required|array_db module.moduleid',
@@ -49,7 +47,7 @@ class CControllerModuleUpdate extends CController {
return $ret;
}
- protected function checkPermissions() {
+ protected function checkPermissions(): bool {
if (!$this->checkAccess(CRoleHelper::UI_ADMINISTRATION_GENERAL)) {
return false;
}
@@ -65,7 +63,7 @@ class CControllerModuleUpdate extends CController {
return (count($this->modules) == count($moduleids));
}
- protected function doAction() {
+ protected function doAction(): void {
$set_status = ($this->getAction() === 'module.update')
? ($this->hasInput('status') ? MODULE_STATUS_ENABLED : MODULE_STATUS_DISABLED)
: ($this->getAction() === 'module.enable' ? MODULE_STATUS_ENABLED : MODULE_STATUS_DISABLED);
@@ -78,8 +76,8 @@ class CControllerModuleUpdate extends CController {
'preservekeys' => true
]);
- $module_manager = new CModuleManager(APP::ModuleManager()->getModulesDir());
- $module_manager_enabled = new CModuleManager(APP::ModuleManager()->getModulesDir());
+ $module_manager = new CModuleManager(APP::getRootDir());
+ $module_manager_enabled = new CModuleManager(APP::getRootDir());
foreach ($db_modules as $moduleid => $db_module) {
$new_status = array_key_exists($moduleid, $this->modules) ? $set_status : $db_module['status'];
diff --git a/ui/app/controllers/CControllerPopupItemTest.php b/ui/app/controllers/CControllerPopupItemTest.php
index 5332fcfb213..bc50bbbab06 100644
--- a/ui/app/controllers/CControllerPopupItemTest.php
+++ b/ui/app/controllers/CControllerPopupItemTest.php
@@ -247,9 +247,9 @@ abstract class CControllerPopupItemTest extends CController {
protected $is_item_testable;
/**
- * @var object
+ * @var string
*/
- protected $preproc_item;
+ protected $test_type;
/**
* @var array
@@ -332,26 +332,6 @@ abstract class CControllerPopupItemTest extends CController {
}
/**
- * Function returns instance of item, item prototype or discovery rule class.
- *
- * @param int $test_type
- *
- * @return CItem|CItemPrototype|CDiscoveryRule
- */
- protected static function getPreprocessingItemClassInstance($test_type) {
- switch ($test_type) {
- case self::ZBX_TEST_TYPE_ITEM:
- return new CItem;
-
- case self::ZBX_TEST_TYPE_ITEM_PROTOTYPE:
- return new CItemPrototype;
-
- case self::ZBX_TEST_TYPE_LLD:
- return new CDiscoveryRule;
- }
- }
-
- /**
* Function returns list of proxies.
*
* @return array
@@ -929,7 +909,7 @@ abstract class CControllerPopupItemTest extends CController {
'supported_macros' => array_diff_key($this->macros_by_item_props['key'],
['support_user_macros' => true, 'support_lld_macros' => true]
),
- 'support_lldmacros' => ($this->preproc_item instanceof CItemPrototype),
+ 'support_lldmacros' => ($this->test_type == self::ZBX_TEST_TYPE_ITEM_PROTOTYPE),
'texts_support_macros' => [$inputs['key']],
'texts_support_lld_macros' => [$inputs['key']],
'texts_support_user_macros' => [$inputs['key']],
@@ -1025,7 +1005,7 @@ abstract class CControllerPopupItemTest extends CController {
protected function resolvePreprocessingStepMacros(array $steps) {
// Resolve macros used in parameter fields.
$macros_posted = $this->getInput('macros', []);
- $macros_types = ($this->preproc_item instanceof CItemPrototype)
+ $macros_types = ($this->test_type == self::ZBX_TEST_TYPE_ITEM_PROTOTYPE)
? ['usermacros' => true, 'lldmacros' => true]
: ['usermacros' => true];
@@ -1069,7 +1049,7 @@ abstract class CControllerPopupItemTest extends CController {
$expression_parser = new CExpressionParser([
'usermacros' => true,
- 'lldmacros' => ($this->preproc_item instanceof CItemPrototype),
+ 'lldmacros' => ($this->test_type == self::ZBX_TEST_TYPE_ITEM_PROTOTYPE),
'calculated' => true,
'host_macro' => true,
'empty_host' => true
@@ -1200,7 +1180,7 @@ abstract class CControllerPopupItemTest extends CController {
'macros_n' => []
];
- if ($this->preproc_item instanceof CItemPrototype) {
+ if ($this->test_type == self::ZBX_TEST_TYPE_ITEM_PROTOTYPE) {
$types += ['lldmacros' => true];
}
diff --git a/ui/app/controllers/CControllerPopupItemTestEdit.php b/ui/app/controllers/CControllerPopupItemTestEdit.php
index f94862af32e..bae0c4df2ed 100644
--- a/ui/app/controllers/CControllerPopupItemTestEdit.php
+++ b/ui/app/controllers/CControllerPopupItemTestEdit.php
@@ -85,7 +85,7 @@ class CControllerPopupItemTestEdit extends CControllerPopupItemTest {
if ($ret) {
$testable_item_types = self::getTestableItemTypes($this->getInput('hostid', '0'));
$this->item_type = $this->hasInput('item_type') ? $this->getInput('item_type') : -1;
- $this->preproc_item = self::getPreprocessingItemClassInstance($this->getInput('test_type'));
+ $this->test_type = $this->getInput('test_type');
$this->is_item_testable = in_array($this->item_type, $testable_item_types);
// Check if key is valid for item types it's mandatory.
@@ -105,10 +105,31 @@ class CControllerPopupItemTestEdit extends CControllerPopupItemTest {
$steps = $this->getInput('steps', []);
if ($ret && $steps) {
$steps = normalizeItemPreprocessingSteps($steps);
- $steps_validation_response = $this->preproc_item->validateItemPreprocessingSteps($steps);
- if ($steps_validation_response !== true) {
- error($steps_validation_response);
- $ret = false;
+
+ if ($this->test_type == self::ZBX_TEST_TYPE_LLD) {
+ $lld_instance = new CDiscoveryRule();
+ $steps_validation_response = $lld_instance->validateItemPreprocessingSteps($steps);
+
+ if ($steps_validation_response !== true) {
+ error($steps_validation_response);
+ $ret = false;
+ }
+ }
+ else {
+ switch ($this->test_type) {
+ case self::ZBX_TEST_TYPE_ITEM:
+ $api_input_rules = CItem::getPreprocessingValidationRules();
+ break;
+
+ case self::ZBX_TEST_TYPE_ITEM_PROTOTYPE:
+ $api_input_rules = CItemPrototype::getPreprocessingValidationRules();
+ break;
+ }
+
+ if (!CApiInputValidator::validate($api_input_rules, $steps, '/', $error)) {
+ error($error);
+ $ret = false;
+ }
}
}
elseif ($ret && !$this->is_item_testable) {
@@ -157,7 +178,7 @@ class CControllerPopupItemTestEdit extends CControllerPopupItemTest {
$preprocessing_types = zbx_objectValues($preprocessing_steps, 'type');
$preprocessing_names = get_preprocessing_types(null, false, $preprocessing_types);
- $support_lldmacros = ($this->preproc_item instanceof CItemPrototype);
+ $support_lldmacros = ($this->test_type == self::ZBX_TEST_TYPE_ITEM_PROTOTYPE);
$show_prev = (count(array_intersect($preprocessing_types, self::$preproc_steps_using_prev_value)) > 0);
// Collect item texts and macros to later check their usage.
@@ -392,7 +413,7 @@ class CControllerPopupItemTestEdit extends CControllerPopupItemTest {
'prev_time' => $prev_time,
'hostid' => $this->getInput('hostid'),
'interfaceid' => $this->getInput('interfaceid', 0),
- 'test_type' => $this->getInput('test_type'),
+ 'test_type' => $this->test_type,
'step_obj' => $this->getInput('step_obj'),
'show_final_result' => $this->getInput('show_final_result'),
'valuemapid' => $this->getInput('valuemapid', 0),
@@ -409,7 +430,6 @@ class CControllerPopupItemTestEdit extends CControllerPopupItemTest {
'interface_port_enabled' => (array_key_exists($this->item_type, $this->items_require_interface)
&& $this->items_require_interface[$this->item_type]['port']
),
- 'preproc_item' => $this->preproc_item,
'show_snmp_form' => ($this->item_type == ITEM_TYPE_SNMP),
'show_warning' => $show_warning,
'user' => [
diff --git a/ui/app/controllers/CControllerPopupItemTestGetValue.php b/ui/app/controllers/CControllerPopupItemTestGetValue.php
index 42ea46074c9..a8b3f9301ad 100644
--- a/ui/app/controllers/CControllerPopupItemTestGetValue.php
+++ b/ui/app/controllers/CControllerPopupItemTestGetValue.php
@@ -77,7 +77,7 @@ class CControllerPopupItemTestGetValue extends CControllerPopupItemTest {
if ($ret) {
$testable_item_types = self::getTestableItemTypes($this->getInput('hostid', '0'));
$this->item_type = $this->getInput('item_type');
- $this->preproc_item = self::getPreprocessingItemClassInstance($this->getInput('test_type'));
+ $this->test_type = $this->getInput('test_type');
$this->is_item_testable = in_array($this->item_type, $testable_item_types);
if (!$this->is_item_testable) {
diff --git a/ui/app/controllers/CControllerPopupItemTestSend.php b/ui/app/controllers/CControllerPopupItemTestSend.php
index 82bc61d32c4..1a9b9d16111 100644
--- a/ui/app/controllers/CControllerPopupItemTestSend.php
+++ b/ui/app/controllers/CControllerPopupItemTestSend.php
@@ -114,7 +114,7 @@ class CControllerPopupItemTestSend extends CControllerPopupItemTest {
$testable_item_types = self::getTestableItemTypes($this->getInput('hostid', '0'));
$this->get_value_from_host = (bool) $this->getInput('get_value');
$this->item_type = $this->hasInput('item_type') ? $this->getInput('item_type') : -1;
- $this->preproc_item = self::getPreprocessingItemClassInstance($this->getInput('test_type'));
+ $this->test_type = $this->getInput('test_type');
$this->is_item_testable = in_array($this->item_type, $testable_item_types);
$interface = $this->getInput('interface', []);
@@ -158,9 +158,32 @@ class CControllerPopupItemTestSend extends CControllerPopupItemTest {
}
// Check preprocessing steps.
- if ($steps && ($error = $this->preproc_item->validateItemPreprocessingSteps($steps)) !== true) {
- error($error);
- $ret = false;
+ if ($steps) {
+ if ($this->test_type == self::ZBX_TEST_TYPE_LLD) {
+ $lld_instance = new CDiscoveryRule();
+ $steps_validation_response = $lld_instance->validateItemPreprocessingSteps($steps);
+
+ if ($steps_validation_response !== true) {
+ error($steps_validation_response);
+ $ret = false;
+ }
+ }
+ else {
+ switch ($this->test_type) {
+ case self::ZBX_TEST_TYPE_ITEM:
+ $api_input_rules = CItem::getPreprocessingValidationRules();
+ break;
+
+ case self::ZBX_TEST_TYPE_ITEM_PROTOTYPE:
+ $api_input_rules = CItemPrototype::getPreprocessingValidationRules();
+ break;
+ }
+
+ if (!CApiInputValidator::validate($api_input_rules, $steps, '/', $error)) {
+ error($error);
+ $ret = false;
+ }
+ }
}
// Check previous time.
diff --git a/ui/app/controllers/CControllerPopupMassupdateItem.php b/ui/app/controllers/CControllerPopupMassupdateItem.php
index 0f6aad4c194..e983b4ea7a9 100644
--- a/ui/app/controllers/CControllerPopupMassupdateItem.php
+++ b/ui/app/controllers/CControllerPopupMassupdateItem.php
@@ -23,86 +23,61 @@ require_once dirname(__FILE__).'/../../include/forms.inc.php';
class CControllerPopupMassupdateItem extends CController {
- private $opt_interfaceid_expected = false;
-
protected function checkInput() {
$fields = [
- 'allow_traps' => 'in '.implode(',', [HTTPCHECK_ALLOW_TRAPS_ON, HTTPCHECK_ALLOW_TRAPS_OFF]),
- 'authtype' => 'string',
'context' => 'required|string|in host,template',
- 'delay' => 'string',
- 'delay_flex' => 'array',
- 'description' => 'string',
- 'discover' => 'in '.ZBX_PROTOTYPE_DISCOVER.','.ZBX_PROTOTYPE_NO_DISCOVER,
- 'headers' => 'array',
- 'history' => 'string',
- 'history_mode' => 'in '.implode(',', [ITEM_STORAGE_OFF, ITEM_STORAGE_CUSTOM]),
'ids' => 'required|array_id',
- 'interfaceid' => 'id',
- 'jmx_endpoint' => 'string',
- 'logtimefmt' => 'string',
- 'mass_update_tags' => 'in '.implode(',', [ZBX_ACTION_ADD, ZBX_ACTION_REPLACE, ZBX_ACTION_REMOVE]),
- 'master_itemid' => 'id',
- 'parent_discoveryid' => 'id',
- 'password' => 'string',
- 'post_type' => 'in '.implode(',', [ZBX_POSTTYPE_RAW, ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML]),
- 'posts' => 'string',
- 'preprocessing' => 'array',
- 'privatekey' => 'string',
'prototype' => 'required|in 0,1',
- 'publickey' => 'string',
- 'status' => 'in '.implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED]),
- 'tags' => 'array',
- 'trapper_hosts' => 'string',
- 'trends' => 'string',
+ 'update' => 'in 1',
+ 'visible' => 'array',
+ 'parent_discoveryid' => 'id',
+ 'history_mode' => 'in '.implode(',', [ITEM_STORAGE_OFF, ITEM_STORAGE_CUSTOM]),
'trends_mode' => 'in '.implode(',', [ITEM_STORAGE_OFF, ITEM_STORAGE_CUSTOM]),
- 'timeout' => 'string',
+ 'mass_update_tags' => 'in '.implode(',', [ZBX_ACTION_ADD, ZBX_ACTION_REPLACE, ZBX_ACTION_REMOVE]),
+ 'delay_flex' => 'array',
+
+ // The fields used for all item types.
'type' => 'int32',
- 'units' => 'string',
- 'update' => 'in 1',
- 'url' => 'string',
- 'username' => 'string',
'value_type' => 'in '.implode(',', [ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_TEXT]),
+ 'units' => 'string',
+ 'history' => 'string',
+ 'trends' => 'string',
'valuemapid' => 'id',
- 'visible' => 'array'
- ];
+ 'logtimefmt' => 'string',
+ 'description' => 'string',
+ 'status' => 'in '.implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED]),
+ 'discover' => 'in '.ZBX_PROTOTYPE_DISCOVER.','.ZBX_PROTOTYPE_NO_DISCOVER,
+ 'tags' => 'array',
+ 'preprocessing' => 'array',
- $this->opt_interfaceid_expected = (getRequest('interfaceid') == INTERFACE_TYPE_OPT);
+ // The fields used for multiple item types.
+ 'interfaceid' => 'id',
+ 'authtype' => 'string',
+ 'username' => 'string',
+ 'password' => 'string',
+ 'timeout' => 'string',
+ 'delay' => 'string',
+ 'trapper_hosts' => 'string',
- if ($this->opt_interfaceid_expected) {
- unset($fields['interfaceid']);
- unset($_REQUEST['interfaceid']);
- }
+ // Dependent item type specific fields.
+ 'master_itemid' => 'id',
- $ret = $this->validateInput($fields);
+ // HTTP Agent item type specific fields.
+ 'url' => 'string',
+ 'post_type' => 'in '.implode(',', [ZBX_POSTTYPE_RAW, ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML]),
+ 'posts' => 'string',
+ 'headers' => 'array',
+ 'allow_traps' => 'in '.implode(',', [HTTPCHECK_ALLOW_TRAPS_ON, HTTPCHECK_ALLOW_TRAPS_OFF]),
- if ($ret && $this->opt_interfaceid_expected) {
- if ($this->hasInput('type')) {
- $item_types = [$this->getInput('type')];
- }
- else {
- $options = [
- 'output' => ['type'],
- 'itemids' => $this->getInput('ids')
- ];
- $item_types = (bool) $this->getInput('prototype')
- ? API::ItemPrototype()->get($options)
- : API::Item()->get($options);
-
- $item_types = array_column($item_types, 'type', 'type');
- }
+ // JMX item type specific fields.
+ 'jmx_endpoint' => 'string',
- foreach ($item_types as $item_type) {
- if (itemTypeInterface($item_type) != INTERFACE_TYPE_OPT) {
- error(_s('Incorrect value for field "%1$s": %2$s.', _('Host interface'),
- interfaceType2str(INTERFACE_TYPE_OPT)
- ));
- $ret = false;
+ // SSH item type specific fields.
+ 'publickey' => 'string',
+ 'privatekey' => 'string'
+ ];
- break;
- }
- }
- }
+ $ret = $this->validateInput($fields);
if (!$ret) {
$this->setResponse(
@@ -118,52 +93,26 @@ class CControllerPopupMassupdateItem extends CController {
}
protected function checkPermissions() {
- $entity = ($this->getInput('prototype') == 1) ? API::ItemPrototype() : API::Item();
-
- return (bool) $entity->get([
- 'output' => [],
- 'itemids' => $this->getInput('ids'),
- 'editable' => true,
- 'limit' => 1
- ]);
- }
-
- protected function doAction() {
- $this->setResponse($this->hasInput('update') ? $this->update() : $this->form());
- }
-
- /**
- * Get array of updated items or item prototypes.
- *
- * @return array
- */
- protected function getItemsOrPrototypes(): array {
- $options = [
- 'output' => ['itemid', 'type'],
- 'selectTags' => ['tag', 'value'],
- 'itemids' => $this->getInput('ids'),
- 'preservekeys' => true
- ];
-
- if ($this->getInput('prototype')) {
- $result = API::ItemPrototype()->get($options);
+ if ($this->getInput('prototype') == 1) {
+ $count = API::ItemPrototype()->get([
+ 'countOutput' => true,
+ 'itemids' => $this->getInput('ids'),
+ 'editable' => true
+ ]);
}
else {
- $options['output'][] = 'flags';
- $result = API::Item()->get($options);
+ $count = API::Item()->get([
+ 'countOutput' => true,
+ 'itemids' => $this->getInput('ids'),
+ 'editable' => true
+ ]);
}
- return $result;
+ return $count != 0;
}
- /**
- * Update item or item prototype, return update action status.
- *
- * @param array $data Array of item or item prototypes data to update.
- * @return bool
- */
- protected function updateItemOrPrototype(array $data): bool {
- return (bool) ($this->getInput('prototype') ? API::ItemPrototype()->update($data) : API::Item()->update($data));
+ protected function doAction() {
+ $this->setResponse($this->hasInput('update') ? $this->update() : $this->form());
}
/**
@@ -172,189 +121,159 @@ class CControllerPopupMassupdateItem extends CController {
* @return CControllerResponse
*/
protected function update(): CControllerResponse {
- $result = true;
- $ids = $this->getInput('ids');
- $prototype = (bool) $this->getInput('prototype');
- $input = [
- 'allow_traps' => HTTPCHECK_ALLOW_TRAPS_OFF,
- 'authtype' => '',
- 'delay' => DB::getDefault('items', 'delay'),
- 'description' => '',
- 'discover' => ZBX_PROTOTYPE_DISCOVER,
- 'headers' => [],
- 'history' => ITEM_NO_STORAGE_VALUE,
- 'jmx_endpoint' => '',
- 'logtimefmt' => '',
- 'master_itemid' => 0,
- 'password' => '',
- 'post_type' => ZBX_POSTTYPE_RAW,
- 'posts' => '',
- 'preprocessing' => [],
- 'privatekey' => '',
- 'publickey' => '',
- 'status' => ITEM_STATUS_ACTIVE,
- 'tags' => [],
- 'timeout' => '',
- 'trapper_hosts' => '',
- 'trends' => ITEM_NO_STORAGE_VALUE,
- 'type' => 0,
- 'units' => '',
- 'url' => '',
- 'username' => '',
- 'value_type' => ITEM_VALUE_TYPE_UINT64,
- 'valuemapid' => 0,
- 'interfaceid' => $this->opt_interfaceid_expected ? 0 : ''
- ];
- $this->getInputs($input, array_keys($input));
-
- if ($this->getInput('trends_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF) {
- $input['trends'] = ITEM_NO_STORAGE_VALUE;
- }
+ $item_prototypes = (bool) $this->getInput('prototype', false);
- if ($this->getInput('history_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF) {
- $input['history'] = ITEM_NO_STORAGE_VALUE;
- }
+ try {
+ $input = [
+ 'type' => DB::getDefault('items', 'type'),
+ 'value_type' => ITEM_VALUE_TYPE_UINT64,
+ 'units' => DB::getDefault('items', 'units'),
+ 'history' => ITEM_NO_STORAGE_VALUE,
+ 'trends' => ITEM_NO_STORAGE_VALUE,
+ 'valuemapid' => 0,
+ 'logtimefmt' => DB::getDefault('items', 'logtimefmt'),
+ 'description' => DB::getDefault('items', 'description'),
+ 'status' => DB::getDefault('items', 'status'),
+ 'discover' => DB::getDefault('items', 'discover'),
+ 'tags' => [],
+ 'preprocessing' => [],
+
+ // The fields used for multiple item types.
+ 'interfaceid' => 0,
+ 'authtype' => DB::getDefault('items', 'authtype'),
+ 'username' => DB::getDefault('items', 'username'),
+ 'password' => DB::getDefault('items', 'password'),
+ 'timeout' => '',
+ 'delay' => DB::getDefault('items', 'delay'),
+ 'trapper_hosts' => DB::getDefault('items', 'trapper_hosts'),
+
+ // Dependent item type specific fields.
+ 'master_itemid' => 0,
+
+ // HTTP Agent item type specific fields.
+ 'url' => DB::getDefault('items', 'url'),
+ 'post_type' => DB::getDefault('items', 'post_type'),
+ 'posts' => DB::getDefault('items', 'posts'),
+ 'headers' => [],
+ 'allow_traps' => DB::getDefault('items', 'allow_traps'),
+
+ // JMX item type specific fields.
+ 'jmx_endpoint' => DB::getDefault('items', 'jmx_endpoint'),
+
+ // SSH item type specific fields.
+ 'publickey' => DB::getDefault('items', 'publickey'),
+ 'privatekey' => DB::getDefault('items', 'privatekey')
+ ];
- $input = array_intersect_key($input, $this->getInput('visible', []));
+ $input = array_intersect_key($input, $this->getInput('visible', []));
+ $this->getInputs($input, array_keys($input));
- if (array_key_exists('tags', $input)) {
- $input['tags'] = array_filter($input['tags'], function ($tag) {
- return ($tag['tag'] !== '' || $tag['value'] !== '');
- });
- }
+ $options = [];
- try {
- DBstart();
- $delay_flex = $this->getInput('delay_flex', []);
-
- if (array_key_exists('delay', $input) && $delay_flex) {
- $simple_interval_parser = new CSimpleIntervalParser(['usermacros' => true]);
- $time_period_parser = new CTimePeriodParser(['usermacros' => true]);
- $scheduling_interval_parser = new CSchedulingIntervalParser(['usermacros' => true]);
-
- foreach ($delay_flex as $interval) {
- if ($interval['type'] == ITEM_DELAY_FLEXIBLE) {
- if ($interval['delay'] === '' && $interval['period'] === '') {
- continue;
- }
-
- if ($simple_interval_parser->parse($interval['delay']) != CParser::PARSE_SUCCESS) {
- info(_s('Invalid interval "%1$s".', $interval['delay']));
- throw new Exception();
- }
- elseif ($time_period_parser->parse($interval['period']) != CParser::PARSE_SUCCESS) {
- info(_s('Invalid interval "%1$s".', $interval['period']));
- throw new Exception();
- }
-
- $input['delay'] .= ';'.$interval['delay'].'/'.$interval['period'];
- }
- else {
- if ($interval['schedule'] === '') {
- continue;
- }
+ if (array_key_exists('tags', $input)) {
+ $input['tags'] = prepareItemTags($input['tags']);
- if ($scheduling_interval_parser->parse($interval['schedule']) != CParser::PARSE_SUCCESS) {
- info(_s('Invalid interval "%1$s".', $interval['schedule']));
- throw new Exception();
- }
+ $api_input_rules = ['type' => API_OBJECTS, 'uniq' => [['tag', 'value']], 'fields' => [
+ 'tag' => ['type' => API_STRING_UTF8],
+ 'value' => ['type' => API_STRING_UTF8]
+ ]];
- $input['delay'] .= ';'.$interval['schedule'];
- }
+ if (!CApiInputValidator::validateUniqueness($api_input_rules, $input['tags'], '/tags', $error)) {
+ error($error);
+ throw new Exception();
}
- }
- if (array_key_exists('headers', $input) && $input['headers']) {
- $input['headers']['value'] += array_fill_keys(array_keys($input['headers']['name']), '');
+ $tag_values = [];
- $headers = [];
- foreach ($input['headers']['name'] as $i => $header_name) {
- if ($header_name !== '' || $input['headers']['value'][$i] !== '') {
- $headers[$header_name] = $input['headers']['value'][$i];
- }
+ foreach ($input['tags'] as $tag) {
+ $tag_values[$tag['tag']][] = $tag['value'];
}
- $input['headers'] = $headers;
+
+ $options['selectTags'] = ['tag', 'value'];
}
- if (array_key_exists('preprocessing', $input) && $input['preprocessing']) {
+ if (array_key_exists('preprocessing', $input)) {
$input['preprocessing'] = normalizeItemPreprocessingSteps($input['preprocessing']);
}
- $items_to_update = [];
- $items = $this->getItemsOrPrototypes();
-
- foreach ($ids as $id) {
- $update_item = [];
+ if (array_key_exists('delay', $input)) {
+ $delay_flex = $this->getInput('delay_flex', []);
- if (array_key_exists('tags', $input)) {
- switch ($this->getInput('mass_update_tags', ZBX_ACTION_ADD)) {
- case ZBX_ACTION_ADD:
- $unique_tags = [];
- foreach (array_merge($items[$id]['tags'], $input['tags']) as $tag) {
- $unique_tags[$tag['tag']][$tag['value']] = $tag;
- }
-
- foreach ($unique_tags as $tags_by_name) {
- foreach ($tags_by_name as $tag) {
- $update_item['tags'][] = $tag;
- }
- }
- break;
-
- case ZBX_ACTION_REPLACE:
- $update_item['tags'] = $input['tags'];
- break;
-
- case ZBX_ACTION_REMOVE:
- $diff_tags = [];
- foreach ($items[$id]['tags'] as $a) {
- foreach ($input['tags'] as $b) {
- if ($a['tag'] === $b['tag'] && $a['value'] === $b['value']) {
- continue 2;
- }
- }
-
- $diff_tags[] = $a;
- }
- $update_item['tags'] = $diff_tags;
- break;
- }
+ if (!isValidCustomIntervals($delay_flex)) {
+ throw new Exception();
}
- if ($prototype || $items[$id]['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
- $update_item += $input;
+ $input['delay'] = getDelayWithCustomIntervals($input['delay'], $delay_flex);
+ }
- $type = array_key_exists('type', $input) ? $input['type'] : $items[$id]['type'];
+ if (array_key_exists('headers', $input)) {
+ $input['headers'] = prepareItemHeaders($input['headers']);
+ }
- if ($type != ITEM_TYPE_JMX) {
- unset($update_item['jmx_endpoint']);
- }
+ $itemids = $this->getInput('ids');
- if ($type != ITEM_TYPE_HTTPAGENT && $type != ITEM_TYPE_SCRIPT) {
- unset($update_item['timeout']);
- }
+ if ($item_prototypes) {
+ $db_items = API::ItemPrototype()->get([
+ 'output' => ['type', 'key_', 'value_type', 'templateid', 'authtype', 'allow_traps'],
+ 'selectHosts' => ['status'],
+ 'itemids' => $itemids,
+ 'preservekeys' => true
+ ] + $options);
+ }
+ else {
+ $db_items = API::Item()->get([
+ 'output' => ['type', 'key_', 'value_type', 'templateid', 'flags', 'authtype', 'allow_traps'],
+ 'selectHosts' => ['status'],
+ 'itemids' => $itemids,
+ 'preservekeys' => true
+ ] + $options);
+ }
+
+ $items = [];
+
+ foreach ($itemids as $itemid) {
+ $db_item = $db_items[$itemid];
+
+ if ($item_prototypes) {
+ $db_item['flags'] = ZBX_FLAG_DISCOVERY_PROTOTYPE;
}
- else if (array_key_exists('status', $input)) {
- $items_to_update[] = ['itemid' => $id, 'status' => $input['status']];
+
+ $item = array_intersect_key($input, getSanitizedItemFields($input + $db_item));
+
+ if (array_key_exists('tags', $input)) {
+ $item['tags'] = $this->getTagsToUpdate($db_item, $tag_values);
}
- if ($update_item) {
- $items_to_update[] = ['itemid' => $id] + $update_item;
+ if ($item) {
+ $items[] = ['itemid' => $itemid] + $item;
}
}
- if ($items_to_update && !$this->updateItemOrPrototype($items_to_update)) {
- throw new Exception();
+ $result = true;
+
+ if ($items) {
+ if ($item_prototypes) {
+ $response = API::ItemPrototype()->update($items);
+ }
+ else {
+ $response = API::Item()->update($items);
+ }
+
+ if ($response === false) {
+ throw new Exception();
+ }
}
}
catch (Exception $e) {
$result = false;
- CMessageHelper::setErrorTitle($prototype ? _('Cannot update item prototypes') : _('Cannot update items'));
+ CMessageHelper::setErrorTitle(
+ $item_prototypes ? _('Cannot update item prototypes') : _('Cannot update items')
+ );
}
- if (DBend($result)) {
+ if ($result) {
$messages = CMessageHelper::getMessages();
- $output = ['title' => $prototype ? _('Item prototypes updated') : _('Items updated')];
+ $output = ['title' => $item_prototypes ? _('Item prototypes updated') : _('Items updated')];
if (count($messages)) {
$output['messages'] = array_column($messages, 'message');
@@ -371,6 +290,59 @@ class CControllerPopupMassupdateItem extends CController {
}
/**
+ * Get item tags to update or null if no tags to update found.
+ *
+ * @param array $db_item
+ * @param array $tag_values
+ *
+ * @return array
+ */
+ private function getTagsToUpdate(array $db_item, array $tag_values): ?array {
+ $tags = [];
+
+ switch ($this->getInput('mass_update_tags', ZBX_ACTION_ADD)) {
+ case ZBX_ACTION_ADD:
+ foreach ($db_item['tags'] as $db_tag) {
+ if (array_key_exists($db_tag['tag'], $tag_values)
+ && in_array($db_tag['value'], $tag_values[$db_tag['tag']])) {
+ unset($tag_values[$db_tag['tag']][$db_tag['value']]);
+ }
+ }
+
+ foreach ($tag_values as $tag => $values) {
+ foreach ($values as $value) {
+ $tags[] = ['tag' => (string) $tag, 'value' => $value];
+ }
+ }
+
+ $tags = array_merge($db_item['tags'], $tags);
+ break;
+
+ case ZBX_ACTION_REPLACE:
+ foreach ($tag_values as $tag => $values) {
+ foreach ($values as $value) {
+ $tags[] = ['tag' => (string) $tag, 'value' => $value];
+ }
+ }
+
+ CArrayHelper::sort($tags, ['tag', 'value']);
+ CArrayHelper::sort($db_item['tags'], ['tag', 'value']);
+ break;
+
+ case ZBX_ACTION_REMOVE:
+ foreach ($db_item['tags'] as $db_tag) {
+ if (!array_key_exists($db_tag['tag'], $tag_values)
+ || !in_array($db_tag['value'], $tag_values[$db_tag['tag']])) {
+ $tags[] = ['tag' => $db_tag['tag'], 'value' => $db_tag['value']];
+ }
+ }
+ break;
+ }
+
+ return $tags;
+ }
+
+ /**
* Handle item mass update form initialization.
*
* @return CControllerResponse
diff --git a/ui/app/controllers/CControllerProblem.php b/ui/app/controllers/CControllerProblem.php
index 642fa9d21bb..e1fe131309e 100644
--- a/ui/app/controllers/CControllerProblem.php
+++ b/ui/app/controllers/CControllerProblem.php
@@ -44,7 +44,7 @@ abstract class CControllerProblem extends CController {
'show_suppressed' => 0,
'unacknowledged' => 0,
'compact_view' => 0,
- 'show_timeline' => 1,
+ 'show_timeline' => ZBX_TIMELINE_ON,
'details' => 0,
'highlight_row' => 0,
'show_opdata' => OPERATIONAL_DATA_SHOW_NONE,
diff --git a/ui/app/controllers/CControllerProblemView.php b/ui/app/controllers/CControllerProblemView.php
index 1c2fb8d5bcf..b5bbe1420b3 100644
--- a/ui/app/controllers/CControllerProblemView.php
+++ b/ui/app/controllers/CControllerProblemView.php
@@ -45,7 +45,7 @@ class CControllerProblemView extends CControllerProblem {
'show_suppressed' => 'in 0,1',
'unacknowledged' => 'in 0,1',
'compact_view' => 'in 0,1',
- 'show_timeline' => 'in 0,1',
+ 'show_timeline' => 'in '.ZBX_TIMELINE_OFF.','.ZBX_TIMELINE_ON,
'details' => 'in 0,1',
'highlight_row' => 'in 0,1',
'show_opdata' => 'in '.OPERATIONAL_DATA_SHOW_NONE.','.OPERATIONAL_DATA_SHOW_SEPARATELY.','.OPERATIONAL_DATA_SHOW_WITH_PROBLEM,
diff --git a/ui/app/controllers/CControllerProblemViewRefresh.php b/ui/app/controllers/CControllerProblemViewRefresh.php
index 8bf640164b4..7753a6a52e1 100644
--- a/ui/app/controllers/CControllerProblemViewRefresh.php
+++ b/ui/app/controllers/CControllerProblemViewRefresh.php
@@ -49,7 +49,7 @@ class CControllerProblemViewRefresh extends CControllerProblemView {
'show_suppressed' => 'in 0,1',
'unacknowledged' => 'in 0,1',
'compact_view' => 'in 0,1',
- 'show_timeline' => 'in 0,1',
+ 'show_timeline' => 'in '.ZBX_TIMELINE_OFF.','.ZBX_TIMELINE_ON,
'details' => 'in 0,1',
'highlight_row' => 'in 0,1',
'show_opdata' => 'in '.OPERATIONAL_DATA_SHOW_NONE.','.OPERATIONAL_DATA_SHOW_SEPARATELY.','.OPERATIONAL_DATA_SHOW_WITH_PROBLEM,
@@ -132,7 +132,7 @@ class CControllerProblemViewRefresh extends CControllerProblemView {
'show_suppressed' => $this->getInput('show_suppressed', ZBX_PROBLEM_SUPPRESSED_FALSE),
'unacknowledged' => $this->getInput('unacknowledged', 0),
'compact_view' => $this->getInput('compact_view', 0),
- 'show_timeline' => $this->getInput('show_timeline', 0),
+ 'show_timeline' => $this->getInput('show_timeline', ZBX_TIMELINE_OFF),
'details' => $this->getInput('details', 0),
'highlight_row' => $this->getInput('highlight_row', 0),
'show_opdata' => $this->getInput('show_opdata', OPERATIONAL_DATA_SHOW_NONE),
diff --git a/ui/app/controllers/CControllerProfileUpdate.php b/ui/app/controllers/CControllerProfileUpdate.php
index aedc4491e8d..c164d456109 100644
--- a/ui/app/controllers/CControllerProfileUpdate.php
+++ b/ui/app/controllers/CControllerProfileUpdate.php
@@ -41,6 +41,7 @@ class CControllerProfileUpdate extends CController {
case 'web.correlation.filter.active':
case 'web.dashboard.filter.active':
case 'web.dashboard.hostid':
+ case 'web.dashboard.last_widget_type':
case 'web.discovery.filter.active':
case 'web.discoveryconf.filter.active':
case 'web.hostgroups.filter.active':
@@ -63,9 +64,9 @@ class CControllerProfileUpdate extends CController {
case 'web.proxies.filter.active':
case 'web.scheduledreport.filter.active':
case 'web.scripts.filter.active':
- case 'web.search.hats.'.WIDGET_SEARCH_HOSTS.'.state':
- case 'web.search.hats.'.WIDGET_SEARCH_TEMPLATES.'.state':
- case 'web.search.hats.'.WIDGET_SEARCH_HOSTGROUP.'.state':
+ case 'web.search.hats.'.SECTION_SEARCH_HOSTS.'.state':
+ case 'web.search.hats.'.SECTION_SEARCH_TEMPLATES.'.state':
+ case 'web.search.hats.'.SECTION_SEARCH_HOSTGROUP.'.state':
case 'web.service.filter.active':
case 'web.service_actions.filter.active':
case 'web.sidebar.mode':
@@ -81,8 +82,8 @@ class CControllerProfileUpdate extends CController {
case 'web.templates.triggers.filter.active':
case 'web.token.filter.active':
case 'web.toptriggers.filter.active':
- case 'web.tr_events.hats.'.WIDGET_HAT_EVENTACTIONS.'.state':
- case 'web.tr_events.hats.'.WIDGET_HAT_EVENTLIST.'.state':
+ case 'web.tr_events.hats.'.SECTION_HAT_EVENTACTIONS.'.state':
+ case 'web.tr_events.hats.'.SECTION_HAT_EVENTLIST.'.state':
case 'web.user.filter.active':
case 'web.user.token.filter.active':
case 'web.usergroup.filter.active':
@@ -104,6 +105,7 @@ class CControllerProfileUpdate extends CController {
if ($ret) {
switch ($this->getInput('idx')) {
+ case 'web.dashboard.last_widget_type':
case 'web.dashboard.widget.geomap.default_view':
case 'web.dashboard.widget.geomap.severity_filter':
$ret = $this->hasInput('value_str');
@@ -132,6 +134,15 @@ class CControllerProfileUpdate extends CController {
DBstart();
switch ($idx) {
// PROFILE_TYPE_STR
+ case 'web.dashboard.last_widget_type':
+ $value_str = $this->getInput('value_str');
+ if ($value_str === '') {
+ CProfile::delete($idx);
+ }
+ else {
+ CProfile::update($idx, $value_str, PROFILE_TYPE_STR);
+ }
+ break;
case 'web.dashboard.widget.geomap.default_view':
case 'web.dashboard.widget.geomap.severity_filter':
$value_str = $this->getInput('value_str');
diff --git a/ui/app/controllers/CControllerTemplateDashboardEdit.php b/ui/app/controllers/CControllerTemplateDashboardEdit.php
index b500e89857e..bc32eb03d6e 100644
--- a/ui/app/controllers/CControllerTemplateDashboardEdit.php
+++ b/ui/app/controllers/CControllerTemplateDashboardEdit.php
@@ -21,13 +21,13 @@
class CControllerTemplateDashboardEdit extends CController {
- private $dashboard;
+ private array $dashboard;
- protected function init() {
+ protected function init(): void {
$this->disableSIDValidation();
}
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
'templateid' => 'db dashboard.templateid',
'dashboardid' => 'db dashboard.dashboardid'
@@ -44,7 +44,7 @@ class CControllerTemplateDashboardEdit extends CController {
return $ret;
}
- protected function checkPermissions() {
+ protected function checkPermissions(): bool {
if ($this->getUserType() < USER_TYPE_ZABBIX_ADMIN) {
return false;
}
@@ -61,12 +61,11 @@ class CControllerTemplateDashboardEdit extends CController {
return (bool) $this->dashboard;
}
- else {
- return isWritableHostTemplates((array) $this->getInput('templateid'));
- }
+
+ return isWritableHostTemplates((array) $this->getInput('templateid'));
}
- protected function doAction() {
+ protected function doAction(): void {
if ($this->hasInput('dashboardid')) {
$dashboard = $this->dashboard;
$dashboard['pages'] = CDashboardHelper::preparePagesForGrid($dashboard['pages'], $dashboard['templateid'],
@@ -93,7 +92,8 @@ class CControllerTemplateDashboardEdit extends CController {
$data = [
'dashboard' => $dashboard,
- 'widget_defaults' => CWidgetConfig::getDefaults(CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD),
+ 'widget_defaults' => APP::ModuleManager()->getWidgetsDefaults(true),
+ 'widget_last_type' => CDashboardHelper::getWidgetLastType(true),
'time_period' => getTimeSelectorPeriod([]),
'page' => CPagerHelper::loadPage('template.dashboard.list', null)
];
diff --git a/ui/app/controllers/CControllerTemplateDashboardUpdate.php b/ui/app/controllers/CControllerTemplateDashboardUpdate.php
index dba47d81081..7070aff5335 100644
--- a/ui/app/controllers/CControllerTemplateDashboardUpdate.php
+++ b/ui/app/controllers/CControllerTemplateDashboardUpdate.php
@@ -21,7 +21,9 @@
class CControllerTemplateDashboardUpdate extends CController {
- private $dashboard_pages;
+ private ?array $db_dashboard = null;
+
+ private ?array $dashboard_pages = null;
protected function init() {
$this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
@@ -71,83 +73,121 @@ class CControllerTemplateDashboardUpdate extends CController {
}
if ($this->hasInput('dashboardid')) {
- return (bool) API::TemplateDashboard()->get([
- 'output' => [],
- 'dashboardids' => [$this->getInput('dashboardid')],
- 'templateids' => [$this->getInput('templateid')],
+ $db_dashboards = API::TemplateDashboard()->get([
+ 'output' => ['dashboardid'],
+ 'selectPages' => ['widgets'],
+ 'dashboardids' => $this->getInput('dashboardid'),
+ 'templateids' => $this->getInput('templateid'),
'editable' => true
]);
+
+ if (!$db_dashboards) {
+ return false;
+ }
+
+ $this->db_dashboard = $db_dashboards[0];
+
+ return true;
}
else {
- return isWritableHostTemplates((array) $this->getInput('templateid'));
+ return isWritableHostTemplates([$this->getInput('templateid')]);
}
}
protected function doAction() {
- $save_dashboard = [
- 'name' => $this->getInput('name'),
- 'display_period' => $this->getInput('display_period'),
- 'auto_start' => $this->getInput('auto_start'),
- 'pages' => []
- ];
+ $output = [];
- if ($this->hasInput('dashboardid')) {
- $save_dashboard['dashboardid'] = $this->getInput('dashboardid');
- }
- else {
- $save_dashboard['templateid'] = $this->getInput('templateid');
- }
+ try {
+ $db_widgets = [];
+
+ if ($this->db_dashboard !== null) {
+ foreach ($this->db_dashboard['pages'] as $db_dashboard_page) {
+ foreach ($db_dashboard_page['widgets'] as $db_widget) {
+ $db_widgets[$db_widget['widgetid']] = $db_widget;
+ }
+ }
+ }
- foreach ($this->dashboard_pages as $dashboard_page) {
- $save_dashboard_page = [
- 'name' => $dashboard_page['name'],
- 'display_period' => $dashboard_page['display_period'],
- 'widgets' => []
+ $save_dashboard = [
+ 'name' => $this->getInput('name'),
+ 'display_period' => $this->getInput('display_period'),
+ 'auto_start' => $this->getInput('auto_start'),
+ 'pages' => []
];
- if (array_key_exists('dashboard_pageid', $dashboard_page)) {
- $save_dashboard_page['dashboard_pageid'] = $dashboard_page['dashboard_pageid'];
+ if ($this->db_dashboard !== null) {
+ $save_dashboard['dashboardid'] = $this->db_dashboard['dashboardid'];
+ }
+ else {
+ $save_dashboard['templateid'] = $this->getInput('templateid');
}
- foreach ($dashboard_page['widgets'] as $widget) {
- $save_widget = [
- 'x' => $widget['pos']['x'],
- 'y' => $widget['pos']['y'],
- 'width' => $widget['pos']['width'],
- 'height' => $widget['pos']['height'],
- 'type' => $widget['type'],
- 'name' => $widget['name'],
- 'view_mode' => $widget['view_mode'],
- 'fields' => $widget['form']->fieldsToApi()
+ foreach ($this->dashboard_pages as $dashboard_page) {
+ $save_dashboard_page = [
+ 'name' => $dashboard_page['name'],
+ 'display_period' => $dashboard_page['display_period'],
+ 'widgets' => []
];
- if (array_key_exists('widgetid', $widget)) {
- $save_widget['widgetid'] = $widget['widgetid'];
+ if (array_key_exists('dashboard_pageid', $dashboard_page)) {
+ $save_dashboard_page['dashboard_pageid'] = $dashboard_page['dashboard_pageid'];
}
- $save_dashboard_page['widgets'][] = $save_widget;
- }
-
- $save_dashboard['pages'][] = $save_dashboard_page;
- }
-
- if ($this->hasInput('dashboardid')) {
- $result = API::TemplateDashboard()->update($save_dashboard);
+ foreach ($dashboard_page['widgets'] as $widget) {
+ $save_widget = [
+ 'x' => $widget['pos']['x'],
+ 'y' => $widget['pos']['y'],
+ 'width' => $widget['pos']['width'],
+ 'height' => $widget['pos']['height']
+ ];
+
+ if ($widget['type'] !== ZBX_WIDGET_INACCESSIBLE) {
+ $save_widget += [
+ 'type' => $widget['type'],
+ 'name' => $widget['name'],
+ 'view_mode' => $widget['view_mode'],
+ 'fields' => $widget['form']->fieldsToApi()
+ ];
+ }
+ else {
+ if (!array_key_exists('widgetid', $widget)
+ || !array_key_exists($widget['widgetid'], $db_widgets)) {
+ error(_('No permissions to referred object or it does not exist!'));
+
+ throw new InvalidArgumentException();
+ }
+
+ $db_widget = $db_widgets[$widget['widgetid']];
+
+ $save_widget += [
+ 'type' => $db_widget['type'],
+ 'name' => $db_widget['name'],
+ 'view_mode' => $db_widget['view_mode'],
+ 'fields' => $db_widget['fields']
+ ];
+ }
+
+ if (array_key_exists('widgetid', $widget)) {
+ $save_widget['widgetid'] = $widget['widgetid'];
+ }
+
+ $save_dashboard_page['widgets'][] = $save_widget;
+ }
- $success_title = _('Dashboard updated');
- $error_title = _('Failed to update dashboard');
- }
- else {
- $result = API::TemplateDashboard()->create($save_dashboard);
+ $save_dashboard['pages'][] = $save_dashboard_page;
+ }
- $success_title = _('Dashboard created');
- $error_title = _('Failed to create dashboard');
- }
+ $result = $this->db_dashboard !== null
+ ? API::TemplateDashboard()->update($save_dashboard)
+ : API::TemplateDashboard()->create($save_dashboard);
- $output = [];
+ if (!$result) {
+ throw new InvalidArgumentException();
+ }
- if ($result) {
- $output['success']['title'] = $success_title;
+ $output['success']['title'] = $this->db_dashboard !== null
+ ? _('Dashboard updated')
+ : _('Dashboard created');
if ($messages = get_and_clear_messages()) {
$output['success']['messages'] = array_column($messages, 'message');
@@ -155,9 +195,11 @@ class CControllerTemplateDashboardUpdate extends CController {
$output['dashboardid'] = $result['dashboardids'][0];
}
- else {
+ catch (InvalidArgumentException $e) {
$output['error'] = [
- 'title' => $error_title,
+ 'title' => $this->db_dashboard !== null && !$this->hasInput('clone')
+ ? _('Failed to update dashboard')
+ : _('Failed to create dashboard'),
'messages' => array_column(get_and_clear_messages(), 'message')
];
}
diff --git a/ui/app/controllers/CControllerUserEdit.php b/ui/app/controllers/CControllerUserEdit.php
index 8d1c892cb38..d4938c53669 100644
--- a/ui/app/controllers/CControllerUserEdit.php
+++ b/ui/app/controllers/CControllerUserEdit.php
@@ -113,6 +113,7 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
'new_media' => [],
'roleid' => '',
'role' => [],
+ 'modules_rules' => [],
'user_type' => '',
'sid' => $this->getUserSID(),
'form_refresh' => 0,
@@ -175,7 +176,7 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
$roles = API::Role()->get([
'output' => ['name', 'type'],
'selectRules' => ['services.read.mode', 'services.read.list', 'services.read.tag',
- 'services.write.mode', 'services.write.list', 'services.write.tag'
+ 'services.write.mode', 'services.write.list', 'services.write.tag', 'modules'
],
'roleids' => $data['roleid']
]);
@@ -217,6 +218,10 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
'serviceids' => array_column($role['rules']['services.write.list'], 'serviceid')
]);
$data['service_write_tag'] = $role['rules']['services.write.tag'];
+
+ foreach ($role['rules']['modules'] as $rule) {
+ $data['modules_rules'][$rule['moduleid']] = $rule['status'];
+ }
}
}
@@ -241,12 +246,34 @@ class CControllerUserEdit extends CControllerUserEditGeneral {
$data['templategroups_rights'] = collapseGroupRights(getTemplateGroupsRights($user_groups));
}
- $data['modules'] = API::Module()->get([
- 'output' => ['id'],
- 'filter' => ['status' => MODULE_STATUS_ENABLED],
- 'preservekeys' => true
+ $data['modules'] = [];
+
+ $db_modules = API::Module()->get([
+ 'output' => ['moduleid', 'relative_path', 'status']
]);
+ if ($db_modules) {
+ $module_manager = new CModuleManager(APP::getRootDir());
+
+ foreach ($db_modules as $db_module) {
+ $manifest = $module_manager->addModule($db_module['relative_path']);
+
+ if ($manifest !== null) {
+ $data['modules'][$db_module['moduleid']] = $manifest['name'];
+ }
+ }
+ }
+
+ natcasesort($data['modules']);
+
+ $disabled_modules = array_filter($db_modules,
+ static function(array $db_module): bool {
+ return $db_module['status'] == MODULE_STATUS_DISABLED;
+ }
+ );
+
+ $data['disabled_moduleids'] = array_column($disabled_modules, 'moduleid', 'moduleid');
+
$data['mediatypes'] = API::MediaType()->get([
'output' => ['status'],
'preservekeys' => true
diff --git a/ui/app/controllers/CControllerUserroleEdit.php b/ui/app/controllers/CControllerUserroleEdit.php
index f18e80d3c09..bc4f96d72f3 100644
--- a/ui/app/controllers/CControllerUserroleEdit.php
+++ b/ui/app/controllers/CControllerUserroleEdit.php
@@ -180,7 +180,19 @@ class CControllerUserroleEdit extends CControllerUserroleEditGeneral {
];
}
- $data['labels'] = $this->getLabels();
+ $db_modules = API::Module()->get([
+ 'output' => ['moduleid', 'relative_path', 'status']
+ ]);
+
+ $disabled_modules = array_filter($db_modules,
+ static function(array $db_module): bool {
+ return $db_module['status'] == MODULE_STATUS_DISABLED;
+ }
+ );
+
+ $data['disabled_moduleids'] = array_column($disabled_modules, 'moduleid', 'moduleid');
+
+ $data['labels'] = $this->getLabels($db_modules);
$data['rules']['service_read_list'] = API::Service()->get([
'output' => ['serviceid', 'name'],
@@ -291,10 +303,7 @@ class CControllerUserroleEdit extends CControllerUserroleEditGeneral {
return $data;
}
- /**
- * @throws APIException
- */
- private function getLabels(): array {
+ private function getLabels(array $db_modules): array {
$labels = [
'sections' => CRoleHelper::getUiSectionsLabels(USER_TYPE_SUPER_ADMIN),
'actions' => CRoleHelper::getActionsLabels(USER_TYPE_SUPER_ADMIN)
@@ -304,23 +313,21 @@ class CControllerUserroleEdit extends CControllerUserroleEditGeneral {
$labels['rules'][$section] = CRoleHelper::getUiSectionRulesLabels($section, USER_TYPE_SUPER_ADMIN);
}
- $db_modules = API::Module()->get([
- 'output' => ['moduleid', 'relative_path'],
- 'filter' => [
- 'status' => MODULE_STATUS_ENABLED
- ]
- ]);
+ $labels['modules'] = [];
if ($db_modules) {
- $module_manager = new CModuleManager(APP::ModuleManager()->getModulesDir());
- foreach ($db_modules as $module) {
- $manifest = $module_manager->addModule($module['relative_path']);
- $labels['modules'][$module['moduleid']] = $manifest['name'];
+ $module_manager = new CModuleManager(APP::getRootDir());
+
+ foreach ($db_modules as $db_module) {
+ $manifest = $module_manager->addModule($db_module['relative_path']);
+
+ if ($manifest !== null) {
+ $labels['modules'][$db_module['moduleid']] = $manifest['name'];
+ }
}
}
- else {
- $labels['modules'] = [];
- }
+
+ natcasesort($labels['modules']);
return $labels;
}
diff --git a/ui/app/controllers/CControllerUserroleEditGeneral.php b/ui/app/controllers/CControllerUserroleEditGeneral.php
index 5abbc45d05d..e5a5a9479f1 100644
--- a/ui/app/controllers/CControllerUserroleEditGeneral.php
+++ b/ui/app/controllers/CControllerUserroleEditGeneral.php
@@ -97,10 +97,8 @@ abstract class CControllerUserroleEditGeneral extends CController {
*/
private function getModuleSectionRules(): array {
$db_modules = API::Module()->get([
- 'output' => ['moduleid'],
- 'filter' => [
- 'status' => MODULE_STATUS_ENABLED
- ]
+ 'output' => [],
+ 'preservekeys' => true
]);
$modules = $this->getInput('modules', []);
@@ -113,7 +111,7 @@ abstract class CControllerUserroleEditGeneral extends CController {
'status' => $modules[$moduleid]
];
},
- array_column($db_modules, 'moduleid')
+ array_keys($db_modules)
),
'modules.default_access' => $this->getInput('modules_default_access')
];
diff --git a/ui/app/controllers/CControllerWidget.php b/ui/app/controllers/CControllerWidget.php
deleted file mode 100644
index 2c9404ed442..00000000000
--- a/ui/app/controllers/CControllerWidget.php
+++ /dev/null
@@ -1,148 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Class containing methods for operations with widgets.
- */
-abstract class CControllerWidget extends CController {
-
- /**
- * @var int $type Widget type WIDGET_*.
- */
- private $type;
-
- /**
- * @var array $validation_rules Validation rules for input parameters.
- */
- private $validation_rules = [];
-
- /**
- * @var object $form CWidgetForm object.
- */
- private $form;
-
- /**
- * Initialization function.
- */
- protected function init() {
- $this->setPostContentType(self::POST_CONTENT_TYPE_JSON);
- }
-
- /**
- * Check user permissions.
- *
- * @return bool
- */
- protected function checkPermissions() {
- return ($this->getUserType() >= USER_TYPE_ZABBIX_USER);
- }
-
- /**
- * Set widget type.
- *
- * @param int $type Widget type WIDGET_*.
- *
- * @return object
- */
- protected function setType($type) {
- $this->type = $type;
-
- return $this;
- }
-
- protected function getContext(): string {
- return $this->hasInput('templateid')
- ? CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- : CWidgetConfig::CONTEXT_DASHBOARD;
- }
-
- /**
- * Set validation rules for input parameters.
- *
- * @param array $validation_rules Validation rules for input parameters.
- *
- * @return object
- */
- protected function setValidationRules(array $validation_rules) {
- $this->validation_rules = $validation_rules;
-
- return $this;
- }
-
- /**
- * Returns default widget name.
- *
- * @return string
- */
- protected function getDefaultName() {
- return CWidgetConfig::getKnownWidgetTypes($this->getContext())[$this->type];
- }
-
- /**
- * Validate input parameters.
- *
- * @return bool
- */
- protected function checkInput() {
- $validation_rules = $this->validation_rules;
-
- if (CWidgetConfig::isWidgetTypeSupportedInContext($this->type, CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD)) {
- $validation_rules['templateid'] = 'db dashboard.templateid';
- }
-
- $ret = $this->validateInput($validation_rules);
-
- if ($ret) {
- $this->form = CWidgetConfig::getForm($this->type, $this->getInput('fields', '{}'),
- $this->hasInput('templateid') ? $this->getInput('templateid') : null
- );
-
- if ($errors = $this->form->validate()) {
- foreach ($errors as $error) {
- error($error);
- }
-
- $ret = false;
- }
- }
-
- if (!$ret) {
- $this->setResponse(
- (new CControllerResponseData(['main_block' => json_encode([
- 'error' => [
- 'messages' => array_column(get_and_clear_messages(), 'message')
- ]
- ])]))->disableView()
- );
- }
-
- return $ret;
- }
-
- /**
- * Returns form object.
- *
- * @return object
- */
- protected function getForm() {
- return $this->form;
- }
-}
diff --git a/ui/app/controllers/CControllerWidgetIterator.php b/ui/app/controllers/CControllerWidgetIterator.php
index 5ac5b1169cb..4dde652dd62 100644
--- a/ui/app/controllers/CControllerWidgetIterator.php
+++ b/ui/app/controllers/CControllerWidgetIterator.php
@@ -22,50 +22,28 @@
/**
* Class containing methods for operations with widget iterators.
*/
-abstract class CControllerWidgetIterator extends CControllerWidget {
+abstract class CControllerWidgetIterator extends CControllerDashboardWidgetView {
- /**
- * @var array $iterator_validation_rules Validation rules for input parameters of the iterator.
- */
- private static $iterator_validation_rules = [
- 'page' => 'required|ge 1'
- ];
+ protected function init(): void {
+ parent::init();
- public function __construct() {
- parent::__construct();
-
- $this->setValidationRules(self::$iterator_validation_rules);
- }
-
- /**
- * Set validation rules for input parameters.
- *
- * @param array $validation_rules Validation rules for input parameters.
- *
- * @return object
- */
- protected function setValidationRules(array $validation_rules) {
- return parent::setValidationRules(array_merge(self::$iterator_validation_rules, $validation_rules));
+ $this->addValidationRules([
+ 'page' => 'required|ge 1'
+ ]);
}
/**
* Get realistic page number for given number of child widgets.
- *
- * @param int $num_widgets Number of child widgets.
- *
- * @return int Page number.
*/
- protected function getIteratorPage($num_widgets) {
+ protected function getIteratorPage(int $num_widgets): int {
return max(1, min((int) $this->getInput('page'), $this->getIteratorPageCount($num_widgets)));
}
/**
* Get number of child widgets to show on a single page.
- *
- * @return int Number of child widgets.
*/
- protected function getIteratorPageSize() {
- $fields_data = $this->getForm()->getFieldsData();
+ protected function getIteratorPageSize(): int {
+ $fields_data = $this->getForm()->getFieldsValues();
return min($fields_data['rows'] * $fields_data['columns'],
floor(DASHBOARD_MAX_COLUMNS * DASHBOARD_WIDGET_MAX_ROWS / DASHBOARD_WIDGET_MIN_ROWS)
@@ -74,12 +52,8 @@ abstract class CControllerWidgetIterator extends CControllerWidget {
/**
* Get number of pages for given number of child widgets.
- *
- * @param int $num_widgets Number of child widgets.
- *
- * @return int Number of pages.
*/
- protected function getIteratorPageCount($num_widgets) {
+ protected function getIteratorPageCount(int $num_widgets): int {
return (floor(max(0, $num_widgets - 1) / $this->getIteratorPageSize()) + 1);
}
}
diff --git a/ui/app/controllers/CControllerWidgetProblemsBySvView.php b/ui/app/controllers/CControllerWidgetProblemsBySvView.php
deleted file mode 100644
index 0478bd98a75..00000000000
--- a/ui/app/controllers/CControllerWidgetProblemsBySvView.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
-
-class CControllerWidgetProblemsBySvView extends CControllerWidget {
-
- public function __construct() {
- parent::__construct();
-
- $this->setType(WIDGET_PROBLEMS_BY_SV);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
- 'initial_load' => 'in 0,1'
- ]);
- }
-
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
-
- $filter = [
- 'groupids' => getSubGroups($fields['groupids']),
- 'exclude_groupids' => getSubGroups($fields['exclude_groupids']),
- 'hostids' => $fields['hostids'],
- 'problem' => $fields['problem'],
- 'severities' => $fields['severities'],
- 'show_type' => $fields['show_type'],
- 'layout' => $fields['layout'],
- 'show_suppressed' => $fields['show_suppressed'],
- 'hide_empty_groups' => $fields['hide_empty_groups'],
- 'show_opdata' => $fields['show_opdata'],
- 'ext_ack' => $fields['ext_ack'],
- 'show_timeline' => $fields['show_timeline'],
- 'evaltype' => $fields['evaltype'],
- 'tags' => $fields['tags']
- ];
-
- $data = getSystemStatusData($filter);
-
- if ($filter['show_type'] == WIDGET_PROBLEMS_BY_SV_SHOW_TOTALS) {
- $data['groups'] = getSystemStatusTotals($data);
- }
-
- $this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
- 'initial_load' => (bool) $this->getInput('initial_load', 0),
- 'data' => $data,
- 'filter' => $filter,
- 'user' => [
- 'debug_mode' => $this->getDebugMode()
- ],
- 'allowed' => $data['allowed']
- ]));
- }
-}
diff --git a/ui/app/controllers/CControllerWidgetSvgGraphView.php b/ui/app/controllers/CControllerWidgetSvgGraphView.php
deleted file mode 100644
index 50913d4110a..00000000000
--- a/ui/app/controllers/CControllerWidgetSvgGraphView.php
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
-
-class CControllerWidgetSvgGraphView extends CControllerWidget {
-
- const GRAPH_WIDTH_MIN = 1;
- const GRAPH_WIDTH_MAX = 65535;
- const GRAPH_HEIGHT_MIN = 1;
- const GRAPH_HEIGHT_MAX = 65535;
-
- public function __construct() {
- parent::__construct();
-
- $this->setType(WIDGET_SVG_GRAPH);
- $this->setValidationRules([
- 'name' => 'string',
- 'edit_mode' => 'in 0,1',
- 'content_width' => 'int32|ge '.self::GRAPH_WIDTH_MIN.'|le '.self::GRAPH_WIDTH_MAX,
- 'content_height' => 'int32|ge '.self::GRAPH_HEIGHT_MIN.'|le '.self::GRAPH_HEIGHT_MAX,
- 'preview' => 'in 1',
- 'from' => 'string',
- 'to' => 'string',
- 'fields' => 'json'
- ]);
- }
-
- protected function doAction(): void {
- $fields = $this->getForm()->getFieldsData();
- $edit_mode = $this->getInput('edit_mode', 0);
- $width = (int) $this->getInput('content_width', self::GRAPH_WIDTH_MIN);
- $height = (int) $this->getInput('content_height', self::GRAPH_HEIGHT_MIN);
- $preview = (bool) $this->getInput('preview', 0); // Configuration preview.
-
- $dashboard_time = !CWidgetFormSvgGraph::hasOverrideTime($fields);
-
- if ($dashboard_time && !$preview) {
- $from = $this->getInput('from');
- $to = $this->getInput('to');
- }
- else {
- $from = $fields['time_from'];
- $to = $fields['time_to'];
- }
-
- $range_time_parser = new CRangeTimeParser();
-
- $range_time_parser->parse($from);
- $time_from = $range_time_parser->getDateTime(true)->getTimestamp();
-
- $range_time_parser->parse($to);
- $time_to = $range_time_parser->getDateTime(false)->getTimestamp();
-
- $parser = new CNumberParser(['with_size_suffix' => true, 'with_time_suffix' => true]);
-
- $percentile_left_value = $parser->parse($fields['percentile_left_value']) == CParser::PARSE_SUCCESS
- ? $parser->calcValue()
- : null;
-
- $percentile_right_value = $parser->parse($fields['percentile_right_value']) == CParser::PARSE_SUCCESS
- ? $parser->calcValue()
- : null;
-
- $lefty_min = $parser->parse($fields['lefty_min']) == CParser::PARSE_SUCCESS ? $parser->calcValue() : null;
- $lefty_max = $parser->parse($fields['lefty_max']) == CParser::PARSE_SUCCESS ? $parser->calcValue() : null;
- $righty_min = $parser->parse($fields['righty_min']) == CParser::PARSE_SUCCESS ? $parser->calcValue() : null;
- $righty_max = $parser->parse($fields['righty_max']) == CParser::PARSE_SUCCESS ? $parser->calcValue() : null;
-
- $graph_data = [
- 'data_sets' => array_values($fields['ds']),
- 'data_source' => $fields['source'],
- 'dashboard_time' => $dashboard_time,
- 'displaying' => [
- 'show_simple_triggers' => $fields['simple_triggers'] == SVG_GRAPH_SIMPLE_TRIGGERS_ON,
- 'show_working_time' => $fields['working_time'] == SVG_GRAPH_WORKING_TIME_ON,
- 'show_percentile_left' => $fields['percentile_left'] == SVG_GRAPH_PERCENTILE_LEFT_ON,
- 'percentile_left_value' => $percentile_left_value,
- 'show_percentile_right' => $fields['percentile_right'] == SVG_GRAPH_PERCENTILE_RIGHT_ON,
- 'percentile_right_value' => $percentile_right_value
- ],
- 'time_period' => [
- 'time_from' => $time_from,
- 'time_to' => $time_to
- ],
- 'axes' => [
- 'show_left_y_axis' => $fields['lefty'] == SVG_GRAPH_AXIS_SHOW,
- 'left_y_min' => $lefty_min,
- 'left_y_max' => $lefty_max,
- 'left_y_units' => $fields['lefty_units'] == SVG_GRAPH_AXIS_UNITS_STATIC
- ? $fields['lefty_static_units']
- : null,
- 'show_right_y_axis' => $fields['righty'] == SVG_GRAPH_AXIS_SHOW,
- 'right_y_min' => $righty_min,
- 'right_y_max' => $righty_max,
- 'right_y_units' => $fields['righty_units'] == SVG_GRAPH_AXIS_UNITS_STATIC
- ? $fields['righty_static_units']
- : null,
- 'show_x_axis' => $fields['axisx'] == SVG_GRAPH_AXIS_SHOW
- ],
- 'legend' => [
- 'show_legend' => $fields['legend'] == SVG_GRAPH_LEGEND_ON,
- 'legend_columns' => $fields['legend_columns'],
- 'legend_lines' => $fields['legend_lines'],
- 'legend_statistic' => $fields['legend_statistic']
- ],
- 'problems' => [
- 'show_problems' => $fields['show_problems'] == SVG_GRAPH_PROBLEMS_SHOW,
- 'graph_item_problems' => $fields['graph_item_problems'] == SVG_GRAPH_SELECTED_ITEM_PROBLEMS,
- 'problemhosts' => $fields['problemhosts'],
- 'severities' => $fields['severities'],
- 'problem_name' => $fields['problem_name'],
- 'evaltype' => $fields['evaltype'],
- 'tags' => $fields['tags']
- ],
- 'overrides' => array_values($fields['or'])
- ];
-
- $svg_options = CSvgGraphHelper::get($graph_data, $width, $height);
- if ($svg_options['errors']) {
- error($svg_options['errors']);
- }
-
- if (!$preview) {
- $svg_options['data'] = zbx_array_merge($svg_options['data'], [
- 'sbox' => $graph_data['dashboard_time'] && !$edit_mode,
- 'show_problems' => $graph_data['problems']['show_problems'],
- 'show_simple_triggers' => $graph_data['displaying']['show_simple_triggers'],
- 'time_from' => $graph_data['time_period']['time_from'],
- 'hint_max_rows' => ZBX_WIDGET_ROWS
- ]);
- }
-
- $this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
- 'svg' => $svg_options['svg'].$svg_options['legend'],
- 'svg_options' => $svg_options,
- 'preview' => $preview,
- 'info' => self::makeWidgetInfo($fields),
- 'user' => [
- 'debug_mode' => $this->getDebugMode()
- ]
- ]));
- }
-
- /**
- * Make widget specific info to show in widget's header.
- *
- * @param array $fields
- *
- * @return array
- */
- private static function makeWidgetInfo(array $fields) {
- $info = [];
-
- if (CWidgetFormSvgGraph::hasOverrideTime($fields)) {
- $info[] = [
- 'icon' => 'btn-info-clock',
- 'hint' => relativeDateToText($fields['time_from'], $fields['time_to'])
- ];
- }
-
- return $info;
- }
-}
diff --git a/ui/app/controllers/CControllerWidgetTrigOverView.php b/ui/app/controllers/CControllerWidgetTrigOverView.php
deleted file mode 100644
index bd2a6590536..00000000000
--- a/ui/app/controllers/CControllerWidgetTrigOverView.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CControllerWidgetTrigOverView extends CControllerWidget {
-
- public function __construct() {
- parent::__construct();
-
- $this->setType(WIDGET_TRIG_OVER);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
- 'initial_load' => 'in 0,1'
- ]);
- }
-
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
-
- $data = [
- 'name' => $this->getInput('name', $this->getDefaultName()),
- 'initial_load' => (bool) $this->getInput('initial_load', 0),
- 'style' => $fields['style'],
- 'user' => [
- 'debug_mode' => $this->getDebugMode()
- ]
- ];
-
- $trigger_options = [
- 'skipDependent' => ($fields['show'] == TRIGGERS_OPTION_ALL) ? null : true,
- 'only_true' => ($fields['show'] == TRIGGERS_OPTION_RECENT_PROBLEM) ? true : null,
- 'filter' => [
- 'value' => ($fields['show'] == TRIGGERS_OPTION_IN_PROBLEM) ? TRIGGER_VALUE_TRUE : null
- ]
- ];
-
- $problem_options = [
- 'show_suppressed' => $fields['show_suppressed'],
- 'show_recent' => ($fields['show'] == TRIGGERS_OPTION_RECENT_PROBLEM) ? true : null,
- 'tags' => (array_key_exists('tags', $fields) && $fields['tags']) ? $fields['tags'] : null,
- 'evaltype' => array_key_exists('evaltype', $fields) ? $fields['evaltype'] : TAG_EVAL_TYPE_AND_OR
- ];
-
- $host_options = [
- 'hostids' => $fields['hostids'] ? $fields['hostids'] : null
- ];
-
- [$data['db_hosts'], $data['db_triggers'], $data['dependencies'], $data['triggers_by_name'],
- $data['hosts_by_name'], $data['exceeded_limit']
- ] = getTriggersOverviewData(getSubGroups($fields['groupids']), $host_options, $trigger_options, $problem_options
- );
-
- $this->setResponse(new CControllerResponseData($data));
- }
-}
diff --git a/ui/app/partials/configuration.hostgroup.edit.html.php b/ui/app/partials/configuration.hostgroup.edit.html.php
index a2f87f6e3b7..c74febd3b3d 100644
--- a/ui/app/partials/configuration.hostgroup.edit.html.php
+++ b/ui/app/partials/configuration.hostgroup.edit.html.php
@@ -27,7 +27,7 @@
$form = (new CForm())
->setId('hostgroupForm')
->setName('hostgroupForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('groupid', $data['groupid'])
->addItem((new CInput('submit', null))->addStyle('display: none;'));
diff --git a/ui/app/partials/configuration.templategroup.edit.html.php b/ui/app/partials/configuration.templategroup.edit.html.php
index fb51ba8ae3a..105b525f78d 100644
--- a/ui/app/partials/configuration.templategroup.edit.html.php
+++ b/ui/app/partials/configuration.templategroup.edit.html.php
@@ -27,7 +27,7 @@
$form = (new CForm())
->setId('templategroupForm')
->setName('templategroupForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('groupid', $data['groupid'])
->addItem((new CInput('submit'))->addStyle('display: none;'));
diff --git a/ui/app/partials/layout.htmlpage.header.php b/ui/app/partials/layout.htmlpage.header.php
index 5a343ccc248..fd124e61b49 100644
--- a/ui/app/partials/layout.htmlpage.header.php
+++ b/ui/app/partials/layout.htmlpage.header.php
@@ -26,7 +26,6 @@
global $DB, $ZBX_SERVER_NAME;
-$theme = ZBX_DEFAULT_THEME;
$scripts = $data['javascript']['files'];
$page_title = $data['page']['title'];
@@ -34,12 +33,11 @@ if (isset($ZBX_SERVER_NAME) && $ZBX_SERVER_NAME !== '') {
$page_title = $ZBX_SERVER_NAME.NAME_DELIMITER.$page_title;
}
-$pageHeader = new CPageHeader($page_title, CWebUser::getLang());
+$page_header = new CHtmlPageHeader($page_title, CWebUser::getLang());
if (!empty($DB['DB'])) {
- $theme = getUserTheme($data['user']);
-
- $pageHeader
+ $page_header
+ ->setTheme(getUserTheme($data['user']))
->addStyle(getTriggerSeverityCss())
->addStyle(getTriggerStatusCss());
@@ -50,16 +48,28 @@ if (!empty($DB['DB'])) {
}
// Show GUI messages in pages with menus and in kiosk mode.
-$show_gui_messaging = (!defined('ZBX_PAGE_NO_MENU') || $data['web_layout_mode'] == ZBX_LAYOUT_KIOSKMODE)
- ? intval(!CWebUser::isGuest())
+$show_gui_messaging = !defined('ZBX_PAGE_NO_MENU') || $data['web_layout_mode'] == ZBX_LAYOUT_KIOSKMODE
+ ? (int)!CWebUser::isGuest()
: null;
-$pageHeader
- ->addCssFile('assets/styles/'.CHtml::encode($theme).'.css')
- ->addJsBeforeScripts(
- 'var PHP_TZ_OFFSET = '.date('Z').','.
- 'PHP_ZBX_FULL_DATE_TIME = "'.ZBX_FULL_DATE_TIME.'";'
- )
+$modules_assets = APP::ModuleManager()->getAssets();
+
+$page_header->addCssFile('assets/styles/'.$page_header->getTheme().'.css');
+
+foreach ($modules_assets as $module_id => $assets) {
+ $module = APP::ModuleManager()->getModule($module_id);
+ $relative_path = $module->getRelativePath().'/assets/css';
+
+ foreach ($assets['css'] as $css_file) {
+ $page_header->addCssFile((new CUrl($relative_path.'/'.$css_file))->getUrl());
+ }
+}
+
+$page_header
+ ->addJavaScript('
+ const PHP_TZ_OFFSET = '.date('Z').';
+ const PHP_ZBX_FULL_DATE_TIME = "'.ZBX_FULL_DATE_TIME.'";
+ ')
->addJsFile((new CUrl('js/browsers.js'))->getUrl())
->addJsFile((new CUrl('jsLoader.php'))
->setArgument('lang', $data['user']['lang'])
@@ -69,18 +79,35 @@ $pageHeader
);
foreach ($data['stylesheet']['files'] as $css_file) {
- $pageHeader->addCssFile($css_file);
+ $page_header->addCssFile($css_file);
}
if ($scripts) {
- $pageHeader->addJsFile((new CUrl('jsLoader.php'))
- ->setArgument('ver', ZABBIX_VERSION)
- ->setArgument('lang', $data['user']['lang'])
- ->setArgument('files', $scripts)
- ->getUrl()
+ $page_header->addJsFile(
+ (new CUrl('jsLoader.php'))
+ ->setArgument('ver', ZABBIX_VERSION)
+ ->setArgument('lang', $data['user']['lang'])
+ ->setArgument('files', $scripts)
+ ->getUrl()
);
+
+ $page_header->addJavaScript('if (locale === undefined) { var locale = {}; }');
+
+ foreach ($modules_assets as $module_id => $assets) {
+ $module = APP::ModuleManager()->getModule($module_id);
+ $relative_path = $module->getRelativePath().'/assets/js';
+ $translation_strings = $module->getTranslationStrings();
+
+ foreach ($assets['js'] as $js_file) {
+ $page_header->addJsFile((new CUrl($relative_path.'/'.$js_file))->getUrl());
+
+ if (array_key_exists($js_file, $translation_strings)) {
+ $page_header->addJsTranslationStrings($translation_strings[$js_file]);
+ }
+ }
+ }
}
-$pageHeader->display();
+$page_header->show();
echo '<body>';
diff --git a/ui/app/partials/monitoring.host.filter.php b/ui/app/partials/monitoring.host.filter.php
index 7be78a4a4c8..b98d3db60b6 100644
--- a/ui/app/partials/monitoring.host.filter.php
+++ b/ui/app/partials/monitoring.host.filter.php
@@ -181,12 +181,12 @@ if (array_key_exists('render_html', $data)) {
return;
}
-(new CScriptTemplate('filter-monitoring-hosts'))
+(new CTemplateTag('filter-monitoring-hosts'))
->setAttribute('data-template', 'monitoring.host.filter')
->addItem($template)
->show();
-(new CScriptTemplate('filter-tag-row-tmpl'))
+(new CTemplateTag('filter-tag-row-tmpl'))
->addItem(
(new CRow([
(new CTextBox('tags[#{rowNum}][tag]', '#{tag}'))
diff --git a/ui/app/partials/monitoring.latest.filter.php b/ui/app/partials/monitoring.latest.filter.php
index e411a032f8b..370dcd4ec2c 100644
--- a/ui/app/partials/monitoring.latest.filter.php
+++ b/ui/app/partials/monitoring.latest.filter.php
@@ -220,12 +220,12 @@ if (array_key_exists('render_html', $data)) {
return;
}
-(new CScriptTemplate('filter-monitoring-latest'))
+(new CTemplateTag('filter-monitoring-latest'))
->setAttribute('data-template', 'monitoring.latest.filter')
->addItem($template)
->show();
-(new CScriptTemplate('filter-tag-row-tmpl'))
+(new CTemplateTag('filter-tag-row-tmpl'))
->addItem(
(new CRow([
(new CTextBox('tags[#{rowNum}][tag]', '#{tag}'))
diff --git a/ui/app/partials/monitoring.problem.filter.php b/ui/app/partials/monitoring.problem.filter.php
index e152c1ecdf9..16e3e4daef2 100644
--- a/ui/app/partials/monitoring.problem.filter.php
+++ b/ui/app/partials/monitoring.problem.filter.php
@@ -271,7 +271,7 @@ $right_column = (new CFormList())
(new CDiv([
(new CLabel(_('Show timeline'), 'show_timeline_#{uniqid}'))->addClass(ZBX_STYLE_SECOND_COLUMN_LABEL),
(new CCheckBox('show_timeline'))
- ->setChecked($data['show_timeline'] == 1)
+ ->setChecked($data['show_timeline'] == ZBX_TIMELINE_ON)
->setEnabled($data['compact_view'] == 0)
->setUncheckedValue(0)
->setId('show_timeline_#{uniqid}')
@@ -326,12 +326,12 @@ if (array_key_exists('render_html', $data)) {
return;
}
-(new CScriptTemplate('filter-monitoring-problem'))
+(new CTemplateTag('filter-monitoring-problem'))
->setAttribute('data-template', 'monitoring.problem.filter')
->addItem($template)
->show();
-(new CScriptTemplate('filter-inventory-row'))
+(new CTemplateTag('filter-inventory-row'))
->addItem(
(new CRow([
(new CSelect('inventory[#{rowNum}][field]'))
@@ -349,7 +349,7 @@ if (array_key_exists('render_html', $data)) {
)
->show();
-(new CScriptTemplate('filter-tag-row-tmpl'))
+(new CTemplateTag('filter-tag-row-tmpl'))
->addItem(
(new CRow([
(new CTextBox('tags[#{rowNum}][tag]', '#{tag}'))
diff --git a/ui/app/views/administration.audit.settings.edit.php b/ui/app/views/administration.audit.settings.edit.php
index 687a178cf9a..a3839c367a2 100644
--- a/ui/app/views/administration.audit.settings.edit.php
+++ b/ui/app/views/administration.audit.settings.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.audit.settings.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Audit log'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_AUDITLOG_EDIT));
@@ -36,7 +36,7 @@ $form = (new CForm())
->setArgument('action', 'audit.settings.update')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
$audit_settings_tab = (new CFormGrid())
->addItem([
@@ -66,6 +66,6 @@ $form->addItem(
))
);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/administration.authentication.edit.php b/ui/app/views/administration.authentication.edit.php
index fa4966f40cc..b8261f12705 100644
--- a/ui/app/views/administration.authentication.edit.php
+++ b/ui/app/views/administration.authentication.edit.php
@@ -335,14 +335,14 @@ $saml_tab = (new CFormGrid())
)
]);
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Authentication'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_AUTHENTICATION_EDIT))
->addItem((new CForm())
->addVar('action', $data['action_submit'])
->addVar('ldap_removed_userdirectoryids', $data['ldap_removed_userdirectoryids'])
->setId('authentication-form')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->disablePasswordAutofill()
->addItem((new CTabView())
->setSelected($data['form_refresh'] ? null : 0)
@@ -358,7 +358,7 @@ $saml_tab = (new CFormGrid())
->show();
(new CScriptTag(
- 'view.init('. json_encode([
+ 'view.init('.json_encode([
'ldap_servers' => $data['ldap_servers'],
'ldap_default_row_index' => $data['ldap_default_row_index'],
'db_authentication_type' => $data['db_authentication_type']
diff --git a/ui/app/views/administration.autoreg.edit.php b/ui/app/views/administration.autoreg.edit.php
index 8d4d1563356..dcf0fa249e2 100644
--- a/ui/app/views/administration.autoreg.edit.php
+++ b/ui/app/views/administration.autoreg.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.autoreg.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Autoregistration'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_AUTOREG_EDIT));
@@ -37,7 +37,7 @@ $autoreg_form = (new CForm())
->setArgument('action', 'autoreg.edit')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('tls_accept', $data['tls_accept']);
$autoreg_tab = (new CFormList())
@@ -92,6 +92,6 @@ $autoreg_view = (new CTabView())
$autoreg_form->addItem($autoreg_view);
-$widget
+$html_page
->addItem($autoreg_form)
->show();
diff --git a/ui/app/views/administration.geomaps.edit.php b/ui/app/views/administration.geomaps.edit.php
index 458040020e4..aefa0dde59e 100644
--- a/ui/app/views/administration.geomaps.edit.php
+++ b/ui/app/views/administration.geomaps.edit.php
@@ -114,7 +114,7 @@ $form = (new CForm())
->setArgument('action', 'geomaps.update')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addItem(
(new CTabView())
->addTab('geomaps_tab', _('Geographical maps'), $form_grid)
@@ -123,7 +123,7 @@ $form = (new CForm())
))
);
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Geographical maps'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_GEOMAPS_EDIT))
@@ -131,7 +131,7 @@ $form = (new CForm())
->show();
(new CScriptTag(
- 'view.init('. json_encode([
+ 'view.init('.json_encode([
'tile_providers' => $data['tile_providers']
]).');'
))
diff --git a/ui/app/views/administration.gui.edit.php b/ui/app/views/administration.gui.edit.php
index e0f9dc6e495..8a53e919ee0 100644
--- a/ui/app/views/administration.gui.edit.php
+++ b/ui/app/views/administration.gui.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.gui.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('GUI'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_GUI_EDIT));
@@ -149,13 +149,13 @@ $gui_view = (new CTabView())
));
$form = (new CForm())
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->setAction((new CUrl('zabbix.php'))
->setArgument('action', 'gui.update')
->getUrl()
)
->addItem($gui_view);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/administration.housekeeping.edit.php b/ui/app/views/administration.housekeeping.edit.php
index 12dcf91afab..0fc45fc2462 100644
--- a/ui/app/views/administration.housekeeping.edit.php
+++ b/ui/app/views/administration.housekeeping.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.housekeeping.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Housekeeping'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_HOUSEKEEPING_EDIT));
@@ -35,7 +35,7 @@ $form = (new CForm())
->setArgument('action', 'housekeeping.update')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
$house_keeper_tab = (new CFormList())
->addRow((new CTag('h4', true, _('Events and alerts')))->addClass('input-section-header'))
@@ -267,6 +267,6 @@ $form->addItem(
))
);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/administration.iconmap.edit.php b/ui/app/views/administration.iconmap.edit.php
index a629a7fbe42..9ca537f5552 100644
--- a/ui/app/views/administration.iconmap.edit.php
+++ b/ui/app/views/administration.iconmap.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.iconmap.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Icon mapping'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_ICONMAP_EDIT));
@@ -46,7 +46,7 @@ $form = (new CForm())
->setArgument('action', ($data['iconmapid'] != 0) ? 'iconmap.update' : 'iconmap.create')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', 1);
if ($data['iconmapid'] != 0) {
@@ -162,4 +162,4 @@ else {
$form->addItem($tab);
-$widget->addItem($form)->show();
+$html_page->addItem($form)->show();
diff --git a/ui/app/views/administration.iconmap.list.php b/ui/app/views/administration.iconmap.list.php
index f3aca4fac78..69d978214c7 100644
--- a/ui/app/views/administration.iconmap.list.php
+++ b/ui/app/views/administration.iconmap.list.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Icon mapping'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_ICONMAP_LIST))
@@ -52,4 +52,4 @@ foreach ($data['iconmaps'] as $icon_map) {
), $row]);
}
-$widget->addItem($table)->show();
+$html_page->addItem($table)->show();
diff --git a/ui/app/views/administration.image.edit.php b/ui/app/views/administration.image.edit.php
index 25da1e73c7d..c3c2ba5bd7e 100644
--- a/ui/app/views/administration.image.edit.php
+++ b/ui/app/views/administration.image.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.image.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Images'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_IMAGE_EDIT));
@@ -34,7 +34,7 @@ $form = (new CForm('post', (new CUrl('zabbix.php'))
->setArgument('action', ($data['imageid'] == 0) ? 'image.create' : 'image.update')
->getUrl(), 'multipart/form-data')
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('imagetype', $data['imagetype']);
if ($data['imageid'] != 0) {
@@ -103,4 +103,4 @@ else {
));
}
-$widget->addItem($form->addItem($tab_view))->show();
+$html_page->addItem($form->addItem($tab_view))->show();
diff --git a/ui/app/views/administration.image.list.php b/ui/app/views/administration.image.list.php
index 742da721d01..de68260aa3c 100644
--- a/ui/app/views/administration.image.list.php
+++ b/ui/app/views/administration.image.list.php
@@ -26,7 +26,7 @@
$this->includeJsFile('administration.image.list.js.php');
$page_url = (new CUrl('zabbix.php'))->setArgument('action', 'image.list');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Images'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_IMAGE_LIST))
@@ -72,7 +72,7 @@ $widget = (new CWidget())
);
if (!$data['images']) {
- $widget->addItem(new CTableInfo());
+ $html_page->addItem(new CTableInfo());
}
else {
$image_table = (new CDiv())
@@ -113,14 +113,14 @@ else {
$image_table->addItem($image_row);
}
- $widget->addItem(
+ $html_page->addItem(
(new CForm())->addItem(
(new CTabView())->addTab('image', null, $image_table)
)
);
}
-$widget->show();
+$html_page->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/app/views/administration.macros.edit.php b/ui/app/views/administration.macros.edit.php
index 5b32bcf530c..00136237c58 100644
--- a/ui/app/views/administration.macros.edit.php
+++ b/ui/app/views/administration.macros.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.macros.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Macros'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_MACROS_EDIT));
@@ -103,9 +103,9 @@ $form = (new CForm())
->setName('macrosForm')
->disablePasswordAutofill()
->setAction((new CUrl('zabbix.php'))->setArgument('action', 'macros.update')->getUrl())
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addItem($tab_view);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/administration.mediatype.edit.php b/ui/app/views/administration.mediatype.edit.php
index 560ae0df974..53abc87b13b 100644
--- a/ui/app/views/administration.mediatype.edit.php
+++ b/ui/app/views/administration.mediatype.edit.php
@@ -28,7 +28,7 @@ $this->addJsFile('multilineinput.js');
$this->includeJsFile('administration.mediatype.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Media types'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ALERTS_MEDIATYPE_EDIT));
@@ -45,7 +45,7 @@ $mediaTypeForm = (new CForm())
->addVar('mediatypeid', $data['mediatypeid'])
->addItem((new CVar('status', MEDIA_TYPE_STATUS_DISABLED))->removeId())
->disablePasswordAutofill()
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
// Create form list.
$mediatype_formlist = (new CFormList())
@@ -201,7 +201,7 @@ $row_template = (new CTag('script', true))
]))->addClass('form_row')
);
-$widget->addItem($row_template);
+$html_page->addItem($row_template);
$parameters_table->addRow([(new CButton('parameter_add', _('Add')))
->addClass(ZBX_STYLE_BTN_LINK)
@@ -389,4 +389,4 @@ else {
$mediaTypeForm->addItem($tabs);
// append form to widget
-$widget->addItem($mediaTypeForm)->show();
+$html_page->addItem($mediaTypeForm)->show();
diff --git a/ui/app/views/administration.mediatype.list.php b/ui/app/views/administration.mediatype.list.php
index 31deae8e74a..18c59826cd5 100644
--- a/ui/app/views/administration.mediatype.list.php
+++ b/ui/app/views/administration.mediatype.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('mediatype');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Media types'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ALERTS_MEDIATYPE_LIST))
->setControls((new CTag('nav', true,
@@ -201,4 +201,6 @@ $mediaTypeForm->addItem([
]);
// append form to widget
-$widget->addItem($mediaTypeForm)->show();
+$html_page
+ ->addItem($mediaTypeForm)
+ ->show();
diff --git a/ui/app/views/administration.miscconfig.edit.php b/ui/app/views/administration.miscconfig.edit.php
index d3acc4377fe..5bc136c70f2 100644
--- a/ui/app/views/administration.miscconfig.edit.php
+++ b/ui/app/views/administration.miscconfig.edit.php
@@ -26,7 +26,7 @@
$this->includeJsFile('administration.miscconfig.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Other configuration parameters'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_MISCCONFIG_EDIT));
@@ -189,7 +189,7 @@ $form = (new CForm())
->setArgument('action', 'miscconfig.update')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addItem(
(new CTabView())
->addTab('other', _('Other parameters'), $from_list)
@@ -199,7 +199,7 @@ $form = (new CForm())
))
);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/administration.module.edit.php b/ui/app/views/administration.module.edit.php
index 8b6f3394e79..3a094bf0b3f 100644
--- a/ui/app/views/administration.module.edit.php
+++ b/ui/app/views/administration.module.edit.php
@@ -19,7 +19,12 @@
**/
-$widget = (new CWidget())
+/**
+ * @var CView $this
+ * @var array $data
+ */
+
+$html_page = (new CHtmlPage())
->setTitle(_('Modules'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_MODULE_EDIT))
->setTitleSubmenu(getAdministrationGeneralSubmenu());
@@ -32,7 +37,7 @@ $form = (new CForm())
->setArgument('moduleids[]', $data['moduleid'])
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
// create module tab
$module_tab = (new CFormList())
@@ -70,6 +75,6 @@ $tabs->setFooter(makeFormFooter(
$form->addItem($tabs);
// append form to widget
-$widget->addItem($form);
+$html_page->addItem($form);
-$widget->show();
+$html_page->show();
diff --git a/ui/app/views/administration.module.list.php b/ui/app/views/administration.module.list.php
index 8dec962295e..66d1671fb72 100644
--- a/ui/app/views/administration.module.list.php
+++ b/ui/app/views/administration.module.list.php
@@ -19,11 +19,16 @@
**/
+/**
+ * @var CView $this
+ * @var array $data
+ */
+
if ($data['uncheck']) {
uncheckTableRows('modules');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Modules'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_MODULE_LIST))
@@ -127,6 +132,6 @@ $form->addItem([
]);
// append form to widget
-$widget->addItem($form);
+$html_page->addItem($form);
-$widget->show();
+$html_page->show();
diff --git a/ui/app/views/administration.queue.details.php b/ui/app/views/administration.queue.details.php
index ca7401d07b3..efd243912a5 100644
--- a/ui/app/views/administration.queue.details.php
+++ b/ui/app/views/administration.queue.details.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Queue details'))
->setTitleSubmenu([
'main_section' => [
@@ -75,7 +75,7 @@ if (CWebUser::getRefresh()) {
->show();
}
-$widget
+$html_page
->addItem($table)
->addItem((new CDiv())
->addClass(ZBX_STYLE_TABLE_PAGING)
diff --git a/ui/app/views/administration.queue.overview.php b/ui/app/views/administration.queue.overview.php
index 70f6479f84c..10f70776376 100644
--- a/ui/app/views/administration.queue.overview.php
+++ b/ui/app/views/administration.queue.overview.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Queue overview'))
->setTitleSubmenu([
'main_section' => [
@@ -87,6 +87,6 @@ if (CWebUser::getRefresh()) {
->show();
}
-$widget
+$html_page
->addItem($table)
->show();
diff --git a/ui/app/views/administration.queue.overview.proxy.php b/ui/app/views/administration.queue.overview.proxy.php
index e0bc7d038cd..0d8d286aa89 100644
--- a/ui/app/views/administration.queue.overview.proxy.php
+++ b/ui/app/views/administration.queue.overview.proxy.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Queue overview by proxy'))
->setTitleSubmenu([
'main_section' => [
@@ -87,7 +87,7 @@ if (CWebUser::getRefresh()) {
->show();
}
-$widget
+$html_page
->addItem($table)
->addItem((new CDiv())
->addClass(ZBX_STYLE_TABLE_PAGING)
diff --git a/ui/app/views/administration.regex.edit.php b/ui/app/views/administration.regex.edit.php
index 74bb5612be7..b00a9b5b942 100644
--- a/ui/app/views/administration.regex.edit.php
+++ b/ui/app/views/administration.regex.edit.php
@@ -25,7 +25,7 @@
$this->includeJsFile('administration.regex.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Regular expressions'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_REGEX_EDIT));
@@ -39,7 +39,7 @@ if ($data['regexid'] != 0) {
$form = (new CForm())
->setId('regex')
->setAction($action->getUrl())
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
$table = (new CTable())
->setId('tbl_expr')
@@ -172,6 +172,6 @@ else {
$form->addItem($reg_exp_view);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/administration.regex.list.php b/ui/app/views/administration.regex.list.php
index a018be5308b..0084f79667c 100644
--- a/ui/app/views/administration.regex.list.php
+++ b/ui/app/views/administration.regex.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('regex');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Regular expressions'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_REGEX_LIST))
@@ -82,4 +82,4 @@ $form->addItem([
], 'regex')
]);
-$widget->addItem($form)->show();
+$html_page->addItem($form)->show();
diff --git a/ui/app/views/administration.script.edit.php b/ui/app/views/administration.script.edit.php
index c1e2eb0d08d..4811b6cfc53 100644
--- a/ui/app/views/administration.script.edit.php
+++ b/ui/app/views/administration.script.edit.php
@@ -27,7 +27,7 @@ $this->addJsFile('multilineinput.js');
$this->includeJsFile('administration.script.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Scripts'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ALERTS_SCRIPT_EDIT));
@@ -50,12 +50,12 @@ $row_template = (new CTag('script', true))
]))->addClass('form_row')
);
-$widget->addItem($row_template);
+$html_page->addItem($row_template);
$form = (new CForm())
->setId('script-form')
->setName('scripts')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', 1)
->addVar('scriptid', $data['scriptid']);
@@ -314,4 +314,4 @@ else {
$form->addItem($scriptView);
-$widget->addItem($form)->show();
+$html_page->addItem($form)->show();
diff --git a/ui/app/views/administration.script.list.php b/ui/app/views/administration.script.list.php
index 37efe676307..a720894830d 100644
--- a/ui/app/views/administration.script.list.php
+++ b/ui/app/views/administration.script.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('script');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Scripts'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ALERTS_SCRIPT_LIST))
->setControls((new CTag('nav', true,
@@ -223,6 +223,6 @@ $scriptsForm->addItem([
]);
// append form to widget
-$widget
+$html_page
->addItem($scriptsForm)
->show();
diff --git a/ui/app/views/administration.token.list.php b/ui/app/views/administration.token.list.php
index afeef1cd41f..364997a3475 100644
--- a/ui/app/views/administration.token.list.php
+++ b/ui/app/views/administration.token.list.php
@@ -100,7 +100,7 @@ $filter = (new CFilter())
)
]);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('API tokens'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_TOKEN_LIST))
->setControls(
@@ -210,7 +210,7 @@ $token_form->addItem([
], 'token')
]);
-$widget
+$html_page
->addItem($token_form)
->show();
diff --git a/ui/app/views/administration.trigdisplay.edit.php b/ui/app/views/administration.trigdisplay.edit.php
index 6d41f7d30ed..992e6246f9f 100644
--- a/ui/app/views/administration.trigdisplay.edit.php
+++ b/ui/app/views/administration.trigdisplay.edit.php
@@ -27,7 +27,7 @@ $this->addJsFile('colorpicker.js');
$this->includeJsFile('administration.trigdisplay.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Trigger displaying options'))
->setTitleSubmenu(getAdministrationGeneralSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_TRIGDISPLAY_EDIT));
@@ -156,7 +156,7 @@ $form_list = (new CFormList())
->addInfo(_('Custom severity names affect all locales and require manual translation!'));
$form = (new CForm())
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->setAction((new CUrl('zabbix.php'))
->setArgument('action', 'trigdisplay.update')
->getUrl()
@@ -170,4 +170,4 @@ $form = (new CForm())
))
);
-$widget->addItem($form)->show();
+$html_page->addItem($form)->show();
diff --git a/ui/app/views/administration.user.edit.php b/ui/app/views/administration.user.edit.php
index e6e15ede54b..eae9f85cf28 100644
--- a/ui/app/views/administration.user.edit.php
+++ b/ui/app/views/administration.user.edit.php
@@ -29,7 +29,7 @@ $this->includeJsFile(($data['action'] === 'user.edit')
: 'administration.userprofile.edit.js.php'
);
-$widget = new CWidget();
+$html_page = new CHtmlPage();
if ($data['action'] === 'user.edit') {
$widget_name = _('Users');
@@ -40,13 +40,14 @@ else {
$widget_name .= ($data['name'] !== '' || $data['surname'] !== '')
? $data['name'].' '.$data['surname']
: $data['username'];
- $widget->setTitleSubmenu(getUserSettingsSubmenu());
+ $html_page->setTitleSubmenu(getUserSettingsSubmenu());
$doc_url = CDocHelper::USERS_USERPROFILE_EDIT;
}
-$widget
+$html_page
->setTitle($widget_name)
->setDocUrl(CDocHelper::getUrl($doc_url));
+
$tabs = new CTabView();
if ($data['form_refresh'] == 0) {
@@ -57,7 +58,7 @@ if ($data['form_refresh'] == 0) {
$user_form = (new CForm())
->setId('user-form')
->setName('user_form')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('action', $data['action'])
->addVar('userid', $data['userid']);
@@ -615,11 +616,12 @@ if ($data['action'] === 'user.edit') {
else {
$elements = [];
- foreach ($data['modules'] as $moduleid => $module) {
- $elements[] = (new CSpan($module['id']))->addClass(
- CRoleHelper::checkAccess('modules.module.'.$moduleid, $data['roleid'])
- ? ZBX_STYLE_STATUS_GREEN
- : ZBX_STYLE_STATUS_GREY
+ foreach ($data['modules'] as $moduleid => $module_name) {
+ $elements[] = (new CSpan($module_name))->addClass(
+ array_key_exists($moduleid, $data['disabled_moduleids'])
+ || $data['modules_rules'][$moduleid] == MODULE_STATUS_DISABLED
+ ? ZBX_STYLE_STATUS_GREY
+ : ZBX_STYLE_STATUS_GREEN
);
}
@@ -824,6 +826,6 @@ else {
// Append tab to form.
$user_form->addItem($tabs);
-$widget
+$html_page
->addItem($user_form)
->show();
diff --git a/ui/app/views/administration.user.list.php b/ui/app/views/administration.user.list.php
index 0d534a0fb4d..5d66a4eed16 100644
--- a/ui/app/views/administration.user.list.php
+++ b/ui/app/views/administration.user.list.php
@@ -29,7 +29,7 @@ if ($data['uncheck']) {
uncheckTableRows('user');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Users'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_USER_LIST))
->setControls((new CList([
@@ -253,6 +253,6 @@ $form->addItem([
]);
// Append form to widget.
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/administration.user.token.list.php b/ui/app/views/administration.user.token.list.php
index 481e31648bd..0541adf051a 100644
--- a/ui/app/views/administration.user.token.list.php
+++ b/ui/app/views/administration.user.token.list.php
@@ -66,7 +66,7 @@ $filter = (new CFilter())
)
]);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('API tokens'))
->setTitleSubmenu(getUserSettingsSubmenu())
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_USER_TOKEN_LIST))
@@ -163,7 +163,7 @@ $token_form->addItem([
], 'user.token')
]);
-$widget
+$html_page
->addItem($token_form)
->show();
diff --git a/ui/app/views/administration.usergroup.edit.php b/ui/app/views/administration.usergroup.edit.php
index 5074c3811f8..058e2077f77 100644
--- a/ui/app/views/administration.usergroup.edit.php
+++ b/ui/app/views/administration.usergroup.edit.php
@@ -26,14 +26,14 @@
$this->includeJsFile('administration.usergroup.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('User groups'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_USERGROUP_EDIT));
$form = (new CForm())
->setId('user-group-form')
->setName('user_group_form')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
if ($data['usrgrpid'] != 0) {
$form->addVar('usrgrpid', $data['usrgrpid']);
@@ -347,5 +347,7 @@ else {
// append tab to form
$form->addItem($tabs);
-$widget->addItem($form);
-$widget->show();
+
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/app/views/administration.usergroup.list.php b/ui/app/views/administration.usergroup.list.php
index e3fd2111fd6..352e983ec32 100644
--- a/ui/app/views/administration.usergroup.list.php
+++ b/ui/app/views/administration.usergroup.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('usergroup');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('User groups'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_USERGROUP_LIST))
->setControls(
@@ -240,5 +240,6 @@ $form->addItem([
], 'usergroup')
]);
-$widget->addItem($form);
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/app/views/administration.userrole.edit.php b/ui/app/views/administration.userrole.edit.php
index 8955f1fc8c6..58aa51a6896 100644
--- a/ui/app/views/administration.userrole.edit.php
+++ b/ui/app/views/administration.userrole.edit.php
@@ -26,14 +26,14 @@
$this->includeJsFile('administration.userrole.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('User roles'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_USERROLE_EDIT));
$form = (new CForm())
->setId('userrole-form')
->setName('user_role_form')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
if ($data['roleid'] !== null) {
$form->addVar('roleid', $data['roleid']);
@@ -242,28 +242,31 @@ $form_grid->addItem(
);
$modules = [];
-foreach ($data['labels']['modules'] as $moduleid => $label) {
- $modules[] = new CDiv(
+
+foreach ($data['labels']['modules'] as $moduleid => $module_name) {
+ $module = new CDiv(
(new CCheckBox('modules['.$moduleid.']', 1))
->setChecked(
- array_key_exists($moduleid, $data['rules']['modules']) ? $data['rules']['modules'][$moduleid] : true
+ array_key_exists($moduleid, $data['rules']['modules'])
+ ? $data['rules']['modules'][$moduleid]
+ : !array_key_exists($moduleid, $data['disabled_moduleids'])
)
->setReadonly($data['readonly'])
- ->setLabel($label)
+ ->setLabel($module_name)
->setUncheckedValue(0)
);
+
+ if (array_key_exists($moduleid, $data['disabled_moduleids'])) {
+ $module->addItem((new CSpan([' (', _('Disabled'), ')']))->addClass(ZBX_STYLE_RED));
+ }
+
+ $modules[] = $module;
}
if ($modules) {
- $form_grid->addItem([
- new CFormField(
- (new CDiv(
- (new CDiv($modules))
- ->addClass(ZBX_STYLE_COLUMNS)
- ->addClass(ZBX_STYLE_COLUMNS_3)
- ))->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
- )
- ]);
+ $form_grid->addItem(
+ new CFormField($modules)
+ );
}
else {
$form_grid->addItem(
@@ -403,8 +406,10 @@ $form_grid->addItem(
$tabs = (new CTabView())->addTab('user_role_tab', _('User role'), $form_grid);
$form->addItem((new CTabView())->addTab('user_role_tab', _('User role'), $form_grid));
-$widget->addItem($form);
-$widget->show();
+
+$html_page
+ ->addItem($form)
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/app/views/administration.userrole.list.php b/ui/app/views/administration.userrole.list.php
index 29dd580cd01..d331d0ebb2a 100644
--- a/ui/app/views/administration.userrole.list.php
+++ b/ui/app/views/administration.userrole.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('userrole');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('User roles'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::USERS_USERROLE_LIST))
->setControls(
@@ -130,5 +130,6 @@ $form->addItem([
], 'userrole')
]);
-$widget->addItem($form);
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/app/views/configuration.correlation.edit.php b/ui/app/views/configuration.correlation.edit.php
index 103b4089af3..0fdc1c7add4 100644
--- a/ui/app/views/configuration.correlation.edit.php
+++ b/ui/app/views/configuration.correlation.edit.php
@@ -26,7 +26,7 @@
$this->addJsFile('popup.condition.common.js');
$this->includeJsFile('configuration.correlation.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Event correlation rules'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_CORRELATION_EDIT));
@@ -37,7 +37,7 @@ $form = (new CForm())
->setArgument('action', 'correlation.condition.add')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
if ($data['correlationid'] != 0) {
$form->addVar('correlationid', $data['correlationid']);
@@ -196,6 +196,6 @@ else {
$form->addItem($correlation_tabs);
-$widget->addItem($form);
-
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/app/views/configuration.correlation.list.php b/ui/app/views/configuration.correlation.list.php
index 6c8b6a37d6c..cdcd91514a6 100644
--- a/ui/app/views/configuration.correlation.list.php
+++ b/ui/app/views/configuration.correlation.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('correlation');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Event correlation'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_CORRELATION_LIST))
->setControls(
@@ -148,6 +148,6 @@ $form->addItem([
], 'correlation')
]);
-$widget->addItem($form);
-
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/app/views/configuration.dashboard.edit.php b/ui/app/views/configuration.dashboard.edit.php
index ffade88dad0..e000f6be98c 100644
--- a/ui/app/views/configuration.dashboard.edit.php
+++ b/ui/app/views/configuration.dashboard.edit.php
@@ -30,23 +30,14 @@ $this->addJsFile('class.dashboard.js');
$this->addJsFile('class.dashboard.page.js');
$this->addJsFile('class.dashboard.widget.placeholder.js');
$this->addJsFile('class.widget.js');
+$this->addJsFile('class.widget.inaccessible.js');
$this->addJsFile('class.widget.iterator.js');
-$this->addJsFile('class.widget.clock.js');
-$this->addJsFile('class.widget.graph.js');
-$this->addJsFile('class.widget.graph-prototype.js');
-$this->addJsFile('class.widget.item.js');
-$this->addJsFile('class.widget.map.js');
-$this->addJsFile('class.widget.navtree.js');
$this->addJsFile('class.widget.paste-placeholder.js');
-$this->addJsFile('class.widget.problems.js');
-$this->addJsFile('class.widget.problemsbysv.js');
-$this->addJsFile('class.widget.svggraph.js');
-$this->addJsFile('class.widget.trigerover.js');
$this->addJsFile('class.sortable.js');
$this->includeJsFile('configuration.dashboard.edit.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Dashboards'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::CONFIGURATION_DASHBOARDS_EDIT))
->setControls(
@@ -105,7 +96,7 @@ $dashboard->addItem(
$dashboard->addItem((new CDiv())->addClass(ZBX_STYLE_DASHBOARD_GRID));
-$widget
+$html_page
->addItem($dashboard)
->show();
@@ -113,6 +104,7 @@ $widget
view.init('.json_encode([
'dashboard' => $data['dashboard'],
'widget_defaults' => $data['widget_defaults'],
+ 'widget_last_type' => $data['widget_last_type'],
'time_period' => $data['time_period'],
'page' => $data['page']
]).');
diff --git a/ui/app/views/configuration.dashboard.list.php b/ui/app/views/configuration.dashboard.list.php
index 9cf4790743d..9d761d37a72 100644
--- a/ui/app/views/configuration.dashboard.list.php
+++ b/ui/app/views/configuration.dashboard.list.php
@@ -70,7 +70,7 @@ $form->addItem([
], $checkbox_hash)
]);
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Dashboards'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::CONFIGURATION_DASHBOARDS_LIST))
->setControls(
diff --git a/ui/app/views/configuration.discovery.edit.php b/ui/app/views/configuration.discovery.edit.php
index 71831c0bffd..729b59a626a 100644
--- a/ui/app/views/configuration.discovery.edit.php
+++ b/ui/app/views/configuration.discovery.edit.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.discovery.edit.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Discovery rules'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_DISCOVERY_EDIT));
@@ -33,7 +33,7 @@ $widget = (new CWidget())
$discoveryForm = (new CForm())
->setId('discoveryForm')
->setName('discoveryForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
if (!empty($this->data['druleid'])) {
$discoveryForm->addVar('druleid', $this->data['druleid']);
@@ -174,6 +174,6 @@ else {
$discoveryForm->addItem($discoveryTabs);
-$widget->addItem($discoveryForm);
-
-$widget->show();
+$html_page
+ ->addItem($discoveryForm)
+ ->show();
diff --git a/ui/app/views/configuration.discovery.list.php b/ui/app/views/configuration.discovery.list.php
index 0ac9244e180..d3b247c308b 100644
--- a/ui/app/views/configuration.discovery.list.php
+++ b/ui/app/views/configuration.discovery.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('discovery');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Discovery rules'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_DISCOVERY_LIST))
->setControls(
@@ -121,7 +121,6 @@ $discoveryForm->addItem([
], 'discovery')
]);
-// append form to widget
-$widget->addItem($discoveryForm);
-
-$widget->show();
+$html_page
+ ->addItem($discoveryForm)
+ ->show();
diff --git a/ui/app/views/configuration.host.edit.php b/ui/app/views/configuration.host.edit.php
index 7d336fa09e1..5a0484d69ea 100644
--- a/ui/app/views/configuration.host.edit.php
+++ b/ui/app/views/configuration.host.edit.php
@@ -62,7 +62,7 @@ if ($data['warning']) {
$data['warning'] = null;
}
-(new CWidget())
+(new CHtmlPage())
->setTitle(($data['hostid'] == 0) ? _('New host') : _('Host'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HOST_EDIT))
->addItem(new CPartial('configuration.host.edit.html', $data))
diff --git a/ui/app/views/configuration.host.list.php b/ui/app/views/configuration.host.list.php
index ec2fb854499..cc265e8adb9 100644
--- a/ui/app/views/configuration.host.list.php
+++ b/ui/app/views/configuration.host.list.php
@@ -31,7 +31,7 @@ if ($data['uncheck']) {
uncheckTableRows('hosts');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Hosts'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HOST_LIST))
->setControls((new CTag('nav', true, (new CList())
@@ -166,7 +166,7 @@ $filter = (new CFilter())
])
]);
-$widget->addItem($filter);
+$html_page->addItem($filter);
// table hosts
$form = (new CForm())->setName('hosts');
@@ -545,7 +545,7 @@ $form->addItem([
], 'hosts')
]);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/configuration.hostgroup.edit.php b/ui/app/views/configuration.hostgroup.edit.php
index f8036856dc9..e1131f78201 100644
--- a/ui/app/views/configuration.hostgroup.edit.php
+++ b/ui/app/views/configuration.hostgroup.edit.php
@@ -48,7 +48,7 @@ $data += [
]
];
-(new CWidget())
+(new CHtmlPage())
->setTitle(($data['groupid'] == 0) ? _('New host group') : _('Host group'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HOSTGROUPS_EDIT))
->addItem(new CPartial('configuration.hostgroup.edit.html', $data))
diff --git a/ui/app/views/configuration.hostgroup.list.php b/ui/app/views/configuration.hostgroup.list.php
index 34a6d781ead..969125349a4 100644
--- a/ui/app/views/configuration.hostgroup.list.php
+++ b/ui/app/views/configuration.hostgroup.list.php
@@ -26,7 +26,7 @@
$this->includeJsFile('configuration.hostgroup.list.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Host groups'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HOSTGROUPS_LIST))
->setControls(
@@ -201,7 +201,7 @@ $form->addItem([
], 'hostgroup')
]);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/configuration.templategroup.edit.php b/ui/app/views/configuration.templategroup.edit.php
index 732a8abe1b7..9ee12f1b36a 100644
--- a/ui/app/views/configuration.templategroup.edit.php
+++ b/ui/app/views/configuration.templategroup.edit.php
@@ -48,7 +48,7 @@ $data += [
]
];
-(new CWidget())
+(new CHtmlPage())
->setTitle(($data['groupid'] == 0) ? _('New template group') : _('Template group'))
->addItem(new CPartial('configuration.templategroup.edit.html', $data))
->show();
diff --git a/ui/app/views/configuration.templategroup.list.php b/ui/app/views/configuration.templategroup.list.php
index add2c591c7c..6e5c81b9384 100644
--- a/ui/app/views/configuration.templategroup.list.php
+++ b/ui/app/views/configuration.templategroup.list.php
@@ -26,7 +26,7 @@
$this->includeJsFile('configuration.templategroup.list.js.php');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Template groups'))
->setControls((new CTag('nav', true, (new CList())
->addItem(CWebUser::getType() == USER_TYPE_SUPER_ADMIN
@@ -148,7 +148,7 @@ $form->addItem([
], 'templategroup')
]);
-$widget
+$html_page
->addItem($filter)
->addItem($form)
->show();
diff --git a/ui/app/views/js/configuration.dashboard.edit.js.php b/ui/app/views/js/configuration.dashboard.edit.js.php
index 6bfa2ab1a9c..58fdff1fd51 100644
--- a/ui/app/views/js/configuration.dashboard.edit.js.php
+++ b/ui/app/views/js/configuration.dashboard.edit.js.php
@@ -26,12 +26,10 @@
<script>
const view = {
- dashboard: null,
- page: null,
is_busy: false,
is_busy_saving: false,
- init({dashboard, widget_defaults, time_period, page}) {
+ init({dashboard, widget_defaults, widget_last_type, time_period, page}) {
this.dashboard = dashboard;
this.page = page;
@@ -60,19 +58,19 @@
max_rows: <?= DASHBOARD_MAX_ROWS ?>,
widget_min_rows: <?= DASHBOARD_WIDGET_MIN_ROWS ?>,
widget_max_rows: <?= DASHBOARD_WIDGET_MAX_ROWS ?>,
- widget_defaults: widget_defaults,
+ widget_defaults,
+ widget_last_type,
is_editable: true,
is_edit_mode: true,
can_edit_dashboards: true,
is_kiosk_mode: false,
- time_period: time_period,
+ time_period,
dynamic_hostid: null
});
for (const page of dashboard.pages) {
for (const widget of page.widgets) {
widget.fields = (typeof widget.fields === 'object') ? widget.fields : {};
- widget.configuration = (typeof widget.configuration === 'object') ? widget.configuration : {};
}
ZABBIX.Dashboard.addDashboardPage(page);
diff --git a/ui/app/views/js/monitoring.dashboard.print.js.php b/ui/app/views/js/monitoring.dashboard.print.js.php
index cfd11d78048..0031fc1812b 100644
--- a/ui/app/views/js/monitoring.dashboard.print.js.php
+++ b/ui/app/views/js/monitoring.dashboard.print.js.php
@@ -67,7 +67,6 @@
for (const page of dashboard.pages) {
for (const widget of page.widgets) {
widget.fields = (typeof widget.fields === 'object') ? widget.fields : {};
- widget.configuration = (typeof widget.configuration === 'object') ? widget.configuration : {};
}
ZABBIX.Dashboard.addDashboardPage(page);
diff --git a/ui/app/views/js/monitoring.dashboard.view.js.php b/ui/app/views/js/monitoring.dashboard.view.js.php
index 9f6dc5cd740..c1a623d43f4 100644
--- a/ui/app/views/js/monitoring.dashboard.view.js.php
+++ b/ui/app/views/js/monitoring.dashboard.view.js.php
@@ -26,18 +26,25 @@
<script>
const view = {
- dashboard: null,
- time_period: null,
- dynamic: null,
- has_time_selector: null,
is_busy: false,
is_busy_saving: false,
- init({dashboard, time_period, dynamic, has_time_selector, widget_defaults, web_layout_mode}) {
+ init({
+ dashboard,
+ widget_defaults,
+ widget_last_type,
+ configuration_hash,
+ has_time_selector,
+ time_period,
+ dynamic,
+ web_layout_mode,
+ clone
+ }) {
this.dashboard = dashboard;
+ this.has_time_selector = has_time_selector;
this.time_period = time_period;
this.dynamic = dynamic;
- this.has_time_selector = has_time_selector;
+ this.clone = clone;
timeControl.refreshPage = false;
@@ -73,20 +80,21 @@
max_rows: <?= DASHBOARD_MAX_ROWS ?>,
widget_min_rows: <?= DASHBOARD_WIDGET_MIN_ROWS ?>,
widget_max_rows: <?= DASHBOARD_WIDGET_MAX_ROWS ?>,
- widget_defaults: widget_defaults,
+ widget_defaults,
+ widget_last_type,
+ configuration_hash,
is_editable: dashboard.can_edit_dashboards && dashboard.editable
&& web_layout_mode != <?= ZBX_LAYOUT_KIOSKMODE ?>,
- is_edit_mode: dashboard.dashboardid === null,
+ is_edit_mode: dashboard.dashboardid === null || clone,
can_edit_dashboards: dashboard.can_edit_dashboards,
is_kiosk_mode: web_layout_mode == <?= ZBX_LAYOUT_KIOSKMODE ?>,
- time_period: time_period,
+ time_period,
dynamic_hostid: dynamic.host ? dynamic.host.id : null
});
for (const page of dashboard.pages) {
for (const widget of page.widgets) {
widget.fields = (typeof widget.fields === 'object') ? widget.fields : {};
- widget.configuration = (typeof widget.configuration === 'object') ? widget.configuration : {};
}
ZABBIX.Dashboard.addDashboardPage(page);
@@ -102,7 +110,7 @@
jQuery('#dynamic_hostid').on('change', this.events.dynamicHostChange);
}
- if (dashboard.dashboardid === null) {
+ if (dashboard.dashboardid === null || clone) {
this.edit();
ZABBIX.Dashboard.editProperties();
}
@@ -116,6 +124,8 @@
}
}
+ ZABBIX.Dashboard.on(DASHBOARD_EVENT_CONFIGURATION_OUTDATED, this.events.configurationOutdated);
+
if (dynamic.has_dynamic_widgets) {
// Perform dynamic host switch when browser back/previous buttons are pressed.
window.addEventListener('popstate', this.events.popState);
@@ -183,6 +193,10 @@
request_data.sharing = this.dashboard.sharing;
+ if (this.clone) {
+ request_data.clone = '1';
+ }
+
const curl = new Curl('zabbix.php');
curl.setArgument('action', 'dashboard.update');
@@ -224,7 +238,7 @@
messages = exception.error.messages;
}
else {
- title = this.dashboard.dashboardid === null
+ title = this.dashboard.dashboardid === null || this.clone
? <?= json_encode(_('Failed to create dashboard')) ?>
: <?= json_encode(_('Failed to update dashboard')) ?>;
}
@@ -311,14 +325,14 @@
clickCallback: () => ZABBIX.Dashboard.pasteWidget(
ZABBIX.Dashboard.getStoredWidgetDataCopy()
),
- disabled: (ZABBIX.Dashboard.getStoredWidgetDataCopy() === null)
+ disabled: ZABBIX.Dashboard.getStoredWidgetDataCopy() === null
},
{
label: <?= json_encode(_('Paste page')) ?>,
clickCallback: () => ZABBIX.Dashboard.pasteDashboardPage(
ZABBIX.Dashboard.getStoredDashboardPageDataCopy()
),
- disabled: (ZABBIX.Dashboard.getStoredDashboardPageDataCopy() === null)
+ disabled: ZABBIX.Dashboard.getStoredDashboardPageDataCopy() === null
}
]
}
@@ -380,10 +394,14 @@
applyProperties() {
const dashboard_data = ZABBIX.Dashboard.getData();
- document.getElementById('<?= ZBX_STYLE_PAGE_TITLE ?>').textContent = dashboard_data.name;
+ document.getElementById('<?= CHtmlPage::PAGE_TITLE_ID ?>').textContent = dashboard_data.name;
document.getElementById('dashboard-direct-link').textContent = dashboard_data.name;
},
+ configurationOutdated() {
+ location.href = location.href;
+ },
+
busy() {
view.is_busy = true;
view.updateBusy();
diff --git a/ui/app/views/js/monitoring.host.dashboard.view.js.php b/ui/app/views/js/monitoring.host.dashboard.view.js.php
index c65356010cf..7b7adbbaf5d 100644
--- a/ui/app/views/js/monitoring.host.dashboard.view.js.php
+++ b/ui/app/views/js/monitoring.host.dashboard.view.js.php
@@ -26,7 +26,7 @@
<script>
const view = {
- init({host, dashboard, widget_defaults, time_period, web_layout_mode}) {
+ init({host, dashboard, widget_defaults, configuration_hash, time_period, web_layout_mode}) {
timeControl.refreshPage = false;
ZABBIX.Dashboard = new CDashboard(document.querySelector('.<?= ZBX_STYLE_DASHBOARD ?>'), {
@@ -61,7 +61,8 @@
max_rows: <?= DASHBOARD_MAX_ROWS ?>,
widget_min_rows: <?= DASHBOARD_WIDGET_MIN_ROWS ?>,
widget_max_rows: <?= DASHBOARD_WIDGET_MAX_ROWS ?>,
- widget_defaults: widget_defaults,
+ widget_defaults,
+ configuration_hash,
is_editable: false,
is_edit_mode: false,
can_edit_dashboards: false,
@@ -73,7 +74,6 @@
for (const page of dashboard.pages) {
for (const widget of page.widgets) {
widget.fields = (typeof widget.fields === 'object') ? widget.fields : {};
- widget.configuration = (typeof widget.configuration === 'object') ? widget.configuration : {};
}
ZABBIX.Dashboard.addDashboardPage(page);
@@ -81,6 +81,8 @@
ZABBIX.Dashboard.activate();
+ ZABBIX.Dashboard.on(DASHBOARD_EVENT_CONFIGURATION_OUTDATED, this.events.configurationOutdated);
+
if (web_layout_mode == <?= ZBX_LAYOUT_NORMAL ?>) {
document.getElementById('dashboardid').addEventListener('change', this.events.dashboardChange);
}
@@ -89,6 +91,10 @@
},
events: {
+ configurationOutdated() {
+ location.href = location.href;
+ },
+
dashboardChange(e) {
e.target.closest('form').submit();
}
diff --git a/ui/app/views/js/monitoring.latest.view.js.php b/ui/app/views/js/monitoring.latest.view.js.php
index e727894273d..0171c31ec34 100644
--- a/ui/app/views/js/monitoring.latest.view.js.php
+++ b/ui/app/views/js/monitoring.latest.view.js.php
@@ -71,11 +71,11 @@
this.filter.on(TABFILTER_EVENT_URLSET, () => {
this.reloadPartialAndTabCounters();
+ chkbxRange.clearSelectedOnFilterChange();
if (this.active_filter !== this.filter._active_item) {
this.active_filter = this.filter._active_item;
chkbxRange.checkObjectAll(chkbxRange.pageGoName, false);
- chkbxRange.clearSelectedOnFilterChange();
}
});
diff --git a/ui/app/views/js/monitoring.problem.view.js.php b/ui/app/views/js/monitoring.problem.view.js.php
index 931f317fb28..4f854d9976a 100644
--- a/ui/app/views/js/monitoring.problem.view.js.php
+++ b/ui/app/views/js/monitoring.problem.view.js.php
@@ -95,11 +95,11 @@
this.refreshResults();
this.refreshCounters();
+ chkbxRange.clearSelectedOnFilterChange();
if (this.active_filter !== this.filter._active_item) {
this.active_filter = this.filter._active_item;
chkbxRange.checkObjectAll(chkbxRange.pageGoName, false);
- chkbxRange.clearSelectedOnFilterChange();
}
});
diff --git a/ui/app/views/js/popup.massupdate.item.js.php b/ui/app/views/js/popup.massupdate.item.js.php
index 21c43937079..aee3728c71a 100644
--- a/ui/app/views/js/popup.massupdate.item.js.php
+++ b/ui/app/views/js/popup.massupdate.item.js.php
@@ -62,68 +62,50 @@
// History mode.
(() => {
- const history_elem = document.querySelector('#history_div');
+ const history_toggle = document.getElementById('history_mode');
- if (!history_elem) {
+ if (!history_toggle) {
return false;
}
- let obj = history_elem;
- if (history_elem.tagName === 'SPAN') {
- obj = history_elem.originalObject;
- }
+ history_toggle.addEventListener('change', () => {
+ const history_input = document.getElementById('history');
- obj
- .querySelector('#history_mode')
- .addEventListener('change', (event) => {
- const history_input = obj.querySelector('#history');
- const state = obj.querySelector('#history_mode_<?= ITEM_STORAGE_OFF ?>').checked;
- if (state) {
- history_input.disabled = true;
- history_input.style.display = 'none';
- }
- else {
- history_input.disabled = false;
- history_input.style.display = '';
- }
- });
+ if (document.getElementById('history_mode_<?= ITEM_STORAGE_OFF ?>').checked) {
+ history_input.style.display = 'none';
+ history_input.disabled = true;
+ }
+ else {
+ history_input.style.display = '';
+ history_input.disabled = false;
+ }
+ });
- obj
- .querySelector('#history_mode')
- .dispatchEvent(new CustomEvent('change', {}));
+ history_toggle.dispatchEvent(new CustomEvent('change'));
})();
// Trends mode.
(() => {
- const trends_elem = document.querySelector('#trends_div');
+ const trends_toggle = document.getElementById('trends_mode');
- if (!trends_elem) {
+ if (!trends_toggle) {
return false;
}
- let obj = trends_elem;
- if (trends_elem.tagName === 'SPAN') {
- obj = trends_elem.originalObject;
- }
+ trends_toggle.addEventListener('change', () => {
+ const trends_input = document.getElementById('trends');
- obj
- .querySelector('#trends_mode')
- .addEventListener('change', (event) => {
- const trends_input = obj.querySelector('#trends');
- const state = obj.querySelector('#trends_mode_<?= ITEM_STORAGE_OFF ?>').checked;
- if (state) {
- trends_input.disabled = true;
- trends_input.style.display = 'none';
- }
- else {
- trends_input.disabled = false;
- trends_input.style.display = '';
- }
- });
+ if (document.getElementById('trends_mode_<?= ITEM_STORAGE_OFF ?>').checked) {
+ trends_input.disabled = true;
+ trends_input.style.display = 'none';
+ }
+ else {
+ trends_input.disabled = false;
+ trends_input.style.display = '';
+ }
+ });
- obj
- .querySelector('#trends_mode')
- .dispatchEvent(new CustomEvent('change', {}));
+ trends_toggle.dispatchEvent(new CustomEvent('change'));
})();
// Custom intervals.
diff --git a/ui/app/views/js/popup.massupdate.tmpl.js.php b/ui/app/views/js/popup.massupdate.tmpl.js.php
index f4761332b6c..b792eb51230 100644
--- a/ui/app/views/js/popup.massupdate.tmpl.js.php
+++ b/ui/app/views/js/popup.massupdate.tmpl.js.php
@@ -24,7 +24,7 @@
* @var array $data
*/
?>
-<?= (new CScriptTemplate('valuemap-rename-row-tmpl'))->addItem(
+<?= (new CTemplateTag('valuemap-rename-row-tmpl'))->addItem(
(new CRow([
(new CTextBox('valuemap_rename[#{rowNum}][from]', '', false, DB::getFieldLength('valuemap', 'name')))
->addStyle('width: 100%;'),
diff --git a/ui/app/views/monitoring.charts.view.php b/ui/app/views/monitoring.charts.view.php
index e031f3c433e..7fe528b8638 100644
--- a/ui/app/views/monitoring.charts.view.php
+++ b/ui/app/views/monitoring.charts.view.php
@@ -36,7 +36,7 @@ $this->includeJsFile('monitoring.charts.view.js.php');
$this->enableLayoutModes();
$web_layout_mode = $this->getLayoutMode();
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Graphs'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_CHARTS_VIEW))
@@ -89,24 +89,24 @@ if ($web_layout_mode == ZBX_LAYOUT_NORMAL) {
new CPartial('monitoring.charts.subfilter', $data['subfilters']));
}
-$widget->addItem($filter);
+$html_page->addItem($filter);
if (!$data['filter_hostids']) {
- $widget->addItem((new CTableInfo())->setNoDataMessage(_('Specify host to see the graphs.')));
+ $html_page->addItem((new CTableInfo())->setNoDataMessage(_('Specify host to see the graphs.')));
}
elseif ($data['charts']) {
$table = (new CTable())
->setAttribute('style', 'width: 100%;')
->setId('charts');
- $widget
+ $html_page
->addItem($table)
->addItem($data['paging']);
}
else {
- $widget->addItem(new CTableInfo());
+ $html_page->addItem(new CTableInfo());
}
-$widget->show();
+$html_page->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/app/views/monitoring.dashboard.list.php b/ui/app/views/monitoring.dashboard.list.php
index 50730374c9f..cdc4205e740 100644
--- a/ui/app/views/monitoring.dashboard.list.php
+++ b/ui/app/views/monitoring.dashboard.list.php
@@ -31,7 +31,7 @@ $this->addJsFile('layout.mode.js');
$this->enableLayoutModes();
$web_layout_mode = $this->getLayoutMode();
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Dashboards'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::DASHBOARDS_LIST))
@@ -52,7 +52,7 @@ $widget = (new CWidget())
);
if ($web_layout_mode == ZBX_LAYOUT_NORMAL) {
- $widget
+ $html_page
->addItem((new CFilter())
->setResetUrl((new CUrl('zabbix.php'))->setArgument('action', 'dashboard.list'))
->setProfile($data['profileIdx'])
@@ -128,5 +128,6 @@ $form->addItem([
], 'dashboard')
]);
-$widget->addItem($form);
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/app/views/monitoring.dashboard.print.php b/ui/app/views/monitoring.dashboard.print.php
index d0fb077c6b8..911f46aac8f 100644
--- a/ui/app/views/monitoring.dashboard.print.php
+++ b/ui/app/views/monitoring.dashboard.print.php
@@ -38,19 +38,9 @@ $this->addJsFile('class.dashboard.page.js');
$this->addJsFile('class.dashboard.widget.placeholder.js');
$this->addJsFile('class.geomaps.js');
$this->addJsFile('class.widget.js');
+$this->addJsFile('class.widget.inaccessible.js');
$this->addJsFile('class.widget.iterator.js');
-$this->addJsFile('class.widget.clock.js');
-$this->addJsFile('class.widget.geomap.js');
-$this->addJsFile('class.widget.graph.js');
-$this->addJsFile('class.widget.graph-prototype.js');
-$this->addJsFile('class.widget.item.js');
-$this->addJsFile('class.widget.map.js');
-$this->addJsFile('class.widget.navtree.js');
$this->addJsFile('class.widget.paste-placeholder.js');
-$this->addJsFile('class.widget.problems.js');
-$this->addJsFile('class.widget.problemsbysv.js');
-$this->addJsFile('class.widget.svggraph.js');
-$this->addJsFile('class.widget.trigerover.js');
$this->addJsFile('class.csvggraph.js');
$this->addJsFile('class.svg.canvas.js');
$this->addJsFile('class.svg.map.js');
@@ -63,7 +53,7 @@ $this->addCssFile('assets/styles/vendors/Leaflet/Leaflet/leaflet.css');
$this->enableLayoutModes();
$this->setLayoutMode(ZBX_LAYOUT_KIOSKMODE);
-(new CWidget())
+(new CHtmlPage())
->addItem(
(new CDiv())
->addClass(ZBX_STYLE_DASHBOARD)
diff --git a/ui/app/views/monitoring.dashboard.view.php b/ui/app/views/monitoring.dashboard.view.php
index e34b71a6d41..0623b5f8968 100644
--- a/ui/app/views/monitoring.dashboard.view.php
+++ b/ui/app/views/monitoring.dashboard.view.php
@@ -39,19 +39,9 @@ $this->addJsFile('class.dashboard.page.js');
$this->addJsFile('class.dashboard.widget.placeholder.js');
$this->addJsFile('class.geomaps.js');
$this->addJsFile('class.widget.js');
+$this->addJsFile('class.widget.inaccessible.js');
$this->addJsFile('class.widget.iterator.js');
-$this->addJsFile('class.widget.clock.js');
-$this->addJsFile('class.widget.geomap.js');
-$this->addJsFile('class.widget.graph.js');
-$this->addJsFile('class.widget.graph-prototype.js');
-$this->addJsFile('class.widget.item.js');
-$this->addJsFile('class.widget.map.js');
-$this->addJsFile('class.widget.navtree.js');
$this->addJsFile('class.widget.paste-placeholder.js');
-$this->addJsFile('class.widget.problems.js');
-$this->addJsFile('class.widget.problemsbysv.js');
-$this->addJsFile('class.widget.svggraph.js');
-$this->addJsFile('class.widget.trigerover.js');
$this->addJsFile('class.calendar.js');
$this->addJsFile('layout.mode.js');
$this->addJsFile('class.coverride.js');
@@ -100,7 +90,7 @@ if ($data['dynamic']['has_dynamic_widgets']) {
]);
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle($data['dashboard']['name'])
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::DASHBOARDS_VIEW))
@@ -137,9 +127,11 @@ $widget = (new CWidget())
(new CButton('dashboard-config'))->addClass(ZBX_STYLE_BTN_DASHBOARD_CONF),
(new CList())
->addClass(ZBX_STYLE_BTN_SPLIT)
- ->addItem((new CButton('dashboard-add-widget',
- [(new CSpan())->addClass(ZBX_STYLE_PLUS_ICON), _('Add')]
- ))->addClass(ZBX_STYLE_BTN_ALT))
+ ->addItem(
+ (new CButton('dashboard-add-widget',
+ [(new CSpan())->addClass(ZBX_STYLE_PLUS_ICON), _('Add')]
+ ))->addClass(ZBX_STYLE_BTN_ALT)
+ )
->addItem(
(new CButton('dashboard-add', '&#8203;'))
->addClass(ZBX_STYLE_BTN_ALT)
@@ -197,7 +189,7 @@ $widget = (new CWidget())
])));
if ($data['has_time_selector']) {
- $widget->addItem(
+ $html_page->addItem(
(new CFilter())
->setProfile($data['time_period']['profileIdx'], $data['time_period']['profileIdx2'])
->setActiveTab($data['active_tab'])
@@ -252,7 +244,7 @@ if ($web_layout_mode != ZBX_LAYOUT_KIOSKMODE) {
$dashboard->addItem((new CDiv())->addClass(ZBX_STYLE_DASHBOARD_GRID));
-$widget
+$html_page
->addItem($dashboard)
->show();
@@ -260,10 +252,13 @@ $widget
view.init('.json_encode([
'dashboard' => $data['dashboard'],
'widget_defaults' => $data['widget_defaults'],
+ 'widget_last_type' => $data['widget_last_type'],
+ 'configuration_hash' => $data['configuration_hash'],
'has_time_selector' => $data['has_time_selector'],
'time_period' => $data['time_period'],
'dynamic' => $data['dynamic'],
- 'web_layout_mode' => $web_layout_mode
+ 'web_layout_mode' => $web_layout_mode,
+ 'clone' => $data['clone']
]).');
'))
->setOnDocumentReady()
diff --git a/ui/app/views/monitoring.dashboard.widget.edit.php b/ui/app/views/monitoring.dashboard.widget.edit.php
deleted file mode 100644
index b137f5f9257..00000000000
--- a/ui/app/views/monitoring.dashboard.widget.edit.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * @var CView $this
- * @var array $data
- */
-
-$widget_view = include('include/classes/widgets/views/widget.'.$data['dialogue']['type'].'.form.view.php');
-
-$form = $widget_view['form']->addClass('dashboard-widget-'.$data['dialogue']['type']);
-
-// Submit button is needed to enable submit event on Enter on inputs.
-$form->addItem((new CInput('submit', 'dashboard_widget_config_submit'))->addStyle('display: none;'));
-
-$output = [
- 'header' => $data['unique_id'] !== null ? _s('Edit widget') : _s('Add widget'),
- 'doc_url' => CDocHelper::getUrl(CDocHelper::DASHBOARDS_WIDGET_EDIT),
- 'body' => '',
- 'buttons' => [
- [
- 'title' => $data['unique_id'] !== null ? _s('Apply') : _s('Add'),
- 'class' => 'dialogue-widget-save',
- 'keepOpen' => true,
- 'isSubmit' => true,
- 'action' => 'ZABBIX.Dashboard.applyWidgetProperties();'
- ]
- ],
- 'data' => [
- 'original_properties' => [
- 'type' => $data['dialogue']['type'],
- 'unique_id' => $data['unique_id'],
- 'dashboard_page_unique_id' => $data['dashboard_page_unique_id']
- ]
- ]
-];
-
-if (($messages = getMessages()) !== null) {
- $output['body'] .= $messages->toString();
-}
-
-$output['body'] .= $form->toString();
-
-if (array_key_exists('jq_templates', $widget_view)) {
- foreach ($widget_view['jq_templates'] as $id => $jq_template) {
- $output['body'] .= '<script type="text/x-jquery-tmpl" id="'.$id.'">'.$jq_template.'</script>';
- }
-}
-
-$scripts = [
- $this->readJsFile('monitoring.dashboard.widget.edit.js.php'),
- 'widget_form.init();'
-];
-
-if (array_key_exists('scripts', $widget_view)) {
- $scripts = array_merge($scripts, $widget_view['scripts']);
-}
-
-$output['body'] .= get_js(implode("\n", $scripts));
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
diff --git a/ui/app/views/monitoring.discovery.view.php b/ui/app/views/monitoring.discovery.view.php
index bd156a5824f..76cf3e5db47 100644
--- a/ui/app/views/monitoring.discovery.view.php
+++ b/ui/app/views/monitoring.discovery.view.php
@@ -30,7 +30,7 @@ $this->addJsFile('layout.mode.js');
$this->enableLayoutModes();
$web_layout_mode = $this->getLayoutMode();
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Status of discovery'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_DISCOVERY_VIEW))
@@ -77,4 +77,4 @@ $discovery_table = CScreenBuilder::getScreen([
]
])->get();
-$widget->addItem($discovery_table)->show();
+$html_page->addItem($discovery_table)->show();
diff --git a/ui/app/views/monitoring.host.dashboard.view.php b/ui/app/views/monitoring.host.dashboard.view.php
index 95461164381..5b154ebbd4f 100644
--- a/ui/app/views/monitoring.host.dashboard.view.php
+++ b/ui/app/views/monitoring.host.dashboard.view.php
@@ -28,7 +28,7 @@ if (array_key_exists('error', $data)) {
}
if (array_key_exists('no_data', $data)) {
- (new CWidget())
+ (new CHtmlPage())
->setTitle(_('Dashboards'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_HOST_DASHBOARD_VIEW))
->addItem(new CTableInfo())
@@ -44,18 +44,9 @@ $this->addJsFile('class.dashboard.js');
$this->addJsFile('class.dashboard.page.js');
$this->addJsFile('class.dashboard.widget.placeholder.js');
$this->addJsFile('class.widget.js');
+$this->addJsFile('class.widget.inaccessible.js');
$this->addJsFile('class.widget.iterator.js');
-$this->addJsFile('class.widget.clock.js');
-$this->addJsFile('class.widget.graph.js');
-$this->addJsFile('class.widget.graph-prototype.js');
-$this->addJsFile('class.widget.item.js');
-$this->addJsFile('class.widget.map.js');
-$this->addJsFile('class.widget.navtree.js');
$this->addJsFile('class.widget.paste-placeholder.js');
-$this->addJsFile('class.widget.problems.js');
-$this->addJsFile('class.widget.problemsbysv.js');
-$this->addJsFile('class.widget.svggraph.js');
-$this->addJsFile('class.widget.trigerover.js');
$this->addJsFile('layout.mode.js');
$this->addJsFile('class.sortable.js');
@@ -64,7 +55,7 @@ $this->includeJsFile('monitoring.host.dashboard.view.js.php');
$this->enableLayoutModes();
$web_layout_mode = $this->getLayoutMode();
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle($data['dashboard']['name'])
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_HOST_DASHBOARD_VIEW))
@@ -129,7 +120,7 @@ $widget = (new CWidget())
])));
if ($data['has_time_selector']) {
- $widget->addItem(
+ $html_page->addItem(
(new CFilter())
->setProfile($data['time_period']['profileIdx'], $data['time_period']['profileIdx2'])
->setActiveTab($data['active_tab'])
@@ -182,7 +173,7 @@ if (count($data['dashboard']['pages']) > 1
$dashboard->addItem((new CDiv())->addClass(ZBX_STYLE_DASHBOARD_GRID));
- $widget
+ $html_page
->addItem($dashboard)
->show();
@@ -191,6 +182,7 @@ if (count($data['dashboard']['pages']) > 1
'host' => $data['host'],
'dashboard' => $data['dashboard'],
'widget_defaults' => $data['widget_defaults'],
+ 'configuration_hash' => $data['configuration_hash'],
'time_period' => $data['time_period'],
'web_layout_mode' => $web_layout_mode
]).');
@@ -199,7 +191,7 @@ if (count($data['dashboard']['pages']) > 1
->show();
}
else {
- $widget
+ $html_page
->addItem(new CTableInfo())
->show();
}
diff --git a/ui/app/views/monitoring.host.view.php b/ui/app/views/monitoring.host.view.php
index f50e9c56edd..fcee4d1d6ed 100644
--- a/ui/app/views/monitoring.host.view.php
+++ b/ui/app/views/monitoring.host.view.php
@@ -45,7 +45,7 @@ if ($data['can_create_hosts']) {
$nav_items->addItem(get_icon('kioskmode', ['mode' => $web_layout_mode]));
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Hosts'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_HOST_VIEW))
@@ -66,18 +66,19 @@ if ($web_layout_mode == ZBX_LAYOUT_NORMAL) {
// Set javascript options for tab filter initialization in monitoring.host.view.js.php file.
$data['filter_options'] = $filter->options;
- $widget->addItem($filter);
+ $html_page->addItem($filter);
}
else {
$data['filter_options'] = null;
}
-$widget->addItem((new CForm())
- ->setName('host_view')
- ->addClass('is-loading')
-);
-
-$widget->show();
+$html_page
+ ->addItem(
+ (new CForm())
+ ->setName('host_view')
+ ->addClass('is-loading')
+ )
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/app/views/monitoring.latest.view.php b/ui/app/views/monitoring.latest.view.php
index 337ff26bf06..965166b187d 100644
--- a/ui/app/views/monitoring.latest.view.php
+++ b/ui/app/views/monitoring.latest.view.php
@@ -35,7 +35,11 @@ $this->includeJsFile('monitoring.latest.view.js.php');
$this->enableLayoutModes();
$web_layout_mode = $this->getLayoutMode();
-$widget = (new CWidget())
+if ($data['uncheck']) {
+ uncheckTableRows('latest');
+}
+
+$html_page = (new CHtmlPage())
->setTitle(_('Latest data'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_LATEST_VIEW))
@@ -60,19 +64,19 @@ if ($web_layout_mode == ZBX_LAYOUT_NORMAL) {
// Set javascript options for tab filter initialization in monitoring.latest.view.js.php file.
$data['filter_options'] = $filter->options;
- $widget->addItem($filter);
+ $html_page->addItem($filter);
}
else {
$data['filter_options'] = null;
}
-$widget->addItem(new CPartial('monitoring.latest.view.html', array_intersect_key($data,
- array_flip(['filter', 'sort_field', 'sort_order', 'view_curl', 'paging', 'hosts', 'items', 'history', 'config',
- 'tags', 'maintenances', 'items_rw'
- ])
-)));
-
-$widget->show();
+$html_page
+ ->addItem(new CPartial('monitoring.latest.view.html', array_intersect_key($data,
+ array_flip(['filter', 'sort_field', 'sort_order', 'view_curl', 'paging', 'hosts', 'items', 'history', 'config',
+ 'tags', 'maintenances', 'items_rw'
+ ])
+ )))
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/app/views/monitoring.map.view.php b/ui/app/views/monitoring.map.view.php
index 5afe2dcf90a..ebfe9b5f8e3 100644
--- a/ui/app/views/monitoring.map.view.php
+++ b/ui/app/views/monitoring.map.view.php
@@ -33,7 +33,7 @@ $this->includeJsFile('monitoring.map.view.js.php');
$this->enableLayoutModes();
$web_layout_mode = $this->getLayoutMode();
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Maps'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_MAP_VIEW))
->setWebLayoutMode($web_layout_mode)
@@ -62,7 +62,7 @@ $web_layout_mode = $this->getLayoutMode();
))->setEnabled($data['allowed_edit'])
: null
)
- ->addItem(get_icon('favourite', [
+ ->addItem(get_icon('favorite', [
'fav' => 'web.favorite.sysmapids',
'elname' => 'sysmapid',
'elid' => $data['map']['sysmapid']
diff --git a/ui/app/views/monitoring.problem.view.php b/ui/app/views/monitoring.problem.view.php
index 41b26a66a8b..49e2cc9beee 100644
--- a/ui/app/views/monitoring.problem.view.php
+++ b/ui/app/views/monitoring.problem.view.php
@@ -39,7 +39,7 @@ if ($data['action'] === 'problem.view') {
uncheckTableRows('problem');
}
- $widget = (new CWidget())
+ $html_page = (new CHtmlPage())
->setTitle(_('Problems'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_PROBLEMS_VIEW))
@@ -66,14 +66,14 @@ if ($data['action'] === 'problem.view') {
// Set javascript options for tab filter initialization in monitoring.problem.view.js.php file.
$data['filter_options'] = $filter->options;
- $widget->addItem($filter);
+ $html_page->addItem($filter);
}
else {
$data['filter_options'] = null;
}
$this->includeJsFile('monitoring.problem.view.js.php', $data);
- $widget
+ $html_page
->addItem(new CPartial('monitoring.problem.view.html', array_intersect_key($data,
array_flip(['page', 'action', 'sort', 'sortorder', 'filter', 'tabfilter_idx'])
)))
diff --git a/ui/app/views/monitoring.web.view.php b/ui/app/views/monitoring.web.view.php
index 20595245dfb..242e54f0703 100644
--- a/ui/app/views/monitoring.web.view.php
+++ b/ui/app/views/monitoring.web.view.php
@@ -33,7 +33,7 @@ $this->includeJsFile('monitoring.web.view.js.php');
$this->enableLayoutModes();
$web_layout_mode = $this->getLayoutMode();
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Web monitoring'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_WEB_VIEW))
diff --git a/ui/app/views/monitoring.widget.dataover.view.php b/ui/app/views/monitoring.widget.dataover.view.php
deleted file mode 100644
index dcca9a7703b..00000000000
--- a/ui/app/views/monitoring.widget.dataover.view.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * @var CView $this
- */
-
-if ($data['style'] == STYLE_TOP) {
- $table = (new CPartial('dataoverview.table.top', $data))->getOutput();
-}
-else {
- $table = (new CPartial('dataoverview.table.left', $data))->getOutput();
-}
-
-$output = [
- 'name' => $data['name'],
- 'body' => $table
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
diff --git a/ui/app/views/monitoring.widget.graph.view.php b/ui/app/views/monitoring.widget.graph.view.php
deleted file mode 100644
index 3a85991c624..00000000000
--- a/ui/app/views/monitoring.widget.graph.view.php
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * @var CView $this
- */
-
-$output = [
- 'name' => $data['name']
-];
-
-if ($data['is_resource_available']) {
- $link_url = ($data['widget']['graph_url'] !== null) ? $data['widget']['graph_url'] : 'javascript:void(0)';
-
- $output['body'] = (new CDiv())
- ->addClass('flickerfreescreen')
- ->addItem((new CLink(null, $link_url))->addClass(ZBX_STYLE_DASHBOARD_WIDGET_GRAPH_LINK))
- ->toString();
-
- $output['async_data'] = $data['widget'];
-}
-else {
- $output['body'] = (new CTableInfo())
- ->setNoDataMessage(_('No permissions to referred object or it does not exist!'))
- ->toString();
-}
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
diff --git a/ui/app/views/monitoring.widget.map.view.php b/ui/app/views/monitoring.widget.map.view.php
deleted file mode 100644
index 293c9e151eb..00000000000
--- a/ui/app/views/monitoring.widget.map.view.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * @var CView $this
- */
-
-$item = new CDashboardWidgetMap($data['sysmap_data'], $data['widget_settings']);
-
-$output = [
- 'name' => $data['name'],
- 'body' => $item->toString(),
- 'sysmap_data' => $item->getScriptData()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($this->data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
diff --git a/ui/app/views/monitoring.widget.svggraph.view.php b/ui/app/views/monitoring.widget.svggraph.view.php
deleted file mode 100644
index b081a44c305..00000000000
--- a/ui/app/views/monitoring.widget.svggraph.view.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * @var CView $this
- */
-
-$output = [
- 'body' => $data['svg']
-];
-
-if (!$data['preview']) {
- $output += [
- 'name' => $data['name'],
- 'svg_options' => $data['svg_options']
- ];
-
- if ($data['info'] !== null) {
- $output += [
- 'info' => $data['info']
- ];
- }
-}
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if (!$data['preview'] && $data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
diff --git a/ui/app/views/monitoring.widget.trigover.view.php b/ui/app/views/monitoring.widget.trigover.view.php
deleted file mode 100644
index 9b9c93d1571..00000000000
--- a/ui/app/views/monitoring.widget.trigover.view.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * @var CView $this
- */
-
-if ($data['style'] == STYLE_TOP) {
- $table = (new CPartial('trigoverview.table.top', $data))->getOutput();
-}
-else {
- $table = (new CPartial('trigoverview.table.left', $data))->getOutput();
-}
-
-$output = [
- 'name' => $data['name'],
- 'body' => $table
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
diff --git a/ui/app/views/popup.itemtestedit.view.php b/ui/app/views/popup.itemtestedit.view.php
index a3d88f62cce..09ef6be0457 100644
--- a/ui/app/views/popup.itemtestedit.view.php
+++ b/ui/app/views/popup.itemtestedit.view.php
@@ -274,7 +274,7 @@ $form_grid->addItem([
->setId('time')
),
- ($data['preproc_item'] instanceof CDiscoveryRule)
+ ($data['test_type'] == CControllerPopupItemTestEdit::ZBX_TEST_TYPE_LLD)
? null
: (new CFormField((new CCheckBox('not_supported'))->setLabel(_('Not supported'))))
->addClass(CFormField::ZBX_STYLE_FORM_FIELD_FLUID),
diff --git a/ui/app/views/popup.massupdate.item.php b/ui/app/views/popup.massupdate.item.php
index 61ace107ddf..b54164150d5 100644
--- a/ui/app/views/popup.massupdate.item.php
+++ b/ui/app/views/popup.massupdate.item.php
@@ -302,7 +302,7 @@ $item_form_list
(new CVisibilityBox('visible[trends]', 'trends_div', _('Original')))->setLabel(_('Trend storage period')),
(new CDiv([
(new CRadioButtonList('trends_mode', ITEM_STORAGE_CUSTOM))
- ->addValue(_('Do not keep trends'), ITEM_STORAGE_CUSTOM)
+ ->addValue(_('Do not keep trends'), ITEM_STORAGE_OFF)
->addValue(_('Storage period'), ITEM_STORAGE_CUSTOM)
->setModern(true),
(new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
diff --git a/ui/app/views/popup.massupdate.service.php b/ui/app/views/popup.massupdate.service.php
index ed88a153f74..fa3bd38ba93 100644
--- a/ui/app/views/popup.massupdate.service.php
+++ b/ui/app/views/popup.massupdate.service.php
@@ -45,7 +45,7 @@ $tags_form_grid = (new CFormGrid())
renderTagTable([['tag' => '', 'value' => '']])
->setHeader([_('Name'), _('Value'), _('Action')])
->addClass('tags-table'),
- (new CScriptTemplate('tag-row-tmpl'))
+ (new CTemplateTag('tag-row-tmpl'))
->addItem(renderTagTableRow('#{rowNum}', '', '', ZBX_TAG_MANUAL, ['add_post_js' => false]))
]))
->setId('tags-div')
diff --git a/ui/app/views/popup.service.edit.php b/ui/app/views/popup.service.edit.php
index 7db4c330145..006852a8bce 100644
--- a/ui/app/views/popup.service.edit.php
+++ b/ui/app/views/popup.service.edit.php
@@ -73,7 +73,7 @@ $service_tab = (new CFormGrid())
->addClass('element-table-add')
))
),
- (new CScriptTemplate('problem-tag-row-tmpl'))
+ (new CTemplateTag('problem-tag-row-tmpl'))
->addItem(
(new CRow([
(new CTextBox('problem_tags[#{rowNum}][tag]', '#{tag}', false,
@@ -252,7 +252,7 @@ $tags_tab = (new CFormGrid())
renderTagTable($data['form']['tags'])
->addClass('tags-table')
->setHeader((new CRowHeader([_('Name'), _('Value'), _('Action')]))->addClass(ZBX_STYLE_GREY)),
- (new CScriptTemplate('tag-row-tmpl'))
+ (new CTemplateTag('tag-row-tmpl'))
->addItem(renderTagTableRow('#{rowNum}', '', '', ZBX_TAG_MANUAL, ['add_post_js' => false]))
])
)
diff --git a/ui/app/views/popup.sla.edit.php b/ui/app/views/popup.sla.edit.php
index 555cb46cd37..e7c08919817 100644
--- a/ui/app/views/popup.sla.edit.php
+++ b/ui/app/views/popup.sla.edit.php
@@ -136,7 +136,7 @@ $sla_tab = (new CFormGrid())
->addClass('element-table-add')
))
),
- (new CScriptTemplate('service-tag-row-tmpl'))
+ (new CTemplateTag('service-tag-row-tmpl'))
->addItem(
(new CRow([
(new CTextBox('service_tags[#{rowNum}][tag]', '#{tag}', false,
diff --git a/ui/app/views/popup.view.php b/ui/app/views/popup.view.php
index e616e7f2b58..51f560851b4 100644
--- a/ui/app/views/popup.view.php
+++ b/ui/app/views/popup.view.php
@@ -25,7 +25,7 @@
$this->addJsFile('class.calendar.js');
-(new CWidget())->show();
+(new CHtmlPage())->show();
(new CScriptTag(
'PopUp("'.$data['popup']['action'].'", '.json_encode($data['popup']['options']).');'.
diff --git a/ui/app/views/proxy.list.php b/ui/app/views/proxy.list.php
index 48f331ea475..64861b44e54 100644
--- a/ui/app/views/proxy.list.php
+++ b/ui/app/views/proxy.list.php
@@ -229,7 +229,7 @@ $form->addItem(
], 'proxy')
);
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Proxies'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_PROXY_LIST))
->setControls(
diff --git a/ui/app/views/report.status.php b/ui/app/views/report.status.php
index ae5f6c38152..0658436199b 100644
--- a/ui/app/views/report.status.php
+++ b/ui/app/views/report.status.php
@@ -26,7 +26,7 @@
require_once __DIR__.'/../../include/blocks.inc.php';
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('System information'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORT_STATUS))
->addItem(
diff --git a/ui/app/views/reports.auditlog.list.php b/ui/app/views/reports.auditlog.list.php
index 9371c25a4f4..89eab58bab8 100644
--- a/ui/app/views/reports.auditlog.list.php
+++ b/ui/app/views/reports.auditlog.list.php
@@ -52,7 +52,7 @@ $filter_actions = (new CCheckBoxList('filter_actions'))
->setColumns(3)
->setOptions($filter_actions_options);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Audit log'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORTS_AUDITLOG_LIST))
->addItem($filter
@@ -156,7 +156,7 @@ $obj = [
'timeControl.processObjects();')
)->show();
-$widget
+$html_page
->addItem(
(new CForm('get'))
->setName('auditForm')
diff --git a/ui/app/views/reports.scheduledreport.edit.php b/ui/app/views/reports.scheduledreport.edit.php
index 105f9055853..83a38bc9a1b 100644
--- a/ui/app/views/reports.scheduledreport.edit.php
+++ b/ui/app/views/reports.scheduledreport.edit.php
@@ -29,7 +29,7 @@ $this->includeJsFile('reports.scheduledreport.edit.js.php', [
'dashboard_inaccessible' => $data['dashboard_inaccessible']
]);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Scheduled reports'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORTS_SCHEDULEDREPORT_EDIT));
@@ -41,7 +41,7 @@ $form = (new CForm())
->setArgument('action', ($data['reportid'] == 0) ? 'scheduledreport.create' : 'scheduledreport.update')
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE);
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID);
if ($data['reportid'] != 0) {
$form->addVar('reportid', $data['reportid']);
@@ -58,6 +58,6 @@ $form_grid = new CPartial('scheduledreport.formgrid.html', [
$form->addItem((new CTabView())->addTab('scheduledreport_tab', _('Scheduled report'), $form_grid));
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/reports.scheduledreport.list.php b/ui/app/views/reports.scheduledreport.list.php
index 9f645997285..6bcfd395267 100644
--- a/ui/app/views/reports.scheduledreport.list.php
+++ b/ui/app/views/reports.scheduledreport.list.php
@@ -27,7 +27,7 @@ if ($data['uncheck']) {
uncheckTableRows('scheduledreport');
}
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Scheduled reports'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORTS_SCHEDULEDREPORT_LIST))
->setControls(
@@ -100,6 +100,6 @@ $form->addItem([
], 'scheduledreport')
]);
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/search.php b/ui/app/views/search.php
index c69680f1514..13553001022 100644
--- a/ui/app/views/search.php
+++ b/ui/app/views/search.php
@@ -26,7 +26,7 @@
$this->includeJsFile('search.js.php');
-$widgets = [];
+$sections = [];
$table = (new CTableInfo())
->setHeader((new CRowHeader())
@@ -179,13 +179,12 @@ foreach ($data['hosts'] as $hostid => $host) {
]);
}
-$widgets[] = (new CCollapsibleUiWidget(WIDGET_SEARCH_HOSTS, $table))
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FLUID)
- ->setExpanded((bool) CProfile::get('web.search.hats.'.WIDGET_SEARCH_HOSTS.'.state', true))
- ->setHeader(_('Hosts'), [], 'web.search.hats.'.WIDGET_SEARCH_HOSTS.'.state')
- ->setFooter(new CList([
- _s('Displaying %1$s of %2$s found', count($data['hosts']), $data['total_hosts_cnt'])
- ]));
+$sections[] = (new CSectionCollapsible($table))
+ ->setId(SECTION_SEARCH_HOSTS)
+ ->setHeader(new CTag('h4', true, _('Hosts')))
+ ->setFooter(_s('Displaying %1$s of %2$s found', count($data['hosts']), $data['total_hosts_cnt']))
+ ->setProfileIdx('web.search.hats.'.SECTION_SEARCH_HOSTS.'.state')
+ ->setExpanded((bool) CProfile::get('web.search.hats.'.SECTION_SEARCH_HOSTS.'.state', true));
$table = (new CTableInfo())
->setHeader((new CRowHeader())
@@ -260,13 +259,12 @@ foreach ($data['host_groups'] as $groupid => $group) {
]);
}
-$widgets[] = (new CCollapsibleUiWidget(WIDGET_SEARCH_HOSTGROUP, $table))
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FLUID)
- ->setExpanded((bool) CProfile::get('web.search.hats.'.WIDGET_SEARCH_HOSTGROUP.'.state', true))
- ->setHeader(_('Host groups'), [], 'web.search.hats.'.WIDGET_SEARCH_HOSTGROUP.'.state')
- ->setFooter(new CList([
- _s('Displaying %1$s of %2$s found', count($data['host_groups']), $data['total_host_groups_cnt'])
- ]));
+$sections[] = (new CSectionCollapsible($table))
+ ->setId(SECTION_SEARCH_HOSTGROUP)
+ ->setHeader(new CTag('h4', true, _('Host groups')))
+ ->setFooter(_s('Displaying %1$s of %2$s found', count($data['host_groups']), $data['total_host_groups_cnt']))
+ ->setProfileIdx('web.search.hats.'.SECTION_SEARCH_HOSTGROUP.'.state')
+ ->setExpanded((bool) CProfile::get('web.search.hats.'.SECTION_SEARCH_HOSTGROUP.'.state', true));
if ($data['admin']) {
$table = (new CTableInfo())
@@ -359,13 +357,12 @@ if ($data['admin']) {
]);
}
- $widgets[] = (new CCollapsibleUiWidget(WIDGET_SEARCH_TEMPLATES, $table))
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FLUID)
- ->setExpanded((bool) CProfile::get('web.search.hats.'.WIDGET_SEARCH_TEMPLATES.'.state', true))
- ->setHeader(_('Templates'), [], 'web.search.hats.'.WIDGET_SEARCH_TEMPLATES.'.state')
- ->setFooter(new CList([
- _s('Displaying %1$s of %2$s found', count($data['templates']), $data['total_templates_cnt'])
- ]));
+ $sections[] = (new CSectionCollapsible($table))
+ ->setId(SECTION_SEARCH_TEMPLATES)
+ ->setHeader(new CTag('h4', true, _('Templates')))
+ ->setFooter(_s('Displaying %1$s of %2$s found', count($data['templates']), $data['total_templates_cnt']))
+ ->setProfileIdx('web.search.hats.'.SECTION_SEARCH_TEMPLATES.'.state')
+ ->setExpanded((bool) CProfile::get('web.search.hats.'.SECTION_SEARCH_TEMPLATES.'.state', true));
}
$table = (new CTableInfo())
@@ -404,18 +401,19 @@ foreach ($data['template_groups'] as $groupid => $group) {
$table->addRow([$name_link, $templates_link]);
}
-$widgets[] = (new CCollapsibleUiWidget(WIDGET_SEARCH_TEMPLATEGROUP, $table))
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FLUID)
- ->setExpanded((bool) CProfile::get('web.search.hats.'.WIDGET_SEARCH_TEMPLATEGROUP.'.state', true))
- ->setHeader(_('Template groups'), [], 'web.search.hats.'.WIDGET_SEARCH_TEMPLATEGROUP.'.state')
- ->setFooter(new CList([
+$sections[] = (new CSectionCollapsible($table))
+ ->setId(SECTION_SEARCH_TEMPLATEGROUP)
+ ->setHeader(new CTag('h4', true, _('Template groups')))
+ ->setFooter(
_s('Displaying %1$s of %2$s found', count($data['template_groups']), $data['total_template_groups_cnt'])
- ]));
+ )
+ ->setProfileIdx('web.search.hats.'.SECTION_SEARCH_TEMPLATEGROUP.'.state')
+ ->setExpanded((bool) CProfile::get('web.search.hats.'.SECTION_SEARCH_TEMPLATEGROUP.'.state', true));
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Search').': '.$data['search'])
->setDocUrl(CDocHelper::getUrl(CDocHelper::SEARCH))
- ->addItem(new CDiv($widgets))
+ ->addItem(new CDiv($sections))
->show();
(new CScriptTag('view.init();'))
diff --git a/ui/app/views/service.list.edit.php b/ui/app/views/service.list.edit.php
index 0204c4dd2cb..c3af2b06971 100644
--- a/ui/app/views/service.list.edit.php
+++ b/ui/app/views/service.list.edit.php
@@ -119,7 +119,7 @@ $filter->addFilterTab(_('Filter'), [
])
]);
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Services'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::SERVICES_SERVICE_EDIT))
->setControls(
diff --git a/ui/app/views/service.list.php b/ui/app/views/service.list.php
index c7ef9a32212..b82e443341c 100644
--- a/ui/app/views/service.list.php
+++ b/ui/app/views/service.list.php
@@ -101,7 +101,7 @@ if ($web_layout_mode == ZBX_LAYOUT_NORMAL) {
]);
}
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Services'))
->setWebLayoutMode($web_layout_mode)
->setDocUrl(CDocHelper::getUrl(CDocHelper::SERVICES_SERVICE_LIST))
diff --git a/ui/app/views/sla.list.php b/ui/app/views/sla.list.php
index 67e1ecc8461..41b76b4206a 100644
--- a/ui/app/views/sla.list.php
+++ b/ui/app/views/sla.list.php
@@ -181,7 +181,7 @@ if ($data['has_access'][CRoleHelper::ACTIONS_MANAGE_SLA]) {
);
}
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('SLA'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::SERVICES_SLA_LIST))
->setControls(
diff --git a/ui/app/views/slareport.list.php b/ui/app/views/slareport.list.php
index 6e4865306b4..7d534b1b4d3 100644
--- a/ui/app/views/slareport.list.php
+++ b/ui/app/views/slareport.list.php
@@ -88,7 +88,7 @@ $filter = (new CFilter())
])
]);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('SLA report'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::SERVICES_SLAREPORT_LIST))
->addItem($filter);
@@ -196,7 +196,7 @@ else {
$form->addItem($report);
}
-$widget
+$html_page
->addItem($form)
->show();
diff --git a/ui/app/views/system.warning.php b/ui/app/views/system.warning.php
index a03ab3f4061..20543ac8a3b 100644
--- a/ui/app/views/system.warning.php
+++ b/ui/app/views/system.warning.php
@@ -21,11 +21,15 @@
/**
* @var CView $this
+ * @var array $data
*/
-$pageHeader = (new CPageHeader(_('Fatal error, please report to the Zabbix team'), CWebUser::getLang()))
- ->addCssFile('assets/styles/'.CHtml::encode($data['theme']).'.css')
- ->display();
+$page_header = (new CHtmlPageHeader(_('Fatal error, please report to the Zabbix team'), CWebUser::getLang()));
+
+$page_header
+ ->setTheme($data['theme'])
+ ->addCssFile('assets/styles/'.$page_header->getTheme().'.css')
+ ->show();
$buttons = [
(new CButton('back', _s('Go to "%1$s"', CMenuHelper::getFirstLabel())))
diff --git a/ui/app/views/widget.edit.php b/ui/app/views/widget.edit.php
new file mode 100644
index 00000000000..8a57fcd6fb4
--- /dev/null
+++ b/ui/app/views/widget.edit.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Widget default form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetFormView($data))->show();
diff --git a/ui/app/views/widget.view.php b/ui/app/views/widget.view.php
new file mode 100644
index 00000000000..deb9f49f584
--- /dev/null
+++ b/ui/app/views/widget.view.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Widget default view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetView($data))->show();
diff --git a/ui/assets/styles/blue-theme.css b/ui/assets/styles/blue-theme.css
index 022366e415a..a27a153d726 100644
--- a/ui/assets/styles/blue-theme.css
+++ b/ui/assets/styles/blue-theme.css
@@ -336,7 +336,9 @@ svg a {
top: 0;
left: 0;
transition: left .2s, top .2s; }
- .sortable .sortable-list .sortable-item:not(.sortable-dragging) {
+ .sortable .sortable-item {
+ box-sizing: border-box; }
+ .sortable .sortable-item:not(.sortable-dragging) {
transition: left .2s, top .2s; }
.sortable.sortable-dragging .sortable-item {
position: absolute; }
@@ -654,7 +656,6 @@ footer {
.form-grid {
display: grid;
- padding: 5px;
row-gap: 10px;
column-gap: 10px;
grid-template-columns: minmax(15%, max-content) auto; }
@@ -670,6 +671,9 @@ footer {
word-wrap: break-word; }
.form-grid > label.fields-group-label {
padding-top: 5px; }
+ .form-grid > label .icon-help-hint,
+ .form-grid > label .icon-info {
+ margin-left: 5px; }
.form-grid > .form-field,
.form-grid > .field-fluid,
.form-grid .form-actions {
@@ -884,6 +888,66 @@ footer {
.color-picker-dialogue .color-picker-input input {
padding-left: 25px; }
+.columns-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: start; }
+ .columns-wrapper.columns-nowrap {
+ flex-wrap: nowrap; }
+ .columns-wrapper.columns-2 > div,
+ .columns-wrapper.columns-2 > li {
+ display: block;
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper.columns-3 > div,
+ .columns-wrapper.columns-3 > li {
+ display: block;
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-5 {
+ flex: 0 0 5%;
+ max-width: 5%; }
+ .columns-wrapper .column-10 {
+ flex: 0 0 10%;
+ max-width: 10%; }
+ .columns-wrapper .column-15 {
+ flex: 0 0 15%;
+ max-width: 15%; }
+ .columns-wrapper .column-20 {
+ flex: 0 0 20%;
+ max-width: 20%; }
+ .columns-wrapper .column-33 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-35 {
+ flex: 0 0 35%;
+ max-width: 35%; }
+ .columns-wrapper .column-40 {
+ flex: 0 0 40%;
+ max-width: 40%; }
+ .columns-wrapper .column-50 {
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper .column-75 {
+ flex: 0 0 75%;
+ max-width: 75%; }
+ .columns-wrapper .column-90 {
+ flex: 0 0 90%;
+ max-width: 90%; }
+ .columns-wrapper .column-95 {
+ flex: 0 0 95%;
+ max-width: 95%; }
+ .columns-wrapper .column-center {
+ display: flex;
+ justify-content: center;
+ text-align: center; }
+ .columns-wrapper .column-middle {
+ display: flex;
+ align-items: center; }
+ .columns-wrapper > div:not(:last-child) section,
+ .columns-wrapper > ul:not(:last-child) section {
+ margin-right: 10px; }
+
.header-kioskmode-controls .dashboard-kioskmode-controls li {
margin-right: 6px; }
@@ -1433,8 +1497,6 @@ footer {
.dashboard-widget .msg-good,
.dashboard-widget .msg-warning {
margin: 0 10px; }
- .dashboard-widget.dashboard-widget-fluid {
- margin-right: 0; }
.dashboard-grid-widget-content .list-table th:first-child, .dashboard-grid-widget-content .list-table td:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table th:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table td:first-child, .dashboard-widget .list-table th:first-child, .dashboard-widget .list-table td:first-child, .overlay-dialogue .list-table th:first-child, .overlay-dialogue .list-table td:first-child {
padding-left: 10px; }
@@ -1495,30 +1557,22 @@ footer {
.wrapper.layout-kioskmode .dashboard-navigation {
display: none; }
-form.dashboard-widget-clock .fields-group-date,
-form.dashboard-widget-clock .fields-group-time,
-form.dashboard-widget-clock .fields-group-tzone {
+form.dashboard-widget-clock .fields-group.fields-group-date, form.dashboard-widget-clock .fields-group.fields-group-time, form.dashboard-widget-clock .fields-group.fields-group-tzone {
display: grid;
grid-template-columns: 60px 120px repeat(2, minmax(60px, max-content) auto);
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-clock .fields-group-date label,
- form.dashboard-widget-clock .fields-group-time label,
- form.dashboard-widget-clock .fields-group-tzone label {
+ form.dashboard-widget-clock .fields-group.fields-group-date label, form.dashboard-widget-clock .fields-group.fields-group-time label, form.dashboard-widget-clock .fields-group.fields-group-tzone label {
text-align: right; }
- form.dashboard-widget-clock .fields-group-date .field-size input,
- form.dashboard-widget-clock .fields-group-time .field-size input,
- form.dashboard-widget-clock .fields-group-tzone .field-size input {
+ form.dashboard-widget-clock .fields-group.fields-group-date .field-size input, form.dashboard-widget-clock .fields-group.fields-group-time .field-size input, form.dashboard-widget-clock .fields-group.fields-group-tzone .field-size input {
margin-right: 5px; }
-form.dashboard-widget-clock .fields-group-time .field-format {
+form.dashboard-widget-clock .fields-group.fields-group-time .field-format {
grid-column: 4 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-format {
- grid-column: 2 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-timezone {
+form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-timezone, form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-format {
grid-column: 2 / -1; }
-div.dashboard-widget-clock.clock-digital {
+div.dashboard-widget-clock .clock-digital {
box-sizing: border-box;
min-height: 100%;
padding: 10px;
@@ -1526,9 +1580,9 @@ div.dashboard-widget-clock.clock-digital {
flex-direction: column;
justify-content: center;
align-items: center; }
- div.dashboard-widget-clock.clock-digital .clock-date,
- div.dashboard-widget-clock.clock-digital .clock-time,
- div.dashboard-widget-clock.clock-digital .clock-time-zone {
+ div.dashboard-widget-clock .clock-digital .clock-date,
+ div.dashboard-widget-clock .clock-digital .clock-time,
+ div.dashboard-widget-clock .clock-digital .clock-time-zone {
max-width: 100%;
white-space: nowrap;
overflow: hidden;
@@ -1536,150 +1590,137 @@ div.dashboard-widget-clock.clock-digital {
font-size: calc(var(--content-height) * var(--widget-clock-font) / 1.14);
line-height: 1.14;
flex-shrink: 0; }
- div.dashboard-widget-clock.clock-digital .bold {
+ div.dashboard-widget-clock .clock-digital .bold {
font-weight: bold; }
- div.dashboard-widget-clock.clock-digital .clock-disabled {
+ div.dashboard-widget-clock .clock-digital .clock-disabled {
font-size: calc(var(--content-height) * 0.6 / 1.14);
color: #768d99;
font-weight: bold; }
-form.dashboard-widget-item .fields-group-description,
-form.dashboard-widget-item .fields-group-value,
-form.dashboard-widget-item .fields-group-time,
-form.dashboard-widget-item .fields-group-change-indicator {
+.dashboard-widget-inaccessible {
+ display: grid;
+ align-items: center;
+ padding-right: 10px;
+ padding-left: 10px;
+ text-align: center;
+ color: #768d99; }
+
+form.dashboard-widget-item .fields-group.fields-group-description, form.dashboard-widget-item .fields-group.fields-group-value, form.dashboard-widget-item .fields-group.fields-group-time, form.dashboard-widget-item .fields-group.fields-group-change-indicator {
display: grid;
grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-item .fields-group-description label,
- form.dashboard-widget-item .fields-group-value label,
- form.dashboard-widget-item .fields-group-time label,
- form.dashboard-widget-item .fields-group-change-indicator label {
+ form.dashboard-widget-item .fields-group.fields-group-description label, form.dashboard-widget-item .fields-group.fields-group-value label, form.dashboard-widget-item .fields-group.fields-group-time label, form.dashboard-widget-item .fields-group.fields-group-change-indicator label {
text-align: right; }
- form.dashboard-widget-item .fields-group-description hr,
- form.dashboard-widget-item .fields-group-value hr,
- form.dashboard-widget-item .fields-group-time hr,
- form.dashboard-widget-item .fields-group-change-indicator hr {
+ form.dashboard-widget-item .fields-group.fields-group-description hr, form.dashboard-widget-item .fields-group.fields-group-value hr, form.dashboard-widget-item .fields-group.fields-group-time hr, form.dashboard-widget-item .fields-group.fields-group-change-indicator hr {
grid-column: 1 / -1;
margin: 0;
width: 100%;
border: solid #ebeef0;
border-width: 1px 0 0 0; }
- form.dashboard-widget-item .fields-group-description .field-fluid,
- form.dashboard-widget-item .fields-group-value .field-fluid,
- form.dashboard-widget-item .fields-group-time .field-fluid,
- form.dashboard-widget-item .fields-group-change-indicator .field-fluid {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-fluid, form.dashboard-widget-item .fields-group.fields-group-value .field-fluid, form.dashboard-widget-item .fields-group.fields-group-time .field-fluid, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-fluid {
grid-column: 2 / -1; }
- form.dashboard-widget-item .fields-group-description .offset-3,
- form.dashboard-widget-item .fields-group-value .offset-3,
- form.dashboard-widget-item .fields-group-time .offset-3,
- form.dashboard-widget-item .fields-group-change-indicator .offset-3 {
+ form.dashboard-widget-item .fields-group.fields-group-description .offset-3, form.dashboard-widget-item .fields-group.fields-group-value .offset-3, form.dashboard-widget-item .fields-group.fields-group-time .offset-3, form.dashboard-widget-item .fields-group.fields-group-change-indicator .offset-3 {
grid-column-start: 3; }
- form.dashboard-widget-item .fields-group-description .field-size input,
- form.dashboard-widget-item .fields-group-value .field-size input,
- form.dashboard-widget-item .fields-group-time .field-size input,
- form.dashboard-widget-item .fields-group-change-indicator .field-size input {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-size input, form.dashboard-widget-item .fields-group.fields-group-value .field-size input, form.dashboard-widget-item .fields-group.fields-group-time .field-size input, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-size input {
margin-right: 5px; }
- form.dashboard-widget-item .fields-group-description .form-field,
- form.dashboard-widget-item .fields-group-value .form-field,
- form.dashboard-widget-item .fields-group-time .form-field,
- form.dashboard-widget-item .fields-group-change-indicator .form-field {
+ form.dashboard-widget-item .fields-group.fields-group-description .form-field, form.dashboard-widget-item .fields-group.fields-group-value .form-field, form.dashboard-widget-item .fields-group.fields-group-time .form-field, form.dashboard-widget-item .fields-group.fields-group-change-indicator .form-field {
line-height: 24px; }
-form.dashboard-widget-item .fields-group-description .form-field:nth-child(1) {
+form.dashboard-widget-item .fields-group.fields-group-description .form-field:nth-child(1) {
grid-column: 1 / -1; }
-form.dashboard-widget-item .fields-group-value {
+form.dashboard-widget-item .fields-group.fields-group-value {
grid-template-columns: minmax(100px, max-content) 3fr max-content auto; }
- form.dashboard-widget-item .fields-group-value .units-show {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show {
display: flex; }
- form.dashboard-widget-item .fields-group-value .units-show label[for='units'] {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show label[for='units'] {
width: 100%; }
-form.dashboard-widget-item .fields-group-change-indicator {
+form.dashboard-widget-item .fields-group.fields-group-change-indicator {
grid-template-columns: repeat(3, max-content 96px); }
-form.dashboard-widget-item .fields-group-change-indicator .input-color-picker {
- display: block; }
+ form.dashboard-widget-item .fields-group.fields-group-change-indicator .input-color-picker {
+ display: block; }
-div.dashboard-widget-item {
+div.dashboard-widget-item > div {
box-sizing: border-box;
height: 100%;
padding: 10px;
overflow-x: hidden; }
- div.dashboard-widget-item a {
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- height: 100%;
- color: inherit; }
- div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
- border: none; }
- div.dashboard-widget-item a > div {
- display: flex;
- flex: 1 1 calc(100% / 3); }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-value,
- div.dashboard-widget-item .item-time {
- flex: 1 1 auto;
- max-width: 100%; }
- div.dashboard-widget-item .item-value {
+div.dashboard-widget-item a {
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ color: inherit; }
+ div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
+ border: none; }
+ div.dashboard-widget-item a > div {
display: flex;
- flex-wrap: wrap;
- margin: 0 5px; }
- div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
- flex: 0 0 100%; }
- div.dashboard-widget-item .item-value > .units:first-child {
- margin-bottom: -0.07em; }
- div.dashboard-widget-item .item-value > .units:last-child {
- margin-top: -0.07em; }
- div.dashboard-widget-item .item-value.type-text {
+ flex: 1 1 calc(100% / 3); }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-value,
+div.dashboard-widget-item .item-time {
+ flex: 1 1 auto;
+ max-width: 100%; }
+div.dashboard-widget-item .item-value {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 5px; }
+ div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
+ flex: 0 0 100%; }
+ div.dashboard-widget-item .item-value > .units:first-child {
+ margin-bottom: -0.07em; }
+ div.dashboard-widget-item .item-value > .units:last-child {
+ margin-top: -0.07em; }
+ div.dashboard-widget-item .item-value.type-text {
+ min-width: 0; }
+ div.dashboard-widget-item .item-value.type-text .item-value-content {
min-width: 0; }
- div.dashboard-widget-item .item-value.type-text .item-value-content {
- min-width: 0; }
- div.dashboard-widget-item .item-value-content {
- display: flex;
- align-items: baseline;
- overflow: hidden; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-time,
- div.dashboard-widget-item .type-text .value {
- display: block;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .value,
- div.dashboard-widget-item .decimals,
- div.dashboard-widget-item .units,
- div.dashboard-widget-item .item-time {
- font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
- line-height: 1.14; }
- div.dashboard-widget-item .units:not(:last-child),
- div.dashboard-widget-item .change-indicator:not(:last-child) {
- margin-right: 5px; }
- div.dashboard-widget-item .units:not(:first-child),
- div.dashboard-widget-item .change-indicator:not(:first-child) {
- margin-left: 5px; }
- div.dashboard-widget-item .svg-arrow {
- height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
- div.dashboard-widget-item .item-value-no-data {
- color: #768d99; }
- div.dashboard-widget-item .left {
- justify-content: flex-start;
- max-width: max-content;
- margin-right: auto; }
- div.dashboard-widget-item .center {
- justify-content: center; }
- div.dashboard-widget-item .right {
- justify-content: flex-end;
- max-width: max-content;
- margin-left: auto; }
- div.dashboard-widget-item .top {
- align-self: flex-start; }
- div.dashboard-widget-item .middle {
- align-self: center; }
- div.dashboard-widget-item .bottom {
- align-self: flex-end; }
- div.dashboard-widget-item .bold {
- font-weight: bold; }
+div.dashboard-widget-item .item-value-content {
+ display: flex;
+ align-items: baseline;
+ overflow: hidden; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-time,
+div.dashboard-widget-item .type-text .value {
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .value,
+div.dashboard-widget-item .decimals,
+div.dashboard-widget-item .units,
+div.dashboard-widget-item .item-time {
+ font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
+ line-height: 1.14; }
+div.dashboard-widget-item .units:not(:last-child),
+div.dashboard-widget-item .change-indicator:not(:last-child) {
+ margin-right: 5px; }
+div.dashboard-widget-item .units:not(:first-child),
+div.dashboard-widget-item .change-indicator:not(:first-child) {
+ margin-left: 5px; }
+div.dashboard-widget-item .svg-arrow {
+ height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
+div.dashboard-widget-item .item-value-no-data {
+ color: #768d99; }
+div.dashboard-widget-item .left {
+ justify-content: flex-start;
+ max-width: max-content;
+ margin-right: auto; }
+div.dashboard-widget-item .center {
+ justify-content: center; }
+div.dashboard-widget-item .right {
+ justify-content: flex-end;
+ max-width: max-content;
+ margin-left: auto; }
+div.dashboard-widget-item .top {
+ align-self: flex-start; }
+div.dashboard-widget-item .middle {
+ align-self: center; }
+div.dashboard-widget-item .bottom {
+ align-self: flex-end; }
+div.dashboard-widget-item .bold {
+ font-weight: bold; }
.dashboard-widget-item .svg-arrow-up {
fill: #3DC51D; }
@@ -1692,40 +1733,47 @@ div.dashboard-widget-slareport .date-vertical {
writing-mode: vertical-lr;
transform: rotate(180deg); }
+form.dashboard-widget-svggraph .svg-graph-preview,
form.dashboard-widget-svggraph .graph-widget-config-tabs {
- padding: 10px 0; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
- margin-right: 0;
- margin-left: 0;
- border-top: 1px solid #dfe4e7; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
- position: sticky;
+ grid-column: 1 / -1; }
+form.dashboard-widget-svggraph .svg-graph-preview {
+ position: relative;
+ min-width: 1110px;
+ height: 300px; }
+ form.dashboard-widget-svggraph .svg-graph-preview > div {
+ position: absolute;
top: 0;
+ right: 0;
+ left: 0;
+ margin: 0 -10px;
+ height: 300px;
background: #ffffff;
z-index: 3; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
+ border-top: 1px solid #dfe4e7; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
+ position: sticky;
+ top: 0;
+ background: #ffffff;
+ z-index: 3; }
form.dashboard-widget-svggraph .table-forms-container, form.dashboard-widget-svggraph .browser-warning-container {
+ margin: -10px 0 0 0;
border: 1px solid #dfe4e7;
border-top: none; }
form.dashboard-widget-svggraph .table-forms-separator {
padding: 0; }
-form.dashboard-widget-svggraph .dataset-head {
- display: grid;
- grid-template-columns: 24px 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start; }
+form.dashboard-widget-svggraph .dataset-head,
form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body {
- display: grid;
- grid-template-columns: 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start;
- position: relative;
- margin-top: 10px; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid {
- padding-top: 0; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid:first-child {
- grid-column-start: 2; }
+ display: contents; }
+form.dashboard-widget-svggraph .dataset-head .multiselect {
+ width: 100%; }
+form.dashboard-widget-svggraph .dataset-body .form-grid {
+ padding-top: 0; }
+ form.dashboard-widget-svggraph .dataset-body .form-grid:first-child {
+ grid-column-start: 3; }
form.dashboard-widget-svggraph .drag-icon {
position: absolute;
+ top: 5px;
left: -14px; }
form.dashboard-widget-svggraph .td-drag-icon .drag-icon {
top: 0;
@@ -1747,13 +1795,13 @@ form.dashboard-widget-svggraph .list-vertical-accordion {
overflow: visible;
margin-top: -5px;
margin-bottom: -5px; }
- form.dashboard-widget-svggraph .list-vertical-accordion .list-accordion-item-head {
- padding: 0; }
form.dashboard-widget-svggraph .list-accordion-item {
position: relative;
- width: 100%;
- padding: 5px 0;
- list-style-type: none; }
+ display: grid;
+ grid-template-columns: 24px 24px 1fr 1fr 24px;
+ grid-gap: 10px;
+ align-items: start;
+ padding: 5px 0; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-opened::before {
content: ' ';
position: absolute;
@@ -1765,8 +1813,6 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .multiselect {
height: 24px;
overflow: hidden; }
- form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
- display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .table-forms-separator {
border: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table thead,
@@ -1774,6 +1820,8 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-handle,
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-action {
display: none; }
+ form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
+ display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .items-list {
padding-left: 0; }
form.dashboard-widget-svggraph .single-item-table .table-col-handle {
@@ -1792,11 +1840,83 @@ form.dashboard-widget-svggraph .single-item-table .single-item-table-row:last-ch
padding-bottom: 0; }
form.dashboard-widget-svggraph .single-item-table tfoot td {
padding: 5px 5px 5px 10px; }
+form.dashboard-widget-svggraph .overrides-list {
+ position: relative;
+ margin: -5px 0 -5px 15px; }
+form.dashboard-widget-svggraph .overrides-list-item {
+ position: relative;
+ display: grid;
+ grid-template-columns: 1fr 1fr 24px;
+ grid-gap: 5px 10px;
+ align-items: start;
+ padding: 5px 0; }
+ form.dashboard-widget-svggraph .overrides-list-item.sortable {
+ overflow: visible;
+ margin-top: -5px;
+ margin-bottom: -5px; }
+ form.dashboard-widget-svggraph .overrides-list-item .multiselect {
+ width: 100%; }
+ form.dashboard-widget-svggraph .overrides-list-item .btn-remove {
+ right: 0;
+ top: 0;
+ vertical-align: baseline; }
+form.dashboard-widget-svggraph .overrides-foot {
+ padding: 5px 0; }
+form.dashboard-widget-svggraph .overrides-options-list {
+ grid-column: 1 / -1;
+ padding: 0 24px 8px 0;
+ border-bottom: 1px solid #ebeef0;
+ white-space: normal; }
+ form.dashboard-widget-svggraph .overrides-options-list > li {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 2px;
+ line-height: 22px;
+ white-space: nowrap; }
+ form.dashboard-widget-svggraph .overrides-options-list > li .color-picker {
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ position: relative;
+ padding: 1px 18px 1px 1px;
+ background-color: #768d99;
+ border-radius: 2px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > span {
+ color: white;
+ padding-left: 8px;
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > input[type=text] {
+ border-style: none;
+ line-height: 22px;
+ min-height: 22px;
+ width: 85px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ position: absolute;
+ right: 0;
+ top: 0;
+ min-height: 24px; }
+ form.dashboard-widget-svggraph .overrides-options-list .btn-alt .plus-icon {
+ margin-right: 0; }
+ form.dashboard-widget-svggraph .overrides-options-list .color-picker .color-picker-preview {
+ margin: 1px;
+ width: 20px;
+ min-height: 20px;
+ background-position: -323px -411px; }
form.dashboard-widget-svggraph .no-items-message {
display: none;
line-height: 24px;
color: #768d99; }
+[theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ border: 1px solid #0275b8;
+ background-color: transparent !important; }
+ [theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
+[theme="hc-light"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
form.dashboard-widget-tophosts #list_columns .text {
max-width: 250px; }
form.dashboard-widget-tophosts #column {
@@ -2569,6 +2689,49 @@ div.dashboard-widget-tophosts z-bar-gauge {
font-size: 0;
border-left: 1px solid #ebeef0; }
+section {
+ background-color: #ffffff;
+ border: 1px solid #dfe4e7; }
+ section .section-head {
+ display: flex;
+ height: 32px;
+ line-height: 32px; }
+ section .section-head h4 {
+ padding: 0 10px;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-weight: bold;
+ line-height: inherit;
+ color: #3c5563; }
+ section .section-toggle {
+ width: 24px;
+ height: 24px;
+ margin: 2px 2px 0 auto;
+ background: url("../img/icon-sprite.svg?20220722") no-repeat -6px -654px; }
+ section .section-foot {
+ padding: 0 10px;
+ text-align: right;
+ line-height: 32px;
+ color: #768d99; }
+ section.section-collapsed .section-body,
+ section.section-collapsed .section-foot {
+ display: none; }
+ section.section-collapsed .section-toggle {
+ background-position: -6px -689px; }
+ section:not(:last-child) {
+ margin-bottom: 10px; }
+ section .list-table {
+ border: 0; }
+ section .list-table tbody tr:last-child td {
+ border-bottom: 1px solid #ebeef0; }
+ section .list-table td:first-child,
+ section .list-table th:first-child {
+ padding-left: 10px; }
+ section .list-table td:last-child,
+ section .list-table th:last-child {
+ padding-right: 10px; }
+
.service-info {
margin: -10px 0;
border-left: 4px solid #429e47; }
@@ -4548,13 +4711,13 @@ button {
width: 24px;
height: 24px; }
-.filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
+section .section-toggle, .filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
border: 0;
min-height: 0;
padding: 0;
opacity: .5;
transition: opacity .2s ease-out; }
- .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
+ section [disabled].section-toggle, .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, section [disabled].section-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, section [disabled].section-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, section [disabled].section-toggle:active, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
background-color: transparent;
opacity: .25; }
@@ -4582,7 +4745,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
.inaccessible .subfilter-enabled {
color: #bfbfbf; }
-.filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
+section .section-toggle:hover, .filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, section .section-toggle:focus, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, section .section-toggle:active, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
background-color: transparent;
opacity: 1; }
@@ -4675,16 +4838,16 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
content: ''; }
.icon-tree-top-bottom::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -300px; }
+ background-position: -84px -300px; }
.icon-tree-top-bottom-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -334px; }
+ background-position: -84px -334px; }
.icon-tree-top-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -372px; }
+ background-position: -84px -372px; }
.icon-tree-empty::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -350px; }
+ background-position: -84px -350px; }
.icon-cal {
background: transparent url("../img/icon-sprite.svg?20220722") no-repeat -42px -834px; }
@@ -4965,7 +5128,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
overflow: hidden;
margin: 0 10px; }
.overlay-dialogue.modal .dashboard-widget-head {
- margin-bottom: 14px; }
+ margin-bottom: 12px; }
.overlay-dialogue.modal .dashboard-widget-head .icon-doc-link {
margin-right: -26px; }
.overlay-dialogue.modal .dashboard-widget-head .overlay-close-btn {
@@ -4978,9 +5141,11 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
width: 100%;
max-height: calc(100vh - 220px);
max-width: inherit;
- margin: 0 -10px 10px;
+ margin: 0 -10px 8px;
padding: 0 10px;
position: relative; }
+ .overlay-dialogue.modal .overlay-dialogue-body > form {
+ padding: 2px 0; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-td-right {
padding-right: 8px; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-row-with-second-field {
@@ -5377,20 +5542,6 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
stroke: #e33734;
stroke-width: 2px; }
-.svg-graph-preview {
- margin-top: 10px;
- min-width: 1120px;
- height: 300px;
- position: relative; }
- .svg-graph-preview > div {
- background: #ffffff;
- height: 300px;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- z-index: 3; }
-
.svg-graph-hintbox {
font-size: 12px;
line-height: 18px;
@@ -5943,22 +6094,22 @@ span.is-loading {
padding: 10px 0 0;
text-align: center; }
-.dashboard-grid-widget-content, div.dashboard-widget-item, .msg-details ul, z-select button.focusable,
+.dashboard-grid-widget-content, div.dashboard-widget-item > div, .msg-details ul, z-select button.focusable,
.z-select button.focusable, z-select .list,
.z-select .list, .multiselect-available, textarea, select, .setup-right-body, .overlay-dialogue.modal .overlay-dialogue-body, .overlay-dialogue .hintbox-wrap, .overlay-dialogue .maps-container, .notif-body, .debug-output, .overlay-descr, .overflow-table, .import-compare .toc,
.import-compare .diff {
scrollbar-width: thin; }
- .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
+ .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item > div::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
.z-select button.focusable::-webkit-scrollbar, z-select .list::-webkit-scrollbar,
.z-select .list::-webkit-scrollbar, .multiselect-available::-webkit-scrollbar, textarea::-webkit-scrollbar, select::-webkit-scrollbar, .setup-right-body::-webkit-scrollbar, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar, .overlay-dialogue .maps-container::-webkit-scrollbar, .notif-body::-webkit-scrollbar, .debug-output::-webkit-scrollbar, .overlay-descr::-webkit-scrollbar, .overflow-table::-webkit-scrollbar, .import-compare .toc::-webkit-scrollbar,
.import-compare .diff::-webkit-scrollbar {
width: 9px; }
- .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
+ .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item > div::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
.z-select button.focusable::-webkit-scrollbar-track, z-select .list::-webkit-scrollbar-track,
.z-select .list::-webkit-scrollbar-track, .multiselect-available::-webkit-scrollbar-track, textarea::-webkit-scrollbar-track, select::-webkit-scrollbar-track, .setup-right-body::-webkit-scrollbar-track, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-track, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-track, .overlay-dialogue .maps-container::-webkit-scrollbar-track, .notif-body::-webkit-scrollbar-track, .debug-output::-webkit-scrollbar-track, .overlay-descr::-webkit-scrollbar-track, .overflow-table::-webkit-scrollbar-track, .import-compare .toc::-webkit-scrollbar-track,
.import-compare .diff::-webkit-scrollbar-track {
background-color: rgba(172, 187, 194, 0.55); }
- .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
+ .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item > div::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
.z-select button.focusable::-webkit-scrollbar-thumb, z-select .list::-webkit-scrollbar-thumb,
.z-select .list::-webkit-scrollbar-thumb, .multiselect-available::-webkit-scrollbar-thumb, textarea::-webkit-scrollbar-thumb, select::-webkit-scrollbar-thumb, .setup-right-body::-webkit-scrollbar-thumb, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-thumb, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-thumb, .overlay-dialogue .maps-container::-webkit-scrollbar-thumb, .notif-body::-webkit-scrollbar-thumb, .debug-output::-webkit-scrollbar-thumb, .overlay-descr::-webkit-scrollbar-thumb, .overflow-table::-webkit-scrollbar-thumb, .import-compare .toc::-webkit-scrollbar-thumb,
.import-compare .diff::-webkit-scrollbar-thumb {
@@ -6099,53 +6250,6 @@ svg {
white-space: normal;
word-break: break-word; }
-.overrides-list {
- display: table;
- width: 90%;
- max-width: 738px;
- padding-left: 15px; }
- .overrides-list .overrides-list-item {
- display: table-row; }
- .overrides-list .overrides-list-item .btn-remove {
- position: relative;
- right: -73px;
- top: 3px; }
-
-.overrides-options-list {
- white-space: normal;
- padding: 5px 0 8px;
- margin-bottom: 10px;
- border-bottom: 1px solid #ebeef0; }
- .overrides-options-list > li {
- display: inline-block;
- margin: 2px 7px 2px 0;
- white-space: nowrap;
- vertical-align: middle; }
- .overrides-options-list > li > div {
- position: relative;
- padding: 1px 18px 1px 1px;
- background-color: #768d99;
- border-radius: 2px; }
- .overrides-options-list > li > div > span {
- color: white;
- padding-left: 8px;
- line-height: 22px; }
- .overrides-options-list > li > div > input[type=text] {
- border-style: none;
- line-height: 22px;
- min-height: 22px;
- width: 85px; }
- .overrides-options-list > li > div > .subfilter-disable-btn {
- position: absolute;
- right: 0;
- top: 0;
- min-height: 24px; }
- .overrides-options-list .color-picker .color-picker-preview {
- margin: 1px;
- width: 20px;
- min-height: 20px;
- background-position: -323px -411px; }
-
.list-accordion-foot > div {
display: table-cell;
padding-top: 10px; }
@@ -6186,63 +6290,6 @@ svg {
.visibility-hidden {
visibility: hidden; }
-.columns-wrapper {
- display: flex;
- flex-wrap: wrap;
- align-items: start; }
- .columns-wrapper.columns-nowrap {
- flex-wrap: nowrap; }
- .columns-wrapper.columns-2 > div,
- .columns-wrapper.columns-2 > li {
- display: block;
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper.columns-3 > div,
- .columns-wrapper.columns-3 > li {
- display: block;
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-5 {
- flex: 0 0 5%;
- max-width: 5%; }
- .columns-wrapper .column-10 {
- flex: 0 0 10%;
- max-width: 10%; }
- .columns-wrapper .column-15 {
- flex: 0 0 15%;
- max-width: 15%; }
- .columns-wrapper .column-20 {
- flex: 0 0 20%;
- max-width: 20%; }
- .columns-wrapper .column-33 {
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-35 {
- flex: 0 0 35%;
- max-width: 35%; }
- .columns-wrapper .column-40 {
- flex: 0 0 40%;
- max-width: 40%; }
- .columns-wrapper .column-50 {
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper .column-75 {
- flex: 0 0 75%;
- max-width: 75%; }
- .columns-wrapper .column-90 {
- flex: 0 0 90%;
- max-width: 90%; }
- .columns-wrapper .column-95 {
- flex: 0 0 95%;
- max-width: 95%; }
- .columns-wrapper .column-center {
- display: flex;
- justify-content: center;
- text-align: center; }
- .columns-wrapper .column-middle {
- display: flex;
- align-items: center; }
-
.preprocessing-list {
display: block;
max-width: 930px;
diff --git a/ui/assets/styles/dark-theme.css b/ui/assets/styles/dark-theme.css
index c3996a021b6..0d08da5017f 100644
--- a/ui/assets/styles/dark-theme.css
+++ b/ui/assets/styles/dark-theme.css
@@ -349,7 +349,9 @@ svg a {
top: 0;
left: 0;
transition: left .2s, top .2s; }
- .sortable .sortable-list .sortable-item:not(.sortable-dragging) {
+ .sortable .sortable-item {
+ box-sizing: border-box; }
+ .sortable .sortable-item:not(.sortable-dragging) {
transition: left .2s, top .2s; }
.sortable.sortable-dragging .sortable-item {
position: absolute; }
@@ -667,7 +669,6 @@ footer {
.form-grid {
display: grid;
- padding: 5px;
row-gap: 10px;
column-gap: 10px;
grid-template-columns: minmax(15%, max-content) auto; }
@@ -683,6 +684,9 @@ footer {
word-wrap: break-word; }
.form-grid > label.fields-group-label {
padding-top: 5px; }
+ .form-grid > label .icon-help-hint,
+ .form-grid > label .icon-info {
+ margin-left: 5px; }
.form-grid > .form-field,
.form-grid > .field-fluid,
.form-grid .form-actions {
@@ -897,6 +901,66 @@ footer {
.color-picker-dialogue .color-picker-input input {
padding-left: 25px; }
+.columns-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: start; }
+ .columns-wrapper.columns-nowrap {
+ flex-wrap: nowrap; }
+ .columns-wrapper.columns-2 > div,
+ .columns-wrapper.columns-2 > li {
+ display: block;
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper.columns-3 > div,
+ .columns-wrapper.columns-3 > li {
+ display: block;
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-5 {
+ flex: 0 0 5%;
+ max-width: 5%; }
+ .columns-wrapper .column-10 {
+ flex: 0 0 10%;
+ max-width: 10%; }
+ .columns-wrapper .column-15 {
+ flex: 0 0 15%;
+ max-width: 15%; }
+ .columns-wrapper .column-20 {
+ flex: 0 0 20%;
+ max-width: 20%; }
+ .columns-wrapper .column-33 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-35 {
+ flex: 0 0 35%;
+ max-width: 35%; }
+ .columns-wrapper .column-40 {
+ flex: 0 0 40%;
+ max-width: 40%; }
+ .columns-wrapper .column-50 {
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper .column-75 {
+ flex: 0 0 75%;
+ max-width: 75%; }
+ .columns-wrapper .column-90 {
+ flex: 0 0 90%;
+ max-width: 90%; }
+ .columns-wrapper .column-95 {
+ flex: 0 0 95%;
+ max-width: 95%; }
+ .columns-wrapper .column-center {
+ display: flex;
+ justify-content: center;
+ text-align: center; }
+ .columns-wrapper .column-middle {
+ display: flex;
+ align-items: center; }
+ .columns-wrapper > div:not(:last-child) section,
+ .columns-wrapper > ul:not(:last-child) section {
+ margin-right: 10px; }
+
.header-kioskmode-controls .dashboard-kioskmode-controls li {
margin-right: 6px; }
@@ -1446,8 +1510,6 @@ footer {
.dashboard-widget .msg-good,
.dashboard-widget .msg-warning {
margin: 0 10px; }
- .dashboard-widget.dashboard-widget-fluid {
- margin-right: 0; }
.dashboard-grid-widget-content .list-table th:first-child, .dashboard-grid-widget-content .list-table td:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table th:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table td:first-child, .dashboard-widget .list-table th:first-child, .dashboard-widget .list-table td:first-child, .overlay-dialogue .list-table th:first-child, .overlay-dialogue .list-table td:first-child {
padding-left: 10px; }
@@ -1508,30 +1570,22 @@ footer {
.wrapper.layout-kioskmode .dashboard-navigation {
display: none; }
-form.dashboard-widget-clock .fields-group-date,
-form.dashboard-widget-clock .fields-group-time,
-form.dashboard-widget-clock .fields-group-tzone {
+form.dashboard-widget-clock .fields-group.fields-group-date, form.dashboard-widget-clock .fields-group.fields-group-time, form.dashboard-widget-clock .fields-group.fields-group-tzone {
display: grid;
grid-template-columns: 60px 120px repeat(2, minmax(60px, max-content) auto);
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-clock .fields-group-date label,
- form.dashboard-widget-clock .fields-group-time label,
- form.dashboard-widget-clock .fields-group-tzone label {
+ form.dashboard-widget-clock .fields-group.fields-group-date label, form.dashboard-widget-clock .fields-group.fields-group-time label, form.dashboard-widget-clock .fields-group.fields-group-tzone label {
text-align: right; }
- form.dashboard-widget-clock .fields-group-date .field-size input,
- form.dashboard-widget-clock .fields-group-time .field-size input,
- form.dashboard-widget-clock .fields-group-tzone .field-size input {
+ form.dashboard-widget-clock .fields-group.fields-group-date .field-size input, form.dashboard-widget-clock .fields-group.fields-group-time .field-size input, form.dashboard-widget-clock .fields-group.fields-group-tzone .field-size input {
margin-right: 5px; }
-form.dashboard-widget-clock .fields-group-time .field-format {
+form.dashboard-widget-clock .fields-group.fields-group-time .field-format {
grid-column: 4 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-format {
- grid-column: 2 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-timezone {
+form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-timezone, form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-format {
grid-column: 2 / -1; }
-div.dashboard-widget-clock.clock-digital {
+div.dashboard-widget-clock .clock-digital {
box-sizing: border-box;
min-height: 100%;
padding: 10px;
@@ -1539,9 +1593,9 @@ div.dashboard-widget-clock.clock-digital {
flex-direction: column;
justify-content: center;
align-items: center; }
- div.dashboard-widget-clock.clock-digital .clock-date,
- div.dashboard-widget-clock.clock-digital .clock-time,
- div.dashboard-widget-clock.clock-digital .clock-time-zone {
+ div.dashboard-widget-clock .clock-digital .clock-date,
+ div.dashboard-widget-clock .clock-digital .clock-time,
+ div.dashboard-widget-clock .clock-digital .clock-time-zone {
max-width: 100%;
white-space: nowrap;
overflow: hidden;
@@ -1549,150 +1603,137 @@ div.dashboard-widget-clock.clock-digital {
font-size: calc(var(--content-height) * var(--widget-clock-font) / 1.14);
line-height: 1.14;
flex-shrink: 0; }
- div.dashboard-widget-clock.clock-digital .bold {
+ div.dashboard-widget-clock .clock-digital .bold {
font-weight: bold; }
- div.dashboard-widget-clock.clock-digital .clock-disabled {
+ div.dashboard-widget-clock .clock-digital .clock-disabled {
font-size: calc(var(--content-height) * 0.6 / 1.14);
color: #737373;
font-weight: bold; }
-form.dashboard-widget-item .fields-group-description,
-form.dashboard-widget-item .fields-group-value,
-form.dashboard-widget-item .fields-group-time,
-form.dashboard-widget-item .fields-group-change-indicator {
+.dashboard-widget-inaccessible {
+ display: grid;
+ align-items: center;
+ padding-right: 10px;
+ padding-left: 10px;
+ text-align: center;
+ color: #737373; }
+
+form.dashboard-widget-item .fields-group.fields-group-description, form.dashboard-widget-item .fields-group.fields-group-value, form.dashboard-widget-item .fields-group.fields-group-time, form.dashboard-widget-item .fields-group.fields-group-change-indicator {
display: grid;
grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-item .fields-group-description label,
- form.dashboard-widget-item .fields-group-value label,
- form.dashboard-widget-item .fields-group-time label,
- form.dashboard-widget-item .fields-group-change-indicator label {
+ form.dashboard-widget-item .fields-group.fields-group-description label, form.dashboard-widget-item .fields-group.fields-group-value label, form.dashboard-widget-item .fields-group.fields-group-time label, form.dashboard-widget-item .fields-group.fields-group-change-indicator label {
text-align: right; }
- form.dashboard-widget-item .fields-group-description hr,
- form.dashboard-widget-item .fields-group-value hr,
- form.dashboard-widget-item .fields-group-time hr,
- form.dashboard-widget-item .fields-group-change-indicator hr {
+ form.dashboard-widget-item .fields-group.fields-group-description hr, form.dashboard-widget-item .fields-group.fields-group-value hr, form.dashboard-widget-item .fields-group.fields-group-time hr, form.dashboard-widget-item .fields-group.fields-group-change-indicator hr {
grid-column: 1 / -1;
margin: 0;
width: 100%;
border: solid #383838;
border-width: 1px 0 0 0; }
- form.dashboard-widget-item .fields-group-description .field-fluid,
- form.dashboard-widget-item .fields-group-value .field-fluid,
- form.dashboard-widget-item .fields-group-time .field-fluid,
- form.dashboard-widget-item .fields-group-change-indicator .field-fluid {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-fluid, form.dashboard-widget-item .fields-group.fields-group-value .field-fluid, form.dashboard-widget-item .fields-group.fields-group-time .field-fluid, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-fluid {
grid-column: 2 / -1; }
- form.dashboard-widget-item .fields-group-description .offset-3,
- form.dashboard-widget-item .fields-group-value .offset-3,
- form.dashboard-widget-item .fields-group-time .offset-3,
- form.dashboard-widget-item .fields-group-change-indicator .offset-3 {
+ form.dashboard-widget-item .fields-group.fields-group-description .offset-3, form.dashboard-widget-item .fields-group.fields-group-value .offset-3, form.dashboard-widget-item .fields-group.fields-group-time .offset-3, form.dashboard-widget-item .fields-group.fields-group-change-indicator .offset-3 {
grid-column-start: 3; }
- form.dashboard-widget-item .fields-group-description .field-size input,
- form.dashboard-widget-item .fields-group-value .field-size input,
- form.dashboard-widget-item .fields-group-time .field-size input,
- form.dashboard-widget-item .fields-group-change-indicator .field-size input {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-size input, form.dashboard-widget-item .fields-group.fields-group-value .field-size input, form.dashboard-widget-item .fields-group.fields-group-time .field-size input, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-size input {
margin-right: 5px; }
- form.dashboard-widget-item .fields-group-description .form-field,
- form.dashboard-widget-item .fields-group-value .form-field,
- form.dashboard-widget-item .fields-group-time .form-field,
- form.dashboard-widget-item .fields-group-change-indicator .form-field {
+ form.dashboard-widget-item .fields-group.fields-group-description .form-field, form.dashboard-widget-item .fields-group.fields-group-value .form-field, form.dashboard-widget-item .fields-group.fields-group-time .form-field, form.dashboard-widget-item .fields-group.fields-group-change-indicator .form-field {
line-height: 24px; }
-form.dashboard-widget-item .fields-group-description .form-field:nth-child(1) {
+form.dashboard-widget-item .fields-group.fields-group-description .form-field:nth-child(1) {
grid-column: 1 / -1; }
-form.dashboard-widget-item .fields-group-value {
+form.dashboard-widget-item .fields-group.fields-group-value {
grid-template-columns: minmax(100px, max-content) 3fr max-content auto; }
- form.dashboard-widget-item .fields-group-value .units-show {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show {
display: flex; }
- form.dashboard-widget-item .fields-group-value .units-show label[for='units'] {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show label[for='units'] {
width: 100%; }
-form.dashboard-widget-item .fields-group-change-indicator {
+form.dashboard-widget-item .fields-group.fields-group-change-indicator {
grid-template-columns: repeat(3, max-content 96px); }
-form.dashboard-widget-item .fields-group-change-indicator .input-color-picker {
- display: block; }
+ form.dashboard-widget-item .fields-group.fields-group-change-indicator .input-color-picker {
+ display: block; }
-div.dashboard-widget-item {
+div.dashboard-widget-item > div {
box-sizing: border-box;
height: 100%;
padding: 10px;
overflow-x: hidden; }
- div.dashboard-widget-item a {
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- height: 100%;
- color: inherit; }
- div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
- border: none; }
- div.dashboard-widget-item a > div {
- display: flex;
- flex: 1 1 calc(100% / 3); }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-value,
- div.dashboard-widget-item .item-time {
- flex: 1 1 auto;
- max-width: 100%; }
- div.dashboard-widget-item .item-value {
+div.dashboard-widget-item a {
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ color: inherit; }
+ div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
+ border: none; }
+ div.dashboard-widget-item a > div {
display: flex;
- flex-wrap: wrap;
- margin: 0 5px; }
- div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
- flex: 0 0 100%; }
- div.dashboard-widget-item .item-value > .units:first-child {
- margin-bottom: -0.07em; }
- div.dashboard-widget-item .item-value > .units:last-child {
- margin-top: -0.07em; }
- div.dashboard-widget-item .item-value.type-text {
+ flex: 1 1 calc(100% / 3); }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-value,
+div.dashboard-widget-item .item-time {
+ flex: 1 1 auto;
+ max-width: 100%; }
+div.dashboard-widget-item .item-value {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 5px; }
+ div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
+ flex: 0 0 100%; }
+ div.dashboard-widget-item .item-value > .units:first-child {
+ margin-bottom: -0.07em; }
+ div.dashboard-widget-item .item-value > .units:last-child {
+ margin-top: -0.07em; }
+ div.dashboard-widget-item .item-value.type-text {
+ min-width: 0; }
+ div.dashboard-widget-item .item-value.type-text .item-value-content {
min-width: 0; }
- div.dashboard-widget-item .item-value.type-text .item-value-content {
- min-width: 0; }
- div.dashboard-widget-item .item-value-content {
- display: flex;
- align-items: baseline;
- overflow: hidden; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-time,
- div.dashboard-widget-item .type-text .value {
- display: block;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .value,
- div.dashboard-widget-item .decimals,
- div.dashboard-widget-item .units,
- div.dashboard-widget-item .item-time {
- font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
- line-height: 1.14; }
- div.dashboard-widget-item .units:not(:last-child),
- div.dashboard-widget-item .change-indicator:not(:last-child) {
- margin-right: 5px; }
- div.dashboard-widget-item .units:not(:first-child),
- div.dashboard-widget-item .change-indicator:not(:first-child) {
- margin-left: 5px; }
- div.dashboard-widget-item .svg-arrow {
- height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
- div.dashboard-widget-item .item-value-no-data {
- color: #737373; }
- div.dashboard-widget-item .left {
- justify-content: flex-start;
- max-width: max-content;
- margin-right: auto; }
- div.dashboard-widget-item .center {
- justify-content: center; }
- div.dashboard-widget-item .right {
- justify-content: flex-end;
- max-width: max-content;
- margin-left: auto; }
- div.dashboard-widget-item .top {
- align-self: flex-start; }
- div.dashboard-widget-item .middle {
- align-self: center; }
- div.dashboard-widget-item .bottom {
- align-self: flex-end; }
- div.dashboard-widget-item .bold {
- font-weight: bold; }
+div.dashboard-widget-item .item-value-content {
+ display: flex;
+ align-items: baseline;
+ overflow: hidden; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-time,
+div.dashboard-widget-item .type-text .value {
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .value,
+div.dashboard-widget-item .decimals,
+div.dashboard-widget-item .units,
+div.dashboard-widget-item .item-time {
+ font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
+ line-height: 1.14; }
+div.dashboard-widget-item .units:not(:last-child),
+div.dashboard-widget-item .change-indicator:not(:last-child) {
+ margin-right: 5px; }
+div.dashboard-widget-item .units:not(:first-child),
+div.dashboard-widget-item .change-indicator:not(:first-child) {
+ margin-left: 5px; }
+div.dashboard-widget-item .svg-arrow {
+ height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
+div.dashboard-widget-item .item-value-no-data {
+ color: #737373; }
+div.dashboard-widget-item .left {
+ justify-content: flex-start;
+ max-width: max-content;
+ margin-right: auto; }
+div.dashboard-widget-item .center {
+ justify-content: center; }
+div.dashboard-widget-item .right {
+ justify-content: flex-end;
+ max-width: max-content;
+ margin-left: auto; }
+div.dashboard-widget-item .top {
+ align-self: flex-start; }
+div.dashboard-widget-item .middle {
+ align-self: center; }
+div.dashboard-widget-item .bottom {
+ align-self: flex-end; }
+div.dashboard-widget-item .bold {
+ font-weight: bold; }
.dashboard-widget-item .svg-arrow-up {
fill: #3DC51D; }
@@ -1705,40 +1746,47 @@ div.dashboard-widget-slareport .date-vertical {
writing-mode: vertical-lr;
transform: rotate(180deg); }
+form.dashboard-widget-svggraph .svg-graph-preview,
form.dashboard-widget-svggraph .graph-widget-config-tabs {
- padding: 10px 0; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
- margin-right: 0;
- margin-left: 0;
- border-top: 1px solid #303030; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
- position: sticky;
+ grid-column: 1 / -1; }
+form.dashboard-widget-svggraph .svg-graph-preview {
+ position: relative;
+ min-width: 1110px;
+ height: 300px; }
+ form.dashboard-widget-svggraph .svg-graph-preview > div {
+ position: absolute;
top: 0;
+ right: 0;
+ left: 0;
+ margin: 0 -10px;
+ height: 300px;
background: #2b2b2b;
z-index: 3; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
+ border-top: 1px solid #303030; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
+ position: sticky;
+ top: 0;
+ background: #2b2b2b;
+ z-index: 3; }
form.dashboard-widget-svggraph .table-forms-container, form.dashboard-widget-svggraph .browser-warning-container {
+ margin: -10px 0 0 0;
border: 1px solid #303030;
border-top: none; }
form.dashboard-widget-svggraph .table-forms-separator {
padding: 0; }
-form.dashboard-widget-svggraph .dataset-head {
- display: grid;
- grid-template-columns: 24px 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start; }
+form.dashboard-widget-svggraph .dataset-head,
form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body {
- display: grid;
- grid-template-columns: 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start;
- position: relative;
- margin-top: 10px; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid {
- padding-top: 0; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid:first-child {
- grid-column-start: 2; }
+ display: contents; }
+form.dashboard-widget-svggraph .dataset-head .multiselect {
+ width: 100%; }
+form.dashboard-widget-svggraph .dataset-body .form-grid {
+ padding-top: 0; }
+ form.dashboard-widget-svggraph .dataset-body .form-grid:first-child {
+ grid-column-start: 3; }
form.dashboard-widget-svggraph .drag-icon {
position: absolute;
+ top: 5px;
left: -14px; }
form.dashboard-widget-svggraph .td-drag-icon .drag-icon {
top: 0;
@@ -1760,13 +1808,13 @@ form.dashboard-widget-svggraph .list-vertical-accordion {
overflow: visible;
margin-top: -5px;
margin-bottom: -5px; }
- form.dashboard-widget-svggraph .list-vertical-accordion .list-accordion-item-head {
- padding: 0; }
form.dashboard-widget-svggraph .list-accordion-item {
position: relative;
- width: 100%;
- padding: 5px 0;
- list-style-type: none; }
+ display: grid;
+ grid-template-columns: 24px 24px 1fr 1fr 24px;
+ grid-gap: 10px;
+ align-items: start;
+ padding: 5px 0; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-opened::before {
content: ' ';
position: absolute;
@@ -1778,8 +1826,6 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .multiselect {
height: 24px;
overflow: hidden; }
- form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
- display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .table-forms-separator {
border: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table thead,
@@ -1787,6 +1833,8 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-handle,
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-action {
display: none; }
+ form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
+ display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .items-list {
padding-left: 0; }
form.dashboard-widget-svggraph .single-item-table .table-col-handle {
@@ -1805,11 +1853,83 @@ form.dashboard-widget-svggraph .single-item-table .single-item-table-row:last-ch
padding-bottom: 0; }
form.dashboard-widget-svggraph .single-item-table tfoot td {
padding: 5px 5px 5px 10px; }
+form.dashboard-widget-svggraph .overrides-list {
+ position: relative;
+ margin: -5px 0 -5px 15px; }
+form.dashboard-widget-svggraph .overrides-list-item {
+ position: relative;
+ display: grid;
+ grid-template-columns: 1fr 1fr 24px;
+ grid-gap: 5px 10px;
+ align-items: start;
+ padding: 5px 0; }
+ form.dashboard-widget-svggraph .overrides-list-item.sortable {
+ overflow: visible;
+ margin-top: -5px;
+ margin-bottom: -5px; }
+ form.dashboard-widget-svggraph .overrides-list-item .multiselect {
+ width: 100%; }
+ form.dashboard-widget-svggraph .overrides-list-item .btn-remove {
+ right: 0;
+ top: 0;
+ vertical-align: baseline; }
+form.dashboard-widget-svggraph .overrides-foot {
+ padding: 5px 0; }
+form.dashboard-widget-svggraph .overrides-options-list {
+ grid-column: 1 / -1;
+ padding: 0 24px 8px 0;
+ border-bottom: 1px solid #383838;
+ white-space: normal; }
+ form.dashboard-widget-svggraph .overrides-options-list > li {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 2px;
+ line-height: 22px;
+ white-space: nowrap; }
+ form.dashboard-widget-svggraph .overrides-options-list > li .color-picker {
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ position: relative;
+ padding: 1px 18px 1px 1px;
+ background-color: #4f4f4f;
+ border-radius: 2px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > span {
+ color: white;
+ padding-left: 8px;
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > input[type=text] {
+ border-style: none;
+ line-height: 22px;
+ min-height: 22px;
+ width: 85px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ position: absolute;
+ right: 0;
+ top: 0;
+ min-height: 24px; }
+ form.dashboard-widget-svggraph .overrides-options-list .btn-alt .plus-icon {
+ margin-right: 0; }
+ form.dashboard-widget-svggraph .overrides-options-list .color-picker .color-picker-preview {
+ margin: 1px;
+ width: 20px;
+ min-height: 20px;
+ background-position: -323px -411px; }
form.dashboard-widget-svggraph .no-items-message {
display: none;
line-height: 24px;
color: #737373; }
+[theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ border: 1px solid #69808d;
+ background-color: transparent !important; }
+ [theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
+[theme="hc-light"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
form.dashboard-widget-tophosts #list_columns .text {
max-width: 250px; }
form.dashboard-widget-tophosts #column {
@@ -2582,6 +2702,49 @@ div.dashboard-widget-tophosts z-bar-gauge {
font-size: 0;
border-left: 1px solid #0e1012; }
+section {
+ background-color: #2b2b2b;
+ border: 1px solid #303030; }
+ section .section-head {
+ display: flex;
+ height: 32px;
+ line-height: 32px; }
+ section .section-head h4 {
+ padding: 0 10px;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-weight: bold;
+ line-height: inherit;
+ color: white; }
+ section .section-toggle {
+ width: 24px;
+ height: 24px;
+ margin: 2px 2px 0 auto;
+ background: url("../img/icon-sprite.svg?20220722") no-repeat -6px -654px; }
+ section .section-foot {
+ padding: 0 10px;
+ text-align: right;
+ line-height: 32px;
+ color: #737373; }
+ section.section-collapsed .section-body,
+ section.section-collapsed .section-foot {
+ display: none; }
+ section.section-collapsed .section-toggle {
+ background-position: -6px -689px; }
+ section:not(:last-child) {
+ margin-bottom: 10px; }
+ section .list-table {
+ border: 0; }
+ section .list-table tbody tr:last-child td {
+ border-bottom: 1px solid #383838; }
+ section .list-table td:first-child,
+ section .list-table th:first-child {
+ padding-left: 10px; }
+ section .list-table td:last-child,
+ section .list-table th:last-child {
+ padding-right: 10px; }
+
.service-info {
margin: -10px 0;
border-left: 4px solid #59db8f; }
@@ -4559,13 +4722,13 @@ button {
width: 24px;
height: 24px; }
-.filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
+section .section-toggle, .filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
border: 0;
min-height: 0;
padding: 0;
opacity: .5;
transition: opacity .2s ease-out; }
- .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
+ section [disabled].section-toggle, .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, section [disabled].section-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, section [disabled].section-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, section [disabled].section-toggle:active, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
background-color: transparent;
opacity: .25; }
@@ -4593,7 +4756,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
.inaccessible .subfilter-enabled {
color: #b2b2b2; }
-.filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
+section .section-toggle:hover, .filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, section .section-toggle:focus, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, section .section-toggle:active, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
background-color: transparent;
opacity: 1; }
@@ -4686,16 +4849,16 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
content: ''; }
.icon-tree-top-bottom::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -300px; }
+ background-position: -84px -300px; }
.icon-tree-top-bottom-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -334px; }
+ background-position: -84px -334px; }
.icon-tree-top-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -372px; }
+ background-position: -84px -372px; }
.icon-tree-empty::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -350px; }
+ background-position: -84px -350px; }
.icon-cal {
background: transparent url("../img/icon-sprite.svg?20220722") no-repeat -42px -834px; }
@@ -4976,7 +5139,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
overflow: hidden;
margin: 0 10px; }
.overlay-dialogue.modal .dashboard-widget-head {
- margin-bottom: 14px; }
+ margin-bottom: 12px; }
.overlay-dialogue.modal .dashboard-widget-head .icon-doc-link {
margin-right: -26px; }
.overlay-dialogue.modal .dashboard-widget-head .overlay-close-btn {
@@ -4989,9 +5152,11 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
width: 100%;
max-height: calc(100vh - 220px);
max-width: inherit;
- margin: 0 -10px 10px;
+ margin: 0 -10px 8px;
padding: 0 10px;
position: relative; }
+ .overlay-dialogue.modal .overlay-dialogue-body > form {
+ padding: 2px 0; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-td-right {
padding-right: 8px; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-row-with-second-field {
@@ -5388,20 +5553,6 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
stroke: #e45959;
stroke-width: 2px; }
-.svg-graph-preview {
- margin-top: 10px;
- min-width: 1120px;
- height: 300px;
- position: relative; }
- .svg-graph-preview > div {
- background: #2b2b2b;
- height: 300px;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- z-index: 3; }
-
.svg-graph-hintbox {
font-size: 12px;
line-height: 18px;
@@ -5954,22 +6105,22 @@ span.is-loading {
padding: 10px 0 0;
text-align: center; }
-.dashboard-grid-widget-content, div.dashboard-widget-item, .msg-details ul, z-select button.focusable,
+.dashboard-grid-widget-content, div.dashboard-widget-item > div, .msg-details ul, z-select button.focusable,
.z-select button.focusable, z-select .list,
.z-select .list, .multiselect-available, textarea, select, .setup-right-body, .overlay-dialogue.modal .overlay-dialogue-body, .overlay-dialogue .hintbox-wrap, .overlay-dialogue .maps-container, .notif-body, .debug-output, .overlay-descr, .overflow-table, .import-compare .toc,
.import-compare .diff {
scrollbar-width: thin; }
- .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
+ .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item > div::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
.z-select button.focusable::-webkit-scrollbar, z-select .list::-webkit-scrollbar,
.z-select .list::-webkit-scrollbar, .multiselect-available::-webkit-scrollbar, textarea::-webkit-scrollbar, select::-webkit-scrollbar, .setup-right-body::-webkit-scrollbar, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar, .overlay-dialogue .maps-container::-webkit-scrollbar, .notif-body::-webkit-scrollbar, .debug-output::-webkit-scrollbar, .overlay-descr::-webkit-scrollbar, .overflow-table::-webkit-scrollbar, .import-compare .toc::-webkit-scrollbar,
.import-compare .diff::-webkit-scrollbar {
width: 9px; }
- .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
+ .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item > div::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
.z-select button.focusable::-webkit-scrollbar-track, z-select .list::-webkit-scrollbar-track,
.z-select .list::-webkit-scrollbar-track, .multiselect-available::-webkit-scrollbar-track, textarea::-webkit-scrollbar-track, select::-webkit-scrollbar-track, .setup-right-body::-webkit-scrollbar-track, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-track, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-track, .overlay-dialogue .maps-container::-webkit-scrollbar-track, .notif-body::-webkit-scrollbar-track, .debug-output::-webkit-scrollbar-track, .overlay-descr::-webkit-scrollbar-track, .overflow-table::-webkit-scrollbar-track, .import-compare .toc::-webkit-scrollbar-track,
.import-compare .diff::-webkit-scrollbar-track {
background-color: #1f1f1f; }
- .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
+ .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item > div::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
.z-select button.focusable::-webkit-scrollbar-thumb, z-select .list::-webkit-scrollbar-thumb,
.z-select .list::-webkit-scrollbar-thumb, .multiselect-available::-webkit-scrollbar-thumb, textarea::-webkit-scrollbar-thumb, select::-webkit-scrollbar-thumb, .setup-right-body::-webkit-scrollbar-thumb, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-thumb, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-thumb, .overlay-dialogue .maps-container::-webkit-scrollbar-thumb, .notif-body::-webkit-scrollbar-thumb, .debug-output::-webkit-scrollbar-thumb, .overlay-descr::-webkit-scrollbar-thumb, .overflow-table::-webkit-scrollbar-thumb, .import-compare .toc::-webkit-scrollbar-thumb,
.import-compare .diff::-webkit-scrollbar-thumb {
@@ -6110,53 +6261,6 @@ svg {
white-space: normal;
word-break: break-word; }
-.overrides-list {
- display: table;
- width: 90%;
- max-width: 738px;
- padding-left: 15px; }
- .overrides-list .overrides-list-item {
- display: table-row; }
- .overrides-list .overrides-list-item .btn-remove {
- position: relative;
- right: -73px;
- top: 3px; }
-
-.overrides-options-list {
- white-space: normal;
- padding: 5px 0 8px;
- margin-bottom: 10px;
- border-bottom: 1px solid #383838; }
- .overrides-options-list > li {
- display: inline-block;
- margin: 2px 7px 2px 0;
- white-space: nowrap;
- vertical-align: middle; }
- .overrides-options-list > li > div {
- position: relative;
- padding: 1px 18px 1px 1px;
- background-color: #4f4f4f;
- border-radius: 2px; }
- .overrides-options-list > li > div > span {
- color: white;
- padding-left: 8px;
- line-height: 22px; }
- .overrides-options-list > li > div > input[type=text] {
- border-style: none;
- line-height: 22px;
- min-height: 22px;
- width: 85px; }
- .overrides-options-list > li > div > .subfilter-disable-btn {
- position: absolute;
- right: 0;
- top: 0;
- min-height: 24px; }
- .overrides-options-list .color-picker .color-picker-preview {
- margin: 1px;
- width: 20px;
- min-height: 20px;
- background-position: -323px -411px; }
-
.list-accordion-foot > div {
display: table-cell;
padding-top: 10px; }
@@ -6197,63 +6301,6 @@ svg {
.visibility-hidden {
visibility: hidden; }
-.columns-wrapper {
- display: flex;
- flex-wrap: wrap;
- align-items: start; }
- .columns-wrapper.columns-nowrap {
- flex-wrap: nowrap; }
- .columns-wrapper.columns-2 > div,
- .columns-wrapper.columns-2 > li {
- display: block;
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper.columns-3 > div,
- .columns-wrapper.columns-3 > li {
- display: block;
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-5 {
- flex: 0 0 5%;
- max-width: 5%; }
- .columns-wrapper .column-10 {
- flex: 0 0 10%;
- max-width: 10%; }
- .columns-wrapper .column-15 {
- flex: 0 0 15%;
- max-width: 15%; }
- .columns-wrapper .column-20 {
- flex: 0 0 20%;
- max-width: 20%; }
- .columns-wrapper .column-33 {
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-35 {
- flex: 0 0 35%;
- max-width: 35%; }
- .columns-wrapper .column-40 {
- flex: 0 0 40%;
- max-width: 40%; }
- .columns-wrapper .column-50 {
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper .column-75 {
- flex: 0 0 75%;
- max-width: 75%; }
- .columns-wrapper .column-90 {
- flex: 0 0 90%;
- max-width: 90%; }
- .columns-wrapper .column-95 {
- flex: 0 0 95%;
- max-width: 95%; }
- .columns-wrapper .column-center {
- display: flex;
- justify-content: center;
- text-align: center; }
- .columns-wrapper .column-middle {
- display: flex;
- align-items: center; }
-
.preprocessing-list {
display: block;
max-width: 930px;
diff --git a/ui/assets/styles/hc-dark.css b/ui/assets/styles/hc-dark.css
index 93935687002..5d83cab5211 100644
--- a/ui/assets/styles/hc-dark.css
+++ b/ui/assets/styles/hc-dark.css
@@ -336,7 +336,9 @@ svg a {
top: 0;
left: 0;
transition: left .2s, top .2s; }
- .sortable .sortable-list .sortable-item:not(.sortable-dragging) {
+ .sortable .sortable-item {
+ box-sizing: border-box; }
+ .sortable .sortable-item:not(.sortable-dragging) {
transition: left .2s, top .2s; }
.sortable.sortable-dragging .sortable-item {
position: absolute; }
@@ -654,7 +656,6 @@ footer {
.form-grid {
display: grid;
- padding: 5px;
row-gap: 10px;
column-gap: 10px;
grid-template-columns: minmax(15%, max-content) auto; }
@@ -670,6 +671,9 @@ footer {
word-wrap: break-word; }
.form-grid > label.fields-group-label {
padding-top: 5px; }
+ .form-grid > label .icon-help-hint,
+ .form-grid > label .icon-info {
+ margin-left: 5px; }
.form-grid > .form-field,
.form-grid > .field-fluid,
.form-grid .form-actions {
@@ -884,6 +888,66 @@ footer {
.color-picker-dialogue .color-picker-input input {
padding-left: 25px; }
+.columns-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: start; }
+ .columns-wrapper.columns-nowrap {
+ flex-wrap: nowrap; }
+ .columns-wrapper.columns-2 > div,
+ .columns-wrapper.columns-2 > li {
+ display: block;
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper.columns-3 > div,
+ .columns-wrapper.columns-3 > li {
+ display: block;
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-5 {
+ flex: 0 0 5%;
+ max-width: 5%; }
+ .columns-wrapper .column-10 {
+ flex: 0 0 10%;
+ max-width: 10%; }
+ .columns-wrapper .column-15 {
+ flex: 0 0 15%;
+ max-width: 15%; }
+ .columns-wrapper .column-20 {
+ flex: 0 0 20%;
+ max-width: 20%; }
+ .columns-wrapper .column-33 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-35 {
+ flex: 0 0 35%;
+ max-width: 35%; }
+ .columns-wrapper .column-40 {
+ flex: 0 0 40%;
+ max-width: 40%; }
+ .columns-wrapper .column-50 {
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper .column-75 {
+ flex: 0 0 75%;
+ max-width: 75%; }
+ .columns-wrapper .column-90 {
+ flex: 0 0 90%;
+ max-width: 90%; }
+ .columns-wrapper .column-95 {
+ flex: 0 0 95%;
+ max-width: 95%; }
+ .columns-wrapper .column-center {
+ display: flex;
+ justify-content: center;
+ text-align: center; }
+ .columns-wrapper .column-middle {
+ display: flex;
+ align-items: center; }
+ .columns-wrapper > div:not(:last-child) section,
+ .columns-wrapper > ul:not(:last-child) section {
+ margin-right: 10px; }
+
.header-kioskmode-controls .dashboard-kioskmode-controls li {
margin-right: 6px; }
@@ -1433,8 +1497,6 @@ footer {
.dashboard-widget .msg-good,
.dashboard-widget .msg-warning {
margin: 0 10px; }
- .dashboard-widget.dashboard-widget-fluid {
- margin-right: 0; }
.dashboard-grid-widget-content .list-table th:first-child, .dashboard-grid-widget-content .list-table td:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table th:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table td:first-child, .dashboard-widget .list-table th:first-child, .dashboard-widget .list-table td:first-child, .overlay-dialogue .list-table th:first-child, .overlay-dialogue .list-table td:first-child {
padding-left: 10px; }
@@ -1495,30 +1557,22 @@ footer {
.wrapper.layout-kioskmode .dashboard-navigation {
display: none; }
-form.dashboard-widget-clock .fields-group-date,
-form.dashboard-widget-clock .fields-group-time,
-form.dashboard-widget-clock .fields-group-tzone {
+form.dashboard-widget-clock .fields-group.fields-group-date, form.dashboard-widget-clock .fields-group.fields-group-time, form.dashboard-widget-clock .fields-group.fields-group-tzone {
display: grid;
grid-template-columns: 60px 120px repeat(2, minmax(60px, max-content) auto);
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-clock .fields-group-date label,
- form.dashboard-widget-clock .fields-group-time label,
- form.dashboard-widget-clock .fields-group-tzone label {
+ form.dashboard-widget-clock .fields-group.fields-group-date label, form.dashboard-widget-clock .fields-group.fields-group-time label, form.dashboard-widget-clock .fields-group.fields-group-tzone label {
text-align: right; }
- form.dashboard-widget-clock .fields-group-date .field-size input,
- form.dashboard-widget-clock .fields-group-time .field-size input,
- form.dashboard-widget-clock .fields-group-tzone .field-size input {
+ form.dashboard-widget-clock .fields-group.fields-group-date .field-size input, form.dashboard-widget-clock .fields-group.fields-group-time .field-size input, form.dashboard-widget-clock .fields-group.fields-group-tzone .field-size input {
margin-right: 5px; }
-form.dashboard-widget-clock .fields-group-time .field-format {
+form.dashboard-widget-clock .fields-group.fields-group-time .field-format {
grid-column: 4 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-format {
- grid-column: 2 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-timezone {
+form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-timezone, form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-format {
grid-column: 2 / -1; }
-div.dashboard-widget-clock.clock-digital {
+div.dashboard-widget-clock .clock-digital {
box-sizing: border-box;
min-height: 100%;
padding: 10px;
@@ -1526,9 +1580,9 @@ div.dashboard-widget-clock.clock-digital {
flex-direction: column;
justify-content: center;
align-items: center; }
- div.dashboard-widget-clock.clock-digital .clock-date,
- div.dashboard-widget-clock.clock-digital .clock-time,
- div.dashboard-widget-clock.clock-digital .clock-time-zone {
+ div.dashboard-widget-clock .clock-digital .clock-date,
+ div.dashboard-widget-clock .clock-digital .clock-time,
+ div.dashboard-widget-clock .clock-digital .clock-time-zone {
max-width: 100%;
white-space: nowrap;
overflow: hidden;
@@ -1536,150 +1590,137 @@ div.dashboard-widget-clock.clock-digital {
font-size: calc(var(--content-height) * var(--widget-clock-font) / 1.14);
line-height: 1.14;
flex-shrink: 0; }
- div.dashboard-widget-clock.clock-digital .bold {
+ div.dashboard-widget-clock .clock-digital .bold {
font-weight: bold; }
- div.dashboard-widget-clock.clock-digital .clock-disabled {
+ div.dashboard-widget-clock .clock-digital .clock-disabled {
font-size: calc(var(--content-height) * 0.6 / 1.14);
color: #cacaca;
font-weight: bold; }
-form.dashboard-widget-item .fields-group-description,
-form.dashboard-widget-item .fields-group-value,
-form.dashboard-widget-item .fields-group-time,
-form.dashboard-widget-item .fields-group-change-indicator {
+.dashboard-widget-inaccessible {
+ display: grid;
+ align-items: center;
+ padding-right: 10px;
+ padding-left: 10px;
+ text-align: center;
+ color: #cacaca; }
+
+form.dashboard-widget-item .fields-group.fields-group-description, form.dashboard-widget-item .fields-group.fields-group-value, form.dashboard-widget-item .fields-group.fields-group-time, form.dashboard-widget-item .fields-group.fields-group-change-indicator {
display: grid;
grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-item .fields-group-description label,
- form.dashboard-widget-item .fields-group-value label,
- form.dashboard-widget-item .fields-group-time label,
- form.dashboard-widget-item .fields-group-change-indicator label {
+ form.dashboard-widget-item .fields-group.fields-group-description label, form.dashboard-widget-item .fields-group.fields-group-value label, form.dashboard-widget-item .fields-group.fields-group-time label, form.dashboard-widget-item .fields-group.fields-group-change-indicator label {
text-align: right; }
- form.dashboard-widget-item .fields-group-description hr,
- form.dashboard-widget-item .fields-group-value hr,
- form.dashboard-widget-item .fields-group-time hr,
- form.dashboard-widget-item .fields-group-change-indicator hr {
+ form.dashboard-widget-item .fields-group.fields-group-description hr, form.dashboard-widget-item .fields-group.fields-group-value hr, form.dashboard-widget-item .fields-group.fields-group-time hr, form.dashboard-widget-item .fields-group.fields-group-change-indicator hr {
grid-column: 1 / -1;
margin: 0;
width: 100%;
border: solid #333333;
border-width: 1px 0 0 0; }
- form.dashboard-widget-item .fields-group-description .field-fluid,
- form.dashboard-widget-item .fields-group-value .field-fluid,
- form.dashboard-widget-item .fields-group-time .field-fluid,
- form.dashboard-widget-item .fields-group-change-indicator .field-fluid {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-fluid, form.dashboard-widget-item .fields-group.fields-group-value .field-fluid, form.dashboard-widget-item .fields-group.fields-group-time .field-fluid, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-fluid {
grid-column: 2 / -1; }
- form.dashboard-widget-item .fields-group-description .offset-3,
- form.dashboard-widget-item .fields-group-value .offset-3,
- form.dashboard-widget-item .fields-group-time .offset-3,
- form.dashboard-widget-item .fields-group-change-indicator .offset-3 {
+ form.dashboard-widget-item .fields-group.fields-group-description .offset-3, form.dashboard-widget-item .fields-group.fields-group-value .offset-3, form.dashboard-widget-item .fields-group.fields-group-time .offset-3, form.dashboard-widget-item .fields-group.fields-group-change-indicator .offset-3 {
grid-column-start: 3; }
- form.dashboard-widget-item .fields-group-description .field-size input,
- form.dashboard-widget-item .fields-group-value .field-size input,
- form.dashboard-widget-item .fields-group-time .field-size input,
- form.dashboard-widget-item .fields-group-change-indicator .field-size input {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-size input, form.dashboard-widget-item .fields-group.fields-group-value .field-size input, form.dashboard-widget-item .fields-group.fields-group-time .field-size input, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-size input {
margin-right: 5px; }
- form.dashboard-widget-item .fields-group-description .form-field,
- form.dashboard-widget-item .fields-group-value .form-field,
- form.dashboard-widget-item .fields-group-time .form-field,
- form.dashboard-widget-item .fields-group-change-indicator .form-field {
+ form.dashboard-widget-item .fields-group.fields-group-description .form-field, form.dashboard-widget-item .fields-group.fields-group-value .form-field, form.dashboard-widget-item .fields-group.fields-group-time .form-field, form.dashboard-widget-item .fields-group.fields-group-change-indicator .form-field {
line-height: 24px; }
-form.dashboard-widget-item .fields-group-description .form-field:nth-child(1) {
+form.dashboard-widget-item .fields-group.fields-group-description .form-field:nth-child(1) {
grid-column: 1 / -1; }
-form.dashboard-widget-item .fields-group-value {
+form.dashboard-widget-item .fields-group.fields-group-value {
grid-template-columns: minmax(100px, max-content) 3fr max-content auto; }
- form.dashboard-widget-item .fields-group-value .units-show {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show {
display: flex; }
- form.dashboard-widget-item .fields-group-value .units-show label[for='units'] {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show label[for='units'] {
width: 100%; }
-form.dashboard-widget-item .fields-group-change-indicator {
+form.dashboard-widget-item .fields-group.fields-group-change-indicator {
grid-template-columns: repeat(3, max-content 96px); }
-form.dashboard-widget-item .fields-group-change-indicator .input-color-picker {
- display: block; }
+ form.dashboard-widget-item .fields-group.fields-group-change-indicator .input-color-picker {
+ display: block; }
-div.dashboard-widget-item {
+div.dashboard-widget-item > div {
box-sizing: border-box;
height: 100%;
padding: 10px;
overflow-x: hidden; }
- div.dashboard-widget-item a {
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- height: 100%;
- color: inherit; }
- div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
- border: none; }
- div.dashboard-widget-item a > div {
- display: flex;
- flex: 1 1 calc(100% / 3); }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-value,
- div.dashboard-widget-item .item-time {
- flex: 1 1 auto;
- max-width: 100%; }
- div.dashboard-widget-item .item-value {
+div.dashboard-widget-item a {
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ color: inherit; }
+ div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
+ border: none; }
+ div.dashboard-widget-item a > div {
display: flex;
- flex-wrap: wrap;
- margin: 0 5px; }
- div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
- flex: 0 0 100%; }
- div.dashboard-widget-item .item-value > .units:first-child {
- margin-bottom: -0.07em; }
- div.dashboard-widget-item .item-value > .units:last-child {
- margin-top: -0.07em; }
- div.dashboard-widget-item .item-value.type-text {
+ flex: 1 1 calc(100% / 3); }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-value,
+div.dashboard-widget-item .item-time {
+ flex: 1 1 auto;
+ max-width: 100%; }
+div.dashboard-widget-item .item-value {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 5px; }
+ div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
+ flex: 0 0 100%; }
+ div.dashboard-widget-item .item-value > .units:first-child {
+ margin-bottom: -0.07em; }
+ div.dashboard-widget-item .item-value > .units:last-child {
+ margin-top: -0.07em; }
+ div.dashboard-widget-item .item-value.type-text {
+ min-width: 0; }
+ div.dashboard-widget-item .item-value.type-text .item-value-content {
min-width: 0; }
- div.dashboard-widget-item .item-value.type-text .item-value-content {
- min-width: 0; }
- div.dashboard-widget-item .item-value-content {
- display: flex;
- align-items: baseline;
- overflow: hidden; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-time,
- div.dashboard-widget-item .type-text .value {
- display: block;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .value,
- div.dashboard-widget-item .decimals,
- div.dashboard-widget-item .units,
- div.dashboard-widget-item .item-time {
- font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
- line-height: 1.14; }
- div.dashboard-widget-item .units:not(:last-child),
- div.dashboard-widget-item .change-indicator:not(:last-child) {
- margin-right: 5px; }
- div.dashboard-widget-item .units:not(:first-child),
- div.dashboard-widget-item .change-indicator:not(:first-child) {
- margin-left: 5px; }
- div.dashboard-widget-item .svg-arrow {
- height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
- div.dashboard-widget-item .item-value-no-data {
- color: #cacaca; }
- div.dashboard-widget-item .left {
- justify-content: flex-start;
- max-width: max-content;
- margin-right: auto; }
- div.dashboard-widget-item .center {
- justify-content: center; }
- div.dashboard-widget-item .right {
- justify-content: flex-end;
- max-width: max-content;
- margin-left: auto; }
- div.dashboard-widget-item .top {
- align-self: flex-start; }
- div.dashboard-widget-item .middle {
- align-self: center; }
- div.dashboard-widget-item .bottom {
- align-self: flex-end; }
- div.dashboard-widget-item .bold {
- font-weight: bold; }
+div.dashboard-widget-item .item-value-content {
+ display: flex;
+ align-items: baseline;
+ overflow: hidden; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-time,
+div.dashboard-widget-item .type-text .value {
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .value,
+div.dashboard-widget-item .decimals,
+div.dashboard-widget-item .units,
+div.dashboard-widget-item .item-time {
+ font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
+ line-height: 1.14; }
+div.dashboard-widget-item .units:not(:last-child),
+div.dashboard-widget-item .change-indicator:not(:last-child) {
+ margin-right: 5px; }
+div.dashboard-widget-item .units:not(:first-child),
+div.dashboard-widget-item .change-indicator:not(:first-child) {
+ margin-left: 5px; }
+div.dashboard-widget-item .svg-arrow {
+ height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
+div.dashboard-widget-item .item-value-no-data {
+ color: #cacaca; }
+div.dashboard-widget-item .left {
+ justify-content: flex-start;
+ max-width: max-content;
+ margin-right: auto; }
+div.dashboard-widget-item .center {
+ justify-content: center; }
+div.dashboard-widget-item .right {
+ justify-content: flex-end;
+ max-width: max-content;
+ margin-left: auto; }
+div.dashboard-widget-item .top {
+ align-self: flex-start; }
+div.dashboard-widget-item .middle {
+ align-self: center; }
+div.dashboard-widget-item .bottom {
+ align-self: flex-end; }
+div.dashboard-widget-item .bold {
+ font-weight: bold; }
.dashboard-widget-item .svg-arrow-up {
fill: #3DC51D; }
@@ -1695,40 +1736,47 @@ div.dashboard-widget-slareport .date-vertical {
writing-mode: vertical-lr;
transform: rotate(180deg); }
+form.dashboard-widget-svggraph .svg-graph-preview,
form.dashboard-widget-svggraph .graph-widget-config-tabs {
- padding: 10px 0; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
- margin-right: 0;
- margin-left: 0;
- border-top: 1px solid #444444; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
- position: sticky;
+ grid-column: 1 / -1; }
+form.dashboard-widget-svggraph .svg-graph-preview {
+ position: relative;
+ min-width: 1110px;
+ height: 300px; }
+ form.dashboard-widget-svggraph .svg-graph-preview > div {
+ position: absolute;
top: 0;
- background: #070707;
+ right: 0;
+ left: 0;
+ margin: 0 -10px;
+ height: 300px;
+ background: #000000;
z-index: 3; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
+ border-top: 1px solid #444444; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
+ position: sticky;
+ top: 0;
+ background: #070707;
+ z-index: 3; }
form.dashboard-widget-svggraph .table-forms-container, form.dashboard-widget-svggraph .browser-warning-container {
+ margin: -10px 0 0 0;
border: 1px solid #444444;
border-top: none; }
form.dashboard-widget-svggraph .table-forms-separator {
padding: 0; }
-form.dashboard-widget-svggraph .dataset-head {
- display: grid;
- grid-template-columns: 24px 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start; }
+form.dashboard-widget-svggraph .dataset-head,
form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body {
- display: grid;
- grid-template-columns: 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start;
- position: relative;
- margin-top: 10px; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid {
- padding-top: 0; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid:first-child {
- grid-column-start: 2; }
+ display: contents; }
+form.dashboard-widget-svggraph .dataset-head .multiselect {
+ width: 100%; }
+form.dashboard-widget-svggraph .dataset-body .form-grid {
+ padding-top: 0; }
+ form.dashboard-widget-svggraph .dataset-body .form-grid:first-child {
+ grid-column-start: 3; }
form.dashboard-widget-svggraph .drag-icon {
position: absolute;
+ top: 5px;
left: -14px; }
form.dashboard-widget-svggraph .td-drag-icon .drag-icon {
top: 0;
@@ -1750,13 +1798,13 @@ form.dashboard-widget-svggraph .list-vertical-accordion {
overflow: visible;
margin-top: -5px;
margin-bottom: -5px; }
- form.dashboard-widget-svggraph .list-vertical-accordion .list-accordion-item-head {
- padding: 0; }
form.dashboard-widget-svggraph .list-accordion-item {
position: relative;
- width: 100%;
- padding: 5px 0;
- list-style-type: none; }
+ display: grid;
+ grid-template-columns: 24px 24px 1fr 1fr 24px;
+ grid-gap: 10px;
+ align-items: start;
+ padding: 5px 0; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-opened::before {
content: ' ';
position: absolute;
@@ -1768,8 +1816,6 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .multiselect {
height: 24px;
overflow: hidden; }
- form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
- display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .table-forms-separator {
border: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table thead,
@@ -1777,6 +1823,8 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-handle,
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-action {
display: none; }
+ form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
+ display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .items-list {
padding-left: 0; }
form.dashboard-widget-svggraph .single-item-table .table-col-handle {
@@ -1795,11 +1843,83 @@ form.dashboard-widget-svggraph .single-item-table .single-item-table-row:last-ch
padding-bottom: 0; }
form.dashboard-widget-svggraph .single-item-table tfoot td {
padding: 5px 5px 5px 10px; }
+form.dashboard-widget-svggraph .overrides-list {
+ position: relative;
+ margin: -5px 0 -5px 15px; }
+form.dashboard-widget-svggraph .overrides-list-item {
+ position: relative;
+ display: grid;
+ grid-template-columns: 1fr 1fr 24px;
+ grid-gap: 5px 10px;
+ align-items: start;
+ padding: 5px 0; }
+ form.dashboard-widget-svggraph .overrides-list-item.sortable {
+ overflow: visible;
+ margin-top: -5px;
+ margin-bottom: -5px; }
+ form.dashboard-widget-svggraph .overrides-list-item .multiselect {
+ width: 100%; }
+ form.dashboard-widget-svggraph .overrides-list-item .btn-remove {
+ right: 0;
+ top: 0;
+ vertical-align: baseline; }
+form.dashboard-widget-svggraph .overrides-foot {
+ padding: 5px 0; }
+form.dashboard-widget-svggraph .overrides-options-list {
+ grid-column: 1 / -1;
+ padding: 0 24px 8px 0;
+ border-bottom: 1px solid #333333;
+ white-space: normal; }
+ form.dashboard-widget-svggraph .overrides-options-list > li {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 2px;
+ line-height: 22px;
+ white-space: nowrap; }
+ form.dashboard-widget-svggraph .overrides-options-list > li .color-picker {
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ position: relative;
+ padding: 1px 18px 1px 1px;
+ background-color: #dddddd;
+ border-radius: 2px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > span {
+ color: white;
+ padding-left: 8px;
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > input[type=text] {
+ border-style: none;
+ line-height: 22px;
+ min-height: 22px;
+ width: 85px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ position: absolute;
+ right: 0;
+ top: 0;
+ min-height: 24px; }
+ form.dashboard-widget-svggraph .overrides-options-list .btn-alt .plus-icon {
+ margin-right: 0; }
+ form.dashboard-widget-svggraph .overrides-options-list .color-picker .color-picker-preview {
+ margin: 1px;
+ width: 20px;
+ min-height: 20px;
+ background-position: -323px -411px; }
form.dashboard-widget-svggraph .no-items-message {
display: none;
line-height: 24px;
color: #cacaca; }
+[theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ border: 1px solid #ffffff;
+ background-color: transparent !important; }
+ [theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
+[theme="hc-light"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
form.dashboard-widget-tophosts #list_columns .text {
max-width: 250px; }
form.dashboard-widget-tophosts #column {
@@ -2554,6 +2674,49 @@ div.dashboard-widget-tophosts z-bar-gauge {
font-size: 0;
border-left: 1px solid #111111; }
+section {
+ background-color: #000000;
+ border: 1px solid #444444; }
+ section .section-head {
+ display: flex;
+ height: 32px;
+ line-height: 32px; }
+ section .section-head h4 {
+ padding: 0 10px;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-weight: bold;
+ line-height: inherit;
+ color: white; }
+ section .section-toggle {
+ width: 24px;
+ height: 24px;
+ margin: 2px 2px 0 auto;
+ background: url("../img/icon-sprite.svg?20220722") no-repeat -6px -654px; }
+ section .section-foot {
+ padding: 0 10px;
+ text-align: right;
+ line-height: 32px;
+ color: #cacaca; }
+ section.section-collapsed .section-body,
+ section.section-collapsed .section-foot {
+ display: none; }
+ section.section-collapsed .section-toggle {
+ background-position: -6px -689px; }
+ section:not(:last-child) {
+ margin-bottom: 10px; }
+ section .list-table {
+ border: 0; }
+ section .list-table tbody tr:last-child td {
+ border-bottom: 1px solid #333333; }
+ section .list-table td:first-child,
+ section .list-table th:first-child {
+ padding-left: 10px; }
+ section .list-table td:last-child,
+ section .list-table th:last-child {
+ padding-right: 10px; }
+
.service-info {
margin: -10px 0;
border-left: 4px solid #23d545; }
@@ -4510,13 +4673,13 @@ button {
width: 24px;
height: 24px; }
-.filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
+section .section-toggle, .filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
border: 0;
min-height: 0;
padding: 0;
opacity: .5;
transition: opacity .2s ease-out; }
- .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
+ section [disabled].section-toggle, .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, section [disabled].section-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, section [disabled].section-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, section [disabled].section-toggle:active, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
background-color: transparent;
opacity: .25; }
@@ -4544,7 +4707,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
.inaccessible .subfilter-enabled {
color: #bfbfbf; }
-.filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
+section .section-toggle:hover, .filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, section .section-toggle:focus, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, section .section-toggle:active, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
background-color: transparent;
opacity: 1; }
@@ -4637,16 +4800,16 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
content: ''; }
.icon-tree-top-bottom::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -300px; }
+ background-position: -84px -300px; }
.icon-tree-top-bottom-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -334px; }
+ background-position: -84px -334px; }
.icon-tree-top-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -372px; }
+ background-position: -84px -372px; }
.icon-tree-empty::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -350px; }
+ background-position: -84px -350px; }
.icon-cal {
background: transparent url("../img/icon-sprite.svg?20220722") no-repeat -42px -834px; }
@@ -4927,7 +5090,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
overflow: hidden;
margin: 0 10px; }
.overlay-dialogue.modal .dashboard-widget-head {
- margin-bottom: 14px; }
+ margin-bottom: 12px; }
.overlay-dialogue.modal .dashboard-widget-head .icon-doc-link {
margin-right: -26px; }
.overlay-dialogue.modal .dashboard-widget-head .overlay-close-btn {
@@ -4940,9 +5103,11 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
width: 100%;
max-height: calc(100vh - 220px);
max-width: inherit;
- margin: 0 -10px 10px;
+ margin: 0 -10px 8px;
padding: 0 10px;
position: relative; }
+ .overlay-dialogue.modal .overlay-dialogue-body > form {
+ padding: 2px 0; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-td-right {
padding-right: 8px; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-row-with-second-field {
@@ -5339,20 +5504,6 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
stroke: #ff5050;
stroke-width: 2px; }
-.svg-graph-preview {
- margin-top: 10px;
- min-width: 1120px;
- height: 300px;
- position: relative; }
- .svg-graph-preview > div {
- background: #000000;
- height: 300px;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- z-index: 3; }
-
.svg-graph-hintbox {
font-size: 12px;
line-height: 18px;
@@ -5896,22 +6047,22 @@ span.is-loading {
padding: 10px 0 0;
text-align: center; }
-.dashboard-grid-widget-content, div.dashboard-widget-item, .msg-details ul, z-select button.focusable,
+.dashboard-grid-widget-content, div.dashboard-widget-item > div, .msg-details ul, z-select button.focusable,
.z-select button.focusable, z-select .list,
.z-select .list, .multiselect-available, textarea, select, .setup-right-body, .overlay-dialogue.modal .overlay-dialogue-body, .overlay-dialogue .hintbox-wrap, .overlay-dialogue .maps-container, .notif-body, .debug-output, .overlay-descr, .overflow-table, .import-compare .toc,
.import-compare .diff {
scrollbar-width: thin; }
- .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
+ .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item > div::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
.z-select button.focusable::-webkit-scrollbar, z-select .list::-webkit-scrollbar,
.z-select .list::-webkit-scrollbar, .multiselect-available::-webkit-scrollbar, textarea::-webkit-scrollbar, select::-webkit-scrollbar, .setup-right-body::-webkit-scrollbar, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar, .overlay-dialogue .maps-container::-webkit-scrollbar, .notif-body::-webkit-scrollbar, .debug-output::-webkit-scrollbar, .overlay-descr::-webkit-scrollbar, .overflow-table::-webkit-scrollbar, .import-compare .toc::-webkit-scrollbar,
.import-compare .diff::-webkit-scrollbar {
width: 9px; }
- .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
+ .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item > div::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
.z-select button.focusable::-webkit-scrollbar-track, z-select .list::-webkit-scrollbar-track,
.z-select .list::-webkit-scrollbar-track, .multiselect-available::-webkit-scrollbar-track, textarea::-webkit-scrollbar-track, select::-webkit-scrollbar-track, .setup-right-body::-webkit-scrollbar-track, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-track, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-track, .overlay-dialogue .maps-container::-webkit-scrollbar-track, .notif-body::-webkit-scrollbar-track, .debug-output::-webkit-scrollbar-track, .overlay-descr::-webkit-scrollbar-track, .overflow-table::-webkit-scrollbar-track, .import-compare .toc::-webkit-scrollbar-track,
.import-compare .diff::-webkit-scrollbar-track {
background-color: #1f1f1f; }
- .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
+ .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item > div::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
.z-select button.focusable::-webkit-scrollbar-thumb, z-select .list::-webkit-scrollbar-thumb,
.z-select .list::-webkit-scrollbar-thumb, .multiselect-available::-webkit-scrollbar-thumb, textarea::-webkit-scrollbar-thumb, select::-webkit-scrollbar-thumb, .setup-right-body::-webkit-scrollbar-thumb, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-thumb, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-thumb, .overlay-dialogue .maps-container::-webkit-scrollbar-thumb, .notif-body::-webkit-scrollbar-thumb, .debug-output::-webkit-scrollbar-thumb, .overlay-descr::-webkit-scrollbar-thumb, .overflow-table::-webkit-scrollbar-thumb, .import-compare .toc::-webkit-scrollbar-thumb,
.import-compare .diff::-webkit-scrollbar-thumb {
@@ -6052,53 +6203,6 @@ svg {
white-space: normal;
word-break: break-word; }
-.overrides-list {
- display: table;
- width: 90%;
- max-width: 738px;
- padding-left: 15px; }
- .overrides-list .overrides-list-item {
- display: table-row; }
- .overrides-list .overrides-list-item .btn-remove {
- position: relative;
- right: -73px;
- top: 3px; }
-
-.overrides-options-list {
- white-space: normal;
- padding: 5px 0 8px;
- margin-bottom: 10px;
- border-bottom: 1px solid #333333; }
- .overrides-options-list > li {
- display: inline-block;
- margin: 2px 7px 2px 0;
- white-space: nowrap;
- vertical-align: middle; }
- .overrides-options-list > li > div {
- position: relative;
- padding: 1px 18px 1px 1px;
- background-color: #dddddd;
- border-radius: 2px; }
- .overrides-options-list > li > div > span {
- color: white;
- padding-left: 8px;
- line-height: 22px; }
- .overrides-options-list > li > div > input[type=text] {
- border-style: none;
- line-height: 22px;
- min-height: 22px;
- width: 85px; }
- .overrides-options-list > li > div > .subfilter-disable-btn {
- position: absolute;
- right: 0;
- top: 0;
- min-height: 24px; }
- .overrides-options-list .color-picker .color-picker-preview {
- margin: 1px;
- width: 20px;
- min-height: 20px;
- background-position: -323px -411px; }
-
.list-accordion-foot > div {
display: table-cell;
padding-top: 10px; }
@@ -6139,63 +6243,6 @@ svg {
.visibility-hidden {
visibility: hidden; }
-.columns-wrapper {
- display: flex;
- flex-wrap: wrap;
- align-items: start; }
- .columns-wrapper.columns-nowrap {
- flex-wrap: nowrap; }
- .columns-wrapper.columns-2 > div,
- .columns-wrapper.columns-2 > li {
- display: block;
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper.columns-3 > div,
- .columns-wrapper.columns-3 > li {
- display: block;
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-5 {
- flex: 0 0 5%;
- max-width: 5%; }
- .columns-wrapper .column-10 {
- flex: 0 0 10%;
- max-width: 10%; }
- .columns-wrapper .column-15 {
- flex: 0 0 15%;
- max-width: 15%; }
- .columns-wrapper .column-20 {
- flex: 0 0 20%;
- max-width: 20%; }
- .columns-wrapper .column-33 {
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-35 {
- flex: 0 0 35%;
- max-width: 35%; }
- .columns-wrapper .column-40 {
- flex: 0 0 40%;
- max-width: 40%; }
- .columns-wrapper .column-50 {
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper .column-75 {
- flex: 0 0 75%;
- max-width: 75%; }
- .columns-wrapper .column-90 {
- flex: 0 0 90%;
- max-width: 90%; }
- .columns-wrapper .column-95 {
- flex: 0 0 95%;
- max-width: 95%; }
- .columns-wrapper .column-center {
- display: flex;
- justify-content: center;
- text-align: center; }
- .columns-wrapper .column-middle {
- display: flex;
- align-items: center; }
-
.preprocessing-list {
display: block;
max-width: 930px;
@@ -8031,13 +8078,6 @@ td.inactive-bg {
.problem-icon-list .status-disaster-bg::before {
background-position: -472px -432px; }
-.overrides-options-list > li > div {
- border: 1px solid #ffffff;
- background-color: transparent !important; }
- .overrides-options-list > li > div > .subfilter-disable-btn {
- border: none !important;
- top: 0; }
-
.totals-list > div {
border-top: 1px solid #444444;
color: #ffffff; }
@@ -8081,3 +8121,8 @@ td.inactive-bg {
background-position: -318px -690px; }
.interfaces .interface-row[data-type="2"].list-accordion-item-opened .interface-btn-toggle {
background-position: -318px -655px; }
+
+section .section-toggle {
+ background-position: -318px -654px; }
+section.section-collapsed .section-toggle {
+ background-position: -318px -690px; }
diff --git a/ui/assets/styles/hc-light.css b/ui/assets/styles/hc-light.css
index cc2f9be323a..f43a5973f45 100644
--- a/ui/assets/styles/hc-light.css
+++ b/ui/assets/styles/hc-light.css
@@ -336,7 +336,9 @@ svg a {
top: 0;
left: 0;
transition: left .2s, top .2s; }
- .sortable .sortable-list .sortable-item:not(.sortable-dragging) {
+ .sortable .sortable-item {
+ box-sizing: border-box; }
+ .sortable .sortable-item:not(.sortable-dragging) {
transition: left .2s, top .2s; }
.sortable.sortable-dragging .sortable-item {
position: absolute; }
@@ -654,7 +656,6 @@ footer {
.form-grid {
display: grid;
- padding: 5px;
row-gap: 10px;
column-gap: 10px;
grid-template-columns: minmax(15%, max-content) auto; }
@@ -670,6 +671,9 @@ footer {
word-wrap: break-word; }
.form-grid > label.fields-group-label {
padding-top: 5px; }
+ .form-grid > label .icon-help-hint,
+ .form-grid > label .icon-info {
+ margin-left: 5px; }
.form-grid > .form-field,
.form-grid > .field-fluid,
.form-grid .form-actions {
@@ -884,6 +888,66 @@ footer {
.color-picker-dialogue .color-picker-input input {
padding-left: 25px; }
+.columns-wrapper {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: start; }
+ .columns-wrapper.columns-nowrap {
+ flex-wrap: nowrap; }
+ .columns-wrapper.columns-2 > div,
+ .columns-wrapper.columns-2 > li {
+ display: block;
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper.columns-3 > div,
+ .columns-wrapper.columns-3 > li {
+ display: block;
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-5 {
+ flex: 0 0 5%;
+ max-width: 5%; }
+ .columns-wrapper .column-10 {
+ flex: 0 0 10%;
+ max-width: 10%; }
+ .columns-wrapper .column-15 {
+ flex: 0 0 15%;
+ max-width: 15%; }
+ .columns-wrapper .column-20 {
+ flex: 0 0 20%;
+ max-width: 20%; }
+ .columns-wrapper .column-33 {
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .columns-wrapper .column-35 {
+ flex: 0 0 35%;
+ max-width: 35%; }
+ .columns-wrapper .column-40 {
+ flex: 0 0 40%;
+ max-width: 40%; }
+ .columns-wrapper .column-50 {
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .columns-wrapper .column-75 {
+ flex: 0 0 75%;
+ max-width: 75%; }
+ .columns-wrapper .column-90 {
+ flex: 0 0 90%;
+ max-width: 90%; }
+ .columns-wrapper .column-95 {
+ flex: 0 0 95%;
+ max-width: 95%; }
+ .columns-wrapper .column-center {
+ display: flex;
+ justify-content: center;
+ text-align: center; }
+ .columns-wrapper .column-middle {
+ display: flex;
+ align-items: center; }
+ .columns-wrapper > div:not(:last-child) section,
+ .columns-wrapper > ul:not(:last-child) section {
+ margin-right: 10px; }
+
.header-kioskmode-controls .dashboard-kioskmode-controls li {
margin-right: 6px; }
@@ -1433,8 +1497,6 @@ footer {
.dashboard-widget .msg-good,
.dashboard-widget .msg-warning {
margin: 0 10px; }
- .dashboard-widget.dashboard-widget-fluid {
- margin-right: 0; }
.dashboard-grid-widget-content .list-table th:first-child, .dashboard-grid-widget-content .list-table td:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table th:first-child, .dashboard-grid-iterator.iterator-alt-content .dashboard-grid-iterator-content > div .list-table td:first-child, .dashboard-widget .list-table th:first-child, .dashboard-widget .list-table td:first-child, .overlay-dialogue .list-table th:first-child, .overlay-dialogue .list-table td:first-child {
padding-left: 10px; }
@@ -1495,30 +1557,22 @@ footer {
.wrapper.layout-kioskmode .dashboard-navigation {
display: none; }
-form.dashboard-widget-clock .fields-group-date,
-form.dashboard-widget-clock .fields-group-time,
-form.dashboard-widget-clock .fields-group-tzone {
+form.dashboard-widget-clock .fields-group.fields-group-date, form.dashboard-widget-clock .fields-group.fields-group-time, form.dashboard-widget-clock .fields-group.fields-group-tzone {
display: grid;
grid-template-columns: 60px 120px repeat(2, minmax(60px, max-content) auto);
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-clock .fields-group-date label,
- form.dashboard-widget-clock .fields-group-time label,
- form.dashboard-widget-clock .fields-group-tzone label {
+ form.dashboard-widget-clock .fields-group.fields-group-date label, form.dashboard-widget-clock .fields-group.fields-group-time label, form.dashboard-widget-clock .fields-group.fields-group-tzone label {
text-align: right; }
- form.dashboard-widget-clock .fields-group-date .field-size input,
- form.dashboard-widget-clock .fields-group-time .field-size input,
- form.dashboard-widget-clock .fields-group-tzone .field-size input {
+ form.dashboard-widget-clock .fields-group.fields-group-date .field-size input, form.dashboard-widget-clock .fields-group.fields-group-time .field-size input, form.dashboard-widget-clock .fields-group.fields-group-tzone .field-size input {
margin-right: 5px; }
-form.dashboard-widget-clock .fields-group-time .field-format {
+form.dashboard-widget-clock .fields-group.fields-group-time .field-format {
grid-column: 4 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-format {
- grid-column: 2 / -1; }
-form.dashboard-widget-clock .fields-group-tzone .field-timezone {
+form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-timezone, form.dashboard-widget-clock .fields-group.fields-group-tzone .form-field.field-tzone-format {
grid-column: 2 / -1; }
-div.dashboard-widget-clock.clock-digital {
+div.dashboard-widget-clock .clock-digital {
box-sizing: border-box;
min-height: 100%;
padding: 10px;
@@ -1526,9 +1580,9 @@ div.dashboard-widget-clock.clock-digital {
flex-direction: column;
justify-content: center;
align-items: center; }
- div.dashboard-widget-clock.clock-digital .clock-date,
- div.dashboard-widget-clock.clock-digital .clock-time,
- div.dashboard-widget-clock.clock-digital .clock-time-zone {
+ div.dashboard-widget-clock .clock-digital .clock-date,
+ div.dashboard-widget-clock .clock-digital .clock-time,
+ div.dashboard-widget-clock .clock-digital .clock-time-zone {
max-width: 100%;
white-space: nowrap;
overflow: hidden;
@@ -1536,150 +1590,137 @@ div.dashboard-widget-clock.clock-digital {
font-size: calc(var(--content-height) * var(--widget-clock-font) / 1.14);
line-height: 1.14;
flex-shrink: 0; }
- div.dashboard-widget-clock.clock-digital .bold {
+ div.dashboard-widget-clock .clock-digital .bold {
font-weight: bold; }
- div.dashboard-widget-clock.clock-digital .clock-disabled {
+ div.dashboard-widget-clock .clock-digital .clock-disabled {
font-size: calc(var(--content-height) * 0.6 / 1.14);
color: #333333;
font-weight: bold; }
-form.dashboard-widget-item .fields-group-description,
-form.dashboard-widget-item .fields-group-value,
-form.dashboard-widget-item .fields-group-time,
-form.dashboard-widget-item .fields-group-change-indicator {
+.dashboard-widget-inaccessible {
+ display: grid;
+ align-items: center;
+ padding-right: 10px;
+ padding-left: 10px;
+ text-align: center;
+ color: #333333; }
+
+form.dashboard-widget-item .fields-group.fields-group-description, form.dashboard-widget-item .fields-group.fields-group-value, form.dashboard-widget-item .fields-group.fields-group-time, form.dashboard-widget-item .fields-group.fields-group-change-indicator {
display: grid;
grid-template-columns: minmax(100px, max-content) 3fr max-content auto;
align-items: center;
column-gap: 10px;
row-gap: 5px; }
- form.dashboard-widget-item .fields-group-description label,
- form.dashboard-widget-item .fields-group-value label,
- form.dashboard-widget-item .fields-group-time label,
- form.dashboard-widget-item .fields-group-change-indicator label {
+ form.dashboard-widget-item .fields-group.fields-group-description label, form.dashboard-widget-item .fields-group.fields-group-value label, form.dashboard-widget-item .fields-group.fields-group-time label, form.dashboard-widget-item .fields-group.fields-group-change-indicator label {
text-align: right; }
- form.dashboard-widget-item .fields-group-description hr,
- form.dashboard-widget-item .fields-group-value hr,
- form.dashboard-widget-item .fields-group-time hr,
- form.dashboard-widget-item .fields-group-change-indicator hr {
+ form.dashboard-widget-item .fields-group.fields-group-description hr, form.dashboard-widget-item .fields-group.fields-group-value hr, form.dashboard-widget-item .fields-group.fields-group-time hr, form.dashboard-widget-item .fields-group.fields-group-change-indicator hr {
grid-column: 1 / -1;
margin: 0;
width: 100%;
border: solid #888888;
border-width: 1px 0 0 0; }
- form.dashboard-widget-item .fields-group-description .field-fluid,
- form.dashboard-widget-item .fields-group-value .field-fluid,
- form.dashboard-widget-item .fields-group-time .field-fluid,
- form.dashboard-widget-item .fields-group-change-indicator .field-fluid {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-fluid, form.dashboard-widget-item .fields-group.fields-group-value .field-fluid, form.dashboard-widget-item .fields-group.fields-group-time .field-fluid, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-fluid {
grid-column: 2 / -1; }
- form.dashboard-widget-item .fields-group-description .offset-3,
- form.dashboard-widget-item .fields-group-value .offset-3,
- form.dashboard-widget-item .fields-group-time .offset-3,
- form.dashboard-widget-item .fields-group-change-indicator .offset-3 {
+ form.dashboard-widget-item .fields-group.fields-group-description .offset-3, form.dashboard-widget-item .fields-group.fields-group-value .offset-3, form.dashboard-widget-item .fields-group.fields-group-time .offset-3, form.dashboard-widget-item .fields-group.fields-group-change-indicator .offset-3 {
grid-column-start: 3; }
- form.dashboard-widget-item .fields-group-description .field-size input,
- form.dashboard-widget-item .fields-group-value .field-size input,
- form.dashboard-widget-item .fields-group-time .field-size input,
- form.dashboard-widget-item .fields-group-change-indicator .field-size input {
+ form.dashboard-widget-item .fields-group.fields-group-description .field-size input, form.dashboard-widget-item .fields-group.fields-group-value .field-size input, form.dashboard-widget-item .fields-group.fields-group-time .field-size input, form.dashboard-widget-item .fields-group.fields-group-change-indicator .field-size input {
margin-right: 5px; }
- form.dashboard-widget-item .fields-group-description .form-field,
- form.dashboard-widget-item .fields-group-value .form-field,
- form.dashboard-widget-item .fields-group-time .form-field,
- form.dashboard-widget-item .fields-group-change-indicator .form-field {
+ form.dashboard-widget-item .fields-group.fields-group-description .form-field, form.dashboard-widget-item .fields-group.fields-group-value .form-field, form.dashboard-widget-item .fields-group.fields-group-time .form-field, form.dashboard-widget-item .fields-group.fields-group-change-indicator .form-field {
line-height: 24px; }
-form.dashboard-widget-item .fields-group-description .form-field:nth-child(1) {
+form.dashboard-widget-item .fields-group.fields-group-description .form-field:nth-child(1) {
grid-column: 1 / -1; }
-form.dashboard-widget-item .fields-group-value {
+form.dashboard-widget-item .fields-group.fields-group-value {
grid-template-columns: minmax(100px, max-content) 3fr max-content auto; }
- form.dashboard-widget-item .fields-group-value .units-show {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show {
display: flex; }
- form.dashboard-widget-item .fields-group-value .units-show label[for='units'] {
+ form.dashboard-widget-item .fields-group.fields-group-value .units-show label[for='units'] {
width: 100%; }
-form.dashboard-widget-item .fields-group-change-indicator {
+form.dashboard-widget-item .fields-group.fields-group-change-indicator {
grid-template-columns: repeat(3, max-content 96px); }
-form.dashboard-widget-item .fields-group-change-indicator .input-color-picker {
- display: block; }
+ form.dashboard-widget-item .fields-group.fields-group-change-indicator .input-color-picker {
+ display: block; }
-div.dashboard-widget-item {
+div.dashboard-widget-item > div {
box-sizing: border-box;
height: 100%;
padding: 10px;
overflow-x: hidden; }
- div.dashboard-widget-item a {
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- height: 100%;
- color: inherit; }
- div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
- border: none; }
- div.dashboard-widget-item a > div {
- display: flex;
- flex: 1 1 calc(100% / 3); }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-value,
- div.dashboard-widget-item .item-time {
- flex: 1 1 auto;
- max-width: 100%; }
- div.dashboard-widget-item .item-value {
+div.dashboard-widget-item a {
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ color: inherit; }
+ div.dashboard-widget-item a:focus, div.dashboard-widget-item a:hover, div.dashboard-widget-item a:visited {
+ border: none; }
+ div.dashboard-widget-item a > div {
display: flex;
- flex-wrap: wrap;
- margin: 0 5px; }
- div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
- flex: 0 0 100%; }
- div.dashboard-widget-item .item-value > .units:first-child {
- margin-bottom: -0.07em; }
- div.dashboard-widget-item .item-value > .units:last-child {
- margin-top: -0.07em; }
- div.dashboard-widget-item .item-value.type-text {
+ flex: 1 1 calc(100% / 3); }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-value,
+div.dashboard-widget-item .item-time {
+ flex: 1 1 auto;
+ max-width: 100%; }
+div.dashboard-widget-item .item-value {
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 5px; }
+ div.dashboard-widget-item .item-value > .units:first-child, div.dashboard-widget-item .item-value > .units:last-child {
+ flex: 0 0 100%; }
+ div.dashboard-widget-item .item-value > .units:first-child {
+ margin-bottom: -0.07em; }
+ div.dashboard-widget-item .item-value > .units:last-child {
+ margin-top: -0.07em; }
+ div.dashboard-widget-item .item-value.type-text {
+ min-width: 0; }
+ div.dashboard-widget-item .item-value.type-text .item-value-content {
min-width: 0; }
- div.dashboard-widget-item .item-value.type-text .item-value-content {
- min-width: 0; }
- div.dashboard-widget-item .item-value-content {
- display: flex;
- align-items: baseline;
- overflow: hidden; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .item-time,
- div.dashboard-widget-item .type-text .value {
- display: block;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis; }
- div.dashboard-widget-item .item-description,
- div.dashboard-widget-item .value,
- div.dashboard-widget-item .decimals,
- div.dashboard-widget-item .units,
- div.dashboard-widget-item .item-time {
- font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
- line-height: 1.14; }
- div.dashboard-widget-item .units:not(:last-child),
- div.dashboard-widget-item .change-indicator:not(:last-child) {
- margin-right: 5px; }
- div.dashboard-widget-item .units:not(:first-child),
- div.dashboard-widget-item .change-indicator:not(:first-child) {
- margin-left: 5px; }
- div.dashboard-widget-item .svg-arrow {
- height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
- div.dashboard-widget-item .item-value-no-data {
- color: #333333; }
- div.dashboard-widget-item .left {
- justify-content: flex-start;
- max-width: max-content;
- margin-right: auto; }
- div.dashboard-widget-item .center {
- justify-content: center; }
- div.dashboard-widget-item .right {
- justify-content: flex-end;
- max-width: max-content;
- margin-left: auto; }
- div.dashboard-widget-item .top {
- align-self: flex-start; }
- div.dashboard-widget-item .middle {
- align-self: center; }
- div.dashboard-widget-item .bottom {
- align-self: flex-end; }
- div.dashboard-widget-item .bold {
- font-weight: bold; }
+div.dashboard-widget-item .item-value-content {
+ display: flex;
+ align-items: baseline;
+ overflow: hidden; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .item-time,
+div.dashboard-widget-item .type-text .value {
+ display: block;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis; }
+div.dashboard-widget-item .item-description,
+div.dashboard-widget-item .value,
+div.dashboard-widget-item .decimals,
+div.dashboard-widget-item .units,
+div.dashboard-widget-item .item-time {
+ font-size: calc(var(--content-height) * var(--widget-item-font) / 1.14);
+ line-height: 1.14; }
+div.dashboard-widget-item .units:not(:last-child),
+div.dashboard-widget-item .change-indicator:not(:last-child) {
+ margin-right: 5px; }
+div.dashboard-widget-item .units:not(:first-child),
+div.dashboard-widget-item .change-indicator:not(:first-child) {
+ margin-left: 5px; }
+div.dashboard-widget-item .svg-arrow {
+ height: calc(var(--content-height) * var(--widget-item-font) * 0.72 / 1.14); }
+div.dashboard-widget-item .item-value-no-data {
+ color: #333333; }
+div.dashboard-widget-item .left {
+ justify-content: flex-start;
+ max-width: max-content;
+ margin-right: auto; }
+div.dashboard-widget-item .center {
+ justify-content: center; }
+div.dashboard-widget-item .right {
+ justify-content: flex-end;
+ max-width: max-content;
+ margin-left: auto; }
+div.dashboard-widget-item .top {
+ align-self: flex-start; }
+div.dashboard-widget-item .middle {
+ align-self: center; }
+div.dashboard-widget-item .bottom {
+ align-self: flex-end; }
+div.dashboard-widget-item .bold {
+ font-weight: bold; }
.dashboard-widget-item .svg-arrow-up {
fill: #3DC51D; }
@@ -1695,40 +1736,47 @@ div.dashboard-widget-slareport .date-vertical {
writing-mode: vertical-lr;
transform: rotate(180deg); }
+form.dashboard-widget-svggraph .svg-graph-preview,
form.dashboard-widget-svggraph .graph-widget-config-tabs {
- padding: 10px 0; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
- margin-right: 0;
- margin-left: 0;
- border-top: 1px solid #9f9f9f; }
- form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
- position: sticky;
+ grid-column: 1 / -1; }
+form.dashboard-widget-svggraph .svg-graph-preview {
+ position: relative;
+ min-width: 1110px;
+ height: 300px; }
+ form.dashboard-widget-svggraph .svg-graph-preview > div {
+ position: absolute;
top: 0;
- background: #f3f3f3;
+ right: 0;
+ left: 0;
+ margin: 0 -10px;
+ height: 300px;
+ background: #ffffff;
z-index: 3; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs > .tabs-nav {
+ border-top: 1px solid #9f9f9f; }
+form.dashboard-widget-svggraph .graph-widget-config-tabs .ui-tabs-nav {
+ position: sticky;
+ top: 0;
+ background: #f3f3f3;
+ z-index: 3; }
form.dashboard-widget-svggraph .table-forms-container, form.dashboard-widget-svggraph .browser-warning-container {
+ margin: -10px 0 0 0;
border: 1px solid #9f9f9f;
border-top: none; }
form.dashboard-widget-svggraph .table-forms-separator {
padding: 0; }
-form.dashboard-widget-svggraph .dataset-head {
- display: grid;
- grid-template-columns: 24px 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start; }
+form.dashboard-widget-svggraph .dataset-head,
form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body {
- display: grid;
- grid-template-columns: 24px 1fr 1fr 24px;
- grid-gap: 10px;
- align-items: start;
- position: relative;
- margin-top: 10px; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid {
- padding-top: 0; }
- form.dashboard-widget-svggraph .dataset-body.list-accordion-item-body .form-grid:first-child {
- grid-column-start: 2; }
+ display: contents; }
+form.dashboard-widget-svggraph .dataset-head .multiselect {
+ width: 100%; }
+form.dashboard-widget-svggraph .dataset-body .form-grid {
+ padding-top: 0; }
+ form.dashboard-widget-svggraph .dataset-body .form-grid:first-child {
+ grid-column-start: 3; }
form.dashboard-widget-svggraph .drag-icon {
position: absolute;
+ top: 5px;
left: -14px; }
form.dashboard-widget-svggraph .td-drag-icon .drag-icon {
top: 0;
@@ -1750,13 +1798,13 @@ form.dashboard-widget-svggraph .list-vertical-accordion {
overflow: visible;
margin-top: -5px;
margin-bottom: -5px; }
- form.dashboard-widget-svggraph .list-vertical-accordion .list-accordion-item-head {
- padding: 0; }
form.dashboard-widget-svggraph .list-accordion-item {
position: relative;
- width: 100%;
- padding: 5px 0;
- list-style-type: none; }
+ display: grid;
+ grid-template-columns: 24px 24px 1fr 1fr 24px;
+ grid-gap: 10px;
+ align-items: start;
+ padding: 5px 0; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-opened::before {
content: ' ';
position: absolute;
@@ -1768,8 +1816,6 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .multiselect {
height: 24px;
overflow: hidden; }
- form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
- display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .table-forms-separator {
border: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table thead,
@@ -1777,6 +1823,8 @@ form.dashboard-widget-svggraph .list-accordion-item {
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-handle,
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-head .single-item-table .table-col-action {
display: none; }
+ form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .dataset-body {
+ display: none; }
form.dashboard-widget-svggraph .list-accordion-item.list-accordion-item-closed .items-list {
padding-left: 0; }
form.dashboard-widget-svggraph .single-item-table .table-col-handle {
@@ -1795,11 +1843,83 @@ form.dashboard-widget-svggraph .single-item-table .single-item-table-row:last-ch
padding-bottom: 0; }
form.dashboard-widget-svggraph .single-item-table tfoot td {
padding: 5px 5px 5px 10px; }
+form.dashboard-widget-svggraph .overrides-list {
+ position: relative;
+ margin: -5px 0 -5px 15px; }
+form.dashboard-widget-svggraph .overrides-list-item {
+ position: relative;
+ display: grid;
+ grid-template-columns: 1fr 1fr 24px;
+ grid-gap: 5px 10px;
+ align-items: start;
+ padding: 5px 0; }
+ form.dashboard-widget-svggraph .overrides-list-item.sortable {
+ overflow: visible;
+ margin-top: -5px;
+ margin-bottom: -5px; }
+ form.dashboard-widget-svggraph .overrides-list-item .multiselect {
+ width: 100%; }
+ form.dashboard-widget-svggraph .overrides-list-item .btn-remove {
+ right: 0;
+ top: 0;
+ vertical-align: baseline; }
+form.dashboard-widget-svggraph .overrides-foot {
+ padding: 5px 0; }
+form.dashboard-widget-svggraph .overrides-options-list {
+ grid-column: 1 / -1;
+ padding: 0 24px 8px 0;
+ border-bottom: 1px solid #888888;
+ white-space: normal; }
+ form.dashboard-widget-svggraph .overrides-options-list > li {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 2px;
+ line-height: 22px;
+ white-space: nowrap; }
+ form.dashboard-widget-svggraph .overrides-options-list > li .color-picker {
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ position: relative;
+ padding: 1px 18px 1px 1px;
+ background-color: #333333;
+ border-radius: 2px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > span {
+ color: white;
+ padding-left: 8px;
+ line-height: 22px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > input[type=text] {
+ border-style: none;
+ line-height: 22px;
+ min-height: 22px;
+ width: 85px; }
+ form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ position: absolute;
+ right: 0;
+ top: 0;
+ min-height: 24px; }
+ form.dashboard-widget-svggraph .overrides-options-list .btn-alt .plus-icon {
+ margin-right: 0; }
+ form.dashboard-widget-svggraph .overrides-options-list .color-picker .color-picker-preview {
+ margin: 1px;
+ width: 20px;
+ min-height: 20px;
+ background-position: -323px -411px; }
form.dashboard-widget-svggraph .no-items-message {
display: none;
line-height: 24px;
color: #333333; }
+[theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div {
+ border: 1px solid #888888;
+ background-color: transparent !important; }
+ [theme="hc-dark"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
+[theme="hc-light"] form.dashboard-widget-svggraph .overrides-options-list > li > div > .subfilter-disable-btn {
+ border: none !important;
+ top: 0; }
+
form.dashboard-widget-tophosts #list_columns .text {
max-width: 250px; }
form.dashboard-widget-tophosts #column {
@@ -2554,6 +2674,49 @@ div.dashboard-widget-tophosts z-bar-gauge {
font-size: 0;
border-left: 1px solid #ffffff; }
+section {
+ background-color: #ffffff;
+ border: 1px solid #9f9f9f; }
+ section .section-head {
+ display: flex;
+ height: 32px;
+ line-height: 32px; }
+ section .section-head h4 {
+ padding: 0 10px;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ font-weight: bold;
+ line-height: inherit;
+ color: #262626; }
+ section .section-toggle {
+ width: 24px;
+ height: 24px;
+ margin: 2px 2px 0 auto;
+ background: url("../img/icon-sprite.svg?20220722") no-repeat -6px -654px; }
+ section .section-foot {
+ padding: 0 10px;
+ text-align: right;
+ line-height: 32px;
+ color: #333333; }
+ section.section-collapsed .section-body,
+ section.section-collapsed .section-foot {
+ display: none; }
+ section.section-collapsed .section-toggle {
+ background-position: -6px -689px; }
+ section:not(:last-child) {
+ margin-bottom: 10px; }
+ section .list-table {
+ border: 0; }
+ section .list-table tbody tr:last-child td {
+ border-bottom: 1px solid #888888; }
+ section .list-table td:first-child,
+ section .list-table th:first-child {
+ padding-left: 10px; }
+ section .list-table td:last-child,
+ section .list-table th:last-child {
+ padding-right: 10px; }
+
.service-info {
margin: -10px 0;
border-left: 4px solid #009900; }
@@ -4510,13 +4673,13 @@ button {
width: 24px;
height: 24px; }
-.filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
+section .section-toggle, .filter-container.tabfilter-container .icon-edit, .btn-dashboard-page-properties, .btn-iterator-page-previous, .btn-iterator-page-next, .btn-widget-action, .btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle, .btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle, .btn-widget-edit, .btn-alarm-on, .btn-alarm-off, .btn-sound-on, .btn-sound-off, .btn-info-clock, .btn-dashboard-conf, .interfaces .interface-row[data-type="2"] .interface-btn-toggle {
border: 0;
min-height: 0;
padding: 0;
opacity: .5;
transition: opacity .2s ease-out; }
- .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
+ section [disabled].section-toggle, .filter-container.tabfilter-container [disabled].icon-edit, [disabled].btn-dashboard-page-properties, [disabled].btn-iterator-page-previous, [disabled].btn-iterator-page-next, [disabled].btn-widget-action, [disabled].btn-widget-collapse, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle, [disabled].btn-widget-expand, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle, [disabled].btn-widget-edit, [disabled].btn-alarm-on, [disabled].btn-alarm-off, [disabled].btn-sound-on, [disabled].btn-sound-off, [disabled].btn-info-clock, [disabled].btn-dashboard-conf, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle, section [disabled].section-toggle:hover, .filter-container.tabfilter-container [disabled].icon-edit:hover, [disabled].btn-dashboard-page-properties:hover, [disabled].btn-iterator-page-previous:hover, [disabled].btn-iterator-page-next:hover, [disabled].btn-widget-action:hover, [disabled].btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:hover, [disabled].btn-widget-edit:hover, [disabled].btn-alarm-on:hover, [disabled].btn-alarm-off:hover, [disabled].btn-sound-on:hover, [disabled].btn-sound-off:hover, [disabled].btn-info-clock:hover, [disabled].btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:hover, section [disabled].section-toggle:focus, .filter-container.tabfilter-container [disabled].icon-edit:focus, [disabled].btn-dashboard-page-properties:focus, [disabled].btn-iterator-page-previous:focus, [disabled].btn-iterator-page-next:focus, [disabled].btn-widget-action:focus, [disabled].btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:focus, [disabled].btn-widget-edit:focus, [disabled].btn-alarm-on:focus, [disabled].btn-alarm-off:focus, [disabled].btn-sound-on:focus, [disabled].btn-sound-off:focus, [disabled].btn-info-clock:focus, [disabled].btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:focus, section [disabled].section-toggle:active, .filter-container.tabfilter-container [disabled].icon-edit:active, [disabled].btn-dashboard-page-properties:active, [disabled].btn-iterator-page-previous:active, [disabled].btn-iterator-page-next:active, [disabled].btn-widget-action:active, [disabled].btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed [disabled].list-accordion-item-toggle:active, [disabled].btn-widget-edit:active, [disabled].btn-alarm-on:active, [disabled].btn-alarm-off:active, [disabled].btn-sound-on:active, [disabled].btn-sound-off:active, [disabled].btn-info-clock:active, [disabled].btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] [disabled].interface-btn-toggle:active {
background-color: transparent;
opacity: .25; }
@@ -4544,7 +4707,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
.inaccessible .subfilter-enabled {
color: #bfbfbf; }
-.filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
+section .section-toggle:hover, .filter-container.tabfilter-container .icon-edit:hover, .btn-dashboard-page-properties:hover, .btn-iterator-page-previous:hover, .btn-iterator-page-next:hover, .btn-widget-action:hover, .btn-widget-collapse:hover, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:hover, .btn-widget-expand:hover, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:hover, .btn-widget-edit:hover, .btn-alarm-on:hover, .btn-alarm-off:hover, .btn-sound-on:hover, .btn-sound-off:hover, .btn-info-clock:hover, .btn-dashboard-conf:hover, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:hover, section .section-toggle:focus, .filter-container.tabfilter-container .icon-edit:focus, .btn-dashboard-page-properties:focus, .btn-iterator-page-previous:focus, .btn-iterator-page-next:focus, .btn-widget-action:focus, .btn-widget-collapse:focus, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:focus, .btn-widget-expand:focus, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:focus, .btn-widget-edit:focus, .btn-alarm-on:focus, .btn-alarm-off:focus, .btn-sound-on:focus, .btn-sound-off:focus, .btn-info-clock:focus, .btn-dashboard-conf:focus, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:focus, section .section-toggle:active, .filter-container.tabfilter-container .icon-edit:active, .btn-dashboard-page-properties:active, .btn-iterator-page-previous:active, .btn-iterator-page-next:active, .btn-widget-action:active, .btn-widget-collapse:active, .list-vertical-accordion .list-accordion-item-opened .list-accordion-item-toggle:active, .btn-widget-expand:active, .list-vertical-accordion .list-accordion-item-closed .list-accordion-item-toggle:active, .btn-widget-edit:active, .btn-alarm-on:active, .btn-alarm-off:active, .btn-sound-on:active, .btn-sound-off:active, .btn-info-clock:active, .btn-dashboard-conf:active, .interfaces .interface-row[data-type="2"] .interface-btn-toggle:active {
background-color: transparent;
opacity: 1; }
@@ -4637,16 +4800,16 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
content: ''; }
.icon-tree-top-bottom::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -300px; }
+ background-position: -84px -300px; }
.icon-tree-top-bottom-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -334px; }
+ background-position: -84px -334px; }
.icon-tree-top-right::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -372px; }
+ background-position: -84px -372px; }
.icon-tree-empty::before {
- background-position: url("../img/icon-sprite.svg?20220722") no-repeat -84px -350px; }
+ background-position: -84px -350px; }
.icon-cal {
background: transparent url("../img/icon-sprite.svg?20220722") no-repeat -42px -834px; }
@@ -4927,7 +5090,7 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
overflow: hidden;
margin: 0 10px; }
.overlay-dialogue.modal .dashboard-widget-head {
- margin-bottom: 14px; }
+ margin-bottom: 12px; }
.overlay-dialogue.modal .dashboard-widget-head .icon-doc-link {
margin-right: -26px; }
.overlay-dialogue.modal .dashboard-widget-head .overlay-close-btn {
@@ -4940,9 +5103,11 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
width: 100%;
max-height: calc(100vh - 220px);
max-width: inherit;
- margin: 0 -10px 10px;
+ margin: 0 -10px 8px;
padding: 0 10px;
position: relative; }
+ .overlay-dialogue.modal .overlay-dialogue-body > form {
+ padding: 2px 0; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-td-right {
padding-right: 8px; }
.overlay-dialogue.modal .overlay-dialogue-body .table-forms .table-forms-row-with-second-field {
@@ -5339,20 +5504,6 @@ button[disabled], button[disabled]:hover, button[disabled]:active {
stroke: #990000;
stroke-width: 2px; }
-.svg-graph-preview {
- margin-top: 10px;
- min-width: 1120px;
- height: 300px;
- position: relative; }
- .svg-graph-preview > div {
- background: #ffffff;
- height: 300px;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- z-index: 3; }
-
.svg-graph-hintbox {
font-size: 12px;
line-height: 18px;
@@ -5896,22 +6047,22 @@ span.is-loading {
padding: 10px 0 0;
text-align: center; }
-.dashboard-grid-widget-content, div.dashboard-widget-item, .msg-details ul, z-select button.focusable,
+.dashboard-grid-widget-content, div.dashboard-widget-item > div, .msg-details ul, z-select button.focusable,
.z-select button.focusable, z-select .list,
.z-select .list, .multiselect-available, textarea, select, .setup-right-body, .overlay-dialogue.modal .overlay-dialogue-body, .overlay-dialogue .hintbox-wrap, .overlay-dialogue .maps-container, .notif-body, .debug-output, .overlay-descr, .overflow-table, .import-compare .toc,
.import-compare .diff {
scrollbar-width: thin; }
- .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
+ .dashboard-grid-widget-content::-webkit-scrollbar, div.dashboard-widget-item > div::-webkit-scrollbar, .msg-details ul::-webkit-scrollbar, z-select button.focusable::-webkit-scrollbar,
.z-select button.focusable::-webkit-scrollbar, z-select .list::-webkit-scrollbar,
.z-select .list::-webkit-scrollbar, .multiselect-available::-webkit-scrollbar, textarea::-webkit-scrollbar, select::-webkit-scrollbar, .setup-right-body::-webkit-scrollbar, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar, .overlay-dialogue .maps-container::-webkit-scrollbar, .notif-body::-webkit-scrollbar, .debug-output::-webkit-scrollbar, .overlay-descr::-webkit-scrollbar, .overflow-table::-webkit-scrollbar, .import-compare .toc::-webkit-scrollbar,
.import-compare .diff::-webkit-scrollbar {
width: 9px; }
- .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
+ .dashboard-grid-widget-content::-webkit-scrollbar-track, div.dashboard-widget-item > div::-webkit-scrollbar-track, .msg-details ul::-webkit-scrollbar-track, z-select button.focusable::-webkit-scrollbar-track,
.z-select button.focusable::-webkit-scrollbar-track, z-select .list::-webkit-scrollbar-track,
.z-select .list::-webkit-scrollbar-track, .multiselect-available::-webkit-scrollbar-track, textarea::-webkit-scrollbar-track, select::-webkit-scrollbar-track, .setup-right-body::-webkit-scrollbar-track, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-track, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-track, .overlay-dialogue .maps-container::-webkit-scrollbar-track, .notif-body::-webkit-scrollbar-track, .debug-output::-webkit-scrollbar-track, .overlay-descr::-webkit-scrollbar-track, .overflow-table::-webkit-scrollbar-track, .import-compare .toc::-webkit-scrollbar-track,
.import-compare .diff::-webkit-scrollbar-track {
background-color: #999999; }
- .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
+ .dashboard-grid-widget-content::-webkit-scrollbar-thumb, div.dashboard-widget-item > div::-webkit-scrollbar-thumb, .msg-details ul::-webkit-scrollbar-thumb, z-select button.focusable::-webkit-scrollbar-thumb,
.z-select button.focusable::-webkit-scrollbar-thumb, z-select .list::-webkit-scrollbar-thumb,
.z-select .list::-webkit-scrollbar-thumb, .multiselect-available::-webkit-scrollbar-thumb, textarea::-webkit-scrollbar-thumb, select::-webkit-scrollbar-thumb, .setup-right-body::-webkit-scrollbar-thumb, .overlay-dialogue.modal .overlay-dialogue-body::-webkit-scrollbar-thumb, .overlay-dialogue .hintbox-wrap::-webkit-scrollbar-thumb, .overlay-dialogue .maps-container::-webkit-scrollbar-thumb, .notif-body::-webkit-scrollbar-thumb, .debug-output::-webkit-scrollbar-thumb, .overlay-descr::-webkit-scrollbar-thumb, .overflow-table::-webkit-scrollbar-thumb, .import-compare .toc::-webkit-scrollbar-thumb,
.import-compare .diff::-webkit-scrollbar-thumb {
@@ -6052,53 +6203,6 @@ svg {
white-space: normal;
word-break: break-word; }
-.overrides-list {
- display: table;
- width: 90%;
- max-width: 738px;
- padding-left: 15px; }
- .overrides-list .overrides-list-item {
- display: table-row; }
- .overrides-list .overrides-list-item .btn-remove {
- position: relative;
- right: -73px;
- top: 3px; }
-
-.overrides-options-list {
- white-space: normal;
- padding: 5px 0 8px;
- margin-bottom: 10px;
- border-bottom: 1px solid #888888; }
- .overrides-options-list > li {
- display: inline-block;
- margin: 2px 7px 2px 0;
- white-space: nowrap;
- vertical-align: middle; }
- .overrides-options-list > li > div {
- position: relative;
- padding: 1px 18px 1px 1px;
- background-color: #333333;
- border-radius: 2px; }
- .overrides-options-list > li > div > span {
- color: white;
- padding-left: 8px;
- line-height: 22px; }
- .overrides-options-list > li > div > input[type=text] {
- border-style: none;
- line-height: 22px;
- min-height: 22px;
- width: 85px; }
- .overrides-options-list > li > div > .subfilter-disable-btn {
- position: absolute;
- right: 0;
- top: 0;
- min-height: 24px; }
- .overrides-options-list .color-picker .color-picker-preview {
- margin: 1px;
- width: 20px;
- min-height: 20px;
- background-position: -323px -411px; }
-
.list-accordion-foot > div {
display: table-cell;
padding-top: 10px; }
@@ -6139,63 +6243,6 @@ svg {
.visibility-hidden {
visibility: hidden; }
-.columns-wrapper {
- display: flex;
- flex-wrap: wrap;
- align-items: start; }
- .columns-wrapper.columns-nowrap {
- flex-wrap: nowrap; }
- .columns-wrapper.columns-2 > div,
- .columns-wrapper.columns-2 > li {
- display: block;
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper.columns-3 > div,
- .columns-wrapper.columns-3 > li {
- display: block;
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-5 {
- flex: 0 0 5%;
- max-width: 5%; }
- .columns-wrapper .column-10 {
- flex: 0 0 10%;
- max-width: 10%; }
- .columns-wrapper .column-15 {
- flex: 0 0 15%;
- max-width: 15%; }
- .columns-wrapper .column-20 {
- flex: 0 0 20%;
- max-width: 20%; }
- .columns-wrapper .column-33 {
- flex: 0 0 33.33333%;
- max-width: 33.33333%; }
- .columns-wrapper .column-35 {
- flex: 0 0 35%;
- max-width: 35%; }
- .columns-wrapper .column-40 {
- flex: 0 0 40%;
- max-width: 40%; }
- .columns-wrapper .column-50 {
- flex: 0 0 50%;
- max-width: 50%; }
- .columns-wrapper .column-75 {
- flex: 0 0 75%;
- max-width: 75%; }
- .columns-wrapper .column-90 {
- flex: 0 0 90%;
- max-width: 90%; }
- .columns-wrapper .column-95 {
- flex: 0 0 95%;
- max-width: 95%; }
- .columns-wrapper .column-center {
- display: flex;
- justify-content: center;
- text-align: center; }
- .columns-wrapper .column-middle {
- display: flex;
- align-items: center; }
-
.preprocessing-list {
display: block;
max-width: 930px;
@@ -7945,12 +7992,6 @@ td.inactive-bg {
.problem-icon-list .status-disaster-bg::before {
background-position: -472px -409px; }
-.overrides-options-list > li > div {
- background-color: #333333 !important; }
- .overrides-options-list > li > div > .subfilter-disable-btn {
- border: none !important;
- top: 0; }
-
.totals-list > div {
border-top: 1px solid #9f9f9f;
color: #000000; }
@@ -7992,3 +8033,8 @@ td.inactive-bg {
background-position: -165px -690px; }
.interfaces .interface-row[data-type="2"].list-accordion-item-opened .interface-btn-toggle {
background-position: -165px -655px; }
+
+section .section-toggle {
+ background-position: -165px -654px; }
+section.section-collapsed .section-toggle {
+ background-position: -165px -690px; }
diff --git a/ui/auditacts.php b/ui/auditacts.php
index 6d5b3ed07a0..c73c4d3251e 100644
--- a/ui/auditacts.php
+++ b/ui/auditacts.php
@@ -20,7 +20,6 @@
require_once dirname(__FILE__).'/include/config.inc.php';
-require_once dirname(__FILE__).'/include/audit.inc.php';
require_once dirname(__FILE__).'/include/actions.inc.php';
require_once dirname(__FILE__).'/include/users.inc.php';
diff --git a/ui/disc_prototypes.php b/ui/disc_prototypes.php
index ce990385778..2979e6c040d 100644
--- a/ui/disc_prototypes.php
+++ b/ui/disc_prototypes.php
@@ -245,32 +245,29 @@ $fields = [
'sortorder' => [T_ZBX_STR, O_OPT, P_SYS, IN('"'.ZBX_SORT_DOWN.'","'.ZBX_SORT_UP.'"'), null]
];
-if (getRequest('interfaceid') == INTERFACE_TYPE_OPT && itemTypeInterface(getRequest('type')) == INTERFACE_TYPE_OPT) {
- unset($fields['interfaceid']);
- unset($_REQUEST['interfaceid']);
-}
-
$valid_input = check_fields($fields);
$_REQUEST['params'] = getRequest($paramsFieldName, '');
unset($_REQUEST[$paramsFieldName]);
-// permissions
-$discoveryRule = API::DiscoveryRule()->get([
- 'output' => ['hostid'],
+// Permissions.
+$lld_rules = API::DiscoveryRule()->get([
+ 'output' => ['itemid', 'hostid'],
+ 'selectHosts' => ['status'],
'itemids' => getRequest('parent_discoveryid'),
'editable' => true
]);
-$discoveryRule = reset($discoveryRule);
-if (!$discoveryRule) {
+
+if (!$lld_rules) {
access_deny();
}
-$itemPrototypeId = getRequest('itemid');
-if ($itemPrototypeId) {
+$itemid = getRequest('itemid');
+
+if ($itemid) {
$item_prototypes = API::ItemPrototype()->get([
'output' => [],
- 'itemids' => $itemPrototypeId,
+ 'itemids' => $itemid,
'editable' => true
]);
@@ -279,29 +276,6 @@ if ($itemPrototypeId) {
}
}
-// Convert CR+LF to LF in preprocessing script.
-if (hasRequest('preprocessing')) {
- foreach ($_REQUEST['preprocessing'] as &$step) {
- if ($step['type'] == ZBX_PREPROC_SCRIPT) {
- $step['params'][0] = CRLFtoLF($step['params'][0]);
- }
- }
- unset($step);
-}
-
-$tags = getRequest('tags', []);
-foreach ($tags as $key => $tag) {
- if ($tag['tag'] === '' && $tag['value'] === '') {
- unset($tags[$key]);
- }
- elseif (array_key_exists('type', $tag) && !($tag['type'] & ZBX_PROPERTY_OWN)) {
- unset($tags[$key]);
- }
- else {
- unset($tags[$key]['type']);
- }
-}
-
/*
* Actions
*/
@@ -318,244 +292,149 @@ if (hasRequest('delete') && hasRequest('itemid')) {
unset($_REQUEST['itemid'], $_REQUEST['form']);
}
elseif (hasRequest('add') || hasRequest('update')) {
- $result = true;
- DBstart();
-
- $delay = getRequest('delay', DB::getDefault('items', 'delay'));
- $type = getRequest('type', ITEM_TYPE_ZABBIX);
-
- /*
- * "delay_flex" is a temporary field that collects flexible and scheduling intervals separated by a semicolon.
- * In the end, custom intervals together with "delay" are stored in the "delay" variable.
- */
- if ($type != ITEM_TYPE_TRAPPER && $type != ITEM_TYPE_SNMPTRAP
- && ($type != ITEM_TYPE_ZABBIX_ACTIVE || strncmp(getRequest('key'), 'mqtt.get', 8) !== 0)
- && hasRequest('delay_flex')) {
- $intervals = [];
- $simple_interval_parser = new CSimpleIntervalParser([
- 'usermacros' => true,
- 'lldmacros' => true
- ]);
- $time_period_parser = new CTimePeriodParser([
- 'usermacros' => true,
- 'lldmacros' => true
- ]);
- $scheduling_interval_parser = new CSchedulingIntervalParser([
- 'usermacros' => true,
- 'lldmacros' => true
- ]);
-
- foreach (getRequest('delay_flex') as $interval) {
- if ($interval['type'] == ITEM_DELAY_FLEXIBLE) {
- if ($interval['delay'] === '' && $interval['period'] === '') {
- continue;
- }
-
- if ($simple_interval_parser->parse($interval['delay']) != CParser::PARSE_SUCCESS) {
- $result = false;
- error(_s('Invalid interval "%1$s".', $interval['delay']));
- break;
- }
- elseif ($time_period_parser->parse($interval['period']) != CParser::PARSE_SUCCESS) {
- $result = false;
- error(_s('Invalid interval "%1$s".', $interval['period']));
- break;
- }
-
- $intervals[] = $interval['delay'].'/'.$interval['period'];
- }
- else {
- if ($interval['schedule'] === '') {
- continue;
- }
-
- if ($scheduling_interval_parser->parse($interval['schedule']) != CParser::PARSE_SUCCESS) {
- $result = false;
- error(_s('Invalid interval "%1$s".', $interval['schedule']));
- break;
- }
+ try {
+ $type = (int) getRequest('type', DB::getDefault('items', 'type'));
+ $key = getRequest('key', DB::getDefault('items', 'key_'));
- $intervals[] = $interval['schedule'];
- }
+ if (isItemExampleKey($type, $key)) {
+ throw new Exception();
}
- if ($intervals) {
- $delay .= ';'.implode(';', $intervals);
+ $delay_flex = getRequest('delay_flex', []);
+
+ if (!isValidCustomIntervals($delay_flex, true)) {
+ throw new Exception();
}
- }
- if ($result) {
- $preprocessing = getRequest('preprocessing', []);
- $preprocessing = normalizeItemPreprocessingSteps($preprocessing);
-
- $item = [
- 'name' => getRequest('name'),
- 'description' => getRequest('description'),
- 'key_' => getRequest('key'),
- 'hostid' => $discoveryRule['hostid'],
- 'interfaceid' => getRequest('interfaceid'),
- 'delay' => $delay,
- 'status' => getRequest('status', ITEM_STATUS_DISABLED),
- 'discover' => getRequest('discover', ZBX_PROTOTYPE_DISCOVER),
- 'type' => getRequest('type'),
- 'snmp_oid' => getRequest('snmp_oid'),
- 'value_type' => getRequest('value_type'),
- 'trapper_hosts' => getRequest('trapper_hosts'),
- 'history' => (getRequest('history_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF)
+ $value_type = (int) getRequest('value_type', DB::getDefault('items', 'value_type'));
+ $trends_default = in_array($value_type, [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])
+ ? DB::getDefault('items', 'trends')
+ : 0;
+
+ $request_method = getRequest('request_method', DB::getDefault('items', 'request_method'));
+ $retrieve_mode_default = $request_method == HTTPCHECK_REQUEST_HEAD
+ ? HTTPTEST_STEP_RETRIEVE_MODE_HEADERS
+ : DB::getDefault('items', 'retrieve_mode');
+
+ $input = [
+ 'name' => getRequest('name', DB::getDefault('items', 'name')),
+ 'type' => $type,
+ 'key_' => $key,
+ 'value_type' => $value_type,
+ 'units' => getRequest('units', DB::getDefault('items', 'units')),
+ 'history' => getRequest('history_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF
+ ? ITEM_NO_STORAGE_VALUE
+ : getRequest('history', DB::getDefault('items', 'history')),
+ 'trends' => getRequest('trends_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF
? ITEM_NO_STORAGE_VALUE
- : getRequest('history'),
- 'units' => getRequest('units'),
- 'logtimefmt' => getRequest('logtimefmt'),
- 'valuemapid' => getRequest('valuemapid', 0),
- 'authtype' => getRequest('authtype'),
- 'username' => getRequest('username'),
- 'password' => getRequest('password'),
- 'publickey' => getRequest('publickey'),
- 'privatekey' => getRequest('privatekey'),
- 'params' => getRequest('params'),
- 'ipmi_sensor' => getRequest('ipmi_sensor'),
- 'ruleid' => getRequest('parent_discoveryid')
+ : getRequest('trends', $trends_default),
+ 'valuemapid' => getRequest('valuemapid', 0),
+ 'inventory_link' => getRequest('inventory_link', DB::getDefault('items', 'inventory_link')),
+ 'logtimefmt' => getRequest('logtimefmt', DB::getDefault('items', 'logtimefmt')),
+ 'description' => getRequest('description', DB::getDefault('items', 'description')),
+ 'status' => getRequest('status', ITEM_STATUS_DISABLED),
+ 'discover' => getRequest('discover', DB::getDefault('items', 'discover')),
+ 'tags' => prepareItemTags(getRequest('tags', [])),
+ 'preprocessing' => normalizeItemPreprocessingSteps(getRequest('preprocessing', [])),
+
+ // Type fields.
+ // The fields used for multiple item types.
+ 'interfaceid' => getRequest('interfaceid', 0),
+ 'authtype' => $type == ITEM_TYPE_HTTPAGENT
+ ? getRequest('http_authtype', DB::getDefault('items', 'authtype'))
+ : getRequest('authtype', DB::getDefault('items', 'authtype')),
+ 'username' => $type == ITEM_TYPE_HTTPAGENT
+ ? getRequest('http_username', DB::getDefault('items', 'username'))
+ : getRequest('username', DB::getDefault('items', 'username')),
+ 'password' => $type == ITEM_TYPE_HTTPAGENT
+ ? getRequest('http_password', DB::getDefault('items', 'password'))
+ : getRequest('password', DB::getDefault('items', 'password')),
+ 'params' => getRequest('params', DB::getDefault('items', 'params')),
+ 'timeout' => getRequest('timeout', DB::getDefault('items', 'timeout')),
+ 'delay' => getDelayWithCustomIntervals(getRequest('delay', DB::getDefault('items', 'delay')), $delay_flex),
+ 'trapper_hosts' => getRequest('trapper_hosts', DB::getDefault('items', 'trapper_hosts')),
+
+ // Dependent item type specific fields.
+ 'master_itemid' => getRequest('master_itemid', 0),
+
+ // HTTP Agent item type specific fields.
+ 'url' => getRequest('url', DB::getDefault('items', 'url')),
+ 'query_fields' => prepareItemQueryFields(getRequest('query_fields', [])),
+ 'request_method' => $request_method,
+ 'post_type' => getRequest('post_type', DB::getDefault('items', 'post_type')),
+ 'posts' => getRequest('posts', DB::getDefault('items', 'posts')),
+ 'headers' => prepareItemHeaders(getRequest('headers', [])),
+ 'status_codes' => getRequest('status_codes', DB::getDefault('items', 'status_codes')),
+ 'follow_redirects' => getRequest('follow_redirects', DB::getDefault('items', 'follow_redirects')),
+ 'retrieve_mode' => getRequest('retrieve_mode', $retrieve_mode_default),
+ 'output_format' => getRequest('output_format', DB::getDefault('items', 'output_format')),
+ 'http_proxy' => getRequest('http_proxy', DB::getDefault('items', 'http_proxy')),
+ 'verify_peer' => getRequest('verify_peer', DB::getDefault('items', 'verify_peer')),
+ 'verify_host' => getRequest('verify_host', DB::getDefault('items', 'verify_host')),
+ 'ssl_cert_file' => getRequest('ssl_cert_file', DB::getDefault('items', 'ssl_cert_file')),
+ 'ssl_key_file' => getRequest('ssl_key_file', DB::getDefault('items', 'ssl_key_file')),
+ 'ssl_key_password' => getRequest('ssl_key_password', DB::getDefault('items', 'ssl_key_password')),
+ 'allow_traps' => getRequest('allow_traps', DB::getDefault('items', 'allow_traps')),
+
+ // IPMI item type specific fields.
+ 'ipmi_sensor' => getRequest('ipmi_sensor', DB::getDefault('items', 'ipmi_sensor')),
+
+ // JMX item type specific fields.
+ 'jmx_endpoint' => getRequest('jmx_endpoint', DB::getDefault('items', 'jmx_endpoint')),
+
+ // Script item type specific fields.
+ 'parameters' => prepareItemParameters(getRequest('parameters', [])),
+
+ // SNMP item type specific fields.
+ 'snmp_oid' => getRequest('snmp_oid', DB::getDefault('items', 'snmp_oid')),
+
+ // SSH item type specific fields.
+ 'publickey' => getRequest('publickey', DB::getDefault('items', 'publickey')),
+ 'privatekey' => getRequest('privatekey', DB::getDefault('items', 'privatekey'))
];
- switch ($item['type']) {
- case ITEM_TYPE_SCRIPT:
- $script_item = [
- 'parameters' => getRequest('parameters', []),
- 'timeout' => getRequest('timeout', DB::getDefault('items', 'timeout'))
- ];
-
- $item = prepareScriptItemFormData($script_item) + $item;
- break;
-
- case ITEM_TYPE_JMX:
- $item['jmx_endpoint'] = getRequest('jmx_endpoint', '');
- break;
-
- case ITEM_TYPE_DEPENDENT:
- $item['master_itemid'] = getRequest('master_itemid');
- break;
-
- case ITEM_TYPE_HTTPAGENT:
- $http_item = [
- 'timeout' => getRequest('timeout', DB::getDefault('items', 'timeout')),
- 'url' => getRequest('url'),
- 'query_fields' => getRequest('query_fields', []),
- 'posts' => getRequest('posts'),
- 'status_codes' => getRequest('status_codes', DB::getDefault('items', 'status_codes')),
- 'follow_redirects' => (int) getRequest('follow_redirects'),
- 'post_type' => (int) getRequest('post_type'),
- 'http_proxy' => getRequest('http_proxy'),
- 'headers' => getRequest('headers', []),
- 'retrieve_mode' => (int) getRequest('retrieve_mode'),
- 'request_method' => (int) getRequest('request_method'),
- 'output_format' => (int) getRequest('output_format'),
- 'allow_traps' => (int) getRequest('allow_traps', HTTPCHECK_ALLOW_TRAPS_OFF),
- 'ssl_cert_file' => getRequest('ssl_cert_file'),
- 'ssl_key_file' => getRequest('ssl_key_file'),
- 'ssl_key_password' => getRequest('ssl_key_password'),
- 'verify_peer' => (int) getRequest('verify_peer'),
- 'verify_host' => (int) getRequest('verify_host'),
- 'authtype' => getRequest('http_authtype', HTTPTEST_AUTH_NONE),
- 'username' => getRequest('http_username', ''),
- 'password' => getRequest('http_password', '')
- ];
- break;
- }
+ $result = true;
- if ($item['value_type'] == ITEM_VALUE_TYPE_FLOAT || $item['value_type'] == ITEM_VALUE_TYPE_UINT64) {
- $item['trends'] = (getRequest('trends_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF)
- ? ITEM_NO_STORAGE_VALUE
- : getRequest('trends');
- }
+ if (hasRequest('add')) {
+ $item = [
+ 'hostid' => $lld_rules[0]['hostid'],
+ 'ruleid' => $lld_rules[0]['itemid']
+ ];
- if (hasRequest('update')) {
- $itemId = getRequest('itemid');
-
- $db_item = API::ItemPrototype()->get([
- 'output' => ['type', 'snmp_oid', 'hostid', 'name', 'key_', 'delay', 'history',
- 'trends', 'status', 'value_type', 'trapper_hosts', 'units',
- 'logtimefmt', 'templateid', 'valuemapid', 'params', 'ipmi_sensor', 'authtype', 'username',
- 'password', 'publickey', 'privatekey', 'interfaceid', 'description', 'jmx_endpoint',
- 'master_itemid', 'timeout', 'url', 'query_fields', 'posts', 'status_codes', 'follow_redirects',
- 'post_type', 'http_proxy', 'headers', 'retrieve_mode', 'request_method', 'output_format',
- 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password', 'verify_peer', 'verify_host', 'allow_traps',
- 'discover', 'parameters'
- ],
- 'selectPreprocessing' => ['type', 'params', 'error_handler', 'error_handler_params'],
- 'selectTags' => ['tag', 'value'],
- 'itemids' => [$itemId]
+ $item += getSanitizedItemFields($input + [
+ 'templateid' => '0',
+ 'flags' => ZBX_FLAG_DISCOVERY_PROTOTYPE,
+ 'hosts' => $lld_rules[0]['hosts']
]);
- $db_item = $db_item[0];
-
- if ($item['type'] == ITEM_TYPE_HTTPAGENT && $db_item['templateid'] == 0) {
- $item = prepareItemHttpAgentFormData($http_item) + $item;
- }
-
- if ($db_item['type'] == $item['type']) {
- $item = CArrayHelper::unsetEqualValues($item, $db_item);
- }
-
- $item['itemid'] = $itemId;
-
- if ($db_item['preprocessing'] !== $preprocessing) {
- $item['preprocessing'] = $preprocessing;
- }
+ $response = API::ItemPrototype()->create($item);
- function parameters_equal(array $stored_parameters, array $input_parameters): bool {
- return (array_column($stored_parameters, 'value') == array_column($input_parameters, 'value')
- && array_column($stored_parameters, 'name') == array_column($input_parameters, 'name'));
+ if ($response === false) {
+ throw new Exception();
}
+ }
- if (getRequest('type') == ITEM_TYPE_SCRIPT && $db_item['type'] == getRequest('type')
- && parameters_equal($db_item['parameters'], $item['parameters'])) {
- unset($item['parameters']);
- }
-
- CArrayHelper::sort($db_item['tags'], ['tag', 'value']);
- CArrayHelper::sort($tags, ['tag', 'value']);
-
- if (array_values($db_item['tags']) !== array_values($tags)) {
- $item['tags'] = $tags;
- }
+ if (hasRequest('update')) {
+ $db_items = API::ItemPrototype()->get([
+ 'output' => ['templateid', 'type', 'key_', 'value_type', 'authtype', 'allow_traps'],
+ 'itemids' => $itemid
+ ]);
- if ($db_item['templateid'] != 0) {
- $allowed_fields = array_fill_keys([
- 'itemid', 'delay', 'delay_flex', 'history', 'trends', 'history_mode', 'trends_mode', 'allow_traps',
- 'description', 'status', 'discover', 'tags'
- ], true);
-
- if ($db_item['type'] != ITEM_TYPE_HTTPAGENT) {
- $allowed_fields += array_fill_keys([
- 'authtype', 'username', 'password', 'params', 'publickey', 'privatekey', 'interfaceid'
- ], true);
- }
-
- foreach ($item as $field => $value) {
- if (!array_key_exists($field, $allowed_fields)) {
- unset($item[$field]);
- }
- }
- }
+ $item = getSanitizedItemFields($input + $db_items[0] + [
+ 'flags' => ZBX_FLAG_DISCOVERY_PROTOTYPE,
+ 'hosts' => $lld_rules[0]['hosts']
+ ]);
- $result = API::ItemPrototype()->update($item);
- }
- else {
- if (getRequest('type') == ITEM_TYPE_HTTPAGENT) {
- $item = prepareItemHttpAgentFormData($http_item) + $item;
- }
+ $response = API::ItemPrototype()->update(['itemid' => $itemid] + $item);
- if ($preprocessing) {
- $item['preprocessing'] = $preprocessing;
+ if ($response === false) {
+ throw new Exception();
}
-
- $item['tags'] = $tags;
-
- $result = API::ItemPrototype()->create($item);
}
}
-
- $result = DBend($result);
+ catch (Exception $e) {
+ $result = false;
+ }
if (hasRequest('add')) {
show_messages($result, _('Item prototype added'), _('Cannot add item prototype'));
@@ -757,7 +636,7 @@ else {
$data = [
'form' => getRequest('form'),
'parent_discoveryid' => getRequest('parent_discoveryid'),
- 'hostid' => $discoveryRule['hostid'],
+ 'hostid' => $lld_rules[0]['hostid'],
'sort' => $sortField,
'sortorder' => $sortOrder,
'context' => getRequest('context')
diff --git a/ui/host_discovery.php b/ui/host_discovery.php
index 973cd4bc8b6..b23bdbfaf0d 100644
--- a/ui/host_discovery.php
+++ b/ui/host_discovery.php
@@ -238,11 +238,6 @@ $fields = [
'sortorder' => [T_ZBX_STR, O_OPT, P_SYS, IN('"'.ZBX_SORT_DOWN.'","'.ZBX_SORT_UP.'"'), null]
];
-if (getRequest('interfaceid') == INTERFACE_TYPE_OPT) {
- unset($fields['interfaceid']);
- unset($_REQUEST['interfaceid']);
-}
-
check_fields($fields);
$_REQUEST['params'] = getRequest($paramsFieldName, '');
@@ -420,13 +415,21 @@ elseif (hasRequest('add') || hasRequest('update')) {
$delay = getRequest('delay', DB::getDefault('items', 'delay'));
$type = getRequest('type', ITEM_TYPE_ZABBIX);
+ $item_key = getRequest('key', '');
+
+ if (($type == ITEM_TYPE_DB_MONITOR && $item_key === ZBX_DEFAULT_KEY_DB_MONITOR)
+ || ($type == ITEM_TYPE_SSH && $item_key === ZBX_DEFAULT_KEY_SSH)
+ || ($type == ITEM_TYPE_TELNET && $item_key === ZBX_DEFAULT_KEY_TELNET)) {
+ error(_('Check the key, please. Default example was passed.'));
+ $result = false;
+ }
/*
* "delay_flex" is a temporary field that collects flexible and scheduling intervals separated by a semicolon.
* In the end, custom intervals together with "delay" are stored in the "delay" variable.
*/
- if ($type != ITEM_TYPE_TRAPPER && $type != ITEM_TYPE_SNMPTRAP
- && ($type != ITEM_TYPE_ZABBIX_ACTIVE || strncmp(getRequest('key'), 'mqtt.get', 8) !== 0)
+ if ($result && $type != ITEM_TYPE_TRAPPER && $type != ITEM_TYPE_SNMPTRAP
+ && ($type != ITEM_TYPE_ZABBIX_ACTIVE || strncmp($item_key, 'mqtt.get', 8) !== 0)
&& hasRequest('delay_flex')) {
$intervals = [];
$simple_interval_parser = new CSimpleIntervalParser(['usermacros' => true]);
@@ -475,54 +478,14 @@ elseif (hasRequest('add') || hasRequest('update')) {
if ($result) {
$preprocessing = getRequest('preprocessing', []);
-
- foreach ($preprocessing as &$step) {
- switch ($step['type']) {
- case ZBX_PREPROC_PROMETHEUS_TO_JSON:
- $step['params'] = trim($step['params'][0]);
- break;
-
- case ZBX_PREPROC_XPATH:
- case ZBX_PREPROC_JSONPATH:
- case ZBX_PREPROC_VALIDATE_NOT_REGEX:
- case ZBX_PREPROC_ERROR_FIELD_JSON:
- case ZBX_PREPROC_ERROR_FIELD_XML:
- case ZBX_PREPROC_THROTTLE_TIMED_VALUE:
- case ZBX_PREPROC_SCRIPT:
- $step['params'] = $step['params'][0];
- break;
-
- case ZBX_PREPROC_REGSUB:
- case ZBX_PREPROC_STR_REPLACE:
- $step['params'] = implode("\n", $step['params']);
- break;
-
- case ZBX_PREPROC_CSV_TO_JSON:
- if (!array_key_exists(2, $step['params'])) {
- $step['params'][2] = ZBX_PREPROC_CSV_NO_HEADER;
- }
- $step['params'] = implode("\n", $step['params']);
- break;
-
- default:
- $step['params'] = '';
- }
-
- $step += [
- 'error_handler' => ZBX_PREPROC_FAIL_DEFAULT,
- 'error_handler_params' => ''
- ];
-
- unset($step['sortorder']);
- }
- unset($step);
+ $preprocessing = normalizeItemPreprocessingSteps($preprocessing);
$newItem = [
'itemid' => getRequest('itemid'),
'interfaceid' => getRequest('interfaceid', 0),
'name' => getRequest('name'),
'description' => getRequest('description'),
- 'key_' => getRequest('key'),
+ 'key_' => $item_key,
'hostid' => getRequest('hostid'),
'delay' => $delay,
'status' => getRequest('status', ITEM_STATUS_DISABLED),
diff --git a/ui/hostinventoriesoverview.php b/ui/hostinventoriesoverview.php
index 97750f5e7b2..d1e3ed30286 100644
--- a/ui/hostinventoriesoverview.php
+++ b/ui/hostinventoriesoverview.php
@@ -142,7 +142,7 @@ $select_groupby = (new CSelect('filter_groupby'))
->addOption(new CSelectOption('', _('not selected')))
->addOptions(CSelect::createOptionsFromArray($inventories));
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Host inventory overview'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::INVENTORY_HOST_OVERVIEW))
->addItem(
diff --git a/ui/httpdetails.php b/ui/httpdetails.php
index 0aa84c36788..61a14f9a76b 100644
--- a/ui/httpdetails.php
+++ b/ui/httpdetails.php
@@ -181,7 +181,7 @@ $graph_time->insertFlickerfreeJs();
CScreenBuilder::insertScreenStandardJs($graph_in->timeline);
// Create graphs widget.
-$widget = (new CWidget())
+(new CHtmlPage())
->setTitle(_('Details of web scenario').': '.$http_test_name)
->setWebLayoutMode($page['web_layout_mode'])
->setControls((new CTag('nav', true,
diff --git a/ui/include/audit.inc.php b/ui/include/audit.inc.php
deleted file mode 100644
index 94629e946d5..00000000000
--- a/ui/include/audit.inc.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-// function add_audit($action, $resourcetype, $note) {
-// if (mb_strlen($note) > 128) {
-// $note = mb_substr($note, 0, 125).'...';
-// }
-
-// $values = [
-// 'userid' => CWebUser::$data['userid'],
-// 'clock' => time(),
-// 'ip' => substr(CWebUser::getIp(), 0, 39),
-// 'action' => $action,
-// 'resourcetype' => $resourcetype,
-// 'note' => $note
-// ];
-
-// try {
-// DB::insert('auditlog', [$values]);
-// return true;
-// }
-// catch (DBException $e) {
-// return false;
-// }
-// }
diff --git a/ui/include/classes/api/CAudit.php b/ui/include/classes/api/CAudit.php
index b846e380071..1d15f35b17c 100644
--- a/ui/include/classes/api/CAudit.php
+++ b/ui/include/classes/api/CAudit.php
@@ -123,6 +123,7 @@ class CAudit {
self::RESOURCE_ICON_MAP => 'icon_map',
self::RESOURCE_IMAGE => 'images',
self::RESOURCE_ITEM => 'items',
+ self::RESOURCE_ITEM_PROTOTYPE => 'items',
self::RESOURCE_IT_SERVICE => 'services',
self::RESOURCE_MACRO => 'globalmacro',
self::RESOURCE_MAINTENANCE => 'maintenances',
@@ -130,6 +131,7 @@ class CAudit {
self::RESOURCE_MODULE => 'module',
self::RESOURCE_PROXY => 'hosts',
self::RESOURCE_REGEXP => 'regexps',
+ self::RESOURCE_SCENARIO => 'httptest',
self::RESOURCE_SCHEDULED_REPORT => 'report',
self::RESOURCE_SCRIPT => 'scripts',
self::RESOURCE_SETTINGS => 'config',
@@ -173,6 +175,7 @@ class CAudit {
self::RESOURCE_ICON_MAP => 'name',
self::RESOURCE_IMAGE => 'name',
self::RESOURCE_ITEM => 'name',
+ self::RESOURCE_ITEM_PROTOTYPE => 'name',
self::RESOURCE_IT_SERVICE => 'name',
self::RESOURCE_MACRO => 'macro',
self::RESOURCE_MAINTENANCE => 'name',
@@ -180,6 +183,7 @@ class CAudit {
self::RESOURCE_MODULE => 'id',
self::RESOURCE_PROXY => 'host',
self::RESOURCE_REGEXP => 'name',
+ self::RESOURCE_SCENARIO => 'name',
self::RESOURCE_SCHEDULED_REPORT => 'name',
self::RESOURCE_SCRIPT => 'name',
self::RESOURCE_SETTINGS => null,
@@ -212,6 +216,7 @@ class CAudit {
self::RESOURCE_ICON_MAP => 'iconmap',
self::RESOURCE_IMAGE => 'image',
self::RESOURCE_ITEM => 'item',
+ self::RESOURCE_ITEM_PROTOTYPE => 'itemprototype',
self::RESOURCE_IT_SERVICE => 'service',
self::RESOURCE_MACRO => 'usermacro',
self::RESOURCE_MAINTENANCE => 'maintenance',
@@ -246,6 +251,44 @@ class CAudit {
'paths' => ['hostprototype.macros.value'],
'conditions' => ['type' => ZBX_MACRO_TYPE_SECRET]
],
+ self::RESOURCE_ITEM => [
+ [
+ 'paths' => ['item.password'],
+ 'conditions' => [
+ [
+ 'type' => [ITEM_TYPE_SIMPLE, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_SSH, ITEM_TYPE_TELNET,
+ ITEM_TYPE_JMX
+ ]
+ ],
+ [
+ 'type' => ITEM_TYPE_HTTPAGENT,
+ 'authtype' => [HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS,
+ HTTPTEST_AUTH_DIGEST
+ ]
+ ]
+ ]
+ ],
+ ['paths' => ['item.ssl_key_password'], 'conditions' => ['type' => ITEM_TYPE_HTTPAGENT]]
+ ],
+ self::RESOURCE_ITEM_PROTOTYPE => [
+ [
+ 'paths' => ['itemprototype.password'],
+ 'conditions' => [
+ [
+ 'type' => [ITEM_TYPE_SIMPLE, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_SSH, ITEM_TYPE_TELNET,
+ ITEM_TYPE_JMX
+ ]
+ ],
+ [
+ 'type' => ITEM_TYPE_HTTPAGENT,
+ 'authtype' => [HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS,
+ HTTPTEST_AUTH_DIGEST
+ ]
+ ]
+ ]
+ ],
+ ['paths' => ['itemprototype.ssl_key_password'], 'conditions' => ['type' => ITEM_TYPE_HTTPAGENT]]
+ ],
self::RESOURCE_MACRO => [
'paths' => ['usermacro.value'],
'conditions' => ['type' => ZBX_MACRO_TYPE_SECRET]
@@ -312,6 +355,12 @@ class CAudit {
'hostprototype.tags' => 'host_tag',
'hostprototype.templates' => 'hosts_templates',
'iconmap.mappings' => 'icon_mapping',
+ 'item.parameters' => 'item_parameter',
+ 'item.preprocessing' => 'item_preproc',
+ 'item.tags' => 'item_tag',
+ 'itemprototype.parameters' => 'item_parameter',
+ 'itemprototype.preprocessing' => 'item_preproc',
+ 'itemprototype.tags' => 'item_tag',
'maintenance.groups' => 'maintenances_groups',
'maintenance.hosts' => 'maintenances_hosts',
'maintenance.tags' => 'maintenance_tag',
@@ -390,6 +439,12 @@ class CAudit {
'hostprototype.tags' => 'hosttagid',
'hostprototype.templates' => 'hosttemplateid',
'iconmap.mappings' => 'iconmappingid',
+ 'item.parameters' => 'item_parameterid',
+ 'item.preprocessing' => 'item_preprocid',
+ 'item.tags' => 'itemtagid',
+ 'itemprototype.parameters' => 'item_parameterid',
+ 'itemprototype.preprocessing' => 'item_preprocid',
+ 'itemprototype.tags' => 'itemtagid',
'maintenance.groups' => 'maintenance_groupid',
'maintenance.hosts' => 'maintenance_hostid',
'maintenance.tags' => 'maintenancetagid',
@@ -640,27 +695,60 @@ class CAudit {
}
$object_path = self::getLastObjectPath($path);
+ $abstract_path = self::getAbstractPath($path);
- if (!in_array(self::getAbstractPath($path), self::MASKED_PATHS[$resource]['paths'])) {
+ $rules = [];
+
+ if (array_key_exists('paths', self::MASKED_PATHS[$resource])) {
+ if (in_array($abstract_path, self::MASKED_PATHS[$resource]['paths'])) {
+ $rules = self::MASKED_PATHS[$resource];
+ }
+ }
+ else {
+ foreach (self::MASKED_PATHS[$resource] as $_rules) {
+ if (in_array($abstract_path, $_rules['paths'])) {
+ $rules = $_rules;
+ break;
+ }
+ }
+ }
+
+ if (!$rules) {
return false;
}
- if (!array_key_exists('conditions', self::MASKED_PATHS[$resource])) {
+ if (!array_key_exists('conditions', $rules)) {
return true;
}
- $all_conditions = count(self::MASKED_PATHS[$resource]['conditions']);
- $true_conditions = 0;
+ $or_conditions = $rules['conditions'];
+
+ if (!array_key_exists(0, $or_conditions)) {
+ $or_conditions = [$or_conditions];
+ }
+
+ foreach ($or_conditions as $and_conditions) {
+ $all_conditions = count($and_conditions);
+ $true_conditions = 0;
- foreach (self::MASKED_PATHS[$resource]['conditions'] as $condition_key => $value) {
- $condition_path = $object_path.'.'.$condition_key;
+ foreach ($and_conditions as $condition_key => $value) {
+ $condition_path = $object_path.'.'.$condition_key;
- if (array_key_exists($condition_path, $object) && $object[$condition_path] == $value) {
- $true_conditions++;
+ if (array_key_exists($condition_path, $object)) {
+ $values = is_array($value) ? $value : [$value];
+
+ if (in_array($object[$condition_path], $values)) {
+ $true_conditions++;
+ }
+ }
+ }
+
+ if ($true_conditions == $all_conditions) {
+ return true;
}
}
- return ($true_conditions == $all_conditions);
+ return false;
}
/**
@@ -739,6 +827,11 @@ class CAudit {
return false;
}
+ if ($schema_fields[$field_name]['type'] === DB::FIELD_TYPE_ID && $schema_fields[$field_name]['null']
+ && $value == 0) {
+ return true;
+ }
+
if (!array_key_exists('default', $schema_fields[$field_name])) {
return false;
}
@@ -824,19 +917,21 @@ class CAudit {
$result[self::getLastObjectPath($path)] = [self::DETAILS_ACTION_ADD];
}
- if (self::isDefaultValue($resource, $path, $value)) {
+ if (self::isValueToMask($resource, $path, $object)) {
+ $result[$path] = [self::DETAILS_ACTION_ADD, ZBX_SECRET_MASK];
continue;
}
- if (self::isValueToMask($resource, $path, $object)) {
- $result[$path] = [self::DETAILS_ACTION_ADD, ZBX_SECRET_MASK];
+ if (self::isDefaultValue($resource, $path, $value)) {
+ continue;
}
- elseif (in_array(self::getAbstractPath($path), self::BLOB_FIELDS)) {
+
+ if (in_array(self::getAbstractPath($path), self::BLOB_FIELDS)) {
$result[$path] = [self::DETAILS_ACTION_ADD];
+ continue;
}
- else {
- $result[$path] = [self::DETAILS_ACTION_ADD, $value];
- }
+
+ $result[$path] = [self::DETAILS_ACTION_ADD, $value];
}
return $result;
@@ -880,42 +975,46 @@ class CAudit {
}
foreach ($object as $path => $value) {
+ $is_value_to_mask = self::isValueToMask($resource, $path, $object);
$db_value = array_key_exists($path, $db_object) ? $db_object[$path] : null;
if ($db_value === null) {
+ $is_value_to_mask = self::isValueToMask($resource, $path, $object);
+
+ if ($is_value_to_mask) {
+ $result[$path] = [self::DETAILS_ACTION_ADD, ZBX_SECRET_MASK];
+ continue;
+ }
+
if (self::isDefaultValue($resource, $path, $value)) {
continue;
}
if (in_array(self::getAbstractPath($path), self::BLOB_FIELDS)) {
$result[$path] = [self::DETAILS_ACTION_ADD];
+ continue;
}
- else {
- $result[$path] = [
- self::DETAILS_ACTION_ADD,
- self::isValueToMask($resource, $path, $object) ? ZBX_SECRET_MASK : $value
- ];
- }
+
+ $result[$path] = [self::DETAILS_ACTION_ADD, $value];
}
else {
- $is_mask_value = self::isValueToMask($resource, $path, $object);
- $is_mask_db_value = self::isValueToMask($resource, $path, $db_object);
+ $is_db_value_to_mask = self::isValueToMask($resource, $path, $db_object);
- if ($value != $db_value || $is_mask_value || $is_mask_db_value) {
+ if ($value != $db_value || $is_value_to_mask || $is_db_value_to_mask) {
if (self::isNestedObjectProperty($path)) {
$result[self::getLastObjectPath($path)] = [self::DETAILS_ACTION_UPDATE];
}
if (in_array(self::getAbstractPath($path), self::BLOB_FIELDS)) {
$result[$path] = [self::DETAILS_ACTION_UPDATE];
+ continue;
}
- else {
- $result[$path] = [
- self::DETAILS_ACTION_UPDATE,
- $is_mask_value ? ZBX_SECRET_MASK : $value,
- $is_mask_db_value ? ZBX_SECRET_MASK : $db_value
- ];
- }
+
+ $result[$path] = [
+ self::DETAILS_ACTION_UPDATE,
+ $is_value_to_mask ? ZBX_SECRET_MASK : $value,
+ $is_db_value_to_mask ? ZBX_SECRET_MASK : $db_value
+ ];
}
}
}
diff --git a/ui/include/classes/api/CItemTypeFactory.php b/ui/include/classes/api/CItemTypeFactory.php
new file mode 100644
index 00000000000..6d03e84efe4
--- /dev/null
+++ b/ui/include/classes/api/CItemTypeFactory.php
@@ -0,0 +1,97 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+final class CItemTypeFactory {
+
+ /**
+ * An array of created object instances.
+ *
+ * @param array
+ */
+ private static $instances = [];
+
+ /**
+ * @param int $type
+ *
+ * @return CItemType
+ *
+ * @throws APIException
+ */
+ public static function getObject(int $type): CItemType {
+ if (array_key_exists($type, self::$instances)) {
+ return self::$instances[$type];
+ }
+
+ switch ($type) {
+ case ITEM_TYPE_ZABBIX:
+ return self::$instances[$type] = new CItemTypeZabbix();
+
+ case ITEM_TYPE_TRAPPER:
+ return self::$instances[$type] = new CItemTypeTrapper();
+
+ case ITEM_TYPE_SIMPLE:
+ return self::$instances[$type] = new CItemTypeSimple();
+
+ case ITEM_TYPE_INTERNAL:
+ return self::$instances[$type] = new CItemTypeInternal();
+
+ case ITEM_TYPE_ZABBIX_ACTIVE:
+ return self::$instances[$type] = new CItemTypeZabbixActive();
+
+ case ITEM_TYPE_EXTERNAL:
+ return self::$instances[$type] = new CItemTypeExternal();
+
+ case ITEM_TYPE_DB_MONITOR:
+ return self::$instances[$type] = new CItemTypeDbMonitor();
+
+ case ITEM_TYPE_IPMI:
+ return self::$instances[$type] = new CItemTypeIpmi();
+
+ case ITEM_TYPE_SSH:
+ return self::$instances[$type] = new CItemTypeSsh();
+
+ case ITEM_TYPE_TELNET:
+ return self::$instances[$type] = new CItemTypeTelnet();
+
+ case ITEM_TYPE_CALCULATED:
+ return self::$instances[$type] = new CItemTypeCalculated();
+
+ case ITEM_TYPE_JMX:
+ return self::$instances[$type] = new CItemTypeJmx();
+
+ case ITEM_TYPE_SNMPTRAP:
+ return self::$instances[$type] = new CItemTypeSnmpTrap();
+
+ case ITEM_TYPE_DEPENDENT:
+ return self::$instances[$type] = new CItemTypeDependent();
+
+ case ITEM_TYPE_HTTPAGENT:
+ return self::$instances[$type] = new CItemTypeHttpAgent();
+
+ case ITEM_TYPE_SNMP:
+ return self::$instances[$type] = new CItemTypeSnmp();
+
+ case ITEM_TYPE_SCRIPT:
+ return self::$instances[$type] = new CItemTypeScript();
+ }
+
+ throw new APIException(ZBX_API_ERROR_INTERNAL, 'Incorrect item type.');
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemType.php b/ui/include/classes/api/item_types/CItemType.php
new file mode 100644
index 00000000000..248139fcff6
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemType.php
@@ -0,0 +1,470 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+abstract class CItemType {
+
+ /**
+ * Item type.
+ *
+ * @var int|null
+ */
+ const TYPE = null;
+
+ /**
+ * Field names of specific type.
+ *
+ * @var array
+ */
+ const FIELD_NAMES = [
+ // The fields used for multiple item types.
+ 'interfaceid', 'authtype', 'username', 'password', 'params', 'timeout', 'delay', 'trapper_hosts',
+
+ // Dependent item type specific fields.
+ 'master_itemid',
+
+ // HTTP Agent item type specific fields.
+ 'url', 'query_fields', 'request_method', 'post_type', 'posts',
+ 'headers', 'status_codes', 'follow_redirects', 'retrieve_mode', 'output_format', 'http_proxy',
+ 'verify_peer', 'verify_host', 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password', 'allow_traps',
+
+ // IPMI item type specific fields.
+ 'ipmi_sensor',
+
+ // JMX item type specific fields.
+ 'jmx_endpoint',
+
+ // Script item type specific fields.
+ 'parameters',
+
+ // SNMP item type specific fields.
+ 'snmp_oid',
+
+ // SSH item type specific fields.
+ 'publickey', 'privatekey'
+ ];
+
+ /**
+ * @param array $item
+ *
+ * @return array
+ */
+ abstract public static function getCreateValidationRules(array $item): array;
+
+ /**
+ * @param array $db_item
+ *
+ * @return array
+ */
+ abstract public static function getUpdateValidationRules(array $db_item): array;
+
+ /**
+ * @param array $db_item
+ *
+ * @return array
+ */
+ abstract public static function getUpdateValidationRulesInherited(array $db_item): array;
+
+ /**
+ * @return array
+ */
+ abstract public static function getUpdateValidationRulesDiscovered(): array;
+
+ /**
+ * @param string $field_name
+ * @param array $item
+ *
+ * @return array
+ */
+ final protected static function getCreateFieldRule(string $field_name, array $item): array {
+ $is_item_prototype = $item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE;
+
+ switch ($field_name) {
+ case 'interfaceid':
+ switch (static::TYPE) {
+ case ITEM_TYPE_SIMPLE:
+ case ITEM_TYPE_EXTERNAL:
+ case ITEM_TYPE_SSH:
+ case ITEM_TYPE_TELNET:
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'host_status', 'in' => implode(',', [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])], 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]];
+
+ default:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'host_status', 'in' => implode(',', [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])], 'type' => API_ID, 'flags' => API_REQUIRED],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]];
+ }
+
+ case 'authtype':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_AUTH_NONE, HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS, HTTPTEST_AUTH_DIGEST]), 'default' => DB::getDefault('items', 'authtype')];
+
+ case ITEM_TYPE_SSH:
+ return ['type' => API_INT32, 'in' => implode(',', [ITEM_AUTHTYPE_PASSWORD, ITEM_AUTHTYPE_PUBLICKEY]), 'default' => DB::getDefault('items', 'authtype')];
+ }
+
+ case 'username':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => implode(',', [HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS, HTTPTEST_AUTH_DIGEST])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'username')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'username')]
+ ]];
+
+ case ITEM_TYPE_SSH:
+ case ITEM_TYPE_TELNET:
+ return ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'username')];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'username')];
+ }
+
+ case 'password':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => implode(',', [HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS, HTTPTEST_AUTH_DIGEST])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'password')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'password')]
+ ]];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'password')];
+ }
+
+ case 'params':
+ switch (static::TYPE) {
+ case ITEM_TYPE_CALCULATED:
+ return ['type' => API_CALC_FORMULA, 'flags' => API_REQUIRED | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'params')];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'params')];
+ }
+
+ case 'timeout':
+ return ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'in' => '1:'.SEC_PER_MIN, 'length' => DB::getFieldLength('items', 'timeout')];
+
+ case 'delay':
+ switch (static::TYPE) {
+ case ITEM_TYPE_ZABBIX_ACTIVE:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function (array $data): bool {
+ return strncmp($data['key_'], 'mqtt.get', 8) != 0;
+ }, 'type' => API_ITEM_DELAY, 'flags' => API_REQUIRED | API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'delay')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => DB::getDefault('items', 'delay')]
+ ]];
+
+ default:
+ return ['type' => API_ITEM_DELAY, 'flags' => API_REQUIRED | API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'delay')];
+ }
+
+ case 'trapper_hosts':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'allow_traps', 'in' => HTTPCHECK_ALLOW_TRAPS_ON], 'type' => API_IP_RANGES, 'flags' => API_ALLOW_DNS | API_ALLOW_USER_MACRO, 'macros' => ['{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'], 'length' => DB::getFieldLength('items', 'trapper_hosts')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'trapper_hosts')]
+ ]];
+
+ case ITEM_TYPE_TRAPPER:
+ return ['type' => API_IP_RANGES, 'flags' => API_ALLOW_DNS | API_ALLOW_USER_MACRO, 'macros' => ['{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'], 'length' => DB::getFieldLength('items', 'trapper_hosts')];
+ }
+ }
+ }
+
+ /**
+ * @param string $field_name
+ * @param array $db_item
+ *
+ * @return array
+ */
+ final protected static function getUpdateFieldRule(string $field_name, array $db_item): array {
+ $is_item_prototype = $db_item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE;
+
+ switch ($field_name) {
+ case 'interfaceid':
+ switch (static::TYPE) {
+ case ITEM_TYPE_SIMPLE:
+ case ITEM_TYPE_EXTERNAL:
+ case ITEM_TYPE_SSH:
+ case ITEM_TYPE_TELNET:
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function () use ($db_item): bool {
+ return in_array($db_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]);
+ }, 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]];
+
+ default:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function () use ($db_item): bool {
+ return in_array($db_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]);
+ }, 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]];
+ }
+
+ case 'authtype':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_AUTH_NONE, HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS, HTTPTEST_AUTH_DIGEST])];
+
+ case ITEM_TYPE_SSH:
+ return ['type' => API_INT32, 'in' => implode(',', [ITEM_AUTHTYPE_PASSWORD, ITEM_AUTHTYPE_PUBLICKEY])];
+ }
+
+ case 'username':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => implode(',', [HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS, HTTPTEST_AUTH_DIGEST])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'username')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'username')]
+ ]];
+
+ case ITEM_TYPE_SSH:
+ case ITEM_TYPE_TELNET:
+ return ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'username')];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'username')];
+ }
+
+ case 'password':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => implode(',', [HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS, HTTPTEST_AUTH_DIGEST])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'password')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'password')]
+ ]];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'password')];
+ }
+
+ case 'params':
+ switch (static::TYPE) {
+ case ITEM_TYPE_CALCULATED:
+ return ['type' => API_CALC_FORMULA, 'flags' => ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'params')];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'params')];
+ }
+
+ case 'timeout':
+ return ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'in' => '1:'.SEC_PER_MIN, 'length' => DB::getFieldLength('items', 'timeout')];
+
+ case 'delay':
+ switch (static::TYPE) {
+ case ITEM_TYPE_ZABBIX_ACTIVE:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function (array $data): bool {
+ return strncmp($data['key_'], 'mqtt.get', 8) !== 0;
+ }, 'type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'delay')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => DB::getDefault('items', 'delay')]
+ ]];
+
+ default:
+ return ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'delay')];
+ }
+
+ case 'trapper_hosts':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'allow_traps', 'in' => HTTPCHECK_ALLOW_TRAPS_ON], 'type' => API_IP_RANGES, 'flags' => API_ALLOW_DNS | API_ALLOW_USER_MACRO, 'macros' => ['{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'], 'length' => DB::getFieldLength('items', 'trapper_hosts')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'trapper_hosts')]
+ ]];
+
+ case ITEM_TYPE_TRAPPER:
+ return ['type' => API_IP_RANGES, 'flags' => API_ALLOW_DNS | API_ALLOW_USER_MACRO, 'macros' => ['{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'], 'length' => DB::getFieldLength('items', 'trapper_hosts')];
+ }
+ }
+ }
+
+ /**
+ * @param string $field_name
+ * @param array $db_item
+ *
+ * @return array
+ */
+ final protected static function getUpdateFieldRuleInherited(string $field_name, array $db_item): array {
+ $is_item_prototype = $db_item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE;
+
+ switch ($field_name) {
+ case 'interfaceid':
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function () use ($db_item): bool {
+ return in_array($db_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]);
+ }, 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]];
+
+ case 'authtype':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED];
+
+ case ITEM_TYPE_SSH:
+ return ['type' => API_INT32, 'in' => implode(',', [ITEM_AUTHTYPE_PASSWORD, ITEM_AUTHTYPE_PUBLICKEY])];
+ }
+
+ case 'username':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED];
+
+ case ITEM_TYPE_SSH:
+ case ITEM_TYPE_TELNET:
+ return ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'username')];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'username')];
+ }
+
+ case 'password':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'password')];
+ }
+
+ case 'params':
+ switch (static::TYPE) {
+ case ITEM_TYPE_CALCULATED:
+ return ['type' => API_CALC_FORMULA, 'flags' => ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'params')];
+
+ case ITEM_TYPE_SCRIPT:
+ return ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED];
+
+ default:
+ return ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'params')];
+ }
+
+ case 'timeout':
+ return ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED];
+
+ case 'delay':
+ switch (static::TYPE) {
+ case ITEM_TYPE_ZABBIX_ACTIVE:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function (array $data): bool {
+ return strncmp($data['key_'], 'mqtt.get', 8) !== 0;
+ }, 'type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'delay')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => DB::getDefault('items', 'delay')]
+ ]];
+
+ default:
+ return ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'delay')];
+ }
+
+ case 'trapper_hosts':
+ switch (static::TYPE) {
+ case ITEM_TYPE_HTTPAGENT:
+ return ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'allow_traps', 'in' => HTTPCHECK_ALLOW_TRAPS_ON], 'type' => API_IP_RANGES, 'flags' => API_ALLOW_DNS | API_ALLOW_USER_MACRO, 'macros' => ['{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'], 'length' => DB::getFieldLength('items', 'trapper_hosts')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'trapper_hosts')]
+ ]];
+
+ case ITEM_TYPE_TRAPPER:
+ return ['type' => API_IP_RANGES, 'flags' => API_ALLOW_DNS | API_ALLOW_USER_MACRO, 'macros' => ['{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'], 'length' => DB::getFieldLength('items', 'trapper_hosts')];
+ }
+ }
+ }
+
+ /**
+ * @param string $field_name
+ *
+ * @return array
+ */
+ final protected static function getUpdateFieldRuleDiscovered(string $field_name): array {
+ switch ($field_name) {
+ case 'interfaceid':
+ case 'authtype':
+ case 'username':
+ case 'password':
+ case 'params':
+ case 'timeout':
+ case 'delay':
+ case 'trapper_hosts':
+ return ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED];
+ }
+ }
+
+ /**
+ * @return array
+ */
+ final public static function getDefaultValidationRules(): array {
+ return [
+ // The fields used for multiple item types.
+ 'interfaceid' => ['type' => API_ID, 'in' => '0'],
+ 'authtype' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'authtype')],
+ 'username' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'username')],
+ 'password' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'password')],
+ 'params' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'params')],
+ 'timeout' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'timeout')],
+ 'delay' => ['type' => API_TIME_UNIT, 'in' => DB::getDefault('items', 'delay')],
+ 'trapper_hosts' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'trapper_hosts')],
+
+ // Dependent item type specific fields.
+ 'master_itemid' => ['type' => API_ID, 'in' => '0'],
+
+ // HTTP Agent item type specific fields.
+ 'url' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'url')],
+ 'query_fields' => ['type' => API_OBJECTS, 'length' => 0],
+ 'request_method' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'request_method')],
+ 'post_type' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'post_type')],
+ 'posts' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'posts')],
+ 'headers' => ['type' => API_OBJECT, 'fields' => []],
+ 'status_codes' => ['type' => API_INT32_RANGES, 'in' => DB::getDefault('items', 'status_codes')],
+ 'follow_redirects' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'follow_redirects')],
+ 'retrieve_mode' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'retrieve_mode')],
+ 'output_format' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'output_format')],
+ 'http_proxy' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'http_proxy')],
+ 'verify_peer' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'verify_peer')],
+ 'verify_host' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'verify_host')],
+ 'ssl_cert_file' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'ssl_cert_file')],
+ 'ssl_key_file' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'ssl_key_file')],
+ 'ssl_key_password' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'ssl_key_password')],
+ 'allow_traps' => ['type' => API_INT32, 'in' => DB::getDefault('items', 'allow_traps')],
+
+ // IPMI item type specific fields.
+ 'ipmi_sensor' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'ipmi_sensor')],
+
+ // JMX item type specific fields.
+ 'jmx_endpoint' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'jmx_endpoint')],
+
+ // Script item type specific fields.
+ 'parameters' => ['type' => API_OBJECTS, 'length' => 0],
+
+ // SNMP item type specific fields.
+ 'snmp_oid' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'snmp_oid')],
+
+ // SSH item type specific fields.
+ 'publickey' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'publickey')],
+ 'privatekey' => ['type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'privatekey')]
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeCalculated.php b/ui/include/classes/api/item_types/CItemTypeCalculated.php
new file mode 100644
index 00000000000..d93668d90f2
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeCalculated.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeCalculated extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_CALCULATED;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['params', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'params' => self::getCreateFieldRule('params', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'params' => self::getUpdateFieldRule('params', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'params' => self::getUpdateFieldRuleInherited('params', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'params' => self::getUpdateFieldRuleDiscovered('params'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeDbMonitor.php b/ui/include/classes/api/item_types/CItemTypeDbMonitor.php
new file mode 100644
index 00000000000..70eddaa8ea3
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeDbMonitor.php
@@ -0,0 +1,80 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeDbMonitor extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_DB_MONITOR;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['username', 'password', 'params', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'username' => self::getCreateFieldRule('username', $item),
+ 'password' => self::getCreateFieldRule('password', $item),
+ 'params' => self::getCreateFieldRule('params', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'username' => self::getUpdateFieldRule('username', $db_item),
+ 'password' => self::getUpdateFieldRule('password', $db_item),
+ 'params' => self::getUpdateFieldRule('params', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'username' => self::getUpdateFieldRuleInherited('username', $db_item),
+ 'password' => self::getUpdateFieldRuleInherited('password', $db_item),
+ 'params' => self::getUpdateFieldRuleInherited('params', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'username' => self::getUpdateFieldRuleDiscovered('username'),
+ 'password' => self::getUpdateFieldRuleDiscovered('password'),
+ 'params' => self::getUpdateFieldRuleDiscovered('params'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeDependent.php b/ui/include/classes/api/item_types/CItemTypeDependent.php
new file mode 100644
index 00000000000..1f2c125d90b
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeDependent.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeDependent extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_DEPENDENT;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['master_itemid'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'master_itemid' => ['type' => API_ID, 'flags' => API_REQUIRED]
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'master_itemid' => ['type' => API_ID]
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'master_itemid' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED]
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'master_itemid' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED]
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeExternal.php b/ui/include/classes/api/item_types/CItemTypeExternal.php
new file mode 100644
index 00000000000..0670afdb277
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeExternal.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeExternal extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_EXTERNAL;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeHttpAgent.php b/ui/include/classes/api/item_types/CItemTypeHttpAgent.php
new file mode 100644
index 00000000000..750547ef2a3
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeHttpAgent.php
@@ -0,0 +1,187 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeHttpAgent extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_HTTPAGENT;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['url', 'query_fields', 'request_method', 'post_type', 'posts', 'headers', 'status_codes',
+ 'follow_redirects', 'retrieve_mode', 'output_format', 'http_proxy', 'interfaceid', 'authtype', 'username',
+ 'password', 'verify_peer', 'verify_host', 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password', 'timeout',
+ 'delay', 'allow_traps', 'trapper_hosts'
+ ];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ $is_item_prototype = $item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE;
+
+ return [
+ 'url' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'url')],
+ 'query_fields' => ['type' => API_OBJECTS, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => []],
+ 'request_method' => ['type' => API_INT32, 'in' => implode(',', [HTTPCHECK_REQUEST_GET, HTTPCHECK_REQUEST_POST, HTTPCHECK_REQUEST_PUT, HTTPCHECK_REQUEST_HEAD]), 'default' => DB::getDefault('items', 'request_method')],
+ 'post_type' => ['type' => API_INT32, 'in' => implode(',', [ZBX_POSTTYPE_RAW, ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML]), 'default' => DB::getDefault('items', 'post_type')],
+ 'posts' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'post_type', 'in' => ZBX_POSTTYPE_RAW], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'posts')],
+ ['if' => ['field' => 'post_type', 'in' => ZBX_POSTTYPE_JSON], 'type' => API_JSON, 'flags' => API_REQUIRED | API_NOT_EMPTY | API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'macros_n' => ['{HOST.IP}', '{HOST.CONN}', '{HOST.DNS}', '{HOST.HOST}', '{HOST.NAME}', '{ITEM.ID}', '{ITEM.KEY}', '{ITEM.KEY.ORIG}'], 'length' => DB::getFieldLength('items', 'posts')],
+ ['if' => ['field' => 'post_type', 'in' => ZBX_POSTTYPE_XML], 'type' => API_XML, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'posts')]
+ ]],
+ 'headers' => ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => []],
+ 'status_codes' => ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'status_codes')],
+ 'follow_redirects' => ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_STEP_FOLLOW_REDIRECTS_OFF, HTTPTEST_STEP_FOLLOW_REDIRECTS_ON])],
+ 'retrieve_mode' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'request_method', 'in' => HTTPCHECK_REQUEST_HEAD], 'type' => API_INT32, 'in' => HTTPTEST_STEP_RETRIEVE_MODE_HEADERS],
+ ['else' => true, 'type' => API_INT32, 'in' => implode(',', [HTTPTEST_STEP_RETRIEVE_MODE_CONTENT, HTTPTEST_STEP_RETRIEVE_MODE_HEADERS, HTTPTEST_STEP_RETRIEVE_MODE_BOTH])]
+ ]],
+ 'output_format' => ['type' => API_INT32, 'in' => implode(',', [HTTPCHECK_STORE_RAW, HTTPCHECK_STORE_JSON])],
+ 'http_proxy' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'http_proxy')],
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'authtype' => self::getCreateFieldRule('authtype', $item),
+ 'username' => self::getCreateFieldRule('username', $item),
+ 'password' => self::getCreateFieldRule('password', $item),
+ 'verify_peer' => ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_VERIFY_PEER_OFF, HTTPTEST_VERIFY_PEER_ON])],
+ 'verify_host' => ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_VERIFY_HOST_OFF, HTTPTEST_VERIFY_HOST_ON])],
+ 'ssl_cert_file' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_cert_file')],
+ 'ssl_key_file' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_file')],
+ 'ssl_key_password' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_password')],
+ 'timeout' => self::getCreateFieldRule('timeout', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item),
+ 'allow_traps' => ['type' => API_INT32, 'in' => implode(',', [HTTPCHECK_ALLOW_TRAPS_OFF, HTTPCHECK_ALLOW_TRAPS_ON]), 'default' => DB::getDefault('items', 'allow_traps')],
+ 'trapper_hosts' => self::getCreateFieldRule('trapper_hosts', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ $is_item_prototype = $db_item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE;
+
+ return [
+ 'url' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function () use ($db_item): bool {
+ return $db_item['type'] != ITEM_TYPE_HTTPAGENT;
+ }, 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'url')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'url')]
+ ]],
+ 'query_fields' => ['type' => API_OBJECTS, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => []],
+ 'request_method' => ['type' => API_INT32, 'in' => implode(',', [HTTPCHECK_REQUEST_GET, HTTPCHECK_REQUEST_POST, HTTPCHECK_REQUEST_PUT, HTTPCHECK_REQUEST_HEAD])],
+ 'post_type' => ['type' => API_INT32, 'in' => implode(',', [ZBX_POSTTYPE_RAW, ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML])],
+ 'posts' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'post_type', 'in' => ZBX_POSTTYPE_RAW], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'posts')],
+ ['if' => ['field' => 'post_type', 'in' => ZBX_POSTTYPE_JSON], 'type' => API_JSON, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'macros_n' => ['{HOST.IP}', '{HOST.CONN}', '{HOST.DNS}', '{HOST.HOST}', '{HOST.NAME}', '{ITEM.ID}', '{ITEM.KEY}', '{ITEM.KEY.ORIG}'], 'length' => DB::getFieldLength('items', 'posts')],
+ ['if' => ['field' => 'post_type', 'in' => ZBX_POSTTYPE_XML], 'type' => API_XML, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'posts')]
+ ]],
+ 'headers' => ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => []],
+ 'status_codes' => ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_USER_MACRO | ($is_item_prototype ? API_ALLOW_LLD_MACRO : 0), 'length' => DB::getFieldLength('items', 'status_codes')],
+ 'follow_redirects' => ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_STEP_FOLLOW_REDIRECTS_OFF, HTTPTEST_STEP_FOLLOW_REDIRECTS_ON])],
+ 'retrieve_mode' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'request_method', 'in' => HTTPCHECK_REQUEST_HEAD], 'type' => API_INT32, 'in' => HTTPTEST_STEP_RETRIEVE_MODE_HEADERS],
+ ['else' => true, 'type' => API_INT32, 'in' => implode(',', [HTTPTEST_STEP_RETRIEVE_MODE_CONTENT, HTTPTEST_STEP_RETRIEVE_MODE_HEADERS, HTTPTEST_STEP_RETRIEVE_MODE_BOTH])]
+ ]],
+ 'output_format' => ['type' => API_INT32, 'in' => implode(',', [HTTPCHECK_STORE_RAW, HTTPCHECK_STORE_JSON])],
+ 'http_proxy' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'http_proxy')],
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'authtype' => self::getUpdateFieldRule('authtype', $db_item),
+ 'username' => self::getUpdateFieldRule('username', $db_item),
+ 'password' => self::getUpdateFieldRule('password', $db_item),
+ 'verify_peer' => ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_VERIFY_PEER_OFF, HTTPTEST_VERIFY_PEER_ON])],
+ 'verify_host' => ['type' => API_INT32, 'in' => implode(',', [HTTPTEST_VERIFY_HOST_OFF, HTTPTEST_VERIFY_HOST_ON])],
+ 'ssl_cert_file' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_cert_file')],
+ 'ssl_key_file' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_file')],
+ 'ssl_key_password' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_password')],
+ 'timeout' => self::getUpdateFieldRule('timeout', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item),
+ 'allow_traps' => ['type' => API_INT32, 'in' => implode(',', [HTTPCHECK_ALLOW_TRAPS_OFF, HTTPCHECK_ALLOW_TRAPS_ON])],
+ 'trapper_hosts' => self::getUpdateFieldRule('trapper_hosts', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'url' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'query_fields' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'request_method' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'post_type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'posts' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'headers' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'status_codes' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'follow_redirects' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'retrieve_mode' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'output_format' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'http_proxy' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'authtype' => self::getUpdateFieldRuleInherited('authtype', $db_item),
+ 'username' => self::getUpdateFieldRuleInherited('username', $db_item),
+ 'password' => self::getUpdateFieldRuleInherited('password', $db_item),
+ 'verify_peer' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'verify_host' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'ssl_cert_file' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'ssl_key_file' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'ssl_key_password' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'timeout' => self::getUpdateFieldRuleInherited('timeout', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item),
+ 'allow_traps' => ['type' => API_INT32, 'in' => implode(',', [HTTPCHECK_ALLOW_TRAPS_OFF, HTTPCHECK_ALLOW_TRAPS_ON])],
+ 'trapper_hosts' => self::getUpdateFieldRuleInherited('trapper_hosts', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'url' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'query_fields' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'request_method' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'post_type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'posts' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'headers' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'status_codes' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'follow_redirects' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'retrieve_mode' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'output_format' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'http_proxy' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'authtype' => self::getUpdateFieldRuleDiscovered('authtype'),
+ 'username' => self::getUpdateFieldRuleDiscovered('username'),
+ 'password' => self::getUpdateFieldRuleDiscovered('password'),
+ 'verify_peer' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'verify_host' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'ssl_cert_file' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'ssl_key_file' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'ssl_key_password' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'timeout' => self::getUpdateFieldRuleDiscovered('timeout'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay'),
+ 'allow_traps' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'trapper_hosts' => self::getUpdateFieldRuleDiscovered('trapper_hosts')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeInternal.php b/ui/include/classes/api/item_types/CItemTypeInternal.php
new file mode 100644
index 00000000000..8b49fdf252a
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeInternal.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeInternal extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_INTERNAL;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeIpmi.php b/ui/include/classes/api/item_types/CItemTypeIpmi.php
new file mode 100644
index 00000000000..ef10aa20e06
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeIpmi.php
@@ -0,0 +1,82 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeIpmi extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_IPMI;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'ipmi_sensor', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'ipmi_sensor' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'key_', 'in' => 'ipmi.get'], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ipmi_sensor')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'ipmi_sensor')]
+ ]],
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'ipmi_sensor' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'key_', 'in' => 'ipmi.get'], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ipmi_sensor')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'ipmi_sensor')]
+ ]],
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'ipmi_sensor' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'ipmi_sensor' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeJmx.php b/ui/include/classes/api/item_types/CItemTypeJmx.php
new file mode 100644
index 00000000000..bc4d1876ec5
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeJmx.php
@@ -0,0 +1,84 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeJmx extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_JMX;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'jmx_endpoint', 'username', 'password', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'jmx_endpoint' => ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'jmx_endpoint'), 'default' => ZBX_DEFAULT_JMX_ENDPOINT],
+ 'username' => self::getCreateFieldRule('username', $item),
+ 'password' => self::getCreateFieldRule('password', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'jmx_endpoint' => ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'jmx_endpoint')],
+ 'username' => self::getUpdateFieldRule('username', $db_item),
+ 'password' => self::getUpdateFieldRule('password', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'jmx_endpoint' => ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'jmx_endpoint')],
+ 'username' => self::getUpdateFieldRuleInherited('username', $db_item),
+ 'password' => self::getUpdateFieldRuleInherited('password', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'jmx_endpoint' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'username' => self::getUpdateFieldRuleDiscovered('username'),
+ 'password' => self::getUpdateFieldRuleDiscovered('password'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeScript.php b/ui/include/classes/api/item_types/CItemTypeScript.php
new file mode 100644
index 00000000000..37905d0e3b6
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeScript.php
@@ -0,0 +1,86 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeScript extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_SCRIPT;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['parameters', 'params', 'timeout', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'parameters' => ['type' => API_OBJECTS, 'flags' => API_NORMALIZE, 'uniq' => [['name']], 'fields' => [
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_parameter', 'name')],
+ 'value' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => DB::getFieldLength('item_parameter', 'value')]
+ ]],
+ 'params' => self::getCreateFieldRule('params', $item),
+ 'timeout' => self::getCreateFieldRule('timeout', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'parameters' => ['type' => API_OBJECTS, 'flags' => API_NORMALIZE, 'uniq' => [['name']], 'fields' => [
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_parameter', 'name')],
+ 'value' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => DB::getFieldLength('item_parameter', 'value')]
+ ]],
+ 'params' => self::getUpdateFieldRule('params', $db_item),
+ 'timeout' => self::getUpdateFieldRule('timeout', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'parameters' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'params' => self::getUpdateFieldRuleInherited('params', $db_item),
+ 'timeout' => self::getUpdateFieldRuleInherited('timeout', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'parameters' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'params' => self::getUpdateFieldRuleDiscovered('params'),
+ 'timeout' => self::getUpdateFieldRuleDiscovered('timeout'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeSimple.php b/ui/include/classes/api/item_types/CItemTypeSimple.php
new file mode 100644
index 00000000000..dcee97f0622
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeSimple.php
@@ -0,0 +1,80 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeSimple extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_SIMPLE;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'username', 'password', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'username' => self::getCreateFieldRule('username', $item),
+ 'password' => self::getCreateFieldRule('password', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'username' => self::getUpdateFieldRule('username', $db_item),
+ 'password' => self::getUpdateFieldRule('password', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'username' => self::getUpdateFieldRuleInherited('username', $db_item),
+ 'password' => self::getUpdateFieldRuleInherited('password', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'username' => self::getUpdateFieldRuleDiscovered('username'),
+ 'password' => self::getUpdateFieldRuleDiscovered('password'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeSnmp.php b/ui/include/classes/api/item_types/CItemTypeSnmp.php
new file mode 100644
index 00000000000..50cd9fbbbc8
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeSnmp.php
@@ -0,0 +1,76 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeSnmp extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_SNMP;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'snmp_oid', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'snmp_oid' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'snmp_oid')],
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'snmp_oid' => ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'snmp_oid')],
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'snmp_oid' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'snmp_oid' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeSnmpTrap.php b/ui/include/classes/api/item_types/CItemTypeSnmpTrap.php
new file mode 100644
index 00000000000..57532475a5e
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeSnmpTrap.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeSnmpTrap extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_SNMPTRAP;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeSsh.php b/ui/include/classes/api/item_types/CItemTypeSsh.php
new file mode 100644
index 00000000000..b100be940d8
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeSsh.php
@@ -0,0 +1,116 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeSsh extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_SSH;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'authtype', 'username', 'publickey', 'privatekey', 'password', 'params',
+ 'delay'
+ ];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'authtype' => self::getCreateFieldRule('authtype', $item),
+ 'username' => self::getCreateFieldRule('username', $item),
+ 'publickey' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => ITEM_AUTHTYPE_PUBLICKEY], 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'publickey')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'publickey')]
+ ]],
+ 'privatekey' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => ITEM_AUTHTYPE_PUBLICKEY], 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'privatekey')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'privatekey')]
+ ]],
+ 'password' => self::getCreateFieldRule('password', $item),
+ 'params' => self::getCreateFieldRule('params', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'authtype' => self::getUpdateFieldRule('authtype', $db_item),
+ 'username' => self::getUpdateFieldRule('username', $db_item),
+ 'publickey' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => ITEM_AUTHTYPE_PUBLICKEY], 'type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'publickey')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'publickey')]
+ ]],
+ 'privatekey' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => ITEM_AUTHTYPE_PUBLICKEY], 'type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'privatekey')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'privatekey')]
+ ]],
+ 'password' => self::getUpdateFieldRule('password', $db_item),
+ 'params' => self::getUpdateFieldRule('params', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'authtype' => self::getUpdateFieldRuleInherited('authtype', $db_item),
+ 'username' => self::getUpdateFieldRuleInherited('username', $db_item),
+ 'publickey' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => ITEM_AUTHTYPE_PUBLICKEY], 'type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'publickey')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'publickey')]
+ ]],
+ 'privatekey' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'authtype', 'in' => ITEM_AUTHTYPE_PUBLICKEY], 'type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'privatekey')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'privatekey')]
+ ]],
+ 'password' => self::getUpdateFieldRuleInherited('password', $db_item),
+ 'params' => self::getUpdateFieldRuleInherited('params', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'authtype' => self::getUpdateFieldRuleDiscovered('authtype'),
+ 'username' => self::getUpdateFieldRuleDiscovered('username'),
+ 'publickey' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'privatekey' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'password' => self::getUpdateFieldRuleDiscovered('password'),
+ 'params' => self::getUpdateFieldRuleDiscovered('params'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeTelnet.php b/ui/include/classes/api/item_types/CItemTypeTelnet.php
new file mode 100644
index 00000000000..d39fddaf6fe
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeTelnet.php
@@ -0,0 +1,84 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeTelnet extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_TELNET;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'username', 'password', 'params', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'username' => self::getCreateFieldRule('username', $item),
+ 'password' => self::getCreateFieldRule('password', $item),
+ 'params' => self::getCreateFieldRule('params', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'username' => self::getUpdateFieldRule('username', $db_item),
+ 'password' => self::getUpdateFieldRule('password', $db_item),
+ 'params' => self::getUpdateFieldRule('params', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'username' => self::getUpdateFieldRuleInherited('username', $db_item),
+ 'password' => self::getUpdateFieldRuleInherited('password', $db_item),
+ 'params' => self::getUpdateFieldRuleInherited('params', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'username' => self::getUpdateFieldRuleDiscovered('username'),
+ 'password' => self::getUpdateFieldRuleDiscovered('password'),
+ 'params' => self::getUpdateFieldRuleDiscovered('params'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeTrapper.php b/ui/include/classes/api/item_types/CItemTypeTrapper.php
new file mode 100644
index 00000000000..366c8ad9450
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeTrapper.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeTrapper extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_TRAPPER;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['trapper_hosts'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'trapper_hosts' => self::getCreateFieldRule('trapper_hosts', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'trapper_hosts' => self::getUpdateFieldRule('trapper_hosts', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'trapper_hosts' => self::getUpdateFieldRuleInherited('trapper_hosts', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'trapper_hosts' => self::getUpdateFieldRuleDiscovered('trapper_hosts')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeZabbix.php b/ui/include/classes/api/item_types/CItemTypeZabbix.php
new file mode 100644
index 00000000000..ffc79c9c26e
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeZabbix.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeZabbix extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_ZABBIX;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['interfaceid', 'delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'interfaceid' => self::getCreateFieldRule('interfaceid', $item),
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRule('interfaceid', $db_item),
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleInherited('interfaceid', $db_item),
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'interfaceid' => self::getUpdateFieldRuleDiscovered('interfaceid'),
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/item_types/CItemTypeZabbixActive.php b/ui/include/classes/api/item_types/CItemTypeZabbixActive.php
new file mode 100644
index 00000000000..50216deb8f2
--- /dev/null
+++ b/ui/include/classes/api/item_types/CItemTypeZabbixActive.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types = 1);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+class CItemTypeZabbixActive extends CItemType {
+
+ /**
+ * @inheritDoc
+ */
+ const TYPE = ITEM_TYPE_ZABBIX_ACTIVE;
+
+ /**
+ * @inheritDoc
+ */
+ const FIELD_NAMES = ['delay'];
+
+ /**
+ * @inheritDoc
+ */
+ public static function getCreateValidationRules(array $item): array {
+ return [
+ 'delay' => self::getCreateFieldRule('delay', $item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRules(array $db_item): array {
+ return [
+ 'delay' => self::getUpdateFieldRule('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesInherited(array $db_item): array {
+ return [
+ 'delay' => self::getUpdateFieldRuleInherited('delay', $db_item)
+ ];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public static function getUpdateValidationRulesDiscovered(): array {
+ return [
+ 'delay' => self::getUpdateFieldRuleDiscovered('delay')
+ ];
+ }
+}
diff --git a/ui/include/classes/api/managers/CDiscoveryRuleManager.php b/ui/include/classes/api/managers/CDiscoveryRuleManager.php
index ccce03b65e5..b75efff2f5c 100644
--- a/ui/include/classes/api/managers/CDiscoveryRuleManager.php
+++ b/ui/include/classes/api/managers/CDiscoveryRuleManager.php
@@ -34,7 +34,7 @@ class CDiscoveryRuleManager {
$parent_itemids = $ruleids;
$child_ruleids = [];
do {
- $db_items = DBselect('SELECT i.itemid FROM items i WHERE '.dbConditionInt('i.templateid', $parent_itemids));
+ $db_items = DBselect('SELECT i.itemid FROM items i WHERE '.dbConditionId('i.templateid', $parent_itemids));
$parent_itemids = [];
while ($db_item = DBfetch($db_items)) {
$parent_itemids[$db_item['itemid']] = $db_item['itemid'];
@@ -45,18 +45,15 @@ class CDiscoveryRuleManager {
$ruleids = array_merge($ruleids, $child_ruleids);
// Delete item prototypes.
- $iprototypeids = [];
- $db_items = DBselect(
- 'SELECT i.itemid'.
+ $db_items = DBfetchArrayAssoc(DBselect(
+ 'SELECT id.itemid,i.name'.
' FROM item_discovery id,items i'.
- ' WHERE i.itemid=id.itemid'.
- ' AND '.dbConditionInt('parent_itemid', $ruleids)
- );
- while ($item = DBfetch($db_items)) {
- $iprototypeids[$item['itemid']] = $item['itemid'];
- }
- if ($iprototypeids) {
- CItemPrototypeManager::delete($iprototypeids);
+ ' WHERE id.itemid=i.itemid'.
+ ' AND '.dbConditionId('parent_itemid', $ruleids)
+ ), 'itemid');
+
+ if ($db_items) {
+ CItemPrototype::deleteForce($db_items);
}
// Delete host prototypes.
@@ -64,7 +61,7 @@ class CDiscoveryRuleManager {
'SELECT hd.hostid,h.host'.
' FROM host_discovery hd,hosts h'.
' WHERE hd.hostid=h.hostid'.
- ' AND '.dbConditionInt('hd.parent_itemid', $ruleids)
+ ' AND '.dbConditionId('hd.parent_itemid', $ruleids)
), 'hostid');
if ($db_host_prototypes) {
@@ -81,6 +78,7 @@ class CDiscoveryRuleManager {
DB::delete('items', ['itemid' => $ruleids]);
$insert = [];
+
foreach ($ruleids as $ruleid) {
$insert[] = [
'tablename' => 'events',
@@ -88,6 +86,7 @@ class CDiscoveryRuleManager {
'value' => $ruleid
];
}
+
DB::insertBatch('housekeeper', $insert);
}
}
diff --git a/ui/include/classes/api/managers/CHttpTestManager.php b/ui/include/classes/api/managers/CHttpTestManager.php
index 1376cb737ee..d301b476a54 100644
--- a/ui/include/classes/api/managers/CHttpTestManager.php
+++ b/ui/include/classes/api/managers/CHttpTestManager.php
@@ -46,6 +46,13 @@ class CHttpTestManager {
protected $httpTestParents = [];
/**
+ * Array of parent item IDs indexed by parent httptest ID and item key.
+ *
+ * @var array
+ */
+ private static $parent_itemids = [];
+
+ /**
* Save http test to db.
*
* @param array $httpTests
@@ -96,32 +103,26 @@ class CHttpTestManager {
}
/**
- * Create new http tests.
+ * Create new HTTP tests.
*
- * @param array $httpTests
+ * @param array $httptests
*
* @return array
*/
- public function create(array $httpTests) {
- $httpTestIds = DB::insert('httptest', $httpTests);
+ public function create(array $httptests) {
+ $httptestids = DB::insert('httptest', $httptests);
- foreach ($httpTests as $hnum => &$httpTest) {
- $httpTest['httptestid'] = $httpTestIds[$hnum];
- $itemids = [];
-
- $this->createHttpTestItems($httpTest, $itemids);
- $this->createStepsReal($httpTest, $httpTest['steps'], $itemids);
-
- if (array_key_exists('tags', $httpTest) && $httpTest['tags']) {
- self::createItemsTags($httpTest['tags'], $itemids);
- }
+ foreach ($httptests as &$httptest) {
+ $httptest['httptestid'] = array_shift($httptestids);
}
- unset($httpTest);
+ unset($httptest);
- $this->updateHttpTestFields($httpTests, 'create');
- self::createHttpTestTags($httpTests);
+ self::createItems($httptests);
+ self::updateFields($httptests);
+ self::updateSteps($httptests);
+ self::updateTags($httptests);
- return $httpTests;
+ return $httptests;
}
/**
@@ -132,125 +133,1179 @@ class CHttpTestManager {
* @return array
*/
public function update(array $httptests) {
- $db_httptests = API::HttpTest()->get([
- 'output' => ['httptestid', 'name', 'delay', 'status', 'agent', 'authentication',
- 'http_user', 'http_password', 'hostid', 'templateid', 'http_proxy', 'retries', 'ssl_cert_file',
- 'ssl_key_file', 'ssl_key_password', 'verify_peer', 'verify_host'
- ],
- 'selectSteps' => ['httpstepid', 'name', 'no', 'url', 'timeout', 'posts', 'required', 'status_codes',
- 'follow_redirects', 'retrieve_mode'
- ],
- 'httptestids' => array_column($httptests, 'httptestid'),
- 'nopermissions' => true,
- 'preservekeys' => true
- ]);
+ $db_httptests = DBfetchArrayAssoc(DBselect(
+ 'SELECT ht.httptestid,ht.name,ht.delay,ht.retries,ht.agent,ht.http_proxy,ht.status,ht.authentication,'.
+ 'ht.http_user,ht.http_password,ht.verify_peer,ht.verify_host,ht.ssl_cert_file,ht.ssl_key_file,'.
+ 'ht.ssl_key_password,ht.hostid,ht.templateid,h.status AS host_status'.
+ ' FROM httptest ht,hosts h'.
+ ' WHERE ht.hostid=h.hostid'.
+ ' AND '.dbConditionId('ht.httptestid', array_column($httptests, 'httptestid'))
+ ), 'httptestid');
+
+ self::addAffectedObjects($httptests, $db_httptests);
+
+ $upd_httptests = [];
+
+ foreach ($httptests as $httptest) {
+ $upd_httptest = DB::getUpdatedValues('httptest', $httptest, $db_httptests[$httptest['httptestid']]);
+
+ if ($upd_httptest) {
+ $upd_httptests[] = [
+ 'values' => $upd_httptest,
+ 'where' => ['httptestid' => $httptest['httptestid']]
+ ];
+ }
+ }
- $steps_create = [];
- $steps_update = [];
- $del_steps = [];
- $itemids = [];
+ if ($upd_httptests) {
+ DB::update('httptest', $upd_httptests);
+ }
+
+ self::updateItems($httptests, $db_httptests);
+ self::updateFields($httptests, $db_httptests);
+ self::updateSteps($httptests, $db_httptests);
+ self::updateTags($httptests, $db_httptests);
+
+ return $httptests;
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedObjects(array $httptests, array &$db_httptests): void {
+ self::addAffectedItems($httptests, $db_httptests);
+ self::addAffectedFields($httptests, $db_httptests);
+ self::addAffectedSteps($httptests, $db_httptests);
+ self::addAffectedTags($httptests, $db_httptests);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedItems(array $httptests, array &$db_httptests): void {
+ $httptestids = [];
- foreach ($httptests as $key => $httptest) {
+ foreach ($httptests as $httptest) {
$db_httptest = $db_httptests[$httptest['httptestid']];
- DB::update('httptest', [
- 'values' => $httptest,
- 'where' => ['httptestid' => $httptest['httptestid']]
- ]);
+ $name_updated = $httptest['name'] != $db_httptest['name'];
+ $status_updated = array_key_exists('status', $httptest) && $httptest['status'] != $db_httptest['status'];
+ $delay_updated = array_key_exists('delay', $httptest) && $httptest['delay'] !== $db_httptest['delay'];
+ $templateid_updated = array_key_exists('templateid', $httptest)
+ && bccomp($httptest['templateid'], $db_httptest['templateid']) != 0;
- if (!array_key_exists($httptest['httptestid'], $itemids)) {
- $itemids[$httptest['httptestid']] = [];
+ if ($name_updated || $status_updated || $delay_updated || $templateid_updated
+ || array_key_exists('tags', $httptest)) {
+ $httptestids[] = $httptest['httptestid'];
}
+ }
- $checkItemsUpdate = [];
- $dbCheckItems = DBselect(
- 'SELECT i.itemid,i.name,i.key_,hi.type'.
- ' FROM items i,httptestitem hi'.
- ' WHERE hi.httptestid='.zbx_dbstr($httptest['httptestid']).
- ' AND hi.itemid=i.itemid'
- );
- while ($checkitem = DBfetch($dbCheckItems)) {
- $itemids[$httptest['httptestid']][] = $checkitem['itemid'];
- $update_fields = [];
+ if (!$httptestids) {
+ return;
+ }
+
+ $result = DBselect(
+ 'SELECT hi.httptestid,hi.itemid,hi.type AS test_type,i.name,i.key_,i.status,i.delay,i.templateid'.
+ ' FROM httptestitem hi,items i'.
+ ' WHERE hi.itemid=i.itemid'.
+ ' AND '.dbConditionId('hi.httptestid', $httptestids)
+ );
+
+ while ($row = DBfetch($result)) {
+ $db_httptests[$row['httptestid']]['items'][$row['itemid']] =
+ array_diff_key($row, array_flip(['httptestid']));
+ }
+
+ self::addAffectedItemTags($httptests, $db_httptests);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedItemTags(array $httptests, array &$db_httptests): void {
+ $httptestids = [];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('tags', $httptest)) {
+ continue;
+ }
+
+ $httptestids[] = $httptest['httptestid'];
+
+ foreach ($db_httptests[$httptest['httptestid']]['items'] as &$db_item) {
+ $db_item['tags'] = [];
+ }
+ unset($db_item);
+ }
+
+ if (!$httptestids) {
+ return;
+ }
+
+ $result = DBselect(
+ 'SELECT hti.httptestid,hti.itemid,it.itemtagid,it.tag,it.value'.
+ ' FROM httptestitem hti,item_tag it'.
+ ' WHERE hti.itemid=it.itemid'.
+ ' AND '.dbConditionId('hti.httptestid', $httptestids)
+ );
+
+ while ($row = DBfetch($result)) {
+ $db_httptests[$row['httptestid']]['items'][$row['itemid']]['tags'][$row['itemtagid']] =
+ array_diff_key($row, array_flip(['httptestid', 'itemid']));
+ }
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedFields(array $httptests, array &$db_httptests): void {
+ $httptestids = [];
+ $types = [];
+
+ foreach ($httptests as $httptest) {
+ if (array_key_exists('headers', $httptest)) {
+ $httptestids[$httptest['httptestid']] = true;
+ $types[] = ZBX_HTTPFIELD_HEADER;
+ $db_httptests[$httptest['httptestid']]['headers'] = [];
+ }
+
+ if (array_key_exists('variables', $httptest)) {
+ $httptestids[$httptest['httptestid']] = true;
+ $types[] = ZBX_HTTPFIELD_VARIABLE;
+ $db_httptests[$httptest['httptestid']]['variables'] = [];
+ }
+ }
+
+ if (!$httptestids) {
+ return;
+ }
+
+ $options = [
+ 'output' => ['httptest_fieldid', 'httptestid', 'type', 'name', 'value'],
+ 'filter' => [
+ 'httptestid' => array_keys($httptestids),
+ 'type' => $types
+ ]
+ ];
+ $result = DBselect(DB::makeSql('httptest_field', $options));
+
+ while ($row = DBfetch($result)) {
+ $field_name = ($row['type'] == ZBX_HTTPFIELD_HEADER) ? 'headers' : 'variables';
+
+ if (array_key_exists($field_name, $db_httptests[$row['httptestid']])) {
+ $db_httptests[$row['httptestid']][$field_name][$row['httptest_fieldid']] =
+ array_diff_key($row, array_flip(['httptestid']));
+ }
+ }
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedSteps(array $httptests, array &$db_httptests): void {
+ $httptestids = [];
+
+ foreach ($httptests as $httptest) {
+ $name_updated = $httptest['name'] != $db_httptests[$httptest['httptestid']]['name'];
+
+ if (array_key_exists('steps', $httptest) || $name_updated) {
+ $httptestids[] = $httptest['httptestid'];
+ $db_httptests[$httptest['httptestid']]['steps'] = [];
+ }
+ }
+
+ if ($httptestids) {
+ $options = [
+ 'output' => ['httpstepid', 'httptestid', 'name', 'no', 'url', 'timeout', 'posts', 'required',
+ 'status_codes','follow_redirects', 'retrieve_mode', 'post_type'
+ ],
+ 'filter' => ['httptestid' => $httptestids]
+ ];
+ $result = DBselect(DB::makeSql('httpstep', $options));
- $update_fields['name'] = $this->getTestName($checkitem['type'], $httptest['name']);
- if ($update_fields['name'] === $checkitem['name']) {
- unset($update_fields['name']);
+ while ($row = DBfetch($result)) {
+ $db_httptests[$row['httptestid']]['steps'][$row['httpstepid']] =
+ array_diff_key($row, array_flip(['httptestid']));
+ }
+ }
+
+ self::addAffectedStepItems($httptests, $db_httptests);
+ self::addAffectedStepFields($httptests, $db_httptests);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedStepItems(array $httptests, array &$db_httptests): void {
+ $httptestids = [];
+
+ foreach ($httptests as $httptest) {
+ $db_httptest = $db_httptests[$httptest['httptestid']];
+
+ $name_updated = $httptest['name'] != $db_httptest['name'];
+ $status_updated = array_key_exists('status', $httptest) && $httptest['status'] != $db_httptest['status'];
+ $delay_updated = array_key_exists('delay', $httptest) && $httptest['delay'] != $db_httptest['delay'];
+ $templateid_updated = array_key_exists('templateid', $httptest)
+ && bccomp($httptest['templateid'], $db_httptest['templateid']) != 0;
+
+ if (array_key_exists('steps', $httptest) || $name_updated || $status_updated || $delay_updated
+ || $templateid_updated || array_key_exists('tags', $httptest)) {
+ $httptestids[] = $httptest['httptestid'];
+ }
+ }
+
+ if (!$httptestids) {
+ return;
+ }
+
+ $result = DBselect(
+ 'SELECT hs.httptestid,hs.httpstepid,hsi.type AS test_type,hsi.itemid,i.name,i.key_,i.status,i.delay,'.
+ 'i.templateid'.
+ ' FROM httpstep hs,httpstepitem hsi,items i'.
+ ' WHERE hs.httpstepid=hsi.httpstepid'.
+ ' AND hsi.itemid=i.itemid'.
+ ' AND '.dbConditionId('hs.httptestid', $httptestids)
+ );
+
+ while ($row = DBfetch($result)) {
+ $db_httptests[$row['httptestid']]['steps'][$row['httpstepid']]['items'][$row['itemid']] =
+ array_diff_key($row, array_flip(['httptestid', 'httpstepid']));
+ }
+
+ self::addAffectedStepItemTags($httptests, $db_httptests);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedStepItemTags(array $httptests, array &$db_httptests): void {
+ $httptestids = [];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('tags', $httptest)) {
+ continue;
+ }
+
+ $httptestids[] = $httptest['httptestid'];
+
+ foreach ($db_httptests[$httptest['httptestid']]['steps'] as &$db_step) {
+ if (!array_key_exists('items', $db_step)) {
+ continue;
+ }
+
+ foreach ($db_step['items'] as &$db_item) {
+ $db_item['tags'] = [];
+ }
+ unset($db_item);
+ }
+ unset($db_step);
+ }
+
+ if (!$httptestids) {
+ return;
+ }
+
+ $result = DBselect(
+ 'SELECT hs.httptestid,hs.httpstepid,hsi.itemid,it.itemtagid,it.tag,it.value'.
+ ' FROM httpstep hs,httpstepitem hsi,item_tag it'.
+ ' WHERE hs.httpstepid=hsi.httpstepid'.
+ ' AND hsi.itemid=it.itemid'.
+ ' AND '.dbConditionId('hs.httptestid', $httptestids)
+ );
+
+ while ($row = DBfetch($result)) {
+ $db_httptests[$row['httptestid']]['steps'][$row['httpstepid']]['items'][$row['itemid']]['tags'][$row['itemtagid']] =
+ array_diff_key($row, array_flip(['httptestid', 'httpstepid', 'itemid']));
+ }
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedStepFields(array $httptests, array &$db_httptests): void {
+ $httpstepids = [];
+ $types = [];
+
+ $field_names = [
+ ZBX_HTTPFIELD_HEADER => 'headers',
+ ZBX_HTTPFIELD_VARIABLE => 'variables',
+ ZBX_HTTPFIELD_POST_FIELD => 'posts',
+ ZBX_HTTPFIELD_QUERY_FIELD => 'query_fields'
+ ];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('steps', $httptest)) {
+ continue;
+ }
+
+ foreach ($httptest['steps'] as $step) {
+ if (!array_key_exists('httpstepid', $step)
+ || !array_key_exists($step['httpstepid'], $db_httptests[$httptest['httptestid']]['steps'])) {
+ continue;
+ }
+
+ $db_step = &$db_httptests[$httptest['httptestid']]['steps'][$step['httpstepid']];
+
+ if (array_key_exists('headers', $step)) {
+ $httpstepids[$step['httpstepid']] = true;
+ $types[ZBX_HTTPFIELD_HEADER] = true;
+ $db_step['headers'] = [];
+ }
+
+ if (array_key_exists('variables', $step)) {
+ $httpstepids[$step['httpstepid']] = true;
+ $types[ZBX_HTTPFIELD_VARIABLE] = true;
+
+ $db_step['variables'] = [];
+ }
+
+ if (array_key_exists('posts', $step) && $db_step['post_type'] == ZBX_POSTTYPE_FORM) {
+ $httpstepids[$step['httpstepid']] = true;
+ $types[ZBX_HTTPFIELD_POST_FIELD] = true;
+
+ $db_step['posts'] = [];
}
- $update_fields['key_'] = $this->getTestKey($checkitem['type'], $httptest['name']);
- if ($update_fields['key_'] === $checkitem['key_']) {
- unset($update_fields['key_']);
+ if (array_key_exists('query_fields', $step)) {
+ $httpstepids[$step['httpstepid']] = true;
+ $types[ZBX_HTTPFIELD_QUERY_FIELD] = true;
+
+ $db_step['query_fields'] = [];
+ }
+ }
+ }
+
+ unset($db_step);
+
+ if (!$httpstepids) {
+ return;
+ }
+
+ $result = DBselect(
+ 'SELECT hs.httptestid,hs.httpstepid,hsf.httpstep_fieldid,hsf.type,hsf.name,hsf.value'.
+ ' FROM httpstep hs,httpstep_field hsf'.
+ ' WHERE hs.httpstepid=hsf.httpstepid'.
+ ' AND '.dbConditionId('hs.httpstepid', array_keys($httpstepids)).
+ ' AND '.dbConditionInt('hsf.type', array_keys($types))
+ );
+
+ while ($row = DBfetch($result)) {
+ $field_name = $field_names[$row['type']];
+
+ $db_step = &$db_httptests[$row['httptestid']]['steps'][$row['httpstepid']];
+
+ if (array_key_exists($field_name, $db_step)) {
+ $db_step[$field_name][$row['httpstep_fieldid']] = [
+ 'httpstep_fieldid' => $row['httpstep_fieldid'],
+ 'name' => $row['name'],
+ 'value' => $row['value']
+ ];
+ }
+ }
+
+ unset($db_step);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function addAffectedTags(array $httptests, array &$db_httptests): void {
+ $httptestids = [];
+
+ foreach ($httptests as $httptest) {
+ $steps_to_create_exists = array_key_exists('steps', $httptest)
+ && count($httptest['steps']) > count(array_column($httptest['steps'], 'httpstepid'));
+
+ if (array_key_exists('tags', $httptest) || $steps_to_create_exists) {
+ $httptestids[] = $httptest['httptestid'];
+ $db_httptests[$httptest['httptestid']]['tags'] = [];
+ }
+ }
+
+ if (!$httptestids) {
+ return;
+ }
+
+ $options = [
+ 'output' => ['httptesttagid', 'httptestid', 'tag', 'value'],
+ 'filter' => ['httptestid' => $httptestids]
+ ];
+ $result = DBselect(DB::makeSql('httptest_tag', $options));
+
+ while ($row = DBfetch($result)) {
+ $db_httptests[$row['httptestid']]['tags'][$row['httptesttagid']] =
+ array_diff_key($row, array_flip(['httptestid']));
+ }
+ }
+
+ /**
+ * @param array $httptests
+ */
+ private static function createItems(array $httptests): void {
+ $items = [];
+
+ $type_items = [
+ HTTPSTEP_ITEM_TYPE_IN => [
+ 'value_type' => ITEM_VALUE_TYPE_FLOAT,
+ 'units' => 'Bps'
+ ],
+ HTTPSTEP_ITEM_TYPE_LASTSTEP => [
+ 'value_type' => ITEM_VALUE_TYPE_UINT64,
+ 'units' => ''
+ ],
+ HTTPSTEP_ITEM_TYPE_LASTERROR => [
+ 'value_type' => ITEM_VALUE_TYPE_STR,
+ 'units' => ''
+ ]
+ ];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('status', $httptest)) {
+ $httptest['status'] = DB::getDefault('httptest', 'status');
+ }
+
+ $item_status = $httptest['status'] == HTTPTEST_STATUS_ACTIVE ? ITEM_STATUS_ACTIVE : ITEM_STATUS_DISABLED;
+ $item_tags = array_key_exists('tags', $httptest) ? $httptest['tags'] : [];
+
+ if (!array_key_exists('delay', $httptest)) {
+ $httptest['delay'] = DB::getDefault('httptest', 'delay');
+ }
+
+ foreach ($type_items as $type => $type_item) {
+ $item_key = self::getTestKey($type, $httptest['name']);
+
+ $items[] = [
+ 'host_status' => $httptest['host_status'],
+ 'flags' => ZBX_FLAG_DISCOVERY_NORMAL,
+ 'hostid' => $httptest['hostid'],
+ 'name' => self::getTestName($type, $httptest['name']),
+ 'type' => ITEM_TYPE_HTTPTEST,
+ 'key_' => $item_key,
+ 'history' => self::ITEM_HISTORY,
+ 'trends' => self::ITEM_TRENDS,
+ 'status' => $item_status,
+ 'tags' => $item_tags,
+ 'delay' => $httptest['delay'],
+ 'templateid' => array_key_exists('templateid', $httptest)
+ ? self::$parent_itemids[$httptest['templateid']][$item_key]
+ : 0
+ ] + $type_item;
+ }
+ }
+
+ CItem::createForce($items);
+
+ $itemids = array_column($items, 'itemid');
+
+ $ins_httptestitems = [];
+
+ foreach ($httptests as $httptest) {
+ foreach ($type_items as $type => $foo) {
+ $ins_httptestitems[] = [
+ 'httptestid' => $httptest['httptestid'],
+ 'itemid' => array_shift($itemids),
+ 'type' => $type
+ ];
+ }
+ }
+
+ DB::insertBatch('httptestitem', $ins_httptestitems);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function updateItems(array $httptests, array $db_httptests): void {
+ $items = [];
+ $db_items = [];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('items', $db_httptests[$httptest['httptestid']])) {
+ continue;
+ }
+
+ $db_httptest = $db_httptests[$httptest['httptestid']];
+
+ $db_items += $db_httptest['items'];
+
+ foreach ($db_httptest['items'] as $db_item) {
+ $item = [];
+
+ if ($httptest['name'] != $db_httptest['name']) {
+ $item += [
+ 'name' => self::getTestName($db_item['test_type'], $httptest['name']),
+ 'key_' => self::getTestKey($db_item['test_type'], $httptest['name'])
+ ];
}
- if (isset($httptest['status'])) {
- $update_fields['status'] = (HTTPTEST_STATUS_ACTIVE == $httptest['status'])
+ if (array_key_exists('status', $httptest) && $httptest['status'] != $db_httptest['status']) {
+ $item['status'] = $httptest['status'] == HTTPTEST_STATUS_ACTIVE
? ITEM_STATUS_ACTIVE
: ITEM_STATUS_DISABLED;
}
- if (isset($httptest['delay'])) {
- $update_fields['delay'] = $httptest['delay'];
+
+ if (array_key_exists('delay', $httptest) && $httptest['delay'] !== $db_httptest['delay']) {
+ $item['delay'] = $httptest['delay'];
}
- if (!empty($update_fields)) {
- $checkItemsUpdate[] = [
- 'values' => $update_fields,
- 'where' => ['itemid' => $checkitem['itemid']]
- ];
+
+ if (array_key_exists('templateid', $httptest)
+ && bccomp($httptest['templateid'], $db_httptest['templateid']) != 0) {
+ $item_key = array_key_exists('key_', $item) ? $item['key_'] : $db_item['key_'];
+
+ $item['templateid'] = $httptest['templateid'] == 0
+ ? 0
+ : self::$parent_itemids[$httptest['templateid']][$item_key];
+ }
+
+ if (array_key_exists('tags', $httptest)) {
+ $item['tags'] = $httptest['tags'];
}
+
+ $items[] = ['itemid' => $db_item['itemid']] + $item;
}
- DB::update('items', $checkItemsUpdate);
if (array_key_exists('steps', $httptest)) {
- $dbSteps = zbx_toHash($db_httptest['steps'], 'httpstepid');
+ continue;
+ }
+
+ foreach ($db_httptest['steps'] as $db_step) {
+ $db_items += $db_step['items'];
+
+ foreach ($db_step['items'] as $db_item) {
+ $item = [];
+
+ if ($httptest['name'] != $db_httptest['name']) {
+ $item += [
+ 'name' => self::getStepName($db_item['test_type'], $httptest['name'], $db_step['name']),
+ 'key_' => self::getStepKey($db_item['test_type'], $httptest['name'], $db_step['name'])
+ ];
+ }
+
+ if (array_key_exists('status', $httptest) && $httptest['status'] != $db_httptest['status']) {
+ $item['status'] = $httptest['status'] == HTTPTEST_STATUS_ACTIVE
+ ? ITEM_STATUS_ACTIVE
+ : ITEM_STATUS_DISABLED;
+ }
+
+ if (array_key_exists('delay', $httptest) && $httptest['delay'] !== $db_httptest['delay']) {
+ $item['delay'] = $httptest['delay'];
+ }
+
+ if (array_key_exists('templateid', $httptest)
+ && bccomp($httptest['templateid'], $db_httptest['templateid']) != 0) {
+ $item_key = array_key_exists('key_', $item) ? $item['key_'] : $db_item['key_'];
+
+ $item['templateid'] = $httptest['templateid'] == 0
+ ? 0
+ : self::$parent_itemids[$httptest['templateid']][$item_key];
+ }
+
+ if (array_key_exists('tags', $httptest)) {
+ $item['tags'] = $httptest['tags'];
+ }
+
+ $items[] = ['itemid' => $db_item['itemid']] + $item;
+ }
+ }
+ }
+
+ if ($items) {
+ CItem::updateForce($items, $db_items);
+ }
+ }
+
+ /**
+ * @param array $httptests
+ * @param array|null $db_httptests
+ */
+ private static function updateFields(array &$httptests, array $db_httptests = null): void {
+ $ins_fields = [];
+ $upd_fields = [];
+ $del_fieldids = [];
+
+ foreach ($httptests as &$httptest) {
+ if (array_key_exists('headers', $httptest)) {
+ $db_headers = $db_httptests !== null ? $db_httptests[$httptest['httptestid']]['headers'] : [];
+
+ foreach ($httptest['headers'] as &$header) {
+ $db_fieldid = key(array_filter($db_headers,
+ static function (array $db_header) use ($header): bool {
+ return $header['name'] == $db_header['name'] && $header['value'] == $db_header['value'];
+ }
+ ));
+
+ if ($db_fieldid !== null) {
+ $header['httptest_fieldid'] = $db_fieldid;
+ unset($db_headers[$db_fieldid]);
+ }
+ else {
+ $ins_fields[] = [
+ 'httptestid' => $httptest['httptestid'],
+ 'type' => ZBX_HTTPFIELD_HEADER
+ ] + $header;
+ }
+ }
+ unset($header);
+
+ $del_fieldids = array_merge($del_fieldids, array_keys($db_headers));
+ }
+
+ if (array_key_exists('variables', $httptest)) {
+ $db_variables = $db_httptests !== null
+ ? array_column($db_httptests[$httptest['httptestid']]['variables'], null, 'name')
+ : [];
+
+ foreach ($httptest['variables'] as &$variable) {
+ if (array_key_exists($variable['name'], $db_variables)) {
+ $db_variable = $db_variables[$variable['name']];
+
+ $upd_variable = DB::getUpdatedValues('httptest_field', $variable, $db_variable);
+
+ if ($upd_variable) {
+ $upd_fields[] = [
+ 'values' => $upd_variable,
+ 'where' => ['httptest_fieldid' => $db_variable['httptest_fieldid']]
+ ];
+ }
- foreach ($httptest['steps'] as $webstep) {
- if (isset($webstep['httpstepid']) && isset($dbSteps[$webstep['httpstepid']])) {
- $steps_update[$key][] = $webstep;
- unset($dbSteps[$webstep['httpstepid']]);
+ $variable['httptest_fieldid'] = $db_variable['httptest_fieldid'];
+ unset($db_variables[$variable['name']]);
}
- elseif (!isset($webstep['httpstepid'])) {
- $steps_create[$key][] = $webstep;
+ else {
+ $ins_fields[] = [
+ 'httptestid' => $httptest['httptestid'],
+ 'type' => ZBX_HTTPFIELD_VARIABLE
+ ] + $variable;
}
}
+ unset($variable);
- $del_steps += $dbSteps;
+ $del_fieldids = array_merge($del_fieldids, array_column($db_variables, 'httptest_fieldid'));
}
}
+ unset($httptest);
+
+ if ($del_fieldids) {
+ DB::delete('httptest_field', ['httptest_fieldid' => $del_fieldids]);
+ }
+
+ if ($upd_fields) {
+ DB::update('httptest_field', $upd_fields);
+ }
+
+ if ($ins_fields) {
+ DB::insertBatch('httptest_field', $ins_fields);
+ }
+ }
+
+ /**
+ * @param array $httptests
+ * @param array|null $db_httptests
+ */
+ private static function updateSteps(array &$httptests, array $db_httptests = null): void {
+ $ins_steps = [];
+ $upd_steps = [];
+ $update_step_items = false;
+ $del_stepids = [];
+ $del_db_items = [];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('steps', $httptest)) {
+ continue;
+ }
+
+ $db_steps = $db_httptests !== null ? $db_httptests[$httptest['httptestid']]['steps'] : [];
+
+ foreach ($httptest['steps'] as $step) {
+ if (array_key_exists('httpstepid', $step)) {
+ if (array_key_exists('posts', $step)) {
+ if (is_array($step['posts'])) {
+ if ($db_steps[$step['httpstepid']]['post_type'] == ZBX_POSTTYPE_RAW) {
+ if ($step['posts']) {
+ $step['post_type'] = ZBX_POSTTYPE_FORM;
+ }
+
+ $step['posts'] = '';
+ }
+ else {
+ if (!$step['posts']) {
+ $step['post_type'] = ZBX_POSTTYPE_RAW;
+ }
+
+ unset($step['posts']);
+ }
+ }
+ else {
+ if ($db_steps[$step['httpstepid']]['post_type'] == ZBX_POSTTYPE_FORM) {
+ $step['post_type'] = ZBX_POSTTYPE_RAW;
+ $db_steps[$step['httpstepid']]['posts'] = '';
+ }
+ }
+ }
+
+ $upd_step = DB::getUpdatedValues('httpstep', $step, $db_steps[$step['httpstepid']]);
+
+ if ($upd_step) {
+ $upd_steps[] = [
+ 'values' => $upd_step,
+ 'where' => ['httpstepid' => $step['httpstepid']]
+ ];
+ }
+
+ if (array_key_exists('items', $db_steps[$step['httpstepid']])) {
+ $update_step_items = true;
+ }
+
+ unset($db_steps[$step['httpstepid']]);
+ }
+ else {
+ if (array_key_exists('posts', $step) && is_array($step['posts'])) {
+ $step['post_type'] = ZBX_POSTTYPE_FORM;
+ unset($step['posts']);
+ }
- // Old items must be deleted prior to createStepsReal() since identical items cannot be created in DB.
- if ($del_steps) {
- $del_stepids = array_keys($del_steps);
+ $ins_steps[] = ['httptestid' => $httptest['httptestid']] + $step;
+ }
+ }
- CHttpTest::deleteAffectedStepItems($del_stepids);
+ $del_stepids = array_merge($del_stepids, array_keys($db_steps));
+
+ foreach ($db_steps as $db_step) {
+ if (!array_key_exists('items', $db_step)) {
+ continue;
+ }
+
+ foreach ($db_step['items'] as $db_item) {
+ $del_db_items[$db_item['itemid']] = $db_item;
+ }
+ }
+ }
+
+ if ($del_stepids) {
+ if ($del_db_items) {
+ CItem::addInheritedItems($del_db_items);
+ DB::delete('httpstepitem', ['itemid' => array_keys($del_db_items)]);
+ CItem::deleteForce($del_db_items);
+ }
DB::delete('httpstep_field', ['httpstepid' => $del_stepids]);
DB::delete('httpstep', ['httpstepid' => $del_stepids]);
}
- foreach ($httptests as $key => $httptest) {
- if (array_key_exists('steps', $httptest)) {
- if (array_key_exists($key, $steps_update)) {
- $this->updateStepsReal($httptest, $steps_update[$key], $itemids[$httptest['httptestid']]);
+ if ($upd_steps) {
+ DB::update('httpstep', $upd_steps);
+ }
+
+ if ($update_step_items) {
+ self::updateStepItems($httptests, $db_httptests);
+ }
+
+ if ($ins_steps) {
+ $stepids = DB::insert('httpstep', $ins_steps);
+
+ foreach ($httptests as &$httptest) {
+ if (!array_key_exists('steps', $httptest)) {
+ continue;
}
- if (array_key_exists($key, $steps_create)) {
- $this->createStepsReal($httptest, $steps_create[$key], $itemids[$httptest['httptestid']]);
+ foreach ($httptest['steps'] as &$step) {
+ if (!array_key_exists('httpstepid', $step)) {
+ $step['httpstepid'] = current($stepids);
+ next($stepids);
+ }
}
+ unset($step);
}
- else {
- $this->updateStepItems($httptest, $db_httptests[$httptest['httptestid']]);
+ unset($httptest);
+
+ self::createStepItems($httptests, $stepids, $db_httptests);
+ }
+
+ self::updateStepFields($httptests, $db_httptests);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $db_httptests
+ */
+ private static function updateStepItems(array $httptests, array $db_httptests): void {
+ $items = [];
+ $db_items = [];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('steps', $httptest)) {
+ continue;
+ }
+
+ $db_httptest = $db_httptests[$httptest['httptestid']];
+
+ foreach ($httptest['steps'] as $step) {
+ if (!array_key_exists('httpstepid', $step)
+ || !array_key_exists('items', $db_httptest['steps'][$step['httpstepid']])) {
+ continue;
+ }
+
+ $db_step = $db_httptest['steps'][$step['httpstepid']];
+
+ if (!array_key_exists('name', $step)) {
+ $step['name'] = $db_step['name'];
+ }
+
+ $db_items += $db_step['items'];
+
+ foreach ($db_step['items'] as $db_item) {
+ $item = [];
+
+ if ($httptest['name'] != $db_httptest['name'] || $step['name'] !== $db_step['name']) {
+ $item += [
+ 'name' => self::getStepName($db_item['test_type'], $httptest['name'], $step['name']),
+ 'key_' => self::getStepKey($db_item['test_type'], $httptest['name'], $step['name'])
+ ];
+ }
+
+ if (array_key_exists('status', $httptest) && $httptest['status'] != $db_httptest['status']) {
+ $item['status'] = $httptest['status'] == HTTPTEST_STATUS_ACTIVE
+ ? ITEM_STATUS_ACTIVE
+ : ITEM_STATUS_DISABLED;
+ }
+
+ if (array_key_exists('delay', $httptest) && $httptest['delay'] !== $db_httptest['delay']) {
+ $item['delay'] = $httptest['delay'];
+ }
+
+ if (array_key_exists('tags', $httptest)) {
+ $item['tags'] = $httptest['tags'];
+ }
+
+ $items[] = ['itemid' => $db_item['itemid']] + $item;
+ }
}
}
- $this->updateHttpTestFields($httptests, 'update');
- self::updateHttpTestTags($httptests);
+ if ($items) {
+ CItem::updateForce($items, $db_items);
+ }
+ }
+
+ /**
+ * @param array $httptests
+ * @param array $stepids
+ * @param array|null $db_httptests
+ */
+ private static function createStepItems(array $httptests, array $stepids, ?array $db_httptests): void {
+ $items = [];
+
+ $type_items = [
+ HTTPSTEP_ITEM_TYPE_RSPCODE => [
+ 'value_type' => ITEM_VALUE_TYPE_UINT64,
+ 'units' => ''
+ ],
+ HTTPSTEP_ITEM_TYPE_TIME => [
+ 'value_type' => ITEM_VALUE_TYPE_FLOAT,
+ 'units' => 's'
+ ],
+ HTTPSTEP_ITEM_TYPE_IN => [
+ 'value_type' => ITEM_VALUE_TYPE_FLOAT,
+ 'units' => 'Bps'
+ ]
+ ];
foreach ($httptests as $httptest) {
- $tags = array_key_exists('tags', $httptest) ? $httptest['tags'] : [];
- self::updateItemsTags($tags, $itemids[$httptest['httptestid']]);
+ if (!array_key_exists('steps', $httptest)) {
+ continue;
+ }
+
+ if ($db_httptests !== null) {
+ $httptest['host_status'] = $db_httptests[$httptest['httptestid']]['host_status'];
+ }
+
+ if (!array_key_exists('status', $httptest)) {
+ $httptest['status'] = ($db_httptests !== null)
+ ? $db_httptests[$httptest['httptestid']]['status']
+ : DB::getDefault('httptest', 'status');
+ }
+
+ $item_status = $httptest['status'] == HTTPTEST_STATUS_ACTIVE ? ITEM_STATUS_ACTIVE : ITEM_STATUS_DISABLED;
+
+ $item_tags = [];
+
+ if (array_key_exists('tags', $httptest)) {
+ $item_tags = $httptest['tags'];
+ }
+ elseif ($db_httptests !== null) {
+ foreach ($db_httptests[$httptest['httptestid']]['tags'] as $tag) {
+ $item_tags[] = array_intersect_key($tag, array_flip(['tag', 'value']));
+ }
+ }
+
+ if (!array_key_exists('delay', $httptest)) {
+ $httptest['delay'] = ($db_httptests !== null)
+ ? $db_httptests[$httptest['httptestid']]['delay']
+ : DB::getDefault('httptest', 'delay');
+ }
+
+ foreach ($httptest['steps'] as $step) {
+ if (!in_array($step['httpstepid'], $stepids)) {
+ continue;
+ }
+
+ foreach ($type_items as $type => $type_item) {
+ $item_key = self::getStepKey($type, $httptest['name'], $step['name']);
+
+ $items[] = [
+ 'host_status' => $httptest['host_status'],
+ 'flags' => ZBX_FLAG_DISCOVERY_NORMAL,
+ 'hostid' => $httptest['hostid'],
+ 'name' => self::getStepName($type, $httptest['name'], $step['name']),
+ 'type' => ITEM_TYPE_HTTPTEST,
+ 'key_' => $item_key,
+ 'history' => self::ITEM_HISTORY,
+ 'trends' => self::ITEM_TRENDS,
+ 'status' => $item_status,
+ 'tags' => $item_tags,
+ 'delay' => $httptest['delay'],
+ 'templateid' => array_key_exists('templateid', $httptest)
+ ? self::$parent_itemids[$httptest['templateid']][$item_key]
+ : 0
+ ] + $type_item;
+ }
+ }
}
- return $httptests;
+ CItem::createForce($items);
+
+ $itemids = array_column($items, 'itemid');
+
+ $ins_httpstepitems = [];
+
+ foreach ($httptests as $httptest) {
+ if (!array_key_exists('steps', $httptest)) {
+ continue;
+ }
+
+ foreach ($httptest['steps'] as $step) {
+ if (!in_array($step['httpstepid'], $stepids)) {
+ continue;
+ }
+
+ foreach ($type_items as $type => $foo) {
+ $ins_httpstepitems[] = [
+ 'httpstepid' => $step['httpstepid'],
+ 'itemid' => array_shift($itemids),
+ 'type' => $type
+ ];
+ }
+ }
+ }
+
+ DB::insertBatch('httpstepitem', $ins_httpstepitems);
+ }
+
+ /**
+ * @param array $httptests
+ * @param array|null $db_httptests
+ */
+ private static function updateStepFields(array &$httptests, ?array $db_httptests): void {
+ $ins_fields = [];
+ $upd_fields = [];
+ $del_fieldids = [];
+
+ foreach ($httptests as &$httptest) {
+ if (!array_key_exists('steps', $httptest)) {
+ continue;
+ }
+
+ $db_httptest = $db_httptests !== null ? $db_httptests[$httptest['httptestid']] : null;
+
+ foreach ($httptest['steps'] as &$step) {
+ $db_step = ($db_httptest !== null && array_key_exists($step['httpstepid'], $db_httptest['steps']))
+ ? $db_httptest['steps'][$step['httpstepid']]
+ : null;
+
+ if (array_key_exists('headers', $step)) {
+ $db_headers = $db_step !== null ? $db_step['headers'] : [];
+
+ foreach ($step['headers'] as &$header) {
+ $db_fieldid = key(array_filter($db_headers,
+ static function (array $db_header) use ($header): bool {
+ return $header['name'] == $db_header['name'] && $header['value'] == $db_header['value'];
+ }
+ ));
+
+ if ($db_fieldid !== null) {
+ $header['httpstep_fieldid'] = $db_fieldid;
+ unset($db_headers[$db_fieldid]);
+ }
+ else {
+ $ins_fields[] = [
+ 'httpstepid' => $step['httpstepid'],
+ 'type' => ZBX_HTTPFIELD_HEADER
+ ] + $header;
+ }
+ }
+ unset($header);
+
+ $del_fieldids = array_merge($del_fieldids, array_keys($db_headers));
+ }
+
+ if (array_key_exists('variables', $step)) {
+ $db_variables = $db_step !== null ? array_column($db_step['variables'], null, 'name') : [];
+
+ foreach ($step['variables'] as &$variable) {
+ if (array_key_exists($variable['name'], $db_variables)) {
+ $db_variable = $db_variables[$variable['name']];
+
+ $upd_variable = DB::getUpdatedValues('httpstep_field', $variable, $db_variable);
+
+ if ($upd_variable) {
+ $upd_fields[] = [
+ 'values' => $upd_variable,
+ 'where' => ['httpstep_fieldid' => $db_variable['httpstep_fieldid']]
+ ];
+ }
+
+ $variable['httpstep_fieldid'] = $db_variable['httpstep_fieldid'];
+ unset($db_variables[$variable['name']]);
+ }
+ else {
+ $ins_fields[] = [
+ 'httpstepid' => $step['httpstepid'],
+ 'type' => ZBX_HTTPFIELD_VARIABLE
+ ] + $variable;
+ }
+ }
+ unset($variable);
+
+ $del_fieldids = array_merge($del_fieldids, array_column($db_variables, 'httpstep_fieldid'));
+ }
+
+ if (array_key_exists('posts', $step)) {
+ if (is_array($step['posts'])) {
+ $db_posts = $db_step !== null && is_array($db_step['posts']) ? $db_step['posts'] : [];
+
+ foreach ($step['posts'] as &$post) {
+ $db_fieldid = key(array_filter($db_posts,
+ static function (array $db_post) use ($post): bool {
+ return $post['name'] == $db_post['name'] && $post['value'] == $db_post['value'];
+ }
+ ));
+
+ if ($db_fieldid !== null) {
+ $post['httpstep_fieldid'] = $db_fieldid;
+ unset($db_posts[$db_fieldid]);
+ }
+ else {
+ $ins_fields[] = [
+ 'httpstepid' => $step['httpstepid'],
+ 'type' => ZBX_HTTPFIELD_POST_FIELD
+ ] + $post;
+ }
+ }
+ unset($post);
+
+ $del_fieldids = array_merge($del_fieldids, array_keys($db_posts));
+ }
+ elseif ($db_step !== null && is_array($db_step['posts'])) {
+ $del_fieldids = array_merge($del_fieldids, array_keys($db_step['posts']));
+ }
+ }
+
+ if (array_key_exists('query_fields', $step)) {
+ $db_query_fields = $db_step !== null ? $db_step['query_fields'] : [];
+
+ foreach ($step['query_fields'] as &$query_field) {
+ $db_fieldid = key(array_filter($db_query_fields,
+ static function (array $db_query_field) use ($query_field): bool {
+ return $query_field['name'] == $db_query_field['name']
+ && $query_field['value'] == $db_query_field['value'];
+ }
+ ));
+
+ if ($db_fieldid !== null) {
+ $query_field['httpstep_fieldid'] = $db_fieldid;
+ unset($db_query_fields[$db_fieldid]);
+ }
+ else {
+ $ins_fields[] = [
+ 'httpstepid' => $step['httpstepid'],
+ 'type' => ZBX_HTTPFIELD_QUERY_FIELD
+ ] + $query_field;
+ }
+ }
+ unset($query_field);
+
+ $del_fieldids = array_merge($del_fieldids, array_keys($db_query_fields));
+ }
+ }
+ unset($step);
+ }
+ unset($httptest);
+
+ if ($del_fieldids) {
+ DB::delete('httpstep_field', ['httpstep_fieldid' => $del_fieldids]);
+ }
+
+ if ($upd_fields) {
+ DB::update('httpstep_field', $upd_fields);
+ }
+
+ if ($ins_fields) {
+ DB::insertBatch('httpstep_field', $ins_fields);
+ }
+ }
+
+ /**
+ * @param array $httptests
+ * @param array|null $db_httptests
+ */
+ private static function updateTags(array &$httptests, array $db_httptests = null): void {
+ $ins_tags = [];
+ $del_tagids = [];
+
+ foreach ($httptests as &$httptest) {
+ if (!array_key_exists('tags', $httptest)) {
+ continue;
+ }
+
+ $db_tags = $db_httptests !== null ? $db_httptests[$httptest['httptestid']]['tags'] : [];
+
+ foreach ($httptest['tags'] as &$tag) {
+ $db_tagid = key(array_filter($db_tags, static function (array $db_tag) use ($tag): bool {
+ return $tag['tag'] == $db_tag['tag']
+ && (!array_key_exists('value', $tag) || $tag['value'] == $db_tag['value']);
+ }));
+
+ if ($db_tagid !== null) {
+ $tag['httptesttagid'] = $db_tagid;
+ unset($db_tags[$db_tagid]);
+ }
+ else {
+ $ins_tags[] = ['httptestid' => $httptest['httptestid']] + $tag;
+ }
+ }
+ unset($tag);
+
+ $del_tagids = array_merge($del_tagids, array_keys($db_tags));
+ }
+ unset($httptest);
+
+ if ($del_tagids) {
+ DB::delete('httptest_tag', ['httptesttagid' => $del_tagids]);
+ }
+
+ if ($ins_tags) {
+ DB::insert('httptest_tag', $ins_tags);
+ }
}
/**
@@ -281,21 +1336,29 @@ class CHttpTestManager {
/**
* Inherit passed http tests to hosts.
- * If $hostIds is empty that means that we need to inherit all $httpTests to hosts which are linked to templates
- * where $httpTests belong.
- * *
- * @param array $httpTests
+ * If $hostids is empty that means that we need to inherit all $httptests to hosts which are linked to templates
+ * where $httptests belong.
+ *
+ * @param array $httptests
* @param array $hostIds
*
* @return bool
*/
- public function inherit(array $httpTests, array $hostIds = []) {
- $hostsTemplatesMap = $this->getChildHostsFromHttpTests($httpTests, $hostIds);
- if (empty($hostsTemplatesMap)) {
+ public function inherit(array $httptests, array $hostids = []) {
+ $template_hosts = $this->getTemplateHosts($httptests, $hostids);
+
+ if (!$template_hosts) {
return true;
}
- $preparedHttpTests = $this->prepareInheritedHttpTests($httpTests, $hostsTemplatesMap);
+ foreach ($httptests as $i => $httptest) {
+ if (!array_key_exists($httptest['hostid'], $template_hosts)) {
+ unset($httptests[$i]);
+ }
+ }
+
+ self::$parent_itemids = self::getItemIds($httptests);
+ $preparedHttpTests = $this->prepareInheritedHttpTests($httptests, $template_hosts);
$inheritedHttpTests = $this->save($preparedHttpTests);
$this->inherit($inheritedHttpTests);
@@ -303,30 +1366,69 @@ class CHttpTestManager {
}
/**
- * Get array with hosts that are linked with templates which passed http tests belong to as key and templateid that host
- * is linked to as value.
- * If second parameter $hostIds is not empty, result should contain only passed host ids.
+ * Get hosts to which is necessary to inherit the given web scenarios indexed by template ID.
*
- * @param array $httpTests
- * @param array $hostIds
+ * @param array $httptests
+ * @param array $hostids
*
* @return array
*/
- protected function getChildHostsFromHttpTests(array $httpTests, array $hostIds = []) {
- $hostsTemplatesMap = [];
+ private static function getTemplateHosts(array $httptests, array $hostids): array {
+ $template_hosts = [];
- $sqlWhere = $hostIds ? ' AND '.dbConditionInt('ht.hostid', $hostIds) : '';
- $dbCursor = DBselect(
- 'SELECT ht.templateid,ht.hostid'.
- ' FROM hosts_templates ht'.
- ' WHERE '.dbConditionInt('ht.templateid', zbx_objectValues($httpTests, 'hostid')).
- $sqlWhere
+ $hostids_condition = $hostids ? ' AND '.dbConditionId('ht.hostid', $hostids) : '';
+
+ $result = DBselect(
+ 'SELECT ht.templateid,ht.hostid,h.status'.
+ ' FROM hosts_templates ht,hosts h'.
+ ' WHERE ht.hostid=h.hostid'.
+ ' AND '.dbConditionId('ht.templateid', array_column($httptests, 'hostid')).
+ $hostids_condition
+ );
+
+ while ($row = DBfetch($result)) {
+ $template_hosts[$row['templateid']][$row['hostid']] = array_diff_key($row, array_flip(['templateid']));
+ }
+
+ return $template_hosts;
+ }
+
+ /**
+ * Get item IDs array of the given web scenarios and their steps indexed by httptest ID and item key.
+ *
+ * @param array $httptests
+ *
+ * @return array
+ */
+ private static function getItemIds(array $httptests): array {
+ $httptest_itemids = [];
+
+ $httptestids = array_column($httptests, 'httptestid');
+
+ $result = DBselect(
+ 'SELECT hti.httptestid,hti.itemid,i.key_'.
+ ' FROM httptestitem hti,items i'.
+ ' WHERE hti.itemid=i.itemid'.
+ ' AND '.dbConditionId('hti.httptestid', $httptestids)
);
- while ($dbHost = DBfetch($dbCursor)) {
- $hostsTemplatesMap[$dbHost['hostid']] = $dbHost['templateid'];
+
+ while ($row = DBfetch($result)) {
+ $httptest_itemids[$row['httptestid']][$row['key_']] = $row['itemid'];
+ }
+
+ $result = DBselect(
+ 'SELECT hs.httptestid,hsi.itemid,i.key_'.
+ ' FROM httpstep hs,httpstepitem hsi,items i'.
+ ' WHERE hs.httpstepid=hsi.httpstepid'.
+ ' AND hsi.itemid=i.itemid'.
+ ' AND '.dbConditionId('hs.httptestid', $httptestids)
+ );
+
+ while ($row = DBfetch($result)) {
+ $httptest_itemids[$row['httptestid']][$row['key_']] = $row['itemid'];
}
- return $hostsTemplatesMap;
+ return $httptest_itemids;
}
/**
@@ -334,20 +1436,20 @@ class CHttpTestManager {
* Using passed parameters decide if new http tests must be created on host or existing ones must be updated.
*
* @param array $httpTests which we need to inherit
- * @param array $hostsTemplatesMap
+ * @param array $template_hosts
*
* @throws Exception
* @return array with http tests, existing apps have 'httptestid' key.
*/
- protected function prepareInheritedHttpTests(array $httpTests, array $hostsTemplatesMap) {
- $hostHttpTests = $this->getHttpTestsMapsByHostIds(array_keys($hostsTemplatesMap));
+ protected function prepareInheritedHttpTests(array $httpTests, array $template_hosts) {
+ $hostHttpTests = $this->getHostHttpTests($template_hosts);
$result = [];
foreach ($httpTests as $httpTest) {
$httpTestId = $httpTest['httptestid'];
foreach ($hostHttpTests as $hostId => $hostHttpTest) {
// if http test template is not linked to host we skip it
- if ($hostsTemplatesMap[$hostId] != $httpTest['hostid']) {
+ if (!array_key_exists($hostId, $template_hosts[$httpTest['hostid']])) {
continue;
}
@@ -380,10 +1482,6 @@ class CHttpTestManager {
_s('Web scenario "%1$s" already exists on host "%2$s".', $exHttpTest['name'], $host['name'])
);
}
- elseif ($this->compareHttpProperties($httpTest, $exHttpTest)) {
- $this->createLinkageBetweenHttpTests($httpTestId, $exHttpTest['httptestid']);
- continue;
- }
}
$newHttpTest = $httpTest;
@@ -393,14 +1491,34 @@ class CHttpTestManager {
if ($exHttpTest) {
$newHttpTest['httptestid'] = $exHttpTest['httptestid'];
- $this->setHttpTestParent($exHttpTest['httptestid'], $httpTestId);
+ if (array_key_exists('variables', $newHttpTest)) {
+ foreach ($newHttpTest['variables'] as &$variable) {
+ unset($variable['httptest_fieldid']);
+ }
+ unset($variable);
+ }
- if (isset($newHttpTest['steps'])) {
- $newHttpTest['steps'] = $this->prepareHttpSteps($httpTest['steps'], $exHttpTest['httptestid']);
+ if (isset($hostHttpTest['byTemplateId'][$httpTestId])) {
+ $this->setHttpTestParent($exHttpTest['httptestid'], $httpTestId);
+
+ if (isset($newHttpTest['steps'])) {
+ $newHttpTest['steps'] = $this->prepareHttpSteps($httpTest['steps'],
+ $exHttpTest['httptestid']
+ );
+ }
+ }
+ elseif (isset($hostHttpTest['byName'][$httpTest['name']])) {
+ unset($newHttpTest['steps']);
}
}
else {
unset($newHttpTest['httptestid']);
+ $newHttpTest['host_status'] = $template_hosts[$httpTest['hostid']][$hostId]['status'];
+
+ foreach ($newHttpTest['steps'] as &$step) {
+ unset($step['httpstepid']);
+ }
+ unset($step);
}
$result[] = $newHttpTest;
@@ -411,72 +1529,6 @@ class CHttpTestManager {
}
/**
- * Compare properties for http tests.
- *
- * @param array $http_test Current http test properties.
- * @param array $ex_http_test Existing http test properties to compare with.
- *
- * @return bool
- */
- protected function compareHttpProperties(array $http_test, array $ex_http_test) {
- return ($http_test['http_proxy'] === $ex_http_test['http_proxy']
- && $http_test['agent'] === $ex_http_test['agent']
- && $http_test['retries'] == $ex_http_test['retries']
- && $http_test['delay'] === $ex_http_test['delay']);
- }
-
- /**
- * Create linkage between two http tests.
- * If we found existing http test by name and steps, we only add linkage, i.e. change templateid
- *
- * @param $parentId
- * @param $childId
- */
- protected function createLinkageBetweenHttpTests($parentId, $childId) {
- DB::update('httptest', [
- 'values' => [
- 'templateid' => $parentId,
- 'uuid' => ''
- ],
- 'where' => ['httptestid' => $childId]
- ]);
-
- $dbCursor = DBselect(
- 'SELECT i1.itemid AS parentid,i2.itemid AS childid'.
- ' FROM httptestitem hti1,httptestitem hti2,items i1,items i2'.
- ' WHERE hti1.httptestid='.zbx_dbstr($parentId).
- ' AND hti2.httptestid='.zbx_dbstr($childId).
- ' AND hti1.itemid=i1.itemid'.
- ' AND hti2.itemid=i2.itemid'.
- ' AND i1.key_=i2.key_'
- );
- while ($dbItems = DBfetch($dbCursor)) {
- DB::update('items', [
- 'values' => ['templateid' => $dbItems['parentid']],
- 'where' => ['itemid' => $dbItems['childid']]
- ]);
- }
-
- $dbCursor = DBselect(
- 'SELECT i1.itemid AS parentid,i2.itemid AS childid'.
- ' FROM httpstepitem hsi1,httpstepitem hsi2,httpstep hs1,httpstep hs2,items i1,items i2'.
- ' WHERE hs1.httptestid='.zbx_dbstr($parentId).
- ' AND hs2.httptestid='.zbx_dbstr($childId).
- ' AND hsi1.itemid=i1.itemid'.
- ' AND hsi2.itemid=i2.itemid'.
- ' AND hs1.httpstepid=hsi1.httpstepid'.
- ' AND hs2.httpstepid=hsi2.httpstepid'.
- ' AND i1.key_=i2.key_'
- );
- while ($dbItems = DBfetch($dbCursor)) {
- DB::update('items', [
- 'values' => ['templateid' => $dbItems['parentid']],
- 'where' => ['itemid' => $dbItems['childid']]
- ]);
- }
- }
-
- /**
* Find and set first parent id for http test.
*
* @param $id
@@ -501,20 +1553,23 @@ class CHttpTestManager {
* ), ...
* );
*
- * @param array $hostIds
+ * @param array $template_hosts
*
* @return array
*/
- protected function getHttpTestsMapsByHostIds(array $hostIds) {
+ protected function getHostHttpTests(array $template_hosts) {
$hostHttpTests = [];
- foreach ($hostIds as $hostid) {
- $hostHttpTests[$hostid] = ['byName' => [], 'byTemplateId' => []];
+
+ foreach ($template_hosts as $hosts) {
+ foreach ($hosts as $hostid => $foo) {
+ $hostHttpTests[$hostid] = ['byName' => [], 'byTemplateId' => []];
+ }
}
$dbCursor = DBselect(
'SELECT ht.httptestid,ht.name,ht.delay,ht.agent,ht.hostid,ht.templateid,ht.http_proxy,ht.retries'.
' FROM httptest ht'.
- ' WHERE '.dbConditionInt('ht.hostid', $hostIds)
+ ' WHERE '.dbConditionId('ht.hostid', array_keys($hostHttpTests))
);
while ($dbHttpTest = DBfetch($dbCursor)) {
$hostHttpTests[$dbHttpTest['hostid']]['byName'][$dbHttpTest['name']] = $dbHttpTest;
@@ -632,638 +1687,22 @@ class CHttpTestManager {
if (isset($exSteps[$stepName])) {
$step['httpstepid'] = $exSteps[$stepName];
- $step['httptestid'] = $exHttpTestId;
- }
-
- $result[] = $step;
- }
-
- return $result;
- }
-
- /**
- * Create items required for web scenario.
- *
- * @param array $http_test
- * @param array $_itemids
- *
- * @throws Exception
- */
- protected function createHttpTestItems(array $http_test, array &$_itemids): void {
- $checkitems = [
- [
- 'name' => $this->getTestName(HTTPSTEP_ITEM_TYPE_IN, $http_test['name']),
- 'key_' => $this->getTestKey(HTTPSTEP_ITEM_TYPE_IN, $http_test['name']),
- 'value_type' => ITEM_VALUE_TYPE_FLOAT,
- 'units' => 'Bps',
- 'httptestitemtype' => HTTPSTEP_ITEM_TYPE_IN
- ],
- [
- 'name' => $this->getTestName(HTTPSTEP_ITEM_TYPE_LASTSTEP, $http_test['name']),
- 'key_' => $this->getTestKey(HTTPSTEP_ITEM_TYPE_LASTSTEP, $http_test['name']),
- 'value_type' => ITEM_VALUE_TYPE_UINT64,
- 'units' => '',
- 'httptestitemtype' => HTTPSTEP_ITEM_TYPE_LASTSTEP
- ],
- [
- 'name' => $this->getTestName(HTTPSTEP_ITEM_TYPE_LASTERROR, $http_test['name']),
- 'key_' => $this->getTestKey(HTTPSTEP_ITEM_TYPE_LASTERROR, $http_test['name']),
- 'value_type' => ITEM_VALUE_TYPE_STR,
- 'units' => '',
- 'httptestitemtype' => HTTPSTEP_ITEM_TYPE_LASTERROR
- ]
- ];
-
- // if this is a template scenario, fetch the parent http items to link inherited items to them
- $parent_items = [];
- if (isset($http_test['templateid']) && $http_test['templateid']) {
- $parent_items = DBfetchArrayAssoc(DBselect(
- 'SELECT i.itemid,i.key_'.
- ' FROM items i,httptestitem hti'.
- ' WHERE i.itemid=hti.itemid'.
- ' AND hti.httptestid='.zbx_dbstr($http_test['templateid'])
- ), 'key_');
- }
-
- $delay = array_key_exists('delay', $http_test) ? $http_test['delay'] : DB::getDefault('httptest', 'delay');
- $status = array_key_exists('status', $http_test) ? $http_test['status'] : DB::getDefault('httptest', 'status');
-
- $ins_items = [];
- foreach ($checkitems as $item) {
- $item['hostid'] = $http_test['hostid'];
- $item['delay'] = $delay;
- $item['type'] = ITEM_TYPE_HTTPTEST;
- $item['history'] = self::ITEM_HISTORY;
- $item['trends'] = self::ITEM_TRENDS;
- $item['status'] = ($status == HTTPTEST_STATUS_ACTIVE)
- ? ITEM_STATUS_ACTIVE
- : ITEM_STATUS_DISABLED;
-
- if (isset($parent_items[$item['key_']])) {
- $item['templateid'] = $parent_items[$item['key_']]['itemid'];
- }
-
- $ins_items[] = $item;
- }
- $itemids = DB::insert('items', $ins_items);
-
- $ins_item_rtdata = [];
- foreach ($itemids as $itemid) {
- $_itemids[] = $itemid;
- $ins_item_rtdata[] = ['itemid' => $itemid];
- }
- DB::insertBatch('item_rtdata', $ins_item_rtdata, false);
-
- $ins_httptestitem = [];
- foreach ($checkitems as $inum => $item) {
- $ins_httptestitem[] = [
- 'httptestid' => $http_test['httptestid'],
- 'itemid' => $itemids[$inum],
- 'type' => $item['httptestitemtype']
- ];
- }
- DB::insertBatch('httptestitem', $ins_httptestitem);
- }
-
- /**
- * Create web scenario fields.
- *
- * @param array $httptests
- * @param string $httptests['httptestid']
- * @param array $httptests['variables'] (optional)
- * @param string $httptests['variables']['name']
- * @param string $httptests['variables']['value']
- * @param array $httptests['headers'] (optional)
- * @param string $httptests['headers']['name']
- * @param string $httptests['headers']['value']
- * @param string $method
- */
- private function updateHttpTestFields(array $httptests, $method) {
- $fields = [
- ZBX_HTTPFIELD_VARIABLE => 'variables',
- ZBX_HTTPFIELD_HEADER => 'headers'
- ];
- $httptest_fields = [];
-
- foreach ($httptests as $httptest) {
- foreach ($fields as $type => $field) {
- if (array_key_exists($field, $httptest)) {
- $httptest_fields[$httptest['httptestid']][$type] = $httptest[$field];
- }
- }
- }
-
- if (!$httptest_fields) {
- return;
- }
-
- $db_httptest_fields = ($method === 'update')
- ? DB::select('httptest_field', [
- 'output' => ['httptest_fieldid', 'httptestid', 'type', 'name', 'value'],
- 'filter' => ['httptestid' => array_keys($httptest_fields)],
- 'sortfield' => ['httptest_fieldid']
- ])
- : [];
-
- $ins_httptest_fields = [];
- $upd_httptest_fields = [];
- $del_httptest_fieldids = [];
-
- foreach ($db_httptest_fields as $index => $db_httptest_field) {
- if (array_key_exists($db_httptest_field['type'], $httptest_fields[$db_httptest_field['httptestid']])) {
- $httptest_field =
- array_shift($httptest_fields[$db_httptest_field['httptestid']][$db_httptest_field['type']]);
-
- if ($httptest_field !== null) {
- $upd_httptest_field = [];
-
- foreach (['name', 'value'] as $field_name) {
- if ($httptest_field[$field_name] !== $db_httptest_field[$field_name]) {
- $upd_httptest_field[$field_name] = $httptest_field[$field_name];
- }
- }
-
- if ($upd_httptest_field) {
- $upd_httptest_fields[] = [
- 'values' => $upd_httptest_field,
- 'where' => ['httptest_fieldid' => $db_httptest_field['httptest_fieldid']]
- ];
- }
- }
- else {
- $del_httptest_fieldids[] = $db_httptest_field['httptest_fieldid'];
- }
- }
- }
-
- foreach ($httptest_fields as $httptestid => $httptest_fields_by_httptest) {
- foreach ($httptest_fields_by_httptest as $type => $httptest_fields_by_type) {
- foreach ($httptest_fields_by_type as $httptest_field) {
- $ins_httptest_fields[] = [
- 'httptestid' => $httptestid,
- 'type' => $type
- ] + $httptest_field;
- }
- }
- }
-
- if ($ins_httptest_fields) {
- DB::insertBatch('httptest_field', $ins_httptest_fields);
- }
-
- if ($upd_httptest_fields) {
- DB::update('httptest_field', $upd_httptest_fields);
- }
-
- if ($del_httptest_fieldids) {
- DB::delete('httptest_field', ['httptest_fieldid' => $del_httptest_fieldids]);
- }
- }
-
- /**
- * Create web scenario step fields.
- *
- * @param array $httpsteps
- * @param string $httpsteps['httpstepid']
- * @param array $httpsteps['variables'] (optional)
- * @param string $httpsteps['variables']['name']
- * @param string $httpsteps['variables']['value']
- * @param array $httpsteps['headers'] (optional)
- * @param string $httpsteps['headers']['name']
- * @param string $httpsteps['headers']['value']
- * @param string $method
- */
- private function updateHttpStepFields(array $httpsteps, $method) {
- $fields = [
- ZBX_HTTPFIELD_VARIABLE => 'variables',
- ZBX_HTTPFIELD_HEADER => 'headers',
- ZBX_HTTPFIELD_POST_FIELD => 'post_fields',
- ZBX_HTTPFIELD_QUERY_FIELD => 'query_fields'
- ];
- $httpstep_fields = [];
-
- foreach ($httpsteps as $httpstep) {
- foreach ($fields as $type => $field) {
- if (array_key_exists($field, $httpstep)) {
- $httpstep_fields[$httpstep['httpstepid']][$type] = $httpstep[$field];
- }
- }
- }
-
- if (!$httpstep_fields) {
- return;
- }
-
- $db_httpstep_fields = ($method === 'update')
- ? DB::select('httpstep_field', [
- 'output' => ['httpstep_fieldid', 'httpstepid', 'type', 'name', 'value'],
- 'filter' => ['httpstepid' => array_keys($httpstep_fields)],
- 'sortfield' => ['httpstep_fieldid']
- ])
- : [];
-
- $ins_httpstep_fields = [];
- $upd_httpstep_fields = [];
- $del_httpstep_fieldids = [];
-
- foreach ($db_httpstep_fields as $index => $db_httpstep_field) {
- if (array_key_exists($db_httpstep_field['type'], $httpstep_fields[$db_httpstep_field['httpstepid']])) {
- $httpstep_field =
- array_shift($httpstep_fields[$db_httpstep_field['httpstepid']][$db_httpstep_field['type']]);
-
- if ($httpstep_field !== null) {
- $upd_httpstep_field = [];
-
- foreach (['name', 'value'] as $field_name) {
- if ($httpstep_field[$field_name] !== $db_httpstep_field[$field_name]) {
- $upd_httpstep_field[$field_name] = $httpstep_field[$field_name];
- }
- }
-
- if ($upd_httpstep_field) {
- $upd_httpstep_fields[] = [
- 'values' => $upd_httpstep_field,
- 'where' => ['httpstep_fieldid' => $db_httpstep_field['httpstep_fieldid']]
- ];
- }
- }
- else {
- $del_httpstep_fieldids[] = $db_httpstep_field['httpstep_fieldid'];
- }
- }
- }
-
- foreach ($httpstep_fields as $httpstepid => $httpstep_fields_by_httpstep) {
- foreach ($httpstep_fields_by_httpstep as $type => $httpstep_fields_by_type) {
- foreach ($httpstep_fields_by_type as $httpstep_field) {
- $ins_httpstep_fields[] = [
- 'httpstepid' => $httpstepid,
- 'type' => $type
- ] + $httpstep_field;
- }
- }
- }
-
- if ($ins_httpstep_fields) {
- DB::insertBatch('httpstep_field', $ins_httpstep_fields);
- }
-
- if ($upd_httpstep_fields) {
- DB::update('httpstep_field', $upd_httpstep_fields);
- }
-
- if ($del_httpstep_fieldids) {
- DB::delete('httpstep_field', ['httpstep_fieldid' => $del_httpstep_fieldids]);
- }
- }
-
- /**
- * Create web scenario steps with items.
- *
- * @param array $http_test
- * @param array $websteps
- * @param array $_itemids
- *
- * @throws Exception
- */
- protected function createStepsReal(array $http_test, array $websteps, array &$_itemids): void {
- foreach ($websteps as &$webstep) {
- $webstep['httptestid'] = $http_test['httptestid'];
-
- if (array_key_exists('posts', $webstep)) {
- if (is_array($webstep['posts'])) {
- $webstep['post_fields'] = $webstep['posts'];
- $webstep['posts'] = '';
- $webstep['post_type'] = ZBX_POSTTYPE_FORM;
- }
- else {
- $webstep['post_fields'] = [];
- $webstep['post_type'] = ZBX_POSTTYPE_RAW;
- }
- }
- }
- unset($webstep);
-
- $webstepids = DB::insert('httpstep', $websteps);
-
- // if this is a template scenario, fetch the parent http items to link inherited items to them
- $parent_step_items = [];
- if (isset($http_test['templateid']) && $http_test['templateid']) {
- $parent_step_items = DBfetchArrayAssoc(DBselect(
- 'SELECT i.itemid,i.key_,hsi.httpstepid'.
- ' FROM items i,httpstepitem hsi,httpstep hs'.
- ' WHERE i.itemid=hsi.itemid'.
- ' AND hsi.httpstepid=hs.httpstepid'.
- ' AND hs.httptestid='.zbx_dbstr($http_test['templateid'])
- ), 'key_');
- }
-
- $ins_httpstepitem = [];
- $ins_item_rtdata = [];
-
- foreach ($websteps as $snum => &$webstep) {
- $webstep['httpstepid'] = $webstepids[$snum];
-
- $stepitems = [
- [
- 'name' => $this->getStepName(HTTPSTEP_ITEM_TYPE_IN, $http_test['name'], $webstep['name']),
- 'key_' => $this->getStepKey(HTTPSTEP_ITEM_TYPE_IN, $http_test['name'], $webstep['name']),
- 'value_type' => ITEM_VALUE_TYPE_FLOAT,
- 'units' => 'Bps',
- 'httpstepitemtype' => HTTPSTEP_ITEM_TYPE_IN
- ],
- [
- 'name' => $this->getStepName(HTTPSTEP_ITEM_TYPE_TIME, $http_test['name'], $webstep['name']),
- 'key_' => $this->getStepKey(HTTPSTEP_ITEM_TYPE_TIME, $http_test['name'], $webstep['name']),
- 'value_type' => ITEM_VALUE_TYPE_FLOAT,
- 'units' => 's',
- 'httpstepitemtype' => HTTPSTEP_ITEM_TYPE_TIME
- ],
- [
- 'name' => $this->getStepName(HTTPSTEP_ITEM_TYPE_RSPCODE, $http_test['name'], $webstep['name']),
- 'key_' => $this->getStepKey(HTTPSTEP_ITEM_TYPE_RSPCODE, $http_test['name'], $webstep['name']),
- 'value_type' => ITEM_VALUE_TYPE_UINT64,
- 'units' => '',
- 'httpstepitemtype' => HTTPSTEP_ITEM_TYPE_RSPCODE
- ]
- ];
-
- if (!isset($http_test['delay']) || !isset($http_test['status'])) {
- $db_httptest = DBfetch(DBselect(
- 'SELECT ht.delay,ht.status'.
- ' FROM httptest ht'.
- ' WHERE ht.httptestid='.zbx_dbstr($http_test['httptestid'])
- ));
- $delay = $db_httptest['delay'];
- $status = $db_httptest['status'];
}
else {
- $delay = $http_test['delay'];
- $status = $http_test['status'];
- }
-
- $ins_items = [];
- foreach ($stepitems as $item) {
- $item['hostid'] = $http_test['hostid'];
- $item['delay'] = $delay;
- $item['type'] = ITEM_TYPE_HTTPTEST;
- $item['history'] = self::ITEM_HISTORY;
- $item['trends'] = self::ITEM_TRENDS;
- $item['status'] = (HTTPTEST_STATUS_ACTIVE == $status) ? ITEM_STATUS_ACTIVE : ITEM_STATUS_DISABLED;
-
- if (isset($parent_step_items[$item['key_']])) {
- $item['templateid'] = $parent_step_items[$item['key_']]['itemid'];
- }
-
- $ins_items[] = $item;
- }
- $itemids = DB::insert('items', $ins_items);
-
- foreach ($stepitems as $inum => $item) {
- $_itemids[] = $itemids[$inum];
- $ins_httpstepitem[] = [
- 'httpstepid' => $webstep['httpstepid'],
- 'itemid' => $itemids[$inum],
- 'type' => $item['httpstepitemtype']
- ];
- }
-
- foreach ($itemids as $itemid) {
- $ins_item_rtdata[] = ['itemid' => $itemid];
- }
- }
- unset($webstep);
-
- DB::insertBatch('httpstepitem', $ins_httpstepitem);
- DB::insertBatch('item_rtdata', $ins_item_rtdata, false);
-
- $this->updateHttpStepFields($websteps, 'create');
- }
-
- /**
- * Update web scenario steps.
- *
- * @param array $httpTest
- * @param array $websteps
- * @param array $itemids_per_http_tests
- *
- * @throws Exception
- */
- protected function updateStepsReal(array $httpTest, array $websteps, array &$_itemids): void {
- $item_key_parser = new CItemKey();
-
- foreach ($websteps as &$webstep) {
- if (array_key_exists('posts', $webstep)) {
- if (is_array($webstep['posts'])) {
- $webstep['post_fields'] = $webstep['posts'];
- $webstep['posts'] = '';
- $webstep['post_type'] = ZBX_POSTTYPE_FORM;
- }
- else {
- $webstep['post_fields'] = [];
- $webstep['post_type'] = ZBX_POSTTYPE_RAW;
- }
- }
- }
- unset($webstep);
-
- foreach ($websteps as $webstep) {
- DB::update('httpstep', [
- 'values' => $webstep,
- 'where' => ['httpstepid' => $webstep['httpstepid']]
- ]);
-
- // update item keys
- $stepitems_update = [];
- $dbStepItems = DBselect(
- 'SELECT i.itemid,i.name,i.key_,hi.type'.
- ' FROM items i,httpstepitem hi'.
- ' WHERE hi.httpstepid='.zbx_dbstr($webstep['httpstepid']).
- ' AND hi.itemid=i.itemid'
- );
- while ($stepitem = DBfetch($dbStepItems)) {
- $_itemids[] = $stepitem['itemid'];
- $update_fields = [];
-
- if (isset($httpTest['name']) || isset($webstep['name'])) {
- if (!isset($httpTest['name']) || !isset($webstep['name'])) {
- $item_key_parser->parse($stepitem['key_']);
- if (!isset($httpTest['name'])) {
- $httpTest['name'] = $item_key_parser->getParam(0);
- }
- if (!isset($webstep['name'])) {
- $webstep['name'] = $item_key_parser->getParam(1);
- }
- }
-
- $update_fields['name'] = $this->getStepName($stepitem['type'], $httpTest['name'], $webstep['name']);
- if ($update_fields['name'] === $stepitem['name']) {
- unset($update_fields['name']);
- }
-
- $update_fields['key_'] = $this->getStepKey($stepitem['type'], $httpTest['name'], $webstep['name']);
- if ($update_fields['key_'] === $stepitem['key_']) {
- unset($update_fields['key_']);
- }
- }
- if (isset($httpTest['status'])) {
- $update_fields['status'] = (HTTPTEST_STATUS_ACTIVE == $httpTest['status'])
- ? ITEM_STATUS_ACTIVE
- : ITEM_STATUS_DISABLED;
- }
- if (isset($httpTest['delay'])) {
- $update_fields['delay'] = $httpTest['delay'];
- }
- if (!empty($update_fields)) {
- $stepitems_update[] = [
- 'values' => $update_fields,
- 'where' => ['itemid' => $stepitem['itemid']]
- ];
- }
- }
-
- if ($stepitems_update) {
- DB::update('items', $stepitems_update);
- }
- }
-
- $this->updateHttpStepFields($websteps, 'update');
- }
-
- /**
- * Update web items after changes in web scenario.
- * This should be used, when individual steps are not being updated.
- *
- * @param array $httptest
- * @param array $db_httptest
- */
- protected function updateStepItems(array $httptest, array $db_httptest): void {
- $has_status = array_key_exists('status', $httptest);
- $has_name_changed = ($httptest['name'] !== $db_httptest['name']);
-
- $stepids = array_column($db_httptest['steps'], 'httpstepid');
-
- $stepitems = DBfetchArrayAssoc(DBselect(
- 'SELECT i.itemid, hsi.httpstepid, hsi.type'.
- ' FROM items i,httpstepitem hsi'.
- ' WHERE i.itemid=hsi.itemid'.
- ' AND '.dbConditionInt('hsi.httpstepid', $stepids)
- ), 'itemid');
-
- $stepitemids = array_keys($stepitems);
-
- if ($has_status) {
- $status = ($httptest['status'] == HTTPTEST_STATUS_ACTIVE)
- ? ITEM_STATUS_ACTIVE
- : ITEM_STATUS_DISABLED;
-
- DB::update('items', [
- 'values' => ['status' => $status],
- 'where' => ['itemid' => $stepitemids]
- ]);
- }
-
- if ($has_name_changed) {
- $db_websteps = zbx_toHash($db_httptest['steps'], 'httpstepid');
- $stepitems_update = [];
-
- foreach ($stepitems as $stepitem) {
- $db_webstep = $db_websteps[$stepitem['httpstepid']];
-
- $stepitems_update[] = [
- 'values' => [
- 'name' => $this->getStepName($stepitem['type'], $httptest['name'], $db_webstep['name']),
- 'key_' => $this->getStepKey($stepitem['type'], $httptest['name'], $db_webstep['name'])
- ],
- 'where' => ['itemid' => $stepitem['itemid']]
- ];
- }
-
- if ($stepitems_update) {
- DB::update('items', $stepitems_update);
- }
- }
- }
-
- /**
- * Create tags for http test and http test step items.
- * All items should belong to the same http test and should have same set of tags.
- *
- * @static
- *
- * @param array $tags New tags to save.
- * @param array $itemids List of itemids.
- */
- protected static function createItemsTags(array $tags, array $itemids): void {
- $new_tags = [];
- foreach ($tags as $tag) {
- foreach ($itemids as $itemid) {
- $new_tags[] = $tag + ['itemid' => $itemid];
+ unset($step['httpstepid']);
}
- }
-
- DB::insert('item_tag', $new_tags);
- }
- /**
- * Update step item tags.
- * Function assumes that all step items has same set of tags. Not suitable for steps from different web scenarios.
- *
- * @static
- *
- * @param array $tags New tags to save.
- * @param array $stepitemids List of step itemids to update.
- */
- protected static function updateItemsTags(array $tags, array $stepitemids): void {
- // Select tags from database.
- $db_tags_raw = DB::select('item_tag', [
- 'output' => ['itemtagid', 'tag', 'value', 'itemid'],
- 'filter' => ['itemid' => $stepitemids]
- ]);
- $db_tags = [];
- foreach ($db_tags_raw as $tag) {
- $db_tags[$tag['itemid']][$tag['tag']][$tag['value']] = $tag['itemtagid'];
- }
-
- // Make array with new tags.
- $item_tags_add = array_fill_keys($stepitemids, $tags);
-
- // Unset tags which don't need to add/delete.
- foreach ($db_tags as $stepitemid => $item_tags_del) {
- foreach ($item_tags_add[$stepitemid] as $new_tag_key => $tag_add) {
- if (array_key_exists($tag_add['tag'], $item_tags_del)
- && array_key_exists($tag_add['value'], $item_tags_del[$tag_add['tag']])) {
- unset($item_tags_add[$stepitemid][$new_tag_key],
- $db_tags[$stepitemid][$tag_add['tag']][$tag_add['value']]
- );
+ if (array_key_exists('variables', $step)) {
+ foreach ($step['variables'] as &$variable) {
+ unset($variable['httpstep_fieldid']);
}
+ unset($variable);
}
- }
- // Delete tags.
- $del_tagids = [];
- foreach ($db_tags as $db_tag) {
- foreach ($db_tag as $db_tagids) {
- if ($db_tagids) {
- $del_tagids = array_merge($del_tagids, array_values($db_tagids));
- }
- }
- }
- if ($del_tagids) {
- DB::delete('item_tag', ['itemtagid' => $del_tagids]);
+ $result[] = $step;
}
- // Add new tags.
- $new_tags = [];
- foreach ($item_tags_add as $stepitemid => $tags) {
- foreach ($tags as $tag) {
- $tag['itemid'] = $stepitemid;
- $new_tags[] = $tag;
- }
- }
- if ($new_tags) {
- DB::insert('item_tag', $new_tags);
- }
+ return $result;
}
/**
@@ -1274,7 +1713,7 @@ class CHttpTestManager {
*
* @return string
*/
- protected function getTestKey(int $type, string $test_name): string {
+ protected static function getTestKey(int $type, string $test_name): string {
switch ($type) {
case HTTPSTEP_ITEM_TYPE_IN:
return 'web.test.in['.quoteItemKeyParam($test_name).',,bps]';
@@ -1295,7 +1734,7 @@ class CHttpTestManager {
*
* @return string
*/
- protected function getTestName(int $type, string $test_name): string {
+ private static function getTestName(int $type, string $test_name): string {
switch ($type) {
case HTTPSTEP_ITEM_TYPE_IN:
return 'Download speed for scenario "'.$test_name.'".';
@@ -1317,7 +1756,7 @@ class CHttpTestManager {
*
* @return string
*/
- protected function getStepKey(int $type, string $test_name, string $step_name): string {
+ private static function getStepKey(int $type, string $test_name, string $step_name): string {
switch ($type) {
case HTTPSTEP_ITEM_TYPE_IN:
return 'web.test.in['.quoteItemKeyParam($test_name).','.quoteItemKeyParam($step_name).',bps]';
@@ -1339,7 +1778,7 @@ class CHttpTestManager {
*
* @return string
*/
- protected function getStepName(int $type, string $test_name, string $step_name): string {
+ private static function getStepName(int $type, string $test_name, string $step_name): string {
switch ($type) {
case HTTPSTEP_ITEM_TYPE_IN:
return 'Download speed for step "'.$step_name.'" of scenario "'.$test_name.'".';
@@ -1405,98 +1844,4 @@ class CHttpTestManager {
return $data;
}
-
- /**
- * Record web scenario tags into database.
- *
- * @static
- *
- * @param array $http_tests
- * @param array $http_tests[]['tags']
- * @param string $http_tests[]['tags'][]['tag']
- * @param string $http_tests[]['tags'][]['value']
- * @param string $http_tests[]['httptestid']
- */
- protected static function createHttpTestTags(array $http_tests): void {
- $new_tags = [];
- foreach ($http_tests as $http_test) {
- if (!array_key_exists('tags', $http_test)) {
- continue;
- }
-
- foreach ($http_test['tags'] as $tag) {
- $new_tags[] = $tag + ['httptestid' => $http_test['httptestid']];
- }
- }
-
- if ($new_tags) {
- DB::insert('httptest_tag', $new_tags);
- }
- }
-
- /**
- * Update web scenario tags.
- *
- * @static
- *
- * @param array $http_tests
- * @param string $http_tests[]['httptestid']
- * @param array $http_tests[]['tags']
- * @param string $http_tests[]['tags'][]['tag']
- * @param string $http_tests[]['tags'][]['value']
- */
- protected static function updateHttpTestTags(array $http_tests): void {
- $http_tests = zbx_toHash($http_tests, 'httptestid');
-
- // Select tags from database.
- $db_httptest_tags_raw = DB::select('httptest_tag', [
- 'output' => ['httptesttagid', 'httptestid', 'tag', 'value'],
- 'filter' => ['httptestid' => array_column($http_tests, 'httptestid')]
- ]);
-
- $db_httptest_tags = [];
- foreach ($db_httptest_tags_raw as $tag) {
- $db_httptest_tags[$tag['httptestid']][] = $tag;
- }
-
- // Find which tags must be added/deleted.
- $del_tagids = [];
- foreach ($db_httptest_tags as $httptestid => $db_tags) {
- if (!array_key_exists('tags', $http_tests[$httptestid])) {
- continue;
- }
-
- foreach ($db_tags as $del_tag_key => $tag_delete) {
- foreach ($http_tests[$httptestid]['tags'] as $new_tag_key => $tag_add) {
- if ($tag_delete['tag'] === $tag_add['tag'] && $tag_delete['value'] === $tag_add['value']) {
- unset($db_tags[$del_tag_key], $http_tests[$httptestid]['tags'][$new_tag_key]);
- continue 2;
- }
- }
- }
-
- if ($db_tags) {
- $del_tagids = array_merge($del_tagids, array_column($db_tags, 'httptesttagid'));
- }
- }
-
- $new_tags = [];
- foreach ($http_tests as $httptestid => $http_test) {
- if (!array_key_exists('tags', $http_test)) {
- continue;
- }
-
- foreach ($http_test['tags'] as $tag) {
- $tag['httptestid'] = $httptestid;
- $new_tags[] = $tag;
- }
- }
-
- if ($del_tagids) {
- DB::delete('httptest_tag', ['httptesttagid' => $del_tagids]);
- }
- if ($new_tags) {
- DB::insert('httptest_tag', $new_tags);
- }
- }
}
diff --git a/ui/include/classes/api/managers/CItemManager.php b/ui/include/classes/api/managers/CItemManager.php
deleted file mode 100644
index 959b60d8bde..00000000000
--- a/ui/include/classes/api/managers/CItemManager.php
+++ /dev/null
@@ -1,262 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Class to perform low level item related actions.
- */
-class CItemManager {
-
- /**
- * Deletes items and related entities without permission check.
- *
- * @param array $itemids
- */
- public static function delete(array $itemids) {
- global $DB;
-
- $del_itemids = [];
- $del_ruleids = [];
- $del_item_prototypeids = [];
-
- // Selecting all inherited items.
- $parent_itemids = array_flip($itemids);
- do {
- $db_items = DBselect(
- 'SELECT i.itemid FROM items i WHERE '.dbConditionInt('i.templateid', array_keys($parent_itemids))
- );
-
- $del_itemids += $parent_itemids;
- $parent_itemids = [];
-
- while ($db_item = DBfetch($db_items)) {
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $parent_itemids[$db_item['itemid']] = true;
- }
- }
- } while ($parent_itemids);
-
- // Selecting all dependent items.
- // Note: We are not separating normal from discovered items at this point.
- $dep_itemids = [
- ZBX_FLAG_DISCOVERY_NORMAL => $del_itemids,
- ZBX_FLAG_DISCOVERY_RULE => [],
- ZBX_FLAG_DISCOVERY_CREATED => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
-
- do {
- $db_items = DBselect(
- 'SELECT i.itemid,i.flags'.
- ' FROM items i'.
- ' WHERE i.type='.ITEM_TYPE_DEPENDENT.
- ' AND '.dbConditionInt('i.master_itemid',
- array_keys($dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL]
- + $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED]
- + $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE]
- )
- )
- );
-
- $dep_itemids = [
- ZBX_FLAG_DISCOVERY_NORMAL => [],
- ZBX_FLAG_DISCOVERY_RULE => [],
- ZBX_FLAG_DISCOVERY_CREATED => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
-
- while ($db_item = DBfetch($db_items)) {
- switch ($db_item['flags']) {
- case ZBX_FLAG_DISCOVERY_NORMAL:
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL][$db_item['itemid']] = true;
- }
- break;
-
- case ZBX_FLAG_DISCOVERY_RULE:
- $dep_itemids[ZBX_FLAG_DISCOVERY_RULE][$db_item['itemid']] = true;
- break;
-
- case ZBX_FLAG_DISCOVERY_CREATED:
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED][$db_item['itemid']] = true;
- }
- break;
-
- case ZBX_FLAG_DISCOVERY_PROTOTYPE:
- $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE][$db_item['itemid']] = true;
- break;
- }
- }
-
- $del_itemids += $dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL];
- $del_itemids += $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED];
- $del_ruleids += $dep_itemids[ZBX_FLAG_DISCOVERY_RULE];
- $del_item_prototypeids += $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE];
-
- } while ($dep_itemids[ZBX_FLAG_DISCOVERY_NORMAL]
- || $dep_itemids[ZBX_FLAG_DISCOVERY_CREATED]
- || $dep_itemids[ZBX_FLAG_DISCOVERY_PROTOTYPE]
- );
-
- $del_itemids = array_keys($del_itemids);
-
- if ($del_ruleids) {
- CDiscoveryRuleManager::delete(array_keys($del_ruleids));
- }
-
- if ($del_item_prototypeids) {
- CItemPrototypeManager::delete(array_keys($del_item_prototypeids));
- }
-
- // Deleting graphs and graph prototypes, which will remain without items.
- $db_graphs = DBselect(
- 'SELECT DISTINCT gi.graphid'.
- ' FROM graphs_items gi'.
- ' WHERE '.dbConditionInt('gi.itemid', $del_itemids).
- ' AND NOT EXISTS ('.
- 'SELECT NULL'.
- ' FROM graphs_items gii'.
- ' WHERE gii.graphid=gi.graphid'.
- ' AND '.dbConditionInt('gii.itemid', $del_itemids, true).
- ')'
- );
-
- $del_graphids = [];
-
- while ($db_graph = DBfetch($db_graphs)) {
- $del_graphids[] = $db_graph['graphid'];
- }
-
- if ($del_graphids) {
- CGraphManager::delete($del_graphids);
- }
-
- // Cleanup ymin_itemid and ymax_itemid fields for graphs and graph prototypes.
- DB::update('graphs', [
- 'values' => [
- 'ymin_type' => GRAPH_YAXIS_TYPE_CALCULATED,
- 'ymin_itemid' => null
- ],
- 'where' => ['ymin_itemid' => $del_itemids]
- ]);
-
- DB::update('graphs', [
- 'values' => [
- 'ymax_type' => GRAPH_YAXIS_TYPE_CALCULATED,
- 'ymax_itemid' => null
- ],
- 'where' => ['ymax_itemid' => $del_itemids]
- ]);
-
- // Deleting triggers and trigger prototypes.
- $db_triggers = DBselect(
- 'SELECT DISTINCT t.triggerid,t.flags'.
- ' FROM triggers t,functions f'.
- ' WHERE t.triggerid=f.triggerid'.
- ' AND '.dbConditionInt('f.itemid', $del_itemids)
- );
-
- $del_triggerids = [
- ZBX_FLAG_DISCOVERY_NORMAL => [],
- ZBX_FLAG_DISCOVERY_CREATED => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
-
- while ($db_trigger = DBfetch($db_triggers)) {
- $del_triggerids[$db_trigger['flags']][] = $db_trigger['triggerid'];
- }
-
- if ($del_triggerids[ZBX_FLAG_DISCOVERY_NORMAL] || $del_triggerids[ZBX_FLAG_DISCOVERY_CREATED]) {
- CTriggerManager::delete(array_merge(
- $del_triggerids[ZBX_FLAG_DISCOVERY_NORMAL],
- $del_triggerids[ZBX_FLAG_DISCOVERY_CREATED]
- ));
- }
-
- if ($del_triggerids[ZBX_FLAG_DISCOVERY_PROTOTYPE]) {
- CTriggerPrototypeManager::delete($del_triggerids[ZBX_FLAG_DISCOVERY_PROTOTYPE]);
- }
-
- DB::delete('profiles', [
- 'idx' => 'web.favorite.graphids',
- 'source' => 'itemid',
- 'value_id' => $del_itemids
- ]);
-
- $table_names = ['events'];
-
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_MODE) != 0) {
- array_push($table_names, 'history', 'history_str', 'history_uint', 'history_log', 'history_text');
- }
-
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_MODE) != 0) {
- array_push($table_names,'trends', 'trends_uint');
- }
-
- if ($DB['TYPE'] === ZBX_DB_POSTGRESQL) {
- if (CHousekeepingHelper::get(CHousekeepingHelper::DB_EXTENSION) === ZBX_DB_EXTENSION_TIMESCALEDB) {
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_MODE) != 0
- && CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_GLOBAL) == 1) {
- $table_names = array_diff($table_names,
- ['history', 'history_str', 'history_uint', 'history_log', 'history_text']
- );
- }
-
- if (CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_MODE) != 0
- && CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_GLOBAL) == 1) {
- $table_names = array_diff($table_names, ['trends', 'trends_uint']);
- }
- }
- }
-
- $ins_housekeeper = [];
-
- foreach ($del_itemids as $del_itemid) {
- foreach ($table_names as $table_name) {
- $ins_housekeeper[] = [
- 'tablename' => $table_name,
- 'field' => 'itemid',
- 'value' => $del_itemid
- ];
-
- if (count($ins_housekeeper) == ZBX_DB_MAX_INSERTS) {
- DB::insertBatch('housekeeper', $ins_housekeeper);
- $ins_housekeeper = [];
- }
- }
- }
-
- if ($ins_housekeeper) {
- DB::insertBatch('housekeeper', $ins_housekeeper);
- }
-
- DB::delete('httpstepitem', ['itemid' => $del_itemids]);
- DB::delete('httptestitem', ['itemid' => $del_itemids]);
-
- DB::delete('item_tag', ['itemid' => $del_itemids]);
- DB::delete('item_preproc', ['itemid' => $del_itemids]);
- DB::update('items', [
- 'values' => ['templateid' => 0, 'master_itemid' => 0],
- 'where' => ['itemid' => $del_itemids]
- ]);
- DB::delete('items', ['itemid' => $del_itemids]);
- }
-}
diff --git a/ui/include/classes/api/managers/CItemPrototypeManager.php b/ui/include/classes/api/managers/CItemPrototypeManager.php
deleted file mode 100644
index 8741d30fbf5..00000000000
--- a/ui/include/classes/api/managers/CItemPrototypeManager.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Class to perform low level item related actions.
- */
-class CItemPrototypeManager {
-
- /**
- * Deletes item prototypes and related entities without permission check.
- *
- * @param array $itemids
- */
- public static function delete(array $itemids) {
- $del_itemids = [];
-
- // Selecting all inherited items.
- $parent_itemids = array_flip($itemids);
- do {
- $db_items = DBselect(
- 'SELECT i.itemid FROM items i WHERE '.dbConditionInt('i.templateid', array_keys($parent_itemids))
- );
-
- $del_itemids += $parent_itemids;
- $parent_itemids = [];
-
- while ($db_item = DBfetch($db_items)) {
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $parent_itemids[$db_item['itemid']] = true;
- }
- }
- } while ($parent_itemids);
-
- // Selecting all dependent items.
- $dep_itemids = $del_itemids;
- $del_itemids = [];
-
- do {
- $db_items = DBselect(
- 'SELECT i.itemid'.
- ' FROM items i'.
- ' WHERE i.type='.ITEM_TYPE_DEPENDENT.
- ' AND '.dbConditionInt('i.master_itemid', array_keys($dep_itemids))
- );
-
- $del_itemids += $dep_itemids;
- $dep_itemids = [];
-
- while ($db_item = DBfetch($db_items)) {
- if (!array_key_exists($db_item['itemid'], $del_itemids)) {
- $dep_itemids[$db_item['itemid']] = true;
- }
- }
- } while ($dep_itemids);
-
- $del_itemids = array_keys($del_itemids);
-
- // Lock item prototypes before delete to prevent server from adding new LLD elements.
- DBselect(
- 'SELECT NULL'.
- ' FROM items i'.
- ' WHERE '.dbConditionInt('i.itemid', $del_itemids).
- ' FOR UPDATE'
- );
-
- // Deleting graph prototypes, which will remain without item prototypes.
- $db_graphs = DBselect(
- 'SELECT DISTINCT gi.graphid'.
- ' FROM graphs_items gi'.
- ' WHERE '.dbConditionInt('gi.itemid', $del_itemids).
- ' AND NOT EXISTS ('.
- 'SELECT NULL'.
- ' FROM graphs_items gii,items i'.
- ' WHERE gi.graphid=gii.graphid'.
- ' AND gii.itemid=i.itemid'.
- ' AND '.dbConditionInt('gii.itemid', $del_itemids, true).
- ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_PROTOTYPE]).
- ')'
- );
-
- $del_graphids = [];
-
- while ($db_graph = DBfetch($db_graphs)) {
- $del_graphids[] = $db_graph['graphid'];
- }
-
- if ($del_graphids) {
- CGraphPrototypeManager::delete($del_graphids);
- }
-
- // Cleanup ymin_itemid and ymax_itemid fields for graphs and graph prototypes.
- DB::update('graphs', [
- 'values' => [
- 'ymin_type' => GRAPH_YAXIS_TYPE_CALCULATED,
- 'ymin_itemid' => null
- ],
- 'where' => ['ymin_itemid' => $del_itemids]
- ]);
-
- DB::update('graphs', [
- 'values' => [
- 'ymax_type' => GRAPH_YAXIS_TYPE_CALCULATED,
- 'ymax_itemid' => null
- ],
- 'where' => ['ymax_itemid' => $del_itemids]
- ]);
-
- // Deleting discovered items.
- $del_discovered_itemids = DBfetchColumn(DBselect(
- 'SELECT id.itemid FROM item_discovery id WHERE '.dbConditionInt('id.parent_itemid', $del_itemids)
- ), 'itemid');
-
- if ($del_discovered_itemids) {
- CItemManager::delete($del_discovered_itemids);
- }
-
- // Deleting trigger prototypes.
- $del_triggerids = DBfetchColumn(DBselect(
- 'SELECT DISTINCT f.triggerid'.
- ' FROM functions f'.
- ' WHERE '.dbConditionInt('f.itemid', $del_itemids)
- ), 'triggerid');
-
- if ($del_triggerids) {
- CTriggerPrototypeManager::delete($del_triggerids);
- }
-
- DB::delete('item_tag', ['itemid' => $del_itemids]);
- DB::delete('item_preproc', ['itemid' => $del_itemids]);
- DB::update('items', [
- 'values' => ['templateid' => 0, 'master_itemid' => 0],
- 'where' => ['itemid' => $del_itemids]
- ]);
- DB::delete('items', ['itemid' => $del_itemids]);
- }
-}
diff --git a/ui/include/classes/api/services/CConfiguration.php b/ui/include/classes/api/services/CConfiguration.php
index 7e6953e79cb..fe3f85c7f23 100644
--- a/ui/include/classes/api/services/CConfiguration.php
+++ b/ui/include/classes/api/services/CConfiguration.php
@@ -209,7 +209,7 @@ class CConfiguration extends CApiService {
->setStrict(true)
->validate($data, '/');
- foreach (['1.0', '2.0', '3.0', '3.2', '3.4', '4.0', '4.2', '4.4', '5.0', '5.2', '5.4', '6.0'] as $version) {
+ foreach ($import_converter_factory::getSequentialVersions() as $version) {
if ($data['zabbix_export']['version'] !== $version) {
continue;
}
@@ -279,7 +279,7 @@ class CConfiguration extends CApiService {
->setPreview(true)
->validate($data, '/');
- foreach (['1.0', '2.0', '3.0', '3.2', '3.4', '4.0', '4.2', '4.4', '5.0', '5.2', '5.4', '6.0'] as $version) {
+ foreach ($import_converter_factory::getSequentialVersions() as $version) {
if ($data['zabbix_export']['version'] !== $version) {
continue;
}
diff --git a/ui/include/classes/api/services/CDiscoveryRule.php b/ui/include/classes/api/services/CDiscoveryRule.php
index 4a2b123e38a..55bd23e9044 100644
--- a/ui/include/classes/api/services/CDiscoveryRule.php
+++ b/ui/include/classes/api/services/CDiscoveryRule.php
@@ -22,7 +22,7 @@
/**
* Class containing methods for operations with discovery rules.
*/
-class CDiscoveryRule extends CItemGeneral {
+class CDiscoveryRule extends CItemGeneralOld {
public const ACCESS_RULES = parent::ACCESS_RULES + [
'copy' => ['min_user_type' => USER_TYPE_ZABBIX_ADMIN]
@@ -712,6 +712,77 @@ class CDiscoveryRule extends CItemGeneral {
}
/**
+ * @param array $templateids
+ * @param array|null $hostids
+ */
+ public static function unlinkTemplateObjects(array $templateids, array $hostids = null): void {
+ $hostids_condition = $hostids ? ' AND '.dbConditionId('ii.hostid', $hostids) : '';
+
+ $result = DBselect(
+ 'SELECT ii.itemid,h.status AS host_status'.
+ ' FROM items i,items ii,hosts h'.
+ ' WHERE i.itemid=ii.templateid'.
+ ' AND ii.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.hostid', $templateids).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_RULE]).
+ $hostids_condition
+ );
+
+ $upd_items = [];
+ $ruleids = [];
+
+ while ($row = DBfetch($result)) {
+ $upd_item = [
+ 'templateid' => 0,
+ 'valuemapid' => 0
+ ];
+
+ if ($row['host_status'] == HOST_STATUS_TEMPLATE) {
+ $upd_item += ['uuid' => generateUuidV4()];
+ }
+
+ $upd_items[] = [
+ 'values' => $upd_item,
+ 'where' => ['itemid' => $row['itemid']]
+ ];
+
+ $ruleids[] = $row['itemid'];
+ }
+
+ if ($upd_items) {
+ DB::update('items', $upd_items);
+
+ /*
+ * TODO: The trigger prototypes and graphs also should be updated here when new audit log will be added for
+ * them.
+ */
+ CItemPrototype::unlinkTemplateObjects($ruleids);
+ CHostPrototype::unlinkTemplateObjects($ruleids);
+ }
+ }
+
+ /**
+ * @param array $templateids
+ * @param array|null $hostids
+ */
+ public static function clearTemplateObjects(array $templateids, array $hostids = null): void {
+ $hostids_condition = $hostids ? ' AND '.dbConditionId('ii.hostid', $hostids) : '';
+
+ $ruleids = DBfetchColumn(DBselect(
+ 'SELECT ii.itemid'.
+ ' FROM items i,items ii'.
+ ' WHERE i.itemid=ii.templateid'.
+ ' AND '.dbConditionId('i.hostid', $templateids).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_RULE]).
+ $hostids_condition
+ ), 'itemid');
+
+ if ($ruleids) {
+ CDiscoveryRuleManager::delete($ruleids);
+ }
+ }
+
+ /**
* Copies all of the triggers from the source discovery to the target discovery rule.
*
* @param array $src_discovery The source discovery rule to copy from.
@@ -2124,14 +2195,14 @@ class CDiscoveryRule extends CItemGeneral {
// fetch source and destination hosts
$hosts = API::Host()->get([
- 'hostids' => [$srcDiscovery['hostid'], $hostid],
'output' => ['hostid', 'host', 'name', 'status'],
- 'selectInterfaces' => API_OUTPUT_EXTEND,
+ 'selectInterfaces' => ['interfaceid', 'main', 'type', 'useip', 'ip', 'dns', 'port', 'details'],
+ 'hostids' => [$srcDiscovery['hostid'], $hostid],
'templated_hosts' => true,
'preservekeys' => true
]);
- $srcHost = $hosts[$srcDiscovery['hostid']];
- $dstHost = $hosts[$hostid];
+ $src_host = $hosts[$srcDiscovery['hostid']];
+ $dst_host = $hosts[$hostid];
$dstDiscovery = $srcDiscovery;
$dstDiscovery['hostid'] = $hostid;
@@ -2163,9 +2234,9 @@ class CDiscoveryRule extends CItemGeneral {
}
// if this is a plain host, map discovery interfaces
- if ($srcHost['status'] != HOST_STATUS_TEMPLATE) {
+ if ($src_host['status'] != HOST_STATUS_TEMPLATE) {
// find a matching interface
- $interface = self::findInterfaceForItem($dstDiscovery['type'], $dstHost['interfaces']);
+ $interface = self::findInterfaceForItem($dstDiscovery['type'], $dst_host['interfaces']);
if ($interface) {
$dstDiscovery['interfaceid'] = $interface['interfaceid'];
}
@@ -2173,7 +2244,7 @@ class CDiscoveryRule extends CItemGeneral {
elseif ($interface !== false) {
self::exception(ZBX_API_ERROR_PARAMETERS, _s(
'Cannot find host interface on "%1$s" for item key "%2$s".',
- $dstHost['name'],
+ $dst_host['name'],
$dstDiscovery['key_']
));
}
@@ -2203,22 +2274,21 @@ class CDiscoveryRule extends CItemGeneral {
$dstDiscovery['itemid'] = $newDiscovery['itemids'][0];
// copy prototypes
- $new_prototypeids = $this->copyItemPrototypes($srcDiscovery, $dstDiscovery, $dstHost);
+ $this->copyItemPrototypes($srcDiscovery['itemid'], $src_host, $dstDiscovery['itemid'], $dst_host);
- // if there were prototypes defined, clone everything else
- if ($new_prototypeids) {
- // fetch new prototypes
- $dstDiscovery['items'] = API::ItemPrototype()->get([
- 'output' => ['itemid', 'key_'],
- 'itemids' => $new_prototypeids,
- 'preservekeys' => true
- ]);
+ // fetch new prototypes
+ $dstDiscovery['items'] = API::ItemPrototype()->get([
+ 'output' => ['itemid', 'key_'],
+ 'discoveryids' => $dstDiscovery['itemid'],
+ 'preservekeys' => true
+ ]);
+ if ($dstDiscovery['items']) {
// copy graphs
$this->copyGraphPrototypes($srcDiscovery, $dstDiscovery);
// copy triggers
- $this->copyTriggerPrototypes($srcDiscovery, $srcHost, $dstHost);
+ $this->copyTriggerPrototypes($srcDiscovery, $src_host, $dst_host);
}
// copy host prototypes
@@ -2228,203 +2298,256 @@ class CDiscoveryRule extends CItemGeneral {
}
/**
- * Copies all of the item prototypes from the source discovery to the target
- * discovery rule. Return array of created item prototype ids.
+ * Create copies of items prototypes from the given source LLD rule to the given destination host or template.
*
- * @throws APIException if prototype saving fails
- *
- * @param array $srcDiscovery The source discovery rule to copy from
- * @param array $dstDiscovery The target discovery rule to copy to
- * @param array $dstHost The target host to copy the discovery rule to
+ * @param string $src_ruleid
+ * @param array $src_host
+ * @param array $src_host['interfaces']
+ * @param string $dst_ruleid
+ * @param array $dst_host
+ * @param string $dst_host['hostid']
+ * @param string $dst_host['host']
+ * @param array $dst_host['interfaces']
*
- * @return array
+ * @throws APIException
*/
- protected function copyItemPrototypes(array $srcDiscovery, array $dstDiscovery, array $dstHost) {
- $item_prototypes = API::ItemPrototype()->get([
- 'output' => ['itemid', 'type', 'snmp_oid', 'name', 'key_', 'delay', 'history', 'trends', 'status',
- 'value_type', 'trapper_hosts', 'units', 'logtimefmt', 'valuemapid', 'params', 'ipmi_sensor', 'authtype',
- 'username', 'password', 'publickey', 'privatekey', 'interfaceid', 'port', 'description', 'jmx_endpoint',
- 'master_itemid', 'templateid', 'url', 'query_fields', 'timeout', 'posts', 'status_codes',
- 'follow_redirects', 'post_type', 'http_proxy', 'headers', 'retrieve_mode', 'request_method',
- 'output_format', 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password', 'verify_peer', 'verify_host',
- 'allow_traps', 'discover', 'parameters'
+ private static function copyItemPrototypes(string $src_ruleid, array $src_host, string $dst_ruleid,
+ array $dst_host): void {
+ $src_items = API::ItemPrototype()->get([
+ 'output' => ['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'logtimefmt', 'description', 'status', 'discover',
+
+ // Type fields.
+ // The fields used for multiple item types.
+ 'interfaceid', 'authtype', 'username', 'password', 'params', 'timeout', 'delay', 'trapper_hosts',
+
+ // Dependent item type specific fields.
+ 'master_itemid',
+
+ // HTTP Agent item type specific fields.
+ 'url', 'query_fields', 'request_method', 'post_type', 'posts',
+ 'headers', 'status_codes', 'follow_redirects', 'retrieve_mode', 'output_format', 'http_proxy',
+ 'verify_peer', 'verify_host', 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password', 'allow_traps',
+
+ // IPMI item type specific fields.
+ 'ipmi_sensor',
+
+ // JMX item type specific fields.
+ 'jmx_endpoint',
+
+ // Script item type specific fields.
+ 'parameters',
+
+ // SNMP item type specific fields.
+ 'snmp_oid',
+
+ // SSH item type specific fields.
+ 'publickey', 'privatekey'
],
'selectPreprocessing' => ['type', 'params', 'error_handler', 'error_handler_params'],
'selectTags' => ['tag', 'value'],
- 'selectValueMap' => ['name'],
- 'discoveryids' => $srcDiscovery['itemid'],
+ 'discoveryids' => $src_ruleid,
'preservekeys' => true
]);
- $new_itemids = [];
- $itemkey_to_id = [];
- $create_items = [];
- $src_valuemap_names = [];
- $valuemap_map = [];
- foreach ($item_prototypes as $item_prototype) {
- if ($item_prototype['valuemap']) {
- $src_valuemap_names[] = $item_prototype['valuemap']['name'];
- }
+ if (!$src_items) {
+ return;
}
- if ($src_valuemap_names) {
- $valuemap_map = array_column(API::ValueMap()->get([
- 'output' => ['valuemapid', 'name'],
- 'hostids' => $dstHost['hostid'],
- 'filter' => ['name' => $src_valuemap_names]
- ]), 'valuemapid', 'name');
- }
+ $src_itemids = array_fill_keys(array_keys($src_items), true);
+ $src_valuemapids = [];
+ $src_interfaceids = [];
+ $src_dep_items = [];
+ $dep_itemids = [];
+
+ foreach ($src_items as $itemid => $item) {
+ if ($item['valuemapid'] != 0) {
+ $src_valuemapids[$item['valuemapid']] = true;
+ }
- if ($item_prototypes) {
- $create_order = [];
- $src_itemid_to_key = [];
- $unresolved_master_itemids = [];
+ if ($item['interfaceid'] != 0) {
+ $src_interfaceids[$item['interfaceid']] = true;
+ }
+
+ if ($item['type'] == ITEM_TYPE_DEPENDENT) {
+ if (array_key_exists($item['master_itemid'], $src_itemids)) {
+ $src_dep_items[$item['master_itemid']][] = $item;
- // Gather all master item IDs and check if master item IDs already belong to item prototypes.
- foreach ($item_prototypes as $itemid => $item_prototype) {
- if ($item_prototype['type'] == ITEM_TYPE_DEPENDENT
- && !array_key_exists($item_prototype['master_itemid'], $item_prototypes)) {
- $unresolved_master_itemids[$item_prototype['master_itemid']] = true;
+ unset($src_items[$itemid]);
+ }
+ else {
+ $dep_itemids[$item['master_itemid']][] = $item['itemid'];
}
}
+ }
- $items = [];
+ $valuemap_links = [];
- // It's possible that master items are non-prototype items.
- if ($unresolved_master_itemids) {
- $items = API::Item()->get([
- 'output' => ['itemid'],
- 'itemids' => array_keys($unresolved_master_itemids),
- 'webitems' => true,
- 'filter' => ['flags' => ZBX_FLAG_DISCOVERY_NORMAL],
- 'preservekeys' => true
- ]);
+ if ($src_valuemapids) {
+ $src_valuemaps = API::ValueMap()->get([
+ 'output' => ['valuemapid', 'name'],
+ 'valuemapids' => array_keys($src_valuemapids)
+ ]);
- foreach ($items as $item) {
- if (array_key_exists($item['itemid'], $unresolved_master_itemids)) {
- unset($unresolved_master_itemids[$item['itemid']]);
+ $dst_valuemaps = API::ValueMap()->get([
+ 'output' => ['valuemapid', 'hostid', 'name'],
+ 'hostids' => $dst_host['hostid'],
+ 'filter' => ['name' => array_unique(array_column($src_valuemaps, 'name'))]
+ ]);
+
+ $dst_valuemapids = [];
+
+ foreach ($dst_valuemaps as $dst_valuemap) {
+ $dst_valuemapids[$dst_valuemap['name']][$dst_valuemap['hostid']] = $dst_valuemap['valuemapid'];
+ }
+
+ foreach ($src_valuemaps as $src_valuemap) {
+ if (array_key_exists($src_valuemap['name'], $dst_valuemapids)) {
+ foreach ($dst_valuemapids[$src_valuemap['name']] as $dst_hostid => $dst_valuemapid) {
+ $valuemap_links[$src_valuemap['valuemapid']][$dst_hostid] = $dst_valuemapid;
}
}
+ }
+ }
- // If still there are IDs left, there's nothing more we can do.
- if ($unresolved_master_itemids) {
- reset($unresolved_master_itemids);
- self::exception(ZBX_API_ERROR_PERMISSIONS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _s('Item "%1$s" does not exist or you have no access to this item',
- key($unresolved_master_itemids)
- )));
+ $interface_links = [];
+ $dst_interfaceids = [];
+
+ if ($src_interfaceids) {
+ $src_interfaces = [];
+
+ foreach ($src_host['interfaces'] as $src_interface) {
+ if (array_key_exists($src_interface['interfaceid'], $src_interfaceids)) {
+ $src_interfaces[$src_interface['interfaceid']] =
+ array_diff_key($src_interface, array_flip(['interfaceid']));
}
}
- foreach ($item_prototypes as $itemid => $item_prototype) {
- $dependency_level = 0;
- $master_item_prototype = $item_prototype;
- $src_itemid_to_key[$itemid] = $item_prototype['key_'];
+ foreach ($dst_host['interfaces'] as $dst_interface) {
+ $dst_interfaceid = $dst_interface['interfaceid'];
+ unset($dst_interface['interfaceid']);
- while ($master_item_prototype['type'] == ITEM_TYPE_DEPENDENT) {
- if (array_key_exists($master_item_prototype['master_itemid'], $item_prototypes)) {
- $master_item_prototype = $item_prototypes[$master_item_prototype['master_itemid']];
- ++$dependency_level;
- }
- else {
- break;
+ foreach ($src_interfaces as $src_interfaceid => $src_interface) {
+ if ($src_interface == $dst_interface) {
+ $interface_links[$src_interfaceid][$dst_host['hostid']] = $dst_interfaceid;
}
}
- $create_order[$itemid] = $dependency_level;
+ if ($dst_interface['main'] == INTERFACE_PRIMARY) {
+ $dst_interfaceids[$dst_host['hostid']][$dst_interface['type']] = $dst_interfaceid;
+ }
}
- asort($create_order);
+ }
- $current_dependency = reset($create_order);
+ $master_item_links = [];
- foreach ($create_order as $key => $dependency_level) {
- if ($current_dependency != $dependency_level && $create_items) {
- $current_dependency = $dependency_level;
- $created_itemids = API::ItemPrototype()->create($create_items);
+ if ($dep_itemids) {
+ $master_items = API::Item()->get([
+ 'output' => ['itemid', 'key_'],
+ 'itemids' => array_keys($dep_itemids)
+ ]);
- if (!$created_itemids) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Cannot clone item prototypes.'));
- }
+ $options = $dst_host['status'] == HOST_STATUS_TEMPLATE
+ ? ['templateids' => $dst_host['hostid']]
+ : ['hostids' => $dst_host['hostid']];
- $created_itemids = $created_itemids['itemids'];
- $new_itemids = array_merge($new_itemids, $created_itemids);
+ $dst_master_items = API::Item()->get([
+ 'output' => ['itemid', 'hostid', 'key_'],
+ 'filter' => ['key_' => array_unique(array_column($master_items, 'key_'))]
+ ] + $options);
- foreach ($create_items as $index => $created_item) {
- $itemkey_to_id[$created_item['key_']] = $created_itemids[$index];
- }
+ $dst_master_itemids = [];
- $create_items = [];
- }
+ foreach ($dst_master_items as $item) {
+ $dst_master_itemids[$item['hostid']][$item['key_']] = $item['itemid'];
+ }
- $item_prototype = $item_prototypes[$key];
- $item_prototype['ruleid'] = $dstDiscovery['itemid'];
- $item_prototype['hostid'] = $dstDiscovery['hostid'];
+ foreach ($master_items as $item) {
+ if (array_key_exists($dst_host['hostid'], $dst_master_itemids)
+ && array_key_exists($item['key_'], $dst_master_itemids[$dst_host['hostid']])) {
+ $master_item_links[$item['itemid']][$dst_host['hostid']] =
+ $dst_master_itemids[$dst_host['hostid']][$item['key_']];
+ }
+ else {
+ $src_itemid = reset($dep_itemids[$item['itemid']]);
- if ($item_prototype['valuemapid'] != 0) {
- $item_prototype['valuemapid'] = array_key_exists($item_prototype['valuemap']['name'], $valuemap_map)
- ? $valuemap_map[$item_prototype['valuemap']['name']]
- : 0;
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s(
+ 'Cannot copy item prototype with key "%1$s" without its master item with key "%2$s".',
+ $src_items[$src_itemid]['key_'], $item['key_']
+ ));
}
+ }
+ }
- // map prototype interfaces
- if ($dstHost['status'] != HOST_STATUS_TEMPLATE) {
- // find a matching interface
- $interface = self::findInterfaceForItem($item_prototype['type'], $dstHost['interfaces']);
- if ($interface) {
- $item_prototype['interfaceid'] = $interface['interfaceid'];
+ do {
+ $dst_items = [];
+
+ foreach ($src_items as $src_item) {
+ $dst_item = array_diff_key($src_item, array_flip(['itemid']));
+
+ if ($src_item['valuemapid'] != 0) {
+ if (array_key_exists($src_item['valuemapid'], $valuemap_links)
+ && array_key_exists($dst_host['hostid'], $valuemap_links[$src_item['valuemapid']])) {
+ $dst_item['valuemapid'] = $valuemap_links[$src_item['valuemapid']][$dst_host['hostid']];
}
- // no matching interface found, throw an error
- elseif ($interface !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s(
- 'Cannot find host interface on "%1$s" for item key "%2$s".',
- $dstHost['name'],
- $item_prototype['key_']
- ));
+ else {
+ $dst_item['valuemapid'] = 0;
}
}
- if (!$item_prototype['preprocessing']) {
- unset($item_prototype['preprocessing']);
- }
-
- if ($item_prototype['type'] == ITEM_TYPE_DEPENDENT) {
- $master_itemid = $item_prototype['master_itemid'];
+ $dst_item['interfaceid'] = 0;
- if (array_key_exists($master_itemid, $src_itemid_to_key)) {
- $src_item_key = $src_itemid_to_key[$master_itemid];
- $item_prototype['master_itemid'] = $itemkey_to_id[$src_item_key];
+ if ($src_item['interfaceid'] != 0) {
+ if (array_key_exists($src_item['interfaceid'], $interface_links)
+ && array_key_exists($dst_host['hostid'], $interface_links[$src_item['interfaceid']])) {
+ $dst_item['interfaceid'] = $interface_links[$src_item['interfaceid']][$dst_host['hostid']];
}
else {
- // It's a non-prototype item, so look for it on destination host.
- $dst_item = get_same_item_for_host($items[$master_itemid], $dstHost['hostid']);
-
- if (!$dst_item) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Cannot clone item prototypes.'));
+ $type = itemTypeInterface($src_item['type']);
+
+ if (in_array($type,
+ [INTERFACE_TYPE_AGENT, INTERFACE_TYPE_SNMP, INTERFACE_TYPE_JMX, INTERFACE_TYPE_IPMI]
+ )) {
+ if (array_key_exists($dst_host['hostid'], $dst_interfaceids)
+ && array_key_exists($type, $dst_interfaceids[$dst_host['hostid']])) {
+ $dst_item['interfaceid'] = $dst_interfaceids[$dst_host['hostid']][$type];
+ }
+ else {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s(
+ 'Cannot find host interface on "%1$s" for item prototype with key "%2$s".',
+ $dst_host['host'], $src_item['key_']
+ ));
+ }
}
-
- $item_prototype['master_itemid'] = $dst_item['itemid'];
}
}
- else {
- unset($item_prototype['master_itemid']);
+
+ if ($src_item['type'] == ITEM_TYPE_DEPENDENT) {
+ $dst_item['master_itemid'] = $master_item_links[$src_item['master_itemid']][$dst_host['hostid']];
}
- unset($item_prototype['templateid']);
- $create_items[] = $item_prototype;
+ $dst_items[] = ['hostid' => $dst_host['hostid'], 'ruleid' => $dst_ruleid] + $dst_item;
}
- if ($create_items) {
- $created_itemids = API::ItemPrototype()->create($create_items);
+ $response = API::ItemPrototype()->create($dst_items);
- if (!$created_itemids) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Cannot clone item prototypes.'));
- }
+ $_src_items = [];
+
+ if ($src_dep_items) {
+ foreach ($src_items as $src_item) {
+ $dst_itemid = array_shift($response['itemids']);
+
+ if (array_key_exists($src_item['itemid'], $src_dep_items)) {
+ $master_item_links[$src_item['itemid']][$dst_host['hostid']] = $dst_itemid;
- $new_itemids = array_merge($new_itemids, $created_itemids['itemids']);
+ $_src_items = array_merge($_src_items, $src_dep_items[$src_item['itemid']]);
+ unset($src_dep_items[$src_item['itemid']]);
+ }
+ }
}
- }
- return $new_itemids;
+ $src_items = $_src_items;
+ } while ($src_items);
}
/**
diff --git a/ui/include/classes/api/services/CHost.php b/ui/include/classes/api/services/CHost.php
index a5cb153d28b..cfe7b8f5e50 100644
--- a/ui/include/classes/api/services/CHost.php
+++ b/ui/include/classes/api/services/CHost.php
@@ -1479,24 +1479,29 @@ class CHost extends CHostGeneral {
}
// delete the items
- $del_items = API::Item()->get([
- 'output' => [],
- 'templateids' => $hostids,
- 'nopermissions' => true,
+ $db_items = DB::select('items', [
+ 'output' => ['itemid', 'name'],
+ 'filter' => [
+ 'hostid' => $hostids,
+ 'flags' => ZBX_FLAG_DISCOVERY_NORMAL,
+ 'type' => CItem::SUPPORTED_ITEM_TYPES
+ ],
'preservekeys' => true
]);
- if ($del_items) {
- CItemManager::delete(array_keys($del_items));
- }
- // delete web tests
- $delHttptests = [];
- $dbHttptests = get_httptests_by_hostid($hostids);
- while ($dbHttptest = DBfetch($dbHttptests)) {
- $delHttptests[$dbHttptest['httptestid']] = $dbHttptest['httptestid'];
+ if ($db_items) {
+ CItem::deleteForce($db_items);
}
- if (!empty($delHttptests)) {
- API::HttpTest()->delete($delHttptests, true);
+
+ // delete web scenarios
+ $db_httptests = DB::select('httptest', [
+ 'output' => ['httptestid', 'name'],
+ 'filter' => ['hostid' => $hostids],
+ 'preservekeys' => true
+ ]);
+
+ if ($db_httptests) {
+ CHttpTest::deleteForce($db_httptests);
}
// delete host from maps
diff --git a/ui/include/classes/api/services/CHostGeneral.php b/ui/include/classes/api/services/CHostGeneral.php
index da3954aae21..8de2ef3c2fb 100644
--- a/ui/include/classes/api/services/CHostGeneral.php
+++ b/ui/include/classes/api/services/CHostGeneral.php
@@ -415,7 +415,8 @@ abstract class CHostGeneral extends CHostBase {
* @param array|null $hostids
* @param bool $clear
*/
- protected static function unlinkTemplatesObjects(array $templateids, array $hostids = null, bool $clear = false): void {
+ protected static function unlinkTemplatesObjects(array $templateids, array $hostids = null,
+ bool $clear = false): void {
$flags = ($clear)
? [ZBX_FLAG_DISCOVERY_NORMAL, ZBX_FLAG_DISCOVERY_RULE]
: [ZBX_FLAG_DISCOVERY_NORMAL, ZBX_FLAG_DISCOVERY_RULE, ZBX_FLAG_DISCOVERY_PROTOTYPE];
@@ -584,220 +585,15 @@ abstract class CHostGeneral extends CHostBase {
}
}
- // items, discovery rules
- $upd_items = [
- ZBX_FLAG_DISCOVERY_NORMAL => [],
- ZBX_FLAG_DISCOVERY_RULE => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
- $parent_itemids = [];
- $item_prototypeids = [];
-
- $sqlFrom = ' items i1,items i2,hosts h';
- $sqlWhere = ' i2.itemid=i1.templateid'.
- ' AND '.dbConditionInt('i2.hostid', $templateids).
- ' AND '.dbConditionInt('i1.flags', $flags).
- ' AND h.hostid=i1.hostid';
-
- if (!is_null($hostids)) {
- $sqlWhere .= ' AND '.dbConditionInt('i1.hostid', $hostids);
- }
- $sql = 'SELECT DISTINCT i1.itemid,i1.flags,h.status as host_status,i1.type,i1.valuemapid'.
- ' FROM '.$sqlFrom.
- ' WHERE '.$sqlWhere;
-
- $dbItems = DBSelect($sql);
-
- while ($item = DBfetch($dbItems)) {
- if ($clear) {
- $upd_items[$item['flags']][$item['itemid']] = true;
- }
- else {
- $upd_item = ['templateid' => 0];
- if ($item['host_status'] == HOST_STATUS_TEMPLATE && $item['type'] != ITEM_TYPE_HTTPTEST) {
- $upd_item['uuid'] = generateUuidV4();
- }
-
- if ($item['valuemapid'] !== '0') {
- $upd_item['valuemapid'] = '0';
-
- if ($item['host_status'] == HOST_STATUS_TEMPLATE) {
- $parent_itemids[] = $item['itemid'];
- }
- elseif ($item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
- $item_prototypeids[] = $item['itemid'];
- }
- }
-
- $upd_items[$item['flags']][$item['itemid']] = [
- 'values' => $upd_item,
- 'where' => ['itemid' => $item['itemid']]
- ];
- }
- }
-
- if ($upd_items[ZBX_FLAG_DISCOVERY_RULE]) {
- if ($clear) {
- CDiscoveryRuleManager::delete(array_keys($upd_items[ZBX_FLAG_DISCOVERY_RULE]));
- }
- else {
- DB::update('items', $upd_items[ZBX_FLAG_DISCOVERY_RULE]);
- }
- }
-
- if ($upd_items[ZBX_FLAG_DISCOVERY_NORMAL]) {
- if ($clear) {
- CItemManager::delete(array_keys($upd_items[ZBX_FLAG_DISCOVERY_NORMAL]));
- }
- else {
- DB::update('items', $upd_items[ZBX_FLAG_DISCOVERY_NORMAL]);
- }
- }
-
- if ($upd_items[ZBX_FLAG_DISCOVERY_PROTOTYPE]) {
- if ($clear) {
- CItemPrototypeManager::delete(array_keys($upd_items[ZBX_FLAG_DISCOVERY_PROTOTYPE]));
- }
- else {
- DB::update('items', $upd_items[ZBX_FLAG_DISCOVERY_PROTOTYPE]);
- }
- }
-
- if ($parent_itemids) {
- $child_upd_items = [];
-
- while ($parent_itemids) {
- $result = DBselect(
- 'SELECT i.itemid,i.flags,h.status AS host_status'.
- ' FROM items i,hosts h'.
- ' WHERE i.hostid=h.hostid'.
- ' AND '.dbConditionId('i.templateid', $parent_itemids)
- );
-
- $parent_itemids = [];
-
- while ($row = DBfetch($result)) {
- $parent_itemids[] = $row['itemid'];
-
- $child_upd_items[] = [
- 'values' => ['valuemapid' => '0'],
- 'where' => ['itemid' => $row['itemid']]
- ];
-
- if (in_array($row['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])
- && $row['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
- $item_prototypeids[] = $row['itemid'];
- }
- }
- }
-
- if ($child_upd_items) {
- DB::update('items', $child_upd_items);
- }
- }
-
- if ($item_prototypeids) {
- $options = [
- 'output' => ['itemid'],
- 'filter' => ['parent_itemid' => $item_prototypeids],
- 'sortfield' => ['itemid'],
- 'sortorder' => [ZBX_SORT_DOWN]
- ];
- $result = DBselect(DB::makeSql('item_discovery', $options));
-
- $upd_discovered_items = [];
-
- while ($row = DBfetch($result)) {
- $upd_discovered_items[] = [
- 'values' => ['valuemapid' => '0'],
- 'where' => ['itemid' => $row['itemid']]
- ];
- }
-
- if ($upd_discovered_items) {
- DB::update('items', $upd_discovered_items);
- }
- }
-
- // host prototypes
- if (!$clear && $upd_items[ZBX_FLAG_DISCOVERY_RULE]) {
- $host_prototypes = DBSelect(
- 'SELECT DISTINCT h.hostid,h3.status as host_status'.
- ' FROM hosts h'.
- ' INNER JOIN host_discovery hd ON h.hostid=hd.hostid'.
- ' INNER JOIN hosts h2 ON h.templateid=h2.hostid'.
- ' INNER JOIN host_discovery hd2 ON h.hostid=hd.hostid'.
- ' INNER JOIN items i ON hd.parent_itemid=i.itemid'.
- ' INNER JOIN hosts h3 ON i.hostid=h3.hostid'.
- ' WHERE '.dbConditionInt('hd.parent_itemid', array_keys($upd_items[ZBX_FLAG_DISCOVERY_RULE]))
- );
-
- $upd_host_prototypes = [];
-
- while ($host_prototype = DBfetch($host_prototypes)) {
- $upd_host_prototype = ['templateid' => 0];
- if ($host_prototype['host_status'] == HOST_STATUS_TEMPLATE) {
- $upd_host_prototype['uuid'] = generateUuidV4();
- }
-
- $upd_host_prototypes[$host_prototype['hostid']] = [
- 'values' => $upd_host_prototype,
- 'where' => ['hostid' => $host_prototype['hostid']]
- ];
- }
-
- if ($upd_host_prototypes) {
- DB::update('hosts', $upd_host_prototypes);
- DB::update('group_prototype', [
- 'values' => ['templateid' => 0],
- 'where' => ['hostid' => array_keys($upd_host_prototypes)]
- ]);
- }
- }
-
- // http tests
- $upd_httptests = [];
-
- $sqlWhere = '';
- if ($hostids !== null) {
- $sqlWhere = ' AND '.dbConditionInt('ht1.hostid', $hostids);
- }
- $sql = 'SELECT DISTINCT ht1.httptestid,h.status as host_status'.
- ' FROM httptest ht1,httptest ht2,hosts h'.
- ' WHERE ht1.templateid=ht2.httptestid'.
- ' AND ht1.hostid=h.hostid'.
- ' AND '.dbConditionInt('ht2.hostid', $templateids).
- $sqlWhere;
-
- $httptests = DBSelect($sql);
-
- while ($httptest = DBfetch($httptests)) {
- if ($clear) {
- $upd_httptests[$httptest['httptestid']] = true;
- }
- else {
- $upd_httptest = ['templateid' => 0];
- if ($httptest['host_status'] == HOST_STATUS_TEMPLATE) {
- $upd_httptest['uuid'] = generateUuidV4();
- }
-
- $upd_httptests[$httptest['httptestid']] = [
- 'values' => $upd_httptest,
- 'where' => ['httptestid' => $httptest['httptestid']]
- ];
- }
+ if ($clear) {
+ CDiscoveryRule::clearTemplateObjects($templateids, $hostids);
+ CItem::clearTemplateObjects($templateids, $hostids);
+ CHttpTest::clearTemplateObjects($templateids, $hostids);
}
-
- if ($upd_httptests) {
- if ($clear) {
- $result = API::HttpTest()->delete(array_keys($upd_httptests), true);
- if (!$result) {
- self::exception(ZBX_API_ERROR_INTERNAL, _('Cannot unlink and clear Web scenarios.'));
- }
- }
- else {
- DB::update('httptest', $upd_httptests);
- }
+ else {
+ CDiscoveryRule::unlinkTemplateObjects($templateids, $hostids);
+ CItem::unlinkTemplateObjects($templateids, $hostids);
+ CHttpTest::unlinkTemplateObjects($templateids, $hostids);
}
}
@@ -819,11 +615,11 @@ abstract class CHostGeneral extends CHostBase {
Manager::HttpTest()->link($templateid, $hostids);
}
- API::Item()->syncTemplates($link_request);
+ CItem::linkTemplateObjects($templateids, $hostids);
$ruleids = API::DiscoveryRule()->syncTemplates($templateids, $hostids);
if ($ruleids) {
- API::ItemPrototype()->syncTemplates($link_request);
+ CItemPrototype::linkTemplateObjects($templateids, $hostids);
API::HostPrototype()->syncTemplates($ruleids, $hostids);
}
@@ -1052,11 +848,11 @@ abstract class CHostGeneral extends CHostBase {
}
foreach ($link_requests as $link_request) {
- API::Item()->syncTemplates($link_request);
+ CItem::linkTemplateObjects($link_request['templateids'], $link_request['hostids']);
$ruleids = API::DiscoveryRule()->syncTemplates($link_request['templateids'], $link_request['hostids']);
if ($ruleids) {
- API::ItemPrototype()->syncTemplates($link_request);
+ CItemPrototype::linkTemplateObjects($link_request['templateids'], $link_request['hostids']);
API::HostPrototype()->syncTemplates($ruleids, $link_request['hostids']);
}
}
@@ -1280,186 +1076,15 @@ abstract class CHostGeneral extends CHostBase {
}
/* }}} GRAPHS */
- /* ITEMS, DISCOVERY RULES {{{ */
- $upd_items = [
- ZBX_FLAG_DISCOVERY_NORMAL => [],
- ZBX_FLAG_DISCOVERY_RULE => [],
- ZBX_FLAG_DISCOVERY_PROTOTYPE => []
- ];
- $item_prototypeids = [];
-
- $sqlFrom = ' items i1,items i2,hosts h';
- $sqlWhere = ' i2.itemid=i1.templateid'.
- ' AND '.dbConditionInt('i2.hostid', $templateids).
- ' AND '.dbConditionInt('i1.flags', $flags).
- ' AND h.hostid=i1.hostid';
-
- if (!is_null($targetids)) {
- $sqlWhere .= ' AND '.dbConditionInt('i1.hostid', $targetids);
- }
- $sql = 'SELECT DISTINCT i1.itemid,i1.flags,h.status as host_status,i1.type,i1.valuemapid'.
- ' FROM '.$sqlFrom.
- ' WHERE '.$sqlWhere;
-
- $dbItems = DBSelect($sql);
-
- while ($item = DBfetch($dbItems)) {
- if ($clear) {
- $upd_items[$item['flags']][$item['itemid']] = true;
- }
- else {
- $upd_item = ['templateid' => 0];
- if ($item['host_status'] == HOST_STATUS_TEMPLATE && $item['type'] != ITEM_TYPE_HTTPTEST) {
- $upd_item['uuid'] = generateUuidV4();
- }
-
- if ($item['valuemapid'] !== '0') {
- $upd_item['valuemapid'] = '0';
-
- if (in_array($item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])
- && $item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
- $item_prototypeids[] = $item['itemid'];
- }
- }
-
- $upd_items[$item['flags']][$item['itemid']] = [
- 'values' => $upd_item,
- 'where' => ['itemid' => $item['itemid']]
- ];
- }
- }
-
- if ($upd_items[ZBX_FLAG_DISCOVERY_RULE]) {
- if ($clear) {
- CDiscoveryRuleManager::delete(array_keys($upd_items[ZBX_FLAG_DISCOVERY_RULE]));
- }
- else {
- DB::update('items', $upd_items[ZBX_FLAG_DISCOVERY_RULE]);
- }
- }
-
- if ($upd_items[ZBX_FLAG_DISCOVERY_NORMAL]) {
- if ($clear) {
- CItemManager::delete(array_keys($upd_items[ZBX_FLAG_DISCOVERY_NORMAL]));
- }
- else {
- DB::update('items', $upd_items[ZBX_FLAG_DISCOVERY_NORMAL]);
- }
- }
-
- if ($upd_items[ZBX_FLAG_DISCOVERY_PROTOTYPE]) {
- if ($clear) {
- CItemPrototypeManager::delete(array_keys($upd_items[ZBX_FLAG_DISCOVERY_PROTOTYPE]));
- }
- else {
- DB::update('items', $upd_items[ZBX_FLAG_DISCOVERY_PROTOTYPE]);
-
- if ($item_prototypeids) {
- $options = [
- 'output' => ['itemid'],
- 'filter' => ['parent_itemid' => $item_prototypeids],
- 'sortfield' => ['itemid'],
- 'sortorder' => [ZBX_SORT_DOWN]
- ];
- $result = DBselect(DB::makeSql('item_discovery', $options));
-
- $upd_discovered_items = [];
-
- while ($row = DBfetch($result)) {
- $upd_discovered_items[] = [
- 'values' => ['valuemapid' => '0'],
- 'where' => ['itemid' => $row['itemid']]
- ];
- }
-
- if ($upd_discovered_items) {
- DB::update('items', $upd_discovered_items);
- }
- }
- }
- }
- /* }}} ITEMS, DISCOVERY RULES */
-
- // host prototypes
- // we need only to unlink host prototypes. in case of unlink and clear they will be deleted together with LLD rules.
- if (!$clear && $upd_items[ZBX_FLAG_DISCOVERY_RULE]) {
- $host_prototypes = DBSelect(
- 'SELECT DISTINCT h.hostid,h3.status as host_status'.
- ' FROM hosts h'.
- ' INNER JOIN host_discovery hd ON h.hostid=hd.hostid'.
- ' INNER JOIN hosts h2 ON h.templateid=h2.hostid'.
- ' INNER JOIN host_discovery hd2 ON h.hostid=hd.hostid'.
- ' INNER JOIN items i ON hd.parent_itemid=i.itemid'.
- ' INNER JOIN hosts h3 ON i.hostid=h3.hostid'.
- ' WHERE '.dbConditionInt('hd.parent_itemid', array_keys($upd_items[ZBX_FLAG_DISCOVERY_RULE]))
- );
-
- $upd_host_prototypes = [];
-
- while ($host_prototype = DBfetch($host_prototypes)) {
- $upd_host_prototype = ['templateid' => 0];
- if ($host_prototype['host_status'] == HOST_STATUS_TEMPLATE) {
- $upd_host_prototype['uuid'] = generateUuidV4();
- }
-
- $upd_host_prototypes[$host_prototype['hostid']] = [
- 'values' => $upd_host_prototype,
- 'where' => ['hostid' => $host_prototype['hostid']]
- ];
- }
-
- if ($upd_host_prototypes) {
- DB::update('hosts', $upd_host_prototypes);
- DB::update('group_prototype', [
- 'values' => ['templateid' => 0],
- 'where' => ['hostid' => array_keys($upd_host_prototypes)]
- ]);
- }
- }
-
- // http tests
- $upd_httptests = [];
-
- $sqlWhere = '';
- if (!is_null($targetids)) {
- $sqlWhere = ' AND '.dbConditionInt('ht1.hostid', $targetids);
+ if ($clear) {
+ CDiscoveryRule::clearTemplateObjects($templateids, $targetids);
+ CItem::clearTemplateObjects($templateids, $targetids);
+ CHttpTest::clearTemplateObjects($templateids, $targetids);
}
- $sql = 'SELECT DISTINCT ht1.httptestid,h.status as host_status'.
- ' FROM httptest ht1,httptest ht2,hosts h'.
- ' WHERE ht1.templateid=ht2.httptestid'.
- ' AND ht1.hostid=h.hostid'.
- ' AND '.dbConditionInt('ht2.hostid', $templateids).
- $sqlWhere;
-
- $httptests = DBSelect($sql);
-
- while ($httptest = DBfetch($httptests)) {
- if ($clear) {
- $upd_httptests[$httptest['httptestid']] = true;
- }
- else {
- $upd_httptest = ['templateid' => 0];
- if ($httptest['host_status'] == HOST_STATUS_TEMPLATE) {
- $upd_httptest['uuid'] = generateUuidV4();
- }
-
- $upd_httptests[$httptest['httptestid']] = [
- 'values' => $upd_httptest,
- 'where' => ['httptestid' => $httptest['httptestid']]
- ];
- }
- }
-
- if ($upd_httptests) {
- if ($clear) {
- $result = API::HttpTest()->delete(array_keys($upd_httptests), true);
- if (!$result) {
- self::exception(ZBX_API_ERROR_INTERNAL, _('Cannot unlink and clear Web scenarios.'));
- }
- }
- else {
- DB::update('httptest', $upd_httptests);
- }
+ else {
+ CDiscoveryRule::unlinkTemplateObjects($templateids, $targetids);
+ CItem::unlinkTemplateObjects($templateids, $targetids);
+ CHttpTest::unlinkTemplateObjects($templateids, $targetids);
}
parent::unlink($templateids, $targetids);
diff --git a/ui/include/classes/api/services/CHostPrototype.php b/ui/include/classes/api/services/CHostPrototype.php
index 24b862c5471..b1b28d2b250 100644
--- a/ui/include/classes/api/services/CHostPrototype.php
+++ b/ui/include/classes/api/services/CHostPrototype.php
@@ -441,7 +441,7 @@ class CHostPrototype extends CHostBase {
$this->validateCreate($host_prototypes);
$this->createForce($host_prototypes);
- [$tpl_host_prototypes] = $this->getTemplatedObjects($host_prototypes);
+ [$tpl_host_prototypes] = self::getTemplatedObjects($host_prototypes);
if ($tpl_host_prototypes) {
$this->inherit($tpl_host_prototypes);
@@ -547,7 +547,7 @@ class CHostPrototype extends CHostBase {
$this->updateForce($host_prototypes, $db_host_prototypes);
[$tpl_host_prototypes, $tpl_db_host_prototypes] =
- $this->getTemplatedObjects($host_prototypes, $db_host_prototypes);
+ self::getTemplatedObjects($host_prototypes, $db_host_prototypes);
if ($tpl_host_prototypes) {
$this->inherit($tpl_host_prototypes, $tpl_db_host_prototypes);
@@ -730,28 +730,28 @@ class CHostPrototype extends CHostBase {
['else' => true, 'type' => API_UNEXPECTED]
]],
'authprotocol' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => function (array $data): bool {
+ ['if' => static function (array $data): bool {
return $data['version'] == SNMP_V3
&& in_array($data['securitylevel'], [ITEM_SNMPV3_SECURITYLEVEL_AUTHNOPRIV, ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV]);
}, 'type' => API_INT32, 'in' => implode(',', array_keys(getSnmpV3AuthProtocols()))],
['else' => true, 'type' => API_UNEXPECTED]
]],
'authpassphrase' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => function (array $data): bool {
+ ['if' => static function (array $data): bool {
return $data['version'] == SNMP_V3
&& in_array($data['securitylevel'], [ITEM_SNMPV3_SECURITYLEVEL_AUTHNOPRIV, ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV]);
}, 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('interface_snmp', 'authpassphrase')],
['else' => true, 'type' => API_UNEXPECTED]
]],
'privprotocol' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => function (array $data): bool {
+ ['if' => static function (array $data): bool {
return $data['version'] == SNMP_V3
&& $data['securitylevel'] == ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV;
}, 'type' => API_INT32, 'in' => implode(',', array_keys(getSnmpV3PrivProtocols()))],
['else' => true, 'type' => API_UNEXPECTED]
]],
'privpassphrase' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => function (array $data): bool {
+ ['if' => static function (array $data): bool {
return $data['version'] == SNMP_V3
&& $data['securitylevel'] == ITEM_SNMPV3_SECURITYLEVEL_AUTHPRIV;
}, 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('interface_snmp', 'privpassphrase')],
@@ -769,7 +769,7 @@ class CHostPrototype extends CHostBase {
* @param array $host_prototypes
* @param array $db_host_prototypes
*/
- protected function updateForce(array &$host_prototypes, array $db_host_prototypes): void {
+ public function updateForce(array &$host_prototypes, array $db_host_prototypes): void {
$upd_host_prototypes = [];
// save the host prototypes
@@ -919,7 +919,7 @@ class CHostPrototype extends CHostBase {
$options = [
'output' => ['group_prototypeid', 'hostid', 'name', 'templateid'],
- 'filter' => ['hostid' => $hostids, 'groupid' => '0']
+ 'filter' => ['hostid' => $hostids, 'groupid' => 0]
];
$db_groups = DBselect(DB::makeSql('group_prototype', $options));
@@ -1647,6 +1647,46 @@ class CHostPrototype extends CHostBase {
}
/**
+ * @param array $ruleids
+ */
+ public static function unlinkTemplateObjects(array $ruleids): void {
+ $result = DBselect(
+ 'SELECT hd.hostid,h.status AS host_status'.
+ ' FROM host_discovery hd,items i,hosts h'.
+ ' WHERE hd.parent_itemid=i.itemid'.
+ ' AND i.hostid=h.hostid'.
+ ' AND '.dbConditionId('hd.parent_itemid', $ruleids)
+ );
+
+ $upd_host_prototypes = [];
+ $hostids = [];
+
+ while ($row = DBfetch($result)) {
+ $upd_host_prototype = ['templateid' => 0];
+
+ if ($row['host_status'] == HOST_STATUS_TEMPLATE) {
+ $upd_host_prototype += ['uuid' => generateUuidV4()];
+ }
+
+ $upd_host_prototypes[$row['hostid']] = [
+ 'values' => $upd_host_prototype,
+ 'where' => ['hostid' => $row['hostid']]
+ ];
+
+ $hostids[] = $row['hostid'];
+ }
+
+ if ($upd_host_prototypes) {
+ DB::update('hosts', $upd_host_prototypes);
+
+ DB::update('group_prototype', [
+ 'values' => ['templateid' => 0],
+ 'where' => ['hostid' => $hostids]
+ ]);
+ }
+ }
+
+ /**
* Updates the children of the host prototypes on the given hosts and propagates the inheritance to the child hosts.
*
* @param array $host_prototypes
@@ -1697,7 +1737,7 @@ class CHostPrototype extends CHostBase {
$this->createForce($ins_host_prototypes, true);
}
- [$tpl_host_prototypes, $tpl_db_host_prototypes] = $this->getTemplatedObjects(
+ [$tpl_host_prototypes, $tpl_db_host_prototypes] = self::getTemplatedObjects(
array_merge($upd_host_prototypes, $ins_host_prototypes), $upd_db_host_prototypes
);
diff --git a/ui/include/classes/api/services/CHttpTest.php b/ui/include/classes/api/services/CHttpTest.php
index 590695af7c2..ae43d1b3bab 100644
--- a/ui/include/classes/api/services/CHttpTest.php
+++ b/ui/include/classes/api/services/CHttpTest.php
@@ -345,7 +345,10 @@ class CHttpTest extends CApiService {
}
$this->checkAndAddUuid($httptests);
- $this->checkHostPermissions(array_keys($names_by_hostid));
+
+ $this->checkHostsAndTemplates($httptests, $db_hosts, $db_templates);
+ self::addHostStatus($httptests, $db_hosts, $db_templates);
+
$this->checkDuplicates($names_by_hostid);
$this->validateAuthParameters($httptests, __FUNCTION__);
$this->validateSslParameters($httptests, __FUNCTION__);
@@ -573,17 +576,25 @@ class CHttpTest extends CApiService {
}
/**
- * Delete web scenario.
- *
* @param array $httptestids
- * @param bool $nopermissions
*
* @return array
*/
- public function delete(array $httptestids, $nopermissions = false) {
- // TODO: remove $nopermissions hack
+ public function delete(array $httptestids) {
+ $this->validateDelete($httptestids, $db_httptests);
+ self::deleteForce($db_httptests);
+
+ return ['httptestids' => $httptestids];
+ }
+
+ /**
+ * @param array $httptestids
+ * @param array|null $db_httptests
+ */
+ private function validateDelete(array $httptestids, ?array &$db_httptests): void {
$api_input_rules = ['type' => API_IDS, 'flags' => API_NOT_EMPTY, 'uniq' => true];
+
if (!CApiInputValidator::validate($api_input_rules, $httptestids, '/', $error)) {
self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
@@ -595,24 +606,23 @@ class CHttpTest extends CApiService {
'preservekeys' => true
]);
- if (!$nopermissions) {
- foreach ($httptestids as $httptestid) {
- if (!array_key_exists($httptestid, $db_httptests)) {
- self::exception(ZBX_API_ERROR_PERMISSIONS,
- _('No permissions to referred object or it does not exist!')
- );
- }
-
- $db_httptest = $db_httptests[$httptestid];
+ if (count($db_httptests) != count($httptestids)) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _('No permissions to referred object or it does not exist!'));
+ }
- if ($db_httptest['templateid'] != 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Cannot delete templated web scenario "%1$s".', $db_httptest['name'])
- );
- }
+ foreach ($httptestids as $httptestid) {
+ if ($db_httptests[$httptestid]['templateid'] != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Cannot delete templated web scenario "%1$s".', $db_httptests[$httptestid]['name'])
+ );
}
}
+ }
+ /**
+ * @param array $db_httptests
+ */
+ public static function deleteForce(array $db_httptests): void {
self::addInheritedHttptests($db_httptests);
$del_httptestids = array_keys($db_httptests);
@@ -628,12 +638,12 @@ class CHttpTest extends CApiService {
]);
DB::delete('httptest', ['httptestid' => $del_httptestids]);
- $this->addAuditBulk(CAudit::ACTION_DELETE, CAudit::RESOURCE_SCENARIO, $db_httptests);
-
- return ['httptestids' => $httptestids];
+ self::addAuditLog(CAudit::ACTION_DELETE, CAudit::RESOURCE_SCENARIO, $db_httptests);
}
/**
+ * Add the inherited web scenarios of the given web scenarios to the given web scenario array.
+ *
* @param array $db_httptests
*/
private static function addInheritedHttptests(array &$db_httptests): void {
@@ -659,20 +669,26 @@ class CHttpTest extends CApiService {
}
/**
+ * Delete items, which would remain without web scenarios after the given web scenarios deletion.
+ *
* @param array $del_httptestids
*/
private static function deleteAffectedItems(array $del_httptestids): void {
$db_items = DBfetchArrayAssoc(DBselect(
- 'SELECT hti.itemid'.
+ 'SELECT hti.itemid,i.name'.
' FROM httptestitem hti,items i'.
' WHERE hti.itemid=i.itemid'.
' AND '.dbConditionId('hti.httptestid', $del_httptestids)
), 'itemid');
- CItemManager::delete(array_keys($db_items));
+ CItem::addInheritedItems($db_items);
+ DB::delete('httptestitem', ['itemid' => array_keys($db_items)]);
+ CItem::deleteForce($db_items);
}
/**
+ * Delete steps of the given web scenarios.
+ *
* @param array $del_httptestids
*/
private static function deleteAffectedSteps(array $del_httptestids): void {
@@ -688,50 +704,77 @@ class CHttpTest extends CApiService {
}
/**
+ * Delete items of the given web scenario steps.
+ *
* @param array $del_stepids
*/
- public static function deleteAffectedStepItems(array $del_stepids): void {
+ private static function deleteAffectedStepItems(array $del_stepids): void {
$db_items = DBfetchArrayAssoc(DBselect(
- 'SELECT hsi.itemid'.
+ 'SELECT hsi.itemid,i.name'.
' FROM httpstepitem hsi,items i'.
' WHERE hsi.itemid=i.itemid'.
' AND '.dbConditionId('hsi.httpstepid', $del_stepids)
), 'itemid');
- CItemManager::delete(array_keys($db_items));
+ CItem::addInheritedItems($db_items);
+ DB::delete('httpstepitem', ['itemid' => array_keys($db_items)]);
+ CItem::deleteForce($db_items);
}
/**
- * Checks if the current user has access to the given hosts and templates.
+ * Check that host IDs of given web scenarios are valid.
+ * If host IDs are valid, $db_hosts and $db_templates parameters will be filled with found hosts and templates.
*
- * @param array $hostids an array of host or template IDs
+ * @param array $httptests
+ * @param array|null $db_hosts
+ * @param array|null $db_templates
*
- * @throws APIException if the user doesn't have write permissions for the given hosts.
+ * @throws APIException
*/
- private function checkHostPermissions(array $hostids) {
- if ($hostids) {
- $count = API::Host()->get([
- 'countOutput' => true,
- 'hostids' => $hostids,
- 'editable' => true
- ]);
+ protected static function checkHostsAndTemplates(array $httptests, array &$db_hosts = null,
+ array &$db_templates = null): void {
+ $hostids = array_unique(array_column($httptests, 'hostid'));
- if ($count == count($hostids)) {
- return;
- }
+ $db_templates = API::Template()->get([
+ 'output' => [],
+ 'templateids' => $hostids,
+ 'editable' => true,
+ 'preservekeys' => true
+ ]);
- $count += API::Template()->get([
- 'countOutput' => true,
- 'templateids' => $hostids,
- 'editable' => true
- ]);
+ $_hostids = array_diff($hostids, array_keys($db_templates));
- if ($count != count($hostids)) {
- self::exception(ZBX_API_ERROR_PERMISSIONS,
- _('No permissions to referred object or it does not exist!')
- );
+ $db_hosts = $_hostids
+ ? API::Host()->get([
+ 'output' => ['status'],
+ 'hostids' => $_hostids,
+ 'editable' => true,
+ 'preservekeys' => true
+ ])
+ : [];
+
+ if (count($db_templates) + count($db_hosts) != count($hostids)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
+ }
+ }
+
+ /**
+ * Add host_status property to given web scenarios in accordance of given hosts and templates statuses.
+ *
+ * @param array $httptests
+ * @param array $db_hosts
+ * @param array $db_templates
+ */
+ protected static function addHostStatus(array &$httptests, array $db_hosts, array $db_templates): void {
+ foreach ($httptests as &$httptest) {
+ if (array_key_exists($httptest['hostid'], $db_templates)) {
+ $httptest['host_status'] = HOST_STATUS_TEMPLATE;
+ }
+ else {
+ $httptest['host_status'] = $db_hosts[$httptest['hostid']]['status'];
}
}
+ unset($httptest);
}
/**
@@ -774,23 +817,27 @@ class CHttpTest extends CApiService {
$db_httptest = $db_httptests[$httptest['httptestid']];
- if ($db_httptest['templateid'] != 0) {
- if (count($httptest['steps']) != count($db_httptest['steps'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect templated web scenario step count.'));
- }
+ if ($db_httptest['templateid'] != 0 && count($httptest['steps']) != count($db_httptest['steps'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect templated web scenario step count.'));
+ }
- foreach ($httptest['steps'] as $httpstep) {
- if (!array_key_exists('httpstepid', $httpstep)) {
+ foreach ($httptest['steps'] as $step) {
+ if (!array_key_exists('httpstepid', $step)) {
+ if ($db_httptest['templateid'] == 0) {
+ continue;
+ }
+ else {
self::exception(ZBX_API_ERROR_PARAMETERS, _s(
'Cannot update step for a templated web scenario "%1$s": %2$s.', $httptest['name'],
_s('the parameter "%1$s" is missing', 'httpstepid')
));
}
- elseif (!array_key_exists($httpstep['httpstepid'], $db_httptest['steps'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _('No permissions to referred object or it does not exist!')
- );
- }
+ }
+
+ if (!array_key_exists($step['httpstepid'], $db_httptest['steps'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _('No permissions to referred object or it does not exist!')
+ );
}
}
}
@@ -1128,4 +1175,61 @@ class CHttpTest extends CApiService {
}
unset($httptest);
}
+
+ /**
+ * @param array $templateids
+ * @param array|null $hostids
+ */
+ public static function unlinkTemplateObjects(array $templateids, array $hostids = null): void {
+ $hostids_condition = $hostids ? ' AND '.dbConditionId('hht.hostid', $hostids) : '';
+
+ $result = DBselect(
+ 'SELECT hht.httptestid,hht.name,h.status AS host_status'.
+ ' FROM httptest ht,httptest hht,hosts h'.
+ ' WHERE ht.httptestid=hht.templateid'.
+ ' AND hht.hostid=h.hostid'.
+ ' AND '.dbConditionId('ht.hostid', $templateids).
+ $hostids_condition
+ );
+
+ $httptests = [];
+
+ while ($row = DBfetch($result)) {
+ $httptest = [
+ 'httptestid' => $row['httptestid'],
+ 'name' => $row['name'],
+ 'templateid' => 0
+ ];
+
+ if ($row['host_status'] == HOST_STATUS_TEMPLATE) {
+ $httptest += ['uuid' => generateUuidV4()];
+ }
+
+ $httptests[] = $httptest;
+ }
+
+ if ($httptests) {
+ Manager::HttpTest()->update($httptests);
+ }
+ }
+
+ /**
+ * @param array $templateids
+ * @param array|null $hostids
+ */
+ public static function clearTemplateObjects(array $templateids, array $hostids = null): void {
+ $hostids_condition = $hostids ? ' AND '.dbConditionId('hht.hostid', $hostids) : '';
+
+ $db_httptests = DBfetchArrayAssoc(DBselect(
+ 'SELECT hht.httptestid,hht.name'.
+ ' FROM httptest ht,httptest hht'.
+ ' WHERE ht.httptestid=hht.templateid'.
+ ' AND '.dbConditionId('ht.hostid', $templateids).
+ $hostids_condition
+ ), 'httptestid');
+
+ if ($db_httptests) {
+ self::deleteForce($db_httptests);
+ }
+ }
}
diff --git a/ui/include/classes/api/services/CItem.php b/ui/include/classes/api/services/CItem.php
index 9d18482eebf..66ea1943360 100644
--- a/ui/include/classes/api/services/CItem.php
+++ b/ui/include/classes/api/services/CItem.php
@@ -29,40 +29,61 @@ class CItem extends CItemGeneral {
protected $sortColumns = ['itemid', 'name', 'key_', 'delay', 'history', 'trends', 'type', 'status'];
/**
- * Define a set of supported pre-processing rules.
- *
- * @var array
+ * @inheritDoc
+ */
+ public const SUPPORTED_PREPROCESSING_TYPES = [
+ ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_RTRIM, ZBX_PREPROC_LTRIM, ZBX_PREPROC_TRIM, ZBX_PREPROC_REGSUB,
+ ZBX_PREPROC_BOOL2DEC, ZBX_PREPROC_OCT2DEC, ZBX_PREPROC_HEX2DEC, ZBX_PREPROC_DELTA_VALUE,
+ ZBX_PREPROC_DELTA_SPEED, ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH, ZBX_PREPROC_VALIDATE_RANGE,
+ ZBX_PREPROC_VALIDATE_REGEX, ZBX_PREPROC_VALIDATE_NOT_REGEX, ZBX_PREPROC_ERROR_FIELD_JSON,
+ ZBX_PREPROC_ERROR_FIELD_XML, ZBX_PREPROC_ERROR_FIELD_REGEX, ZBX_PREPROC_THROTTLE_VALUE,
+ ZBX_PREPROC_THROTTLE_TIMED_VALUE, ZBX_PREPROC_SCRIPT, ZBX_PREPROC_PROMETHEUS_PATTERN,
+ ZBX_PREPROC_PROMETHEUS_TO_JSON, ZBX_PREPROC_CSV_TO_JSON, ZBX_PREPROC_STR_REPLACE,
+ ZBX_PREPROC_VALIDATE_NOT_SUPPORTED, ZBX_PREPROC_XML_TO_JSON
+ ];
+
+ /**
+ * @inheritDoc
+ */
+ protected const PREPROC_TYPES_WITH_PARAMS = [
+ ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_RTRIM, ZBX_PREPROC_LTRIM, ZBX_PREPROC_TRIM, ZBX_PREPROC_REGSUB,
+ ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH, ZBX_PREPROC_VALIDATE_RANGE, ZBX_PREPROC_VALIDATE_REGEX,
+ ZBX_PREPROC_VALIDATE_NOT_REGEX, ZBX_PREPROC_ERROR_FIELD_JSON, ZBX_PREPROC_ERROR_FIELD_XML,
+ ZBX_PREPROC_ERROR_FIELD_REGEX, ZBX_PREPROC_THROTTLE_TIMED_VALUE, ZBX_PREPROC_SCRIPT,
+ ZBX_PREPROC_PROMETHEUS_PATTERN, ZBX_PREPROC_PROMETHEUS_TO_JSON, ZBX_PREPROC_CSV_TO_JSON, ZBX_PREPROC_STR_REPLACE
+ ];
+
+ /**
+ * @inheritDoc
*/
- const SUPPORTED_PREPROCESSING_TYPES = [ZBX_PREPROC_REGSUB, ZBX_PREPROC_TRIM, ZBX_PREPROC_RTRIM,
- ZBX_PREPROC_LTRIM, ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH, ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_DELTA_VALUE,
- ZBX_PREPROC_DELTA_SPEED, ZBX_PREPROC_BOOL2DEC, ZBX_PREPROC_OCT2DEC, ZBX_PREPROC_HEX2DEC,
+ protected const PREPROC_TYPES_WITH_ERR_HANDLING = [
+ ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_REGSUB, ZBX_PREPROC_BOOL2DEC, ZBX_PREPROC_OCT2DEC, ZBX_PREPROC_HEX2DEC,
+ ZBX_PREPROC_DELTA_VALUE, ZBX_PREPROC_DELTA_SPEED, ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH,
ZBX_PREPROC_VALIDATE_RANGE, ZBX_PREPROC_VALIDATE_REGEX, ZBX_PREPROC_VALIDATE_NOT_REGEX,
ZBX_PREPROC_ERROR_FIELD_JSON, ZBX_PREPROC_ERROR_FIELD_XML, ZBX_PREPROC_ERROR_FIELD_REGEX,
- ZBX_PREPROC_THROTTLE_VALUE, ZBX_PREPROC_THROTTLE_TIMED_VALUE, ZBX_PREPROC_SCRIPT,
ZBX_PREPROC_PROMETHEUS_PATTERN, ZBX_PREPROC_PROMETHEUS_TO_JSON, ZBX_PREPROC_CSV_TO_JSON,
- ZBX_PREPROC_STR_REPLACE, ZBX_PREPROC_VALIDATE_NOT_SUPPORTED, ZBX_PREPROC_XML_TO_JSON
+ ZBX_PREPROC_VALIDATE_NOT_SUPPORTED, ZBX_PREPROC_XML_TO_JSON
];
/**
- * Define a set of supported item types.
- *
- * @var array
+ * @inheritDoc
*/
- const SUPPORTED_ITEM_TYPES = [ITEM_TYPE_ZABBIX, ITEM_TYPE_TRAPPER, ITEM_TYPE_SIMPLE, ITEM_TYPE_INTERNAL,
- ITEM_TYPE_ZABBIX_ACTIVE, ITEM_TYPE_EXTERNAL, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_IPMI, ITEM_TYPE_SSH,
- ITEM_TYPE_TELNET, ITEM_TYPE_CALCULATED, ITEM_TYPE_JMX, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_DEPENDENT,
- ITEM_TYPE_HTTPAGENT, ITEM_TYPE_SNMP, ITEM_TYPE_SCRIPT
+ public const SUPPORTED_ITEM_TYPES = [
+ ITEM_TYPE_ZABBIX, ITEM_TYPE_TRAPPER, ITEM_TYPE_SIMPLE, ITEM_TYPE_INTERNAL, ITEM_TYPE_ZABBIX_ACTIVE,
+ ITEM_TYPE_EXTERNAL, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_IPMI, ITEM_TYPE_SSH, ITEM_TYPE_TELNET, ITEM_TYPE_CALCULATED,
+ ITEM_TYPE_JMX, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_DEPENDENT, ITEM_TYPE_HTTPAGENT, ITEM_TYPE_SNMP, ITEM_TYPE_SCRIPT
];
- public function __construct() {
- parent::__construct();
-
- $this->errorMessages = array_merge($this->errorMessages, [
- self::ERROR_EXISTS_TEMPLATE => _('Item "%1$s" already exists on "%2$s", inherited from another template.'),
- self::ERROR_EXISTS => _('Item "%1$s" already exists on "%2$s".'),
- self::ERROR_INVALID_KEY => _('Invalid key "%1$s" for item "%2$s" on "%3$s": %4$s.')
- ]);
- }
+ /**
+ * @inheritDoc
+ */
+ protected const VALUE_TYPE_FIELD_NAMES = [
+ ITEM_VALUE_TYPE_FLOAT => ['units', 'trends', 'valuemapid', 'inventory_link'],
+ ITEM_VALUE_TYPE_STR => ['valuemapid', 'inventory_link'],
+ ITEM_VALUE_TYPE_LOG => ['logtimefmt'],
+ ITEM_VALUE_TYPE_UINT64 => ['units', 'trends', 'valuemapid', 'inventory_link'],
+ ITEM_VALUE_TYPE_TEXT => ['inventory_link']
+ ];
/**
* Get items data.
@@ -435,7 +456,7 @@ class CItem extends CItemGeneral {
}
if (array_key_exists('headers', $item)) {
- $item['headers'] = $this->headersStringToArray($item['headers']);
+ $item['headers'] = self::headersStringToArray($item['headers']);
}
}
unset($item);
@@ -463,589 +484,1071 @@ class CItem extends CItemGeneral {
}
/**
- * Create item.
- *
- * @param $items
+ * @param array $items
*
* @return array
*/
- public function create($items) {
- $items = zbx_toArray($items);
+ public function create(array $items): array {
+ self::validateCreate($items);
- parent::checkInput($items);
- self::validateInventoryLinks($items);
+ self::createForce($items);
+ self::inherit($items);
- foreach ($items as &$item) {
- $item['flags'] = ZBX_FLAG_DISCOVERY_NORMAL;
- unset($item['itemid']);
- }
- unset($item);
-
- $this->validateDependentItems($items);
-
- foreach ($items as &$item) {
- if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
- if (array_key_exists('query_fields', $item)) {
- $item['query_fields'] = $item['query_fields'] ? json_encode($item['query_fields']) : '';
- }
-
- if (array_key_exists('headers', $item)) {
- $item['headers'] = $this->headersArrayToString($item['headers']);
- }
+ return ['itemids' => array_column($items, 'itemid')];
+ }
- if (array_key_exists('request_method', $item) && $item['request_method'] == HTTPCHECK_REQUEST_HEAD
- && !array_key_exists('retrieve_mode', $item)) {
- $item['retrieve_mode'] = HTTPTEST_STEP_RETRIEVE_MODE_HEADERS;
- }
- }
- else {
- $item['query_fields'] = '';
- $item['headers'] = '';
- }
+ /**
+ * @param array $items
+ *
+ * @throws APIException
+ */
+ protected static function validateCreate(array &$items): void {
+ $api_input_rules = ['type' => API_OBJECTS, 'flags' => API_NOT_EMPTY | API_NORMALIZE | API_ALLOW_UNEXPECTED, 'fields' => [
+ 'hostid' => ['type' => API_ID, 'flags' => API_REQUIRED]
+ ]];
- if (array_key_exists('preprocessing', $item)) {
- $item['preprocessing'] = $this->normalizeItemPreprocessingSteps($item['preprocessing']);
- }
+ if (!CApiInputValidator::validate($api_input_rules, $items, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
- unset($item);
- // Get only hosts not templates from items
- $hosts = API::Host()->get([
- 'output' => [],
- 'hostids' => zbx_objectValues($items, 'hostid'),
- 'preservekeys' => true
- ]);
- foreach ($items as &$item) {
- if (array_key_exists($item['hostid'], $hosts)) {
- $item['rtdata'] = true;
- }
+ self::checkHostsAndTemplates($items, $db_hosts, $db_templates);
+ self::addHostStatus($items, $db_hosts, $db_templates);
+ self::addFlags($items, ZBX_FLAG_DISCOVERY_NORMAL);
+
+ $api_input_rules = ['type' => API_OBJECTS, 'flags' => API_ALLOW_UNEXPECTED, 'uniq' => [['uuid'], ['hostid', 'key_']], 'fields' => [
+ 'host_status' => ['type' => API_ANY],
+ 'flags' => ['type' => API_ANY],
+ 'uuid' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'host_status', 'in' => implode(',', [HOST_STATUS_TEMPLATE])], 'type' => API_UUID],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'uuid')]
+ ]],
+ 'hostid' => ['type' => API_ANY],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'name')],
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', self::SUPPORTED_ITEM_TYPES)],
+ 'key_' => ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED, 'length' => DB::getFieldLength('items', 'key_')],
+ 'value_type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT])],
+ 'units' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'units')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'units')]
+ ]],
+ 'history' => ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO, 'in' => '0,'.implode(':', [SEC_PER_HOUR, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'history')],
+ 'trends' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO, 'in' => '0,'.implode(':', [SEC_PER_DAY, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'trends')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => '0', 'default' => 0]
+ ]],
+ 'valuemapid' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64])], 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]],
+ 'inventory_link' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT])], 'type' => API_INT32, 'in' => '0,'.implode(',', array_keys(getHostInventories()))],
+ ['else' => true, 'type' => API_INT32, 'in' => DB::getDefault('items', 'inventory_link')]
+ ]],
+ 'logtimefmt' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => ITEM_VALUE_TYPE_LOG], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'logtimefmt')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'logtimefmt')]
+ ]],
+ 'description' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'description')],
+ 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
+ 'tags' => self::getTagsValidationRules(),
+ 'preprocessing' => self::getPreprocessingValidationRules()
+ ]];
+
+ if (!CApiInputValidator::validate($api_input_rules, $items, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
- unset($item);
- $this->createReal($items);
- $this->inherit($items);
+ self::validateByType(array_keys($api_input_rules['fields']), $items);
- return ['itemids' => zbx_objectValues($items, 'itemid')];
+ self::checkAndAddUuid($items);
+ self::checkDuplicates($items);
+ self::checkValueMaps($items);
+ self::checkInventoryLinks($items);
+ self::checkHostInterfaces($items);
+ self::checkDependentItems($items);
}
/**
- * Create host item.
- *
* @param array $items
*/
- protected function createReal(array &$items) {
- $items_rtdata = [];
+ public static function createForce(array &$items): void {
+ $itemids = DB::insert('items', $items);
- foreach ($items as $key => &$item) {
- if ($item['type'] != ITEM_TYPE_DEPENDENT) {
- $item['master_itemid'] = null;
- }
+ $ins_items_rtdata = [];
+ $host_statuses = [];
+
+ foreach ($items as &$item) {
+ $item['itemid'] = array_shift($itemids);
- if (array_key_exists('rtdata', $item)) {
- $items_rtdata[$key] = [];
- unset($item['rtdata']);
+ if (in_array($item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])) {
+ $ins_items_rtdata[] = ['itemid' => $item['itemid']];
}
+
+ $host_statuses[] = $item['host_status'];
+ unset($item['host_status']);
}
unset($item);
- $itemids = DB::insert('items', $items);
-
- foreach ($items_rtdata as $key => &$value) {
- $value['itemid'] = $itemids[$key];
+ if ($ins_items_rtdata) {
+ DB::insertBatch('item_rtdata', $ins_items_rtdata, false);
}
- unset($value);
- DB::insert('item_rtdata', $items_rtdata, false);
+ self::updateParameters($items);
+ self::updatePreprocessing($items);
+ self::updateTags($items);
- foreach ($items as $key => $item) {
- $items[$key]['itemid'] = $itemids[$key];
- }
+ self::addAuditLog(CAudit::ACTION_ADD, CAudit::RESOURCE_ITEM, $items);
- $this->createItemParameters($items, $itemids);
- $this->createItemPreprocessing($items);
- $this->createItemTags($items, $itemids);
+ foreach ($items as &$item) {
+ $item['host_status'] = array_shift($host_statuses);
+ }
+ unset($item);
}
/**
- * Update host items.
- *
* @param array $items
+ *
+ * @return array
*/
- protected function updateReal(array $items) {
- CArrayHelper::sort($items, ['itemid']);
+ public function update(array $items): array {
+ $this->validateUpdate($items, $db_items);
- $data = [];
- foreach ($items as $item) {
- unset($item['flags']); // flags cannot be changed
- $data[] = ['values' => $item, 'where' => ['itemid' => $item['itemid']]];
- }
- DB::update('items', $data);
+ $itemids = array_column($items, 'itemid');
+
+ self::updateForce($items, $db_items);
+ self::inherit($items, $db_items);
- $this->updateItemParameters($items);
- $this->updateItemPreprocessing($items);
- $this->updateItemTags($items);
+ return ['itemids' => $itemids];
}
/**
- * Update item.
+ * @param array $items
+ * @param array|null $db_items
*
- * @param array $items
- *
- * @return array
+ * @throws APIException
*/
- public function update($items) {
- $items = zbx_toArray($items);
+ protected function validateUpdate(array &$items, ?array &$db_items): void {
+ $api_input_rules = ['type' => API_OBJECTS, 'flags' => API_NOT_EMPTY | API_NORMALIZE | API_ALLOW_UNEXPECTED, 'uniq' => [['itemid']], 'fields' => [
+ 'itemid' => ['type' => API_ID, 'flags' => API_REQUIRED]
+ ]];
- parent::checkInput($items, true);
- self::validateInventoryLinks($items, true);
+ if (!CApiInputValidator::validate($api_input_rules, $items, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
- $db_items = $this->get([
- 'output' => ['flags', 'type', 'master_itemid', 'authtype', 'allow_traps', 'retrieve_mode', 'value_type'],
- 'itemids' => zbx_objectValues($items, 'itemid'),
- 'editable' => true,
- 'preservekeys' => true
+ $count = $this->get([
+ 'countOutput' => true,
+ 'itemids' => array_column($items, 'itemid'),
+ 'editable' => true
]);
- $items = $this->extendFromObjects(zbx_toHash($items, 'itemid'), $db_items, ['flags', 'type', 'authtype',
- 'master_itemid', 'value_type'
- ]);
+ if ($count != count($items)) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _('No permissions to referred object or it does not exist!'));
+ }
- $this->validateDependentItems($items);
-
- $defaults = DB::getDefaults('items');
- $clean = [
- ITEM_TYPE_HTTPAGENT => [
- 'url' => '',
- 'query_fields' => '',
- 'timeout' => $defaults['timeout'],
- 'status_codes' => $defaults['status_codes'],
- 'follow_redirects' => $defaults['follow_redirects'],
- 'request_method' => $defaults['request_method'],
- 'allow_traps' => $defaults['allow_traps'],
- 'post_type' => $defaults['post_type'],
- 'http_proxy' => '',
- 'headers' => '',
- 'retrieve_mode' => $defaults['retrieve_mode'],
- 'output_format' => $defaults['output_format'],
- 'ssl_key_password' => '',
- 'verify_peer' => $defaults['verify_peer'],
- 'verify_host' => $defaults['verify_host'],
- 'ssl_cert_file' => '',
- 'ssl_key_file' => '',
- 'posts' => ''
- ]
- ];
+ /*
+ * The fields "headers" and "query_fields" in API are arrays, but there is necessary to get the values of these
+ * fields as they stored in database.
+ */
+ $db_items = DB::select('items', [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'inventory_link', 'logtimefmt', 'description', 'status'
+ ], array_diff(CItemType::FIELD_NAMES, ['parameters'])),
+ 'itemids' => array_column($items, 'itemid'),
+ 'preservekeys' => true
+ ]);
- foreach ($items as &$item) {
- $type_change = ($item['type'] != $db_items[$item['itemid']]['type']);
+ self::addInternalFields($db_items);
- if ($item['type'] != ITEM_TYPE_DEPENDENT && $db_items[$item['itemid']]['master_itemid'] != 0) {
- $item['master_itemid'] = 0;
- }
+ foreach ($items as $i => &$item) {
+ $db_item = $db_items[$item['itemid']];
- if ($type_change && $db_items[$item['itemid']]['type'] == ITEM_TYPE_HTTPAGENT) {
- $item = array_merge($item, $clean[ITEM_TYPE_HTTPAGENT]);
+ if ($db_item['templateid'] != 0) {
+ $api_input_rules = ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => [
+ 'value_type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED]
+ ]];
- if ($item['type'] != ITEM_TYPE_SSH) {
- $item['authtype'] = $defaults['authtype'];
- $item['username'] = '';
- $item['password'] = '';
+ if (!CApiInputValidator::validate($api_input_rules, $item, '/'.($i + 1), $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
- if ($item['type'] != ITEM_TYPE_TRAPPER) {
- $item['trapper_hosts'] = '';
- }
+ $item += array_intersect_key($db_item, array_flip(['value_type']));
+
+ $api_input_rules = self::getInheritedValidationRules();
}
+ elseif ($db_item['flags'] == ZBX_FLAG_DISCOVERY_CREATED) {
+ $api_input_rules = self::getDiscoveredValidationRules();
+ }
+ else {
+ $item += array_intersect_key($db_item, array_flip(['value_type']));
- if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
- // Clean username and password when authtype is set to HTTPTEST_AUTH_NONE.
- if ($item['authtype'] == HTTPTEST_AUTH_NONE) {
- $item['username'] = '';
- $item['password'] = '';
- }
+ $api_input_rules = self::getValidationRules();
+ }
- if (array_key_exists('allow_traps', $item) && $item['allow_traps'] == HTTPCHECK_ALLOW_TRAPS_OFF
- && $item['allow_traps'] != $db_items[$item['itemid']]['allow_traps']) {
- $item['trapper_hosts'] = '';
- }
+ if (!CApiInputValidator::validate($api_input_rules, $item, '/'.($i + 1), $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+ }
+ unset($item);
- if (array_key_exists('query_fields', $item) && is_array($item['query_fields'])) {
- $item['query_fields'] = $item['query_fields'] ? json_encode($item['query_fields']) : '';
- }
+ $items = $this->extendObjectsByKey($items, $db_items, 'itemid', ['type', 'key_']);
- if (array_key_exists('headers', $item) && is_array($item['headers'])) {
- $item['headers'] = $this->headersArrayToString($item['headers']);
- }
+ self::validateByType(array_keys($api_input_rules['fields']), $items, $db_items);
- if (array_key_exists('request_method', $item) && $item['request_method'] == HTTPCHECK_REQUEST_HEAD
- && !array_key_exists('retrieve_mode', $item)
- && $db_items[$item['itemid']]['retrieve_mode'] != HTTPTEST_STEP_RETRIEVE_MODE_HEADERS) {
- $item['retrieve_mode'] = HTTPTEST_STEP_RETRIEVE_MODE_HEADERS;
- }
- }
- else {
- $item['query_fields'] = '';
- $item['headers'] = '';
- }
+ $items = $this->extendObjectsByKey($items, $db_items, 'itemid', ['hostid', 'host_status', 'flags']);
- if ($type_change && $db_items[$item['itemid']]['type'] == ITEM_TYPE_SCRIPT) {
- if ($item['type'] != ITEM_TYPE_SSH && $item['type'] != ITEM_TYPE_DB_MONITOR
- && $item['type'] != ITEM_TYPE_TELNET && $item['type'] != ITEM_TYPE_CALCULATED) {
- $item['params'] = '';
- }
+ self::validateUniqueness($items);
- if ($item['type'] != ITEM_TYPE_HTTPAGENT) {
- $item['timeout'] = $defaults['timeout'];
- }
- }
+ self::addAffectedObjects($items, $db_items);
+
+ self::checkDuplicates($items, $db_items);
+ self::checkValueMaps($items, $db_items);
+ self::checkInventoryLinks($items, $db_items);
+ self::checkHostInterfaces($items, $db_items);
+ self::checkDependentItems($items, $db_items);
+ }
- if ($item['value_type'] == ITEM_VALUE_TYPE_LOG || $item['value_type'] == ITEM_VALUE_TYPE_TEXT) {
- if ($item['value_type'] != $db_items[$item['itemid']]['value_type']) {
- // Reset valuemapid when value_type is LOG or TEXT.
- $item['valuemapid'] = 0;
+ /**
+ * @return array
+ */
+ private static function getValidationRules(): array {
+ return ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => [
+ 'itemid' => ['type' => API_ANY],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'name')],
+ 'type' => ['type' => API_INT32, 'in' => implode(',', self::SUPPORTED_ITEM_TYPES)],
+ 'key_' => ['type' => API_ITEM_KEY, 'length' => DB::getFieldLength('items', 'key_')],
+ 'value_type' => ['type' => API_INT32, 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT])],
+ 'units' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'units')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'units')]
+ ]],
+ 'history' => ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO, 'in' => ITEM_NO_STORAGE_VALUE.','.implode(':', [SEC_PER_HOUR, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'history')],
+ 'trends' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO, 'in' => '0,'.implode(':', [SEC_PER_DAY, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'trends')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => '0']
+ ]],
+ 'valuemapid' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64])], 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]],
+ 'inventory_link' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT])], 'type' => API_INT32, 'in' => '0,'.implode(',', array_keys(getHostInventories()))],
+ ['else' => true, 'type' => API_INT32, 'in' => DB::getDefault('items', 'inventory_link')]
+ ]],
+ 'logtimefmt' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => ITEM_VALUE_TYPE_LOG], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'logtimefmt')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'logtimefmt')]
+ ]],
+ 'description' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'description')],
+ 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
+ 'tags' => self::getTagsValidationRules(),
+ 'preprocessing' => self::getPreprocessingValidationRules()
+ ]];
+ }
+
+ /**
+ * @return array
+ */
+ private static function getInheritedValidationRules(): array {
+ return ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => [
+ 'itemid' => ['type' => API_ANY],
+ 'name' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'key_' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'value_type' => ['type' => API_ANY],
+ 'units' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'history' => ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO, 'in' => ITEM_NO_STORAGE_VALUE.','.implode(':', [SEC_PER_HOUR, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'history')],
+ 'trends' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO, 'in' => '0,'.implode(':', [SEC_PER_DAY, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'trends')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => '0']
+ ]],
+ 'valuemapid' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'inventory_link' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT])], 'type' => API_INT32, 'in' => '0,'.implode(',', array_keys(getHostInventories()))],
+ ['else' => true, 'type' => API_INT32, 'in' => DB::getDefault('items', 'inventory_link')]
+ ]],
+ 'logtimefmt' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'description' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'description')],
+ 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
+ 'tags' => self::getTagsValidationRules(),
+ 'preprocessing' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED]
+ ]];
+ }
+
+ /**
+ * @return array
+ */
+ private static function getDiscoveredValidationRules(): array {
+ return ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => [
+ 'itemid' => ['type' => API_ANY],
+ 'name' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'key_' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'value_type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'units' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'history' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'trends' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'valuemapid' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'inventory_link' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'logtimefmt' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'description' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
+ 'tags' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED],
+ 'preprocessing' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_DISCOVERED]
+ ]];
+ }
+
+ /**
+ * @param array $items
+ * @param array $db_items
+ */
+ public static function updateForce(array &$items, array &$db_items): void {
+ // Helps to avoid deadlocks.
+ CArrayHelper::sort($items, ['itemid'], ZBX_SORT_DOWN);
+
+ self::addFieldDefaultsByType($items, $db_items);
+
+ $upd_items = [];
+ $upd_itemids = [];
+
+ $internal_fields = array_flip(['itemid', 'type', 'key_', 'value_type', 'hostid', 'flags', 'host_status']);
+ $nested_object_fields = array_flip(['tags', 'preprocessing', 'parameters']);
+
+ foreach ($items as $i => &$item) {
+ $upd_item = DB::getUpdatedValues('items', $item, $db_items[$item['itemid']]);
+
+ if ($upd_item) {
+ $upd_items[] = [
+ 'values' => $upd_item,
+ 'where' => ['itemid' => $item['itemid']]
+ ];
+
+ if (array_key_exists('type', $item) && $item['type'] == ITEM_TYPE_HTTPAGENT) {
+ $item = array_intersect_key($item,
+ array_flip(['authtype']) + $internal_fields + $upd_item + $nested_object_fields
+ );
}
else {
- unset($item['valuemapid']);
+ $item = array_intersect_key($item, $internal_fields + $upd_item + $nested_object_fields);
}
- }
- if (array_key_exists('tags', $item)) {
- $item['tags'] = array_map(function ($tag) {
- return $tag + ['value' => ''];
- }, $item['tags']);
+ $upd_itemids[$i] = $item['itemid'];
}
-
- if (array_key_exists('preprocessing', $item)) {
- $item['preprocessing'] = $this->normalizeItemPreprocessingSteps($item['preprocessing']);
+ else {
+ $item = array_intersect_key($item, $internal_fields + $nested_object_fields);
}
}
unset($item);
- $this->updateReal($items);
- $this->inherit($items);
+ if ($upd_items) {
+ DB::update('items', $upd_items);
+ }
+
+ self::updateTags($items, $db_items, $upd_itemids);
+ self::updatePreprocessing($items, $db_items, $upd_itemids);
+ self::updateParameters($items, $db_items, $upd_itemids);
+
+ $items = array_intersect_key($items, $upd_itemids);
+ $db_items = array_intersect_key($db_items, array_flip($upd_itemids));
- return ['itemids' => zbx_objectValues($items, 'itemid')];
+ self::addAuditLog(CAudit::ACTION_UPDATE, CAudit::RESOURCE_ITEM, $items, $db_items);
}
/**
- * Delete items.
- *
* @param array $itemids
*
+ * @throws APIException
+ *
* @return array
*/
- public function delete(array $itemids) {
+ public function delete(array $itemids): array {
$this->validateDelete($itemids, $db_items);
- CItemManager::delete($itemids);
-
- $this->addAuditBulk(CAudit::ACTION_DELETE, CAudit::RESOURCE_ITEM, $db_items);
+ self::deleteForce($db_items);
return ['itemids' => $itemids];
}
/**
- * Validates the input parameters for the delete() method.
+ * @param array $itemids
+ * @param array|null $db_items
*
- * @param array $itemids [IN/OUT]
- * @param array $db_items [OUT]
- *
- * @throws APIException if the input is invalid.
+ * @throws APIException
*/
- private function validateDelete(array &$itemids, array &$db_items = null) {
+ private function validateDelete(array $itemids, ?array &$db_items): void {
$api_input_rules = ['type' => API_IDS, 'flags' => API_NOT_EMPTY, 'uniq' => true];
+
if (!CApiInputValidator::validate($api_input_rules, $itemids, '/', $error)) {
self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
$db_items = $this->get([
- 'output' => ['itemid', 'name', 'templateid', 'flags'],
+ 'output' => ['itemid', 'name', 'templateid'],
'itemids' => $itemids,
'editable' => true,
'preservekeys' => true
]);
- foreach ($itemids as $itemid) {
- if (!array_key_exists($itemid, $db_items)) {
- self::exception(ZBX_API_ERROR_PERMISSIONS,
- _('No permissions to referred object or it does not exist!')
- );
+ if (count($db_items) != count($itemids)) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _('No permissions to referred object or it does not exist!'));
+ }
+
+ foreach ($itemids as $i => $itemid) {
+ if ($db_items[$itemid]['templateid'] != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.', '/'.($i + 1),
+ _('cannot delete inherited item')
+ ));
}
+ }
+ }
- $db_item = $db_items[$itemid];
+ /**
+ * @param array $templateids
+ * @param array $hostids
+ */
+ public static function linkTemplateObjects(array $templateids, array $hostids): void {
+ $db_items = DB::select('items', [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'inventory_link', 'logtimefmt', 'description', 'status'
+ ], array_diff(CItemType::FIELD_NAMES, ['interfaceid', 'parameters'])),
+ 'filter' => [
+ 'hostid' => $templateids,
+ 'flags' => ZBX_FLAG_DISCOVERY_NORMAL,
+ 'type' => self::SUPPORTED_ITEM_TYPES
+ ],
+ 'preservekeys' => true
+ ]);
- if ($db_item['templateid'] != 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Cannot delete templated item.'));
+ if (!$db_items) {
+ return;
+ }
+
+ self::addInternalFields($db_items);
+
+ $items = [];
+
+ foreach ($db_items as $db_item) {
+ $item = array_intersect_key($db_item, array_flip(['itemid', 'type']));
+
+ if ($db_item['type'] == ITEM_TYPE_SCRIPT) {
+ $item += ['parameters' => []];
}
+
+ $items[] = $item + [
+ 'preprocessing' => [],
+ 'tags' => []
+ ];
}
+
+ self::addAffectedObjects($items, $db_items);
+
+ $items = array_values($db_items);
+
+ foreach ($items as &$item) {
+ if (array_key_exists('parameters', $item)) {
+ $item['parameters'] = array_values($item['parameters']);
+ }
+
+ $item['preprocessing'] = array_values($item['preprocessing']);
+ $item['tags'] = array_values($item['tags']);
+ }
+ unset($item);
+
+ self::inherit($items, [], $hostids);
}
- public function syncTemplates($data) {
- $data['templateids'] = zbx_toArray($data['templateids']);
- $data['hostids'] = zbx_toArray($data['hostids']);
+ /**
+ * @inheritDoc
+ */
+ protected static function inherit(array $items, array $db_items = [], array $hostids = null,
+ bool $is_dep_items = false): void {
+ $tpl_links = self::getTemplateLinks($items, $hostids);
+
+ if ($hostids === null) {
+ self::filterObjectsToInherit($items, $db_items, $tpl_links);
- $output = [];
- foreach ($this->fieldRules as $field_name => $rules) {
- if (!array_key_exists('system', $rules) && !array_key_exists('host', $rules)) {
- $output[] = $field_name;
+ if (!$items) {
+ return;
}
}
- $tpl_items = $this->get([
- 'output' => $output,
- 'selectPreprocessing' => ['type', 'params', 'error_handler', 'error_handler_params'],
- 'selectTags' => ['tag', 'value'],
- 'hostids' => $data['templateids'],
- 'filter' => ['flags' => ZBX_FLAG_DISCOVERY_NORMAL],
- 'preservekeys' => true,
- 'nopermissions' => true
- ]);
+ self::checkDoubleInheritedNames($items, $db_items, $tpl_links);
- foreach ($tpl_items as &$tpl_item) {
- if ($tpl_item['type'] == ITEM_TYPE_HTTPAGENT) {
- if (array_key_exists('query_fields', $tpl_item) && is_array($tpl_item['query_fields'])) {
- $tpl_item['query_fields'] = $tpl_item['query_fields']
- ? json_encode($tpl_item['query_fields'])
- : '';
- }
+ if ($hostids !== null && !$is_dep_items) {
+ $dep_items_to_link = [];
+
+ $item_indexes = array_flip(array_column($items, 'itemid'));
- if (array_key_exists('headers', $tpl_item) && is_array($tpl_item['headers'])) {
- $tpl_item['headers'] = $this->headersArrayToString($tpl_item['headers']);
+ foreach ($items as $i => $item) {
+ if ($item['type'] == ITEM_TYPE_DEPENDENT) {
+ $dep_items_to_link[$item_indexes[$item['master_itemid']]][$i] = $item;
+
+ unset($items[$i]);
}
}
+ }
+
+ $chunks = self::getInheritChunks($items, $tpl_links);
+
+ foreach ($chunks as $chunk) {
+ $_items = array_intersect_key($items, array_flip($chunk['item_indexes']));
+ $_db_items = array_intersect_key($db_items, array_flip(array_column($_items, 'itemid')));
+ $_hostids = array_keys($chunk['hosts']);
+
+ self::inheritChunk($_items, $_db_items, $tpl_links, $_hostids);
+ }
+
+ if ($hostids !== null && !$is_dep_items) {
+ self::inheritDependentItems($dep_items_to_link, $items, $hostids);
+ }
+ }
+
+ /**
+ * @param array $items
+ * @param array $db_items
+ * @param array $tpl_links
+ * @param array $hostids
+ */
+ protected static function inheritChunk(array $items, array $db_items, array $tpl_links, array $hostids): void {
+ $items_to_link = [];
+ $items_to_update = [];
+
+ foreach ($items as $i => $item) {
+ if (!array_key_exists($item['itemid'], $db_items)) {
+ $items_to_link[] = $item;
+ }
else {
- $tpl_item['query_fields'] = '';
- $tpl_item['headers'] = '';
+ $items_to_update[] = $item;
+ }
+
+ unset($items[$i]);
+ }
+
+ $ins_items = [];
+ $upd_items = [];
+ $upd_db_items = [];
+
+ if ($items_to_link) {
+ $upd_db_items = self::getChildObjectsUsingName($items_to_link, $hostids);
+
+ if ($upd_db_items) {
+ $upd_items = self::getUpdChildObjectsUsingName($items_to_link, $upd_db_items);
}
+
+ $ins_items = self::getInsChildObjects($items_to_link, $upd_db_items, $tpl_links, $hostids);
}
- unset($tpl_item);
- $this->inherit($tpl_items, $data['hostids']);
+ if ($items_to_update) {
+ $_upd_db_items = self::getChildObjectsUsingTemplateid($items_to_update, $db_items, $hostids);
+ $_upd_items = self::getUpdChildObjectsUsingTemplateid($items_to_update, $db_items, $_upd_db_items);
+
+ self::checkDuplicates($_upd_items, $_upd_db_items);
+
+ $upd_items = array_merge($upd_items, $_upd_items);
+ $upd_db_items += $_upd_db_items;
+ }
+
+ self::setChildMasterItemIds($upd_items, $ins_items, $hostids);
+
+ $edit_items = array_merge($upd_items, $ins_items);
+
+ self::checkDependentItems($edit_items, $upd_db_items, true);
+ self::checkInventoryLinks($edit_items, $upd_db_items, true);
- return true;
+ self::addInterfaceIds($upd_items, $upd_db_items, $ins_items);
+
+ if ($upd_items) {
+ self::updateForce($upd_items, $upd_db_items);
+ }
+
+ if ($ins_items) {
+ self::createForce($ins_items);
+ }
+
+ self::inherit(array_merge($upd_items, $ins_items), $upd_db_items);
}
/**
- * Check item specific fields:
- * - validate history and trends using simple interval parser and user macro parser;
- * - validate item preprocessing.
- *
- * @param array $item An array of single item data.
- * @param string $method A string of "create" or "update" method.
+ * @param array $items
+ * @param array $db_items
+ * @param array $hostids
*
- * @throws APIException if the input is invalid.
+ * @return array
*/
- protected function checkSpecificFields(array $item, $method) {
- if (array_key_exists('history', $item)
- && !validateTimeUnit($item['history'], SEC_PER_HOUR, 25 * SEC_PER_YEAR, true, $error,
- ['usermacros' => true])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'history', $error)
- );
- }
+ private static function getChildObjectsUsingTemplateid(array $items, array $db_items, array $hostids): array {
+ $upd_db_items = DB::select('items', [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'inventory_link', 'logtimefmt', 'description', 'status'
+ ], array_diff(CItemType::FIELD_NAMES, ['parameters'])),
+ 'filter' => [
+ 'templateid' => array_keys($db_items),
+ 'hostid' => $hostids
+ ],
+ 'preservekeys' => true
+ ]);
- if (array_key_exists('trends', $item)
- && !validateTimeUnit($item['trends'], SEC_PER_DAY, 25 * SEC_PER_YEAR, true, $error,
- ['usermacros' => true])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'trends', $error)
- );
+ self::addInternalFields($upd_db_items);
+
+ if ($upd_db_items) {
+ $parent_indexes = array_flip(array_column($items, 'itemid'));
+ $upd_items = [];
+
+ foreach ($upd_db_items as $upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['templateid']]];
+ $db_item = $db_items[$upd_db_item['templateid']];
+
+ $upd_item = [
+ 'itemid' => $upd_db_item['itemid'],
+ 'type' => $item['type']
+ ];
+
+ $upd_item += array_intersect_key([
+ 'tags' => [],
+ 'preprocessing' => [],
+ 'parameters' => []
+ ], $db_item);
+
+ $upd_items[] = $upd_item;
+ }
+
+ self::addAffectedObjects($upd_items, $upd_db_items);
}
+
+ return $upd_db_items;
}
/**
- * Check, if items that are about to be inserted or updated violate the rule:
- * only one item can be linked to a inventory filed.
- * If everything is ok, function return true or throws Exception otherwise
- *
- * @static
- *
* @param array $items
- * @param bool $update whether this is update operation
+ * @param array $db_items
+ * @param array $upd_db_items
*
- * @return bool
+ * @return array
*/
- public static function validateInventoryLinks(array $items, $update = false) {
- // inventory link field is not being updated, or being updated to 0, no need to validate anything then
- foreach ($items as $i => $item) {
- if (!isset($item['inventory_link']) || $item['inventory_link'] == 0) {
- unset($items[$i]);
+ private static function getUpdChildObjectsUsingTemplateid(array $items, array $db_items,
+ array $upd_db_items): array {
+ $parent_indexes = [];
+
+ foreach ($items as $i => &$item) {
+ if (!array_key_exists($item['itemid'], $db_items)) {
+ continue;
}
- }
- if (zbx_empty($items)) {
- return true;
+ $item = self::unsetNestedObjectIds($item);
+ $parent_indexes[$item['itemid']] = $i;
}
+ unset($item);
- $possibleHostInventories = getHostInventories();
- if ($update) {
- // for successful validation we need three fields for each item: inventory_link, hostid and key_
- // problem is, that when we are updating an item, we might not have them, because they are not changed
- // so, we need to find out what is missing and use API to get the lacking info
- $itemsWithNoHostId = [];
- $itemsWithNoInventoryLink = [];
- $itemsWithNoKeys = [];
- foreach ($items as $item) {
- if (!isset($item['inventory_link'])) {
- $itemsWithNoInventoryLink[$item['itemid']] = $item['itemid'];
- }
- if (!isset($item['hostid'])) {
- $itemsWithNoHostId[$item['itemid']] = $item['itemid'];
- }
- if (!isset($item['key_'])) {
- $itemsWithNoKeys[$item['itemid']] = $item['itemid'];
- }
- }
- $itemsToFind = array_merge($itemsWithNoHostId, $itemsWithNoInventoryLink, $itemsWithNoKeys);
+ $upd_items = [];
- // are there any items with lacking info?
- if (!zbx_empty($itemsToFind)) {
- $missingInfo = API::Item()->get([
- 'output' => ['hostid', 'inventory_link', 'key_'],
- 'filter' => ['itemid' => $itemsToFind],
- 'nopermissions' => true
- ]);
- $missingInfo = zbx_toHash($missingInfo, 'itemid');
+ foreach ($upd_db_items as $upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['templateid']]];
- // appending host ids, inventory_links and keys where they are needed
- foreach ($items as $i => $item) {
- if (isset($missingInfo[$item['itemid']])) {
- if (!isset($items[$i]['hostid'])) {
- $items[$i]['hostid'] = $missingInfo[$item['itemid']]['hostid'];
- }
- if (!isset($items[$i]['inventory_link'])) {
- $items[$i]['inventory_link'] = $missingInfo[$item['itemid']]['inventory_link'];
- }
- if (!isset($items[$i]['key_'])) {
- $items[$i]['key_'] = $missingInfo[$item['itemid']]['key_'];
- }
+ $upd_items[] = array_intersect_key($upd_db_item,
+ array_flip(['itemid', 'hostid', 'templateid', 'host_status'])
+ ) + $item;
+ }
+
+ return $upd_items;
+ }
+
+ /**
+ * @param array $items
+ * @param array $hostids
+ *
+ * @return array
+ */
+ private static function getChildObjectsUsingName(array $items, array $hostids): array {
+ $result = DBselect(
+ 'SELECT i.itemid,ht.hostid,i.key_,i.templateid,i.flags,h.status AS host_status,'.
+ 'ht.templateid AS parent_hostid'.
+ ' FROM hosts_templates ht,items i,hosts h'.
+ ' WHERE ht.hostid=i.hostid'.
+ ' AND ht.hostid=h.hostid'.
+ ' AND '.dbConditionId('ht.templateid', array_unique(array_column($items, 'hostid'))).
+ ' AND '.dbConditionString('i.key_', array_unique(array_column($items, 'key_'))).
+ ' AND '.dbConditionId('ht.hostid', $hostids)
+ );
+
+ $upd_db_items = [];
+ $parent_indexes = [];
+
+ while ($row = DBfetch($result)) {
+ foreach ($items as $i => $item) {
+ if (bccomp($row['parent_hostid'], $item['hostid']) == 0 && $row['key_'] === $item['key_']) {
+ if ($row['flags'] == $item['flags'] && $row['templateid'] == 0) {
+ $upd_db_items[$row['itemid']] = $row;
+ $parent_indexes[$row['itemid']] = $i;
+ }
+ else {
+ self::showObjectMismatchError($item, $row);
}
}
}
}
- $hostids = zbx_objectValues($items, 'hostid');
+ if (!$upd_db_items) {
+ return [];
+ }
- // getting all inventory links on every affected host
- $itemsOnHostsInfo = API::Item()->get([
- 'output' => ['key_', 'inventory_link', 'hostid'],
- 'filter' => ['hostid' => $hostids],
- 'nopermissions' => true
- ]);
+ $options = [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'inventory_link', 'logtimefmt', 'description', 'status'
+ ], array_diff(CItemType::FIELD_NAMES, ['parameters'])),
+ 'itemids' => array_keys($upd_db_items)
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
- // now, changing array to: 'hostid' => array('key_'=>'inventory_link')
- $linksOnHostsCurr = [];
- foreach ($itemsOnHostsInfo as $info) {
- // 0 means no link - we are not interested in those ones
- if ($info['inventory_link'] != 0) {
- if (!isset($linksOnHostsCurr[$info['hostid']])) {
- $linksOnHostsCurr[$info['hostid']] = [$info['key_'] => $info['inventory_link']];
- }
- else{
- $linksOnHostsCurr[$info['hostid']][$info['key_']] = $info['inventory_link'];
+ while ($row = DBfetch($result)) {
+ $upd_db_items[$row['itemid']] = $row + $upd_db_items[$row['itemid']];
+ }
+
+ $upd_items = [];
+
+ foreach ($upd_db_items as $upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['itemid']]];
+
+ $upd_items[] = [
+ 'itemid' => $upd_db_item['itemid'],
+ 'type' => $item['type'],
+ 'tags' => [],
+ 'preprocessing' => [],
+ 'parameters' => []
+ ];
+ }
+
+ self::addAffectedObjects($upd_items, $upd_db_items);
+
+ return $upd_db_items;
+ }
+
+ /**
+ * @param array $items
+ * @param array $upd_db_items
+ *
+ * @return array
+ */
+ private static function getUpdChildObjectsUsingName(array $items, array $upd_db_items): array {
+ $parent_indexes = [];
+
+ foreach ($items as $i => &$item) {
+ $item = self::unsetNestedObjectIds($item);
+ $parent_indexes[$item['hostid']][$item['key_']] = $i;
+ }
+ unset($item);
+
+ $upd_items = [];
+
+ foreach ($upd_db_items as $upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['parent_hostid']][$upd_db_item['key_']]];
+
+ $upd_item = [
+ 'itemid' => $upd_db_item['itemid'],
+ 'hostid' => $upd_db_item['hostid'],
+ 'templateid' => $item['itemid'],
+ 'host_status' => $upd_db_item['host_status']
+ ] + $item;
+
+ $upd_item += [
+ 'tags' => [],
+ 'preprocessing' => [],
+ 'parameters' => []
+ ];
+
+ $upd_items[] = $upd_item;
+ }
+
+ return $upd_items;
+ }
+
+ /**
+ * @param array $items
+ * @param array $upd_db_items
+ * @param array $tpl_links
+ * @param array $hostids
+ *
+ * @return array
+ */
+ private static function getInsChildObjects(array $items, array $upd_db_items, array $tpl_links,
+ array $hostids): array {
+ $ins_items = [];
+
+ $upd_item_keys = [];
+
+ foreach ($upd_db_items as $upd_db_item) {
+ $upd_item_keys[$upd_db_item['hostid']][] = $upd_db_item['key_'];
+ }
+
+ foreach ($items as $item) {
+ $item['uuid'] = '';
+ $item = self::unsetNestedObjectIds($item);
+
+ foreach ($tpl_links[$item['hostid']] as $host) {
+ if (!in_array($host['hostid'], $hostids)
+ || (array_key_exists($host['hostid'], $upd_item_keys)
+ && in_array($item['key_'], $upd_item_keys[$host['hostid']]))) {
+ continue;
}
+
+ $ins_items[] = [
+ 'hostid' => $host['hostid'],
+ 'templateid' => $item['itemid'],
+ 'host_status' => $host['status']
+ ] + array_diff_key($item, array_flip(['itemid']));
}
}
- $linksOnHostsFuture = [];
+ return $ins_items;
+ }
- foreach ($items as $item) {
- // checking if inventory_link value is a valid number
- if ($update || $item['value_type'] != ITEM_VALUE_TYPE_LOG) {
- // does inventory field with provided number exists?
- if (!isset($possibleHostInventories[$item['inventory_link']])) {
- $maxVar = max(array_keys($possibleHostInventories));
- self::exception(
- ZBX_API_ERROR_PARAMETERS,
- _s('Item "%1$s" cannot populate a missing host inventory field number "%2$d". Choices are: from 0 (do not populate) to %3$d.', $item['name'], $item['inventory_link'], $maxVar)
+ /**
+ * @param array $templateids
+ * @param array|null $hostids
+ */
+ public static function unlinkTemplateObjects(array $templateids, array $hostids = null): void {
+ $hostids_condition = $hostids ? ' AND '.dbConditionId('ii.hostid', $hostids) : '';
+
+ $result = DBselect(
+ 'SELECT ii.itemid,ii.name,ii.type,ii.key_,ii.value_type,ii.templateid,ii.uuid,ii.valuemapid,ii.hostid,'.
+ 'h.status AS host_status'.
+ ' FROM items i,items ii,hosts h'.
+ ' WHERE i.itemid=ii.templateid'.
+ ' AND ii.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.hostid', $templateids).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_NORMAL]).
+ ' AND '.dbConditionInt('i.type', self::SUPPORTED_ITEM_TYPES).
+ $hostids_condition
+ );
+
+ $items = [];
+ $db_items = [];
+ $i = 0;
+ $tpl_itemids = [];
+
+ while ($row = DBfetch($result)) {
+ $item = [
+ 'itemid' => $row['itemid'],
+ 'type' => $row['type'],
+ 'templateid' => 0
+ ];
+
+ if ($row['host_status'] == HOST_STATUS_TEMPLATE) {
+ $item += ['uuid' => generateUuidV4()];
+ }
+
+ if ($row['valuemapid'] != 0) {
+ $item += ['valuemapid' => 0];
+
+ if ($row['host_status'] == HOST_STATUS_TEMPLATE) {
+ $tpl_itemids[$i] = $row['itemid'];
+ $item += array_intersect_key($row,
+ array_flip(['key_', 'hostid', 'host_status', 'value_type'])
);
}
}
- if (!isset($linksOnHostsFuture[$item['hostid']])) {
- $linksOnHostsFuture[$item['hostid']] = [$item['key_'] => $item['inventory_link']];
- }
- else {
- $linksOnHostsFuture[$item['hostid']][$item['key_']] = $item['inventory_link'];
- }
+ $items[$i++] = $item;
+ $db_items[$row['itemid']] = $row;
}
- foreach ($linksOnHostsFuture as $hostId => $linkFuture) {
- if (isset($linksOnHostsCurr[$hostId])) {
- $futureSituation = array_merge($linksOnHostsCurr[$hostId], $linksOnHostsFuture[$hostId]);
- }
- else {
- $futureSituation = $linksOnHostsFuture[$hostId];
+ if ($items) {
+ self::updateForce($items, $db_items);
+
+ if ($tpl_itemids) {
+ $items = array_intersect_key($items, $tpl_itemids);
+ $db_items = array_intersect_key($db_items, array_flip($tpl_itemids));
+
+ self::inherit($items, $db_items);
}
- $valuesCount = array_count_values($futureSituation);
+ }
+ }
- // if we have a duplicate inventory links after merging - we are in trouble
- if (max($valuesCount) > 1) {
- // what inventory field caused this conflict?
- $conflictedLink = array_keys($valuesCount, max($valuesCount));
- $conflictedLink = reset($conflictedLink);
+ /**
+ * @param array $templateids
+ * @param array|null $hostids
+ */
+ public static function clearTemplateObjects(array $templateids, array $hostids = null): void {
+ $hostids_condition = $hostids ? ' AND '.dbConditionId('ii.hostid', $hostids) : '';
+
+ $db_items = DBfetchArrayAssoc(DBselect(
+ 'SELECT ii.itemid,ii.name'.
+ ' FROM items i,items ii'.
+ ' WHERE i.itemid=ii.templateid'.
+ ' AND '.dbConditionId('i.hostid', $templateids).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_NORMAL]).
+ ' AND '.dbConditionInt('i.type', self::SUPPORTED_ITEM_TYPES).
+ $hostids_condition
+ ), 'itemid');
+
+ if ($db_items) {
+ self::deleteForce($db_items);
+ }
+ }
+
+ /**
+ * @param array $items
+ * @param array $db_items
+ * @param bool $inherited
+ *
+ * @throws APIException
+ */
+ private static function checkInventoryLinks(array $items, array $db_items = [], bool $inherited = false): void {
+ $item_indexes = [];
+ $del_links = [];
- // which of updated items populates this link?
- $beingSavedItemName = '';
- $names = [];
+ $value_types = [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT];
- foreach ($items as $item) {
- if (count($names) == 2) {
- break;
+ foreach ($items as $i => $item) {
+ $check = false;
+
+ if ($item['flags'] == ZBX_FLAG_DISCOVERY_NORMAL && in_array($item['value_type'], $value_types)) {
+ if (array_key_exists('inventory_link', $item)) {
+ if (!array_key_exists('itemid', $item)) {
+ if ($item['inventory_link'] != 0) {
+ $check = true;
+ $item_indexes[$item['hostid']][] = $i;
+ }
}
-
- if ($item['inventory_link'] == $conflictedLink) {
- if (isset($item['name'])) {
- $beingSavedItemName = $item['name'];
+ else {
+ if ($item['inventory_link'] != 0) {
+ if ($item['inventory_link'] != $db_items[$item['itemid']]['inventory_link']) {
+ $check = true;
+ $item_indexes[$item['hostid']][] = $i;
+
+ if ($db_items[$item['itemid']]['inventory_link'] != 0) {
+ $del_links[$item['hostid']][] = $db_items[$item['itemid']]['inventory_link'];
+ }
+ }
}
- else {
- $thisItem = API::Item()->get([
- 'output' => ['name'],
- 'filter' => ['itemid' => $item['itemid']],
- 'nopermissions' => true
- ]);
- $beingSavedItemName = $thisItem[0]['name'];
+ elseif ($db_items[$item['itemid']]['inventory_link'] != 0) {
+ $del_links[$item['hostid']][] = $db_items[$item['itemid']]['inventory_link'];
}
-
- $names[] = $beingSavedItemName;
}
}
+ }
+ elseif (array_key_exists('itemid', $item) && $db_items[$item['itemid']]['inventory_link'] != 0) {
+ $del_links[$item['hostid']][] = $db_items[$item['itemid']]['inventory_link'];
+ }
- // Case when at least two templates that are being linked have items that populate same inventory field.
- if (count($names) == 2) {
- [$name1, $name2] = $names;
- }
- else {
- // name of the original item that already populates the field
- $originalItem = API::Item()->get([
- 'output' => ['name'],
- 'filter' => [
- 'hostid' => $hostId,
- 'inventory_link' => $conflictedLink
- ],
- 'nopermissions' => true
- ]);
+ if (!$check) {
+ unset($items[$i]);
+ }
+ }
- $name1 = reset($names);
- $name2 = $originalItem[0]['name'];
- }
+ if (!$items) {
+ return;
+ }
- self::exception(
- ZBX_API_ERROR_PARAMETERS,
- _s(
- 'Two items ("%1$s" and "%2$s") cannot populate one host inventory field "%3$s", this would lead to a conflict.',
- $name1,
- $name2,
- $possibleHostInventories[$conflictedLink]['title']
- )
- );
+ $api_input_rules = ['type' => API_OBJECTS, 'uniq' => [['hostid', 'inventory_link']], 'fields' => [
+ 'hostid' => ['type' => API_ANY],
+ 'inventory_link' => ['type' => API_ANY]
+ ]];
+
+ if (!CApiInputValidator::validateUniqueness($api_input_rules, $items, '/', $error)) {
+ if ($inherited) {
+ $_item_indexes = [];
+
+ foreach ($items as $i => $item) {
+ if (array_key_exists($item['hostid'], $_item_indexes)
+ && array_key_exists($item['inventory_link'], $_item_indexes[$item['hostid']])) {
+ $error = $item['host_status'] == HOST_STATUS_TEMPLATE
+ ? _('Cannot inherit item with key "%1$s" of template "%2$s" and item with key "%3$s" of template "%4$s" to template "%5$s", because they would populate the same inventory field "%6$s".')
+ : _('Cannot inherit item with key "%1$s" of template "%2$s" and item with key "%3$s" of template "%4$s" to host "%5$s", because they would populate the same inventory field "%6$s".');
+
+ $_item = $items[$_item_indexes[$item['hostid']][$item['inventory_link']]];
+
+ $templates = DBfetchArrayAssoc(DBselect(
+ 'SELECT i.itemid,h.host'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.itemid', [$_item['templateid'], $item['templateid']])
+ ), 'itemid');
+
+ $hosts = DB::select('hosts', [
+ 'output' => ['host'],
+ 'hostids' => $item['hostid']
+ ]);
+
+ $inventory_fields = getHostInventories();
+
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $_item['key_'],
+ $templates[$_item['templateid']]['host'], $item['key_'],
+ $templates[$item['templateid']]['host'], $hosts[0]['host'],
+ $inventory_fields[$item['inventory_link']]['title']
+ ));
+ }
+
+ $_item_indexes[$item['hostid']][$item['inventory_link']] = $i;
+ }
}
+
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
- return true;
+ $options = [
+ 'output' => ['hostid', 'inventory_link', 'key_'],
+ 'filter' => [
+ 'hostid' => array_unique(array_column($items, 'hostid')),
+ 'inventory_link' => array_unique(array_column($items, 'inventory_link'))
+ ]
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
+
+ while ($row = DBfetch($result)) {
+ if (array_key_exists($row['hostid'], $del_links)
+ && in_array($row['inventory_link'], $del_links[$row['hostid']])) {
+ continue;
+ }
+
+ foreach ($item_indexes[$row['hostid']] as $i) {
+ if ($row['inventory_link'] == $items[$i]['inventory_link']) {
+ $item = $items[$i];
+
+ if ($inherited) {
+ $error = $item['host_status'] == HOST_STATUS_TEMPLATE
+ ? _('Cannot inherit item with key "%1$s" of template "%2$s" to template "%3$s", because its inventory field "%4$s" is already populated by the item with key "%5$s".')
+ : _('Cannot inherit item with key "%1$s" of template "%2$s" to host "%3$s", because its inventory field "%4$s" is already populated by the item with key "%5$s".');
+
+ $template = DBfetch(DBselect(
+ 'SELECT h.host'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.itemid', [$item['templateid']])
+ ));
+
+ $hosts = DB::select('hosts', [
+ 'output' => ['host'],
+ 'hostids' => $item['hostid']
+ ]);
+
+ $inventory_fields = getHostInventories();
+
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $item['key_'], $template['host'],
+ $hosts[0]['host'], $inventory_fields[$item['inventory_link']]['title'], $row['key_']
+ ));
+ }
+ else {
+ $error = $item['host_status'] == HOST_STATUS_TEMPLATE
+ ? _('Cannot assign the inventory field "%1$s" to the item with key "%2$s" of template "%3$s", because it is already populated by the item with key "%4$s"')
+ : _('Cannot assign the inventory field "%1$s" to the item with key "%2$s" of host "%3$s", because it is already populated by the item with key "%4$s".');
+
+ $inventory_fields = getHostInventories();
+
+ $hosts = DB::select('hosts', [
+ 'output' => ['host'],
+ 'hostids' => $item['hostid']
+ ]);
+
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error,
+ $inventory_fields[$item['inventory_link']]['title'], $item['key_'], $hosts[0]['host'],
+ $row['key_']
+ ));
+ }
+ }
+ }
+ }
}
- public function addRelatedObjects(array $options, array $result) {
+ protected function addRelatedObjects(array $options, array $result) {
$result = parent::addRelatedObjects($options, $result);
$itemids = array_keys($result);
@@ -1308,4 +1811,170 @@ class CItem extends CItemGeneral {
return $sqlParts;
}
+
+ /**
+ * @param array $db_items
+ */
+ public static function deleteForce(array $db_items): void {
+ self::addInheritedItems($db_items);
+ self::addDependentItems($db_items, $del_ruleids, $db_item_prototypes);
+
+ if ($del_ruleids) {
+ CDiscoveryRuleManager::delete($del_ruleids);
+ }
+
+ if ($db_item_prototypes) {
+ CItemPrototype::deleteForce($db_item_prototypes);
+ }
+
+ $del_itemids = array_keys($db_items);
+
+ self::deleteAffectedGraphs($del_itemids);
+ self::resetGraphsYAxis($del_itemids);
+ self::deleteFromFavoriteGraphs($del_itemids);
+
+ self::deleteAffectedTriggers($del_itemids);
+
+ self::clearHistoryAndTrends($del_itemids);
+
+ DB::delete('graphs_items', ['itemid' => $del_itemids]);
+ DB::delete('widget_field', ['value_itemid' => $del_itemids]);
+ DB::delete('item_discovery', ['itemid' => $del_itemids]);
+ DB::delete('item_parameter', ['itemid' => $del_itemids]);
+ DB::delete('item_preproc', ['itemid' => $del_itemids]);
+ DB::delete('item_rtdata', ['itemid' => $del_itemids]);
+ DB::delete('item_tag', ['itemid' => $del_itemids]);
+ DB::update('items', [
+ 'values' => ['templateid' => 0, 'master_itemid' => 0],
+ 'where' => ['itemid' => $del_itemids]
+ ]);
+ DB::delete('items', ['itemid' => $del_itemids]);
+
+ self::addAuditLog(CAudit::ACTION_DELETE, CAudit::RESOURCE_ITEM, $db_items);
+ }
+
+ /**
+ * Add the dependent items of the given items to the given item array. Also add the dependent LLD rules and item
+ * prototypes to the given appropriate variables.
+ *
+ * @param array $db_items
+ * @param array|null $del_ruleids
+ * @param array|null $db_item_prototypes
+ */
+ protected static function addDependentItems(array &$db_items, array &$del_ruleids = null,
+ array &$db_item_prototypes = null): void {
+ $del_ruleids = [];
+ $db_item_prototypes = [];
+
+ $master_itemids = array_keys($db_items);
+
+ do {
+ $options = [
+ 'output' => ['itemid', 'name', 'flags'],
+ 'filter' => ['master_itemid' => $master_itemids]
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
+
+ $master_itemids = [];
+
+ while ($row = DBfetch($result)) {
+ if ($row['flags'] == ZBX_FLAG_DISCOVERY_RULE) {
+ $del_ruleids[] = $row['itemid'];
+ }
+ elseif ($row['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
+ $master_itemids[] = $row['itemid'];
+
+ $db_item_prototypes[$row['itemid']] = array_diff_key($row, array_flip(['flags']));
+ }
+ else {
+ if (!array_key_exists($row['itemid'], $db_items)) {
+ $master_itemids[] = $row['itemid'];
+
+ $db_items[$row['itemid']] = array_diff_key($row, array_flip(['flags']));
+ }
+ }
+ }
+ } while ($master_itemids);
+ }
+
+ /**
+ * Delete graphs, which would remain without items after the given items deletion.
+ *
+ * @param array $del_itemids
+ */
+ private static function deleteAffectedGraphs(array $del_itemids): void {
+ $del_graphids = DBfetchColumn(DBselect(
+ 'SELECT DISTINCT gi.graphid'.
+ ' FROM graphs_items gi'.
+ ' WHERE '.dbConditionId('gi.itemid', $del_itemids).
+ ' AND NOT EXISTS ('.
+ 'SELECT NULL'.
+ ' FROM graphs_items gii'.
+ ' WHERE gii.graphid=gi.graphid'.
+ ' AND '.dbConditionId('gii.itemid', $del_itemids, true).
+ ')'
+ ), 'graphid');
+
+ if ($del_graphids) {
+ CGraphManager::delete($del_graphids);
+ }
+ }
+
+ /**
+ * Delete the latest data graph of the given items from the favorites.
+ *
+ * @param array $del_itemids
+ */
+ private static function deleteFromFavoriteGraphs(array $del_itemids): void {
+ DB::delete('profiles', [
+ 'idx' => 'web.favorite.graphids',
+ 'source' => 'itemid',
+ 'value_id' => $del_itemids
+ ]);
+ }
+
+ /**
+ * Clear the history and trends of the given items.
+ *
+ * @param array $del_itemids
+ */
+ private static function clearHistoryAndTrends(array $del_itemids): void {
+ global $DB;
+
+ $table_names = ['events'];
+
+ $timescale_extension = $DB['TYPE'] === ZBX_DB_POSTGRESQL
+ && CHousekeepingHelper::get(CHousekeepingHelper::DB_EXTENSION) === ZBX_DB_EXTENSION_TIMESCALEDB;
+
+ if (CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_MODE) == 1
+ && (!$timescale_extension || CHousekeepingHelper::get(CHousekeepingHelper::HK_HISTORY_GLOBAL) == 0)) {
+ array_push($table_names, 'history', 'history_log', 'history_str', 'history_text', 'history_uint');
+ }
+
+ if (CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_MODE) == 1
+ && (!$timescale_extension || CHousekeepingHelper::get(CHousekeepingHelper::HK_TRENDS_GLOBAL) == 0)) {
+ array_push($table_names, 'trends', 'trends_uint');
+ }
+
+ $ins_housekeeper = [];
+
+ foreach ($del_itemids as $del_itemid) {
+ foreach ($table_names as $table_name) {
+ $ins_housekeeper[] = [
+ 'tablename' => $table_name,
+ 'field' => 'itemid',
+ 'value' => $del_itemid
+ ];
+
+ if (count($ins_housekeeper) == ZBX_DB_MAX_INSERTS) {
+ DB::insertBatch('housekeeper', $ins_housekeeper);
+ $ins_housekeeper = [];
+ }
+ }
+ }
+
+ if ($ins_housekeeper) {
+ DB::insertBatch('housekeeper', $ins_housekeeper);
+ }
+ }
}
diff --git a/ui/include/classes/api/services/CItemGeneral.php b/ui/include/classes/api/services/CItemGeneral.php
index c6dcc174301..6c5746e16ce 100644
--- a/ui/include/classes/api/services/CItemGeneral.php
+++ b/ui/include/classes/api/services/CItemGeneral.php
@@ -38,1905 +38,1354 @@ abstract class CItemGeneral extends CApiService {
INTERFACE_TYPE_IPMI
];
- const ERROR_EXISTS_TEMPLATE = 'existsTemplate';
- const ERROR_EXISTS = 'exists';
- const ERROR_NO_INTERFACE = 'noInterface';
- const ERROR_INVALID_KEY = 'invalidKey';
-
- protected $fieldRules;
+ /**
+ * A list of supported preprocessing types.
+ *
+ * @var array
+ */
+ public const SUPPORTED_PREPROCESSING_TYPES = [];
/**
- * @abstract
+ * A list of preprocessing types that supports the "params" field.
*
- * @param array $options
+ * @var array
+ */
+ protected const PREPROC_TYPES_WITH_PARAMS = [];
+
+ /**
+ * A list of preprocessing types that supports the error handling.
*
- * @return array
+ * @var array
*/
- abstract public function get($options = []);
+ protected const PREPROC_TYPES_WITH_ERR_HANDLING = [];
- public function __construct() {
- parent::__construct();
-
- // template - if templated item, value is taken from template item, cannot be changed on host
- // system - values should not be updated
- // host - value should be null for template items
- $this->fieldRules = [
- 'type' => ['template' => 1],
- 'snmp_oid' => ['template' => 1],
- 'hostid' => [],
- 'name' => ['template' => 1],
- 'description' => [],
- 'key_' => ['template' => 1],
- 'master_itemid' => ['template' => 1],
- 'delay' => [],
- 'history' => [],
- 'trends' => [],
- 'status' => [],
- 'discover' => [],
- 'value_type' => ['template' => 1],
- 'trapper_hosts' => [],
- 'units' => ['template' => 1],
- 'formula' => ['template' => 1],
- 'error' => ['system' => 1],
- 'lastlogsize' => ['system' => 1],
- 'logtimefmt' => [],
- 'templateid' => ['system' => 1],
- 'valuemapid' => ['template' => 1],
- 'params' => [],
- 'ipmi_sensor' => ['template' => 1],
- 'authtype' => [],
- 'username' => [],
- 'password' => [],
- 'publickey' => [],
- 'privatekey' => [],
- 'mtime' => ['system' => 1],
- 'flags' => [],
- 'filter' => [],
- 'interfaceid' => ['host' => 1],
- 'inventory_link' => [],
- 'lifetime' => [],
- 'preprocessing' => ['template' => 1],
- 'overrides' => ['template' => 1],
- 'jmx_endpoint' => [],
- 'url' => ['template' => 1],
- 'timeout' => ['template' => 1],
- 'query_fields' => ['template' => 1],
- 'parameters' => ['template' => 1],
- 'posts' => ['template' => 1],
- 'status_codes' => ['template' => 1],
- 'follow_redirects' => ['template' => 1],
- 'post_type' => ['template' => 1],
- 'http_proxy' => ['template' => 1],
- 'headers' => ['template' => 1],
- 'retrieve_mode' => ['template' => 1],
- 'request_method' => ['template' => 1],
- 'output_format' => ['template' => 1],
- 'allow_traps' => [],
- 'ssl_cert_file' => ['template' => 1],
- 'ssl_key_file' => ['template' => 1],
- 'ssl_key_password' => ['template' => 1],
- 'verify_peer' => ['template' => 1],
- 'verify_host' => ['template' => 1]
- ];
+ /**
+ * A list of supported item types.
+ *
+ * @var array
+ */
+ protected const SUPPORTED_ITEM_TYPES = [];
- $this->errorMessages = array_merge($this->errorMessages, [
- self::ERROR_NO_INTERFACE => _('Cannot find host interface on "%1$s" for item key "%2$s".')
- ]);
- }
+ /**
+ * A list of field names for each of value types.
+ *
+ * @var array
+ */
+ protected const VALUE_TYPE_FIELD_NAMES = [];
/**
- * Check items data.
+ * Maximum number of inheritable items per iteration.
*
- * Any system field passed to the function will be unset.
+ * @var int
+ */
+ protected const INHERIT_CHUNK_SIZE = 1000;
+
+ /**
+ * @abstract
*
- * @throw APIException
+ * @param array $options
*
- * @param array $items passed by reference
- * @param bool $update
+ * @return array
*/
- protected function checkInput(array &$items, $update = false) {
- $api_input_rules = ['type' => API_OBJECT, 'fields' => [
- 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', static::SUPPORTED_ITEM_TYPES)]
- ]];
- if ($update) {
- unset($api_input_rules['fields']['type']['flags']);
- }
+ abstract public function get($options = []);
- foreach ($items as $num => $item) {
- $data = array_intersect_key($item, $api_input_rules['fields']);
- if (!CApiInputValidator::validate($api_input_rules, $data, '/'.($num + 1), $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
- }
- }
+ /**
+ * @param array $field_names
+ * @param array $items
+ * @param array|null $db_items
+ *
+ * @throws APIException
+ */
+ protected static function validateByType(array $field_names, array &$items, array $db_items = null): void {
+ $checked_fields = array_fill_keys($field_names, ['type' => API_ANY]);
- if ($update) {
- $itemDbFields = ['itemid' => null];
+ foreach ($items as $i => &$item) {
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => $checked_fields];
+ $db_item = ($db_items === null) ? null : $db_items[$item['itemid']];
+ $item_type = CItemTypeFactory::getObject($item['type']);
- $dbItemsFields = ['itemid', 'templateid'];
- foreach ($this->fieldRules as $field => $rule) {
- if (!isset($rule['system'])) {
- $dbItemsFields[] = $field;
- }
+ if ($db_item === null) {
+ $api_input_rules['fields'] += $item_type::getCreateValidationRules($item);
}
-
- $dbItems = $this->get([
- 'output' => $dbItemsFields,
- 'itemids' => zbx_objectValues($items, 'itemid'),
- 'editable' => true,
- 'preservekeys' => true
- ]);
-
- $dbHosts = API::Host()->get([
- 'output' => ['hostid', 'status', 'name'],
- 'hostids' => zbx_objectValues($dbItems, 'hostid'),
- 'templated_hosts' => true,
- 'editable' => true,
- 'preservekeys' => true
- ]);
- }
- else {
- $itemDbFields = [
- 'name' => null,
- 'key_' => null,
- 'hostid' => null,
- 'type' => null,
- 'value_type' => null,
- 'delay' => null
- ];
-
- $dbHosts = API::Host()->get([
- 'output' => ['hostid', 'status', 'name'],
- 'hostids' => zbx_objectValues($items, 'hostid'),
- 'templated_hosts' => true,
- 'editable' => true,
- 'preservekeys' => true
- ]);
-
- $discovery_rules = [];
-
- if ($this instanceof CItemPrototype) {
- $itemDbFields['ruleid'] = null;
- $druleids = zbx_objectValues($items, 'ruleid');
-
- if ($druleids) {
- $discovery_rules = API::DiscoveryRule()->get([
- 'output' => ['hostid'],
- 'itemids' => $druleids,
- 'preservekeys' => true
- ]);
+ elseif ($db_item['templateid'] != 0) {
+ if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
+ $item += array_intersect_key($db_item, array_flip(['allow_traps']));
}
- }
- }
-
- // interfaces
- $interfaces = API::HostInterface()->get([
- 'output' => ['interfaceid', 'hostid', 'type'],
- 'hostids' => zbx_objectValues($dbHosts, 'hostid'),
- 'nopermissions' => true,
- 'preservekeys' => true
- ]);
-
- if ($update) {
- $updateDiscoveredValidator = new CUpdateDiscoveredValidator([
- 'allowed' => ['itemid', 'status'],
- 'messageAllowedField' => _('Cannot update "%2$s" for a discovered item "%1$s".')
- ]);
- foreach ($items as &$item) {
- // check permissions
- if (!array_key_exists($item['itemid'], $dbItems)) {
- self::exception(ZBX_API_ERROR_PERMISSIONS,
- _('No permissions to referred object or it does not exist!')
- );
+ elseif ($item['type'] == ITEM_TYPE_SSH) {
+ $item += array_intersect_key($db_item, array_flip(['authtype']));
}
- $dbItem = $dbItems[$item['itemid']];
-
- if (array_key_exists('hostid', $item) && bccomp($dbItem['hostid'], $item['hostid']) != 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'hostid', _('cannot be changed'))
- );
+ if ($item['type'] === ITEM_TYPE_SSH && $item['authtype'] == ITEM_AUTHTYPE_PUBLICKEY
+ && $db_item['authtype'] != ITEM_AUTHTYPE_PUBLICKEY) {
+ $item += array_intersect_key($db_item, array_flip(['publickey', 'privatekey']));
}
- $itemName = array_key_exists('name', $item) ? $item['name'] : $dbItem['name'];
-
- // discovered fields, except status, cannot be updated
- $updateDiscoveredValidator->setObjectName($itemName);
- $this->checkPartialValidator($item, $updateDiscoveredValidator, $dbItem);
-
- $item += [
- 'hostid' => $dbItem['hostid'],
- 'type' => $dbItem['type'],
- 'name' => $dbItem['name'],
- 'key_' => $dbItem['key_'],
- 'flags' => $dbItem['flags']
- ];
+ $api_input_rules['fields'] += $item_type::getUpdateValidationRulesInherited($db_item);
}
- unset($item);
- }
-
- $item_key_parser = new CItemKey();
- $ip_range_parser = new CIPRangeParser([
- 'v6' => ZBX_HAVE_IPV6,
- 'ranges' => false,
- 'usermacros' => true,
- 'macros' => [
- '{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'
- ]
- ]);
- $update_interval_parser = new CUpdateIntervalParser([
- 'usermacros' => true,
- 'lldmacros' => (get_class($this) === 'CItemPrototype')
- ]);
-
- $index = 0;
- foreach ($items as $inum => &$item) {
- $item = $this->clearValues($item);
- $index++;
-
- $fullItem = $items[$inum];
-
- if (!check_db_fields($itemDbFields, $item)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ elseif ($db_item['flags'] == ZBX_FLAG_DISCOVERY_CREATED) {
+ $api_input_rules['fields'] += $item_type::getUpdateValidationRulesDiscovered();
}
-
- if ($update) {
- $type = array_key_exists('type', $item) ? $item['type'] : $dbItems[$item['itemid']]['type'];
-
- if ($type == ITEM_TYPE_HTTPAGENT) {
- $this->validateHTTPCheck($fullItem, $dbItems[$item['itemid']]);
+ else {
+ if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
+ $item += array_intersect_key($db_item, array_flip(
+ ['request_method', 'post_type', 'authtype', 'allow_traps']
+ ));
+ }
+ elseif ($item['type'] == ITEM_TYPE_SSH) {
+ $item += array_intersect_key($db_item, array_flip(['authtype']));
}
- check_db_fields($dbItems[$item['itemid']], $fullItem);
+ $interfaceid_types = [ITEM_TYPE_ZABBIX, ITEM_TYPE_SIMPLE, ITEM_TYPE_EXTERNAL, ITEM_TYPE_IPMI,
+ ITEM_TYPE_SSH, ITEM_TYPE_TELNET, ITEM_TYPE_JMX, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_HTTPAGENT,
+ ITEM_TYPE_SNMP
+ ];
- $this->checkNoParameters(
- $item,
- ['templateid', 'state', 'lastlogsize', 'mtime', 'error'],
- _('Cannot update "%1$s" for item "%2$s".'),
- $item['name']
- );
+ if (in_array($item['type'], $interfaceid_types)) {
+ $opt_interface_types = [ITEM_TYPE_SIMPLE, ITEM_TYPE_EXTERNAL, ITEM_TYPE_SSH, ITEM_TYPE_TELNET,
+ ITEM_TYPE_HTTPAGENT
+ ];
- // apply rules
- foreach ($this->fieldRules as $field => $rules) {
- if ($fullItem['type'] == ITEM_TYPE_SCRIPT) {
- $rules['template'] = 1;
+ if (in_array($db_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])
+ && (!in_array($db_item['type'], $interfaceid_types)
+ || (in_array($item['type'], array_diff($interfaceid_types, $opt_interface_types))
+ && in_array($db_item['type'], $opt_interface_types)
+ && $db_item['interfaceid'] == 0))) {
+ $item += array_intersect_key($db_item, array_flip(['interfaceid']));
}
+ }
+
+ $username_types = [ITEM_TYPE_SIMPLE, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_SSH, ITEM_TYPE_TELNET,
+ ITEM_TYPE_JMX, ITEM_TYPE_HTTPAGENT
+ ];
- if ((0 != $fullItem['templateid'] && isset($rules['template'])) || isset($rules['system'])) {
- unset($item[$field]);
+ if (in_array($item['type'], [ITEM_TYPE_SSH, ITEM_TYPE_TELNET])) {
+ $opt_username_types = array_diff($username_types, [ITEM_TYPE_SSH, ITEM_TYPE_TELNET]);
- // For templated item and fields that should not be modified, use the value from DB.
- if (array_key_exists($field, $dbItems[$item['itemid']])
- && array_key_exists($field, $fullItem)) {
- $fullItem[$field] = $dbItems[$item['itemid']][$field];
- }
+ if (!in_array($db_item['type'], $username_types)
+ || (in_array($db_item['type'], $opt_username_types) && $db_item['username'] === '')) {
+ $item += array_intersect_key($db_item, array_flip(['username']));
}
}
- if (!isset($item['key_'])) {
- $item['key_'] = $fullItem['key_'];
- }
- if (!isset($item['hostid'])) {
- $item['hostid'] = $fullItem['hostid'];
- }
+ $params_types = [ITEM_TYPE_DB_MONITOR, ITEM_TYPE_SSH, ITEM_TYPE_TELNET, ITEM_TYPE_CALCULATED,
+ ITEM_TYPE_SCRIPT
+ ];
- // If a templated item is being assigned to an interface with a different type, ignore it.
- $itemInterfaceType = itemTypeInterface($dbItems[$item['itemid']]['type']);
+ if (in_array($item['type'], $params_types) && !in_array($db_item['type'], $params_types)) {
+ $item += array_intersect_key($db_item, array_flip(['params']));
+ }
- if ($itemInterfaceType !== INTERFACE_TYPE_ANY && $itemInterfaceType !== INTERFACE_TYPE_OPT
- && $fullItem['templateid']
- && array_key_exists('interfaceid', $item) && array_key_exists($item['interfaceid'], $interfaces)
- && $interfaces[$item['interfaceid']]['type'] != $itemInterfaceType) {
+ $delay_types = [ITEM_TYPE_ZABBIX, ITEM_TYPE_SIMPLE, ITEM_TYPE_INTERNAL, ITEM_TYPE_ZABBIX_ACTIVE,
+ ITEM_TYPE_EXTERNAL, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_IPMI, ITEM_TYPE_SSH, ITEM_TYPE_TELNET,
+ ITEM_TYPE_CALCULATED, ITEM_TYPE_JMX, ITEM_TYPE_HTTPAGENT, ITEM_TYPE_SNMP, ITEM_TYPE_SCRIPT
+ ];
- unset($item['interfaceid']);
- }
- }
- else {
- if ($fullItem['type'] == ITEM_TYPE_HTTPAGENT) {
- $this->validateHTTPCheck($fullItem, []);
+ if (in_array($item['type'], $delay_types)) {
+ if (!in_array($db_item['type'], $delay_types)
+ || ($db_item['type'] == ITEM_TYPE_ZABBIX_ACTIVE
+ && strncmp($db_item['key_'], 'mqtt.get', 8) === 0)) {
+ $item += array_intersect_key($db_item, array_flip(['delay']));
+ }
}
- if (!isset($dbHosts[$item['hostid']])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
+ if ($item['type'] == ITEM_TYPE_DEPENDENT && $db_item['type'] != ITEM_TYPE_DEPENDENT) {
+ $item += array_intersect_key($db_item, array_flip(['master_itemid']));
}
- check_db_fields($itemDbFields, $fullItem);
+ if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
+ $post_types = [ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML];
- $this->checkNoParameters(
- $item,
- ['templateid', 'state'],
- _('Cannot set "%1$s" for item "%2$s".'),
- $item['name']
- );
-
- if ($this instanceof CItemPrototype && (!array_key_exists($fullItem['ruleid'], $discovery_rules)
- || $discovery_rules[$fullItem['ruleid']]['hostid'] != $fullItem['hostid'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _('No permissions to referred object or it does not exist!')
- );
+ if (in_array($item['post_type'], $post_types) && !in_array($db_item['post_type'], $post_types)) {
+ $item += array_intersect_key($db_item, array_flip(['posts']));
+ }
}
- }
-
- if ($fullItem['type'] == ITEM_TYPE_CALCULATED) {
- $api_input_rules = ['type' => API_OBJECT, 'fields' => [
- 'params' => ['type' => API_CALC_FORMULA, 'flags' => $this instanceof CItemPrototype ? API_ALLOW_LLD_MACRO : 0, 'length' => DB::getFieldLength('items', 'params')],
- 'value_type' => ['type' => API_INT32, 'in' => implode(',', [ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_TEXT])]
- ]];
- $data = array_intersect_key($item, $api_input_rules['fields']);
-
- if (!CApiInputValidator::validate($api_input_rules, $data, '/'.($inum + 1), $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ if ($item['type'] == ITEM_TYPE_IPMI
+ && ($db_item['type'] != ITEM_TYPE_IPMI
+ || ($item['key_'] !== $db_item['key_'] && $db_item['key_'] === 'ipmi.get'))) {
+ $item += array_intersect_key($db_item, array_flip(['ipmi_sensor']));
}
- }
- if ($fullItem['type'] == ITEM_TYPE_SCRIPT) {
- if ($update) {
- if ($dbItems[$item['itemid']]['type'] == $fullItem['type']) {
- $flags = API_NOT_EMPTY;
- }
- else {
- $flags = API_REQUIRED | API_NOT_EMPTY;
- }
- }
- else {
- $flags = API_REQUIRED | API_NOT_EMPTY;
+ if ($item['type'] == ITEM_TYPE_JMX && $db_item['type'] != ITEM_TYPE_JMX) {
+ $item += array_intersect_key($db_item, array_flip(['jmx_endpoint']));
}
- $api_input_rules = ['type' => API_OBJECT, 'fields' => [
- 'params' => ['type' => API_STRING_UTF8, 'flags' => $flags, 'length' => DB::getFieldLength('items', 'params')],
- 'timeout' => [
- 'type' => API_TIME_UNIT, 'flags' => ($this instanceof CItemPrototype)
- ? $flags | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO
- : $flags | API_ALLOW_USER_MACRO,
- 'in' => '1:'.SEC_PER_MIN
- ],
- 'parameters' => ['type' => API_OBJECTS, 'flags' => API_NORMALIZE, 'uniq' => [['name']], 'fields' => [
- 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_parameter', 'name')],
- 'value' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => DB::getFieldLength('item_parameter', 'value')]
- ]]
- ]];
-
- $data = array_intersect_key($item, $api_input_rules['fields']);
+ if ($item['type'] == ITEM_TYPE_SNMP && $db_item['type'] != ITEM_TYPE_SNMP) {
+ $item += array_intersect_key($db_item, array_flip(['snmp_oid']));
+ }
- if (!CApiInputValidator::validate($api_input_rules, $data, '/'.($inum + 1), $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ if ($item['type'] === ITEM_TYPE_SSH && $item['authtype'] == ITEM_AUTHTYPE_PUBLICKEY
+ && $db_item['authtype'] != ITEM_AUTHTYPE_PUBLICKEY) {
+ $item += array_intersect_key($db_item, array_flip(['publickey', 'privatekey']));
}
+
+ $api_input_rules['fields'] += $item_type::getUpdateValidationRules($db_item);
}
- $host = $dbHosts[$fullItem['hostid']];
+ $api_input_rules['fields'] += CItemType::getDefaultValidationRules();
- // Validate update interval.
- if (!in_array($fullItem['type'], [ITEM_TYPE_TRAPPER, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_DEPENDENT])
- && ($fullItem['type'] != ITEM_TYPE_ZABBIX_ACTIVE || strncmp($fullItem['key_'], 'mqtt.get', 8) !== 0)
- && !validateDelay($update_interval_parser, 'delay', $fullItem['delay'], $error)) {
+ if (!CApiInputValidator::validate($api_input_rules, $item, '/'.($i + 1), $error)) {
self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
- // For non-numeric types, whichever value was entered in trends field, is overwritten to zero.
- if ($fullItem['value_type'] == ITEM_VALUE_TYPE_STR || $fullItem['value_type'] == ITEM_VALUE_TYPE_LOG
- || $fullItem['value_type'] == ITEM_VALUE_TYPE_TEXT) {
- $item['trends'] = '0';
- }
-
- // Check if the item requires an interface.
- if ($host['status'] == HOST_STATUS_TEMPLATE) {
- unset($item['interfaceid']);
- }
- else {
- $item_interface_type = itemTypeInterface($fullItem['type']);
+ if ($item['type'] == ITEM_TYPE_JMX) {
+ if (array_key_exists('username', $item) || array_key_exists('password', $item)
+ || ($db_item !== null && $db_item['type'] != ITEM_TYPE_JMX)) {
+ $_item = array_intersect_key($item, array_flip(['username', 'password']));
- if ($item_interface_type !== false) {
- if (!array_key_exists('interfaceid', $fullItem) || !$fullItem['interfaceid']) {
- if ($item_interface_type != INTERFACE_TYPE_OPT) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('No interface found.'));
- }
+ if ($db_item === null) {
+ $_item += array_fill_keys(['username', 'password'], '');
}
- elseif (!array_key_exists($fullItem['interfaceid'], $interfaces)
- || bccomp($interfaces[$fullItem['interfaceid']]['hostid'], $fullItem['hostid']) != 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Item uses host interface from non-parent host.'));
+ else {
+ $_item += array_intersect_key($db_item, array_flip(['username', 'password']));
}
- elseif ($item_interface_type !== INTERFACE_TYPE_ANY && $item_interface_type !== INTERFACE_TYPE_OPT
- && $interfaces[$fullItem['interfaceid']]['type'] != $item_interface_type) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Item uses incorrect interface type.'));
+
+ if (($_item['username'] === '') !== ($_item['password'] === '')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.', '/'.($i + 1),
+ _('both username and password should be either present or empty')
+ ));
}
}
- // No interface required, just set it to zero.
- else {
- $item['interfaceid'] = 0;
- }
}
- // item key
- if ($fullItem['type'] == ITEM_TYPE_DB_MONITOR) {
- if (!isset($fullItem['flags']) || $fullItem['flags'] != ZBX_FLAG_DISCOVERY_RULE) {
- if (strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_DB_MONITOR) == 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _('Check the key, please. Default example was passed.')
- );
- }
- }
- elseif ($fullItem['flags'] == ZBX_FLAG_DISCOVERY_RULE) {
- if (strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_DB_MONITOR_DISCOVERY) == 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _('Check the key, please. Default example was passed.')
+ if (array_key_exists('query_fields', $item)) {
+ foreach ($item['query_fields'] as $query_field) {
+ if (count($query_field) != 1 || key($query_field) === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/query_fields', _('nonempty key and value pair expected'))
);
}
}
- }
- elseif (($fullItem['type'] == ITEM_TYPE_SSH && strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_SSH) == 0)
- || ($fullItem['type'] == ITEM_TYPE_TELNET && strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_TELNET) == 0)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Check the key, please. Default example was passed.'));
- }
-
- // key
- if ($item_key_parser->parse($fullItem['key_']) != CParser::PARSE_SUCCESS) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _params($this->getErrorMsg(self::ERROR_INVALID_KEY), [
- $fullItem['key_'], $fullItem['name'], $host['name'], $item_key_parser->getError()
- ])
- );
- }
- if (($fullItem['type'] == ITEM_TYPE_TRAPPER || $fullItem['type'] == ITEM_TYPE_HTTPAGENT)
- && array_key_exists('trapper_hosts', $fullItem) && $fullItem['trapper_hosts'] !== ''
- && !$ip_range_parser->parse($fullItem['trapper_hosts'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'trapper_hosts', $ip_range_parser->getError())
- );
- }
-
- // jmx
- if ($fullItem['type'] == ITEM_TYPE_JMX) {
- if (!array_key_exists('jmx_endpoint', $fullItem) && !$update) {
- $item['jmx_endpoint'] = ZBX_DEFAULT_JMX_ENDPOINT;
- }
- if (array_key_exists('jmx_endpoint', $fullItem) && $fullItem['jmx_endpoint'] === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'jmx_endpoint', _('cannot be empty'))
- );
- }
+ $item['query_fields'] = $item['query_fields'] ? json_encode($item['query_fields']) : '';
- if (($fullItem['username'] === '') !== ($fullItem['password'] === '')) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'username',
- _('both username and password should be either present or empty'))
- );
- }
- }
- else {
- if (array_key_exists('jmx_endpoint', $item) && $item['jmx_endpoint'] !== '') {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'jmx_endpoint', _('should be empty'))
- );
- }
- elseif (array_key_exists('jmx_endpoint', $fullItem) && $fullItem['jmx_endpoint'] !== '') {
- $item['jmx_endpoint'] = '';
+ if (strlen($item['query_fields']) > DB::getFieldLength('items', 'query_fields')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/query_fields', _('value is too long')
+ ));
}
}
- // Dependent item.
- if ($fullItem['type'] == ITEM_TYPE_DEPENDENT) {
- if ($update) {
- if (array_key_exists('master_itemid', $item) && !$item['master_itemid']) {
- self::exception(ZBX_API_ERROR_PERMISSIONS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('cannot be empty')
- ));
- }
- if ($dbItems[$fullItem['itemid']]['type'] != ITEM_TYPE_DEPENDENT
- && !array_key_exists('master_itemid', $item)) {
- self::exception(ZBX_API_ERROR_PERMISSIONS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('cannot be empty')
+ if (array_key_exists('headers', $item)) {
+ foreach ($item['headers'] as $name => $value) {
+ if (trim($name) === '' || !is_string($value) || $value === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/headers', _('nonempty key and value pair expected')
));
}
}
- elseif (!array_key_exists('master_itemid', $item) || !$item['master_itemid']) {
- self::exception(ZBX_API_ERROR_PERMISSIONS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('cannot be empty')
- ));
- }
- if (array_key_exists('master_itemid', $item) && !is_int($item['master_itemid'])
- && !(is_string($item['master_itemid']) && ctype_digit($item['master_itemid']))) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value "%1$s" for "%2$s" field.',
- $item['master_itemid'], 'master_itemid'
- ));
- }
- }
- else {
- if (array_key_exists('master_itemid', $item) && $item['master_itemid']) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('should be empty')
- ));
- }
- $item['master_itemid'] = 0;
- }
- // ssh, telnet
- if ($fullItem['type'] == ITEM_TYPE_SSH || $fullItem['type'] == ITEM_TYPE_TELNET) {
- if ($fullItem['username'] === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('No authentication user name specified.'));
- }
+ $item['headers'] = self::headersArrayToString($item['headers']);
- if ($fullItem['type'] == ITEM_TYPE_SSH && $fullItem['authtype'] == ITEM_AUTHTYPE_PUBLICKEY) {
- if ($fullItem['publickey'] === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('No public key file specified.'));
- }
- if ($fullItem['privatekey'] === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('No private key file specified.'));
- }
+ if (strlen($item['headers']) > DB::getFieldLength('items', 'headers')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/headers', _('value is too long')
+ ));
}
}
+ }
+ unset($item);
+ }
- // Prevent IPMI sensor field being empty if item key is not "ipmi.get".
- if ($fullItem['type'] == ITEM_TYPE_IPMI && $fullItem['key_'] !== 'ipmi.get'
- && (!array_key_exists('ipmi_sensor', $fullItem) || $fullItem['ipmi_sensor'] === '')) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'ipmi_sensor', _('cannot be empty')
- ));
- }
-
- // snmp trap
- if ($fullItem['type'] == ITEM_TYPE_SNMPTRAP
- && $fullItem['key_'] !== 'snmptrap.fallback' && $item_key_parser->getKey() !== 'snmptrap') {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('SNMP trap key is invalid.'));
- }
-
- // snmp oid
- if ($fullItem['type'] == ITEM_TYPE_SNMP
- && (!array_key_exists('snmp_oid', $fullItem) || $fullItem['snmp_oid'] === '')) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('No SNMP OID specified.'));
- }
-
- $this->checkSpecificFields($fullItem, $update ? 'update' : 'create');
+ /**
+ * @param array $items
+ */
+ protected static function validateUniqueness(array &$items): void {
+ $api_input_rules = ['type' => API_OBJECTS, 'uniq' => [['hostid', 'key_']], 'fields' => [
+ 'hostid' => ['type' => API_ANY],
+ 'key_' => ['type' => API_ANY]
+ ]];
- $this->validateItemPreprocessing($fullItem);
- $this->validateTags($item, '/'.$index);
+ if (!CApiInputValidator::validateUniqueness($api_input_rules, $items, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
- unset($item);
+ }
- $this->validateValueMaps($items);
+ /**
+ * @return array
+ */
+ protected static function getTagsValidationRules(): array {
+ return ['type' => API_OBJECTS, 'uniq' => [['tag', 'value']], 'fields' => [
+ 'tag' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_tag', 'tag')],
+ 'value' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('item_tag', 'value')]
+ ]];
+ }
- $this->checkAndAddUuid($items, $dbHosts, $update);
- $this->checkExistingItems($items);
+ /**
+ * @param int $flags
+ *
+ * @return array
+ */
+ public static function getPreprocessingValidationRules(int $flags = 0x00): array {
+ return [
+ 'type' => API_OBJECTS,
+ 'uniq_by_values' => [
+ ['type' => [ZBX_PREPROC_DELTA_VALUE, ZBX_PREPROC_DELTA_SPEED]],
+ ['type' => [ZBX_PREPROC_THROTTLE_VALUE, ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ ['type' => [ZBX_PREPROC_PROMETHEUS_PATTERN, ZBX_PREPROC_PROMETHEUS_TO_JSON]],
+ ['type' => [ZBX_PREPROC_VALIDATE_NOT_SUPPORTED]]
+ ],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', static::SUPPORTED_PREPROCESSING_TYPES)],
+ 'params' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'type', 'in' => implode(',', static::PREPROC_TYPES_WITH_PARAMS)], 'type' => API_PREPROC_PARAMS, 'flags' => API_REQUIRED | API_ALLOW_USER_MACRO | ($flags & API_ALLOW_LLD_MACRO), 'preproc_type' => ['field' => 'type'], 'length' => DB::getFieldLength('item_preproc', 'params')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('item_preproc', 'params')]
+ ]],
+ 'error_handler' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'type', 'in' => implode(',', array_diff(static::PREPROC_TYPES_WITH_ERR_HANDLING, [ZBX_PREPROC_VALIDATE_NOT_SUPPORTED]))], 'type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [ZBX_PREPROC_FAIL_DEFAULT, ZBX_PREPROC_FAIL_DISCARD_VALUE, ZBX_PREPROC_FAIL_SET_VALUE, ZBX_PREPROC_FAIL_SET_ERROR])],
+ ['if' => ['field' => 'type', 'in' => ZBX_PREPROC_VALIDATE_NOT_SUPPORTED], 'type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [ZBX_PREPROC_FAIL_DISCARD_VALUE, ZBX_PREPROC_FAIL_SET_VALUE, ZBX_PREPROC_FAIL_SET_ERROR])],
+ ['else' => true, 'type' => API_INT32, 'in' => DB::getDefault('item_preproc', 'error_handler')]
+ ]],
+ 'error_handler_params' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => static function (array $data): bool {
+ return array_key_exists('error_handler', $data) && $data['error_handler'] == ZBX_PREPROC_FAIL_SET_VALUE;
+ }, 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => DB::getFieldLength('item_preproc', 'error_handler_params')],
+ ['if' => static function (array $data): bool {
+ return array_key_exists('error_handler', $data) && $data['error_handler'] == ZBX_PREPROC_FAIL_SET_ERROR;
+ }, 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_preproc', 'error_handler_params')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('item_preproc', 'error_handler_params')]
+ ]]
+ ]
+ ];
}
/**
- * Check that only items on templates have UUID. Add UUID to all host prototypes on templates,
- * if it doesn't exist.
+ * Check that host IDs of given items are valid.
+ * If host IDs are valid, $db_hosts and $db_templates parameters will be filled with found hosts and templates.
*
- * @param array $items_to_create
- * @param array $db_hosts
- * @param bool $is_update
+ * @param array $items
+ * @param array|null $db_hosts
+ * @param array|null $db_templates
*
* @throws APIException
*/
- protected function checkAndAddUuid(array &$items_to_create, array $db_hosts, bool $is_update): void {
- if ($is_update) {
- foreach ($items_to_create as $index => &$item) {
- if (array_key_exists('uuid', $item)) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', '/' . ($index + 1),
- _s('unexpected parameter "%1$s"', 'uuid')
- )
- );
- }
- }
+ protected static function checkHostsAndTemplates(array $items, array &$db_hosts = null,
+ array &$db_templates = null): void {
+ $hostids = array_unique(array_column($items, 'hostid'));
+
+ $db_templates = API::Template()->get([
+ 'output' => [],
+ 'templateids' => $hostids,
+ 'editable' => true,
+ 'preservekeys' => true
+ ]);
- return;
+ $_hostids = array_diff($hostids, array_keys($db_templates));
+
+ $db_hosts = $_hostids
+ ? API::Host()->get([
+ 'output' => ['status'],
+ 'hostids' => $_hostids,
+ 'editable' => true,
+ 'preservekeys' => true
+ ])
+ : [];
+
+ if (count($db_templates) + count($db_hosts) != count($hostids)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
}
+ }
- foreach ($items_to_create as $index => &$item) {
- if ($db_hosts[$item['hostid']]['status'] != HOST_STATUS_TEMPLATE && array_key_exists('uuid', $item)) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', '/' . ($index + 1), _s('unexpected parameter "%1$s"', 'uuid'))
- );
+ /**
+ * Add host_status property to given items in accordance of given hosts and templates statuses.
+ *
+ * @param array $items
+ * @param array $db_hosts
+ * @param array $db_templates
+ */
+ protected static function addHostStatus(array &$items, array $db_hosts, array $db_templates): void {
+ foreach ($items as &$item) {
+ if (array_key_exists($item['hostid'], $db_templates)) {
+ $item['host_status'] = HOST_STATUS_TEMPLATE;
}
-
- if ($db_hosts[$item['hostid']]['status'] == HOST_STATUS_TEMPLATE && !array_key_exists('uuid', $item)) {
- $item['uuid'] = generateUuidV4();
+ else {
+ $item['host_status'] = $db_hosts[$item['hostid']]['status'];
}
}
unset($item);
-
- $db_uuid = DB::select('items', [
- 'output' => ['uuid'],
- 'filter' => ['uuid' => array_column($items_to_create, 'uuid')],
- 'limit' => 1
- ]);
-
- if ($db_uuid) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Entry with UUID "%1$s" already exists.', $db_uuid[0]['uuid'])
- );
- }
}
/**
- * Validates tags.
+ * Add flags property to given items with the given flags value.
*
- * @param array $item
- * @param array $item['tags']
- * @param string $item['tags'][]['tag']
- * @param string $item['tags'][]['value']
- *
- * @throws APIException if the input is invalid.
+ * @param array $items
+ * @param int $flags
*/
- protected function validateTags(array $item, string $path = '/') {
- if (!array_key_exists('tags', $item)) {
- return;
- }
-
- $api_input_rules = ['type' => API_OBJECT, 'fields' => [
- 'tags' => ['type' => API_OBJECTS, 'uniq' => [['tag', 'value']], 'fields' => [
- 'tag' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_tag', 'tag')],
- 'value' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('item_tag', 'value')]
- ]]
- ]];
-
- $item_tags = ['tags' => $item['tags']];
- if (!CApiInputValidator::validate($api_input_rules, $item_tags, $path, $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ protected static function addFlags(array &$items, int $flags): void {
+ foreach ($items as &$item) {
+ $item['flags'] = $flags;
}
+ unset($item);
}
/**
- * Check item specific fields. Each API like Item, Itemprototype and Discovery rule may inherit different fields
- * to validate.
+ * Check and add UUID to all item prototypes on templates, if it doesn't exist.
*
- * @param array $item An array of single item data.
- * @param string $method A string of "create" or "update" method.
+ * @param array $items
*
- * @return bool
+ * @throws APIException
*/
- abstract protected function checkSpecificFields(array $item, $method);
-
- protected function clearValues(array $item) {
- if (isset($item['port']) && $item['port'] != '') {
- $item['port'] = ltrim($item['port'], '0');
- if ($item['port'] == '') {
- $item['port'] = 0;
+ protected static function checkAndAddUuid(array &$items): void {
+ foreach ($items as &$item) {
+ if ($item['host_status'] == HOST_STATUS_TEMPLATE && !array_key_exists('uuid', $item)) {
+ $item['uuid'] = generateUuidV4();
}
}
+ unset($item);
+
+ $uuids = array_column($items, 'uuid');
- if (array_key_exists('type', $item) &&
- ($item['type'] == ITEM_TYPE_DEPENDENT || $item['type'] == ITEM_TYPE_TRAPPER
- || ($item['type'] == ITEM_TYPE_ZABBIX_ACTIVE && array_key_exists('key_', $item)
- && strncmp($item['key_'], 'mqtt.get', 8) === 0))) {
- $item['delay'] = 0;
+ if (!$uuids) {
+ return;
}
- return $item;
- }
+ $duplicates = DB::select('items', [
+ 'output' => ['uuid'],
+ 'filter' => ['uuid' => $uuids],
+ 'limit' => 1
+ ]);
- protected function errorInheritFlags($flag, $key, $host) {
- switch ($flag) {
- case ZBX_FLAG_DISCOVERY_NORMAL:
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as an item.', $key, $host));
- break;
- case ZBX_FLAG_DISCOVERY_RULE:
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as a discovery rule.', $key, $host));
- break;
- case ZBX_FLAG_DISCOVERY_PROTOTYPE:
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as an item prototype.', $key, $host));
- break;
- case ZBX_FLAG_DISCOVERY_CREATED:
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as an item created from item prototype.', $key, $host));
- break;
- default:
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as unknown item element.', $key, $host));
+ if ($duplicates) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Entry with UUID "%1$s" already exists.', $duplicates[0]['uuid'])
+ );
}
}
/**
- * Return first main interface matched from list of preferred types, or NULL.
- *
- * @param array $interfaces An array of interfaces to choose from.
+ * @param array $items
+ * @param array|null $hostids
*
- * @return ?array
+ * @return array
*/
- public static function findInterfaceByPriority(array $interfaces): ?array {
- $interface_by_type = [];
+ protected static function getTemplateLinks(array $items, ?array $hostids): array {
+ if ($hostids !== null) {
+ $db_hosts = DB::select('hosts', [
+ 'output' => ['hostid', 'status'],
+ 'hostids' => $hostids,
+ 'preservekeys' => true
+ ]);
- foreach ($interfaces as $interface) {
- if ($interface['main'] == INTERFACE_PRIMARY) {
- $interface_by_type[$interface['type']] = $interface;
+ $tpl_links = [];
+
+ foreach ($items as $item) {
+ $tpl_links[$item['hostid']] = $db_hosts;
}
}
+ else {
+ $templateids = [];
- foreach (self::INTERFACE_TYPES_BY_PRIORITY as $interface_type) {
- if (array_key_exists($interface_type, $interface_by_type)) {
- return $interface_by_type[$interface_type];
+ foreach ($items as $item) {
+ if ($item['host_status'] == HOST_STATUS_TEMPLATE) {
+ $templateids[$item['hostid']] = true;
+ }
}
- }
- return null;
- }
+ if (!$templateids) {
+ return [];
+ }
- /**
- * Returns the interface that best matches the given item.
- *
- * @param array $item_type An item type
- * @param array $interfaces An array of interfaces to choose from
- *
- * @return array|boolean The best matching interface;
- * an empty array of no matching interface was found;
- * false, if the item does not need an interface
- */
- public static function findInterfaceForItem($item_type, array $interfaces) {
- $type = itemTypeInterface($item_type);
+ $result = DBselect(
+ 'SELECT ht.templateid,ht.hostid,h.status'.
+ ' FROM hosts_templates ht,hosts h'.
+ ' WHERE ht.hostid=h.hostid'.
+ ' AND '.dbConditionId('ht.templateid', array_keys($templateids))
+ );
- if ($type == INTERFACE_TYPE_OPT) {
- return false;
- }
- elseif ($type == INTERFACE_TYPE_ANY) {
- return self::findInterfaceByPriority($interfaces);
- }
- // the item uses a specific type of interface
- elseif ($type !== false) {
- $interface_by_type = [];
+ $tpl_links = [];
- foreach ($interfaces as $interface) {
- if ($interface['main'] == INTERFACE_PRIMARY) {
- $interface_by_type[$interface['type']] = $interface;
- }
+ while ($row = DBfetch($result)) {
+ $tpl_links[$row['templateid']][$row['hostid']] = [
+ 'hostid' => $row['hostid'],
+ 'status' => $row['status']
+ ];
}
-
- return array_key_exists($type, $interface_by_type) ? $interface_by_type[$type] : [];
- }
- // the item does not need an interface
- else {
- return false;
}
+
+ return $tpl_links;
}
/**
- * Updates the children of the item on the given hosts and propagates the inheritance to the child hosts.
+ * Filter out inheritable items from the given items.
*
- * @param array $tpl_items An array of items to inherit.
- * @param array|null $hostids An array of hosts to inherit to; if set to null, the items will be inherited to all
- * linked hosts or templates.
+ * @param array $items
+ * @param array $db_items
+ * @param array $tpl_links
*/
- protected function inherit(array $tpl_items, array $hostids = null) {
- $tpl_items = zbx_toHash($tpl_items, 'itemid');
-
- // Inherit starting from common items and finishing up dependent.
- while ($tpl_items) {
- $_tpl_items = [];
+ protected static function filterObjectsToInherit(array &$items, array &$db_items, array $tpl_links): void {
+ foreach ($items as $i => $item) {
+ if (!array_key_exists($item['hostid'], $tpl_links)) {
+ unset($items[$i]);
- foreach ($tpl_items as $tpl_item) {
- if ($tpl_item['type'] != ITEM_TYPE_DEPENDENT
- || !array_key_exists($tpl_item['master_itemid'], $tpl_items)) {
- $_tpl_items[$tpl_item['itemid']] = $tpl_item;
+ if (array_key_exists($item['itemid'], $db_items)) {
+ unset($db_items[$item['itemid']]);
}
}
-
- foreach ($_tpl_items as $itemid => $_tpl_item) {
- unset($tpl_items[$itemid]);
- }
-
- $this->_inherit($_tpl_items, $hostids);
}
}
/**
- * Auxiliary method for item inheritance. See full description in inherit() method.
+ * Check that no items with repeating keys would be inherited to a single host or template.
+ *
+ * @param array $items
+ * @param array $db_items
+ * @param array $tpl_links
+ *
+ * @throws APIException
*/
- private function _inherit(array $tpl_items, array $hostids = null) {
- // Prepare the child items.
- $new_items = $this->prepareInheritedItems($tpl_items, $hostids);
- if (!$new_items) {
- return;
- }
+ protected static function checkDoubleInheritedNames(array $items, array $db_items, array $tpl_links): void {
+ $item_indexes = [];
- $ins_items = [];
- $upd_items = [];
-
- foreach ($new_items as $new_item) {
- if (array_key_exists('itemid', $new_item)) {
- if ($this instanceof CItemPrototype) {
- unset($new_item['ruleid']);
- }
- $upd_items[$new_item['itemid']] = $new_item;
- }
- else {
- $ins_items[] = $new_item;
+ foreach ($items as $i => $item) {
+ if (array_key_exists($item['itemid'], $db_items) && $item['key_'] === $db_items[$item['itemid']]['key_']) {
+ continue;
}
- }
- $this->validateDependentItems($new_items);
+ $item_indexes[$item['key_']][] = $i;
+ }
- // Save the new items.
- if ($ins_items) {
- if ($this instanceof CItem) {
- static::validateInventoryLinks($ins_items, false);
+ foreach ($item_indexes as $key => $indexes) {
+ if (count($indexes) == 1) {
+ continue;
}
- $this->createReal($ins_items);
- }
+ $tpl_items = array_column(array_intersect_key($items, array_flip($indexes)), null, 'hostid');
+ $templateids = array_keys($tpl_items);
+ $template_count = count($templateids) - 1;
- if ($upd_items) {
- if ($this instanceof CItem) {
- static::validateInventoryLinks($upd_items, true);
- }
+ for ($i = 0; $i < $template_count - 1; $i++) {
+ for ($j = $i + 1; $j < $template_count; $j++) {
+ $same_hosts = array_intersect_key($tpl_links[$templateids[$i]], $tpl_links[$templateids[$j]]);
- $this->updateReal($upd_items);
- }
+ if ($same_hosts) {
+ $same_host = reset($same_hosts);
- $new_items = array_merge($upd_items, $ins_items);
+ $hosts = DB::select('hosts', [
+ 'output' => ['hostid', 'host'],
+ 'hostids' => [$templateids[$i], $templateids[$j], $same_host['hostid']],
+ 'preservekeys' => true
+ ]);
- // Inheriting items from the templates.
- $db_items = DBselect(
- 'SELECT i.itemid'.
- ' FROM items i,hosts h'.
- ' WHERE i.hostid=h.hostid'.
- ' AND '.dbConditionInt('i.itemid', zbx_objectValues($new_items, 'itemid')).
- ' AND '.dbConditionInt('h.status', [HOST_STATUS_TEMPLATE])
- );
+ $target_is_host = in_array($same_host['status'],
+ [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]
+ );
- $tpl_itemids = [];
- while ($db_item = DBfetch($db_items)) {
- $tpl_itemids[$db_item['itemid']] = true;
- }
+ switch ($tpl_items[$templateids[$i]]['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ $error = $target_is_host
+ ? _('Cannot inherit items with key "%1$s" of both "%2$s" and "%3$s" templates, because the key must be unique on host "%4$s".')
+ : _('Cannot inherit items with key "%1$s" of both "%2$s" and "%3$s" templates, because the key must be unique on template "%4$s".');
+ break;
+
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ $error = $target_is_host
+ ? _('Cannot inherit item prototypes with key "%1$s" of both "%2$s" and "%3$s" templates, because the key must be unique on host "%4$s".')
+ : _('Cannot inherit item prototypes with key "%1$s" of both "%2$s" and "%3$s" templates, because the key must be unique on template "%4$s".');
+ break;
+
+ case ZBX_FLAG_DISCOVERY_RULE:
+ $error = $target_is_host
+ ? _('Cannot inherit LDD rules with key "%1$s" of both "%2$s" and "%3$s" templates, because the key must be unique on host "%4$s".')
+ : _('Cannot inherit LDD rules with key "%1$s" of both "%2$s" and "%3$s" templates, because the key must be unique on template "%4$s".');
+ break;
+ }
- foreach ($new_items as $index => $new_item) {
- if (!array_key_exists($new_item['itemid'], $tpl_itemids)) {
- unset($new_items[$index]);
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $key,
+ $hosts[$templateids[$i]]['host'], $hosts[$templateids[$j]]['host'],
+ $hosts[$same_host['hostid']]['host']
+ ));
+ }
+ }
}
}
-
- $this->inherit($new_items);
}
/**
- * Prepares and returns an array of child items, inherited from items $tpl_items on the given hosts.
- *
- * @param array $tpl_items
- * @param string $tpl_items[<itemid>]['itemid']
- * @param string $tpl_items[<itemid>]['hostid']
- * @param string $tpl_items[<itemid>]['key_']
- * @param int $tpl_items[<itemid>]['type']
- * @param array $tpl_items[<itemid>]['preprocessing'] (optional)
- * @param int $tpl_items[<itemid>]['preprocessing'][]['type']
- * @param string $tpl_items[<itemid>]['preprocessing'][]['params']
- * @param int $tpl_items[<itemid>]['flags']
- * @param string $tpl_items[<itemid>]['master_itemid'] (optional)
- * @param mixed $tpl_items[<itemid>][<field_name>] (optional)
- * @param array|null $hostids
+ * Get item chunks to inherit.
*
- * @return array an array of unsaved child items
+ * @param array $items
+ * @param array $tpl_links
+ *
+ * @return array
*/
- private function prepareInheritedItems(array $tpl_items, array $hostids = null) {
- $itemids_by_templateid = [];
- foreach ($tpl_items as $tpl_item) {
- $itemids_by_templateid[$tpl_item['hostid']][] = $tpl_item['itemid'];
- }
-
- // Fetch all child hosts.
- $chd_hosts = API::Host()->get([
- 'output' => ['hostid', 'host', 'status'],
- 'selectParentTemplates' => ['templateid'],
- 'selectInterfaces' => ['interfaceid', 'main', 'type'],
- 'templateids' => array_keys($itemids_by_templateid),
- 'hostids' => $hostids,
- 'preservekeys' => true,
- 'nopermissions' => true,
- 'templated_hosts' => true
- ]);
- if (!$chd_hosts) {
- return [];
- }
+ protected static function getInheritChunks(array $items, array $tpl_links): array {
+ $chunks = [
+ [
+ 'item_indexes' => [],
+ 'hosts' => [],
+ 'size' => 0
+ ]
+ ];
+ $last = 0;
- $chd_items_tpl = [];
- $chd_items_key = [];
+ foreach ($items as $i => $item) {
+ $hosts_chunks = array_chunk($tpl_links[$item['hostid']], self::INHERIT_CHUNK_SIZE, true);
- // Preparing list of items by item templateid.
- $sql = 'SELECT i.itemid,i.hostid,i.type,i.key_,i.flags,i.templateid'.
- ' FROM items i'.
- ' WHERE '.dbConditionInt('i.templateid', zbx_objectValues($tpl_items, 'itemid'));
- if ($hostids !== null) {
- $sql .= ' AND '.dbConditionInt('i.hostid', $hostids);
- }
- $db_items = DBselect($sql);
+ foreach ($hosts_chunks as $hosts) {
+ if ($chunks[$last]['size'] < self::INHERIT_CHUNK_SIZE) {
+ $_hosts = array_slice($hosts, 0, self::INHERIT_CHUNK_SIZE - $chunks[$last]['size'], true);
- while ($db_item = DBfetch($db_items)) {
- $hostid = $db_item['hostid'];
- unset($db_item['hostid']);
+ $can_add_hosts = true;
- $chd_items_tpl[$hostid][$db_item['templateid']] = $db_item;
- }
+ foreach ($chunks[$last]['item_indexes'] as $_i) {
+ $new_hosts = array_diff_key($_hosts, $chunks[$last]['hosts']);
- $hostids_by_key = [];
+ if (array_intersect_key($tpl_links[$items[$_i]['hostid']], $new_hosts)) {
+ $can_add_hosts = false;
+ break;
+ }
+ }
- // Preparing list of items by item key.
- foreach ($chd_hosts as $chd_host) {
- $tpl_itemids = [];
+ if ($can_add_hosts) {
+ $chunks[$last]['item_indexes'][] = $i;
+ $chunks[$last]['hosts'] += $_hosts;
+ $chunks[$last]['size'] += count($_hosts);
- foreach ($chd_host['parentTemplates'] as $parent_template) {
- if (array_key_exists($parent_template['templateid'], $itemids_by_templateid)) {
- $tpl_itemids = array_merge($tpl_itemids, $itemids_by_templateid[$parent_template['templateid']]);
+ $hosts = array_diff_key($hosts, $_hosts);
+ }
}
- }
- foreach ($tpl_itemids as $tpl_itemid) {
- if (!array_key_exists($chd_host['hostid'], $chd_items_tpl)
- || !array_key_exists($tpl_itemid, $chd_items_tpl[$chd_host['hostid']])) {
- $hostids_by_key[$tpl_items[$tpl_itemid]['key_']][] = $chd_host['hostid'];
+ if ($hosts) {
+ $chunks[++$last] = [
+ 'item_indexes' => [$i],
+ 'hosts' => $hosts,
+ 'size' => count($hosts)
+ ];
}
}
}
- foreach ($hostids_by_key as $key_ => $key_hostids) {
- $sql_select = ($this instanceof CItemPrototype) ? ',id.parent_itemid AS ruleid' : '';
- // "LEFT JOIN" is needed to check flags on inherited and existing item, item prototype or lld rule.
- // For example, when linking an item prototype with same key as in an item on target host or template.
- $sql_join = ($this instanceof CItemPrototype) ? ' LEFT JOIN item_discovery id ON i.itemid=id.itemid' : '';
- $db_items = DBselect(
- 'SELECT i.itemid,i.hostid,i.type,i.key_,i.flags,i.templateid'.$sql_select.
- ' FROM items i'.$sql_join.
- ' WHERE '.dbConditionInt('i.hostid', $key_hostids).
- ' AND '.dbConditionString('i.key_', [$key_])
- );
-
- while ($db_item = DBfetch($db_items)) {
- $hostid = $db_item['hostid'];
- unset($db_item['hostid']);
+ return $chunks;
+ }
- $chd_items_key[$hostid][$db_item['key_']] = $db_item;
- }
- }
+ /**
+ * @param array $item
+ * @param array $upd_db_item
+ *
+ * @throws APIException
+ */
+ protected static function showObjectMismatchError(array $item, array $upd_db_item): void {
+ $target_is_host = in_array($upd_db_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]);
- // List of the discovery rules.
- if ($this instanceof CItemPrototype) {
- // List of itemids without 'ruleid' property.
- $tpl_itemids = [];
- $tpl_ruleids = [];
- foreach ($tpl_items as $tpl_item) {
- if (!array_key_exists('ruleid', $tpl_item)) {
- $tpl_itemids[] = $tpl_item['itemid'];
- }
- else {
- $tpl_ruleids[$tpl_item['ruleid']] = true;
- }
- }
+ $hosts = DB::select('hosts', [
+ 'output' => ['host'],
+ 'hostids' => [$item['hostid'], $upd_db_item['hostid']],
+ 'preservekeys' => true
+ ]);
- if ($tpl_itemids) {
- $db_rules = DBselect(
- 'SELECT id.parent_itemid,id.itemid'.
- ' FROM item_discovery id'.
- ' WHERE '.dbConditionInt('id.itemid', $tpl_itemids)
- );
+ $error = '';
- while ($db_rule = DBfetch($db_rules)) {
- $tpl_items[$db_rule['itemid']]['ruleid'] = $db_rule['parent_itemid'];
- $tpl_ruleids[$db_rule['parent_itemid']] = true;
+ switch ($item['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ switch ($upd_db_item['flags']) {
+ case ZBX_FLAG_DISCOVERY_RULE:
+ $error = $target_is_host
+ ? _('Cannot inherit item with key "%1$s" of template "%2$s" to host "%3$s", because an LLD rule with the same key already exists.')
+ : _('Cannot inherit item with key "%1$s" of template "%2$s" to template "%3$s", because an LLD rule with the same key already exists.');
+ break 2;
+
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ $error = $target_is_host
+ ? _('Cannot inherit item with key "%1$s" of template "%2$s" to host "%3$s", because an item prototype with the same key already exists.')
+ : _('Cannot inherit item with key "%1$s" of template "%2$s" to template "%3$s", because an item prototype with the same key already exists.');
+ break 2;
+
+ case ZBX_FLAG_DISCOVERY_CREATED:
+ $error = $target_is_host
+ ? _('Cannot inherit item with key "%1$s" of template "%2$s" to host "%3$s", because a discovered item with the same key already exists.')
+ : _('Cannot inherit item with key "%1$s" of template "%2$s" to template "%3$s", because a discovered item with the same key already exists.');
+ break 2;
}
- }
-
- $sql = 'SELECT i.hostid,i.templateid,i.itemid'.
- ' FROM items i'.
- ' WHERE '.dbConditionInt('i.templateid', array_keys($tpl_ruleids));
- if ($hostids !== null) {
- $sql .= ' AND '.dbConditionInt('i.hostid', $hostids);
- }
- $db_rules = DBselect($sql);
- // List of child lld ruleids by child hostid and parent lld ruleid.
- $chd_ruleids = [];
- while ($db_rule = DBfetch($db_rules)) {
- $chd_ruleids[$db_rule['hostid']][$db_rule['templateid']] = $db_rule['itemid'];
- }
- }
+ case ZBX_FLAG_DISCOVERY_RULE:
+ switch ($upd_db_item['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ $error = $target_is_host
+ ? _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to host "%3$s", because a discovered item with the same key already exists.')
+ : _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to template "%3$s", because a discovered item with the same key already exists.');
+ break 2;
+
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ $error = $target_is_host
+ ? _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to host "%3$s", because an item prototype with the same key already exists.')
+ : _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to template "%3$s", because an item prototype with the same key already exists.');
+ break 2;
+
+ case ZBX_FLAG_DISCOVERY_CREATED:
+ $error = $target_is_host
+ ? _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to host "%3$s", because a discovered item with the same key already exists.')
+ : _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to template "%3$s", because a discovered item with the same key already exists.');
+ break 2;
+ }
- $new_items = [];
- // List of the updated item keys by hostid.
- $upd_hostids_by_key = [];
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ switch ($upd_db_item['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ $error = $target_is_host
+ ? _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to host "%3$s", because a discovered item with the same key already exists.')
+ : _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to template "%3$s", because a discovered item with the same key already exists.');
+ break 2;
- foreach ($chd_hosts as $chd_host) {
- $tpl_itemids = [];
+ case ZBX_FLAG_DISCOVERY_RULE:
+ $error = $target_is_host
+ ? _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to host "%3$s", because an LLD rule with the same key already exists.')
+ : _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to template "%3$s", because an LLD rule with the same key already exists.');
+ break 2;
- foreach ($chd_host['parentTemplates'] as $parent_template) {
- if (array_key_exists($parent_template['templateid'], $itemids_by_templateid)) {
- $tpl_itemids = array_merge($tpl_itemids, $itemids_by_templateid[$parent_template['templateid']]);
+ case ZBX_FLAG_DISCOVERY_CREATED:
+ $error = $target_is_host
+ ? _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to host "%3$s", because a discovered item with the same key already exists.')
+ : _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to template "%3$s", because a discovered item with the same key already exists.');
+ break 2;
}
- }
-
- foreach ($tpl_itemids as $tpl_itemid) {
- $tpl_item = $tpl_items[$tpl_itemid];
-
- $chd_item = null;
+ }
- // Update by templateid.
- if (array_key_exists($chd_host['hostid'], $chd_items_tpl)
- && array_key_exists($tpl_item['itemid'], $chd_items_tpl[$chd_host['hostid']])) {
- $chd_item = $chd_items_tpl[$chd_host['hostid']][$tpl_item['itemid']];
+ if ($error) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $upd_db_item['key_'],
+ $hosts[$item['hostid']]['host'], $hosts[$upd_db_item['hostid']]['host']
+ ));
+ }
- if ($tpl_item['key_'] !== $chd_item['key_']) {
- $upd_hostids_by_key[$tpl_item['key_']][] = $chd_host['hostid'];
- }
- }
- // Update by key.
- elseif (array_key_exists($chd_host['hostid'], $chd_items_key)
- && array_key_exists($tpl_item['key_'], $chd_items_key[$chd_host['hostid']])) {
- $chd_item = $chd_items_key[$chd_host['hostid']][$tpl_item['key_']];
+ if ($upd_db_item['templateid'] == 0) {
+ return;
+ }
- // Check if an item of a different type with the same key exists.
- if ($tpl_item['flags'] != $chd_item['flags']) {
- $this->errorInheritFlags($chd_item['flags'], $chd_item['key_'], $chd_host['host']);
- }
+ $template = DBfetch(DBselect(
+ 'SELECT h.host'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.itemid', [$upd_db_item['templateid']])
+ ));
- // Check if item already linked to another template.
- if ($chd_item['templateid'] != 0 && bccomp($chd_item['templateid'], $tpl_item['itemid']) != 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _params(
- $this->getErrorMsg(self::ERROR_EXISTS_TEMPLATE), [$tpl_item['key_'], $chd_host['host']]
- ));
- }
+ switch ($item['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ $error = $target_is_host
+ ? _('Cannot inherit item with key "%1$s" of template "%2$s" to host "%3$s", because an item with the same key is already inherited from template "%4$s".')
+ : _('Cannot inherit item with key "%1$s" of template "%2$s" to template "%3$s", because an item with the same key is already inherited from template "%4$s".');
+ break;
- if ($this instanceof CItemPrototype) {
- $chd_ruleid = $chd_ruleids[$chd_host['hostid']][$tpl_item['ruleid']];
- if (bccomp($chd_item['ruleid'], $chd_ruleid) != 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Item prototype "%1$s" already exists on "%2$s", linked to another rule.',
- $chd_item['key_'], $chd_host['host']
- )
- );
- }
- }
- }
+ case ZBX_FLAG_DISCOVERY_RULE:
+ $error = $target_is_host
+ ? _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to host "%3$s", because an item with the same key is already inherited from template "%4$s".')
+ : _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to template "%3$s", because an item with the same key is already inherited from template "%4$s".');
+ break;
- // copying item
- $new_item = $tpl_item;
- $new_item['uuid'] = '';
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ $error = $target_is_host
+ ? _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to host "%3$s", because an item with the same key is already inherited from template "%4$s".')
+ : _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to template "%3$s", because an item with the same key is already inherited from template "%4$s".');
+ break;
+ }
- if ($chd_item !== null) {
- $new_item['itemid'] = $chd_item['itemid'];
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $upd_db_item['key_'], $hosts[$item['hostid']]['host'],
+ $hosts[$upd_db_item['hostid']]['host'], $template['host']
+ ));
+ }
- if ($new_item['type'] == ITEM_TYPE_HTTPAGENT) {
- $new_item['interfaceid'] = null;
- }
- }
- else {
- unset($new_item['itemid']);
- if ($this instanceof CItemPrototype) {
- $new_item['ruleid'] = $chd_ruleids[$chd_host['hostid']][$tpl_item['ruleid']];
- }
- }
- $new_item['hostid'] = $chd_host['hostid'];
- $new_item['templateid'] = $tpl_item['itemid'];
+ /**
+ * @param array $item
+ *
+ * @return array
+ */
+ protected static function unsetNestedObjectIds(array $item): array {
+ if (array_key_exists('tags', $item)) {
+ foreach ($item['tags'] as &$tag) {
+ unset($tag['itemtagid']);
+ }
+ unset($tag);
+ }
- if ($chd_host['status'] != HOST_STATUS_TEMPLATE) {
- if ($chd_item === null || $new_item['type'] != $chd_item['type']) {
- $interface = self::findInterfaceForItem($new_item['type'], $chd_host['interfaces']);
+ if (array_key_exists('preprocessing', $item)) {
+ foreach ($item['preprocessing'] as &$preprocessing) {
+ unset($preprocessing['item_preprocid']);
+ }
+ unset($preprocessing);
+ }
- if ($interface) {
- $new_item['interfaceid'] = $interface['interfaceid'];
- }
- elseif ($interface !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _params(
- $this->getErrorMsg(self::ERROR_NO_INTERFACE), [$chd_host['host'], $new_item['key_']]
- ));
- }
- }
+ if (array_key_exists('parameters', $item)) {
+ foreach ($item['parameters'] as &$parameter) {
+ unset($parameter['item_parameterid']);
+ }
+ unset($parameter);
+ }
- if ($this instanceof CItem || $this instanceof CDiscoveryRule) {
- if (!array_key_exists('itemid', $new_item)) {
- $new_item['rtdata'] = true;
- }
- }
- }
+ return $item;
+ }
- if (array_key_exists('preprocessing', $new_item)) {
- foreach ($new_item['preprocessing'] as $preprocessing) {
- if ($chd_item) {
- $preprocessing['itemid'] = $chd_item['itemid'];
- }
- else {
- unset($preprocessing['itemid']);
- }
- }
- }
+ /**
+ * Update relation to master item for inherited dependent items.
+ *
+ * @param array $upd_items
+ * @param array $ins_items
+ * @param array $hostids
+ */
+ protected static function setChildMasterItemIds(array &$upd_items, array &$ins_items, array $hostids): void {
+ $upd_item_indexes = [];
+ $ins_item_indexes = [];
- $new_items[] = $new_item;
+ foreach ($upd_items as $i => $upd_item) {
+ if ($upd_item['type'] == ITEM_TYPE_DEPENDENT && array_key_exists('master_itemid', $upd_item)) {
+ $upd_item_indexes[$upd_item['master_itemid']][$upd_item['hostid']][] = $i;
}
}
- // Check if item with a new key already exists on the child host.
- if ($upd_hostids_by_key) {
- $sql_where = [];
- foreach ($upd_hostids_by_key as $key => $hostids) {
- $sql_where[] = dbConditionInt('i.hostid', $hostids).' AND i.key_='.zbx_dbstr($key);
+ foreach ($ins_items as $i => $ins_item) {
+ if ($ins_item['type'] == ITEM_TYPE_DEPENDENT) {
+ $ins_item_indexes[$ins_item['master_itemid']][$ins_item['hostid']][] = $i;
}
+ }
- $sql = 'SELECT i.hostid,i.key_'.
- ' FROM items i'.
- ' WHERE ('.implode(') OR (', $sql_where).')';
- $db_items = DBselect($sql, 1);
+ if (!$upd_item_indexes && !$ins_item_indexes) {
+ return;
+ }
- if ($db_item = DBfetch($db_items)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _params($this->getErrorMsg(self::ERROR_EXISTS),
- [$db_item['key_'], $chd_hosts[$db_item['hostid']]['host']]
- ));
+ $options = [
+ 'output' => ['itemid', 'hostid', 'templateid'],
+ 'filter' => [
+ 'templateid' => array_keys($ins_item_indexes + $upd_item_indexes),
+ 'hostid' => $hostids
+ ]
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
+
+ while ($row = DBfetch($result)) {
+ if (array_key_exists($row['templateid'], $upd_item_indexes)
+ && array_key_exists($row['hostid'], $upd_item_indexes[$row['templateid']])) {
+ foreach ($upd_item_indexes[$row['templateid']][$row['hostid']] as $i) {
+ $upd_items[$i]['master_itemid'] = $row['itemid'];
+ }
}
- }
- return $this->prepareDependentItems($tpl_items, $new_items, $hostids);
+ if (array_key_exists($row['templateid'], $ins_item_indexes)
+ && array_key_exists($row['hostid'], $ins_item_indexes[$row['templateid']])) {
+ foreach ($ins_item_indexes[$row['templateid']][$row['hostid']] as $i) {
+ $ins_items[$i]['master_itemid'] = $row['itemid'];
+ }
+ }
+ }
}
/**
- * Update relations for inherited dependent items to master items.
- *
- * @param array $tpl_items
- * @param int $tpl_items[<itemid>]['type']
- * @param string $tpl_items[<itemid>]['master_itemid']
- * @param array $new_items
- * @param string $new_items[<itemid>]['hostid']
- * @param int $new_items[<itemid>]['type']
- * @param string $new_items[<itemid>]['templateid']
- * @param array|null $hostids
+ * @param array $upd_items
+ * @param array $upd_db_items
+ * @param array $ins_items
*
- * @return array an array of synchronized inherited items.
+ * @throws APIException
*/
- private function prepareDependentItems(array $tpl_items, array $new_items, array $hostids = null) {
- $tpl_master_itemids = [];
+ protected static function addInterfaceIds(array &$upd_items, array $upd_db_items, array &$ins_items): void {
+ $upd_item_indexes = [];
+ $ins_item_indexes = [];
+ $interface_types = [];
- foreach ($tpl_items as $tpl_item) {
- if ($tpl_item['type'] == ITEM_TYPE_DEPENDENT) {
- $tpl_master_itemids[$tpl_item['master_itemid']] = true;
- }
- }
+ $required_interface_types = [INTERFACE_TYPE_AGENT, INTERFACE_TYPE_SNMP, INTERFACE_TYPE_IPMI,
+ INTERFACE_TYPE_JMX
+ ];
- if ($tpl_master_itemids) {
- $sql = 'SELECT i.itemid,i.hostid,i.templateid'.
- ' FROM items i'.
- ' WHERE '.dbConditionId('i.templateid', array_keys($tpl_master_itemids));
- if ($hostids !== null) {
- $sql .= ' AND '.dbConditionId('i.hostid', $hostids);
+ $upd_item_indexes_by_interfaceid = [];
+
+ foreach ($upd_items as $i => $upd_item) {
+ if (!in_array($upd_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])) {
+ continue;
}
- $db_items = DBselect($sql);
- $master_links = [];
+ $interface_type = itemTypeInterface($upd_item['type']);
- while ($db_item = DBfetch($db_items)) {
- $master_links[$db_item['templateid']][$db_item['hostid']] = $db_item['itemid'];
+ if (!in_array($interface_type, $required_interface_types)) {
+ continue;
}
- foreach ($new_items as &$new_item) {
- if ($new_item['type'] == ITEM_TYPE_DEPENDENT) {
- $tpl_item = $tpl_items[$new_item['templateid']];
+ if ($upd_db_items[$upd_item['itemid']]['interfaceid'] != 0) {
+ $upd_item_indexes_by_interfaceid[$upd_db_items[$upd_item['itemid']]['interfaceid']][] = $i;
+ }
+ else {
+ $upd_item_indexes[$upd_item['hostid']][$interface_type][] = $i;
+ $interface_types[$interface_type] = true;
+ }
+ }
+
+ if ($upd_item_indexes_by_interfaceid) {
+ $options = [
+ 'output' => ['interfaceid', 'type'],
+ 'interfaceids' => array_keys($upd_item_indexes_by_interfaceid)
+ ];
+ $result = DBselect(DB::makeSql('interface', $options));
+
+ while ($row = DBfetch($result)) {
+ foreach ($upd_item_indexes_by_interfaceid[$row['interfaceid']] as $i) {
+ $upd_item = $upd_items[$i];
+ $interface_type = itemTypeInterface($upd_item['type']);
- if (array_key_exists('master_itemid', $tpl_item)) {
- $new_item['master_itemid'] = $master_links[$tpl_item['master_itemid']][$new_item['hostid']];
+ if ($interface_type != $row['type']) {
+ $upd_item_indexes[$upd_item['hostid']][$interface_type][] = $i;
+ $interface_types[$interface_type] = true;
}
}
}
- unset($new_item);
}
- return $new_items;
- }
+ foreach ($ins_items as $i => $ins_item) {
+ if (!in_array($ins_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])) {
+ continue;
+ }
- /**
- * Validate item pre-processing.
- *
- * @param array $item An array of single item data.
- * @param array $item['preprocessing'] An array of item pre-processing data.
- * @param string $item['preprocessing'][]['type'] The preprocessing option type. Possible values:
- * 1 - ZBX_PREPROC_MULTIPLIER;
- * 2 - ZBX_PREPROC_RTRIM;
- * 3 - ZBX_PREPROC_LTRIM;
- * 4 - ZBX_PREPROC_TRIM;
- * 5 - ZBX_PREPROC_REGSUB;
- * 6 - ZBX_PREPROC_BOOL2DEC;
- * 7 - ZBX_PREPROC_OCT2DEC;
- * 8 - ZBX_PREPROC_HEX2DEC;
- * 9 - ZBX_PREPROC_DELTA_VALUE;
- * 10 - ZBX_PREPROC_DELTA_SPEED;
- * 11 - ZBX_PREPROC_XPATH;
- * 12 - ZBX_PREPROC_JSONPATH;
- * 13 - ZBX_PREPROC_VALIDATE_RANGE;
- * 14 - ZBX_PREPROC_VALIDATE_REGEX;
- * 15 - ZBX_PREPROC_VALIDATE_NOT_REGEX;
- * 16 - ZBX_PREPROC_ERROR_FIELD_JSON;
- * 17 - ZBX_PREPROC_ERROR_FIELD_XML;
- * 18 - ZBX_PREPROC_ERROR_FIELD_REGEX;
- * 19 - ZBX_PREPROC_THROTTLE_VALUE;
- * 20 - ZBX_PREPROC_THROTTLE_TIMED_VALUE;
- * 21 - ZBX_PREPROC_SCRIPT;
- * 22 - ZBX_PREPROC_PROMETHEUS_PATTERN;
- * 23 - ZBX_PREPROC_PROMETHEUS_TO_JSON;
- * 24 - ZBX_PREPROC_CSV_TO_JSON;
- * 25 - ZBX_PREPROC_STR_REPLACE;
- * 26 - ZBX_PREPROC_VALIDATE_NOT_SUPPORTED;
- * @param string $item['preprocessing'][]['params'] Additional parameters used by preprocessing
- * option. Multiple parameters are separated by LF
- * (\n) character.
- * @param string $item['preprocessing'][]['error_handler'] Action type used in case of preprocessing step
- * failure. Possible values:
- * 0 - ZBX_PREPROC_FAIL_DEFAULT;
- * 1 - ZBX_PREPROC_FAIL_DISCARD_VALUE;
- * 2 - ZBX_PREPROC_FAIL_SET_VALUE;
- * 3 - ZBX_PREPROC_FAIL_SET_ERROR.
- * @param string $item['preprocessing'][]['error_handler_params'] Error handler parameters.
- */
- protected function validateItemPreprocessing(array $item) {
- if (array_key_exists('preprocessing', $item)) {
- if (!is_array($item['preprocessing'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ $interface_type = itemTypeInterface($ins_item['type']);
+
+ if (!in_array($interface_type, $required_interface_types)) {
+ continue;
}
- $type_validator = new CLimitedSetValidator(['values' => static::SUPPORTED_PREPROCESSING_TYPES]);
+ $ins_item_indexes[$ins_item['hostid']][$interface_type][] = $i;
+ $interface_types[$interface_type] = true;
+ }
- $error_handler_validator = new CLimitedSetValidator([
- 'values' => [ZBX_PREPROC_FAIL_DEFAULT, ZBX_PREPROC_FAIL_DISCARD_VALUE, ZBX_PREPROC_FAIL_SET_VALUE,
- ZBX_PREPROC_FAIL_SET_ERROR
- ]
- ]);
+ if (!$upd_item_indexes && !$ins_item_indexes) {
+ return;
+ }
- $unsupported_error_handler_validator = new CLimitedSetValidator([
- 'values' => [ZBX_PREPROC_FAIL_DISCARD_VALUE, ZBX_PREPROC_FAIL_SET_VALUE, ZBX_PREPROC_FAIL_SET_ERROR]
- ]);
+ $options = [
+ 'output' => ['interfaceid', 'hostid', 'type'],
+ 'filter' => [
+ 'hostid' => array_keys($upd_item_indexes + $ins_item_indexes),
+ 'type' => array_keys($interface_types),
+ 'main' => INTERFACE_PRIMARY
+ ]
+ ];
+ $result = DBselect(DB::makeSql('interface', $options));
- $prometheus_pattern_parser = new CPrometheusPatternParser(['usermacros' => true,
- 'lldmacros' => ($this instanceof CItemPrototype)
- ]);
- $prometheus_output_parser = new CPrometheusOutputParser(['usermacros' => true,
- 'lldmacros' => ($this instanceof CItemPrototype)
- ]);
+ while ($row = DBfetch($result)) {
+ if (array_key_exists($row['hostid'], $upd_item_indexes)
+ && array_key_exists($row['type'], $upd_item_indexes[$row['hostid']])) {
+ foreach ($upd_item_indexes[$row['hostid']][$row['type']] as $_i => $i) {
+ $upd_items[$i]['interfaceid'] = $row['interfaceid'];
- $required_fields = ['type', 'params', 'error_handler', 'error_handler_params'];
- $delta = false;
- $throttling = false;
- $prometheus = false;
+ unset($upd_item_indexes[$row['hostid']][$row['type']][$_i]);
+ }
- foreach ($item['preprocessing'] as $preprocessing) {
- $missing_keys = array_diff($required_fields, array_keys($preprocessing));
+ if (!$upd_item_indexes[$row['hostid']][$row['type']]) {
+ unset($upd_item_indexes[$row['hostid']][$row['type']]);
+ }
- if ($missing_keys) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Item pre-processing is missing parameters: %1$s', implode(', ', $missing_keys))
- );
+ if (!$upd_item_indexes[$row['hostid']]) {
+ unset($upd_item_indexes[$row['hostid']]);
}
+ }
- if (is_array($preprocessing['type'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ if (array_key_exists($row['hostid'], $ins_item_indexes)
+ && array_key_exists($row['type'], $ins_item_indexes[$row['hostid']])) {
+ foreach ($ins_item_indexes[$row['hostid']][$row['type']] as $_i => $i) {
+ $ins_items[$i]['interfaceid'] = $row['interfaceid'];
+
+ unset($ins_item_indexes[$row['hostid']][$row['type']][$_i]);
}
- elseif ($preprocessing['type'] === '' || $preprocessing['type'] === null
- || $preprocessing['type'] === false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'type', _('cannot be empty'))
- );
+
+ if (!$ins_item_indexes[$row['hostid']][$row['type']]) {
+ unset($ins_item_indexes[$row['hostid']][$row['type']]);
}
- if (!$type_validator->validate($preprocessing['type'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'type',
- _s('unexpected value "%1$s"', $preprocessing['type'])
- )
- );
+ if (!$ins_item_indexes[$row['hostid']]) {
+ unset($ins_item_indexes[$row['hostid']]);
}
+ }
+ }
- $preprocessing['params'] = str_replace("\r\n", "\n", $preprocessing['params']);
+ $item = null;
- switch ($preprocessing['type']) {
- case ZBX_PREPROC_MULTIPLIER:
- // Check if custom multiplier is a valid number.
- $params = $preprocessing['params'];
+ if ($upd_item_indexes) {
+ $hostid = key($upd_item_indexes);
+ $interface_type = key($upd_item_indexes[$hostid]);
+ $i = reset($upd_item_indexes[$hostid][$interface_type]);
- if (is_array($params)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($params === '' || $params === null || $params === false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
- );
- }
+ $item = $upd_items[$i];
+ }
+ elseif ($ins_item_indexes) {
+ $hostid = key($ins_item_indexes);
+ $interface_type = key($ins_item_indexes[$hostid]);
+ $i = reset($ins_item_indexes[$hostid][$interface_type]);
- if (is_numeric($params)) {
- break;
- }
+ $item = $ins_items[$i];
+ }
- $types = ['usermacros' => true];
+ if ($item === null) {
+ return;
+ }
- if ($this instanceof CItemPrototype) {
- $types['lldmacros'] = true;
- }
+ $templates = DBfetchArray(DBselect(
+ 'SELECT h.host'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.itemid', [$item['templateid']])
+ ));
- if (!(new CMacrosResolverGeneral)->getMacroPositions($params, $types)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('a numeric value is expected')
- ));
- }
- break;
-
- case ZBX_PREPROC_RTRIM:
- case ZBX_PREPROC_LTRIM:
- case ZBX_PREPROC_TRIM:
- case ZBX_PREPROC_XPATH:
- case ZBX_PREPROC_JSONPATH:
- case ZBX_PREPROC_VALIDATE_REGEX:
- case ZBX_PREPROC_VALIDATE_NOT_REGEX:
- case ZBX_PREPROC_ERROR_FIELD_JSON:
- case ZBX_PREPROC_ERROR_FIELD_XML:
- case ZBX_PREPROC_SCRIPT:
- // Check 'params' if not empty.
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['params'] === '' || $preprocessing['params'] === null
- || $preprocessing['params'] === false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
- );
- }
- break;
-
- case ZBX_PREPROC_REGSUB:
- case ZBX_PREPROC_ERROR_FIELD_REGEX:
- case ZBX_PREPROC_STR_REPLACE:
- // Check if 'params' are not empty and if second parameter contains (after \n) is not empty.
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['params'] === '' || $preprocessing['params'] === null
- || $preprocessing['params'] === false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
- );
- }
+ $hosts = DB::select('hosts', [
+ 'output' => ['host'],
+ 'hostids' => $item['hostid']
+ ]);
- $params = explode("\n", $preprocessing['params']);
+ switch ($item['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ $error = _('Cannot inherit item with key "%1$s" of template "%2$s" to host "%3$s", because a host interface of type "%4$s" is required.');
+ break;
- if ($params[0] === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('first parameter is expected')
- ));
- }
+ case ZBX_FLAG_DISCOVERY_CREATED:
+ $error = _('Cannot inherit LLD rule with key "%1$s" of template "%2$s" to host "%3$s", because a host interface of type "%4$s" is required.');
+ break;
- if (($preprocessing['type'] == ZBX_PREPROC_REGSUB
- || $preprocessing['type'] == ZBX_PREPROC_ERROR_FIELD_REGEX)
- && (!array_key_exists(1, $params) || $params[1] === '')) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('second parameter is expected')
- ));
- }
- break;
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ $error = _('Cannot inherit item prototype with key "%1$s" of template "%2$s" to host "%3$s", because a host interface of type "%4$s" is required.');
+ break;
+ }
- case ZBX_PREPROC_VALIDATE_RANGE:
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif (trim($preprocessing['params']) === '' || $preprocessing['params'] === null
- || $preprocessing['params'] === false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
- );
- }
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $item['key_'], $templates[0]['host'],
+ $hosts[0]['host'], interfaceType2str($interface_type)
+ ));
+ }
- $params = explode("\n", $preprocessing['params']);
+ /**
+ * Inherit dependent items in nesting order.
+ *
+ * @param array $dep_items_to_link[<master item index>][<dependent item index>]
+ * @param array $items_to_link
+ * @param array $hostids
+ */
+ protected static function inheritDependentItems(array $dep_items_to_link, array $items_to_link,
+ array $hostids): void {
+ while ($dep_items_to_link) {
+ $items = [];
- if ($params[0] !== '' && !is_numeric($params[0])
- && (new CUserMacroParser())->parse($params[0]) != CParser::PARSE_SUCCESS
- && (!($this instanceof CItemPrototype)
- || ((new CLLDMacroFunctionParser())->parse($params[0]) != CParser::PARSE_SUCCESS
- && (new CLLDMacroParser())->parse($params[0]) != CParser::PARSE_SUCCESS))) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('a numeric value is expected')
- ));
- }
+ foreach ($dep_items_to_link as $i => $_items) {
+ if (array_key_exists($i, $items_to_link)) {
+ $items += $_items;
+ unset($dep_items_to_link[$i]);
+ }
+ }
- if ($params[1] !== '' && !is_numeric($params[1])
- && (new CUserMacroParser())->parse($params[1]) != CParser::PARSE_SUCCESS
- && (!($this instanceof CItemPrototype)
- || ((new CLLDMacroFunctionParser())->parse($params[1]) != CParser::PARSE_SUCCESS
- && (new CLLDMacroParser())->parse($params[1]) != CParser::PARSE_SUCCESS))) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('a numeric value is expected')
- ));
- }
+ static::inherit(array_values($items), [], $hostids, true);
- if (is_numeric($params[0]) && is_numeric($params[1]) && $params[0] > $params[1]) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s(
- 'Incorrect value for field "%1$s": %2$s.',
- 'params',
- _s('"%1$s" value must be less than or equal to "%2$s" value', _('min'), _('max'))
- ));
- }
- break;
-
- case ZBX_PREPROC_BOOL2DEC:
- case ZBX_PREPROC_OCT2DEC:
- case ZBX_PREPROC_HEX2DEC:
- case ZBX_PREPROC_THROTTLE_VALUE:
- // Check if 'params' is empty, because it must be empty.
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['params'] !== '' && $preprocessing['params'] !== null
- && $preprocessing['params'] !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('should be empty'))
- );
- }
+ $items_to_link = $items;
+ }
+ }
- if ($preprocessing['type'] == ZBX_PREPROC_THROTTLE_VALUE) {
- if ($throttling) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one throttling step is allowed.'));
- }
- else {
- $throttling = true;
- }
- }
- break;
-
- case ZBX_PREPROC_DELTA_VALUE:
- case ZBX_PREPROC_DELTA_SPEED:
- case ZBX_PREPROC_XML_TO_JSON:
- // Check if 'params' is empty, because it must be empty.
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['params'] !== '' && $preprocessing['params'] !== null
- && $preprocessing['params'] !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('should be empty'))
- );
- }
+ /**
+ * @param array $items
+ * @param array $db_items
+ * @param array|null $hostids
+ * @param bool $is_dep_items Inherit called for dependent items.
+ */
+ abstract protected static function inherit(array $items, array $db_items = [], array $hostids = null,
+ bool $is_dep_items = false): void;
- if ($preprocessing['type'] == ZBX_PREPROC_DELTA_VALUE
- || $preprocessing['type'] == ZBX_PREPROC_DELTA_SPEED) {
- // Check if one of the deltas (Delta per second or Delta value) already exists.
- if ($delta) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one change step is allowed.'));
- }
- else {
- $delta = true;
- }
- }
- break;
-
- case ZBX_PREPROC_THROTTLE_TIMED_VALUE:
- $api_input_rules = [
- 'type' => API_TIME_UNIT,
- 'flags' => ($this instanceof CItem)
- ? API_NOT_EMPTY | API_ALLOW_USER_MACRO
- : API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO,
- 'in' => '1:'.ZBX_MAX_TIMESHIFT
- ];
+ /**
+ * Add default values for fields that became unnecessary as the result of the change of the type fields.
+ *
+ * @param array $items
+ * @param array $db_items
+ */
+ protected static function addFieldDefaultsByType(array &$items, array $db_items): void {
+ $type_field_defaults = [
+ // The fields used for multiple item types.
+ 'interfaceid' => 0,
+ 'authtype' => DB::getDefault('items', 'authtype'),
+ 'username' => DB::getDefault('items', 'username'),
+ 'password' => DB::getDefault('items', 'password'),
+ 'params' => DB::getDefault('items', 'params'),
+ 'timeout' => DB::getDefault('items', 'timeout'),
+ 'delay' => DB::getDefault('items', 'delay'),
+ 'trapper_hosts' => DB::getDefault('items', 'trapper_hosts'),
+
+ // Dependent item type specific fields.
+ 'master_itemid' => 0,
+
+ // HTTP Agent item type specific fields.
+ 'url' => DB::getDefault('items', 'url'),
+ 'query_fields' => DB::getDefault('items', 'query_fields'),
+ 'request_method' => DB::getDefault('items', 'request_method'),
+ 'post_type' => DB::getDefault('items', 'post_type'),
+ 'posts' => DB::getDefault('items', 'posts'),
+ 'headers' => DB::getDefault('items', 'headers'),
+ 'status_codes' => DB::getDefault('items', 'status_codes'),
+ 'follow_redirects' => DB::getDefault('items', 'follow_redirects'),
+ 'retrieve_mode' => DB::getDefault('items', 'retrieve_mode'),
+ 'output_format' => DB::getDefault('items', 'output_format'),
+ 'http_proxy' => DB::getDefault('items', 'http_proxy'),
+ 'verify_peer' => DB::getDefault('items', 'verify_peer'),
+ 'verify_host' => DB::getDefault('items', 'verify_host'),
+ 'ssl_cert_file' => DB::getDefault('items', 'ssl_cert_file'),
+ 'ssl_key_file' => DB::getDefault('items', 'ssl_key_file'),
+ 'ssl_key_password' => DB::getDefault('items', 'ssl_key_password'),
+ 'allow_traps' => DB::getDefault('items', 'allow_traps'),
+
+ // IPMI item type specific fields.
+ 'ipmi_sensor' => DB::getDefault('items', 'ipmi_sensor'),
+
+ // JMX item type specific fields.
+ 'jmx_endpoint' => DB::getDefault('items', 'jmx_endpoint'),
+
+ // Script item type specific fields.
+ 'parameters' => [],
+
+ // SNMP item type specific fields.
+ 'snmp_oid' => DB::getDefault('items', 'snmp_oid'),
+
+ // SSH item type specific fields.
+ 'publickey' => DB::getDefault('items', 'publickey'),
+ 'privatekey' => DB::getDefault('items', 'privatekey')
+ ];
- if (!CApiInputValidator::validate($api_input_rules, $preprocessing['params'], 'params',
- $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
- }
+ $value_type_field_defaults = [
+ 'units' => DB::getDefault('items', 'units'),
+ 'trends' => DB::getDefault('items', 'trends'),
+ 'valuemapid' => 0,
+ 'logtimefmt' => DB::getDefault('items', 'logtimefmt'),
+ 'inventory_link' => DB::getDefault('items', 'inventory_link')
+ ];
- if ($throttling) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one throttling step is allowed.'));
- }
- else {
- $throttling = true;
- }
- break;
+ foreach ($items as &$item) {
+ if (!array_key_exists('type', $db_items[$item['itemid']])) {
+ continue;
+ }
- case ZBX_PREPROC_PROMETHEUS_PATTERN:
- case ZBX_PREPROC_PROMETHEUS_TO_JSON:
- if ($prometheus) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one Prometheus step is allowed.'));
- }
+ $db_item = $db_items[$item['itemid']];
- $prometheus = true;
+ if ($item['type'] != $db_item['type']) {
+ $type_field_names = CItemTypeFactory::getObject($item['type'])::FIELD_NAMES;
+ $db_type_field_names = CItemTypeFactory::getObject($db_item['type'])::FIELD_NAMES;
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
+ $field_names = array_flip(array_diff($db_type_field_names, $type_field_names));
- if ($preprocessing['type'] == ZBX_PREPROC_PROMETHEUS_PATTERN) {
- if ($preprocessing['params'] === '' || $preprocessing['params'] === null
- || $preprocessing['params'] === false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
- );
- }
+ if ($item['type'] == ITEM_TYPE_ZABBIX_ACTIVE && strncmp($item['key_'], 'mqtt.get', 8) == 0) {
+ $field_names += array_flip(['delay']);
+ }
- $params = explode("\n", $preprocessing['params']);
+ if (array_intersect([$item['type'], $db_item['type']], [ITEM_TYPE_SSH, ITEM_TYPE_HTTPAGENT])) {
+ $field_names += array_flip(['authtype']);
+ }
- if ($params[0] === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('first parameter is expected')
- ));
- }
- elseif (!array_key_exists(1, $params)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('second parameter is expected')
- ));
- }
- elseif (!array_key_exists(2, $params)
- && ($params[1] === ZBX_PREPROC_PROMETHEUS_LABEL
- || $params[1] === ZBX_PREPROC_PROMETHEUS_FUNCTION)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('third parameter is expected')
- ));
- }
+ if ($item['host_status'] == HOST_STATUS_TEMPLATE && array_key_exists('interfaceid', $field_names)) {
+ unset($field_names['interfaceid']);
+ }
- if ($prometheus_pattern_parser->parse($params[0]) != CParser::PARSE_SUCCESS) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('invalid Prometheus pattern')
- ));
- }
+ $item += array_intersect_key($type_field_defaults, $field_names);
+ }
+ elseif ($item['type'] == ITEM_TYPE_ZABBIX_ACTIVE) {
+ if (array_key_exists('key_', $item) && $item['key_'] !== $db_item['key_']
+ && strncmp($item['key_'], 'mqtt.get', 8) == 0) {
+ $item += array_intersect_key($type_field_defaults, array_flip(['delay']));
+ }
+ }
+ elseif ($item['type'] == ITEM_TYPE_SSH) {
+ if (array_key_exists('authtype', $item) && $item['authtype'] !== $db_item['authtype']
+ && $item['authtype'] == ITEM_AUTHTYPE_PASSWORD) {
+ $item += array_intersect_key($type_field_defaults, array_flip(['publickey', 'privatekey']));
+ }
+ }
+ elseif ($item['type'] == ITEM_TYPE_HTTPAGENT) {
+ if (array_key_exists('request_method', $item) && $item['request_method'] != $db_item['request_method']
+ && $item['request_method'] == HTTPCHECK_REQUEST_HEAD) {
+ $item += ['retrieve_mode' => HTTPTEST_STEP_RETRIEVE_MODE_HEADERS];
+ }
- if (!in_array($params[1], [ZBX_PREPROC_PROMETHEUS_VALUE, ZBX_PREPROC_PROMETHEUS_LABEL,
- ZBX_PREPROC_PROMETHEUS_FUNCTION])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('invalid aggregation method')
- ));
- }
+ if (array_key_exists('authtype', $item) && $item['authtype'] != $db_item['authtype']
+ && $item['authtype'] == HTTPTEST_AUTH_NONE) {
+ $item += array_intersect_key($type_field_defaults, array_flip(['username', 'password']));
+ }
- switch ($params[1]) {
- case ZBX_PREPROC_PROMETHEUS_VALUE:
- if (array_key_exists(2, $params) && $params[2] !== '') {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params',
- _('invalid Prometheus output')
- )
- );
- }
- break;
-
- case ZBX_PREPROC_PROMETHEUS_LABEL:
- if ($prometheus_output_parser->parse($params[2]) != CParser::PARSE_SUCCESS) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params',
- _('invalid Prometheus output')
- )
- );
- }
- break;
-
- case ZBX_PREPROC_PROMETHEUS_FUNCTION:
- if (!in_array($params[2], [ZBX_PREPROC_PROMETHEUS_SUM, ZBX_PREPROC_PROMETHEUS_MIN,
- ZBX_PREPROC_PROMETHEUS_MAX, ZBX_PREPROC_PROMETHEUS_AVG,
- ZBX_PREPROC_PROMETHEUS_COUNT])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params',
- _('unsupported Prometheus function')
- )
- );
- }
- break;
- }
- }
- // Prometheus to JSON can be empty and has only one parameter.
- elseif ($preprocessing['params'] !== '') {
- if ($prometheus_pattern_parser->parse($preprocessing['params']) != CParser::PARSE_SUCCESS) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('invalid Prometheus pattern')
- ));
- }
- }
- break;
+ if (array_key_exists('allow_traps', $item) && $item['allow_traps'] != $db_item['allow_traps']
+ && $item['allow_traps'] == HTTPCHECK_ALLOW_TRAPS_OFF) {
+ $item += array_intersect_key($type_field_defaults, array_flip(['trapper_hosts']));
+ }
+ }
- case ZBX_PREPROC_CSV_TO_JSON:
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['params'] === '' || $preprocessing['params'] === null
- || $preprocessing['params'] === false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
- );
- }
+ if (array_key_exists('value_type', $item) && $item['value_type'] != $db_item['value_type']) {
+ $type_field_names = static::VALUE_TYPE_FIELD_NAMES[$item['value_type']];
+ $db_type_field_names = static::VALUE_TYPE_FIELD_NAMES[$db_item['value_type']];
- $params = explode("\n", $preprocessing['params']);
+ $field_names = array_flip(array_diff($db_type_field_names, $type_field_names));
- $params_cnt = count($params);
- if ($params_cnt > 3) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($params_cnt == 1) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('second parameter is expected')
- ));
- }
- elseif ($params_cnt == 2) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('third parameter is expected')
- ));
- }
- else {
- // Correct amount of parameters, but check if they are valid.
+ if (array_key_exists('trends', $field_names)) {
+ $item += ['trends' => 0];
+ }
- if (mb_strlen($params[0]) > 1) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('value of first parameter is too long')
- ));
- }
+ $item += array_intersect_key($value_type_field_defaults, $field_names);
+ }
+ }
+ unset($item);
+ }
- if (mb_strlen($params[1]) > 1) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'params', _('value of second parameter is too long')
- ));
- }
+ /**
+ * @param array $items
+ * @param array|null $db_items
+ * @param array|null $upd_itemids
+ */
+ protected static function updateParameters(array &$items, array $db_items = null,
+ array &$upd_itemids = null): void {
+ $ins_item_parameters = [];
+ $upd_item_parameters = [];
+ $del_item_parameterids = [];
- $with_header_row_validator = new CLimitedSetValidator([
- 'values' => [ZBX_PREPROC_CSV_NO_HEADER, ZBX_PREPROC_CSV_HEADER]
- ]);
-
- if (!$with_header_row_validator->validate($params[2])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params',
- _s('value of third parameter must be one of %1$s',
- implode(', ', [ZBX_PREPROC_CSV_NO_HEADER, ZBX_PREPROC_CSV_HEADER])
- )
- )
- );
- }
- }
- break;
+ foreach ($items as $i => &$item) {
+ $update = false;
- case ZBX_PREPROC_VALIDATE_NOT_SUPPORTED:
- // Check if 'params' is empty, because it must be empty.
- if (is_array($preprocessing['params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['params'] !== '' && $preprocessing['params'] !== null
- && $preprocessing['params'] !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'params', _('should be empty'))
- );
- }
+ if ($db_items === null) {
+ if ($item['type'] == ITEM_TYPE_SCRIPT && array_key_exists('parameters', $item) && $item['parameters']) {
+ $update = true;
+ }
+ }
+ else {
+ if (!array_key_exists('type', $db_items[$item['itemid']])) {
+ continue;
+ }
- $preprocessing_types = array_column($item['preprocessing'], 'type');
+ if ($item['type'] == ITEM_TYPE_SCRIPT) {
+ if (array_key_exists('parameters', $item)) {
+ $update = true;
+ }
+ }
+ elseif ($db_items[$item['itemid']]['type'] == ITEM_TYPE_SCRIPT
+ && $db_items[$item['itemid']]['parameters']) {
+ $update = true;
+ }
+ }
- if (count(array_keys($preprocessing_types, ZBX_PREPROC_VALIDATE_NOT_SUPPORTED)) > 1) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _('Only one not supported value check is allowed.')
- );
- }
- break;
- }
-
- switch ($preprocessing['type']) {
- case ZBX_PREPROC_RTRIM:
- case ZBX_PREPROC_LTRIM:
- case ZBX_PREPROC_TRIM:
- case ZBX_PREPROC_THROTTLE_VALUE:
- case ZBX_PREPROC_THROTTLE_TIMED_VALUE:
- case ZBX_PREPROC_SCRIPT:
- case ZBX_PREPROC_STR_REPLACE:
- if (is_array($preprocessing['error_handler'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['error_handler'] != ZBX_PREPROC_FAIL_DEFAULT) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler',
- _s('unexpected value "%1$s"', $preprocessing['error_handler'])
- )
- );
- }
+ if (!$update) {
+ continue;
+ }
- if (is_array($preprocessing['error_handler_params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['error_handler_params'] !== ''
- && $preprocessing['error_handler_params'] !== null
- && $preprocessing['error_handler_params'] !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
- _('should be empty')
- )
- );
- }
- break;
+ $changed = false;
+ $db_item_parameters = ($db_items !== null)
+ ? array_column($db_items[$item['itemid']]['parameters'], null, 'name')
+ : [];
- case ZBX_PREPROC_VALIDATE_NOT_SUPPORTED:
- if (is_array($preprocessing['error_handler'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif (!$unsupported_error_handler_validator->validate($preprocessing['error_handler'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler',
- _s('unexpected value "%1$s"', $preprocessing['error_handler'])
- )
- );
- }
+ foreach ($item['parameters'] as &$item_parameter) {
+ if (array_key_exists($item_parameter['name'], $db_item_parameters)) {
+ $db_item_parameter = $db_item_parameters[$item_parameter['name']];
+ $item_parameter['item_parameterid'] = $db_item_parameter['item_parameterid'];
+ unset($db_item_parameters[$db_item_parameter['name']]);
- if (is_array($preprocessing['error_handler_params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif ($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_DISCARD_VALUE
- && $preprocessing['error_handler_params'] !== ''
- && $preprocessing['error_handler_params'] !== null
- && $preprocessing['error_handler_params'] !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
- _('should be empty')
- )
- );
- }
- elseif ($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_SET_ERROR
- && ($preprocessing['error_handler_params'] === ''
- || $preprocessing['error_handler_params'] === null
- || $preprocessing['error_handler_params'] === false)) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
- _('cannot be empty')
- )
- );
- }
- break;
+ $upd_item_parameter = DB::getUpdatedValues('item_parameter', $item_parameter, $db_item_parameter);
- default:
- if (is_array($preprocessing['error_handler'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif (!$error_handler_validator->validate($preprocessing['error_handler'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler',
- _s('unexpected value "%1$s"', $preprocessing['error_handler'])
- )
- );
- }
+ if ($upd_item_parameter) {
+ $upd_item_parameters[] = [
+ 'values' => $upd_item_parameter,
+ 'where' => ['item_parameterid' => $db_item_parameter['item_parameterid']]
+ ];
+ $changed = true;
+ }
+ }
+ else {
+ $ins_item_parameters[] = ['itemid' => $item['itemid']] + $item_parameter;
+ $changed = true;
+ }
+ }
+ unset($item_parameter);
- if (is_array($preprocessing['error_handler_params'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
- }
- elseif (($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_DEFAULT
- || $preprocessing['error_handler'] == ZBX_PREPROC_FAIL_DISCARD_VALUE)
- && $preprocessing['error_handler_params'] !== ''
- && $preprocessing['error_handler_params'] !== null
- && $preprocessing['error_handler_params'] !== false) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
- _('should be empty')
- )
- );
- }
- elseif ($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_SET_ERROR
- && ($preprocessing['error_handler_params'] === ''
- || $preprocessing['error_handler_params'] === null
- || $preprocessing['error_handler_params'] === false)) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
- _('cannot be empty')
- )
- );
- }
+ if ($db_item_parameters) {
+ $del_item_parameterids =
+ array_merge($del_item_parameterids, array_column($db_item_parameters, 'item_parameterid'));
+ $changed = true;
+ }
+
+ if ($db_items !== null) {
+ if ($changed) {
+ $upd_itemids[$i] = $item['itemid'];
+ }
+ else {
+ unset($item['parameters']);
}
}
}
- }
+ unset($item);
- /**
- * Method validates preprocessing steps independently from other item properties.
- *
- * @param array $preprocessing_steps An array of item pre-processing step details.
- * See self::validateItemPreprocessing for details.
- *
- * @return bool|string
- */
- public function validateItemPreprocessingSteps(array $preprocessing_steps) {
- try {
- $this->validateItemPreprocessing(['preprocessing' => $preprocessing_steps]);
+ if ($del_item_parameterids) {
+ DB::delete('item_parameter', ['item_parameterid' => $del_item_parameterids]);
+ }
- return true;
+ if ($upd_item_parameters) {
+ DB::update('item_parameter', $upd_item_parameters);
}
- catch (APIException $error) {
- return $error->getMessage();
+
+ if ($ins_item_parameters) {
+ $item_parameterids = DB::insert('item_parameter', $ins_item_parameters);
}
- }
- /**
- * Insert item pre-processing data into DB.
- *
- * @param array $items An array of items.
- * @param string $items[]['itemid']
- * @param array $items[]['preprocessing'] An array of item pre-processing data.
- */
- protected function createItemPreprocessing(array $items) {
- $item_preproc = [];
+ foreach ($items as &$item) {
+ if (!array_key_exists('parameters', $item)) {
+ continue;
+ }
- foreach ($items as $item) {
- if (array_key_exists('preprocessing', $item)) {
- $step = 1;
-
- foreach ($item['preprocessing'] as $preprocessing) {
- $item_preproc[] = [
- 'itemid' => $item['itemid'],
- 'step' => ($preprocessing['type'] == ZBX_PREPROC_VALIDATE_NOT_SUPPORTED) ? 0 : $step++,
- 'type' => $preprocessing['type'],
- 'params' => $preprocessing['params'],
- 'error_handler' => $preprocessing['error_handler'],
- 'error_handler_params' => $preprocessing['error_handler_params']
- ];
+ foreach ($item['parameters'] as &$item_parameter) {
+ if (!array_key_exists('item_parameterid', $item_parameter)) {
+ $item_parameter['item_parameterid'] = array_shift($item_parameterids);
}
}
+ unset($item_parameter);
}
-
- if ($item_preproc) {
- DB::insertBatch('item_preproc', $item_preproc);
- }
+ unset($item);
}
/**
- * Update item pre-processing data in DB. Delete old records and create new ones.
- *
- * @param array $items
- * @param string $items[]['itemid']
- * @param array $items[]['preprocessing']
- * @param int $items[]['preprocessing'][]['type']
- * @param string $items[]['preprocessing'][]['params']
- * @param int $items[]['preprocessing'][]['error_handler']
- * @param string $items[]['preprocessing'][]['error_handler_params']
+ * @param array $items
+ * @param array|null $db_items
+ * @param array|null $upd_itemids
*/
- protected function updateItemPreprocessing(array $items) {
- $item_preprocs = [];
+ protected static function updatePreprocessing(array &$items, array $db_items = null,
+ array &$upd_itemids = null): void {
+ $ins_item_preprocs = [];
+ $upd_item_preprocs = [];
+ $del_item_preprocids = [];
- foreach ($items as $item) {
- if (array_key_exists('preprocessing', $item)) {
- $item_preprocs[$item['itemid']] = [];
- $step = 1;
-
- foreach ($item['preprocessing'] as $item_preproc) {
- $curr_step = ($item_preproc['type'] == ZBX_PREPROC_VALIDATE_NOT_SUPPORTED) ? 0 : $step++;
- $item_preprocs[$item['itemid']][$curr_step] = [
- 'type' => $item_preproc['type'],
- 'params' => $item_preproc['params'],
- 'error_handler' => $item_preproc['error_handler'],
- 'error_handler_params' => $item_preproc['error_handler_params']
- ];
- }
+ foreach ($items as $i => &$item) {
+ if (!array_key_exists('preprocessing', $item)) {
+ continue;
}
- }
- if (!$item_preprocs) {
- return;
- }
+ $changed = false;
+ $db_item_preprocs = ($db_items !== null)
+ ? array_column($db_items[$item['itemid']]['preprocessing'], null, 'step')
+ : [];
- $ins_item_preprocs = [];
- $upd_item_preprocs = [];
- $del_item_preprocids = [];
+ $step = 1;
- $options = [
- 'output' => ['item_preprocid', 'itemid', 'step', 'type', 'params', 'error_handler', 'error_handler_params'],
- 'filter' => ['itemid' => array_keys($item_preprocs)]
- ];
- $db_item_preprocs = DBselect(DB::makeSql('item_preproc', $options));
+ foreach ($item['preprocessing'] as &$item_preproc) {
+ $item_preproc['step'] = ($item_preproc['type'] == ZBX_PREPROC_VALIDATE_NOT_SUPPORTED) ? 0 : $step++;
- while ($db_item_preproc = DBfetch($db_item_preprocs)) {
- if (array_key_exists($db_item_preproc['step'], $item_preprocs[$db_item_preproc['itemid']])) {
- $item_preproc = $item_preprocs[$db_item_preproc['itemid']][$db_item_preproc['step']];
- $upd_item_preproc = [];
+ if (array_key_exists($item_preproc['step'], $db_item_preprocs)) {
+ $db_item_preproc = $db_item_preprocs[$item_preproc['step']];
+ $item_preproc['item_preprocid'] = $db_item_preproc['item_preprocid'];
+ unset($db_item_preprocs[$db_item_preproc['step']]);
- if ($item_preproc['type'] != $db_item_preproc['type']) {
- $upd_item_preproc['type'] = $item_preproc['type'];
- }
- if ($item_preproc['params'] !== $db_item_preproc['params']) {
- $upd_item_preproc['params'] = $item_preproc['params'];
- }
- if ($item_preproc['error_handler'] != $db_item_preproc['error_handler']) {
- $upd_item_preproc['error_handler'] = $item_preproc['error_handler'];
- }
- if ($item_preproc['error_handler_params'] !== $db_item_preproc['error_handler_params']) {
- $upd_item_preproc['error_handler_params'] = $item_preproc['error_handler_params'];
- }
+ $upd_item_preproc = DB::getUpdatedValues('item_preproc', $item_preproc, $db_item_preproc);
- if ($upd_item_preproc) {
- $upd_item_preprocs[] = [
- 'values' => $upd_item_preproc,
- 'where' => ['item_preprocid' => $db_item_preproc['item_preprocid']]
- ];
+ if ($upd_item_preproc) {
+ $upd_item_preprocs[] = [
+ 'values' => $upd_item_preproc,
+ 'where' => ['item_preprocid' => $db_item_preproc['item_preprocid']]
+ ];
+ $changed = true;
+ }
+ }
+ else {
+ $ins_item_preprocs[] = ['itemid' => $item['itemid']] + $item_preproc;
+ $changed = true;
}
- unset($item_preprocs[$db_item_preproc['itemid']][$db_item_preproc['step']]);
}
- else {
- $del_item_preprocids[] = $db_item_preproc['item_preprocid'];
+ unset($item_preproc);
+
+ if ($db_item_preprocs) {
+ $del_item_preprocids =
+ array_merge($del_item_preprocids, array_column($db_item_preprocs, 'item_preprocid'));
+ $changed = true;
}
- }
- foreach ($item_preprocs as $itemid => $preprocs) {
- foreach ($preprocs as $step => $preproc) {
- $ins_item_preprocs[] = [
- 'itemid' => $itemid,
- 'step' => $step
- ] + $preproc;
+ if ($db_items !== null) {
+ if ($changed) {
+ $upd_itemids[$i] = $item['itemid'];
+ }
+ else {
+ unset($item['preprocessing']);
+ }
}
}
+ unset($item);
if ($del_item_preprocids) {
DB::delete('item_preproc', ['item_preprocid' => $del_item_preprocids]);
@@ -1947,167 +1396,277 @@ abstract class CItemGeneral extends CApiService {
}
if ($ins_item_preprocs) {
- DB::insertBatch('item_preproc', $ins_item_preprocs);
+ $item_preprocids = DB::insert('item_preproc', $ins_item_preprocs);
}
+
+ foreach ($items as &$item) {
+ if (!array_key_exists('preprocessing', $item)) {
+ continue;
+ }
+
+ foreach ($item['preprocessing'] as &$item_preproc) {
+ if (!array_key_exists('item_preprocid', $item_preproc)) {
+ $item_preproc['item_preprocid'] = array_shift($item_preprocids);
+ }
+ }
+ unset($item_preproc);
+ }
+ unset($item);
}
/**
- * Create item parameters.
- *
- * @param array $items Array of items.
- * @param array $items[]['parameters'] Item parameters.
- * @param array $items[]['parameters'][]['name'] Parameter name.
- * @param array $items[]['parameters'][]['value'] Parameter value.
- * @param array $itemids Array of item IDs that were created before.
+ * @param array $items
+ * @param array|null $db_items
+ * @param array|null $upd_itemids
*/
- protected function createItemParameters(array $items, array $itemids): void {
- $item_parameters = [];
-
- foreach ($items as $key => $item) {
- $items[$key]['itemid'] = $itemids[$key];
+ protected static function updateTags(array &$items, array $db_items = null, array &$upd_itemids = null): void {
+ $ins_tags = [];
+ $del_itemtagids = [];
- if (!array_key_exists('parameters', $item) || !$item['parameters']) {
+ foreach ($items as $i => &$item) {
+ if (!array_key_exists('tags', $item)) {
continue;
}
- foreach ($item['parameters'] as $parameter) {
- $item_parameters[] = [
- 'itemid' => $items[$key]['itemid'],
- 'name' => $parameter['name'],
- 'value' => $parameter['value']
- ];
+ $changed = false;
+ $db_tags = ($db_items !== null) ? $db_items[$item['itemid']]['tags'] : [];
+
+ foreach ($item['tags'] as &$tag) {
+ $db_itemtagid = key(array_filter($db_tags, static function (array $db_tag) use ($tag): bool {
+ return $tag['tag'] === $db_tag['tag']
+ && (!array_key_exists('value', $tag) || $tag['value'] === $db_tag['value']);
+ }));
+
+ if ($db_itemtagid !== null) {
+ $tag['itemtagid'] = $db_itemtagid;
+ unset($db_tags[$db_itemtagid]);
+ }
+ else {
+ $ins_tags[] = ['itemid' => $item['itemid']] + $tag;
+ $changed = true;
+ }
+ }
+ unset($tag);
+
+ if ($db_tags) {
+ $del_itemtagids = array_merge($del_itemtagids, array_keys($db_tags));
+ $changed = true;
}
+
+ if ($db_items !== null) {
+ if ($changed) {
+ $upd_itemids[$i] = $item['itemid'];
+ }
+ else {
+ unset($item['tags']);
+ }
+ }
+ }
+ unset($item);
+
+ if ($del_itemtagids) {
+ DB::delete('item_tag', ['itemtagid' => $del_itemtagids]);
}
- if ($item_parameters) {
- DB::insertBatch('item_parameter', $item_parameters);
+ if ($ins_tags) {
+ $itemtagids = DB::insert('item_tag', $ins_tags);
}
+
+ foreach ($items as &$item) {
+ if (!array_key_exists('tags', $item)) {
+ continue;
+ }
+
+ foreach ($item['tags'] as &$tag) {
+ if (!array_key_exists('itemtagid', $tag)) {
+ $tag['itemtagid'] = array_shift($itemtagids);
+ }
+ }
+ unset($tag);
+ }
+ unset($item);
}
/**
- * Update item parameters.
- *
- * @param array $items Array of items.
- * @param int|string $items[]['itemid'] Item ID.
- * @param int|string $items[]['type'] Item type.
- * @param array $items[]['parameters'] Item parameters.
- * @param array $items[]['parameters'][]['name'] Parameter name.
- * @param array $items[]['parameters'][]['value'] Parameter value.
+ * Check for unique item keys.
+ *
+ * @param array $items
+ * @param array|null $db_items
+ *
+ * @throws APIException if item keys are not unique.
*/
- protected function updateItemParameters(array $items): void {
- $db_item_parameters_by_itemid = [];
+ protected static function checkDuplicates(array $items, array $db_items = null): void {
+ $host_keys = [];
foreach ($items as $item) {
- if ($item['type'] != ITEM_TYPE_SCRIPT || array_key_exists('parameters', $item)) {
- $db_item_parameters_by_itemid[$item['itemid']] = [];
+ if ($db_items === null || $item['key_'] !== $db_items[$item['itemid']]['key_']) {
+ $host_keys[$item['hostid']][] = $item['key_'];
}
}
- if (!$db_item_parameters_by_itemid) {
+ if (!$host_keys) {
return;
}
- $options = [
- 'output' => ['item_parameterid', 'itemid', 'name', 'value'],
- 'filter' => ['itemid' => array_keys($db_item_parameters_by_itemid)]
- ];
- $result = DBselect(DB::makeSql('item_parameter', $options));
+ $where = [];
+ foreach ($host_keys as $hostid => $keys) {
+ $where[] = '('.dbConditionId('i.hostid', [$hostid]).' AND '.dbConditionString('i.key_', $keys).')';
+ }
- while ($row = DBfetch($result)) {
- $db_item_parameters_by_itemid[$row['itemid']][$row['name']] = [
- 'item_parameterid' => $row['item_parameterid'],
- 'value' => $row['value']
- ];
+ $duplicates = DBfetchArray(DBselect(
+ 'SELECT i.key_,i.flags,h.host,h.status'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND ('.implode(' OR ', $where).')',
+ 1
+ ));
+
+ if ($duplicates) {
+ $target_is_template = ($duplicates[0]['status'] == HOST_STATUS_TEMPLATE);
+
+ switch ($duplicates[0]['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ case ZBX_FLAG_DISCOVERY_CREATED:
+ $error = $target_is_template
+ ? _('An item with key "%1$s" already exists on the template "%2$s".')
+ : _('An item with key "%1$s" already exists on the host "%2$s".');
+ break;
+
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ $error = $target_is_template
+ ? _('An item prototype with key "%1$s" already exists on the template "%2$s".')
+ : _('An item prototype with key "%1$s" already exists on the host "%2$s".');
+ break;
+
+ case ZBX_FLAG_DISCOVERY_RULE:
+ $error = $target_is_template
+ ? _('An LLD rule with key "%1$s" already exists on the template "%2$s".')
+ : _('An LLD rule with key "%1$s" already exists on the host "%2$s".');
+ break;
+ }
+
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $duplicates[0]['key_'], $duplicates[0]['host']));
}
+ }
- $ins_item_parameters = [];
- $upd_item_parameters = [];
- $del_item_parameterids = [];
+ /**
+ * @param array $items
+ * @param array|null $db_items
+ *
+ * @throws APIException
+ */
+ protected static function checkHostInterfaces(array $items, array $db_items = null): void {
+ foreach ($items as $i => &$item) {
+ $interface_type = itemTypeInterface($item['type']);
+
+ if (!in_array($item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])
+ || $interface_type === false) {
+ unset($items[$i]);
+ continue;
+ }
- foreach ($db_item_parameters_by_itemid as $itemid => $db_item_parameters) {
- $item = $items[$itemid];
-
- if ($item['type'] == ITEM_TYPE_SCRIPT && array_key_exists('parameters', $item)) {
- foreach ($item['parameters'] as $parameter) {
- if (array_key_exists($parameter['name'], $db_item_parameters)) {
- if ($db_item_parameters[$parameter['name']]['value'] !== $parameter['value']) {
- $upd_item_parameters[] = [
- 'values' => ['value' => $parameter['value']],
- 'where' => [
- 'item_parameterid' => $db_item_parameters[$parameter['name']]['item_parameterid']
- ]
- ];
+ $check = false;
+
+ if ($db_items === null) {
+ if (array_key_exists('interfaceid', $item)) {
+ if ($item['interfaceid'] != 0) {
+ $check = true;
+ }
+ elseif ($interface_type != INTERFACE_TYPE_OPT) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/interfaceid', _('the host interface ID is expected')
+ ));
+ }
+ }
+ }
+ else {
+ $db_item = $db_items[$item['itemid']];
+
+ if ($item['type'] == $db_item['type']) {
+ if (array_key_exists('interfaceid', $item)) {
+ if ($item['interfaceid'] != 0) {
+ if (bccomp($item['interfaceid'], $db_item['interfaceid']) != 0) {
+ $check = true;
+ }
+ }
+ elseif ($interface_type != INTERFACE_TYPE_OPT) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/interfaceid', _('the host interface ID is expected')
+ ));
+ }
+ }
+ }
+ else {
+ $db_interface_type = itemTypeInterface($db_item['type']);
+
+ if (array_key_exists('interfaceid', $item)) {
+ if ($item['interfaceid'] != 0) {
+ if (bccomp($item['interfaceid'], $db_item['interfaceid']) != 0
+ || ($interface_type != INTERFACE_TYPE_OPT
+ && $interface_type != $db_interface_type)) {
+ $check = true;
+ }
+ }
+ elseif ($interface_type != INTERFACE_TYPE_OPT) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/interfaceid', _('the host interface ID is expected')
+ ));
}
- unset($db_item_parameters[$parameter['name']]);
}
else {
- $ins_item_parameters[] = [
- 'itemid' => $itemid,
- 'name' => $parameter['name'],
- 'value' => $parameter['value']
- ];
+ if ($db_item['interfaceid'] != 0) {
+ if ($interface_type != INTERFACE_TYPE_OPT && $interface_type != $db_interface_type) {
+ $item += ['interfaceid' => $db_item['interfaceid']];
+
+ $check = true;
+ }
+ }
+ elseif ($interface_type != INTERFACE_TYPE_OPT) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1), _s('the parameter "%1$s" is missing', 'interfaceid')
+ ));
+ }
}
}
}
- $del_item_parameterids = array_merge($del_item_parameterids,
- array_column($db_item_parameters, 'item_parameterid')
- );
- }
-
- if ($del_item_parameterids) {
- DB::delete('item_parameter', ['item_parameterid' => $del_item_parameterids]);
+ if (!$check) {
+ unset($items[$i]);
+ }
}
+ unset($item);
- if ($upd_item_parameters) {
- DB::update('item_parameter', $upd_item_parameters);
+ if (!$items) {
+ return;
}
- if ($ins_item_parameters) {
- DB::insertBatch('item_parameter', $ins_item_parameters);
- }
- }
+ $db_interfaces = DB::select('interface', [
+ 'output' => ['interfaceid', 'hostid', 'type'],
+ 'interfaceids' => array_unique(array_column($items, 'interfaceid')),
+ 'preservekeys' => true
+ ]);
- /**
- * Check if any item from list already exists.
- * If items have item ids it will check for existing item with different itemid.
- *
- * @throw APIException
- *
- * @param array $items
- */
- protected function checkExistingItems(array $items) {
- $itemKeysByHostId = [];
- $itemIds = [];
- foreach ($items as $item) {
- if (!isset($itemKeysByHostId[$item['hostid']])) {
- $itemKeysByHostId[$item['hostid']] = [];
+ foreach ($items as $i => $item) {
+ if (!array_key_exists($item['interfaceid'], $db_interfaces)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/interfaceid', _('the host interface ID is expected')
+ ));
}
- $itemKeysByHostId[$item['hostid']][] = $item['key_'];
- if (isset($item['itemid'])) {
- $itemIds[] = $item['itemid'];
+ if (bccomp($db_interfaces[$item['interfaceid']]['hostid'], $item['hostid']) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/interfaceid', _('cannot be the host interface ID from another host')
+ ));
}
- }
- $sqlWhere = [];
- foreach ($itemKeysByHostId as $hostId => $keys) {
- $sqlWhere[] = '(i.hostid='.zbx_dbstr($hostId).' AND '.dbConditionString('i.key_', $keys).')';
- }
+ $interface_type = itemTypeInterface($item['type']);
- if ($sqlWhere) {
- $sql = 'SELECT i.key_,h.host'.
- ' FROM items i,hosts h'.
- ' WHERE i.hostid=h.hostid AND ('.implode(' OR ', $sqlWhere).')';
-
- // if we update existing items we need to exclude them from result.
- if ($itemIds) {
- $sql .= ' AND '.dbConditionInt('i.itemid', $itemIds, true);
- }
- $dbItems = DBselect($sql, 1);
- while ($dbItem = DBfetch($dbItems)) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Item with key "%1$s" already exists on "%2$s".', $dbItem['key_'], $dbItem['host']));
+ if ($interface_type != INTERFACE_TYPE_OPT
+ && $db_interfaces[$item['interfaceid']]['type'] != $interface_type) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/interfaceid',
+ _s('the host interface ID of type "%1$s" is expected', interfaceType2str($interface_type))
+ ));
}
}
}
@@ -2222,522 +1781,499 @@ abstract class CItemGeneral extends CApiService {
}
/**
- * Validate items with type ITEM_TYPE_DEPENDENT for create or update operation.
+ * Check that dependent items of given items are valid.
*
- * @param array $items
- * @param string $items[]['itemid'] (mandatory for updated items and item prototypes)
- * @param string $items[]['hostid']
- * @param int $items[]['type']
- * @param string $items[]['master_itemid'] (mandatory for ITEM_TYPE_DEPENDENT)
- * @param int $items[]['flags'] (mandatory for items)
+ * @param array $items
+ * @param array $db_items
+ * @param bool $inherited
*
- * @throws APIException for invalid data.
+ * @throws APIException
*/
- protected function validateDependentItems(array $items) {
- $dep_items = [];
- $upd_itemids = [];
+ protected static function checkDependentItems(array $items, array $db_items = [], bool $inherited = false): void {
+ $del_links = [];
+
+ foreach ($items as $i => $item) {
+ $check = false;
- foreach ($items as $item) {
if ($item['type'] == ITEM_TYPE_DEPENDENT) {
- if ($this instanceof CDiscoveryRule || $this instanceof CItemPrototype
- || $item['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
- $dep_items[] = $item;
+ if (!array_key_exists('itemid', $item)) {
+ if ($item['master_itemid'] != 0) {
+ $check = true;
+ }
+ else {
+ $error = $item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE
+ ? _('an item/item prototype ID is expected')
+ : _('an item ID is expected');
+
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/master_itemid', $error
+ ));
+ }
}
+ else {
+ if (array_key_exists('master_itemid', $item)) {
+ if ($item['master_itemid'] != 0) {
+ if (bccomp($item['master_itemid'], $db_items[$item['itemid']]['master_itemid']) != 0) {
+ $check = true;
+
+ if ($db_items[$item['itemid']]['master_itemid'] != 0) {
+ $del_links[$item['itemid']] = $db_items[$item['itemid']]['master_itemid'];
+ }
+ }
+ }
+ else {
+ $error = $item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE
+ ? _('an item/item prototype ID is expected')
+ : _('an item ID is expected');
- if (array_key_exists('itemid', $item)) {
- $upd_itemids[] = $item['itemid'];
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/master_itemid', $error
+ ));
+ }
+ }
}
}
- }
-
- if (!$dep_items) {
- return;
- }
-
- if ($this instanceof CItemPrototype && $upd_itemids) {
- $db_links = DBselect(
- 'SELECT id.itemid,id.parent_itemid AS ruleid'.
- ' FROM item_discovery id'.
- ' WHERE '.dbConditionId('id.itemid', $upd_itemids)
- );
-
- $links = [];
-
- while ($db_link = DBfetch($db_links)) {
- $links[$db_link['itemid']] = $db_link['ruleid'];
+ elseif (array_key_exists('itemid', $item) && $db_items[$item['itemid']]['type'] == ITEM_TYPE_DEPENDENT) {
+ $del_links[$item['itemid']] = $db_items[$item['itemid']]['master_itemid'];
}
- foreach ($dep_items as &$dep_item) {
- if (array_key_exists('itemid', $dep_item)) {
- $dep_item['ruleid'] = $links[$dep_item['itemid']];
- }
+ if (!$check) {
+ unset($items[$i]);
}
- unset($dep_item);
}
- $master_itemids = [];
-
- foreach ($dep_items as $dep_item) {
- $master_itemids[$dep_item['master_itemid']] = true;
+ if (!$items) {
+ return;
}
- $master_items = [];
-
- // Fill relations array by master items (item prototypes). Discovery rule should not be master item.
- do {
- if ($this instanceof CItemPrototype) {
- $db_master_items = DBselect(
- 'SELECT i.itemid,i.hostid,i.master_itemid,i.flags,id.parent_itemid AS ruleid'.
- ' FROM items i'.
- ' LEFT JOIN item_discovery id'.
- ' ON i.itemid=id.itemid'.
- ' WHERE '.dbConditionId('i.itemid', array_keys($master_itemids)).
- ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_NORMAL, ZBX_FLAG_DISCOVERY_PROTOTYPE])
- );
- }
- // CDiscoveryRule, CItem
- else {
- $db_master_items = DBselect(
- 'SELECT i.itemid,i.hostid,i.master_itemid'.
- ' FROM items i'.
- ' WHERE '.dbConditionId('i.itemid', array_keys($master_itemids)).
- ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_NORMAL])
- );
- }
+ if (!$inherited) {
+ self::checkMasterItems($items, $db_items);
+ }
- while ($db_master_item = DBfetch($db_master_items)) {
- $master_items[$db_master_item['itemid']] = $db_master_item;
+ $dep_item_links = self::getDependentItemLinks($items, $del_links);
- unset($master_itemids[$db_master_item['itemid']]);
- }
+ if (!$inherited && $db_items) {
+ self::checkCircularDependencies($items, $dep_item_links);
+ }
- if ($master_itemids) {
- reset($master_itemids);
+ $root_itemids = [];
- self::exception(ZBX_API_ERROR_PERMISSIONS,
- _s('Incorrect value for field "%1$s": %2$s.', 'master_itemid',
- _s('Item "%1$s" does not exist or you have no access to this item', key($master_itemids))
- )
- );
+ foreach ($dep_item_links as $itemid => $master_itemid) {
+ if ($master_itemid == 0) {
+ $root_itemids[] = $itemid;
}
+ }
- $master_itemids = [];
-
- foreach ($master_items as $master_item) {
- if ($master_item['master_itemid'] != 0
- && !array_key_exists($master_item['master_itemid'], $master_items)) {
- $master_itemids[$master_item['master_itemid']] = true;
- }
- }
- } while ($master_itemids);
+ $master_item_links = self::getMasterItemLinks($items, $root_itemids, $del_links);
- foreach ($dep_items as $dep_item) {
- $master_item = $master_items[$dep_item['master_itemid']];
+ foreach ($root_itemids as $root_itemid) {
+ if (self::maxDependencyLevelExceeded($master_item_links, $root_itemid, $links_path)) {
+ [$flags, $key, $master_flags, $master_key, $is_template, $host] =
+ self::getProblemCausedItemData($links_path, $items);
- if ($dep_item['hostid'] != $master_item['hostid']) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('"hostid" of dependent item and master item should match')
- ));
- }
+ $error = self::getDependentItemError($flags, $master_flags, $is_template);
- if ($this instanceof CItemPrototype && $master_item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE
- && $dep_item['ruleid'] != $master_item['ruleid']) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('"ruleid" of dependent item and master item should match')
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $key, $master_key, $host,
+ _('allowed count of dependency levels would be exceeded')
));
}
- if (array_key_exists('itemid', $dep_item)) {
- $master_itemid = $dep_item['master_itemid'];
+ if (self::maxDependentItemCountExceeded($master_item_links, $root_itemid, $links_path)) {
+ [$flags, $key, $master_flags, $master_key, $is_template, $host] =
+ self::getProblemCausedItemData($links_path, $items);
- while ($master_itemid != 0) {
- if ($master_itemid == $dep_item['itemid']) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('circular item dependency is not allowed')
- ));
- }
+ $error = self::getDependentItemError($flags, $master_flags, $is_template);
- $master_itemid = $master_items[$master_itemid]['master_itemid'];
- }
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $key, $master_key, $host,
+ _('allowed count of dependent items would be exceeded')
+ ));
}
}
+ }
- // Fill relations array by dependent items (item prototypes).
- $root_itemids = [];
+ /**
+ * Check that master item IDs of given dependent items are valid.
+ *
+ * @param array $items
+ * @param array $db_items
+ *
+ * @throws APIException
+ */
+ private static function checkMasterItems(array $items, array $db_items): void {
+ $master_itemids = array_unique(array_column($items, 'master_itemid'));
+ $flags = $items[key($items)]['flags'];
- foreach ($master_items as $master_item) {
- if ($master_item['master_itemid'] == 0) {
- $root_itemids[] = $master_item['itemid'];
- }
+ if ($flags == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
+ $db_master_items = DBfetchArrayAssoc(DBselect(
+ 'SELECT i.itemid,i.hostid,i.master_itemid,i.flags,id.parent_itemid AS ruleid'.
+ ' FROM items i'.
+ ' LEFT JOIN item_discovery id ON i.itemid=id.itemid'.
+ ' WHERE '.dbConditionId('i.itemid', $master_itemids).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_NORMAL, ZBX_FLAG_DISCOVERY_PROTOTYPE])
+ ), 'itemid');
}
-
- $dependent_items = [];
-
- foreach ($dep_items as $dep_item) {
- if (array_key_exists('itemid', $dep_item)) {
- $dependent_items[$dep_item['master_itemid']][] = $dep_item['itemid'];
- }
+ else {
+ $db_master_items = DB::select('items', [
+ 'output' => ['itemid', 'hostid', 'master_itemid'],
+ 'itemids' => $master_itemids,
+ 'filter' => [
+ 'flags' => ZBX_FLAG_DISCOVERY_NORMAL
+ ],
+ 'preservekeys' => true
+ ]);
}
- $master_itemids = $root_itemids;
+ foreach ($items as $i => $item) {
+ if (!array_key_exists($item['master_itemid'], $db_master_items)) {
+ $error = $flags == ZBX_FLAG_DISCOVERY_PROTOTYPE
+ ? _('an item/item prototype ID is expected')
+ : _('an item ID is expected');
- do {
- $sql = 'SELECT i.master_itemid,i.itemid'.
- ' FROM items i'.
- ' WHERE '.dbConditionId('i.master_itemid', $master_itemids);
- if ($upd_itemids) {
- $sql .= ' AND '.dbConditionId('i.itemid', $upd_itemids, true); // Exclude updated items.
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/master_itemid', $error
+ ));
}
- $db_items = DBselect($sql);
+ $db_master_item = $db_master_items[$item['master_itemid']];
- while ($db_item = DBfetch($db_items)) {
- $dependent_items[$db_item['master_itemid']][] = $db_item['itemid'];
+ if (bccomp($db_master_item['hostid'], $item['hostid']) != 0) {
+ $error = $flags == ZBX_FLAG_DISCOVERY_PROTOTYPE
+ ? _('cannot be an item/item prototype ID from another host or template')
+ : _('cannot be an item ID from another host or template');
+
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/master_itemid', $error
+ ));
}
- $_master_itemids = $master_itemids;
- $master_itemids = [];
+ if ($flags == ZBX_FLAG_DISCOVERY_PROTOTYPE && $db_master_item['ruleid'] != 0) {
+ $item_ruleid = array_key_exists('itemid', $item)
+ ? $db_items[$item['itemid']]['ruleid']
+ : $item['ruleid'];
- foreach ($_master_itemids as $master_itemid) {
- if (array_key_exists($master_itemid, $dependent_items)) {
- $master_itemids = array_merge($master_itemids, $dependent_items[$master_itemid]);
+ if (bccomp($db_master_item['ruleid'], $item_ruleid) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/master_itemid', _('cannot be an item prototype ID from another LLD rule')
+ ));
}
}
- } while ($master_itemids);
-
- foreach ($dep_items as $dep_item) {
- if (!array_key_exists('itemid', $dep_item)) {
- $dependent_items[$dep_item['master_itemid']][] = false;
- }
- }
-
- foreach ($root_itemids as $root_itemid) {
- self::checkDependencyDepth($dependent_items, $root_itemid);
}
}
/**
- * Validate depth and amount of elements in the tree of the dependent items.
+ * Get dependent item links starting from the given dependent items and till the highest dependency level.
*
- * @param array $dependent_items
- * @param string $dependent_items[<master_itemid>][] List if the dependent item IDs ("false" for new items)
- * by master_itemid.
- * @param string $root_itemid ID of the item being checked.
- * @param int $level Current dependency level.
+ * @param array $items
+ * @param array $del_links
*
- * @throws APIException for invalid data.
+ * @return array Array of the links where each key contain the ID of dependent item and value contain the
+ * appropriate ID of the master item.
*/
- private static function checkDependencyDepth(array $dependent_items, $root_itemid, $level = 0) {
- $count = 0;
-
- if (array_key_exists($root_itemid, $dependent_items)) {
- if (++$level > ZBX_DEPENDENT_ITEM_MAX_LEVELS) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('maximum number of dependency levels reached')
- ));
- }
+ private static function getDependentItemLinks(array $items, array $del_links): array {
+ $links = array_column($items, 'master_itemid', 'itemid');
+ $master_itemids = array_flip(array_column($items, 'master_itemid'));
+
+ while ($master_itemids) {
+ $options = [
+ 'output' => ['itemid', 'hostid', 'master_itemid'],
+ 'itemids' => array_keys($master_itemids)
+ ];
+ $db_master_items = DBselect(DB::makeSql('items', $options));
- foreach ($dependent_items[$root_itemid] as $master_itemid) {
- $count++;
+ $master_itemids = [];
- if ($master_itemid !== false) {
- $count += self::checkDependencyDepth($dependent_items, $master_itemid, $level);
+ while ($db_master_item = DBfetch($db_master_items)) {
+ if (array_key_exists($db_master_item['itemid'], $del_links)
+ && bccomp($db_master_item['master_itemid'], $del_links[$db_master_item['itemid']]) == 0) {
+ $links[$db_master_item['itemid']] = 0;
+ continue;
}
- }
- if ($count > ZBX_DEPENDENT_ITEM_MAX_COUNT) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
- 'master_itemid', _('maximum dependent items count reached')
- ));
+ $links[$db_master_item['itemid']] = $db_master_item['master_itemid'];
+
+ if ($db_master_item['master_itemid'] != 0) {
+ $master_itemids[$db_master_item['master_itemid']] = true;
+ }
}
}
- return $count;
+ return $links;
}
/**
- * Converts headers field text to hash with header name as key.
+ * Check that the changed master item IDs of dependent items do not create a circular dependencies.
*
- * @param string $headers Headers string, one header per line, line delimiter "\r\n".
+ * @param array $items
+ * @param array $dep_item_links
*
- * @return array
+ * @throws APIException
*/
- protected function headersStringToArray($headers) {
- $result = [];
-
- foreach (explode("\r\n", $headers) as $header) {
- $header = explode(': ', $header, 2);
+ private static function checkCircularDependencies(array $items, array $dep_item_links): void {
+ foreach ($items as $i => $item) {
+ $master_itemid = $item['master_itemid'];
+
+ while ($master_itemid != 0) {
+ if (bccomp($master_itemid, $item['itemid']) == 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/master_itemid', _('circular item dependency is not allowed')
+ ));
+ }
- if (count($header) == 2) {
- $result[$header[0]] = $header[1];
+ $master_itemid = $dep_item_links[$master_itemid];
}
}
-
- return $result;
}
/**
- * Converts headers fields hash to string.
+ * Get master item links starting from the given master items and till the lowest level master items.
*
- * @param array $headers Array of headers where key is header name.
+ * @param array $items
+ * @param array $master_itemids
+ * @param array $del_links
*
- * @return string
+ * @return array Array of the links where each key contain the ID of master item and value contain the array of
+ * appropriate dependent item IDs.
*/
- protected function headersArrayToString(array $headers) {
- $result = [];
+ private static function getMasterItemLinks(array $items, array $master_itemids, array $del_links): array {
+ $ins_links = [];
+ $upd_item_links = [];
- foreach ($headers as $k => $v) {
- $result[] = $k.': '.$v;
+ foreach ($items as $item) {
+ if (array_key_exists('itemid', $item)) {
+ $upd_item_links[$item['master_itemid']][] = $item['itemid'];
+ }
+ else {
+ $ins_links[$item['master_itemid']][] = 0;
+ }
}
- return implode("\r\n", $result);
+ $links = [];
+
+ do {
+ $options = [
+ 'output' => ['master_itemid', 'itemid'],
+ 'filter' => [
+ 'master_itemid' => $master_itemids
+ ]
+ ];
+ $db_items = DBselect(DB::makeSql('items', $options));
+
+ $_master_itemids = [];
+
+ while ($db_item = DBfetch($db_items)) {
+ if (array_key_exists($db_item['itemid'], $del_links)
+ && bccomp($db_item['master_itemid'], $del_links[$db_item['itemid']]) == 0) {
+ continue;
+ }
+
+ $links[$db_item['master_itemid']][] = $db_item['itemid'];
+ $_master_itemids[] = $db_item['itemid'];
+ }
+
+ foreach ($master_itemids as $master_itemid) {
+ if (array_key_exists($master_itemid, $upd_item_links)) {
+ foreach ($upd_item_links[$master_itemid] as $itemid) {
+ $_master_itemids[] = $itemid;
+ $links[$master_itemid][] = $itemid;
+ }
+ }
+ }
+
+ $master_itemids = $_master_itemids;
+ } while ($master_itemids);
+
+ foreach ($ins_links as $master_itemid => $ins_items) {
+ $links[$master_itemid] = array_key_exists($master_itemid, $links)
+ ? array_merge($links[$master_itemid], $ins_items)
+ : $ins_items;
+ }
+
+ return $links;
}
/**
- * Validate item with type ITEM_TYPE_HTTPAGENT.
+ * Check whether maximum number of dependency levels is exceeded.
*
- * @param array $item Array of item fields.
- * @param array $db_item Array of item database fields for update action or empty array for create action.
+ * @param array $master_item_links
+ * @param string $master_itemid
+ * @param array|null $links_path
+ * @param int $level
*
- * @throws APIException for invalid data.
+ * @return bool
*/
- protected function validateHTTPCheck(array $item, array $db_item) {
- $rules = [
- 'timeout' => [
- 'type' => API_TIME_UNIT, 'flags' => ($this instanceof CItemPrototype)
- ? API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO
- : API_NOT_EMPTY | API_ALLOW_USER_MACRO,
- 'in' => '1:'.SEC_PER_MIN
- ],
- 'url' => [
- 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY,
- 'length' => DB::getFieldLength('items', 'url')
- ],
- 'status_codes' => [
- 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'status_codes')
- ],
- 'follow_redirects' => [
- 'type' => API_INT32,
- 'in' => implode(',', [HTTPTEST_STEP_FOLLOW_REDIRECTS_OFF, HTTPTEST_STEP_FOLLOW_REDIRECTS_ON])
- ],
- 'post_type' => [
- 'type' => API_INT32,
- 'in' => implode(',', [ZBX_POSTTYPE_RAW, ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML])
- ],
- 'http_proxy' => [
- 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'http_proxy')
- ],
- 'headers' => [
- 'type' => API_STRINGS_UTF8
- ],
- 'retrieve_mode' => [
- 'type' => API_INT32,
- 'in' => implode(',', [
- HTTPTEST_STEP_RETRIEVE_MODE_CONTENT, HTTPTEST_STEP_RETRIEVE_MODE_HEADERS,
- HTTPTEST_STEP_RETRIEVE_MODE_BOTH
- ])
- ],
- 'request_method' => [
- 'type' => API_INT32,
- 'in' => implode(',', [
- HTTPCHECK_REQUEST_GET, HTTPCHECK_REQUEST_POST, HTTPCHECK_REQUEST_PUT, HTTPCHECK_REQUEST_HEAD
- ])
- ],
- 'output_format' => [
- 'type' => API_INT32,
- 'in' => implode(',', [HTTPCHECK_STORE_RAW, HTTPCHECK_STORE_JSON])
- ],
- 'allow_traps' => [
- 'type' => API_INT32,
- 'in' => implode(',', [HTTPCHECK_ALLOW_TRAPS_OFF, HTTPCHECK_ALLOW_TRAPS_ON])
- ],
- 'ssl_cert_file' => [
- 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_cert_file')
- ],
- 'ssl_key_file' => [
- 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_file')
- ],
- 'ssl_key_password' => [
- 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_password')
- ],
- 'verify_peer' => [
- 'type' => API_INT32,
- 'in' => implode(',', [HTTPTEST_VERIFY_PEER_OFF, HTTPTEST_VERIFY_PEER_ON])
- ],
- 'verify_host' => [
- 'type' => API_INT32,
- 'in' => implode(',', [HTTPTEST_VERIFY_HOST_OFF, HTTPTEST_VERIFY_HOST_ON])
- ],
- 'authtype' => [
- 'type' => API_INT32,
- 'in' => implode(',', [
- HTTPTEST_AUTH_NONE, HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS,
- HTTPTEST_AUTH_DIGEST
- ])
- ]
- ];
-
- $data = $item + $db_item;
-
- if (array_key_exists('authtype', $data)
- && ($data['authtype'] == HTTPTEST_AUTH_BASIC || $data['authtype'] == HTTPTEST_AUTH_NTLM
- || $data['authtype'] == HTTPTEST_AUTH_KERBEROS || $data['authtype'] == HTTPTEST_AUTH_DIGEST)) {
- $rules += [
- 'username' => [ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'username')],
- 'password' => [ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'password')]
- ];
+ private static function maxDependencyLevelExceeded(array $master_item_links, string $master_itemid,
+ array &$links_path = null, int $level = 0): bool {
+ if (!array_key_exists($master_itemid, $master_item_links)) {
+ return false;
}
- // Strict validation for 'retrieve_mode' only for create action.
- if (array_key_exists('request_method', $data) && $data['request_method'] == HTTPCHECK_REQUEST_HEAD
- && array_key_exists('retrieve_mode', $item)) {
- $rules['retrieve_mode']['in'] = (string) HTTPTEST_STEP_RETRIEVE_MODE_HEADERS;
+ if ($links_path === null) {
+ $links_path = [];
}
- if (array_key_exists('post_type', $data)
- && ($data['post_type'] == ZBX_POSTTYPE_JSON || $data['post_type'] == ZBX_POSTTYPE_XML)) {
- $rules['posts'] = [
- 'type' => API_STRING_UTF8,
- 'length' => DB::getFieldLength('items', 'posts')
- ];
+ $links_path[] = $master_itemid;
+ $level++;
+
+ if ($level > ZBX_DEPENDENT_ITEM_MAX_LEVELS) {
+ return true;
}
- if (array_key_exists('templateid', $data) && $data['templateid']) {
- $rules['interfaceid'] = [
- 'type' => API_ID, 'flags' => API_REQUIRED
- ];
+ foreach ($master_item_links[$master_itemid] as $itemid) {
+ $_links_path = $links_path;
+
+ if (self::maxDependencyLevelExceeded($master_item_links, $itemid, $_links_path, $level)) {
+ $links_path = $_links_path;
- if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
- unset($rules['interfaceid']['flags']);
+ return true;
}
}
- if (array_key_exists('trapper_hosts', $item) && $item['trapper_hosts'] !== ''
- && (!array_key_exists('allow_traps', $data) || $data['allow_traps'] == HTTPCHECK_ALLOW_TRAPS_OFF)) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'trapper_hosts', _('should be empty'))
- );
- }
+ return false;
+ }
- // Keep values only for fields with defined validation rules.
- $data = array_intersect_key($data, $rules);
- if (!CApiInputValidator::validate(['type' => API_OBJECT, 'fields' => $rules], $data, '', $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ /**
+ * Check whether maximum count of dependent items is exceeded.
+ *
+ * @param array $master_item_links
+ * @param string $master_itemid
+ * @param array|null $links_path
+ * @param int $count
+ *
+ * @return bool
+ */
+ private static function maxDependentItemCountExceeded(array $master_item_links, string $master_itemid,
+ array &$links_path = null, int &$count = 0): bool {
+ if (!array_key_exists($master_itemid, $master_item_links)) {
+ return false;
}
- if (array_key_exists('query_fields', $item)) {
- if (!is_array($item['query_fields'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', 'query_fields', _('an array is expected'))
- );
- }
+ if ($links_path === null) {
+ $links_path = [];
+ }
- foreach ($item['query_fields'] as $v) {
- if (!is_array($v) || count($v) > 1 || key($v) === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', 'query_fields', _('nonempty key and value pair expected'))
- );
- }
- }
+ $links_path[] = $master_itemid;
+ $count += count($master_item_links[$master_itemid]);
- if (strlen(json_encode($item['query_fields'])) > DB::getFieldLength('items', 'query_fields')) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.', 'query_fields',
- _('cannot convert to JSON, result value too long')
- ));
- }
+ if ($count > ZBX_DEPENDENT_ITEM_MAX_COUNT) {
+ return true;
}
- if (array_key_exists('headers', $item)) {
- if (!is_array($item['headers'])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', 'headers', _('an array is expected'))
- );
- }
+ foreach ($master_item_links[$master_itemid] as $itemid) {
+ $_links_path = $links_path;
- foreach ($item['headers'] as $k => $v) {
- if (trim($k) === '' || !is_string($v) || $v === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', 'headers', _('nonempty key and value pair expected'))
- );
- }
+ if (self::maxDependentItemCountExceeded($master_item_links, $itemid, $_links_path, $count)) {
+ $links_path = $_links_path;
+
+ return true;
}
}
- if (array_key_exists('status_codes', $item) && $item['status_codes']) {
- $ranges_parser = new CRangesParser([
- 'usermacros' => true,
- 'lldmacros' => ($this instanceof CItemPrototype)
- ]);
+ return false;
+ }
- if ($ranges_parser->parse($item['status_codes']) != CParser::PARSE_SUCCESS) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value "%1$s" for "%2$s" field.', $item['status_codes'], 'status_codes')
- );
+ /**
+ * Get data for a dependent item that causes a problem, based on the given path where the problem was detected.
+ *
+ * @param array $links_path
+ * @param array $items
+ *
+ * @return array
+ */
+ private static function getProblemCausedItemData(array $links_path, array $items): array {
+ foreach ($items as $item) {
+ if (in_array($item['master_itemid'], $links_path)) {
+ break;
}
}
- if ((array_key_exists('post_type', $item) || array_key_exists('posts', $item))
- && ($data['post_type'] == ZBX_POSTTYPE_JSON || $data['post_type'] == ZBX_POSTTYPE_XML)) {
- $posts = array_key_exists('posts', $data) ? $data['posts'] : '';
- libxml_use_internal_errors(true);
-
- if ($data['post_type'] == ZBX_POSTTYPE_XML
- && simplexml_load_string($posts, null, LIBXML_IMPORT_FLAGS) === false) {
- $errors = libxml_get_errors();
- libxml_clear_errors();
+ $master_item_data = DBfetch(DBselect(
+ 'SELECT i.flags,i.key_,h.host'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.itemid', [$item['master_itemid']])
+ ));
- if (!$errors) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', 'posts', _('XML is expected'))
- );
- }
- else {
- $error = reset($errors);
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.', 'posts',
- _s('%1$s [Line: %2$s | Column: %3$s]', '('.$error->code.') '.trim($error->message),
- $error->line, $error->column
- )));
- }
- }
+ $flags = $item['flags'];
+ $key = $item['key_'];
+ $master_flags = $master_item_data['flags'];
+ $master_key = $master_item_data['key_'];
+ $is_template = $item['host_status'] == HOST_STATUS_TEMPLATE;
+ $host = $master_item_data['host'];
- if ($data['post_type'] == ZBX_POSTTYPE_JSON) {
- if (trim($posts, " \r\n") === '') {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', 'posts', _('JSON is expected'))
- );
- }
+ return [$flags, $key, $master_flags, $master_key, $is_template, $host];
+ }
- $types = [
- 'usermacros' => true,
- 'macros_n' => [
- '{HOST.IP}', '{HOST.CONN}', '{HOST.DNS}', '{HOST.HOST}', '{HOST.NAME}', '{ITEM.ID}',
- '{ITEM.KEY}'
- ]
- ];
+ /**
+ * Get the error message about problem with dependent item according to given data.
+ *
+ * @param int $flags
+ * @param int $master_flags
+ * @param bool $is_template
+ *
+ * @return string
+ */
+ private static function getDependentItemError(int $flags, int $master_flags, bool $is_template): string {
+ if ($flags == ZBX_FLAG_DISCOVERY_NORMAL) {
+ return $is_template
+ ? _('Cannot set dependency for item with key "%1$s" on the master item with key "%2$s" on the template "%3$s": %4$s.')
+ : _('Cannot set dependency for item with key "%1$s" on the master item with key "%2$s" on the host "%3$s": %4$s.');
+ }
+ elseif ($flags == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
+ if ($master_flags == ZBX_FLAG_DISCOVERY_NORMAL) {
+ return $is_template
+ ? _('Cannot set dependency for item prototype with key "%1$s" on the master item with key "%2$s" on the template "%3$s": %4$s.')
+ : _('Cannot set dependency for item prototype with key "%1$s" on the master item with key "%2$s" on the host "%3$s": %4$s.');
+ }
+ else {
+ return $is_template
+ ? _('Cannot set dependency for item prototype with key "%1$s" on the master item prototype with key "%2$s" on the template "%3$s": %4$s.')
+ : _('Cannot set dependency for item prototype with key "%1$s" on the master item prototype with key "%2$s" on the host "%3$s": %4$s.');
+ }
+ }
+ elseif ($flags == ZBX_FLAG_DISCOVERY_RULE) {
+ return $is_template
+ ? _('Cannot set dependency for LLD rule with key "%1$s" on the master item with key "%2$s" on the template "%3$s": %4$s.')
+ : _('Cannot set dependency for LLD rule with key "%1$s" on the master item with key "%2$s" on the host "%3$s": %4$s.');
+ }
+ }
- if ($this instanceof CItemPrototype) {
- $types['lldmacros'] = true;
- }
+ /**
+ * Converts headers field text to hash with header name as key.
+ *
+ * @param string $headers Headers string, one header per line, line delimiter "\r\n".
+ *
+ * @return array
+ */
+ protected static function headersStringToArray(string $headers): array {
+ $result = [];
- $matches = (new CMacrosResolverGeneral)->getMacroPositions($posts, $types);
+ foreach (explode("\r\n", $headers) as $header) {
+ $header = explode(': ', $header, 2);
- $shift = 0;
+ if (count($header) == 2) {
+ $result[$header[0]] = $header[1];
+ }
+ }
- foreach ($matches as $pos => $substr) {
- $posts = substr_replace($posts, '1', $pos + $shift, strlen($substr));
- $shift = $shift + 1 - strlen($substr);
- }
+ return $result;
+ }
- json_decode($posts);
+ /**
+ * Converts headers fields hash to string.
+ *
+ * @param array $headers Array of headers where key is header name.
+ *
+ * @return string
+ */
+ protected static function headersArrayToString(array $headers): string {
+ $result = [];
- if (json_last_error()) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Invalid parameter "%1$s": %2$s.', 'posts', _('JSON is expected'))
- );
- }
- }
+ foreach ($headers as $k => $v) {
+ $result[] = $k.': '.$v;
}
+
+ return implode("\r\n", $result);
}
/**
@@ -2812,162 +2348,254 @@ abstract class CItemGeneral extends CApiService {
}
/**
- * Update item tags.
+ * Check that valuemap belong to same host as item.
*
- * @param array $items
- * @param string $items[]['itemid']
- * @param array $items[]['tags']
- * @param string $items[]['tags'][]['tag']
- * @param string $items[]['tags'][]['value']
+ * @param array $items
+ * @param array|null $db_items
+ *
+ * @throws APIException
*/
- protected function updateItemTags(array $items): void {
- $items = array_filter($items, function ($item) {
- return array_key_exists('tags', $item);
- });
-
- // Select tags from database.
- $db_tags = DBselect(
- 'SELECT itemtagid, itemid, tag, value'.
- ' FROM item_tag'.
- ' WHERE '.dbConditionInt('itemid', array_keys($items))
- );
+ protected static function checkValueMaps(array $items, array $db_items = null): void {
+ $item_indexes = [];
- array_walk($items, function (&$item) {
- $item['db_tags'] = [];
- });
+ foreach ($items as $i => $item) {
+ if (array_key_exists('valuemapid', $item) && $item['valuemapid'] != 0
+ && ($db_items === null
+ || bccomp($item['valuemapid'], $db_items[$item['itemid']]['valuemapid']) != 0)) {
+ $item_indexes[$item['valuemapid']][] = $i;
+ }
+ }
- while ($db_tag = DBfetch($db_tags)) {
- $items[$db_tag['itemid']]['db_tags'][] = $db_tag;
+ if (!$item_indexes) {
+ return;
}
- // Find which tags must be added/deleted.
- $new_tags = [];
- $del_tagids = [];
- foreach ($items as $item) {
- CArrayHelper::sort($item['tags'], ['tag', 'value']);
+ $options = [
+ 'output' => ['valuemapid', 'hostid'],
+ 'valuemapids' => array_keys($item_indexes)
+ ];
+ $db_valuemaps = DBselect(DB::makeSql('valuemap', $options));
- foreach ($item['db_tags'] as $del_tag_key => $tag_delete) {
- foreach ($item['tags'] as $new_tag_key => $tag_add) {
- if ($tag_delete['tag'] === $tag_add['tag'] && $tag_delete['value'] === $tag_add['value']) {
- unset($item['db_tags'][$del_tag_key], $item['tags'][$new_tag_key]);
- continue 2;
- }
+ while ($db_valuemap = DBfetch($db_valuemaps)) {
+ foreach ($item_indexes[$db_valuemap['valuemapid']] as $i) {
+ if (bccomp($db_valuemap['hostid'], $items[$i]['hostid']) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.',
+ '/'.($i + 1).'/valuemapid', _('cannot be a value map ID from another host or template')
+ ));
}
}
+ }
+ }
+
+ /**
+ * Add the internally used fields to the given $db_items.
+ *
+ * @param array $db_items
+ */
+ protected static function addInternalFields(array &$db_items): void {
+ $result = DBselect(
+ 'SELECT i.itemid,i.hostid,i.templateid,i.flags,h.status AS host_status'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND '.dbConditionId('i.itemid', array_keys($db_items))
+ );
+
+ while ($row = DBfetch($result)) {
+ $db_items[$row['itemid']] += $row;
+ }
+ }
+
+ /**
+ * Note: instances may override this to add e.g. tags.
+ *
+ * @param array $items
+ * @param array $db_items
+ */
+ protected static function addAffectedObjects(array $items, array &$db_items): void {
+ self::addAffectedTags($items, $db_items);
+ self::addAffectedPreprocessing($items, $db_items);
+ self::addAffectedParameters($items, $db_items);
+ }
- $del_tagids = array_merge($del_tagids, array_column($item['db_tags'], 'itemtagid'));
+ /**
+ * @param array $items
+ * @param array $db_items
+ */
+ protected static function addAffectedTags(array $items, array &$db_items): void {
+ $itemids = [];
- foreach ($item['tags'] as $tag_add) {
- $tag_add['itemid'] = $item['itemid'];
- $new_tags[] = $tag_add;
+ foreach ($items as $item) {
+ if (array_key_exists('tags', $item)) {
+ $itemids[] = $item['itemid'];
+ $db_items[$item['itemid']]['tags'] = [];
}
}
- if ($del_tagids) {
- DB::delete('item_tag', ['itemtagid' => $del_tagids]);
+ if (!$itemids) {
+ return;
}
- if ($new_tags) {
- DB::insert('item_tag', $new_tags);
+
+ $options = [
+ 'output' => ['itemtagid', 'itemid', 'tag', 'value'],
+ 'filter' => ['itemid' => $itemids]
+ ];
+ $db_item_tags = DBselect(DB::makeSql('item_tag', $options));
+
+ while ($db_item_tag = DBfetch($db_item_tags)) {
+ $db_items[$db_item_tag['itemid']]['tags'][$db_item_tag['itemtagid']] =
+ array_diff_key($db_item_tag, array_flip(['itemid']));
}
}
/**
- * Record item tags into database.
- *
- * @param array $items
- * @param array $items[]['tags']
- * @param string $items[]['tags'][]['tag']
- * @param string $items[]['tags'][]['value']
- * @param int $items[]['itemid']
+ * @param array $items
+ * @param array $db_items
*/
- protected function createItemTags(array $items): void {
- $new_tags = [];
- foreach ($items as $key => $item) {
- if (array_key_exists('tags', $item)) {
- foreach ($item['tags'] as $tag) {
- $tag['itemid'] = $item['itemid'];
- $new_tags[] = $tag;
- }
+ protected static function addAffectedPreprocessing(array $items, array &$db_items): void {
+ $itemids = [];
+
+ foreach ($items as $item) {
+ if (array_key_exists('preprocessing', $item)) {
+ $itemids[] = $item['itemid'];
+ $db_items[$item['itemid']]['preprocessing'] = [];
}
}
- if ($new_tags) {
- DB::insert('item_tag', $new_tags);
+ if (!$itemids) {
+ return;
+ }
+
+ $options = [
+ 'output' => [
+ 'item_preprocid', 'itemid', 'step', 'type', 'params', 'error_handler', 'error_handler_params'
+ ],
+ 'filter' => ['itemid' => $itemids]
+ ];
+ $db_item_preprocs = DBselect(DB::makeSql('item_preproc', $options));
+
+ while ($db_item_preproc = DBfetch($db_item_preprocs)) {
+ $db_items[$db_item_preproc['itemid']]['preprocessing'][$db_item_preproc['item_preprocid']] =
+ array_diff_key($db_item_preproc, array_flip(['itemid']));
}
}
/**
- * Check that valuemap belong to same host as item.
- *
* @param array $items
+ * @param array $db_items
*/
- protected function validateValueMaps(array $items): void {
- $valuemapids_by_hostid = [];
+ protected static function addAffectedParameters(array $items, array &$db_items): void {
+ $itemids = [];
foreach ($items as $item) {
- if (array_key_exists('valuemapid', $item) && $item['valuemapid'] != 0) {
- $valuemapids_by_hostid[$item['hostid']][$item['valuemapid']] = true;
+ $db_type = $db_items[$item['itemid']]['type'];
+
+ if ((array_key_exists('parameters', $item) && $item['type'] == ITEM_TYPE_SCRIPT)
+ || ($item['type'] != $db_type && $db_type == ITEM_TYPE_SCRIPT)) {
+ $itemids[] = $item['itemid'];
+ $db_items[$item['itemid']]['parameters'] = [];
+ }
+ elseif (array_key_exists('parameters', $item)) {
+ $db_items[$item['itemid']]['parameters'] = [];
}
}
- $sql_where = [];
- foreach ($valuemapids_by_hostid as $hostid => $valuemapids) {
- $sql_where[] = '(vm.hostid='.zbx_dbstr($hostid).' AND '.
- dbConditionId('vm.valuemapid', array_keys($valuemapids)).')';
+ if (!$itemids) {
+ return;
}
- if ($sql_where) {
- $result = DBselect(
- 'SELECT vm.valuemapid,vm.hostid'.
- ' FROM valuemap vm'.
- ' WHERE '.implode(' OR ', $sql_where)
- );
+ $options = [
+ 'output' => ['item_parameterid', 'itemid', 'name', 'value'],
+ 'filter' => ['itemid' => $itemids]
+ ];
+ $db_item_parameters = DBselect(DB::makeSql('item_parameter', $options));
+
+ while ($db_item_parameter = DBfetch($db_item_parameters)) {
+ $db_items[$db_item_parameter['itemid']]['parameters'][$db_item_parameter['item_parameterid']] =
+ array_diff_key($db_item_parameter, array_flip(['itemid']));
+ }
+ }
+
+ /**
+ * Add the inherited items of the given items to the given item array.
+ *
+ * @param array $db_items
+ */
+ public static function addInheritedItems(array &$db_items): void {
+ $templateids = array_keys($db_items);
+
+ do {
+ $options = [
+ 'output' => ['itemid', 'name'],
+ 'filter' => ['templateid' => $templateids]
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
+
+ $templateids = [];
+
while ($row = DBfetch($result)) {
- unset($valuemapids_by_hostid[$row['hostid']][$row['valuemapid']]);
+ if (!array_key_exists($row['itemid'], $db_items)) {
+ $templateids[] = $row['itemid'];
- if (!$valuemapids_by_hostid[$row['hostid']]) {
- unset($valuemapids_by_hostid[$row['hostid']]);
+ $db_items[$row['itemid']] = $row;
}
}
+ } while ($templateids);
+ }
- if ($valuemapids_by_hostid) {
- $hostid = key($valuemapids_by_hostid);
- $valuemapid = key($valuemapids_by_hostid[$hostid]);
+ /**
+ * Reset the MIN and MAX values of Y axis in the graphs, if such are calculated using the given items.
+ *
+ * @param array $del_itemids
+ */
+ protected static function resetGraphsYAxis(array $del_itemids): void {
+ DB::update('graphs', [
+ 'values' => [
+ 'ymin_type' => GRAPH_YAXIS_TYPE_CALCULATED,
+ 'ymin_itemid' => null
+ ],
+ 'where' => ['ymin_itemid' => $del_itemids]
+ ]);
- $host_row = DBfetch(DBselect('SELECT h.host FROM hosts h WHERE h.hostid='.zbx_dbstr($hostid)));
- self::exception(ZBX_API_ERROR_PARAMETERS, _s('Valuemap with ID "%1$s" is not available on "%2$s".',
- $valuemapid, $host_row['host']
- ));
- }
- }
+ DB::update('graphs', [
+ 'values' => [
+ 'ymax_type' => GRAPH_YAXIS_TYPE_CALCULATED,
+ 'ymax_itemid' => null
+ ],
+ 'where' => ['ymax_itemid' => $del_itemids]
+ ]);
}
/**
- * Normalize preprocessing step parameters.
- *
- * @param array $preprocessing Preprocessing steps.
- * @param string $preprocessing[<num>]['params'] Preprocessing step parameters.
- * @param int $preprocessing[<num>]['type'] Preprocessing step type.
+ * Delete triggers and trigger prototypes, which contain the given items in the expression.
*
- * @return array
+ * @param array $del_itemids
*/
- protected function normalizeItemPreprocessingSteps(array $preprocessing): array {
- foreach ($preprocessing as &$step) {
- $step['params'] = str_replace("\r\n", "\n", $step['params']);
- $params = explode("\n", $step['params']);
-
- switch ($step['type']) {
- case ZBX_PREPROC_PROMETHEUS_PATTERN:
- if (!array_key_exists(2, $params)) {
- $params[2] = '';
- }
- break;
+ protected static function deleteAffectedTriggers(array $del_itemids): void {
+ $result = DBselect(
+ 'SELECT DISTINCT f.triggerid,t.flags'.
+ ' FROM functions f,triggers t'.
+ ' WHERE f.triggerid=t.triggerid'.
+ ' AND '.dbConditionInt('f.itemid', $del_itemids)
+ );
+
+ $del_trigger_prototypeids = [];
+ $del_triggerids = [];
+
+ while ($row = DBfetch($result)) {
+ if ($row['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
+ $del_trigger_prototypeids[] = $row['triggerid'];
}
+ else {
+ $del_triggerids[] = $row['triggerid'];
+ }
+ }
- $step['params'] = implode("\n", $params);
+ if ($del_triggerids) {
+ CTriggerManager::delete($del_triggerids);
}
- unset($step);
- return $preprocessing;
+ if ($del_trigger_prototypeids) {
+ CTriggerPrototypeManager::delete($del_trigger_prototypeids);
+ }
}
}
diff --git a/ui/include/classes/api/services/CItemGeneralOld.php b/ui/include/classes/api/services/CItemGeneralOld.php
new file mode 100644
index 00000000000..9fbb02de63c
--- /dev/null
+++ b/ui/include/classes/api/services/CItemGeneralOld.php
@@ -0,0 +1,2973 @@
+<?php
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Class containing methods for operations with item general.
+ */
+abstract class CItemGeneralOld extends CApiService {
+
+ public const ACCESS_RULES = [
+ 'get' => ['min_user_type' => USER_TYPE_ZABBIX_USER],
+ 'create' => ['min_user_type' => USER_TYPE_ZABBIX_ADMIN],
+ 'update' => ['min_user_type' => USER_TYPE_ZABBIX_ADMIN],
+ 'delete' => ['min_user_type' => USER_TYPE_ZABBIX_ADMIN]
+ ];
+
+ public const INTERFACE_TYPES_BY_PRIORITY = [
+ INTERFACE_TYPE_AGENT,
+ INTERFACE_TYPE_SNMP,
+ INTERFACE_TYPE_JMX,
+ INTERFACE_TYPE_IPMI
+ ];
+
+ const ERROR_EXISTS_TEMPLATE = 'existsTemplate';
+ const ERROR_EXISTS = 'exists';
+ const ERROR_NO_INTERFACE = 'noInterface';
+ const ERROR_INVALID_KEY = 'invalidKey';
+
+ protected $fieldRules;
+
+ /**
+ * @abstract
+ *
+ * @param array $options
+ *
+ * @return array
+ */
+ abstract public function get($options = []);
+
+ public function __construct() {
+ parent::__construct();
+
+ // template - if templated item, value is taken from template item, cannot be changed on host
+ // system - values should not be updated
+ // host - value should be null for template items
+ $this->fieldRules = [
+ 'type' => ['template' => 1],
+ 'snmp_oid' => ['template' => 1],
+ 'hostid' => [],
+ 'name' => ['template' => 1],
+ 'description' => [],
+ 'key_' => ['template' => 1],
+ 'master_itemid' => ['template' => 1],
+ 'delay' => [],
+ 'history' => [],
+ 'trends' => [],
+ 'status' => [],
+ 'discover' => [],
+ 'value_type' => ['template' => 1],
+ 'trapper_hosts' => [],
+ 'units' => ['template' => 1],
+ 'formula' => ['template' => 1],
+ 'error' => ['system' => 1],
+ 'lastlogsize' => ['system' => 1],
+ 'logtimefmt' => [],
+ 'templateid' => ['system' => 1],
+ 'valuemapid' => ['template' => 1],
+ 'params' => [],
+ 'ipmi_sensor' => ['template' => 1],
+ 'authtype' => [],
+ 'username' => [],
+ 'password' => [],
+ 'publickey' => [],
+ 'privatekey' => [],
+ 'mtime' => ['system' => 1],
+ 'flags' => [],
+ 'filter' => [],
+ 'interfaceid' => ['host' => 1],
+ 'inventory_link' => [],
+ 'lifetime' => [],
+ 'preprocessing' => ['template' => 1],
+ 'overrides' => ['template' => 1],
+ 'jmx_endpoint' => [],
+ 'url' => ['template' => 1],
+ 'timeout' => ['template' => 1],
+ 'query_fields' => ['template' => 1],
+ 'parameters' => ['template' => 1],
+ 'posts' => ['template' => 1],
+ 'status_codes' => ['template' => 1],
+ 'follow_redirects' => ['template' => 1],
+ 'post_type' => ['template' => 1],
+ 'http_proxy' => ['template' => 1],
+ 'headers' => ['template' => 1],
+ 'retrieve_mode' => ['template' => 1],
+ 'request_method' => ['template' => 1],
+ 'output_format' => ['template' => 1],
+ 'allow_traps' => [],
+ 'ssl_cert_file' => ['template' => 1],
+ 'ssl_key_file' => ['template' => 1],
+ 'ssl_key_password' => ['template' => 1],
+ 'verify_peer' => ['template' => 1],
+ 'verify_host' => ['template' => 1]
+ ];
+
+ $this->errorMessages = array_merge($this->errorMessages, [
+ self::ERROR_NO_INTERFACE => _('Cannot find host interface on "%1$s" for item key "%2$s".')
+ ]);
+ }
+
+ /**
+ * Check items data.
+ *
+ * Any system field passed to the function will be unset.
+ *
+ * @throw APIException
+ *
+ * @param array $items passed by reference
+ * @param bool $update
+ */
+ protected function checkInput(array &$items, $update = false) {
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', static::SUPPORTED_ITEM_TYPES)]
+ ]];
+ if ($update) {
+ unset($api_input_rules['fields']['type']['flags']);
+ }
+
+ foreach ($items as $num => $item) {
+ $data = array_intersect_key($item, $api_input_rules['fields']);
+ if (!CApiInputValidator::validate($api_input_rules, $data, '/'.($num + 1), $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+ }
+
+ if ($update) {
+ $itemDbFields = ['itemid' => null];
+
+ $dbItemsFields = ['itemid', 'templateid'];
+ foreach ($this->fieldRules as $field => $rule) {
+ if (!isset($rule['system'])) {
+ $dbItemsFields[] = $field;
+ }
+ }
+
+ $dbItems = $this->get([
+ 'output' => $dbItemsFields,
+ 'itemids' => zbx_objectValues($items, 'itemid'),
+ 'editable' => true,
+ 'preservekeys' => true
+ ]);
+
+ $dbHosts = API::Host()->get([
+ 'output' => ['hostid', 'status', 'name'],
+ 'hostids' => zbx_objectValues($dbItems, 'hostid'),
+ 'templated_hosts' => true,
+ 'editable' => true,
+ 'preservekeys' => true
+ ]);
+ }
+ else {
+ $itemDbFields = [
+ 'name' => null,
+ 'key_' => null,
+ 'hostid' => null,
+ 'type' => null,
+ 'value_type' => null,
+ 'delay' => null
+ ];
+
+ $dbHosts = API::Host()->get([
+ 'output' => ['hostid', 'status', 'name'],
+ 'hostids' => zbx_objectValues($items, 'hostid'),
+ 'templated_hosts' => true,
+ 'editable' => true,
+ 'preservekeys' => true
+ ]);
+
+ $discovery_rules = [];
+
+ if ($this instanceof CItemPrototype) {
+ $itemDbFields['ruleid'] = null;
+ $druleids = zbx_objectValues($items, 'ruleid');
+
+ if ($druleids) {
+ $discovery_rules = API::DiscoveryRule()->get([
+ 'output' => ['hostid'],
+ 'itemids' => $druleids,
+ 'preservekeys' => true
+ ]);
+ }
+ }
+ }
+
+ // interfaces
+ $interfaces = API::HostInterface()->get([
+ 'output' => ['interfaceid', 'hostid', 'type'],
+ 'hostids' => zbx_objectValues($dbHosts, 'hostid'),
+ 'nopermissions' => true,
+ 'preservekeys' => true
+ ]);
+
+ if ($update) {
+ $updateDiscoveredValidator = new CUpdateDiscoveredValidator([
+ 'allowed' => ['itemid', 'status'],
+ 'messageAllowedField' => _('Cannot update "%2$s" for a discovered item "%1$s".')
+ ]);
+ foreach ($items as &$item) {
+ // check permissions
+ if (!array_key_exists($item['itemid'], $dbItems)) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS,
+ _('No permissions to referred object or it does not exist!')
+ );
+ }
+
+ $dbItem = $dbItems[$item['itemid']];
+
+ if (array_key_exists('hostid', $item) && bccomp($dbItem['hostid'], $item['hostid']) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'hostid', _('cannot be changed'))
+ );
+ }
+
+ $itemName = array_key_exists('name', $item) ? $item['name'] : $dbItem['name'];
+
+ // discovered fields, except status, cannot be updated
+ $updateDiscoveredValidator->setObjectName($itemName);
+ $this->checkPartialValidator($item, $updateDiscoveredValidator, $dbItem);
+
+ $item += [
+ 'hostid' => $dbItem['hostid'],
+ 'type' => $dbItem['type'],
+ 'name' => $dbItem['name'],
+ 'key_' => $dbItem['key_'],
+ 'flags' => $dbItem['flags']
+ ];
+ }
+ unset($item);
+ }
+
+ $item_key_parser = new CItemKey();
+ $ip_range_parser = new CIPRangeParser([
+ 'v6' => ZBX_HAVE_IPV6,
+ 'ranges' => false,
+ 'usermacros' => true,
+ 'macros' => [
+ '{HOST.HOST}', '{HOSTNAME}', '{HOST.NAME}', '{HOST.CONN}', '{HOST.IP}', '{IPADDRESS}', '{HOST.DNS}'
+ ]
+ ]);
+ $update_interval_parser = new CUpdateIntervalParser([
+ 'usermacros' => true,
+ 'lldmacros' => (get_class($this) === 'CItemPrototype')
+ ]);
+
+ $index = 0;
+ foreach ($items as $inum => &$item) {
+ $item = $this->clearValues($item);
+ $index++;
+
+ $fullItem = $items[$inum];
+
+ if (!check_db_fields($itemDbFields, $item)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+
+ if ($update) {
+ $type = array_key_exists('type', $item) ? $item['type'] : $dbItems[$item['itemid']]['type'];
+
+ if ($type == ITEM_TYPE_HTTPAGENT) {
+ $this->validateHTTPCheck($fullItem, $dbItems[$item['itemid']]);
+ }
+
+ check_db_fields($dbItems[$item['itemid']], $fullItem);
+
+ $this->checkNoParameters(
+ $item,
+ ['templateid', 'state', 'lastlogsize', 'mtime', 'error'],
+ _('Cannot update "%1$s" for item "%2$s".'),
+ $item['name']
+ );
+
+ // apply rules
+ foreach ($this->fieldRules as $field => $rules) {
+ if ($fullItem['type'] == ITEM_TYPE_SCRIPT) {
+ $rules['template'] = 1;
+ }
+
+ if ((0 != $fullItem['templateid'] && isset($rules['template'])) || isset($rules['system'])) {
+ unset($item[$field]);
+
+ // For templated item and fields that should not be modified, use the value from DB.
+ if (array_key_exists($field, $dbItems[$item['itemid']])
+ && array_key_exists($field, $fullItem)) {
+ $fullItem[$field] = $dbItems[$item['itemid']][$field];
+ }
+ }
+ }
+
+ if (!isset($item['key_'])) {
+ $item['key_'] = $fullItem['key_'];
+ }
+ if (!isset($item['hostid'])) {
+ $item['hostid'] = $fullItem['hostid'];
+ }
+
+ // If a templated item is being assigned to an interface with a different type, ignore it.
+ $itemInterfaceType = itemTypeInterface($dbItems[$item['itemid']]['type']);
+
+ if ($itemInterfaceType !== INTERFACE_TYPE_ANY && $itemInterfaceType !== INTERFACE_TYPE_OPT
+ && $fullItem['templateid']
+ && array_key_exists('interfaceid', $item) && array_key_exists($item['interfaceid'], $interfaces)
+ && $interfaces[$item['interfaceid']]['type'] != $itemInterfaceType) {
+
+ unset($item['interfaceid']);
+ }
+ }
+ else {
+ if ($fullItem['type'] == ITEM_TYPE_HTTPAGENT) {
+ $this->validateHTTPCheck($fullItem, []);
+ }
+
+ if (!isset($dbHosts[$item['hostid']])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
+ }
+
+ check_db_fields($itemDbFields, $fullItem);
+
+ $this->checkNoParameters(
+ $item,
+ ['templateid', 'state'],
+ _('Cannot set "%1$s" for item "%2$s".'),
+ $item['name']
+ );
+
+ if ($this instanceof CItemPrototype && (!array_key_exists($fullItem['ruleid'], $discovery_rules)
+ || $discovery_rules[$fullItem['ruleid']]['hostid'] != $fullItem['hostid'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _('No permissions to referred object or it does not exist!')
+ );
+ }
+ }
+
+ if ($fullItem['type'] == ITEM_TYPE_CALCULATED) {
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ 'params' => ['type' => API_CALC_FORMULA, 'flags' => $this instanceof CItemPrototype ? API_ALLOW_LLD_MACRO : 0, 'length' => DB::getFieldLength('items', 'params')],
+ 'value_type' => ['type' => API_INT32, 'in' => implode(',', [ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_TEXT])]
+ ]];
+
+ $data = array_intersect_key($item, $api_input_rules['fields']);
+
+ if (!CApiInputValidator::validate($api_input_rules, $data, '/'.($inum + 1), $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+ }
+
+ if ($fullItem['type'] == ITEM_TYPE_SCRIPT) {
+ if ($update) {
+ if ($dbItems[$item['itemid']]['type'] == $fullItem['type']) {
+ $flags = API_NOT_EMPTY;
+ }
+ else {
+ $flags = API_REQUIRED | API_NOT_EMPTY;
+ }
+ }
+ else {
+ $flags = API_REQUIRED | API_NOT_EMPTY;
+ }
+
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ 'params' => ['type' => API_STRING_UTF8, 'flags' => $flags, 'length' => DB::getFieldLength('items', 'params')],
+ 'timeout' => [
+ 'type' => API_TIME_UNIT, 'flags' => ($this instanceof CItemPrototype)
+ ? $flags | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO
+ : $flags | API_ALLOW_USER_MACRO,
+ 'in' => '1:'.SEC_PER_MIN
+ ],
+ 'parameters' => ['type' => API_OBJECTS, 'flags' => API_NORMALIZE, 'uniq' => [['name']], 'fields' => [
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_parameter', 'name')],
+ 'value' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => DB::getFieldLength('item_parameter', 'value')]
+ ]]
+ ]];
+
+ $data = array_intersect_key($item, $api_input_rules['fields']);
+
+ if (!CApiInputValidator::validate($api_input_rules, $data, '/'.($inum + 1), $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+ }
+
+ $host = $dbHosts[$fullItem['hostid']];
+
+ // Validate update interval.
+ if (!in_array($fullItem['type'], [ITEM_TYPE_TRAPPER, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_DEPENDENT])
+ && ($fullItem['type'] != ITEM_TYPE_ZABBIX_ACTIVE || strncmp($fullItem['key_'], 'mqtt.get', 8) !== 0)
+ && !validateDelay($update_interval_parser, 'delay', $fullItem['delay'], $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+
+ // For non-numeric types, whichever value was entered in trends field, is overwritten to zero.
+ if ($fullItem['value_type'] == ITEM_VALUE_TYPE_STR || $fullItem['value_type'] == ITEM_VALUE_TYPE_LOG
+ || $fullItem['value_type'] == ITEM_VALUE_TYPE_TEXT) {
+ $item['trends'] = '0';
+ }
+
+ // Check if the item requires an interface.
+ if ($host['status'] == HOST_STATUS_TEMPLATE) {
+ unset($item['interfaceid']);
+ }
+ else {
+ $item_interface_type = itemTypeInterface($fullItem['type']);
+
+ if ($item_interface_type !== false) {
+ if (!array_key_exists('interfaceid', $fullItem) || !$fullItem['interfaceid']) {
+ if ($item_interface_type != INTERFACE_TYPE_OPT) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No interface found.'));
+ }
+ }
+ elseif (!array_key_exists($fullItem['interfaceid'], $interfaces)
+ || bccomp($interfaces[$fullItem['interfaceid']]['hostid'], $fullItem['hostid']) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Item uses host interface from non-parent host.'));
+ }
+ elseif ($item_interface_type !== INTERFACE_TYPE_ANY && $item_interface_type !== INTERFACE_TYPE_OPT
+ && $interfaces[$fullItem['interfaceid']]['type'] != $item_interface_type) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Item uses incorrect interface type.'));
+ }
+ }
+ // No interface required, just set it to zero.
+ else {
+ $item['interfaceid'] = 0;
+ }
+ }
+
+ // item key
+ if ($fullItem['type'] == ITEM_TYPE_DB_MONITOR) {
+ if (!isset($fullItem['flags']) || $fullItem['flags'] != ZBX_FLAG_DISCOVERY_RULE) {
+ if (strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_DB_MONITOR) == 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _('Check the key, please. Default example was passed.')
+ );
+ }
+ }
+ elseif ($fullItem['flags'] == ZBX_FLAG_DISCOVERY_RULE) {
+ if (strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_DB_MONITOR_DISCOVERY) == 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _('Check the key, please. Default example was passed.')
+ );
+ }
+ }
+ }
+ elseif (($fullItem['type'] == ITEM_TYPE_SSH && strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_SSH) == 0)
+ || ($fullItem['type'] == ITEM_TYPE_TELNET && strcmp($fullItem['key_'], ZBX_DEFAULT_KEY_TELNET) == 0)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Check the key, please. Default example was passed.'));
+ }
+
+ // key
+ if ($item_key_parser->parse($fullItem['key_']) != CParser::PARSE_SUCCESS) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _params($this->getErrorMsg(self::ERROR_INVALID_KEY), [
+ $fullItem['key_'], $fullItem['name'], $host['name'], $item_key_parser->getError()
+ ])
+ );
+ }
+
+ if (($fullItem['type'] == ITEM_TYPE_TRAPPER || $fullItem['type'] == ITEM_TYPE_HTTPAGENT)
+ && array_key_exists('trapper_hosts', $fullItem) && $fullItem['trapper_hosts'] !== ''
+ && !$ip_range_parser->parse($fullItem['trapper_hosts'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'trapper_hosts', $ip_range_parser->getError())
+ );
+ }
+
+ // jmx
+ if ($fullItem['type'] == ITEM_TYPE_JMX) {
+ if (!array_key_exists('jmx_endpoint', $fullItem) && !$update) {
+ $item['jmx_endpoint'] = ZBX_DEFAULT_JMX_ENDPOINT;
+ }
+ if (array_key_exists('jmx_endpoint', $fullItem) && $fullItem['jmx_endpoint'] === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'jmx_endpoint', _('cannot be empty'))
+ );
+ }
+
+ if (($fullItem['username'] === '') !== ($fullItem['password'] === '')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'username',
+ _('both username and password should be either present or empty'))
+ );
+ }
+ }
+ else {
+ if (array_key_exists('jmx_endpoint', $item) && $item['jmx_endpoint'] !== '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'jmx_endpoint', _('should be empty'))
+ );
+ }
+ elseif (array_key_exists('jmx_endpoint', $fullItem) && $fullItem['jmx_endpoint'] !== '') {
+ $item['jmx_endpoint'] = '';
+ }
+ }
+
+ // Dependent item.
+ if ($fullItem['type'] == ITEM_TYPE_DEPENDENT) {
+ if ($update) {
+ if (array_key_exists('master_itemid', $item) && !$item['master_itemid']) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('cannot be empty')
+ ));
+ }
+ if ($dbItems[$fullItem['itemid']]['type'] != ITEM_TYPE_DEPENDENT
+ && !array_key_exists('master_itemid', $item)) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('cannot be empty')
+ ));
+ }
+ }
+ elseif (!array_key_exists('master_itemid', $item) || !$item['master_itemid']) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('cannot be empty')
+ ));
+ }
+ if (array_key_exists('master_itemid', $item) && !is_int($item['master_itemid'])
+ && !(is_string($item['master_itemid']) && ctype_digit($item['master_itemid']))) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value "%1$s" for "%2$s" field.',
+ $item['master_itemid'], 'master_itemid'
+ ));
+ }
+ }
+ else {
+ if (array_key_exists('master_itemid', $item) && $item['master_itemid']) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('should be empty')
+ ));
+ }
+ $item['master_itemid'] = 0;
+ }
+
+ // ssh, telnet
+ if ($fullItem['type'] == ITEM_TYPE_SSH || $fullItem['type'] == ITEM_TYPE_TELNET) {
+ if ($fullItem['username'] === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No authentication user name specified.'));
+ }
+
+ if ($fullItem['type'] == ITEM_TYPE_SSH && $fullItem['authtype'] == ITEM_AUTHTYPE_PUBLICKEY) {
+ if ($fullItem['publickey'] === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No public key file specified.'));
+ }
+ if ($fullItem['privatekey'] === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No private key file specified.'));
+ }
+ }
+ }
+
+ // Prevent IPMI sensor field being empty if item key is not "ipmi.get".
+ if ($fullItem['type'] == ITEM_TYPE_IPMI && $fullItem['key_'] !== 'ipmi.get'
+ && (!array_key_exists('ipmi_sensor', $fullItem) || $fullItem['ipmi_sensor'] === '')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'ipmi_sensor', _('cannot be empty')
+ ));
+ }
+
+ // snmp trap
+ if ($fullItem['type'] == ITEM_TYPE_SNMPTRAP
+ && $fullItem['key_'] !== 'snmptrap.fallback' && $item_key_parser->getKey() !== 'snmptrap') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('SNMP trap key is invalid.'));
+ }
+
+ // snmp oid
+ if ($fullItem['type'] == ITEM_TYPE_SNMP
+ && (!array_key_exists('snmp_oid', $fullItem) || $fullItem['snmp_oid'] === '')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No SNMP OID specified.'));
+ }
+
+ $this->checkSpecificFields($fullItem, $update ? 'update' : 'create');
+
+ $this->validateItemPreprocessing($fullItem);
+ $this->validateTags($item, '/'.$index);
+ }
+ unset($item);
+
+ $this->validateValueMaps($items);
+
+ $this->checkAndAddUuid($items, $dbHosts, $update);
+ $this->checkExistingItems($items);
+ }
+
+ /**
+ * Check that only items on templates have UUID. Add UUID to all host prototypes on templates,
+ * if it doesn't exist.
+ *
+ * @param array $items_to_create
+ * @param array $db_hosts
+ * @param bool $is_update
+ *
+ * @throws APIException
+ */
+ protected function checkAndAddUuid(array &$items_to_create, array $db_hosts, bool $is_update): void {
+ if ($is_update) {
+ foreach ($items_to_create as $index => &$item) {
+ if (array_key_exists('uuid', $item)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', '/' . ($index + 1),
+ _s('unexpected parameter "%1$s"', 'uuid')
+ )
+ );
+ }
+ }
+
+ return;
+ }
+
+ foreach ($items_to_create as $index => &$item) {
+ if ($db_hosts[$item['hostid']]['status'] != HOST_STATUS_TEMPLATE && array_key_exists('uuid', $item)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', '/' . ($index + 1), _s('unexpected parameter "%1$s"', 'uuid'))
+ );
+ }
+
+ if ($db_hosts[$item['hostid']]['status'] == HOST_STATUS_TEMPLATE && !array_key_exists('uuid', $item)) {
+ $item['uuid'] = generateUuidV4();
+ }
+ }
+ unset($item);
+
+ $db_uuid = DB::select('items', [
+ 'output' => ['uuid'],
+ 'filter' => ['uuid' => array_column($items_to_create, 'uuid')],
+ 'limit' => 1
+ ]);
+
+ if ($db_uuid) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Entry with UUID "%1$s" already exists.', $db_uuid[0]['uuid'])
+ );
+ }
+ }
+
+ /**
+ * Validates tags.
+ *
+ * @param array $item
+ * @param array $item['tags']
+ * @param string $item['tags'][]['tag']
+ * @param string $item['tags'][]['value']
+ *
+ * @throws APIException if the input is invalid.
+ */
+ protected function validateTags(array $item, string $path = '/') {
+ if (!array_key_exists('tags', $item)) {
+ return;
+ }
+
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ 'tags' => ['type' => API_OBJECTS, 'uniq' => [['tag', 'value']], 'fields' => [
+ 'tag' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('item_tag', 'tag')],
+ 'value' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('item_tag', 'value')]
+ ]]
+ ]];
+
+ $item_tags = ['tags' => $item['tags']];
+ if (!CApiInputValidator::validate($api_input_rules, $item_tags, $path, $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+ }
+
+ /**
+ * Check item specific fields. Each API like Item, Itemprototype and Discovery rule may inherit different fields
+ * to validate.
+ *
+ * @param array $item An array of single item data.
+ * @param string $method A string of "create" or "update" method.
+ *
+ * @return bool
+ */
+ abstract protected function checkSpecificFields(array $item, $method);
+
+ protected function clearValues(array $item) {
+ if (isset($item['port']) && $item['port'] != '') {
+ $item['port'] = ltrim($item['port'], '0');
+ if ($item['port'] == '') {
+ $item['port'] = 0;
+ }
+ }
+
+ if (array_key_exists('type', $item) &&
+ ($item['type'] == ITEM_TYPE_DEPENDENT || $item['type'] == ITEM_TYPE_TRAPPER
+ || ($item['type'] == ITEM_TYPE_ZABBIX_ACTIVE && array_key_exists('key_', $item)
+ && strncmp($item['key_'], 'mqtt.get', 8) === 0))) {
+ $item['delay'] = 0;
+ }
+
+ return $item;
+ }
+
+ protected function errorInheritFlags($flag, $key, $host) {
+ switch ($flag) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as an item.', $key, $host));
+ break;
+ case ZBX_FLAG_DISCOVERY_RULE:
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as a discovery rule.', $key, $host));
+ break;
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as an item prototype.', $key, $host));
+ break;
+ case ZBX_FLAG_DISCOVERY_CREATED:
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as an item created from item prototype.', $key, $host));
+ break;
+ default:
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Item with key "%1$s" already exists on "%2$s" as unknown item element.', $key, $host));
+ }
+ }
+
+ /**
+ * Return first main interface matched from list of preferred types, or NULL.
+ *
+ * @param array $interfaces An array of interfaces to choose from.
+ *
+ * @return ?array
+ */
+ public static function findInterfaceByPriority(array $interfaces): ?array {
+ $interface_by_type = [];
+
+ foreach ($interfaces as $interface) {
+ if ($interface['main'] == INTERFACE_PRIMARY) {
+ $interface_by_type[$interface['type']] = $interface;
+ }
+ }
+
+ foreach (self::INTERFACE_TYPES_BY_PRIORITY as $interface_type) {
+ if (array_key_exists($interface_type, $interface_by_type)) {
+ return $interface_by_type[$interface_type];
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the interface that best matches the given item.
+ *
+ * @param array $item_type An item type
+ * @param array $interfaces An array of interfaces to choose from
+ *
+ * @return array|boolean The best matching interface;
+ * an empty array of no matching interface was found;
+ * false, if the item does not need an interface
+ */
+ public static function findInterfaceForItem($item_type, array $interfaces) {
+ $type = itemTypeInterface($item_type);
+
+ if ($type == INTERFACE_TYPE_OPT) {
+ return false;
+ }
+ elseif ($type == INTERFACE_TYPE_ANY) {
+ return self::findInterfaceByPriority($interfaces);
+ }
+ // the item uses a specific type of interface
+ elseif ($type !== false) {
+ $interface_by_type = [];
+
+ foreach ($interfaces as $interface) {
+ if ($interface['main'] == INTERFACE_PRIMARY) {
+ $interface_by_type[$interface['type']] = $interface;
+ }
+ }
+
+ return array_key_exists($type, $interface_by_type) ? $interface_by_type[$type] : [];
+ }
+ // the item does not need an interface
+ else {
+ return false;
+ }
+ }
+
+ /**
+ * Updates the children of the item on the given hosts and propagates the inheritance to the child hosts.
+ *
+ * @param array $tpl_items An array of items to inherit.
+ * @param array|null $hostids An array of hosts to inherit to; if set to null, the items will be inherited to all
+ * linked hosts or templates.
+ */
+ protected function inherit(array $tpl_items, array $hostids = null) {
+ $tpl_items = zbx_toHash($tpl_items, 'itemid');
+
+ // Inherit starting from common items and finishing up dependent.
+ while ($tpl_items) {
+ $_tpl_items = [];
+
+ foreach ($tpl_items as $tpl_item) {
+ if ($tpl_item['type'] != ITEM_TYPE_DEPENDENT
+ || !array_key_exists($tpl_item['master_itemid'], $tpl_items)) {
+ $_tpl_items[$tpl_item['itemid']] = $tpl_item;
+ }
+ }
+
+ foreach ($_tpl_items as $itemid => $_tpl_item) {
+ unset($tpl_items[$itemid]);
+ }
+
+ $this->_inherit($_tpl_items, $hostids);
+ }
+ }
+
+ /**
+ * Auxiliary method for item inheritance. See full description in inherit() method.
+ */
+ private function _inherit(array $tpl_items, array $hostids = null) {
+ // Prepare the child items.
+ $new_items = $this->prepareInheritedItems($tpl_items, $hostids);
+ if (!$new_items) {
+ return;
+ }
+
+ $ins_items = [];
+ $upd_items = [];
+
+ foreach ($new_items as $new_item) {
+ if (array_key_exists('itemid', $new_item)) {
+ if ($this instanceof CItemPrototype) {
+ unset($new_item['ruleid']);
+ }
+ $upd_items[$new_item['itemid']] = $new_item;
+ }
+ else {
+ $ins_items[] = $new_item;
+ }
+ }
+
+ $this->validateDependentItems($new_items);
+
+ // Save the new items.
+ if ($ins_items) {
+ if ($this instanceof CItem) {
+ static::validateInventoryLinks($ins_items, false);
+ }
+
+ $this->createReal($ins_items);
+ }
+
+ if ($upd_items) {
+ if ($this instanceof CItem) {
+ static::validateInventoryLinks($upd_items, true);
+ }
+
+ $this->updateReal($upd_items);
+ }
+
+ $new_items = array_merge($upd_items, $ins_items);
+
+ // Inheriting items from the templates.
+ $db_items = DBselect(
+ 'SELECT i.itemid'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND '.dbConditionInt('i.itemid', zbx_objectValues($new_items, 'itemid')).
+ ' AND '.dbConditionInt('h.status', [HOST_STATUS_TEMPLATE])
+ );
+
+ $tpl_itemids = [];
+ while ($db_item = DBfetch($db_items)) {
+ $tpl_itemids[$db_item['itemid']] = true;
+ }
+
+ foreach ($new_items as $index => $new_item) {
+ if (!array_key_exists($new_item['itemid'], $tpl_itemids)) {
+ unset($new_items[$index]);
+ }
+ }
+
+ $this->inherit($new_items);
+ }
+
+ /**
+ * Prepares and returns an array of child items, inherited from items $tpl_items on the given hosts.
+ *
+ * @param array $tpl_items
+ * @param string $tpl_items[<itemid>]['itemid']
+ * @param string $tpl_items[<itemid>]['hostid']
+ * @param string $tpl_items[<itemid>]['key_']
+ * @param int $tpl_items[<itemid>]['type']
+ * @param array $tpl_items[<itemid>]['preprocessing'] (optional)
+ * @param int $tpl_items[<itemid>]['preprocessing'][]['type']
+ * @param string $tpl_items[<itemid>]['preprocessing'][]['params']
+ * @param int $tpl_items[<itemid>]['flags']
+ * @param string $tpl_items[<itemid>]['master_itemid'] (optional)
+ * @param mixed $tpl_items[<itemid>][<field_name>] (optional)
+ * @param array|null $hostids
+ *
+ * @return array an array of unsaved child items
+ */
+ private function prepareInheritedItems(array $tpl_items, array $hostids = null) {
+ $itemids_by_templateid = [];
+ foreach ($tpl_items as $tpl_item) {
+ $itemids_by_templateid[$tpl_item['hostid']][] = $tpl_item['itemid'];
+ }
+
+ // Fetch all child hosts.
+ $chd_hosts = API::Host()->get([
+ 'output' => ['hostid', 'host', 'status'],
+ 'selectParentTemplates' => ['templateid'],
+ 'selectInterfaces' => ['interfaceid', 'main', 'type'],
+ 'templateids' => array_keys($itemids_by_templateid),
+ 'hostids' => $hostids,
+ 'preservekeys' => true,
+ 'nopermissions' => true,
+ 'templated_hosts' => true
+ ]);
+ if (!$chd_hosts) {
+ return [];
+ }
+
+ $chd_items_tpl = [];
+ $chd_items_key = [];
+
+ // Preparing list of items by item templateid.
+ $sql = 'SELECT i.itemid,i.hostid,i.type,i.key_,i.flags,i.templateid'.
+ ' FROM items i'.
+ ' WHERE '.dbConditionInt('i.templateid', zbx_objectValues($tpl_items, 'itemid'));
+ if ($hostids !== null) {
+ $sql .= ' AND '.dbConditionInt('i.hostid', $hostids);
+ }
+ $db_items = DBselect($sql);
+
+ while ($db_item = DBfetch($db_items)) {
+ $hostid = $db_item['hostid'];
+ unset($db_item['hostid']);
+
+ $chd_items_tpl[$hostid][$db_item['templateid']] = $db_item;
+ }
+
+ $hostids_by_key = [];
+
+ // Preparing list of items by item key.
+ foreach ($chd_hosts as $chd_host) {
+ $tpl_itemids = [];
+
+ foreach ($chd_host['parentTemplates'] as $parent_template) {
+ if (array_key_exists($parent_template['templateid'], $itemids_by_templateid)) {
+ $tpl_itemids = array_merge($tpl_itemids, $itemids_by_templateid[$parent_template['templateid']]);
+ }
+ }
+
+ foreach ($tpl_itemids as $tpl_itemid) {
+ if (!array_key_exists($chd_host['hostid'], $chd_items_tpl)
+ || !array_key_exists($tpl_itemid, $chd_items_tpl[$chd_host['hostid']])) {
+ $hostids_by_key[$tpl_items[$tpl_itemid]['key_']][] = $chd_host['hostid'];
+ }
+ }
+ }
+
+ foreach ($hostids_by_key as $key_ => $key_hostids) {
+ $sql_select = ($this instanceof CItemPrototype) ? ',id.parent_itemid AS ruleid' : '';
+ // "LEFT JOIN" is needed to check flags on inherited and existing item, item prototype or lld rule.
+ // For example, when linking an item prototype with same key as in an item on target host or template.
+ $sql_join = ($this instanceof CItemPrototype) ? ' LEFT JOIN item_discovery id ON i.itemid=id.itemid' : '';
+ $db_items = DBselect(
+ 'SELECT i.itemid,i.hostid,i.type,i.key_,i.flags,i.templateid'.$sql_select.
+ ' FROM items i'.$sql_join.
+ ' WHERE '.dbConditionInt('i.hostid', $key_hostids).
+ ' AND '.dbConditionString('i.key_', [$key_])
+ );
+
+ while ($db_item = DBfetch($db_items)) {
+ $hostid = $db_item['hostid'];
+ unset($db_item['hostid']);
+
+ $chd_items_key[$hostid][$db_item['key_']] = $db_item;
+ }
+ }
+
+ // List of the discovery rules.
+ if ($this instanceof CItemPrototype) {
+ // List of itemids without 'ruleid' property.
+ $tpl_itemids = [];
+ $tpl_ruleids = [];
+ foreach ($tpl_items as $tpl_item) {
+ if (!array_key_exists('ruleid', $tpl_item)) {
+ $tpl_itemids[] = $tpl_item['itemid'];
+ }
+ else {
+ $tpl_ruleids[$tpl_item['ruleid']] = true;
+ }
+ }
+
+ if ($tpl_itemids) {
+ $db_rules = DBselect(
+ 'SELECT id.parent_itemid,id.itemid'.
+ ' FROM item_discovery id'.
+ ' WHERE '.dbConditionInt('id.itemid', $tpl_itemids)
+ );
+
+ while ($db_rule = DBfetch($db_rules)) {
+ $tpl_items[$db_rule['itemid']]['ruleid'] = $db_rule['parent_itemid'];
+ $tpl_ruleids[$db_rule['parent_itemid']] = true;
+ }
+ }
+
+ $sql = 'SELECT i.hostid,i.templateid,i.itemid'.
+ ' FROM items i'.
+ ' WHERE '.dbConditionInt('i.templateid', array_keys($tpl_ruleids));
+ if ($hostids !== null) {
+ $sql .= ' AND '.dbConditionInt('i.hostid', $hostids);
+ }
+ $db_rules = DBselect($sql);
+
+ // List of child lld ruleids by child hostid and parent lld ruleid.
+ $chd_ruleids = [];
+ while ($db_rule = DBfetch($db_rules)) {
+ $chd_ruleids[$db_rule['hostid']][$db_rule['templateid']] = $db_rule['itemid'];
+ }
+ }
+
+ $new_items = [];
+ // List of the updated item keys by hostid.
+ $upd_hostids_by_key = [];
+
+ foreach ($chd_hosts as $chd_host) {
+ $tpl_itemids = [];
+
+ foreach ($chd_host['parentTemplates'] as $parent_template) {
+ if (array_key_exists($parent_template['templateid'], $itemids_by_templateid)) {
+ $tpl_itemids = array_merge($tpl_itemids, $itemids_by_templateid[$parent_template['templateid']]);
+ }
+ }
+
+ foreach ($tpl_itemids as $tpl_itemid) {
+ $tpl_item = $tpl_items[$tpl_itemid];
+
+ $chd_item = null;
+
+ // Update by templateid.
+ if (array_key_exists($chd_host['hostid'], $chd_items_tpl)
+ && array_key_exists($tpl_item['itemid'], $chd_items_tpl[$chd_host['hostid']])) {
+ $chd_item = $chd_items_tpl[$chd_host['hostid']][$tpl_item['itemid']];
+
+ if ($tpl_item['key_'] !== $chd_item['key_']) {
+ $upd_hostids_by_key[$tpl_item['key_']][] = $chd_host['hostid'];
+ }
+ }
+ // Update by key.
+ elseif (array_key_exists($chd_host['hostid'], $chd_items_key)
+ && array_key_exists($tpl_item['key_'], $chd_items_key[$chd_host['hostid']])) {
+ $chd_item = $chd_items_key[$chd_host['hostid']][$tpl_item['key_']];
+
+ // Check if an item of a different type with the same key exists.
+ if ($tpl_item['flags'] != $chd_item['flags']) {
+ $this->errorInheritFlags($chd_item['flags'], $chd_item['key_'], $chd_host['host']);
+ }
+
+ // Check if item already linked to another template.
+ if ($chd_item['templateid'] != 0 && bccomp($chd_item['templateid'], $tpl_item['itemid']) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _params(
+ $this->getErrorMsg(self::ERROR_EXISTS_TEMPLATE), [$tpl_item['key_'], $chd_host['host']]
+ ));
+ }
+
+ if ($this instanceof CItemPrototype) {
+ $chd_ruleid = $chd_ruleids[$chd_host['hostid']][$tpl_item['ruleid']];
+ if (bccomp($chd_item['ruleid'], $chd_ruleid) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Item prototype "%1$s" already exists on "%2$s", linked to another rule.',
+ $chd_item['key_'], $chd_host['host']
+ )
+ );
+ }
+ }
+ }
+
+ // copying item
+ $new_item = $tpl_item;
+ $new_item['uuid'] = '';
+
+ if ($chd_item !== null) {
+ $new_item['itemid'] = $chd_item['itemid'];
+
+ if ($new_item['type'] == ITEM_TYPE_HTTPAGENT) {
+ $new_item['interfaceid'] = null;
+ }
+ }
+ else {
+ unset($new_item['itemid']);
+ if ($this instanceof CItemPrototype) {
+ $new_item['ruleid'] = $chd_ruleids[$chd_host['hostid']][$tpl_item['ruleid']];
+ }
+ }
+ $new_item['hostid'] = $chd_host['hostid'];
+ $new_item['templateid'] = $tpl_item['itemid'];
+
+ if ($chd_host['status'] != HOST_STATUS_TEMPLATE) {
+ if ($chd_item === null || $new_item['type'] != $chd_item['type']) {
+ $interface = self::findInterfaceForItem($new_item['type'], $chd_host['interfaces']);
+
+ if ($interface) {
+ $new_item['interfaceid'] = $interface['interfaceid'];
+ }
+ elseif ($interface !== false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _params(
+ $this->getErrorMsg(self::ERROR_NO_INTERFACE), [$chd_host['host'], $new_item['key_']]
+ ));
+ }
+ }
+
+ if ($this instanceof CItem || $this instanceof CDiscoveryRule) {
+ if (!array_key_exists('itemid', $new_item)) {
+ $new_item['rtdata'] = true;
+ }
+ }
+ }
+
+ if (array_key_exists('preprocessing', $new_item)) {
+ foreach ($new_item['preprocessing'] as $preprocessing) {
+ if ($chd_item) {
+ $preprocessing['itemid'] = $chd_item['itemid'];
+ }
+ else {
+ unset($preprocessing['itemid']);
+ }
+ }
+ }
+
+ $new_items[] = $new_item;
+ }
+ }
+
+ // Check if item with a new key already exists on the child host.
+ if ($upd_hostids_by_key) {
+ $sql_where = [];
+ foreach ($upd_hostids_by_key as $key => $hostids) {
+ $sql_where[] = dbConditionInt('i.hostid', $hostids).' AND i.key_='.zbx_dbstr($key);
+ }
+
+ $sql = 'SELECT i.hostid,i.key_'.
+ ' FROM items i'.
+ ' WHERE ('.implode(') OR (', $sql_where).')';
+ $db_items = DBselect($sql, 1);
+
+ if ($db_item = DBfetch($db_items)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _params($this->getErrorMsg(self::ERROR_EXISTS),
+ [$db_item['key_'], $chd_hosts[$db_item['hostid']]['host']]
+ ));
+ }
+ }
+
+ return $this->prepareDependentItems($tpl_items, $new_items, $hostids);
+ }
+
+ /**
+ * Update relations for inherited dependent items to master items.
+ *
+ * @param array $tpl_items
+ * @param int $tpl_items[<itemid>]['type']
+ * @param string $tpl_items[<itemid>]['master_itemid']
+ * @param array $new_items
+ * @param string $new_items[<itemid>]['hostid']
+ * @param int $new_items[<itemid>]['type']
+ * @param string $new_items[<itemid>]['templateid']
+ * @param array|null $hostids
+ *
+ * @return array an array of synchronized inherited items.
+ */
+ private function prepareDependentItems(array $tpl_items, array $new_items, array $hostids = null) {
+ $tpl_master_itemids = [];
+
+ foreach ($tpl_items as $tpl_item) {
+ if ($tpl_item['type'] == ITEM_TYPE_DEPENDENT) {
+ $tpl_master_itemids[$tpl_item['master_itemid']] = true;
+ }
+ }
+
+ if ($tpl_master_itemids) {
+ $sql = 'SELECT i.itemid,i.hostid,i.templateid'.
+ ' FROM items i'.
+ ' WHERE '.dbConditionId('i.templateid', array_keys($tpl_master_itemids));
+ if ($hostids !== null) {
+ $sql .= ' AND '.dbConditionId('i.hostid', $hostids);
+ }
+ $db_items = DBselect($sql);
+
+ $master_links = [];
+
+ while ($db_item = DBfetch($db_items)) {
+ $master_links[$db_item['templateid']][$db_item['hostid']] = $db_item['itemid'];
+ }
+
+ foreach ($new_items as &$new_item) {
+ if ($new_item['type'] == ITEM_TYPE_DEPENDENT) {
+ $tpl_item = $tpl_items[$new_item['templateid']];
+
+ if (array_key_exists('master_itemid', $tpl_item)) {
+ $new_item['master_itemid'] = $master_links[$tpl_item['master_itemid']][$new_item['hostid']];
+ }
+ }
+ }
+ unset($new_item);
+ }
+
+ return $new_items;
+ }
+
+ /**
+ * Validate item pre-processing.
+ *
+ * @param array $item An array of single item data.
+ * @param array $item['preprocessing'] An array of item pre-processing data.
+ * @param string $item['preprocessing'][]['type'] The preprocessing option type. Possible values:
+ * 1 - ZBX_PREPROC_MULTIPLIER;
+ * 2 - ZBX_PREPROC_RTRIM;
+ * 3 - ZBX_PREPROC_LTRIM;
+ * 4 - ZBX_PREPROC_TRIM;
+ * 5 - ZBX_PREPROC_REGSUB;
+ * 6 - ZBX_PREPROC_BOOL2DEC;
+ * 7 - ZBX_PREPROC_OCT2DEC;
+ * 8 - ZBX_PREPROC_HEX2DEC;
+ * 9 - ZBX_PREPROC_DELTA_VALUE;
+ * 10 - ZBX_PREPROC_DELTA_SPEED;
+ * 11 - ZBX_PREPROC_XPATH;
+ * 12 - ZBX_PREPROC_JSONPATH;
+ * 13 - ZBX_PREPROC_VALIDATE_RANGE;
+ * 14 - ZBX_PREPROC_VALIDATE_REGEX;
+ * 15 - ZBX_PREPROC_VALIDATE_NOT_REGEX;
+ * 16 - ZBX_PREPROC_ERROR_FIELD_JSON;
+ * 17 - ZBX_PREPROC_ERROR_FIELD_XML;
+ * 18 - ZBX_PREPROC_ERROR_FIELD_REGEX;
+ * 19 - ZBX_PREPROC_THROTTLE_VALUE;
+ * 20 - ZBX_PREPROC_THROTTLE_TIMED_VALUE;
+ * 21 - ZBX_PREPROC_SCRIPT;
+ * 22 - ZBX_PREPROC_PROMETHEUS_PATTERN;
+ * 23 - ZBX_PREPROC_PROMETHEUS_TO_JSON;
+ * 24 - ZBX_PREPROC_CSV_TO_JSON;
+ * 25 - ZBX_PREPROC_STR_REPLACE;
+ * 26 - ZBX_PREPROC_VALIDATE_NOT_SUPPORTED;
+ * @param string $item['preprocessing'][]['params'] Additional parameters used by preprocessing
+ * option. Multiple parameters are separated by LF
+ * (\n) character.
+ * @param string $item['preprocessing'][]['error_handler'] Action type used in case of preprocessing step
+ * failure. Possible values:
+ * 0 - ZBX_PREPROC_FAIL_DEFAULT;
+ * 1 - ZBX_PREPROC_FAIL_DISCARD_VALUE;
+ * 2 - ZBX_PREPROC_FAIL_SET_VALUE;
+ * 3 - ZBX_PREPROC_FAIL_SET_ERROR.
+ * @param string $item['preprocessing'][]['error_handler_params'] Error handler parameters.
+ */
+ protected function validateItemPreprocessing(array $item) {
+ if (array_key_exists('preprocessing', $item)) {
+ if (!is_array($item['preprocessing'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+
+ $type_validator = new CLimitedSetValidator(['values' => static::SUPPORTED_PREPROCESSING_TYPES]);
+
+ $error_handler_validator = new CLimitedSetValidator([
+ 'values' => [ZBX_PREPROC_FAIL_DEFAULT, ZBX_PREPROC_FAIL_DISCARD_VALUE, ZBX_PREPROC_FAIL_SET_VALUE,
+ ZBX_PREPROC_FAIL_SET_ERROR
+ ]
+ ]);
+
+ $unsupported_error_handler_validator = new CLimitedSetValidator([
+ 'values' => [ZBX_PREPROC_FAIL_DISCARD_VALUE, ZBX_PREPROC_FAIL_SET_VALUE, ZBX_PREPROC_FAIL_SET_ERROR]
+ ]);
+
+ $prometheus_pattern_parser = new CPrometheusPatternParser(['usermacros' => true,
+ 'lldmacros' => ($this instanceof CItemPrototype)
+ ]);
+ $prometheus_output_parser = new CPrometheusOutputParser(['usermacros' => true,
+ 'lldmacros' => ($this instanceof CItemPrototype)
+ ]);
+
+ $required_fields = ['type', 'params', 'error_handler', 'error_handler_params'];
+ $delta = false;
+ $throttling = false;
+ $prometheus = false;
+
+ foreach ($item['preprocessing'] as $preprocessing) {
+ $missing_keys = array_diff($required_fields, array_keys($preprocessing));
+
+ if ($missing_keys) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Item pre-processing is missing parameters: %1$s', implode(', ', $missing_keys))
+ );
+ }
+
+ if (is_array($preprocessing['type'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['type'] === '' || $preprocessing['type'] === null
+ || $preprocessing['type'] === false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'type', _('cannot be empty'))
+ );
+ }
+
+ if (!$type_validator->validate($preprocessing['type'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'type',
+ _s('unexpected value "%1$s"', $preprocessing['type'])
+ )
+ );
+ }
+
+ $preprocessing['params'] = str_replace("\r\n", "\n", $preprocessing['params']);
+
+ switch ($preprocessing['type']) {
+ case ZBX_PREPROC_MULTIPLIER:
+ // Check if custom multiplier is a valid number.
+ $params = $preprocessing['params'];
+
+ if (is_array($params)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($params === '' || $params === null || $params === false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
+ );
+ }
+
+ if (is_numeric($params)) {
+ break;
+ }
+
+ $types = ['usermacros' => true];
+
+ if ($this instanceof CItemPrototype) {
+ $types['lldmacros'] = true;
+ }
+
+ if (!(new CMacrosResolverGeneral)->getMacroPositions($params, $types)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('a numeric value is expected')
+ ));
+ }
+ break;
+
+ case ZBX_PREPROC_RTRIM:
+ case ZBX_PREPROC_LTRIM:
+ case ZBX_PREPROC_TRIM:
+ case ZBX_PREPROC_XPATH:
+ case ZBX_PREPROC_JSONPATH:
+ case ZBX_PREPROC_VALIDATE_REGEX:
+ case ZBX_PREPROC_VALIDATE_NOT_REGEX:
+ case ZBX_PREPROC_ERROR_FIELD_JSON:
+ case ZBX_PREPROC_ERROR_FIELD_XML:
+ case ZBX_PREPROC_SCRIPT:
+ // Check 'params' if not empty.
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['params'] === '' || $preprocessing['params'] === null
+ || $preprocessing['params'] === false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
+ );
+ }
+ break;
+
+ case ZBX_PREPROC_REGSUB:
+ case ZBX_PREPROC_ERROR_FIELD_REGEX:
+ case ZBX_PREPROC_STR_REPLACE:
+ // Check if 'params' are not empty and if second parameter contains (after \n) is not empty.
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['params'] === '' || $preprocessing['params'] === null
+ || $preprocessing['params'] === false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
+ );
+ }
+
+ $params = explode("\n", $preprocessing['params']);
+
+ if ($params[0] === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('first parameter is expected')
+ ));
+ }
+
+ if (($preprocessing['type'] == ZBX_PREPROC_REGSUB
+ || $preprocessing['type'] == ZBX_PREPROC_ERROR_FIELD_REGEX)
+ && (!array_key_exists(1, $params) || $params[1] === '')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('second parameter is expected')
+ ));
+ }
+ break;
+
+ case ZBX_PREPROC_VALIDATE_RANGE:
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif (trim($preprocessing['params']) === '' || $preprocessing['params'] === null
+ || $preprocessing['params'] === false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
+ );
+ }
+
+ $params = explode("\n", $preprocessing['params']);
+
+ if ($params[0] !== '' && !is_numeric($params[0])
+ && (new CUserMacroParser())->parse($params[0]) != CParser::PARSE_SUCCESS
+ && (!($this instanceof CItemPrototype)
+ || ((new CLLDMacroFunctionParser())->parse($params[0]) != CParser::PARSE_SUCCESS
+ && (new CLLDMacroParser())->parse($params[0]) != CParser::PARSE_SUCCESS))) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('a numeric value is expected')
+ ));
+ }
+
+ if ($params[1] !== '' && !is_numeric($params[1])
+ && (new CUserMacroParser())->parse($params[1]) != CParser::PARSE_SUCCESS
+ && (!($this instanceof CItemPrototype)
+ || ((new CLLDMacroFunctionParser())->parse($params[1]) != CParser::PARSE_SUCCESS
+ && (new CLLDMacroParser())->parse($params[1]) != CParser::PARSE_SUCCESS))) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('a numeric value is expected')
+ ));
+ }
+
+ if (is_numeric($params[0]) && is_numeric($params[1]) && $params[0] > $params[1]) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s(
+ 'Incorrect value for field "%1$s": %2$s.',
+ 'params',
+ _s('"%1$s" value must be less than or equal to "%2$s" value', _('min'), _('max'))
+ ));
+ }
+ break;
+
+ case ZBX_PREPROC_BOOL2DEC:
+ case ZBX_PREPROC_OCT2DEC:
+ case ZBX_PREPROC_HEX2DEC:
+ case ZBX_PREPROC_THROTTLE_VALUE:
+ // Check if 'params' is empty, because it must be empty.
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['params'] !== '' && $preprocessing['params'] !== null
+ && $preprocessing['params'] !== false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('should be empty'))
+ );
+ }
+
+ if ($preprocessing['type'] == ZBX_PREPROC_THROTTLE_VALUE) {
+ if ($throttling) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one throttling step is allowed.'));
+ }
+ else {
+ $throttling = true;
+ }
+ }
+ break;
+
+ case ZBX_PREPROC_DELTA_VALUE:
+ case ZBX_PREPROC_DELTA_SPEED:
+ case ZBX_PREPROC_XML_TO_JSON:
+ // Check if 'params' is empty, because it must be empty.
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['params'] !== '' && $preprocessing['params'] !== null
+ && $preprocessing['params'] !== false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('should be empty'))
+ );
+ }
+
+ if ($preprocessing['type'] == ZBX_PREPROC_DELTA_VALUE
+ || $preprocessing['type'] == ZBX_PREPROC_DELTA_SPEED) {
+ // Check if one of the deltas (Delta per second or Delta value) already exists.
+ if ($delta) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one change step is allowed.'));
+ }
+ else {
+ $delta = true;
+ }
+ }
+ break;
+
+ case ZBX_PREPROC_THROTTLE_TIMED_VALUE:
+ $api_input_rules = [
+ 'type' => API_TIME_UNIT,
+ 'flags' => ($this instanceof CItem)
+ ? API_NOT_EMPTY | API_ALLOW_USER_MACRO
+ : API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO,
+ 'in' => '1:'.ZBX_MAX_TIMESHIFT
+ ];
+
+ if (!CApiInputValidator::validate($api_input_rules, $preprocessing['params'], 'params',
+ $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+
+ if ($throttling) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one throttling step is allowed.'));
+ }
+ else {
+ $throttling = true;
+ }
+ break;
+
+ case ZBX_PREPROC_PROMETHEUS_PATTERN:
+ case ZBX_PREPROC_PROMETHEUS_TO_JSON:
+ if ($prometheus) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Only one Prometheus step is allowed.'));
+ }
+
+ $prometheus = true;
+
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+
+ if ($preprocessing['type'] == ZBX_PREPROC_PROMETHEUS_PATTERN) {
+ if ($preprocessing['params'] === '' || $preprocessing['params'] === null
+ || $preprocessing['params'] === false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
+ );
+ }
+
+ $params = explode("\n", $preprocessing['params']);
+
+ if ($params[0] === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('first parameter is expected')
+ ));
+ }
+ elseif (!array_key_exists(1, $params)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('second parameter is expected')
+ ));
+ }
+ elseif (!array_key_exists(2, $params)
+ && ($params[1] === ZBX_PREPROC_PROMETHEUS_LABEL
+ || $params[1] === ZBX_PREPROC_PROMETHEUS_FUNCTION)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('third parameter is expected')
+ ));
+ }
+
+ if ($prometheus_pattern_parser->parse($params[0]) != CParser::PARSE_SUCCESS) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('invalid Prometheus pattern')
+ ));
+ }
+
+ if (!in_array($params[1], [ZBX_PREPROC_PROMETHEUS_VALUE, ZBX_PREPROC_PROMETHEUS_LABEL,
+ ZBX_PREPROC_PROMETHEUS_FUNCTION])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('invalid aggregation method')
+ ));
+ }
+
+ switch ($params[1]) {
+ case ZBX_PREPROC_PROMETHEUS_VALUE:
+ if (array_key_exists(2, $params) && $params[2] !== '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params',
+ _('invalid Prometheus output')
+ )
+ );
+ }
+ break;
+
+ case ZBX_PREPROC_PROMETHEUS_LABEL:
+ if ($prometheus_output_parser->parse($params[2]) != CParser::PARSE_SUCCESS) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params',
+ _('invalid Prometheus output')
+ )
+ );
+ }
+ break;
+
+ case ZBX_PREPROC_PROMETHEUS_FUNCTION:
+ if (!in_array($params[2], [ZBX_PREPROC_PROMETHEUS_SUM, ZBX_PREPROC_PROMETHEUS_MIN,
+ ZBX_PREPROC_PROMETHEUS_MAX, ZBX_PREPROC_PROMETHEUS_AVG,
+ ZBX_PREPROC_PROMETHEUS_COUNT])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params',
+ _('unsupported Prometheus function')
+ )
+ );
+ }
+ break;
+ }
+ }
+ // Prometheus to JSON can be empty and has only one parameter.
+ elseif ($preprocessing['params'] !== '') {
+ if ($prometheus_pattern_parser->parse($preprocessing['params']) != CParser::PARSE_SUCCESS) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('invalid Prometheus pattern')
+ ));
+ }
+ }
+ break;
+
+ case ZBX_PREPROC_CSV_TO_JSON:
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['params'] === '' || $preprocessing['params'] === null
+ || $preprocessing['params'] === false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('cannot be empty'))
+ );
+ }
+
+ $params = explode("\n", $preprocessing['params']);
+
+ $params_cnt = count($params);
+ if ($params_cnt > 3) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($params_cnt == 1) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('second parameter is expected')
+ ));
+ }
+ elseif ($params_cnt == 2) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('third parameter is expected')
+ ));
+ }
+ else {
+ // Correct amount of parameters, but check if they are valid.
+
+ if (mb_strlen($params[0]) > 1) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('value of first parameter is too long')
+ ));
+ }
+
+ if (mb_strlen($params[1]) > 1) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'params', _('value of second parameter is too long')
+ ));
+ }
+
+ $with_header_row_validator = new CLimitedSetValidator([
+ 'values' => [ZBX_PREPROC_CSV_NO_HEADER, ZBX_PREPROC_CSV_HEADER]
+ ]);
+
+ if (!$with_header_row_validator->validate($params[2])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params',
+ _s('value of third parameter must be one of %1$s',
+ implode(', ', [ZBX_PREPROC_CSV_NO_HEADER, ZBX_PREPROC_CSV_HEADER])
+ )
+ )
+ );
+ }
+ }
+ break;
+
+ case ZBX_PREPROC_VALIDATE_NOT_SUPPORTED:
+ // Check if 'params' is empty, because it must be empty.
+ if (is_array($preprocessing['params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['params'] !== '' && $preprocessing['params'] !== null
+ && $preprocessing['params'] !== false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'params', _('should be empty'))
+ );
+ }
+
+ $preprocessing_types = array_column($item['preprocessing'], 'type');
+
+ if (count(array_keys($preprocessing_types, ZBX_PREPROC_VALIDATE_NOT_SUPPORTED)) > 1) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _('Only one not supported value check is allowed.')
+ );
+ }
+ break;
+ }
+
+ switch ($preprocessing['type']) {
+ case ZBX_PREPROC_RTRIM:
+ case ZBX_PREPROC_LTRIM:
+ case ZBX_PREPROC_TRIM:
+ case ZBX_PREPROC_THROTTLE_VALUE:
+ case ZBX_PREPROC_THROTTLE_TIMED_VALUE:
+ case ZBX_PREPROC_SCRIPT:
+ case ZBX_PREPROC_STR_REPLACE:
+ if (is_array($preprocessing['error_handler'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['error_handler'] != ZBX_PREPROC_FAIL_DEFAULT) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler',
+ _s('unexpected value "%1$s"', $preprocessing['error_handler'])
+ )
+ );
+ }
+
+ if (is_array($preprocessing['error_handler_params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['error_handler_params'] !== ''
+ && $preprocessing['error_handler_params'] !== null
+ && $preprocessing['error_handler_params'] !== false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
+ _('should be empty')
+ )
+ );
+ }
+ break;
+
+ case ZBX_PREPROC_VALIDATE_NOT_SUPPORTED:
+ if (is_array($preprocessing['error_handler'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif (!$unsupported_error_handler_validator->validate($preprocessing['error_handler'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler',
+ _s('unexpected value "%1$s"', $preprocessing['error_handler'])
+ )
+ );
+ }
+
+ if (is_array($preprocessing['error_handler_params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif ($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_DISCARD_VALUE
+ && $preprocessing['error_handler_params'] !== ''
+ && $preprocessing['error_handler_params'] !== null
+ && $preprocessing['error_handler_params'] !== false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
+ _('should be empty')
+ )
+ );
+ }
+ elseif ($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_SET_ERROR
+ && ($preprocessing['error_handler_params'] === ''
+ || $preprocessing['error_handler_params'] === null
+ || $preprocessing['error_handler_params'] === false)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
+ _('cannot be empty')
+ )
+ );
+ }
+ break;
+
+ default:
+ if (is_array($preprocessing['error_handler'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif (!$error_handler_validator->validate($preprocessing['error_handler'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler',
+ _s('unexpected value "%1$s"', $preprocessing['error_handler'])
+ )
+ );
+ }
+
+ if (is_array($preprocessing['error_handler_params'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('Incorrect arguments passed to function.'));
+ }
+ elseif (($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_DEFAULT
+ || $preprocessing['error_handler'] == ZBX_PREPROC_FAIL_DISCARD_VALUE)
+ && $preprocessing['error_handler_params'] !== ''
+ && $preprocessing['error_handler_params'] !== null
+ && $preprocessing['error_handler_params'] !== false) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
+ _('should be empty')
+ )
+ );
+ }
+ elseif ($preprocessing['error_handler'] == ZBX_PREPROC_FAIL_SET_ERROR
+ && ($preprocessing['error_handler_params'] === ''
+ || $preprocessing['error_handler_params'] === null
+ || $preprocessing['error_handler_params'] === false)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'error_handler_params',
+ _('cannot be empty')
+ )
+ );
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Method validates preprocessing steps independently from other item properties.
+ *
+ * @param array $preprocessing_steps An array of item pre-processing step details.
+ * See self::validateItemPreprocessing for details.
+ *
+ * @return bool|string
+ */
+ public function validateItemPreprocessingSteps(array $preprocessing_steps) {
+ try {
+ $this->validateItemPreprocessing(['preprocessing' => $preprocessing_steps]);
+
+ return true;
+ }
+ catch (APIException $error) {
+ return $error->getMessage();
+ }
+ }
+
+ /**
+ * Insert item pre-processing data into DB.
+ *
+ * @param array $items An array of items.
+ * @param string $items[]['itemid']
+ * @param array $items[]['preprocessing'] An array of item pre-processing data.
+ */
+ protected function createItemPreprocessing(array $items) {
+ $item_preproc = [];
+
+ foreach ($items as $item) {
+ if (array_key_exists('preprocessing', $item)) {
+ $step = 1;
+
+ foreach ($item['preprocessing'] as $preprocessing) {
+ $item_preproc[] = [
+ 'itemid' => $item['itemid'],
+ 'step' => ($preprocessing['type'] == ZBX_PREPROC_VALIDATE_NOT_SUPPORTED) ? 0 : $step++,
+ 'type' => $preprocessing['type'],
+ 'params' => $preprocessing['params'],
+ 'error_handler' => $preprocessing['error_handler'],
+ 'error_handler_params' => $preprocessing['error_handler_params']
+ ];
+ }
+ }
+ }
+
+ if ($item_preproc) {
+ DB::insertBatch('item_preproc', $item_preproc);
+ }
+ }
+
+ /**
+ * Update item pre-processing data in DB. Delete old records and create new ones.
+ *
+ * @param array $items
+ * @param string $items[]['itemid']
+ * @param array $items[]['preprocessing']
+ * @param int $items[]['preprocessing'][]['type']
+ * @param string $items[]['preprocessing'][]['params']
+ * @param int $items[]['preprocessing'][]['error_handler']
+ * @param string $items[]['preprocessing'][]['error_handler_params']
+ */
+ protected function updateItemPreprocessing(array $items) {
+ $item_preprocs = [];
+
+ foreach ($items as $item) {
+ if (array_key_exists('preprocessing', $item)) {
+ $item_preprocs[$item['itemid']] = [];
+ $step = 1;
+
+ foreach ($item['preprocessing'] as $item_preproc) {
+ $curr_step = ($item_preproc['type'] == ZBX_PREPROC_VALIDATE_NOT_SUPPORTED) ? 0 : $step++;
+ $item_preprocs[$item['itemid']][$curr_step] = [
+ 'type' => $item_preproc['type'],
+ 'params' => $item_preproc['params'],
+ 'error_handler' => $item_preproc['error_handler'],
+ 'error_handler_params' => $item_preproc['error_handler_params']
+ ];
+ }
+ }
+ }
+
+ if (!$item_preprocs) {
+ return;
+ }
+
+ $ins_item_preprocs = [];
+ $upd_item_preprocs = [];
+ $del_item_preprocids = [];
+
+ $options = [
+ 'output' => ['item_preprocid', 'itemid', 'step', 'type', 'params', 'error_handler', 'error_handler_params'],
+ 'filter' => ['itemid' => array_keys($item_preprocs)]
+ ];
+ $db_item_preprocs = DBselect(DB::makeSql('item_preproc', $options));
+
+ while ($db_item_preproc = DBfetch($db_item_preprocs)) {
+ if (array_key_exists($db_item_preproc['step'], $item_preprocs[$db_item_preproc['itemid']])) {
+ $item_preproc = $item_preprocs[$db_item_preproc['itemid']][$db_item_preproc['step']];
+ $upd_item_preproc = [];
+
+ if ($item_preproc['type'] != $db_item_preproc['type']) {
+ $upd_item_preproc['type'] = $item_preproc['type'];
+ }
+ if ($item_preproc['params'] !== $db_item_preproc['params']) {
+ $upd_item_preproc['params'] = $item_preproc['params'];
+ }
+ if ($item_preproc['error_handler'] != $db_item_preproc['error_handler']) {
+ $upd_item_preproc['error_handler'] = $item_preproc['error_handler'];
+ }
+ if ($item_preproc['error_handler_params'] !== $db_item_preproc['error_handler_params']) {
+ $upd_item_preproc['error_handler_params'] = $item_preproc['error_handler_params'];
+ }
+
+ if ($upd_item_preproc) {
+ $upd_item_preprocs[] = [
+ 'values' => $upd_item_preproc,
+ 'where' => ['item_preprocid' => $db_item_preproc['item_preprocid']]
+ ];
+ }
+ unset($item_preprocs[$db_item_preproc['itemid']][$db_item_preproc['step']]);
+ }
+ else {
+ $del_item_preprocids[] = $db_item_preproc['item_preprocid'];
+ }
+ }
+
+ foreach ($item_preprocs as $itemid => $preprocs) {
+ foreach ($preprocs as $step => $preproc) {
+ $ins_item_preprocs[] = [
+ 'itemid' => $itemid,
+ 'step' => $step
+ ] + $preproc;
+ }
+ }
+
+ if ($del_item_preprocids) {
+ DB::delete('item_preproc', ['item_preprocid' => $del_item_preprocids]);
+ }
+
+ if ($upd_item_preprocs) {
+ DB::update('item_preproc', $upd_item_preprocs);
+ }
+
+ if ($ins_item_preprocs) {
+ DB::insertBatch('item_preproc', $ins_item_preprocs);
+ }
+ }
+
+ /**
+ * Create item parameters.
+ *
+ * @param array $items Array of items.
+ * @param array $items[]['parameters'] Item parameters.
+ * @param array $items[]['parameters'][]['name'] Parameter name.
+ * @param array $items[]['parameters'][]['value'] Parameter value.
+ * @param array $itemids Array of item IDs that were created before.
+ */
+ protected function createItemParameters(array $items, array $itemids): void {
+ $item_parameters = [];
+
+ foreach ($items as $key => $item) {
+ $items[$key]['itemid'] = $itemids[$key];
+
+ if (!array_key_exists('parameters', $item) || !$item['parameters']) {
+ continue;
+ }
+
+ foreach ($item['parameters'] as $parameter) {
+ $item_parameters[] = [
+ 'itemid' => $items[$key]['itemid'],
+ 'name' => $parameter['name'],
+ 'value' => $parameter['value']
+ ];
+ }
+ }
+
+ if ($item_parameters) {
+ DB::insertBatch('item_parameter', $item_parameters);
+ }
+ }
+
+ /**
+ * Update item parameters.
+ *
+ * @param array $items Array of items.
+ * @param int|string $items[]['itemid'] Item ID.
+ * @param int|string $items[]['type'] Item type.
+ * @param array $items[]['parameters'] Item parameters.
+ * @param array $items[]['parameters'][]['name'] Parameter name.
+ * @param array $items[]['parameters'][]['value'] Parameter value.
+ */
+ protected function updateItemParameters(array $items): void {
+ $db_item_parameters_by_itemid = [];
+
+ foreach ($items as $item) {
+ if ($item['type'] != ITEM_TYPE_SCRIPT || array_key_exists('parameters', $item)) {
+ $db_item_parameters_by_itemid[$item['itemid']] = [];
+ }
+ }
+
+ if (!$db_item_parameters_by_itemid) {
+ return;
+ }
+
+ $options = [
+ 'output' => ['item_parameterid', 'itemid', 'name', 'value'],
+ 'filter' => ['itemid' => array_keys($db_item_parameters_by_itemid)]
+ ];
+ $result = DBselect(DB::makeSql('item_parameter', $options));
+
+ while ($row = DBfetch($result)) {
+ $db_item_parameters_by_itemid[$row['itemid']][$row['name']] = [
+ 'item_parameterid' => $row['item_parameterid'],
+ 'value' => $row['value']
+ ];
+ }
+
+ $ins_item_parameters = [];
+ $upd_item_parameters = [];
+ $del_item_parameterids = [];
+
+ foreach ($db_item_parameters_by_itemid as $itemid => $db_item_parameters) {
+ $item = $items[$itemid];
+
+ if ($item['type'] == ITEM_TYPE_SCRIPT && array_key_exists('parameters', $item)) {
+ foreach ($item['parameters'] as $parameter) {
+ if (array_key_exists($parameter['name'], $db_item_parameters)) {
+ if ($db_item_parameters[$parameter['name']]['value'] !== $parameter['value']) {
+ $upd_item_parameters[] = [
+ 'values' => ['value' => $parameter['value']],
+ 'where' => [
+ 'item_parameterid' => $db_item_parameters[$parameter['name']]['item_parameterid']
+ ]
+ ];
+ }
+ unset($db_item_parameters[$parameter['name']]);
+ }
+ else {
+ $ins_item_parameters[] = [
+ 'itemid' => $itemid,
+ 'name' => $parameter['name'],
+ 'value' => $parameter['value']
+ ];
+ }
+ }
+ }
+
+ $del_item_parameterids = array_merge($del_item_parameterids,
+ array_column($db_item_parameters, 'item_parameterid')
+ );
+ }
+
+ if ($del_item_parameterids) {
+ DB::delete('item_parameter', ['item_parameterid' => $del_item_parameterids]);
+ }
+
+ if ($upd_item_parameters) {
+ DB::update('item_parameter', $upd_item_parameters);
+ }
+
+ if ($ins_item_parameters) {
+ DB::insertBatch('item_parameter', $ins_item_parameters);
+ }
+ }
+
+ /**
+ * Check if any item from list already exists.
+ * If items have item ids it will check for existing item with different itemid.
+ *
+ * @throw APIException
+ *
+ * @param array $items
+ */
+ protected function checkExistingItems(array $items) {
+ $itemKeysByHostId = [];
+ $itemIds = [];
+ foreach ($items as $item) {
+ if (!isset($itemKeysByHostId[$item['hostid']])) {
+ $itemKeysByHostId[$item['hostid']] = [];
+ }
+ $itemKeysByHostId[$item['hostid']][] = $item['key_'];
+
+ if (isset($item['itemid'])) {
+ $itemIds[] = $item['itemid'];
+ }
+ }
+
+ $sqlWhere = [];
+ foreach ($itemKeysByHostId as $hostId => $keys) {
+ $sqlWhere[] = '(i.hostid='.zbx_dbstr($hostId).' AND '.dbConditionString('i.key_', $keys).')';
+ }
+
+ if ($sqlWhere) {
+ $sql = 'SELECT i.key_,h.host'.
+ ' FROM items i,hosts h'.
+ ' WHERE i.hostid=h.hostid AND ('.implode(' OR ', $sqlWhere).')';
+
+ // if we update existing items we need to exclude them from result.
+ if ($itemIds) {
+ $sql .= ' AND '.dbConditionInt('i.itemid', $itemIds, true);
+ }
+ $dbItems = DBselect($sql, 1);
+ while ($dbItem = DBfetch($dbItems)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Item with key "%1$s" already exists on "%2$s".', $dbItem['key_'], $dbItem['host']));
+ }
+ }
+ }
+
+ protected function addRelatedObjects(array $options, array $result) {
+ $result = parent::addRelatedObjects($options, $result);
+
+ // adding hosts
+ if ($options['selectHosts'] !== null && $options['selectHosts'] != API_OUTPUT_COUNT) {
+ $relationMap = $this->createRelationMap($result, 'itemid', 'hostid');
+ $hosts = API::Host()->get([
+ 'hostids' => $relationMap->getRelatedIds(),
+ 'templated_hosts' => true,
+ 'output' => $options['selectHosts'],
+ 'nopermissions' => true,
+ 'preservekeys' => true
+ ]);
+ $result = $relationMap->mapMany($result, $hosts, 'hosts');
+ }
+
+ // adding preprocessing
+ if ($options['selectPreprocessing'] !== null && $options['selectPreprocessing'] != API_OUTPUT_COUNT) {
+ $db_item_preproc = API::getApiService()->select('item_preproc', [
+ 'output' => $this->outputExtend($options['selectPreprocessing'], ['itemid', 'step']),
+ 'filter' => ['itemid' => array_keys($result)]
+ ]);
+
+ CArrayHelper::sort($db_item_preproc, ['step']);
+
+ foreach ($result as &$item) {
+ $item['preprocessing'] = [];
+ }
+ unset($item);
+
+ foreach ($db_item_preproc as $step) {
+ $itemid = $step['itemid'];
+ unset($step['item_preprocid'], $step['itemid'], $step['step']);
+
+ if (array_key_exists($itemid, $result)) {
+ $result[$itemid]['preprocessing'][] = $step;
+ }
+ }
+ }
+
+ // Add value mapping.
+ if (($this instanceof CItemPrototype || $this instanceof CItem) && $options['selectValueMap'] !== null) {
+ if ($options['selectValueMap'] === API_OUTPUT_EXTEND) {
+ $options['selectValueMap'] = ['valuemapid', 'name', 'mappings'];
+ }
+
+ foreach ($result as &$item) {
+ $item['valuemap'] = [];
+ }
+ unset($item);
+
+ $valuemaps = DB::select('valuemap', [
+ 'output' => array_diff($this->outputExtend($options['selectValueMap'], ['valuemapid', 'hostid']),
+ ['mappings']
+ ),
+ 'filter' => ['valuemapid' => array_keys(array_flip(array_column($result, 'valuemapid')))],
+ 'preservekeys' => true
+ ]);
+
+ if ($this->outputIsRequested('mappings', $options['selectValueMap']) && $valuemaps) {
+ $params = [
+ 'output' => ['valuemapid', 'type', 'value', 'newvalue'],
+ 'filter' => ['valuemapid' => array_keys($valuemaps)],
+ 'sortfield' => ['sortorder']
+ ];
+ $query = DBselect(DB::makeSql('valuemap_mapping', $params));
+
+ while ($mapping = DBfetch($query)) {
+ $valuemaps[$mapping['valuemapid']]['mappings'][] = [
+ 'type' => $mapping['type'],
+ 'value' => $mapping['value'],
+ 'newvalue' => $mapping['newvalue']
+ ];
+ }
+ }
+
+ foreach ($result as &$item) {
+ if (array_key_exists('valuemapid', $item) && array_key_exists($item['valuemapid'], $valuemaps)) {
+ $item['valuemap'] = array_intersect_key($valuemaps[$item['valuemapid']],
+ array_flip($options['selectValueMap'])
+ );
+ }
+ }
+ unset($item);
+ }
+
+ if (!$options['countOutput'] && $this->outputIsRequested('parameters', $options['output'])) {
+ $item_parameters = DBselect(
+ 'SELECT ip.itemid,ip.name,ip.value'.
+ ' FROM item_parameter ip'.
+ ' WHERE '.dbConditionInt('ip.itemid', array_keys($result))
+ );
+
+ foreach ($result as &$item) {
+ $item['parameters'] = [];
+ }
+ unset($item);
+
+ while ($row = DBfetch($item_parameters)) {
+ $result[$row['itemid']]['parameters'][] = [
+ 'name' => $row['name'],
+ 'value' => $row['value']
+ ];
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Validate items with type ITEM_TYPE_DEPENDENT for create or update operation.
+ *
+ * @param array $items
+ * @param string $items[]['itemid'] (mandatory for updated items and item prototypes)
+ * @param string $items[]['hostid']
+ * @param int $items[]['type']
+ * @param string $items[]['master_itemid'] (mandatory for ITEM_TYPE_DEPENDENT)
+ * @param int $items[]['flags'] (mandatory for items)
+ *
+ * @throws APIException for invalid data.
+ */
+ protected function validateDependentItems(array $items) {
+ $dep_items = [];
+ $upd_itemids = [];
+
+ foreach ($items as $item) {
+ if ($item['type'] == ITEM_TYPE_DEPENDENT) {
+ if ($this instanceof CDiscoveryRule || $this instanceof CItemPrototype
+ || $item['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
+ $dep_items[] = $item;
+ }
+
+ if (array_key_exists('itemid', $item)) {
+ $upd_itemids[] = $item['itemid'];
+ }
+ }
+ }
+
+ if (!$dep_items) {
+ return;
+ }
+
+ if ($this instanceof CItemPrototype && $upd_itemids) {
+ $db_links = DBselect(
+ 'SELECT id.itemid,id.parent_itemid AS ruleid'.
+ ' FROM item_discovery id'.
+ ' WHERE '.dbConditionId('id.itemid', $upd_itemids)
+ );
+
+ $links = [];
+
+ while ($db_link = DBfetch($db_links)) {
+ $links[$db_link['itemid']] = $db_link['ruleid'];
+ }
+
+ foreach ($dep_items as &$dep_item) {
+ if (array_key_exists('itemid', $dep_item)) {
+ $dep_item['ruleid'] = $links[$dep_item['itemid']];
+ }
+ }
+ unset($dep_item);
+ }
+
+ $master_itemids = [];
+
+ foreach ($dep_items as $dep_item) {
+ $master_itemids[$dep_item['master_itemid']] = true;
+ }
+
+ $master_items = [];
+
+ // Fill relations array by master items (item prototypes). Discovery rule should not be master item.
+ do {
+ if ($this instanceof CItemPrototype) {
+ $db_master_items = DBselect(
+ 'SELECT i.itemid,i.hostid,i.master_itemid,i.flags,id.parent_itemid AS ruleid'.
+ ' FROM items i'.
+ ' LEFT JOIN item_discovery id'.
+ ' ON i.itemid=id.itemid'.
+ ' WHERE '.dbConditionId('i.itemid', array_keys($master_itemids)).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_NORMAL, ZBX_FLAG_DISCOVERY_PROTOTYPE])
+ );
+ }
+ // CDiscoveryRule, CItem
+ else {
+ $db_master_items = DBselect(
+ 'SELECT i.itemid,i.hostid,i.master_itemid'.
+ ' FROM items i'.
+ ' WHERE '.dbConditionId('i.itemid', array_keys($master_itemids)).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_NORMAL])
+ );
+ }
+
+ while ($db_master_item = DBfetch($db_master_items)) {
+ $master_items[$db_master_item['itemid']] = $db_master_item;
+
+ unset($master_itemids[$db_master_item['itemid']]);
+ }
+
+ if ($master_itemids) {
+ reset($master_itemids);
+
+ self::exception(ZBX_API_ERROR_PERMISSIONS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'master_itemid',
+ _s('Item "%1$s" does not exist or you have no access to this item', key($master_itemids))
+ )
+ );
+ }
+
+ $master_itemids = [];
+
+ foreach ($master_items as $master_item) {
+ if ($master_item['master_itemid'] != 0
+ && !array_key_exists($master_item['master_itemid'], $master_items)) {
+ $master_itemids[$master_item['master_itemid']] = true;
+ }
+ }
+ } while ($master_itemids);
+
+ foreach ($dep_items as $dep_item) {
+ $master_item = $master_items[$dep_item['master_itemid']];
+
+ if ($dep_item['hostid'] != $master_item['hostid']) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('"hostid" of dependent item and master item should match')
+ ));
+ }
+
+ if ($this instanceof CItemPrototype && $master_item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE
+ && $dep_item['ruleid'] != $master_item['ruleid']) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('"ruleid" of dependent item and master item should match')
+ ));
+ }
+
+ if (array_key_exists('itemid', $dep_item)) {
+ $master_itemid = $dep_item['master_itemid'];
+
+ while ($master_itemid != 0) {
+ if ($master_itemid == $dep_item['itemid']) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('circular item dependency is not allowed')
+ ));
+ }
+
+ $master_itemid = $master_items[$master_itemid]['master_itemid'];
+ }
+ }
+ }
+
+ // Fill relations array by dependent items (item prototypes).
+ $root_itemids = [];
+
+ foreach ($master_items as $master_item) {
+ if ($master_item['master_itemid'] == 0) {
+ $root_itemids[] = $master_item['itemid'];
+ }
+ }
+
+ $dependent_items = [];
+
+ foreach ($dep_items as $dep_item) {
+ if (array_key_exists('itemid', $dep_item)) {
+ $dependent_items[$dep_item['master_itemid']][] = $dep_item['itemid'];
+ }
+ }
+
+ $master_itemids = $root_itemids;
+
+ do {
+ $sql = 'SELECT i.master_itemid,i.itemid'.
+ ' FROM items i'.
+ ' WHERE '.dbConditionId('i.master_itemid', $master_itemids);
+ if ($upd_itemids) {
+ $sql .= ' AND '.dbConditionId('i.itemid', $upd_itemids, true); // Exclude updated items.
+ }
+
+ $db_items = DBselect($sql);
+
+ while ($db_item = DBfetch($db_items)) {
+ $dependent_items[$db_item['master_itemid']][] = $db_item['itemid'];
+ }
+
+ $_master_itemids = $master_itemids;
+ $master_itemids = [];
+
+ foreach ($_master_itemids as $master_itemid) {
+ if (array_key_exists($master_itemid, $dependent_items)) {
+ $master_itemids = array_merge($master_itemids, $dependent_items[$master_itemid]);
+ }
+ }
+ } while ($master_itemids);
+
+ foreach ($dep_items as $dep_item) {
+ if (!array_key_exists('itemid', $dep_item)) {
+ $dependent_items[$dep_item['master_itemid']][] = false;
+ }
+ }
+
+ foreach ($root_itemids as $root_itemid) {
+ self::checkDependencyDepth($dependent_items, $root_itemid);
+ }
+ }
+
+ /**
+ * Validate depth and amount of elements in the tree of the dependent items.
+ *
+ * @param array $dependent_items
+ * @param string $dependent_items[<master_itemid>][] List if the dependent item IDs ("false" for new items)
+ * by master_itemid.
+ * @param string $root_itemid ID of the item being checked.
+ * @param int $level Current dependency level.
+ *
+ * @throws APIException for invalid data.
+ */
+ private static function checkDependencyDepth(array $dependent_items, $root_itemid, $level = 0) {
+ $count = 0;
+
+ if (array_key_exists($root_itemid, $dependent_items)) {
+ if (++$level > ZBX_DEPENDENT_ITEM_MAX_LEVELS) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('maximum number of dependency levels reached')
+ ));
+ }
+
+ foreach ($dependent_items[$root_itemid] as $master_itemid) {
+ $count++;
+
+ if ($master_itemid !== false) {
+ $count += self::checkDependencyDepth($dependent_items, $master_itemid, $level);
+ }
+ }
+
+ if ($count > ZBX_DEPENDENT_ITEM_MAX_COUNT) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Incorrect value for field "%1$s": %2$s.',
+ 'master_itemid', _('maximum dependent items count reached')
+ ));
+ }
+ }
+
+ return $count;
+ }
+
+ /**
+ * Converts headers field text to hash with header name as key.
+ *
+ * @param string $headers Headers string, one header per line, line delimiter "\r\n".
+ *
+ * @return array
+ */
+ protected function headersStringToArray($headers) {
+ $result = [];
+
+ foreach (explode("\r\n", $headers) as $header) {
+ $header = explode(': ', $header, 2);
+
+ if (count($header) == 2) {
+ $result[$header[0]] = $header[1];
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Converts headers fields hash to string.
+ *
+ * @param array $headers Array of headers where key is header name.
+ *
+ * @return string
+ */
+ protected function headersArrayToString(array $headers) {
+ $result = [];
+
+ foreach ($headers as $k => $v) {
+ $result[] = $k.': '.$v;
+ }
+
+ return implode("\r\n", $result);
+ }
+
+ /**
+ * Validate item with type ITEM_TYPE_HTTPAGENT.
+ *
+ * @param array $item Array of item fields.
+ * @param array $db_item Array of item database fields for update action or empty array for create action.
+ *
+ * @throws APIException for invalid data.
+ */
+ protected function validateHTTPCheck(array $item, array $db_item) {
+ $rules = [
+ 'timeout' => [
+ 'type' => API_TIME_UNIT, 'flags' => ($this instanceof CItemPrototype)
+ ? API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO
+ : API_NOT_EMPTY | API_ALLOW_USER_MACRO,
+ 'in' => '1:'.SEC_PER_MIN
+ ],
+ 'url' => [
+ 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY,
+ 'length' => DB::getFieldLength('items', 'url')
+ ],
+ 'status_codes' => [
+ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'status_codes')
+ ],
+ 'follow_redirects' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [HTTPTEST_STEP_FOLLOW_REDIRECTS_OFF, HTTPTEST_STEP_FOLLOW_REDIRECTS_ON])
+ ],
+ 'post_type' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [ZBX_POSTTYPE_RAW, ZBX_POSTTYPE_JSON, ZBX_POSTTYPE_XML])
+ ],
+ 'http_proxy' => [
+ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'http_proxy')
+ ],
+ 'headers' => [
+ 'type' => API_STRINGS_UTF8
+ ],
+ 'retrieve_mode' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [
+ HTTPTEST_STEP_RETRIEVE_MODE_CONTENT, HTTPTEST_STEP_RETRIEVE_MODE_HEADERS,
+ HTTPTEST_STEP_RETRIEVE_MODE_BOTH
+ ])
+ ],
+ 'request_method' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [
+ HTTPCHECK_REQUEST_GET, HTTPCHECK_REQUEST_POST, HTTPCHECK_REQUEST_PUT, HTTPCHECK_REQUEST_HEAD
+ ])
+ ],
+ 'output_format' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [HTTPCHECK_STORE_RAW, HTTPCHECK_STORE_JSON])
+ ],
+ 'allow_traps' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [HTTPCHECK_ALLOW_TRAPS_OFF, HTTPCHECK_ALLOW_TRAPS_ON])
+ ],
+ 'ssl_cert_file' => [
+ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_cert_file')
+ ],
+ 'ssl_key_file' => [
+ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_file')
+ ],
+ 'ssl_key_password' => [
+ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'ssl_key_password')
+ ],
+ 'verify_peer' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [HTTPTEST_VERIFY_PEER_OFF, HTTPTEST_VERIFY_PEER_ON])
+ ],
+ 'verify_host' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [HTTPTEST_VERIFY_HOST_OFF, HTTPTEST_VERIFY_HOST_ON])
+ ],
+ 'authtype' => [
+ 'type' => API_INT32,
+ 'in' => implode(',', [
+ HTTPTEST_AUTH_NONE, HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS,
+ HTTPTEST_AUTH_DIGEST
+ ])
+ ]
+ ];
+
+ $data = $item + $db_item;
+
+ if (array_key_exists('authtype', $data)
+ && ($data['authtype'] == HTTPTEST_AUTH_BASIC || $data['authtype'] == HTTPTEST_AUTH_NTLM
+ || $data['authtype'] == HTTPTEST_AUTH_KERBEROS || $data['authtype'] == HTTPTEST_AUTH_DIGEST)) {
+ $rules += [
+ 'username' => [ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'username')],
+ 'password' => [ 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'password')]
+ ];
+ }
+
+ // Strict validation for 'retrieve_mode' only for create action.
+ if (array_key_exists('request_method', $data) && $data['request_method'] == HTTPCHECK_REQUEST_HEAD
+ && array_key_exists('retrieve_mode', $item)) {
+ $rules['retrieve_mode']['in'] = (string) HTTPTEST_STEP_RETRIEVE_MODE_HEADERS;
+ }
+
+ if (array_key_exists('post_type', $data)
+ && ($data['post_type'] == ZBX_POSTTYPE_JSON || $data['post_type'] == ZBX_POSTTYPE_XML)) {
+ $rules['posts'] = [
+ 'type' => API_STRING_UTF8,
+ 'length' => DB::getFieldLength('items', 'posts')
+ ];
+ }
+
+ if (array_key_exists('templateid', $data) && $data['templateid']) {
+ $rules['interfaceid'] = [
+ 'type' => API_ID, 'flags' => API_REQUIRED | API_NOT_EMPTY
+ ];
+
+ if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
+ unset($rules['interfaceid']['flags']);
+ }
+ }
+
+ if (array_key_exists('trapper_hosts', $item) && $item['trapper_hosts'] !== ''
+ && (!array_key_exists('allow_traps', $data) || $data['allow_traps'] == HTTPCHECK_ALLOW_TRAPS_OFF)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value for field "%1$s": %2$s.', 'trapper_hosts', _('should be empty'))
+ );
+ }
+
+ // Keep values only for fields with defined validation rules.
+ $data = array_intersect_key($data, $rules);
+
+ if (!CApiInputValidator::validate(['type' => API_OBJECT, 'fields' => $rules], $data, '', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+
+ if (array_key_exists('query_fields', $item)) {
+ if (!is_array($item['query_fields'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', 'query_fields', _('an array is expected'))
+ );
+ }
+
+ foreach ($item['query_fields'] as $v) {
+ if (!is_array($v) || count($v) > 1 || key($v) === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', 'query_fields', _('nonempty key and value pair expected'))
+ );
+ }
+ }
+
+ if (strlen(json_encode($item['query_fields'])) > DB::getFieldLength('items', 'query_fields')) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.', 'query_fields',
+ _('cannot convert to JSON, result value too long')
+ ));
+ }
+ }
+
+ if (array_key_exists('headers', $item)) {
+ if (!is_array($item['headers'])) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', 'headers', _('an array is expected'))
+ );
+ }
+
+ foreach ($item['headers'] as $k => $v) {
+ if (trim($k) === '' || !is_string($v) || $v === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', 'headers', _('nonempty key and value pair expected'))
+ );
+ }
+ }
+ }
+
+ if (array_key_exists('status_codes', $item) && $item['status_codes']) {
+ $ranges_parser = new CRangesParser([
+ 'usermacros' => true,
+ 'lldmacros' => ($this instanceof CItemPrototype)
+ ]);
+
+ if ($ranges_parser->parse($item['status_codes']) != CParser::PARSE_SUCCESS) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Incorrect value "%1$s" for "%2$s" field.', $item['status_codes'], 'status_codes')
+ );
+ }
+ }
+
+ if ((array_key_exists('post_type', $item) || array_key_exists('posts', $item))
+ && ($data['post_type'] == ZBX_POSTTYPE_JSON || $data['post_type'] == ZBX_POSTTYPE_XML)) {
+ $posts = array_key_exists('posts', $data) ? $data['posts'] : '';
+ libxml_use_internal_errors(true);
+
+ if ($data['post_type'] == ZBX_POSTTYPE_XML
+ && simplexml_load_string($posts, null, LIBXML_IMPORT_FLAGS) === false) {
+ $errors = libxml_get_errors();
+ libxml_clear_errors();
+
+ if (!$errors) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', 'posts', _('XML is expected'))
+ );
+ }
+ else {
+ $error = reset($errors);
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.', 'posts',
+ _s('%1$s [Line: %2$s | Column: %3$s]', '('.$error->code.') '.trim($error->message),
+ $error->line, $error->column
+ )));
+ }
+ }
+
+ if ($data['post_type'] == ZBX_POSTTYPE_JSON) {
+ if (trim($posts, " \r\n") === '') {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', 'posts', _('JSON is expected'))
+ );
+ }
+
+ $types = [
+ 'usermacros' => true,
+ 'macros_n' => [
+ '{HOST.IP}', '{HOST.CONN}', '{HOST.DNS}', '{HOST.HOST}', '{HOST.NAME}', '{ITEM.ID}',
+ '{ITEM.KEY}'
+ ]
+ ];
+
+ if ($this instanceof CItemPrototype) {
+ $types['lldmacros'] = true;
+ }
+
+ $matches = (new CMacrosResolverGeneral)->getMacroPositions($posts, $types);
+
+ $shift = 0;
+
+ foreach ($matches as $pos => $substr) {
+ $posts = substr_replace($posts, '1', $pos + $shift, strlen($substr));
+ $shift = $shift + 1 - strlen($substr);
+ }
+
+ json_decode($posts);
+
+ if (json_last_error()) {
+ self::exception(ZBX_API_ERROR_PARAMETERS,
+ _s('Invalid parameter "%1$s": %2$s.', 'posts', _('JSON is expected'))
+ );
+ }
+ }
+ }
+ }
+
+ /**
+ * Remove NCLOB value type fields from resulting query SELECT part if DISTINCT will be used.
+ *
+ * @param string $table_name Table name.
+ * @param string $table_alias Table alias value.
+ * @param array $options Array of query options.
+ * @param array $sql_parts Array of query parts already initialized from $options.
+ *
+ * @return array The resulting SQL parts array.
+ */
+ protected function applyQueryOutputOptions($table_name, $table_alias, array $options, array $sql_parts) {
+ if (!$options['countOutput'] && self::dbDistinct($sql_parts)) {
+ $schema = $this->getTableSchema();
+ $nclob_fields = [];
+
+ foreach ($schema['fields'] as $field_name => $field) {
+ if ($field['type'] == DB::FIELD_TYPE_NCLOB
+ && $this->outputIsRequested($field_name, $options['output'])) {
+ $nclob_fields[] = $field_name;
+ }
+ }
+
+ if ($nclob_fields) {
+ $output = ($options['output'] === API_OUTPUT_EXTEND)
+ ? array_keys($schema['fields'])
+ : $options['output'];
+
+ $options['output'] = array_diff($output, $nclob_fields);
+ }
+ }
+
+ return parent::applyQueryOutputOptions($table_name, $table_alias, $options, $sql_parts);
+ }
+
+ /**
+ * Add NCLOB type fields if there was DISTINCT in query.
+ *
+ * @param array $options Array of query options.
+ * @param array $result Query results.
+ *
+ * @return array The result array with added NCLOB fields.
+ */
+ protected function addNclobFieldValues(array $options, array $result): array {
+ $schema = $this->getTableSchema();
+ $nclob_fields = [];
+
+ foreach ($schema['fields'] as $field_name => $field) {
+ if ($field['type'] == DB::FIELD_TYPE_NCLOB && $this->outputIsRequested($field_name, $options['output'])) {
+ $nclob_fields[] = $field_name;
+ }
+ }
+
+ if (!$nclob_fields) {
+ return $result;
+ }
+
+ $pk = $schema['key'];
+ $options = [
+ 'output' => $nclob_fields,
+ 'filter' => [$pk => array_keys($result)]
+ ];
+
+ $db_items = DBselect(DB::makeSql($this->tableName, $options));
+
+ while ($db_item = DBfetch($db_items)) {
+ $result[$db_item[$pk]] += $db_item;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Update item tags.
+ *
+ * @param array $items
+ * @param string $items[]['itemid']
+ * @param array $items[]['tags']
+ * @param string $items[]['tags'][]['tag']
+ * @param string $items[]['tags'][]['value']
+ */
+ protected function updateItemTags(array $items): void {
+ $items = array_filter($items, function ($item) {
+ return array_key_exists('tags', $item);
+ });
+
+ // Select tags from database.
+ $db_tags = DBselect(
+ 'SELECT itemtagid, itemid, tag, value'.
+ ' FROM item_tag'.
+ ' WHERE '.dbConditionInt('itemid', array_keys($items))
+ );
+
+ array_walk($items, function (&$item) {
+ $item['db_tags'] = [];
+ });
+
+ while ($db_tag = DBfetch($db_tags)) {
+ $items[$db_tag['itemid']]['db_tags'][] = $db_tag;
+ }
+
+ // Find which tags must be added/deleted.
+ $new_tags = [];
+ $del_tagids = [];
+ foreach ($items as $item) {
+ CArrayHelper::sort($item['tags'], ['tag', 'value']);
+
+ foreach ($item['db_tags'] as $del_tag_key => $tag_delete) {
+ foreach ($item['tags'] as $new_tag_key => $tag_add) {
+ if ($tag_delete['tag'] === $tag_add['tag'] && $tag_delete['value'] === $tag_add['value']) {
+ unset($item['db_tags'][$del_tag_key], $item['tags'][$new_tag_key]);
+ continue 2;
+ }
+ }
+ }
+
+ $del_tagids = array_merge($del_tagids, array_column($item['db_tags'], 'itemtagid'));
+
+ foreach ($item['tags'] as $tag_add) {
+ $tag_add['itemid'] = $item['itemid'];
+ $new_tags[] = $tag_add;
+ }
+ }
+
+ if ($del_tagids) {
+ DB::delete('item_tag', ['itemtagid' => $del_tagids]);
+ }
+ if ($new_tags) {
+ DB::insert('item_tag', $new_tags);
+ }
+ }
+
+ /**
+ * Record item tags into database.
+ *
+ * @param array $items
+ * @param array $items[]['tags']
+ * @param string $items[]['tags'][]['tag']
+ * @param string $items[]['tags'][]['value']
+ * @param int $items[]['itemid']
+ */
+ protected function createItemTags(array $items): void {
+ $new_tags = [];
+ foreach ($items as $key => $item) {
+ if (array_key_exists('tags', $item)) {
+ foreach ($item['tags'] as $tag) {
+ $tag['itemid'] = $item['itemid'];
+ $new_tags[] = $tag;
+ }
+ }
+ }
+
+ if ($new_tags) {
+ DB::insert('item_tag', $new_tags);
+ }
+ }
+
+ /**
+ * Check that valuemap belong to same host as item.
+ *
+ * @param array $items
+ */
+ protected function validateValueMaps(array $items): void {
+ $valuemapids_by_hostid = [];
+
+ foreach ($items as $item) {
+ if (array_key_exists('valuemapid', $item) && $item['valuemapid'] != 0) {
+ $valuemapids_by_hostid[$item['hostid']][$item['valuemapid']] = true;
+ }
+ }
+
+ $sql_where = [];
+ foreach ($valuemapids_by_hostid as $hostid => $valuemapids) {
+ $sql_where[] = '(vm.hostid='.zbx_dbstr($hostid).' AND '.
+ dbConditionId('vm.valuemapid', array_keys($valuemapids)).')';
+ }
+
+ if ($sql_where) {
+ $result = DBselect(
+ 'SELECT vm.valuemapid,vm.hostid'.
+ ' FROM valuemap vm'.
+ ' WHERE '.implode(' OR ', $sql_where)
+ );
+ while ($row = DBfetch($result)) {
+ unset($valuemapids_by_hostid[$row['hostid']][$row['valuemapid']]);
+
+ if (!$valuemapids_by_hostid[$row['hostid']]) {
+ unset($valuemapids_by_hostid[$row['hostid']]);
+ }
+ }
+
+ if ($valuemapids_by_hostid) {
+ $hostid = key($valuemapids_by_hostid);
+ $valuemapid = key($valuemapids_by_hostid[$hostid]);
+
+ $host_row = DBfetch(DBselect('SELECT h.host FROM hosts h WHERE h.hostid='.zbx_dbstr($hostid)));
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Valuemap with ID "%1$s" is not available on "%2$s".',
+ $valuemapid, $host_row['host']
+ ));
+ }
+ }
+ }
+
+ /**
+ * Normalize preprocessing step parameters.
+ *
+ * @param array $preprocessing Preprocessing steps.
+ * @param string $preprocessing[<num>]['params'] Preprocessing step parameters.
+ * @param int $preprocessing[<num>]['type'] Preprocessing step type.
+ *
+ * @return array
+ */
+ protected function normalizeItemPreprocessingSteps(array $preprocessing): array {
+ foreach ($preprocessing as &$step) {
+ $step['params'] = str_replace("\r\n", "\n", $step['params']);
+ $params = explode("\n", $step['params']);
+
+ switch ($step['type']) {
+ case ZBX_PREPROC_PROMETHEUS_PATTERN:
+ if (!array_key_exists(2, $params)) {
+ $params[2] = '';
+ }
+ break;
+ }
+
+ $step['params'] = implode("\n", $params);
+ }
+ unset($step);
+
+ return $preprocessing;
+ }
+}
diff --git a/ui/include/classes/api/services/CItemPrototype.php b/ui/include/classes/api/services/CItemPrototype.php
index 8376a8e4eee..cd522aadb76 100644
--- a/ui/include/classes/api/services/CItemPrototype.php
+++ b/ui/include/classes/api/services/CItemPrototype.php
@@ -29,39 +29,60 @@ class CItemPrototype extends CItemGeneral {
protected $sortColumns = ['itemid', 'name', 'key_', 'delay', 'history', 'trends', 'type', 'status', 'discover'];
/**
- * Define a set of supported pre-processing rules.
- *
- * @var array
+ * @inheritDoc
+ */
+ public const SUPPORTED_PREPROCESSING_TYPES = [
+ ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_RTRIM, ZBX_PREPROC_LTRIM, ZBX_PREPROC_TRIM, ZBX_PREPROC_REGSUB,
+ ZBX_PREPROC_BOOL2DEC, ZBX_PREPROC_OCT2DEC, ZBX_PREPROC_HEX2DEC, ZBX_PREPROC_DELTA_VALUE,
+ ZBX_PREPROC_DELTA_SPEED, ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH, ZBX_PREPROC_VALIDATE_RANGE,
+ ZBX_PREPROC_VALIDATE_REGEX, ZBX_PREPROC_VALIDATE_NOT_REGEX, ZBX_PREPROC_ERROR_FIELD_JSON,
+ ZBX_PREPROC_ERROR_FIELD_XML, ZBX_PREPROC_ERROR_FIELD_REGEX, ZBX_PREPROC_THROTTLE_VALUE,
+ ZBX_PREPROC_THROTTLE_TIMED_VALUE, ZBX_PREPROC_SCRIPT, ZBX_PREPROC_PROMETHEUS_PATTERN,
+ ZBX_PREPROC_PROMETHEUS_TO_JSON, ZBX_PREPROC_CSV_TO_JSON, ZBX_PREPROC_STR_REPLACE,
+ ZBX_PREPROC_VALIDATE_NOT_SUPPORTED, ZBX_PREPROC_XML_TO_JSON
+ ];
+
+ /**
+ * @inheritDoc
+ */
+ protected const PREPROC_TYPES_WITH_PARAMS = [
+ ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_RTRIM, ZBX_PREPROC_LTRIM, ZBX_PREPROC_TRIM, ZBX_PREPROC_REGSUB,
+ ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH, ZBX_PREPROC_VALIDATE_RANGE, ZBX_PREPROC_VALIDATE_REGEX,
+ ZBX_PREPROC_VALIDATE_NOT_REGEX, ZBX_PREPROC_ERROR_FIELD_JSON, ZBX_PREPROC_ERROR_FIELD_XML,
+ ZBX_PREPROC_ERROR_FIELD_REGEX, ZBX_PREPROC_THROTTLE_TIMED_VALUE, ZBX_PREPROC_SCRIPT,
+ ZBX_PREPROC_PROMETHEUS_PATTERN, ZBX_PREPROC_PROMETHEUS_TO_JSON, ZBX_PREPROC_CSV_TO_JSON, ZBX_PREPROC_STR_REPLACE
+ ];
+
+ /**
+ * @inheritDoc
*/
- const SUPPORTED_PREPROCESSING_TYPES = [ZBX_PREPROC_REGSUB, ZBX_PREPROC_TRIM, ZBX_PREPROC_RTRIM,
- ZBX_PREPROC_LTRIM, ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH, ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_DELTA_VALUE,
- ZBX_PREPROC_DELTA_SPEED, ZBX_PREPROC_BOOL2DEC, ZBX_PREPROC_OCT2DEC, ZBX_PREPROC_HEX2DEC,
+ protected const PREPROC_TYPES_WITH_ERR_HANDLING = [
+ ZBX_PREPROC_MULTIPLIER, ZBX_PREPROC_REGSUB, ZBX_PREPROC_BOOL2DEC, ZBX_PREPROC_OCT2DEC, ZBX_PREPROC_HEX2DEC,
+ ZBX_PREPROC_DELTA_VALUE, ZBX_PREPROC_DELTA_SPEED, ZBX_PREPROC_XPATH, ZBX_PREPROC_JSONPATH,
ZBX_PREPROC_VALIDATE_RANGE, ZBX_PREPROC_VALIDATE_REGEX, ZBX_PREPROC_VALIDATE_NOT_REGEX,
ZBX_PREPROC_ERROR_FIELD_JSON, ZBX_PREPROC_ERROR_FIELD_XML, ZBX_PREPROC_ERROR_FIELD_REGEX,
- ZBX_PREPROC_THROTTLE_VALUE, ZBX_PREPROC_THROTTLE_TIMED_VALUE, ZBX_PREPROC_SCRIPT,
ZBX_PREPROC_PROMETHEUS_PATTERN, ZBX_PREPROC_PROMETHEUS_TO_JSON, ZBX_PREPROC_CSV_TO_JSON,
- ZBX_PREPROC_STR_REPLACE, ZBX_PREPROC_VALIDATE_NOT_SUPPORTED, ZBX_PREPROC_XML_TO_JSON
+ ZBX_PREPROC_VALIDATE_NOT_SUPPORTED, ZBX_PREPROC_XML_TO_JSON
];
- public function __construct() {
- parent::__construct();
-
- $this->errorMessages = array_merge($this->errorMessages, [
- self::ERROR_EXISTS_TEMPLATE => _('Item prototype "%1$s" already exists on "%2$s", inherited from another template.'),
- self::ERROR_EXISTS => _('Item prototype "%1$s" already exists on "%2$s".'),
- self::ERROR_INVALID_KEY => _('Invalid key "%1$s" for item prototype "%2$s" on "%3$s": %4$s.')
- ]);
- }
+ /**
+ * @inheritDoc
+ */
+ protected const SUPPORTED_ITEM_TYPES = [
+ ITEM_TYPE_ZABBIX, ITEM_TYPE_TRAPPER, ITEM_TYPE_SIMPLE, ITEM_TYPE_INTERNAL, ITEM_TYPE_ZABBIX_ACTIVE,
+ ITEM_TYPE_EXTERNAL, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_IPMI, ITEM_TYPE_SSH, ITEM_TYPE_TELNET, ITEM_TYPE_CALCULATED,
+ ITEM_TYPE_JMX, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_DEPENDENT, ITEM_TYPE_HTTPAGENT, ITEM_TYPE_SNMP, ITEM_TYPE_SCRIPT
+ ];
/**
- * Define a set of supported item types.
- *
- * @var array
+ * @inheritDoc
*/
- const SUPPORTED_ITEM_TYPES = [ITEM_TYPE_ZABBIX, ITEM_TYPE_TRAPPER, ITEM_TYPE_SIMPLE, ITEM_TYPE_INTERNAL,
- ITEM_TYPE_ZABBIX_ACTIVE, ITEM_TYPE_EXTERNAL, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_IPMI, ITEM_TYPE_SSH,
- ITEM_TYPE_TELNET, ITEM_TYPE_CALCULATED, ITEM_TYPE_JMX, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_DEPENDENT,
- ITEM_TYPE_HTTPAGENT, ITEM_TYPE_SNMP, ITEM_TYPE_SCRIPT
+ protected const VALUE_TYPE_FIELD_NAMES = [
+ ITEM_VALUE_TYPE_FLOAT => ['units', 'trends', 'valuemapid'],
+ ITEM_VALUE_TYPE_STR => ['valuemapid'],
+ ITEM_VALUE_TYPE_LOG => ['logtimefmt'],
+ ITEM_VALUE_TYPE_UINT64 => ['units', 'trends', 'valuemapid'],
+ ITEM_VALUE_TYPE_TEXT => []
];
/**
@@ -306,7 +327,7 @@ class CItemPrototype extends CItemGeneral {
}
if (array_key_exists('headers', $item)) {
- $item['headers'] = $this->headersStringToArray($item['headers']);
+ $item['headers'] = self::headersStringToArray($item['headers']);
}
}
unset($item);
@@ -337,403 +358,1009 @@ class CItemPrototype extends CItemGeneral {
}
/**
- * Check item prototype data and set flags field.
+ * @param array $items
+ *
+ * @return array
+ */
+ public function create(array $items): array {
+ self::validateCreate($items);
+
+ self::createForce($items);
+ self::inherit($items);
+
+ return ['itemids' => array_column($items, 'itemid')];
+ }
+
+ /**
+ * @param array $items
*
- * @param array $items an array of items passed by reference
- * @param bool $update
+ * @throws APIException
+ */
+ protected static function validateCreate(array &$items): void {
+ $api_input_rules = ['type' => API_OBJECTS, 'flags' => API_NOT_EMPTY | API_NORMALIZE | API_ALLOW_UNEXPECTED, 'fields' => [
+ 'hostid' => ['type' => API_ID, 'flags' => API_REQUIRED]
+ ]];
+
+ if (!CApiInputValidator::validate($api_input_rules, $items, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+
+ self::checkHostsAndTemplates($items, $db_hosts, $db_templates);
+ self::addHostStatus($items, $db_hosts, $db_templates);
+ self::addFlags($items, ZBX_FLAG_DISCOVERY_PROTOTYPE);
+
+ $api_input_rules = ['type' => API_OBJECTS, 'flags' => API_ALLOW_UNEXPECTED, 'uniq' => [['uuid'], ['hostid', 'key_']], 'fields' => [
+ 'host_status' => ['type' => API_ANY],
+ 'flags' => ['type' => API_ANY],
+ 'uuid' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'host_status', 'in' => implode(',', [HOST_STATUS_TEMPLATE])], 'type' => API_UUID],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'uuid')]
+ ]],
+ 'hostid' => ['type' => API_ANY],
+ 'ruleid' => ['type' => API_ID, 'flags' => API_REQUIRED],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'name')],
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', self::SUPPORTED_ITEM_TYPES)],
+ 'key_' => ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED | API_REQUIRED_LLD_MACRO, 'length' => DB::getFieldLength('items', 'key_')],
+ 'value_type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT])],
+ 'units' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'units')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'units')]
+ ]],
+ 'history' => ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO, 'in' => '0,'.implode(':', [SEC_PER_HOUR, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'history')],
+ 'trends' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO, 'in' => '0,'.implode(':', [SEC_PER_DAY, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'trends')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => '0', 'default' => 0]
+ ]],
+ 'valuemapid' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64])], 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]],
+ 'logtimefmt' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => ITEM_VALUE_TYPE_LOG], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'logtimefmt')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'logtimefmt')]
+ ]],
+ 'description' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'description')],
+ 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
+ 'discover' => ['type' => API_INT32, 'in' => implode(',', [ITEM_DISCOVER, ITEM_NO_DISCOVER])],
+ 'tags' => self::getTagsValidationRules(),
+ 'preprocessing' => self::getPreprocessingValidationRules()
+ ]];
+
+ if (!CApiInputValidator::validate($api_input_rules, $items, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
+
+ self::validateByType(array_keys($api_input_rules['fields']), $items);
+
+ self::checkAndAddUuid($items);
+ self::checkDuplicates($items);
+ self::checkDiscoveryRules($items);
+ self::checkValueMaps($items);
+ self::checkHostInterfaces($items);
+ self::checkDependentItems($items);
+ }
+
+ /**
+ * @param array $items
*/
- protected function checkInput(array &$items, $update = false) {
- parent::checkInput($items, $update);
+ public static function createForce(array &$items): void {
+ $itemids = DB::insert('items', $items);
+
+ $ins_items_discovery = [];
+ $host_statuses = [];
+ $flags = [];
- // set proper flags to divide normal and discovered items in future processing
foreach ($items as &$item) {
- $item['flags'] = ZBX_FLAG_DISCOVERY_PROTOTYPE;
+ $item['itemid'] = array_shift($itemids);
+
+ if ($item['flags'] == ZBX_FLAG_DISCOVERY_PROTOTYPE) {
+ $ins_items_discovery[] = [
+ 'itemid' => $item['itemid'],
+ 'parent_itemid' => $item['ruleid']
+ ];
+ }
+
+ $host_statuses[] = $item['host_status'];
+ $flags[] = $item['flags'];
+ unset($item['host_status'], $item['flags']);
+ }
+ unset($item);
+
+ if ($ins_items_discovery) {
+ DB::insertBatch('item_discovery', $ins_items_discovery);
+ }
+
+ self::updateParameters($items);
+ self::updatePreprocessing($items);
+ self::updateTags($items);
+
+ self::addAuditLog(CAudit::ACTION_ADD, CAudit::RESOURCE_ITEM_PROTOTYPE, $items);
+
+ foreach ($items as &$item) {
+ $item['host_status'] = array_shift($host_statuses);
+ $item['flags'] = array_shift($flags);
}
unset($item);
}
/**
- * Create item prototype.
- *
* @param array $items
*
* @return array
*/
- public function create($items) {
- $items = zbx_toArray($items);
+ public function update(array $items): array {
+ $this->validateUpdate($items, $db_items);
- $this->checkInput($items);
+ $itemids = array_column($items, 'itemid');
- foreach ($items as $key => $item) {
- $items[$key]['flags'] = ZBX_FLAG_DISCOVERY_PROTOTYPE;
- unset($items[$key]['itemid']);
- }
+ self::updateForce($items, $db_items);
+ self::inherit($items, $db_items);
- // Validate item prototype status and discover status fields.
- $api_input_rules = ['type' => API_OBJECT, 'fields' => [
- 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
- 'discover' => ['type' => API_INT32, 'in' => implode(',', [ITEM_DISCOVER, ITEM_NO_DISCOVER])]
+ return ['itemids' => $itemids];
+ }
+
+ /**
+ * @param array $items
+ * @param array|null $db_items
+ *
+ * @throws APIException
+ */
+ protected function validateUpdate(array &$items, ?array &$db_items): void {
+ $api_input_rules = ['type' => API_OBJECTS, 'flags' => API_NOT_EMPTY | API_NORMALIZE | API_ALLOW_UNEXPECTED, 'uniq' => [['itemid']], 'fields' => [
+ 'itemid' => ['type' => API_ID, 'flags' => API_REQUIRED]
]];
- foreach ($items as $key => $item) {
- $item = array_intersect_key($item, $api_input_rules['fields']);
+ if (!CApiInputValidator::validate($api_input_rules, $items, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ }
- if (!CApiInputValidator::validate($api_input_rules, $item, '/'.($key + 1), $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
- }
+ $count = $this->get([
+ 'countOutput' => true,
+ 'itemids' => array_column($items, 'itemid'),
+ 'editable' => true
+ ]);
+
+ if ($count != count($items)) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _('No permissions to referred object or it does not exist!'));
}
- $this->validateDependentItems($items);
+ /*
+ * The fields "headers" and "query_fields" in API are arrays, but there is necessary to get the values of these
+ * fields as they stored in database.
+ */
+ $db_items = DB::select('items', [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'logtimefmt', 'description', 'status', 'discover'
+ ], array_diff(CItemType::FIELD_NAMES, ['parameters'])),
+ 'itemids' => array_column($items, 'itemid'),
+ 'preservekeys' => true
+ ]);
- foreach ($items as &$item) {
- if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
- if (array_key_exists('query_fields', $item)) {
- $item['query_fields'] = $item['query_fields'] ? json_encode($item['query_fields']) : '';
- }
+ self::addInternalFields($db_items);
- if (array_key_exists('headers', $item)) {
- $item['headers'] = $this->headersArrayToString($item['headers']);
- }
+ foreach ($items as $i => &$item) {
+ $db_item = $db_items[$item['itemid']];
+
+ if ($db_item['templateid'] != 0) {
+ $api_input_rules = ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => [
+ 'value_type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED]
+ ]];
- if (array_key_exists('request_method', $item) && $item['request_method'] == HTTPCHECK_REQUEST_HEAD
- && !array_key_exists('retrieve_mode', $item)) {
- $item['retrieve_mode'] = HTTPTEST_STEP_RETRIEVE_MODE_HEADERS;
+ if (!CApiInputValidator::validate($api_input_rules, $item, '/'.($i + 1), $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
+
+ $item += array_intersect_key($db_item, array_flip(['value_type']));
+
+ $api_input_rules = self::getInheritedValidationRules();
}
else {
- $item['query_fields'] = '';
- $item['headers'] = '';
+ $item += array_intersect_key($db_item, array_flip(['value_type']));
+
+ $api_input_rules = self::getValidationRules();
}
- if (array_key_exists('preprocessing', $item)) {
- $item['preprocessing'] = $this->normalizeItemPreprocessingSteps($item['preprocessing']);
+ if (!CApiInputValidator::validate($api_input_rules, $item, '/'.($i + 1), $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
}
unset($item);
- $this->createReal($items);
- $this->inherit($items);
+ $items = $this->extendObjectsByKey($items, $db_items, 'itemid', ['type', 'key_']);
+
+ self::validateByType(array_keys($api_input_rules['fields']), $items, $db_items);
+
+ $items = $this->extendObjectsByKey($items, $db_items, 'itemid', ['hostid', 'host_status', 'flags', 'ruleid']);
+
+ self::validateUniqueness($items);
+
+ self::addAffectedObjects($items, $db_items);
- return ['itemids' => zbx_objectValues($items, 'itemid')];
+ self::checkDuplicates($items, $db_items);
+ self::checkValueMaps($items, $db_items);
+ self::checkHostInterfaces($items, $db_items);
+ self::checkDependentItems($items, $db_items);
}
- protected function createReal(&$items) {
- foreach ($items as &$item) {
- if ($item['type'] != ITEM_TYPE_DEPENDENT) {
- $item['master_itemid'] = null;
+ /**
+ * @inheritDoc
+ */
+ public static function getPreprocessingValidationRules(int $flags = 0x00): array {
+ return parent::getPreprocessingValidationRules(API_ALLOW_LLD_MACRO);
+ }
+
+ /**
+ * @return array
+ */
+ private static function getValidationRules(): array {
+ return ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => [
+ 'itemid' => ['type' => API_ANY],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_NOT_EMPTY, 'length' => DB::getFieldLength('items', 'name')],
+ 'type' => ['type' => API_INT32, 'in' => implode(',', self::SUPPORTED_ITEM_TYPES)],
+ 'key_' => ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO, 'length' => DB::getFieldLength('items', 'key_')],
+ 'value_type' => ['type' => API_INT32, 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_LOG, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT])],
+ 'units' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'units')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'units')]
+ ]],
+ 'history' => ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO, 'in' => '0,'.implode(':', [SEC_PER_HOUR, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'history')],
+ 'trends' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO, 'in' => '0,'.implode(':', [SEC_PER_DAY, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'trends')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => '0']
+ ]],
+ 'valuemapid' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64])], 'type' => API_ID],
+ ['else' => true, 'type' => API_ID, 'in' => '0']
+ ]],
+ 'logtimefmt' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => ITEM_VALUE_TYPE_LOG], 'type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'logtimefmt')],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => DB::getDefault('items', 'logtimefmt')]
+ ]],
+ 'description' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'description')],
+ 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
+ 'discover' => ['type' => API_INT32, 'in' => implode(',', [ITEM_DISCOVER, ITEM_NO_DISCOVER])],
+ 'tags' => self::getTagsValidationRules(),
+ 'preprocessing' => self::getPreprocessingValidationRules()
+ ]];
+ }
+
+ /**
+ * @return array
+ */
+ private static function getInheritedValidationRules(): array {
+ return ['type' => API_OBJECT, 'flags' => API_ALLOW_UNEXPECTED, 'fields' => [
+ 'itemid' => ['type' => API_ANY],
+ 'name' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'type' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'key_' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'value_type' => ['type' => API_ANY],
+ 'units' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'history' => ['type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO, 'in' => '0,'.implode(':', [SEC_PER_HOUR, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'history')],
+ 'trends' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'value_type', 'in' => implode(',', [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])], 'type' => API_TIME_UNIT, 'flags' => API_NOT_EMPTY | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO, 'in' => '0,'.implode(':', [SEC_PER_DAY, 25 * SEC_PER_YEAR]), 'length' => DB::getFieldLength('items', 'trends')],
+ ['else' => true, 'type' => API_TIME_UNIT, 'in' => '0']
+ ]],
+ 'valuemapid' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'logtimefmt' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED],
+ 'description' => ['type' => API_STRING_UTF8, 'length' => DB::getFieldLength('items', 'description')],
+ 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
+ 'discover' => ['type' => API_INT32, 'in' => implode(',', [ITEM_DISCOVER, ITEM_NO_DISCOVER])],
+ 'tags' => self::getTagsValidationRules(),
+ 'preprocessing' => ['type' => API_UNEXPECTED, 'error_type' => API_ERR_INHERITED]
+ ]];
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected static function addInternalFields(array &$db_items): void {
+ $result = DBselect(
+ 'SELECT i.itemid,i.hostid,i.templateid,i.flags,h.status AS host_status,id.parent_itemid AS ruleid'.
+ ' FROM items i,hosts h,item_discovery id'.
+ ' WHERE i.hostid=h.hostid'.
+ ' AND i.itemid=id.itemid'.
+ ' AND '.dbConditionId('i.itemid', array_keys($db_items))
+ );
+
+ while ($row = DBfetch($result)) {
+ $db_items[$row['itemid']] += $row;
+ }
+ }
+
+ /**
+ * @param array $items
+ * @param array $db_items
+ */
+ public static function updateForce(array &$items, array &$db_items): void {
+ // Helps to avoid deadlocks.
+ CArrayHelper::sort($items, ['itemid'], ZBX_SORT_DOWN);
+
+ self::addFieldDefaultsByType($items, $db_items);
+
+ $upd_items = [];
+ $upd_itemids = [];
+
+ $internal_fields = array_flip(['itemid', 'type', 'key_', 'hostid', 'flags', 'host_status']);
+ $nested_object_fields = array_flip(['tags', 'preprocessing', 'parameters']);
+
+ foreach ($items as $i => &$item) {
+ $upd_item = DB::getUpdatedValues('items', $item, $db_items[$item['itemid']]);
+
+ if ($upd_item) {
+ $upd_items[] = [
+ 'values' => $upd_item,
+ 'where' => ['itemid' => $item['itemid']]
+ ];
+
+ if (array_key_exists('type', $item) && $item['type'] == ITEM_TYPE_HTTPAGENT) {
+ $item = array_intersect_key($item,
+ array_flip(['authtype']) + $internal_fields + $upd_item + $nested_object_fields
+ );
+ }
+ else {
+ $item = array_intersect_key($item, $internal_fields + $upd_item + $nested_object_fields);
+ }
+
+ $upd_itemids[$i] = $item['itemid'];
+ }
+ else {
+ $item = array_intersect_key($item, $internal_fields + $nested_object_fields);
}
}
unset($item);
- $itemids = DB::insert('items', $items);
-
- $insertItemDiscovery = [];
- foreach ($items as $key => $item) {
- $items[$key]['itemid'] = $itemids[$key];
- $insertItemDiscovery[] = [
- 'itemid' => $items[$key]['itemid'],
- 'parent_itemid' => $item['ruleid']
- ];
+ if ($upd_items) {
+ DB::update('items', $upd_items);
}
- DB::insertBatch('item_discovery', $insertItemDiscovery);
- $this->createItemParameters($items, $itemids);
- $this->createItemPreprocessing($items);
- $this->createItemTags($items);
+ self::updateTags($items, $db_items, $upd_itemids);
+ self::updatePreprocessing($items, $db_items, $upd_itemids);
+ self::updateParameters($items, $db_items, $upd_itemids);
+ self::updateDiscoveredItems($items, $db_items);
+
+ $items = array_intersect_key($items, $upd_itemids);
+ $db_items = array_intersect_key($db_items, array_flip($upd_itemids));
+
+ self::addAuditLog(CAudit::ACTION_UPDATE, CAudit::RESOURCE_ITEM_PROTOTYPE, $items, $db_items);
}
- protected function updateReal(array $items) {
- CArrayHelper::sort($items, ['itemid']);
+ /**
+ * @param array $items
+ * @param array $db_items
+ */
+ private static function updateDiscoveredItems(array $item_prototypes, array $db_item_prototypes): void {
+ foreach ($item_prototypes as $i => $item_prototype) {
+ if (!in_array($item_prototype['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])
+ || !array_key_exists('update_discovered_items', $db_item_prototypes[$item_prototype['itemid']])) {
+ unset($item_prototype[$i]);
+ continue;
+ }
+ }
- $data = [];
- foreach ($items as $item) {
- $data[] = ['values' => $item, 'where'=> ['itemid' => $item['itemid']]];
+ if (!$item_prototypes) {
+ return;
}
- $result = DB::update('items', $data);
- if (!$result) {
- self::exception(ZBX_API_ERROR_PARAMETERS, 'DBerror');
+ $result = DBselect(
+ 'SELECT id.itemid,i.name,i.valuemapid'.
+ ' FROM item_discovery id,items i'.
+ ' WHERE id.itemid=i.itemid'.
+ ' AND '.dbConditionId('id.parent_itemid', array_column($item_prototypes, 'itemid'))
+ );
+
+ $items = [];
+ $db_items = [];
+
+ while ($row = DBfetch($result)) {
+ $items[] = [
+ 'itemid' => $row['itemid'],
+ 'valuemapid' => 0
+ ];
+
+ $db_items[$row['itemid']] = $row;
}
- $this->updateItemParameters($items);
- $this->updateItemPreprocessing($items);
- $this->updateItemTags($items);
+ if ($items) {
+ CItem::updateForce($items, $db_items);
+ }
}
/**
- * Update ItemPrototype.
+ * @param array $itemids
*
- * @param array $items
+ * @throws APIException
*
* @return array
*/
- public function update($items) {
- $items = zbx_toArray($items);
+ public function delete(array $itemids): array {
+ $this->validateDelete($itemids, $db_items);
- $this->checkInput($items, true);
+ self::deleteForce($db_items);
- // Validate item prototype status and discover status fields.
- $api_input_rules = ['type' => API_OBJECT, 'fields' => [
- 'status' => ['type' => API_INT32, 'in' => implode(',', [ITEM_STATUS_ACTIVE, ITEM_STATUS_DISABLED])],
- 'discover' => ['type' => API_INT32, 'in' => implode(',', [ITEM_DISCOVER, ITEM_NO_DISCOVER])]
- ]];
+ return ['prototypeids' => $itemids];
+ }
- foreach ($items as $key => $item) {
- $items[$key]['flags'] = ZBX_FLAG_DISCOVERY_PROTOTYPE;
+ /**
+ * @param array $itemids
+ * @param array|null $db_items
+ *
+ * @throws APIException
+ */
+ private function validateDelete(array $itemids, ?array &$db_items): void {
+ $api_input_rules = ['type' => API_IDS, 'flags' => API_NOT_EMPTY, 'uniq' => true];
- $item = array_intersect_key($item, $api_input_rules['fields']);
- if (!CApiInputValidator::validate($api_input_rules, $item, '/'.($key + 1), $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
- }
+ if (!CApiInputValidator::validate($api_input_rules, $itemids, '/', $error)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, $error);
}
$db_items = $this->get([
- 'output' => ['type', 'master_itemid', 'authtype', 'allow_traps', 'retrieve_mode', 'value_type'],
- 'itemids' => zbx_objectValues($items, 'itemid'),
+ 'output' => ['itemid', 'name', 'templateid'],
+ 'itemids' => $itemids,
'editable' => true,
'preservekeys' => true
]);
- $items = $this->extendFromObjects(zbx_toHash($items, 'itemid'), $db_items, ['type', 'authtype',
- 'master_itemid', 'value_type'
+ if (count($db_items) != count($itemids)) {
+ self::exception(ZBX_API_ERROR_PERMISSIONS, _('No permissions to referred object or it does not exist!'));
+ }
+
+ foreach ($itemids as $i => $itemid) {
+ if ($db_items[$itemid]['templateid'] != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _s('Invalid parameter "%1$s": %2$s.', '/'.($i + 1),
+ _('cannot delete inherited item prototype')
+ ));
+ }
+ }
+ }
+
+ /**
+ * @param array $templateids
+ * @param array $hostids
+ */
+ public static function linkTemplateObjects(array $templateids, array $hostids): void {
+ $db_items = DB::select('items', [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'logtimefmt', 'description', 'status', 'discover'
+ ], array_diff(CItemType::FIELD_NAMES, ['interfaceid', 'parameters'])),
+ 'filter' => [
+ 'flags' => ZBX_FLAG_DISCOVERY_PROTOTYPE,
+ 'hostid' => $templateids
+ ],
+ 'preservekeys' => true
]);
- $this->validateDependentItems($items);
-
- $defaults = DB::getDefaults('items');
- $clean = [
- ITEM_TYPE_HTTPAGENT => [
- 'url' => '',
- 'query_fields' => '',
- 'timeout' => $defaults['timeout'],
- 'status_codes' => $defaults['status_codes'],
- 'follow_redirects' => $defaults['follow_redirects'],
- 'request_method' => $defaults['request_method'],
- 'allow_traps' => $defaults['allow_traps'],
- 'post_type' => $defaults['post_type'],
- 'http_proxy' => '',
- 'headers' => '',
- 'retrieve_mode' => $defaults['retrieve_mode'],
- 'output_format' => $defaults['output_format'],
- 'ssl_key_password' => '',
- 'verify_peer' => $defaults['verify_peer'],
- 'verify_host' => $defaults['verify_host'],
- 'ssl_cert_file' => '',
- 'ssl_key_file' => '',
- 'posts' => ''
- ]
- ];
+ if (!$db_items) {
+ return;
+ }
+
+ self::addInternalFields($db_items);
+
+ $items = [];
+
+ foreach ($db_items as $db_item) {
+ $item = array_intersect_key($db_item, array_flip(['itemid', 'type']));
+
+ if ($db_item['type'] == ITEM_TYPE_SCRIPT) {
+ $item += ['parameters' => []];
+ }
+
+ $items[] = $item + [
+ 'preprocessing' => [],
+ 'tags' => []
+ ];
+ }
+
+ self::addAffectedObjects($items, $db_items);
+
+ $items = array_values($db_items);
foreach ($items as &$item) {
- $type_change = ($item['type'] != $db_items[$item['itemid']]['type']);
+ if (array_key_exists('parameters', $item)) {
+ $item['parameters'] = array_values($item['parameters']);
+ }
+
+ $item['preprocessing'] = array_values($item['preprocessing']);
+ $item['tags'] = array_values($item['tags']);
+ }
+ unset($item);
- if ($item['type'] != ITEM_TYPE_DEPENDENT && $db_items[$item['itemid']]['master_itemid'] != 0) {
- $item['master_itemid'] = 0;
+ self::inherit($items, [], $hostids);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected static function inherit(array $items, array $db_items = [], array $hostids = null,
+ bool $is_dep_items = false): void {
+ $tpl_links = self::getTemplateLinks($items, $hostids);
+
+ if ($hostids === null) {
+ self::filterObjectsToInherit($items, $db_items, $tpl_links);
+
+ if (!$items) {
+ return;
}
+ }
- if ($type_change && $db_items[$item['itemid']]['type'] == ITEM_TYPE_HTTPAGENT) {
- $item = array_merge($item, $clean[ITEM_TYPE_HTTPAGENT]);
+ self::checkDoubleInheritedNames($items, $db_items, $tpl_links);
- if ($item['type'] != ITEM_TYPE_SSH) {
- $item['authtype'] = $defaults['authtype'];
- $item['username'] = '';
- $item['password'] = '';
- }
+ if ($hostids !== null && !$is_dep_items) {
+ $dep_items_to_link = [];
+
+ $item_indexes = array_flip(array_column($items, 'itemid'));
+
+ foreach ($items as $i => $item) {
+ if ($item['type'] == ITEM_TYPE_DEPENDENT
+ && array_key_exists($item['master_itemid'], $item_indexes)) {
+ $dep_items_to_link[$item_indexes[$item['master_itemid']]][$i] = $item;
- if ($item['type'] != ITEM_TYPE_TRAPPER) {
- $item['trapper_hosts'] = '';
+ unset($items[$i]);
}
}
+ }
- if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
- // Clean username and password when authtype is set to HTTPTEST_AUTH_NONE.
- if ($item['authtype'] == HTTPTEST_AUTH_NONE) {
- $item['username'] = '';
- $item['password'] = '';
- }
+ $chunks = self::getInheritChunks($items, $tpl_links);
- if (array_key_exists('allow_traps', $item) && $item['allow_traps'] == HTTPCHECK_ALLOW_TRAPS_OFF
- && $item['allow_traps'] != $db_items[$item['itemid']]['allow_traps']) {
- $item['trapper_hosts'] = '';
- }
+ foreach ($chunks as $chunk) {
+ $_items = array_intersect_key($items, array_flip($chunk['item_indexes']));
+ $_db_items = array_intersect_key($db_items, array_flip(array_column($_items, 'itemid')));
+ $_hostids = array_keys($chunk['hosts']);
- if (array_key_exists('query_fields', $item) && is_array($item['query_fields'])) {
- $item['query_fields'] = $item['query_fields'] ? json_encode($item['query_fields']) : '';
- }
+ self::inheritChunk($_items, $_db_items, $tpl_links, $_hostids);
+ }
- if (array_key_exists('headers', $item) && is_array($item['headers'])) {
- $item['headers'] = $this->headersArrayToString($item['headers']);
- }
+ if ($hostids !== null && !$is_dep_items) {
+ self::inheritDependentItems($dep_items_to_link, $items, $hostids);
+ }
+ }
- if (array_key_exists('request_method', $item) && $item['request_method'] == HTTPCHECK_REQUEST_HEAD
- && !array_key_exists('retrieve_mode', $item)
- && $db_items[$item['itemid']]['retrieve_mode'] != HTTPTEST_STEP_RETRIEVE_MODE_HEADERS) {
- $item['retrieve_mode'] = HTTPTEST_STEP_RETRIEVE_MODE_HEADERS;
- }
+ /**
+ * @param array $items
+ * @param array $db_items
+ * @param array $tpl_links
+ * @param array $hostids
+ */
+ protected static function inheritChunk(array $items, array $db_items, array $tpl_links, array $hostids): void {
+ $items_to_link = [];
+ $items_to_update = [];
+
+ foreach ($items as $i => $item) {
+ if (!array_key_exists($item['itemid'], $db_items)) {
+ $items_to_link[] = $item;
}
else {
- $item['query_fields'] = '';
- $item['headers'] = '';
+ $items_to_update[] = $item;
}
- if ($type_change && $db_items[$item['itemid']]['type'] == ITEM_TYPE_SCRIPT) {
- if ($item['type'] != ITEM_TYPE_SSH && $item['type'] != ITEM_TYPE_DB_MONITOR
- && $item['type'] != ITEM_TYPE_TELNET && $item['type'] != ITEM_TYPE_CALCULATED) {
- $item['params'] = '';
- }
+ unset($items[$i]);
+ }
- if ($item['type'] != ITEM_TYPE_HTTPAGENT) {
- $item['timeout'] = $defaults['timeout'];
- }
+ $ins_items = [];
+ $upd_items = [];
+ $upd_db_items = [];
+
+ if ($items_to_link) {
+ $lld_links = self::getLldLinks($items_to_link);
+
+ $upd_db_items = self::getChildObjectsUsingName($items_to_link, $hostids, $lld_links);
+
+ if ($upd_db_items) {
+ $upd_items = self::getUpdChildObjectsUsingName($items_to_link, $upd_db_items);
}
- if ($item['value_type'] == ITEM_VALUE_TYPE_LOG || $item['value_type'] == ITEM_VALUE_TYPE_TEXT) {
- if ($item['value_type'] != $db_items[$item['itemid']]['value_type']) {
- // Reset valuemapid when value_type is LOG or TEXT.
- $item['valuemapid'] = 0;
+ $ins_items = self::getInsChildObjects($items_to_link, $upd_db_items, $tpl_links, $hostids, $lld_links);
+ }
+
+ if ($items_to_update) {
+ $_upd_db_items = self::getChildObjectsUsingTemplateid($items_to_update, $db_items, $hostids);
+ $_upd_items = self::getUpdChildObjectsUsingTemplateid($items_to_update, $db_items, $_upd_db_items);
+
+ self::checkDuplicates($_upd_items, $_upd_db_items);
+
+ $upd_items = array_merge($upd_items, $_upd_items);
+ $upd_db_items += $_upd_db_items;
+ }
+
+ self::setChildMasterItemIds($upd_items, $ins_items, $hostids);
+
+ $edit_items = array_merge($upd_items, $ins_items);
+
+ self::checkDependentItems($edit_items, $upd_db_items, true);
+
+ self::addInterfaceIds($upd_items, $upd_db_items, $ins_items);
+
+ if ($upd_items) {
+ self::updateForce($upd_items, $upd_db_items);
+ }
+
+ if ($ins_items) {
+ self::createForce($ins_items);
+ }
+
+ self::inherit(array_merge($upd_items, $ins_items), $upd_db_items);
+ }
+
+ /**
+ * @param array $items
+ * @param array $db_items
+ * @param array $hostids
+ *
+ * @return array
+ */
+ private static function getChildObjectsUsingTemplateid(array $items, array $db_items, array $hostids): array {
+ $upd_db_items = DB::select('items', [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'logtimefmt', 'description', 'status', 'discover'
+ ], array_diff(CItemType::FIELD_NAMES, ['parameters'])),
+ 'filter' => [
+ 'templateid' => array_keys($db_items),
+ 'hostid' => $hostids
+ ],
+ 'preservekeys' => true
+ ]);
+
+ self::addInternalFields($upd_db_items);
+
+ if ($upd_db_items) {
+ $parent_indexes = array_flip(array_column($items, 'itemid'));
+ $upd_items = [];
+
+ foreach ($upd_db_items as &$upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['templateid']]];
+ $db_item = $db_items[$upd_db_item['templateid']];
+
+ if (array_key_exists('update_discovered_items', $db_item)) {
+ $upd_db_item['update_discovered_items'] = true;
}
- }
- if (array_key_exists('tags', $item)) {
- $item['tags'] = array_map(function ($tag) {
- return $tag + ['value' => ''];
- }, $item['tags']);
+ $upd_item = [
+ 'itemid' => $upd_db_item['itemid'],
+ 'type' => $item['type']
+ ];
+
+ $upd_item += array_intersect_key([
+ 'tags' => [],
+ 'preprocessing' => [],
+ 'parameters' => []
+ ], $db_item);
+
+ $upd_items[] = $upd_item;
}
+ unset($upd_db_item);
- if (array_key_exists('preprocessing', $item)) {
- $item['preprocessing'] = $this->normalizeItemPreprocessingSteps($item['preprocessing']);
+ self::addAffectedObjects($upd_items, $upd_db_items);
+ }
+
+ return $upd_db_items;
+ }
+
+ /**
+ * @param array $items
+ * @param array $db_items
+ * @param array $upd_db_items
+ *
+ * @return array
+ */
+ private static function getUpdChildObjectsUsingTemplateid(array $items, array $db_items,
+ array $upd_db_items): array {
+
+ foreach ($items as &$item) {
+ if (!array_key_exists($item['itemid'], $db_items)) {
+ continue;
}
+
+ $item = self::unsetNestedObjectIds($item);
}
unset($item);
- $this->updateReal($items);
- $this->inherit($items);
+ $parent_indexes = array_flip(array_column($items, 'itemid'));
+ $upd_items = [];
- return ['itemids' => zbx_objectValues($items, 'itemid')];
+ foreach ($upd_db_items as $upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['templateid']]];
+
+ $upd_items[] = array_intersect_key($upd_db_item,
+ array_flip(['itemid', 'hostid', 'templateid', 'host_status', 'ruleid'])
+ ) + $item;
+ }
+
+ return $upd_items;
}
/**
- * Delete Item prototypes.
- *
- * @param array $itemids
+ * @param array $items
+ * @param array $tpl_links
*
* @return array
*/
- public function delete(array $itemids) {
- $this->validateDelete($itemids, $db_items);
+ private static function getLldLinks(array $items): array {
+ $options = [
+ 'output' => ['templateid', 'hostid', 'itemid'],
+ 'filter' => ['templateid' => array_unique(array_column($items, 'ruleid'))]
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
- CItemPrototypeManager::delete($itemids);
+ $lld_links = [];
- $this->addAuditBulk(CAudit::ACTION_DELETE, CAudit::RESOURCE_ITEM_PROTOTYPE, $db_items);
+ while ($row = DBfetch($result)) {
+ $lld_links[$row['templateid']][$row['hostid']] = $row['itemid'];
+ }
- return ['prototypeids' => $itemids];
+ return $lld_links;
}
/**
- * Validates the input parameters for the delete() method.
+ * @param array $items
+ * @param array $hostids
+ * @param array $lld_links
*
- * @param array $itemids [IN/OUT]
- * @param array $db_items [OUT]
+ * @return array
+ */
+ private static function getChildObjectsUsingName(array $items, array $hostids, array $lld_links): array {
+ $result = DBselect(
+ 'SELECT i.itemid,ht.hostid,i.key_,i.templateid,i.flags,h.status AS host_status,'.
+ 'ht.templateid AS parent_hostid,id.parent_itemid AS ruleid,'.
+ dbConditionCoalesce('id.parent_itemid', 0, 'ruleid').
+ ' FROM hosts_templates ht'.
+ ' INNER JOIN items i ON ht.hostid=i.hostid'.
+ ' INNER JOIN hosts h ON ht.hostid=h.hostid'.
+ ' LEFT JOIN item_discovery id ON i.itemid=id.itemid'.
+ ' WHERE '.dbConditionId('ht.templateid', array_unique(array_column($items, 'hostid'))).
+ ' AND '.dbConditionString('i.key_', array_unique(array_column($items, 'key_'))).
+ ' AND '.dbConditionId('ht.hostid', $hostids)
+ );
+
+ $upd_db_items = [];
+ $parent_indexes = [];
+
+ while ($row = DBfetch($result)) {
+ foreach ($items as $i => $item) {
+ if (bccomp($row['parent_hostid'], $item['hostid']) == 0 && $row['key_'] === $item['key_']) {
+ if ($row['flags'] == $item['flags'] && $row['templateid'] == 0
+ && bccomp($row['ruleid'], $lld_links[$item['ruleid']][$row['hostid']]) == 0) {
+ $upd_db_items[$row['itemid']] = $row;
+ $parent_indexes[$row['itemid']] = $i;
+ }
+ else {
+ self::showObjectMismatchError($item, $row);
+ }
+ }
+ }
+ }
+
+ if (!$upd_db_items) {
+ return [];
+ }
+
+ $options = [
+ 'output' => array_merge(['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'logtimefmt', 'description', 'status', 'discover'
+ ], array_diff(CItemType::FIELD_NAMES, ['parameters'])),
+ 'itemids' => array_keys($upd_db_items)
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
+
+ while ($row = DBfetch($result)) {
+ $upd_db_items[$row['itemid']] = $row + $upd_db_items[$row['itemid']];
+ }
+
+ $upd_items = [];
+
+ foreach ($upd_db_items as $upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['itemid']]];
+
+ $upd_items[] = [
+ 'itemid' => $upd_db_item['itemid'],
+ 'type' => $item['type'],
+ 'tags' => [],
+ 'preprocessing' => [],
+ 'parameters' => []
+ ];
+ }
+
+ self::addAffectedObjects($upd_items, $upd_db_items);
+
+ return $upd_db_items;
+ }
+
+ /**
+ * @param array $items
+ * @param array $upd_db_items
*
- * @throws APIException if the input is invalid.
+ * @return array
*/
- private function validateDelete(array &$itemids, array &$db_items = null) {
- $api_input_rules = ['type' => API_IDS, 'flags' => API_NOT_EMPTY, 'uniq' => true];
- if (!CApiInputValidator::validate($api_input_rules, $itemids, '/', $error)) {
- self::exception(ZBX_API_ERROR_PARAMETERS, $error);
+ private static function getUpdChildObjectsUsingName(array $items, array $upd_db_items): array {
+ $parent_indexes = [];
+
+ foreach ($items as $i => &$item) {
+ $item = self::unsetNestedObjectIds($item);
+ $parent_indexes[$item['hostid']][$item['key_']] = $i;
}
+ unset($item);
- $db_items = $this->get([
- 'output' => ['itemid', 'name', 'templateid', 'flags'],
- 'itemids' => $itemids,
- 'editable' => true,
+ $upd_items = [];
+
+ foreach ($upd_db_items as $upd_db_item) {
+ $item = $items[$parent_indexes[$upd_db_item['parent_hostid']][$upd_db_item['key_']]];
+
+ $upd_item = [
+ 'itemid' => $upd_db_item['itemid'],
+ 'hostid' => $upd_db_item['hostid'],
+ 'templateid' => $item['itemid'],
+ 'host_status' => $upd_db_item['host_status'],
+ 'ruleid' => $upd_db_item['ruleid']
+ ] + $item;
+
+ $upd_item += [
+ 'tags' => [],
+ 'preprocessing' => [],
+ 'parameters' => []
+ ];
+
+ $upd_items[] = $upd_item;
+ }
+
+ return $upd_items;
+ }
+
+ /**
+ * @param array $item
+ * @param array $upd_db_item
+ *
+ * @throws APIException
+ */
+ protected static function showObjectMismatchError(array $item, array $upd_db_item): void {
+ parent::showObjectMismatchError($item, $upd_db_item);
+
+ $target_is_host = in_array($upd_db_item['host_status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]);
+
+ $hosts = DB::select('hosts', [
+ 'output' => ['host'],
+ 'hostids' => [$item['hostid'], $upd_db_item['hostid']],
'preservekeys' => true
]);
- foreach ($itemids as $itemid) {
- if (!array_key_exists($itemid, $db_items)) {
- self::exception(ZBX_API_ERROR_PERMISSIONS,
- _('No permissions to referred object or it does not exist!')
- );
- }
+ $lld_rules = DB::select('items', [
+ 'output' => ['name'],
+ 'itemids' => [$item['ruleid'], $upd_db_item['ruleid']],
+ 'preservekeys' => true
+ ]);
- $db_item = $db_items[$itemid];
+ $error = $target_is_host
+ ? _('Cannot inherit item prototype with key "%1$s" of template "%2$s" and LLD rule "%3$s" to host "%4$s", because an item prototype with the same key already belongs to LLD rule "%5$s".')
+ : _('Cannot inherit item prototype with key "%1$s" of template "%2$s" and LLD rule "%3$s" to template "%4$s", because an item prototype with the same key already belongs to LLD rule "%5$s".');
- if ($db_item['templateid'] != 0) {
- self::exception(ZBX_API_ERROR_PARAMETERS, _('Cannot delete templated item prototype.'));
- }
- }
+ self::exception(ZBX_API_ERROR_PARAMETERS, sprintf($error, $upd_db_item['key_'], $hosts[$item['hostid']]['host'],
+ $lld_rules[$item['ruleid']]['name'], $hosts[$upd_db_item['hostid']]['host'],
+ $lld_rules[$upd_db_item['ruleid']]['name']
+ ));
}
- public function syncTemplates($data) {
- $data['templateids'] = zbx_toArray($data['templateids']);
- $data['hostids'] = zbx_toArray($data['hostids']);
+ /**
+ * @param array $items
+ * @param array $upd_db_items
+ * @param array $tpl_links
+ * @param array $hostids
+ * @param array $lld_links
+ *
+ * @return array
+ */
+ private static function getInsChildObjects(array $items, array $upd_db_items, array $tpl_links, array $hostids,
+ array $lld_links): array {
+ $ins_items = [];
+
+ $upd_item_keys = [];
- $output = [];
- foreach ($this->fieldRules as $field_name => $rules) {
- if (!array_key_exists('system', $rules) && !array_key_exists('host', $rules)) {
- $output[] = $field_name;
+ foreach ($upd_db_items as $upd_db_item) {
+ $upd_item_keys[$upd_db_item['hostid']][] = $upd_db_item['key_'];
+ }
+
+ foreach ($items as $item) {
+ $item['uuid'] = '';
+ $item = self::unsetNestedObjectIds($item);
+
+ foreach ($tpl_links[$item['hostid']] as $host) {
+ if (!in_array($host['hostid'], $hostids)
+ || (array_key_exists($host['hostid'], $upd_item_keys)
+ && in_array($item['key_'], $upd_item_keys[$host['hostid']]))) {
+ continue;
+ }
+
+ $ins_items[] = [
+ 'hostid' => $host['hostid'],
+ 'templateid' => $item['itemid'],
+ 'host_status' => $host['status'],
+ 'ruleid' => $lld_links[$item['ruleid']][$host['hostid']]
+ ] + array_diff_key($item, array_flip(['itemid']));
}
}
- $tpl_items = $this->get([
- 'output' => $output,
- 'selectPreprocessing' => ['type', 'params', 'error_handler', 'error_handler_params'],
- 'selectTags' => ['tag', 'value'],
- 'hostids' => $data['templateids'],
- 'preservekeys' => true,
- 'nopermissions' => true
- ]);
+ return $ins_items;
+ }
- foreach ($tpl_items as &$tpl_item) {
- if ($tpl_item['type'] == ITEM_TYPE_HTTPAGENT) {
- if (array_key_exists('query_fields', $tpl_item) && is_array($tpl_item['query_fields'])) {
- $tpl_item['query_fields'] = $tpl_item['query_fields']
- ? json_encode($tpl_item['query_fields'])
- : '';
- }
+ /**
+ * @param array $ruleids
+ */
+ public static function unlinkTemplateObjects(array $ruleids): void {
+ $result = DBselect(
+ 'SELECT id.itemid,i.name,i.type,i.key_,i.templateid,i.uuid,i.valuemapid,i.hostid,h.status AS host_status'.
+ ' FROM item_discovery id,items i,hosts h'.
+ ' WHERE id.itemid=i.itemid'.
+ ' AND i.hostid=h.hostid'.
+ ' AND '.dbConditionId('id.parent_itemid', $ruleids).
+ ' AND '.dbConditionId('i.templateid', [0], true)
+ );
+
+ $items = [];
+ $db_items = [];
+ $i = 0;
+ $tpl_itemids = [];
+
+ while ($row = DBfetch($result)) {
+ $item = [
+ 'itemid' => $row['itemid'],
+ 'type' => $row['type'],
+ 'templateid' => 0,
+ 'host_status' => $row['host_status']
+ ];
- if (array_key_exists('headers', $tpl_item) && is_array($tpl_item['headers'])) {
- $tpl_item['headers'] = $this->headersArrayToString($tpl_item['headers']);
- }
+ if ($row['host_status'] == HOST_STATUS_TEMPLATE) {
+ $item += ['uuid' => generateUuidV4()];
}
- else {
- $tpl_item['query_fields'] = '';
- $tpl_item['headers'] = '';
+
+ if ($row['valuemapid'] != 0) {
+ $item += ['valuemapid' => 0];
+ $row['update_discovered_items'] = true;
+
+ if ($row['host_status'] == HOST_STATUS_TEMPLATE) {
+ $tpl_itemids[$i] = $row['itemid'];
+ $item += array_intersect_key($row, array_flip(['key_', 'hostid']));
+ }
}
+
+ $items[$i++] = $item;
+ $db_items[$row['itemid']] = $row;
}
- unset($tpl_item);
- $this->inherit($tpl_items, $data['hostids']);
+ if ($items) {
+ self::updateForce($items, $db_items);
+
+ if ($tpl_itemids) {
+ $items = array_intersect_key($items, $tpl_itemids);
+ $db_items = array_intersect_key($db_items, array_flip($tpl_itemids));
- return true;
+ self::inherit($items, $db_items);
+ }
+ }
}
/**
- * Check item prototype specific fields:
- * - validate history and trends using simple interval parser, user macro parser and lld macro parser;
- * - validate item preprocessing.
+ * Check that discovery rule IDs of given items are valid.
*
- * @param array $item An array of single item data.
- * @param string $method A string of "create" or "update" method.
+ * @param array $items
*
- * @throws APIException if the input is invalid.
- */
- protected function checkSpecificFields(array $item, $method) {
- if (array_key_exists('history', $item)
- && !validateTimeUnit($item['history'], SEC_PER_HOUR, 25 * SEC_PER_YEAR, true, $error,
- ['usermacros' => true, 'lldmacros' => true])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'history', $error)
- );
+ * @throws APIException
+ */
+ private static function checkDiscoveryRules(array $items): void {
+ $ruleids = array_unique(array_column($items, 'ruleid'));
+
+ $db_discovery_rules = DB::select('items', [
+ 'output' => ['hostid'],
+ 'filter' => [
+ 'flags' => ZBX_FLAG_DISCOVERY_RULE,
+ 'itemid' => $ruleids
+ ],
+ 'preservekeys' => true
+ ]);
+
+ if (count($db_discovery_rules) != count($ruleids)) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
}
- if (array_key_exists('trends', $item)
- && !validateTimeUnit($item['trends'], SEC_PER_DAY, 25 * SEC_PER_YEAR, true, $error,
- ['usermacros' => true, 'lldmacros' => true])) {
- self::exception(ZBX_API_ERROR_PARAMETERS,
- _s('Incorrect value for field "%1$s": %2$s.', 'trends', $error)
- );
+ foreach ($items as $item) {
+ if (bccomp($db_discovery_rules[$item['ruleid']]['hostid'], $item['hostid']) != 0) {
+ self::exception(ZBX_API_ERROR_PARAMETERS, _('No permissions to referred object or it does not exist!'));
+ }
}
}
@@ -753,7 +1380,7 @@ class CItemPrototype extends CItemGeneral {
return $sqlParts;
}
- public function addRelatedObjects(array $options, array $result) {
+ protected function addRelatedObjects(array $options, array $result) {
$result = parent::addRelatedObjects($options, $result);
$itemids = array_keys($result);
@@ -870,4 +1497,111 @@ class CItemPrototype extends CItemGeneral {
return $result;
}
+
+ /**
+ * @param array $db_items
+ */
+ public static function deleteForce(array $db_items): void {
+ self::addInheritedItems($db_items);
+ self::addDependentItems($db_items);
+
+ $del_itemids = array_keys($db_items);
+
+ // Lock item prototypes before delete to prevent server from adding new LLD elements.
+ DBselect(
+ 'SELECT NULL'.
+ ' FROM items i'.
+ ' WHERE '.dbConditionInt('i.itemid', $del_itemids).
+ ' FOR UPDATE'
+ );
+
+ self::deleteAffectedGraphPrototypes($del_itemids);
+ self::resetGraphsYAxis($del_itemids);
+
+ self::deleteDiscoveredItems($del_itemids);
+
+ self::deleteAffectedTriggers($del_itemids);
+
+ DB::delete('graphs_items', ['itemid' => $del_itemids]);
+ DB::delete('widget_field', ['value_itemid' => $del_itemids]);
+ DB::delete('item_discovery', ['itemid' => $del_itemids]);
+ DB::delete('item_parameter', ['itemid' => $del_itemids]);
+ DB::delete('item_preproc', ['itemid' => $del_itemids]);
+ DB::delete('item_tag', ['itemid' => $del_itemids]);
+ DB::update('items', [
+ 'values' => ['templateid' => 0, 'master_itemid' => 0],
+ 'where' => ['itemid' => $del_itemids]
+ ]);
+ DB::delete('items', ['itemid' => $del_itemids]);
+
+ self::addAuditLog(CAudit::ACTION_DELETE, CAudit::RESOURCE_ITEM_PROTOTYPE, $db_items);
+ }
+
+ /**
+ * Add the dependent item prototypes of the given items to the given item prototypes array.
+ *
+ * @param array $db_items
+ */
+ protected static function addDependentItems(array &$db_items): void {
+ $master_itemids = array_keys($db_items);
+
+ do {
+ $options = [
+ 'output' => ['itemid', 'name'],
+ 'filter' => ['master_itemid' => $master_itemids]
+ ];
+ $result = DBselect(DB::makeSql('items', $options));
+
+ $master_itemids = [];
+
+ while ($row = DBfetch($result)) {
+ $master_itemids[] = $row['itemid'];
+
+ $db_items[$row['itemid']] = $row;
+ }
+ } while ($master_itemids);
+ }
+
+ /**
+ * Delete graph prototypes, which would remain without item prototypes after the given item prototypes deletion.
+ *
+ * @param array $del_itemids
+ */
+ private static function deleteAffectedGraphPrototypes(array $del_itemids): void {
+ $del_graphids = DBfetchColumn(DBselect(
+ 'SELECT DISTINCT gi.graphid'.
+ ' FROM graphs_items gi'.
+ ' WHERE '.dbConditionId('gi.itemid', $del_itemids).
+ ' AND NOT EXISTS ('.
+ 'SELECT NULL'.
+ ' FROM graphs_items gii,items i'.
+ ' WHERE gi.graphid=gii.graphid'.
+ ' AND gii.itemid=i.itemid'.
+ ' AND '.dbConditionId('gii.itemid', $del_itemids, true).
+ ' AND '.dbConditionInt('i.flags', [ZBX_FLAG_DISCOVERY_PROTOTYPE]).
+ ')'
+ ), 'graphid');
+
+ if ($del_graphids) {
+ CGraphPrototypeManager::delete($del_graphids);
+ }
+ }
+
+ /**
+ * Delete discovered items of the given item prototypes.
+ *
+ * @param array $del_itemids
+ */
+ private static function deleteDiscoveredItems(array $del_itemids): void {
+ $db_items = DBfetchArrayAssoc(DBselect(
+ 'SELECT id.itemid,i.name'.
+ ' FROM item_discovery id,items i'.
+ ' WHERE id.itemid=i.itemid'.
+ ' AND '.dbConditionId('id.parent_itemid', $del_itemids)
+ ), 'itemid');
+
+ if ($db_items) {
+ CItem::deleteForce($db_items);
+ }
+ }
}
diff --git a/ui/include/classes/api/services/CModule.php b/ui/include/classes/api/services/CModule.php
index b2190d10e98..9b060c26e7e 100644
--- a/ui/include/classes/api/services/CModule.php
+++ b/ui/include/classes/api/services/CModule.php
@@ -132,7 +132,7 @@ class CModule extends CApiService {
*
* @param array $modules
*
- * @throws APIException if the input is invalid.
+ * @throws APIException|JsonException
*/
private static function validateCreate(array &$modules): void {
$api_input_rules = ['type' => API_OBJECTS, 'flags' => API_NOT_EMPTY | API_NORMALIZE, 'fields' => [
@@ -147,7 +147,7 @@ class CModule extends CApiService {
}
foreach ($modules as &$module) {
- $module['config'] = json_encode($module['config']);
+ $module['config'] = json_encode($module['config'], JSON_THROW_ON_ERROR);
}
unset($module);
}
@@ -196,7 +196,7 @@ class CModule extends CApiService {
* @param array $modules
* @param array|null $db_modules
*
- * @throws APIException if the input is invalid.
+ * @throws APIException|JsonException
*/
private static function validateUpdate(array &$modules, array &$db_modules = null): void {
$api_input_rules = ['type' => API_OBJECTS, 'flags' => API_NOT_EMPTY | API_NORMALIZE, 'uniq' => [['moduleid']], 'fields' => [
@@ -221,7 +221,7 @@ class CModule extends CApiService {
foreach ($modules as &$module) {
if (array_key_exists('config', $module)) {
- $module['config'] = json_encode($module['config']);
+ $module['config'] = json_encode($module['config'], JSON_THROW_ON_ERROR);
}
}
unset($module);
diff --git a/ui/include/classes/api/services/CRole.php b/ui/include/classes/api/services/CRole.php
index 34ff83732d4..fb87a1d1c20 100644
--- a/ui/include/classes/api/services/CRole.php
+++ b/ui/include/classes/api/services/CRole.php
@@ -700,7 +700,7 @@ class CRole extends CApiService {
return;
}
- $unavailable_moduleids = array_diff(array_keys($moduleids), self::getEnabledModuleIds());
+ $unavailable_moduleids = array_diff(array_keys($moduleids), self::getModuleIds());
if ($unavailable_moduleids) {
self::exception(ZBX_API_ERROR_PARAMETERS,
@@ -1036,7 +1036,7 @@ class CRole extends CApiService {
$index = 0;
- foreach (self::getEnabledModuleIds() as $moduleid) {
+ foreach (self::getModuleIds() as $moduleid) {
if (array_key_exists($moduleid, $new_modules_rules)) {
$module_status = $new_modules_rules[$moduleid]['status'];
}
@@ -1154,7 +1154,7 @@ class CRole extends CApiService {
* @return array
*/
protected function applyQueryFilterOptions($table_name, $table_alias, array $options, array $sql_parts): array {
- $sqlParts = parent::applyQueryFilterOptions($table_name, $table_alias, $options, $sql_parts);
+ $sql_parts = parent::applyQueryFilterOptions($table_name, $table_alias, $options, $sql_parts);
if (self::$userData['type'] != USER_TYPE_SUPER_ADMIN) {
$sql_parts['from']['users'] = 'users u';
@@ -1162,7 +1162,7 @@ class CRole extends CApiService {
$sql_parts['where'][] = 'u.userid='.self::$userData['userid'];
}
- return $sqlParts;
+ return $sql_parts;
}
/**
@@ -1417,7 +1417,7 @@ class CRole extends CApiService {
if (in_array('modules', $output, true)) {
$modules = [];
- foreach (self::getEnabledModuleIds() as $moduleid) {
+ foreach (self::getModuleIds() as $moduleid) {
$modules[$moduleid] = [
'moduleid' => $moduleid,
'status' => $modules_default_access
@@ -1520,12 +1520,9 @@ class CRole extends CApiService {
*
* @throws APIException
*/
- private static function getEnabledModuleIds(): array {
+ private static function getModuleIds(): array {
$modules = API::getApiService('module')->get([
'output' => [],
- 'filter' => [
- 'status' => MODULE_STATUS_ENABLED
- ],
'preservekeys' => true
], false);
diff --git a/ui/include/classes/api/services/CTemplate.php b/ui/include/classes/api/services/CTemplate.php
index 2d10d49ccd8..0c392c7f3a7 100644
--- a/ui/include/classes/api/services/CTemplate.php
+++ b/ui/include/classes/api/services/CTemplate.php
@@ -532,19 +532,24 @@ class CTemplate extends CHostGeneral {
'nopermissions' => true,
'preservekeys' => true
]);
+
if ($del_rules) {
CDiscoveryRuleManager::delete(array_keys($del_rules));
}
// delete the items
- $del_items = API::Item()->get([
- 'output' => [],
- 'templateids' => $templateids,
- 'nopermissions' => true,
+ $db_items = DB::select('items', [
+ 'output' => ['itemid', 'name'],
+ 'filter' => [
+ 'hostid' => $templateids,
+ 'flags' => ZBX_FLAG_DISCOVERY_NORMAL,
+ 'type' => CItem::SUPPORTED_ITEM_TYPES
+ ],
'preservekeys' => true
]);
- if ($del_items) {
- CItemManager::delete(array_keys($del_items));
+
+ if ($db_items) {
+ CItem::deleteForce($db_items);
}
// delete host from maps
@@ -616,15 +621,15 @@ class CTemplate extends CHostGeneral {
'operationid'=>$delOperationids
]);
- // http tests
- $delHttpTests = API::HttpTest()->get([
- 'templateids' => $templateids,
- 'output' => ['httptestid'],
- 'nopermissions' => 1,
+ // delete web scenarios
+ $db_httptests = DB::select('httptest', [
+ 'output' => ['httptestid', 'name'],
+ 'filter' => ['hostid' => $templateids],
'preservekeys' => true
]);
- if (!empty($delHttpTests)) {
- API::HttpTest()->delete(array_keys($delHttpTests), true);
+
+ if ($db_httptests) {
+ CHttpTest::deleteForce($db_httptests);
}
// Get host prototype operations from LLD overrides where this template is linked.
diff --git a/ui/include/classes/core/CModule.php b/ui/include/classes/core/CModule.php
index 86cac8653ba..41c52c44492 100644
--- a/ui/include/classes/core/CModule.php
+++ b/ui/include/classes/core/CModule.php
@@ -19,119 +19,115 @@
**/
-namespace Core;
+namespace Zabbix\Core;
-use CController as CAction;
+use API,
+ CController as CAction;
/**
* Base class for user modules. If Module.php is not provided by user module, this class will be instantiated instead.
*/
class CModule {
- /**
- * Module directory path.
- *
- * @var string
- */
- private $dir;
+ public const TYPE_MODULE = 'module';
+ public const TYPE_WIDGET = 'widget';
- /**
- * Module manifest.
- *
- * @var array
- */
- private $manifest;
+ protected array $manifest;
+ protected string $moduleid;
+ protected string $relative_path;
- /**
- * @param string $dir Module directory path.
- * @param array $manifest Module manifest.
- */
- public function __construct(string $dir, array $manifest) {
- $this->dir = $dir;
+ public function __construct(array $manifest, string $moduleid, string $relative_path) {
$this->manifest = $manifest;
+ $this->moduleid = $moduleid;
+ $this->relative_path = $relative_path;
}
- /**
- * Initialize module.
- */
public function init(): void {
}
- /**
- * Get module directory path.
- *
- * @return string
- */
- final public function getDir(): string {
- return $this->dir;
- }
-
- /**
- * Get module manifest.
- *
- * @return array
- */
- final public function getManifest(): array {
+ public function getManifest(): array {
return $this->manifest;
}
- /**
- * Get module id.
- *
- * @return string
- */
- final public function getId(): string {
+ public function getId(): string {
return $this->manifest['id'];
}
- /**
- * Get module namespace.
- *
- * @return string
- */
- final public function getNamespace(): string {
+ public function getName(): string {
+ return $this->manifest['name'];
+ }
+
+ public function getNamespace(): string {
return $this->manifest['namespace'];
}
- /**
- * Get module version.
- *
- * @return string
- */
- final public function getVersion(): string {
+ public function getVersion(): string {
return $this->manifest['version'];
}
- /**
- * Get module actions.
- *
- * @return array
- */
- final public function getActions(): array {
+ public function getType(): string {
+ return $this->manifest['type'];
+ }
+
+ public function getAuthor(): string {
+ return $this->manifest['author'];
+ }
+
+ public function getUrl(): string {
+ return $this->manifest['url'];
+ }
+
+ public function getDescription(): string {
+ return $this->manifest['description'];
+ }
+
+ public function getActions(): array {
return $this->manifest['actions'];
}
- /**
- * Get module configuration.
- *
- * @return array
- */
- final public function getConfig(): array {
+ public function getAssets(): array {
+ return $this->manifest['assets'];
+ }
+
+ public function getConfig(): array {
return $this->manifest['config'];
}
+ public function setConfig(array $config): self {
+ $this->manifest['config'] = $config;
+
+ API::Module()->update([[
+ 'moduleid' => $this->moduleid,
+ 'config' => $config
+ ]]);
+
+ return $this;
+ }
+
/**
* Get module configuration option.
*
- * @param string $name Option name.
- * @param mixed $default Default value.
+ * @param string|null $name Option name.
+ * @param mixed $default Default value.
*
* @return mixed Configuration option (if exists) or the $default value.
*/
- final public function getOption(string $name = null, $default = null) {
+ public function getOption(string $name = null, $default = null) {
return array_key_exists($name, $this->manifest['config']) ? $this->manifest['config'][$name] : $default;
}
+ public function getModuleId(): string {
+ return $this->moduleid;
+ }
+
+ public function getRelativePath(): string {
+ return $this->relative_path;
+ }
+
+ public function getTranslationStrings(): array {
+ return [];
+ }
+
/**
* Event handler, triggered before executing the action.
*
diff --git a/ui/include/classes/core/CModuleManager.php b/ui/include/classes/core/CModuleManager.php
index d54a96b593c..cf3f1229dbb 100644
--- a/ui/include/classes/core/CModuleManager.php
+++ b/ui/include/classes/core/CModuleManager.php
@@ -19,8 +19,12 @@
**/
-use Core\CModule,
- CController as CAction;
+use CController as CAction;
+
+use Zabbix\Core\{
+ CModule,
+ CWidget
+};
/**
* Module manager class for testing and loading user modules.
@@ -28,64 +32,65 @@ use Core\CModule,
final class CModuleManager {
/**
+ * Lowest supported manifest version.
+ */
+ private const MIN_MANIFEST_VERSION = 2;
+
+ /**
* Highest supported manifest version.
*/
- const MAX_MANIFEST_VERSION = 1;
+ private const MAX_MANIFEST_VERSION = 2;
/**
- * Home path of modules.
- *
- * @var string
+ * Root path of modules.
+ */
+ private string $root_path;
+
+ /**
+ * Current action name.
*/
- private $modules_dir;
+ private string $action_name;
/**
* Manifest data of added modules.
- *
- * @var array
*/
- private $manifests = [];
+ private array $manifests = [];
/**
- * List of instantiated, initialized modules.
- *
- * @var array
+ * DB moduleids of added modules.
*/
- private $modules = [];
+ private array $moduleids = [];
/**
- * List of errors caused by module initialization.
- *
- * @var array
+ * List of instantiated, initialized modules.
*/
- private $errors = [];
+ private array $modules = [];
/**
- * @param string $modules_dir Home path of modules.
+ * List of errors caused by module initialization.
*/
- public function __construct(string $modules_dir) {
- $this->modules_dir = $modules_dir;
- }
+ private array $errors = [];
/**
- * Get home path of modules.
- *
- * @return string
+ * @param string $root_path Root path of modules.
*/
- public function getModulesDir(): string {
- return $this->modules_dir;
+ public function __construct(string $root_path) {
+ $this->root_path = $root_path;
}
/**
* Add module and prepare it's manifest data.
*
* @param string $relative_path Relative path to the module.
- * @param string $id Stored module ID to optionally check the manifest module ID against.
+ * @param string|null $moduleid DB module ID.
+ * @param string|null $id Stored module ID to optionally check the manifest module ID against.
* @param array|null $config Override configuration to use instead of one stored in the manifest file.
*
* @return array|null Either manifest data or null if manifest file had errors or IDs didn't match.
*/
- public function addModule(string $relative_path, string $id = null, array $config = null): ?array {
+ public function addModule(string $relative_path, string $moduleid = null, string $id = null,
+ array $config = null): ?array {
+
$manifest = $this->loadManifest($relative_path);
// Ignore module without a valid manifest.
@@ -104,88 +109,12 @@ final class CModuleManager {
}
$this->manifests[$relative_path] = $manifest;
+ $this->moduleids[$relative_path] = $moduleid;
return $manifest;
}
- /**
- * Get namespaces of all added modules.
- *
- * @return array
- */
- public function getNamespaces(): array {
- $namespaces = [];
-
- foreach ($this->manifests as $relative_path => $manifest) {
- $module_path = $this->modules_dir.'/'.$relative_path;
- $namespaces['Modules\\'.$manifest['namespace']] = [$module_path];
- }
-
- return $namespaces;
- }
-
- /**
- * Check added modules for conflicts.
- *
- * @return array Lists of conflicts and conflicting modules.
- */
- public function checkConflicts(): array {
- $ids = [];
- $namespaces = [];
- $actions = [];
-
- foreach ($this->manifests as $relative_path => $manifest) {
- $ids[$manifest['id']][] = $relative_path;
- $namespaces[$manifest['namespace']][] = $relative_path;
- foreach (array_keys($manifest['actions']) as $action_name) {
- $actions[$action_name][] = $relative_path;
- }
- }
-
- foreach (['ids', 'namespaces', 'actions'] as $var) {
- $$var = array_filter($$var, function($list) {
- return count($list) > 1;
- });
- }
-
- $conflicts = [];
- $conflicting_manifests = [];
-
- foreach ($ids as $id => $relative_paths) {
- $conflicts[] = _s('Identical ID (%1$s) is used by modules located at %2$s.', $id,
- implode(', ', $relative_paths)
- );
- $conflicting_manifests = array_merge($conflicting_manifests, $relative_paths);
- }
-
- foreach ($namespaces as $namespace => $relative_paths) {
- $conflicts[] = _s('Identical namespace (%1$s) is used by modules located at %2$s.', $namespace,
- implode(', ', $relative_paths)
- );
- $conflicting_manifests = array_merge($conflicting_manifests, $relative_paths);
- }
-
- $relative_paths = array_unique(array_reduce($actions, function($carry, $item) {
- return array_merge($carry, $item);
- }, []));
-
- if ($relative_paths) {
- $conflicts[] = _s('Identical actions are used by modules located at %1$s.', implode(', ', $relative_paths));
- $conflicting_manifests = array_merge($conflicting_manifests, $relative_paths);
- }
-
- return [
- 'conflicts' => $conflicts,
- 'conflicting_manifests' => array_unique($conflicting_manifests)
- ];
- }
-
- /**
- * Check, instantiate and initialize all added modules.
- *
- * @return array List of initialized modules.
- */
- public function initModules(): array {
+ public function initModules(): void {
[
'conflicts' => $this->errors,
'conflicting_manifests' => $conflicting_manifests
@@ -194,63 +123,66 @@ final class CModuleManager {
$non_conflicting_manifests = array_diff_key($this->manifests, array_flip($conflicting_manifests));
foreach ($non_conflicting_manifests as $relative_path => $manifest) {
- $path = $this->modules_dir.'/'.$relative_path;
+ $base_classname = $manifest['type'] === CModule::TYPE_WIDGET ? CWidget::class : CModule::class;
+ $classname = $manifest['type'] === CModule::TYPE_WIDGET ? 'Widget' : 'Module';
- if (is_file($path.'/Module.php')) {
- $module_class = implode('\\', ['Modules', $manifest['namespace'], 'Module']);
+ $module_class = $base_classname;
+
+ try {
+ if (is_file($this->root_path.'/'.$relative_path.'/'.$classname.'.php')) {
+ $module_class = implode('\\', [$manifest['namespace'], $classname]);
- if (!class_exists($module_class, true)) {
- $this->errors[] = _s('Wrong Module.php class name for module located at %1$s.', $relative_path);
+ if (!class_exists($module_class)) {
+ $this->errors[] = _s('Wrong %1$s.php class name for module located at %2$s.', $classname,
+ $relative_path
+ );
- continue;
+ return;
+ }
}
- }
- else {
- $module_class = CModule::class;
- }
- try {
/** @var CModule $instance */
- $instance = new $module_class($path, $manifest);
+ $instance = new $module_class($manifest, $this->moduleids[$relative_path], $relative_path);
- if ($instance instanceof CModule) {
+ if ($instance instanceof $base_classname) {
$instance->init();
$this->modules[$instance->getId()] = $instance;
}
else {
- $this->errors[] = _s('Module.php class must extend %1$s for module located at %2$s.',
- CModule::class, $relative_path
+ $this->errors[] = _s('%1$s.php class must extend %2$s for module located at %3$s.',
+ $classname, $base_classname, $relative_path
);
}
}
- catch (Exception $e) {
+ catch (Throwable $e) {
$this->errors[] = _s('%1$s - thrown by module located at %2$s.', $e->getMessage(), $relative_path);
}
}
-
- return $this->modules;
}
/**
- * Get add initialized modules.
- *
- * @return array
+ * Get initialized modules.
*/
public function getModules(): array {
return $this->modules;
}
+ public function setActionName(string $action_name): self {
+ $this->action_name = $action_name;
+
+ return $this;
+ }
+
/**
- * Get loaded module instance associated with given action name.
- *
- * @param string $action_name
+ * Get loaded module instance associated with action.
*
* @return CModule|null
*/
- public function getModuleByActionName(string $action_name): ?CModule {
+ public function getActionModule(): ?CModule {
+ /** @var CModule $module */
foreach ($this->modules as $module) {
- if (array_key_exists($action_name, $module->getActions())) {
+ if (array_key_exists($this->action_name, $module->getActions())) {
return $module;
}
}
@@ -259,17 +191,69 @@ final class CModuleManager {
}
/**
+ * Get initialized widget modules.
+ */
+ public function getWidgets(bool $for_template_dashboard_only = false): array {
+ $widgets = [];
+
+ /** @var CWidget $widget */
+ foreach ($this->modules as $widget) {
+ if (!($widget instanceof CWidget) || ($for_template_dashboard_only && !$widget->hasTemplateSupport())) {
+ continue;
+ }
+ $widgets[$widget->getId()] = $widget;
+ }
+
+ return $widgets;
+ }
+
+ public function getWidgetsDefaults(bool $for_template_dashboard_only = false): array {
+ $widget_defaults = [];
+
+ /** @var CWidget $widget */
+ foreach (APP::ModuleManager()->getWidgets($for_template_dashboard_only) as $widget) {
+ $widget_defaults[$widget->getId()] = $widget->getDefaults();
+ }
+
+ return $widget_defaults;
+ }
+
+ public function getModule($module_id): ?CModule {
+ if (!array_key_exists($module_id, $this->modules)) {
+ return null;
+ }
+
+ return $this->modules[$module_id];
+ }
+
+ public function getManifests(): array {
+ return $this->manifests;
+ }
+
+ /**
+ * Get namespaces of all added modules.
+ */
+ public function getNamespaces(): array {
+ $namespaces = [];
+
+ foreach ($this->manifests as $relative_path => $manifest) {
+ $namespaces[$manifest['namespace']] = [$this->root_path.'/'.$relative_path];
+ }
+
+ return $namespaces;
+ }
+
+ /**
* Get actions of all initialized modules.
- *
- * @return array
*/
public function getActions(): array {
$actions = [];
+ /** @var CModule $module */
foreach ($this->modules as $module) {
foreach ($module->getActions() as $name => $data) {
$actions[$name] = [
- 'class' => implode('\\', ['Modules', $module->getNamespace(), 'Actions',
+ 'class' => implode('\\', [$module->getNamespace(), 'Actions',
str_replace('/', '\\', $data['class'])
]),
'layout' => array_key_exists('layout', $data) ? $data['layout'] : 'layout.htmlpage',
@@ -281,6 +265,86 @@ final class CModuleManager {
return $actions;
}
+ public function getAssets(): array {
+ $assets = [];
+
+ /** @var CModule $module */
+ foreach ($this->modules as $module) {
+ if ($module->getType() === CModule::TYPE_WIDGET && !CRouter::isDashboardAction($this->action_name)) {
+ continue;
+ }
+
+ $assets[$module->getId()] = $module->getAssets();
+ }
+
+ return $assets;
+ }
+
+ /**
+ * Get errors encountered while module initialization.
+ */
+ public function getErrors(): array {
+ return $this->errors;
+ }
+
+ /**
+ * Check added modules for conflicts.
+ *
+ * @return array Lists of conflicts and conflicting modules.
+ */
+ public function checkConflicts(): array {
+ $ids = [];
+ $namespaces = [];
+ $actions = [];
+
+ foreach ($this->manifests as $relative_path => $manifest) {
+ $ids[$manifest['id']][] = $relative_path;
+ $namespaces[$manifest['namespace']][] = $relative_path;
+ foreach (array_keys($manifest['actions']) as $action_name) {
+ $actions[$action_name][] = $relative_path;
+ }
+ }
+
+ foreach (['ids', 'namespaces', 'actions'] as $var) {
+ $$var = array_filter($$var, static function($list) {
+ return count($list) > 1;
+ });
+ }
+
+ $conflicts = [];
+ $conflicting_manifests = [];
+
+ foreach ($ids as $id => $relative_paths) {
+ $conflicts[] = _s('Identical ID (%1$s) is used by modules located at %2$s.', $id,
+ implode(', ', $relative_paths)
+ );
+ $conflicting_manifests = array_merge($conflicting_manifests, $relative_paths);
+ }
+
+ foreach ($namespaces as $namespace => $relative_paths) {
+ $conflicts[] = _s('Identical namespace (%1$s) is used by modules located at %2$s.', $namespace,
+ implode(', ', $relative_paths)
+ );
+ $conflicting_manifests = array_merge($conflicting_manifests, $relative_paths);
+ }
+
+ $relative_paths = array_unique(array_reduce($actions, static function($carry, $item) {
+ return array_merge($carry, $item);
+ }, []));
+
+ if ($relative_paths) {
+ $conflicts[] = _s('Identical actions are used by modules located at %1$s.', implode(', ', $relative_paths));
+ $conflicting_manifests = array_merge($conflicting_manifests, $relative_paths);
+ }
+
+ $this->errors = $conflicts;
+
+ return [
+ 'conflicts' => $conflicts,
+ 'conflicting_manifests' => array_unique($conflicting_manifests)
+ ];
+ }
+
/**
* Publish an event to all loaded modules. The module of the responsible action will be served last.
*
@@ -288,7 +352,7 @@ final class CModuleManager {
* @param string $event Event to publish.
*/
public function publishEvent(CAction $action, string $event): void {
- $action_module = $this->getModuleByActionName($action->getAction());
+ $action_module = $this->getActionModule();
foreach ($this->modules as $module) {
if ($module != $action_module) {
@@ -302,15 +366,6 @@ final class CModuleManager {
}
/**
- * Get errors encountered while module initialization.
- *
- * @return array
- */
- public function getErrors(): array {
- return $this->errors;
- }
-
- /**
* Load and parse module manifest file.
*
* @param string $relative_path Relative path to the module.
@@ -318,8 +373,13 @@ final class CModuleManager {
* @return array|null Either manifest data or null if manifest file had errors.
*/
private function loadManifest(string $relative_path): ?array {
- $module_path = $this->modules_dir.'/'.$relative_path;
- $manifest_file_name = $module_path.'/manifest.json';
+ $relative_path_parts = explode('/', $relative_path, 2);
+
+ if (count($relative_path_parts) != 2) {
+ return null;
+ }
+
+ $manifest_file_name = $this->root_path.'/'.$relative_path.'/manifest.json';
if (!is_file($manifest_file_name) || !is_readable($manifest_file_name)) {
return null;
@@ -343,24 +403,60 @@ final class CModuleManager {
}
// Check manifest version.
- if (!is_numeric($manifest['manifest_version']) || $manifest['manifest_version'] > self::MAX_MANIFEST_VERSION) {
+ if (!is_numeric($manifest['manifest_version']) || $manifest['manifest_version'] < self::MIN_MANIFEST_VERSION
+ || $manifest['manifest_version'] > self::MAX_MANIFEST_VERSION) {
+ return null;
+ }
+
+ if (trim($manifest['id']) === '' || trim($manifest['name']) === '') {
return null;
}
// Check manifest namespace syntax.
- if (!preg_match('/^[a-z_]+$/i', $manifest['namespace'])) {
+ if (!preg_match('/^[0-9a-z_]+$/i', $manifest['namespace'])) {
+ return null;
+ }
+
+ $manifest['namespace'] = ucfirst($relative_path_parts[0]).'\\'.$manifest['namespace'];
+
+ // Check module type.
+ if (array_key_exists('type', $manifest)
+ && !in_array($manifest['type'], [CModule::TYPE_MODULE, CModule::TYPE_WIDGET], true)) {
return null;
}
// Ensure empty defaults.
$manifest += [
+ 'type' => CModule::TYPE_MODULE,
'author' => '',
'url' => '',
'description' => '',
'actions' => [],
+ 'assets' => [],
'config' => []
];
+ $manifest['assets'] += [
+ 'css' => [],
+ 'js' => []
+ ];
+
+ if ($manifest['type'] === CModule::TYPE_WIDGET) {
+ if (!array_key_exists('widget', $manifest)) {
+ $manifest['widget'] = [];
+ }
+
+ $manifest['widget'] += [
+ 'name' => '',
+ 'form_class' => CWidget::DEFAULT_FORM_CLASS,
+ 'js_class' => CWidget::DEFAULT_JS_CLASS,
+ 'size' => CWidget::DEFAULT_SIZE,
+ 'refresh_rate' => CWidget::DEFAULT_REFRESH_RATE,
+ 'template_support' => false,
+ 'use_time_selector' => false
+ ];
+ }
+
return $manifest;
}
}
diff --git a/ui/include/classes/core/CWidget.php b/ui/include/classes/core/CWidget.php
new file mode 100644
index 00000000000..f0e2b136680
--- /dev/null
+++ b/ui/include/classes/core/CWidget.php
@@ -0,0 +1,165 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Zabbix\Core;
+
+use CControllerDashboardWidgetEdit,
+ CControllerDashboardWidgetView;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\CWidgetFieldSelect;
+
+/**
+ * Base class for user widgets. If Widget.php is not provided by user widget, this class will be instantiated instead.
+ */
+class CWidget extends CModule {
+
+ public const DEFAULT_FORM_CLASS = 'WidgetForm';
+ public const DEFAULT_JS_CLASS = 'CWidget';
+ public const DEFAULT_SIZE = ['width' => 12, 'height' => 5];
+ public const DEFAULT_REFRESH_RATE = 60;
+
+ // Dashboard widget dynamic state.
+ public const SIMPLE_ITEM = 0;
+ public const DYNAMIC_ITEM = 1;
+
+ final public function getForm(array $values, ?string $templateid): CWidgetForm {
+ $form_class = implode('\\', [$this->getNamespace(), 'Includes', $this->manifest['widget']['form_class']]);
+
+ if (!class_exists($form_class)) {
+ $form_class = CWidgetForm::class;
+ }
+
+ $form = new $form_class($values, $templateid);
+
+ if ($templateid === null) {
+ $refresh_rates = self::getRefreshRates();
+
+ $form->addField(
+ (new CWidgetFieldSelect('rf_rate', _('Refresh interval'),
+ [
+ -1 => _('Default').' ('.$refresh_rates[$this->getDefaultRefreshRate()].')'
+ ] + $refresh_rates
+ ))->setDefault(-1)
+ );
+ }
+
+ return $form
+ ->addFields()
+ ->setFieldsValues();
+ }
+
+ final public function getActions(): array {
+ $actions = parent::getActions() + [
+ 'widget.'.$this->getId().'.view' => [],
+ 'widget.'.$this->getId().'.edit' => []
+ ];
+
+ $actions['widget.'.$this->getId().'.view'] += [
+ 'class' => CControllerDashboardWidgetView::class,
+ 'view' => 'widget.view',
+ 'layout' => 'layout.widget'
+ ];
+
+ $actions['widget.'.$this->getId().'.edit'] += [
+ 'class' => CControllerDashboardWidgetEdit::class,
+ 'view' => 'widget.edit',
+ 'layout' => 'layout.json'
+ ];
+
+ return $actions;
+ }
+
+ public function getDefaults(): array {
+ return [
+ 'name' => $this->getDefaultName(),
+ 'size' => $this->getDefaultSize(),
+ 'js_class' => $this->getJSClass()
+ ];
+ }
+
+ public function isDeprecated(): bool {
+ return false;
+ }
+
+ public function getDefaultName(): string {
+ return $this->manifest['widget']['name'] !== ''
+ ? $this->manifest['widget']['name']
+ : $this->getName();
+ }
+
+ public function getDefaultSize(): array {
+ $size = $this->manifest['widget']['size'];
+
+ if (!array_key_exists('width', $size) || !array_key_exists('height', $size)) {
+ return self::DEFAULT_SIZE;
+ }
+
+ if ($size['width'] < 1) {
+ $size['width'] = 1;
+ }
+
+ if ($size['width'] > DASHBOARD_MAX_COLUMNS) {
+ $size['width'] = DASHBOARD_MAX_COLUMNS;
+ }
+
+ if ($size['height'] < DASHBOARD_WIDGET_MIN_ROWS) {
+ $size['height'] = DASHBOARD_WIDGET_MIN_ROWS;
+ }
+
+ if ($size['height'] > DASHBOARD_WIDGET_MAX_ROWS) {
+ $size['height'] = DASHBOARD_WIDGET_MAX_ROWS;
+ }
+
+ return $size;
+ }
+
+ public function getJSClass(): string {
+ return $this->manifest['widget']['js_class'];
+ }
+
+ public function getDefaultRefreshRate(): int {
+ return array_key_exists($this->manifest['widget']['refresh_rate'], self::getRefreshRates())
+ ? (int) $this->manifest['widget']['refresh_rate']
+ : self::DEFAULT_REFRESH_RATE;
+ }
+
+ public function hasTemplateSupport(): bool {
+ return (bool) $this->manifest['widget']['template_support'];
+ }
+
+ public function usesTimeSelector(array $fields_values): bool {
+ return (bool) $this->manifest['widget']['use_time_selector'];
+ }
+
+ private static function getRefreshRates(): array {
+ return [
+ 0 => _('No refresh'),
+ 10 => _n('%1$s second', '%1$s seconds', 10),
+ 30 => _n('%1$s second', '%1$s seconds', 30),
+ 60 => _n('%1$s minute', '%1$s minutes', 1),
+ 120 => _n('%1$s minute', '%1$s minutes', 2),
+ 600 => _n('%1$s minute', '%1$s minutes', 10),
+ 900 => _n('%1$s minute', '%1$s minutes', 15)
+ ];
+ }
+}
diff --git a/ui/include/classes/core/ZBase.php b/ui/include/classes/core/ZBase.php
index 9c8ea589fb6..697c6b28500 100644
--- a/ui/include/classes/core/ZBase.php
+++ b/ui/include/classes/core/ZBase.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,8 +19,9 @@
**/
-use Core\CModule,
- CController as CAction;
+use Zabbix\Core\CModule;
+
+use CController as CAction;
require_once dirname(__FILE__).'/CAutoloader.php';
@@ -42,7 +43,7 @@ class ZBase {
*
* @var string
*/
- protected $rootDir;
+ protected $root_dir;
/**
* @var array of config data from zabbix config file
@@ -71,10 +72,9 @@ class ZBase {
*/
private $mode;
- /**
- * @var CModuleManager
- */
- private $module_manager;
+ private CModuleManager $module_manager;
+
+ private ?CView $view = null;
/**
* Returns the current instance of APP.
@@ -83,7 +83,7 @@ class ZBase {
*
* @return APP
*/
- public static function getInstance() {
+ public static function getInstance(): APP {
if (self::$instance === null) {
self::$instance = new static;
}
@@ -96,7 +96,7 @@ class ZBase {
*
* @return CComponentRegistry
*/
- public static function Component() {
+ public static function Component(): CComponentRegistry {
return self::getInstance()->component_registry;
}
@@ -105,15 +105,22 @@ class ZBase {
*
* @return CModuleManager
*/
- public static function ModuleManager() {
+ public static function ModuleManager(): CModuleManager {
return self::getInstance()->module_manager;
}
/**
+ * @return CView|null
+ */
+ public static function View(): ?CView {
+ return self::getInstance()->view;
+ }
+
+ /**
* Init modules required to run frontend.
*/
protected function init() {
- $this->rootDir = $this->findRootDir();
+ $this->root_dir = $this->findRootDir();
$this->initAutoloader();
$this->component_registry = new CComponentRegistry;
@@ -134,7 +141,6 @@ class ZBase {
require_once 'include/func.inc.php';
require_once 'include/html.inc.php';
require_once 'include/perm.inc.php';
- require_once 'include/audit.inc.php';
require_once 'include/js.inc.php';
require_once 'include/users.inc.php';
require_once 'include/validate.inc.php';
@@ -196,6 +202,7 @@ class ZBase {
$this->initComponents();
$this->initModuleManager();
+ /** @var CRouter $router */
$router = $this->component_registry->get('router');
$router->addActions($this->module_manager->getActions());
$router->setAction($action_name);
@@ -269,11 +276,9 @@ class ZBase {
/**
* Returns the absolute path to the root dir.
- *
- * @return string
*/
- public static function getRootDir() {
- return self::getInstance()->rootDir;
+ public static function getRootDir(): string {
+ return self::getInstance()->root_dir;
}
/**
@@ -292,67 +297,64 @@ class ZBase {
*/
private function getIncludePaths() {
return [
- $this->rootDir.'/include/classes/api',
- $this->rootDir.'/include/classes/api/services',
- $this->rootDir.'/include/classes/api/helpers',
- $this->rootDir.'/include/classes/api/managers',
- $this->rootDir.'/include/classes/api/clients',
- $this->rootDir.'/include/classes/api/wrappers',
- $this->rootDir.'/include/classes/core',
- $this->rootDir.'/include/classes/data',
- $this->rootDir.'/include/classes/mvc',
- $this->rootDir.'/include/classes/db',
- $this->rootDir.'/include/classes/debug',
- $this->rootDir.'/include/classes/validators',
- $this->rootDir.'/include/classes/validators/schema',
- $this->rootDir.'/include/classes/validators/string',
- $this->rootDir.'/include/classes/validators/object',
- $this->rootDir.'/include/classes/validators/hostgroup',
- $this->rootDir.'/include/classes/validators/host',
- $this->rootDir.'/include/classes/validators/hostprototype',
- $this->rootDir.'/include/classes/validators/event',
- $this->rootDir.'/include/classes/export',
- $this->rootDir.'/include/classes/export/writers',
- $this->rootDir.'/include/classes/export/elements',
- $this->rootDir.'/include/classes/graph',
- $this->rootDir.'/include/classes/graphdraw',
- $this->rootDir.'/include/classes/import',
- $this->rootDir.'/include/classes/import/converters',
- $this->rootDir.'/include/classes/import/importers',
- $this->rootDir.'/include/classes/import/preprocessors',
- $this->rootDir.'/include/classes/import/readers',
- $this->rootDir.'/include/classes/import/validators',
- $this->rootDir.'/include/classes/items',
- $this->rootDir.'/include/classes/triggers',
- $this->rootDir.'/include/classes/server',
- $this->rootDir.'/include/classes/screens',
- $this->rootDir.'/include/classes/services',
- $this->rootDir.'/include/classes/sysmaps',
- $this->rootDir.'/include/classes/helpers',
- $this->rootDir.'/include/classes/helpers/trigger',
- $this->rootDir.'/include/classes/macros',
- $this->rootDir.'/include/classes/html',
- $this->rootDir.'/include/classes/html/pageheader',
- $this->rootDir.'/include/classes/html/svg',
- $this->rootDir.'/include/classes/html/widget',
- $this->rootDir.'/include/classes/html/interfaces',
- $this->rootDir.'/include/classes/parsers',
- $this->rootDir.'/include/classes/parsers/results',
- $this->rootDir.'/include/classes/controllers',
- $this->rootDir.'/include/classes/routing',
- $this->rootDir.'/include/classes/json',
- $this->rootDir.'/include/classes/user',
- $this->rootDir.'/include/classes/setup',
- $this->rootDir.'/include/classes/regexp',
- $this->rootDir.'/include/classes/ldap',
- $this->rootDir.'/include/classes/pagefilter',
- $this->rootDir.'/include/classes/widgets/fields',
- $this->rootDir.'/include/classes/widgets/forms',
- $this->rootDir.'/include/classes/widgets',
- $this->rootDir.'/include/classes/xml',
- $this->rootDir.'/include/classes/vaults',
- $this->rootDir.'/local/app/controllers',
- $this->rootDir.'/app/controllers'
+ $this->root_dir.'/include/classes/api',
+ $this->root_dir.'/include/classes/api/services',
+ $this->root_dir.'/include/classes/api/helpers',
+ $this->root_dir.'/include/classes/api/item_types',
+ $this->root_dir.'/include/classes/api/managers',
+ $this->root_dir.'/include/classes/api/clients',
+ $this->root_dir.'/include/classes/api/wrappers',
+ $this->root_dir.'/include/classes/core',
+ $this->root_dir.'/include/classes/data',
+ $this->root_dir.'/include/classes/mvc',
+ $this->root_dir.'/include/classes/db',
+ $this->root_dir.'/include/classes/debug',
+ $this->root_dir.'/include/classes/validators',
+ $this->root_dir.'/include/classes/validators/schema',
+ $this->root_dir.'/include/classes/validators/string',
+ $this->root_dir.'/include/classes/validators/object',
+ $this->root_dir.'/include/classes/validators/hostgroup',
+ $this->root_dir.'/include/classes/validators/host',
+ $this->root_dir.'/include/classes/validators/hostprototype',
+ $this->root_dir.'/include/classes/validators/event',
+ $this->root_dir.'/include/classes/export',
+ $this->root_dir.'/include/classes/export/writers',
+ $this->root_dir.'/include/classes/export/elements',
+ $this->root_dir.'/include/classes/graph',
+ $this->root_dir.'/include/classes/graphdraw',
+ $this->root_dir.'/include/classes/import',
+ $this->root_dir.'/include/classes/import/converters',
+ $this->root_dir.'/include/classes/import/importers',
+ $this->root_dir.'/include/classes/import/preprocessors',
+ $this->root_dir.'/include/classes/import/readers',
+ $this->root_dir.'/include/classes/import/validators',
+ $this->root_dir.'/include/classes/items',
+ $this->root_dir.'/include/classes/triggers',
+ $this->root_dir.'/include/classes/server',
+ $this->root_dir.'/include/classes/screens',
+ $this->root_dir.'/include/classes/services',
+ $this->root_dir.'/include/classes/sysmaps',
+ $this->root_dir.'/include/classes/helpers',
+ $this->root_dir.'/include/classes/helpers/trigger',
+ $this->root_dir.'/include/classes/macros',
+ $this->root_dir.'/include/classes/html',
+ $this->root_dir.'/include/classes/html/svg',
+ $this->root_dir.'/include/classes/html/widgets',
+ $this->root_dir.'/include/classes/html/interfaces',
+ $this->root_dir.'/include/classes/parsers',
+ $this->root_dir.'/include/classes/parsers/results',
+ $this->root_dir.'/include/classes/controllers',
+ $this->root_dir.'/include/classes/routing',
+ $this->root_dir.'/include/classes/json',
+ $this->root_dir.'/include/classes/user',
+ $this->root_dir.'/include/classes/setup',
+ $this->root_dir.'/include/classes/regexp',
+ $this->root_dir.'/include/classes/ldap',
+ $this->root_dir.'/include/classes/pagefilter',
+ $this->root_dir.'/include/classes/xml',
+ $this->root_dir.'/include/classes/vaults',
+ $this->root_dir.'/local/app/controllers',
+ $this->root_dir.'/app/controllers'
];
}
@@ -389,7 +391,7 @@ class ZBase {
* Load zabbix config file.
*/
protected function loadConfigFile(): void {
- $configFile = $this->getRootDir().CConfigFile::CONFIG_FILE_PATH;
+ $configFile = $this->root_dir.CConfigFile::CONFIG_FILE_PATH;
$config = new CConfigFile($configFile);
@@ -401,10 +403,11 @@ class ZBase {
*/
protected function initAutoloader() {
// Register base directory path for 'include' and 'require' functions.
- set_include_path(get_include_path().PATH_SEPARATOR.$this->rootDir);
+ set_include_path(get_include_path().PATH_SEPARATOR.$this->root_dir);
$autoloader = new CAutoloader;
$autoloader->addNamespace('', $this->getIncludePaths());
- $autoloader->addNamespace('Core', [$this->rootDir.'/include/classes/core']);
+ $autoloader->addNamespace('Zabbix\\Core', [$this->root_dir.'/include/classes/core']);
+ $autoloader->addNamespace('Zabbix\\Widgets', [$this->root_dir.'/include/classes/widgets']);
$autoloader->register();
$this->autoloader = $autoloader;
}
@@ -490,7 +493,7 @@ class ZBase {
error($error);
}
- require_once $this->getRootDir().'/include/translateDefines.inc.php';
+ require_once $this->root_dir.'/include/translateDefines.inc.php';
}
/**
@@ -559,11 +562,24 @@ class ZBase {
try {
if ($action_class === null) {
- throw new Exception(_('Class not found.'));
+ throw new Exception(_('Page not found'));
}
if (!class_exists($action_class)) {
- throw new Exception(_s('Class %1$s not found for action %2$s.', $action_class, $action_name));
+ $namespace_parts = explode('\\', $action_class);
+
+ if (count($namespace_parts) > 1) {
+ $action_class_fallback = end($namespace_parts);
+
+ if (!class_exists($action_class_fallback)) {
+ throw new Exception(_s('Class %1$s not found for action %2$s.', $action_class, $action_name));
+ }
+
+ $action_class = $action_class_fallback;
+ }
+ else {
+ throw new Exception(_s('Class %1$s not found for action %2$s.', $action_class, $action_name));
+ }
}
$action = new $action_class();
@@ -573,19 +589,25 @@ class ZBase {
}
$action->setAction($action_name);
+ $this->module_manager->setActionName($action_name);
$modules = $this->module_manager->getModules();
- $action_module = $this->module_manager->getModuleByActionName($action_name);
+ $action_module = $this->module_manager->getActionModule();
- if ($action_module) {
+ if ($action_module !== null) {
$modules = array_replace([$action_module->getId() => $action_module], $modules);
+
+ if ($action_module->getType() === CModule::TYPE_WIDGET) {
+ CView::registerDirectory($this->root_dir.'/'.$action_module->getRelativePath().'/views');
+ CPartial::registerDirectory($this->root_dir.'/'.$action_module->getRelativePath().'/partials');
+ }
}
foreach (array_reverse($modules) as $module) {
- if (is_subclass_of($module, CModule::class)) {
- CView::registerDirectory($module->getDir().'/views');
- CPartial::registerDirectory($module->getDir().'/partials');
+ if ($module->getType() === CModule::TYPE_MODULE) {
+ CView::registerDirectory($this->root_dir.'/'.$module->getRelativePath().'/views');
+ CPartial::registerDirectory($this->root_dir.'/'.$module->getRelativePath().'/partials');
}
}
@@ -605,29 +627,7 @@ class ZBase {
$this->denyPageAccess($router);
}
catch (Exception $e) {
- switch ($router->getLayout()) {
- case 'layout.json':
- case 'layout.widget':
- echo (new CView('layout.json', [
- 'main_block' => json_encode([
- 'error' => [
- 'title' => $e->getMessage()
- ]
- ])
- ]))->getOutput();
-
- break;
-
- default:
- echo (new CView('general.warning', [
- 'header' => $e->getMessage(),
- 'messages' => [],
- 'theme' => getUserTheme(CWebUser::$data)
- ]))->getOutput();
- }
-
- session_write_close();
- exit();
+ self::terminateWithError($router, $e->getMessage());
}
}
@@ -687,17 +687,23 @@ class ZBase {
];
if ($router->getView() !== null && $response->isViewEnabled()) {
- $view = new CView($router->getView(), $response->getData());
+ $this->view = new CView($router->getView(), $response->getData());
+
+ $module = $this->module_manager->getActionModule();
+
+ if ($module !== null) {
+ $this->view->setAssetsPath($module->getRelativePath().'/assets');
+ }
$layout_data = array_replace($layout_data_defaults, [
- 'main_block' => $view->getOutput(),
+ 'main_block' => $this->view->getOutput(),
'javascript' => [
- 'files' => $view->getJsFiles()
+ 'files' => $this->view->getJsFiles()
],
'stylesheet' => [
- 'files' => $view->getCssFiles()
+ 'files' => $this->view->getCssFiles()
],
- 'web_layout_mode' => $view->getLayoutMode()
+ 'web_layout_mode' => $this->view->getLayoutMode()
]);
}
else {
@@ -782,6 +788,52 @@ class ZBase {
exit();
}
+ private static function terminateWithError(CRouter $router, string $error): void {
+ switch ($router->getLayout()) {
+ case 'layout.json':
+ case 'layout.widget':
+ $layout = 'layout.json';
+ break;
+
+ case null:
+ if ((array_key_exists('CONTENT_TYPE', $_SERVER) && $_SERVER['CONTENT_TYPE'] === 'application/json')
+ || (array_key_exists('HTTP_X_REQUESTED_WITH', $_SERVER)
+ && strcasecmp($_SERVER['HTTP_X_REQUESTED_WITH'], 'XMLHttpRequest') == 0)) {
+ $layout = 'layout.json';
+ }
+ else {
+ $layout = 'general.warning';
+ }
+ break;
+
+ default:
+ $layout = 'general.warning';
+ }
+
+ switch ($layout) {
+ case 'layout.json':
+ echo (new CView('layout.json', [
+ 'main_block' => json_encode([
+ 'error' => [
+ 'title' => $error
+ ]
+ ])
+ ]))->getOutput();
+
+ break;
+
+ default:
+ echo (new CView('general.warning', [
+ 'header' => $error,
+ 'messages' => [],
+ 'theme' => getUserTheme(CWebUser::$data)
+ ]))->getOutput();
+ }
+
+ session_write_close();
+ exit();
+ }
+
/**
* Set layout mode using URL parameters.
*/
@@ -797,7 +849,7 @@ class ZBase {
/**
* Initialize menu for main navigation. Register instance as component with 'menu.main' key.
*/
- private function initComponents() {
+ private function initComponents(): void {
$this->component_registry->register('router', new CRouter());
$this->component_registry->register('menu.main', CMenuHelper::getMainMenu());
$this->component_registry->register('menu.user', CMenuHelper::getUserMenu());
@@ -806,8 +858,8 @@ class ZBase {
/**
* Initialize module manager and load all enabled and allowed modules according to user role settings.
*/
- private function initModuleManager() {
- $this->module_manager = new CModuleManager($this->rootDir.'/modules');
+ private function initModuleManager(): void {
+ $this->module_manager = new CModuleManager($this->root_dir);
$db_modules = API::getApiService('module')->get([
'output' => ['moduleid', 'id', 'relative_path', 'config'],
@@ -822,8 +874,8 @@ class ZBase {
continue;
}
- $manifest = $this->module_manager->addModule($db_module['relative_path'], $db_module['id'],
- $db_module['config']
+ $manifest = $this->module_manager->addModule($db_module['relative_path'], $db_module['moduleid'],
+ $db_module['id'], $db_module['config']
);
if (!$manifest) {
diff --git a/ui/include/classes/helpers/CDashboardHelper.php b/ui/include/classes/helpers/CDashboardHelper.php
index 59969e79e51..9dcff28757c 100644
--- a/ui/include/classes/helpers/CDashboardHelper.php
+++ b/ui/include/classes/helpers/CDashboardHelper.php
@@ -19,26 +19,23 @@
**/
+use Zabbix\Core\{
+ CModule,
+ CWidget
+};
+
class CDashboardHelper {
/**
* Get dashboard owner name.
- *
- * @static
- *
- * @param string $userid
- *
- * @return string
*/
- public static function getOwnerName($userid): string {
+ public static function getOwnerName(string $userid): string {
$users = API::User()->get([
'output' => ['name', 'surname', 'username'],
'userids' => $userid
]);
- $name = $users ? getUserFullname($users[0]) : _('Inaccessible user');
-
- return $name;
+ return $users ? getUserFullname($users[0]) : _('Inaccessible user');
}
/**
@@ -64,14 +61,6 @@ class CDashboardHelper {
/**
* Prepare widget pages for dashboard grid.
- *
- * @static
- *
- * @param array $pages
- * @param string $templateid
- * @param bool $with_rf_rate
- *
- * @return array
*/
public static function preparePagesForGrid(array $pages, ?string $templateid, bool $with_rf_rate): array {
if (!$pages) {
@@ -80,63 +69,58 @@ class CDashboardHelper {
$grid_pages = [];
- $context = ($templateid === null)
- ? CWidgetConfig::CONTEXT_DASHBOARD
- : CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD;
-
- $known_widget_types = array_keys(CWidgetConfig::getKnownWidgetTypes($context));
-
foreach ($pages as $page) {
$grid_page_widgets = [];
CArrayHelper::sort($page['widgets'], ['y', 'x']);
- foreach ($page['widgets'] as $widget) {
- if (!in_array($widget['type'], $known_widget_types)) {
- continue;
- }
-
- $widgetid = $widget['widgetid'];
- $fields_orig = self::convertWidgetFields($widget['fields']);
-
- // Transforms corrupted data to default values.
- $widget_form = CWidgetConfig::getForm($widget['type'], json_encode($fields_orig), $templateid);
- $widget_form->validate();
- $fields = $widget_form->getFieldsData();
-
- if ($with_rf_rate) {
- $rf_rate = (int) CProfile::get('web.dashboard.widget.rf_rate', -1, $widgetid);
+ foreach ($page['widgets'] as $widget_data) {
+ $grid_page_widget = [
+ 'widgetid' => $widget_data['widgetid'],
+ 'type' => $widget_data['type'],
+ 'name' => $widget_data['name'],
+ 'view_mode' => $widget_data['view_mode'],
+ 'pos' => [
+ 'x' => (int) $widget_data['x'],
+ 'y' => (int) $widget_data['y'],
+ 'width' => (int) $widget_data['width'],
+ 'height' => (int) $widget_data['height']
+ ],
+ 'rf_rate' => 0,
+ 'fields' => []
+ ];
- if ($rf_rate == -1) {
- if ($context === CWidgetConfig::CONTEXT_DASHBOARD) {
- $rf_rate = ($fields['rf_rate'] == -1)
- ? CWidgetConfig::getDefaultRfRate($widget['type'])
- : $fields['rf_rate'];
- }
- else {
- $rf_rate = CWidgetConfig::getDefaultRfRate($widget['type']);
+ /** @var CWidget $widget */
+ $widget = APP::ModuleManager()->getModule($widget_data['type']);
+
+ if ($widget !== null && $widget->getType() === CModule::TYPE_WIDGET
+ && ($templateid === null || $widget->hasTemplateSupport())) {
+ $grid_page_widget['fields'] = self::convertWidgetFields($widget_data['fields']);
+
+ if ($with_rf_rate) {
+ $rf_rate = (int) CProfile::get('web.dashboard.widget.rf_rate', -1, $widget_data['widgetid']);
+
+ if ($rf_rate == -1) {
+ if ($templateid === null) {
+ // Transforms corrupted data to default values.
+ $widget_form = $widget->getForm($grid_page_widget['fields'], $templateid);
+ $widget_form->validate();
+ $values = $widget_form->getFieldsValues();
+
+ $rf_rate = $values['rf_rate'] == -1
+ ? $widget->getDefaultRefreshRate()
+ : $values['rf_rate'];
+ }
+ else {
+ $rf_rate = $widget->getDefaultRefreshRate();
+ }
}
+
+ $grid_page_widget['rf_rate'] = $rf_rate;
}
}
- else {
- $rf_rate = 0;
- }
- $grid_page_widgets[] = [
- 'widgetid' => $widgetid,
- 'type' => $widget['type'],
- 'name' => $widget['name'],
- 'view_mode' => $widget['view_mode'],
- 'pos' => [
- 'x' => (int) $widget['x'],
- 'y' => (int) $widget['y'],
- 'width' => (int) $widget['width'],
- 'height' => (int) $widget['height']
- ],
- 'rf_rate' => $rf_rate,
- 'fields' => $fields_orig,
- 'configuration' => CWidgetConfig::getConfiguration($widget['type'], $fields, $widget['view_mode'])
- ];
+ $grid_page_widgets[] = $grid_page_widget;
}
$grid_pages[] = [
@@ -358,8 +342,11 @@ class CDashboardHelper {
*/
public static function hasTimeSelector(array $pages): bool {
foreach ($pages as $page) {
- foreach ($page['widgets'] as $widget) {
- if (CWidgetConfig::usesTimeSelector($widget['type'], $widget['fields'])) {
+ foreach ($page['widgets'] as $widget_data) {
+ $widget = App::ModuleManager()->getModule($widget_data['type']);
+
+ if ($widget !== null && $widget->getType() === CModule::TYPE_WIDGET
+ && $widget->usesTimeSelector($widget_data['fields'])) {
return true;
}
}
@@ -411,10 +398,10 @@ class CDashboardHelper {
$dashboard_page['widgets'] = [];
}
- foreach ($dashboard_page['widgets'] as $widget_index => &$widget) {
+ foreach ($dashboard_page['widgets'] as $widget_index => &$widget_data) {
$widget_errors = [];
- if (!array_key_exists('pos', $widget)) {
+ if (!array_key_exists('pos', $widget_data)) {
$widget_errors[] = _s('Invalid parameter "%1$s": %2$s.',
'pages['.$dashboard_page_index.'][widgets]['.$widget_index.']',
_s('the parameter "%1$s" is missing', 'pos')
@@ -422,7 +409,7 @@ class CDashboardHelper {
}
else {
foreach (['x', 'y', 'width', 'height'] as $field) {
- if (!is_array($widget['pos']) || !array_key_exists($field, $widget['pos'])) {
+ if (!is_array($widget_data['pos']) || !array_key_exists($field, $widget_data['pos'])) {
$widget_errors[] = _s('Invalid parameter "%1$s": %2$s.',
'pages['.$dashboard_page_index.'][widgets]['.$widget_index.'][pos]',
_s('the parameter "%1$s" is missing', $field)
@@ -432,7 +419,7 @@ class CDashboardHelper {
}
foreach (['type', 'name', 'view_mode'] as $field) {
- if (!array_key_exists($field, $widget)) {
+ if (!array_key_exists($field, $widget_data)) {
$widget_errors[] = _s('Invalid parameter "%1$s": %2$s.',
'pages['.$dashboard_page_index.'][widgets]['.$widget_index.']',
_s('the parameter "%1$s" is missing', $field)
@@ -446,28 +433,45 @@ class CDashboardHelper {
break 2;
}
- $widget_fields = array_key_exists('fields', $widget) ? $widget['fields'] : '{}';
- $widget['form'] = CWidgetConfig::getForm($widget['type'], $widget_fields, $templateid);
- unset($widget['fields']);
+ $widget_fields = array_key_exists('fields', $widget_data) ? $widget_data['fields'] : [];
+ unset($widget_data['fields']);
+
+ if ($widget_data['type'] === ZBX_WIDGET_INACCESSIBLE) {
+ continue;
+ }
- if ($widget_errors = $widget['form']->validate()) {
- if ($widget['name'] === '') {
- $context = $templateid !== null
- ? CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- : CWidgetConfig::CONTEXT_DASHBOARD;
+ $widget = APP::ModuleManager()->getModule($widget_data['type']);
- $widget_name = CWidgetConfig::getKnownWidgetTypes($context)[$widget['type']];
+ if ($widget === null || $widget->getType() !== CModule::TYPE_WIDGET) {
+ if ($widget_data['name'] !== '') {
+ $widget_name = $widget_data['name'];
}
else {
- $widget_name = $widget['name'];
+ $widget_name = 'pages['.$dashboard_page_index.'][widgets]['.$widget_index.']';
}
+ $errors[] = _s('Cannot save widget "%1$s".', $widget_name).' '._('Inaccessible widget type.');
+
+ continue;
+ }
+
+ $widget_name = $widget_data['name'] !== '' ? $widget_data['name'] : $widget->getDefaultName();
+
+ if ($templateid !== null && !$widget->hasTemplateSupport()) {
+ $errors[] = _s('Cannot save widget "%1$s".', $widget_name).' '._('Inaccessible widget type.');
+
+ continue;
+ }
+
+ $widget_data['form'] = $widget->getForm($widget_fields, $templateid);
+
+ if ($widget_errors = $widget_data['form']->validate()) {
foreach ($widget_errors as $error) {
$errors[] = _s('Cannot save widget "%1$s".', $widget_name).' '.$error;
}
}
}
- unset($widget);
+ unset($widget_data);
}
unset($dashboard_page);
@@ -568,4 +572,52 @@ class CDashboardHelper {
return $dashboards;
}
+
+ public static function getWidgetLastType(bool $for_template_dashboard_only = false): ?string {
+ $known_widgets = APP::ModuleManager()->getWidgets($for_template_dashboard_only);
+
+ $widget_last_type = CProfile::get('web.dashboard.last_widget_type');
+
+ if (!array_key_exists($widget_last_type, $known_widgets)) {
+ $current_types = [];
+ $deprecated_types = [];
+
+ /** @var CWidget $widget */
+ foreach ($known_widgets as $widget) {
+ if (!$widget->isDeprecated()) {
+ $current_types[$widget->getId()] = $widget->getDefaultName();
+ }
+ else {
+ $deprecated_types[$widget->getId()] = $widget->getDefaultName();
+ }
+ }
+
+ natcasesort($current_types);
+ natcasesort($deprecated_types);
+
+ if ($current_types) {
+ $widget_last_type = array_key_first($current_types);
+ }
+ elseif ($deprecated_types) {
+ $widget_last_type = array_key_first($deprecated_types);
+ }
+ else {
+ $widget_last_type = null;
+ }
+ }
+
+ return $widget_last_type;
+ }
+
+ /**
+ * @throws JsonException
+ */
+ public static function getConfigurationHash(array $dashboard, array $widget_defaults): string {
+ ksort($widget_defaults);
+
+ return md5(json_encode([
+ array_intersect_key($dashboard, array_flip(['name', 'display_period', 'auto_start', 'pages'])),
+ $widget_defaults
+ ], JSON_THROW_ON_ERROR));
+ }
}
diff --git a/ui/include/classes/helpers/CDocHelper.php b/ui/include/classes/helpers/CDocHelper.php
index 03287ed8936..a1f2b3095b2 100644
--- a/ui/include/classes/helpers/CDocHelper.php
+++ b/ui/include/classes/helpers/CDocHelper.php
@@ -153,15 +153,15 @@ class CDocHelper {
const USERS_USERROLE_EDIT = 'web_interface/frontend_sections/users/user_roles#default-user-roles';
const USERS_USERROLE_LIST = 'web_interface/frontend_sections/users/user_roles';
- public static function getUrl($path): ?string {
+ public static function getUrl($path): string {
if (CBrandHelper::isRebranded()) {
- return null;
+ return '';
}
if (preg_match('/^\d+\.\d+/', ZABBIX_VERSION, $version)) {
return ZBX_DOCUMENTATION_URL.'/'.$version[0].'/en/manual/'.$path;
}
- return null;
+ return '';
}
}
diff --git a/ui/include/classes/helpers/CMessageHelper.php b/ui/include/classes/helpers/CMessageHelper.php
index 1ae461866cb..68560c27c84 100644
--- a/ui/include/classes/helpers/CMessageHelper.php
+++ b/ui/include/classes/helpers/CMessageHelper.php
@@ -161,10 +161,9 @@ class CMessageHelper {
/**
* Clear messages.
*/
- public static function clear(bool $clear_title = true): void {
- if ($clear_title) {
- self::$title = null;
- }
+ public static function clear(): void {
+ self::$type = null;
+ self::$title = null;
self::$messages = [];
}
diff --git a/ui/include/classes/helpers/CSvgGraphHelper.php b/ui/include/classes/helpers/CSvgGraphHelper.php
index a9cb6c78046..85ca3cc6925 100644
--- a/ui/include/classes/helpers/CSvgGraphHelper.php
+++ b/ui/include/classes/helpers/CSvgGraphHelper.php
@@ -19,6 +19,8 @@
**/
+use Zabbix\Widgets\Fields\CWidgetFieldGraphDataSet;
+
/**
* Class calculates graph data and makes SVG graph.
*/
@@ -109,7 +111,7 @@ class CSvgGraphHelper {
$max_metrics = SVG_GRAPH_MAX_NUMBER_OF_METRICS;
foreach ($data_sets as $index => $data_set) {
- if ($data_set['dataset_type'] == CWidgetHelper::DATASET_TYPE_SINGLE_ITEM) {
+ if ($data_set['dataset_type'] == CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM) {
continue;
}
@@ -179,7 +181,7 @@ class CSvgGraphHelper {
$max_metrics = SVG_GRAPH_MAX_NUMBER_OF_METRICS;
foreach ($data_sets as $index => $data_set) {
- if ($data_set['dataset_type'] == CWidgetHelper::DATASET_TYPE_PATTERN_ITEM) {
+ if ($data_set['dataset_type'] == CWidgetFieldGraphDataSet::DATASET_TYPE_PATTERN_ITEM) {
continue;
}
@@ -750,7 +752,7 @@ class CSvgGraphHelper {
* Find problems at given time period that matches specified problem options.
*/
private static function getProblems(array $metrics, array $problem_options, array $time_period): array {
- if ($problem_options['show_problems'] != SVG_GRAPH_PROBLEMS_SHOW) {
+ if ($problem_options['show_problems'] == SVG_GRAPH_PROBLEMS_OFF) {
return [];
}
diff --git a/ui/include/classes/html/CBarGauge.php b/ui/include/classes/html/CBarGauge.php
index 2afa30bcea2..5b5941eea97 100644
--- a/ui/include/classes/html/CBarGauge.php
+++ b/ui/include/classes/html/CBarGauge.php
@@ -20,7 +20,8 @@
class CBarGauge extends CTag {
- private $thresholds = [];
+
+ private array $thresholds = [];
public function __construct() {
parent::__construct('z-bar-gauge', true);
diff --git a/ui/include/classes/html/CCollapsibleUiWidget.php b/ui/include/classes/html/CCollapsibleUiWidget.php
deleted file mode 100644
index 58fb46c8fd4..00000000000
--- a/ui/include/classes/html/CCollapsibleUiWidget.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * A class for rendering a widget that can be collapsed or expanded.
- */
-class CCollapsibleUiWidget extends CUiWidget {
-
- /**
- * Expand/collapse widget.
- *
- * Supported values:
- * - true - expanded;
- * - false - collapsed.
- *
- * @var bool
- */
- private $expanded = true;
-
- /**
- * Sets the header and adds a default expand-collapse icon.
- *
- * @param string $caption Header caption.
- * @param array $controls (optional)
- * @param string $idx (optional)
- *
- * @return $this
- */
- public function setHeader($caption, array $controls = [], $idx = '') {
- $icon = (new CRedirectButton(null, null))
- ->setId($this->id.'_icon')
- ->onClick('changeWidgetState(this, "'.$this->id.'", "'.$idx.'");');
-
- if ($this->expanded) {
- $icon
- ->addClass(ZBX_STYLE_BTN_WIDGET_COLLAPSE)
- ->setTitle(_('Collapse'));
- }
- else {
- $icon
- ->addClass(ZBX_STYLE_BTN_WIDGET_EXPAND)
- ->setTitle(_('Expand'));
- }
-
- $controls[] = $icon;
-
- parent::setHeader($caption, $controls);
-
- return $this;
- }
-
- /**
- * Display the widget in expanded or collapsed state.
- */
- protected function build() {
- $body = (new CDiv($this->body))
- ->addClass('body')
- ->setId($this->id);
-
- if (!$this->expanded) {
- $body->setAttribute('style', 'display: none;');
-
- if ($this->footer) {
- $this->footer->setAttribute('style', 'display: none;');
- }
- }
-
- $this->cleanItems();
- $this->addItem($this->header);
- $this->addItem($body);
- $this->addItem($this->footer);
-
- return $this;
- }
-
- /**
- * Sets expanded or collapsed state of the widget.
- *
- * @param bool
- */
- public function setExpanded($expanded) {
- $this->expanded = $expanded;
- return $this;
- }
-}
diff --git a/ui/include/classes/html/CColor.php b/ui/include/classes/html/CColor.php
index 178454953a7..f991288ffe7 100644
--- a/ui/include/classes/html/CColor.php
+++ b/ui/include/classes/html/CColor.php
@@ -64,11 +64,9 @@ class CColor extends CDiv {
/**
* Enable default color button.
-
- * @return CColor
*/
- public function enableUseDefault(): self {
- $this->use_default = true;
+ public function enableUseDefault($use_default = true): self {
+ $this->use_default = $use_default;
return $this;
}
diff --git a/ui/include/classes/html/widget/CWidget.php b/ui/include/classes/html/CHtmlPage.php
index 70dbac9f539..4fc21fe8b9a 100644
--- a/ui/include/classes/html/widget/CWidget.php
+++ b/ui/include/classes/html/CHtmlPage.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,7 +19,9 @@
**/
-class CWidget {
+class CHtmlPage {
+
+ public const PAGE_TITLE_ID = 'page-title-general';
private const ZBX_STYLE_HEADER_TITLE = 'header-title';
private const ZBX_STYLE_HEADER_DOC_LINK = 'header-doc-link';
@@ -27,104 +29,83 @@ class CWidget {
private const ZBX_STYLE_HEADER_CONTROLS = 'header-controls';
private const ZBX_STYLE_HEADER_KIOSKMODE_CONTROLS = 'header-kioskmode-controls';
- private $title;
- private $title_submenu;
- private $doc_url;
- private $controls;
- private $kiosk_mode_controls;
+ private string $title = '';
+ private array $title_submenu = [];
- /**
- * Navigation, displayed exclusively in ZBX_LAYOUT_NORMAL mode.
- *
- * @var mixed
- */
- private $navigation;
+ private ?CTag $controls = null;
+ private ?CList $kiosk_mode_controls = null;
+
+ private string $doc_url = '';
+
+ private array $items = [];
/**
- * The contents of the body of the widget.
- *
- * @var array
+ * Navigation, displayed exclusively in ZBX_LAYOUT_NORMAL mode.
*/
- protected $body = [];
+ private ?CList $navigation = null;
/**
* Layout mode (ZBX_LAYOUT_NORMAL|ZBX_LAYOUT_KIOSKMODE).
- *
- * @var integer
*/
- protected $web_layout_mode = ZBX_LAYOUT_NORMAL;
+ private int $web_layout_mode = ZBX_LAYOUT_NORMAL;
- public function setTitle($title) {
+ public function setTitle(string $title): self {
$this->title = $title;
return $this;
}
- public function setTitleSubmenu($title_submenu) {
+ public function setTitleSubmenu(array $title_submenu): self {
$this->title_submenu = $title_submenu;
return $this;
}
- public function setDocUrl($doc_url) {
+ public function setDocUrl(string $doc_url): self {
$this->doc_url = $doc_url;
return $this;
}
- public function setControls($controls) {
+ public function setControls(?CTag $controls): self {
$this->controls = $controls;
return $this;
}
- public function setKioskModeControls($kiosk_mode_controls) {
+ public function setKioskModeControls(?CList $kiosk_mode_controls): self {
$this->kiosk_mode_controls = $kiosk_mode_controls;
return $this;
}
- /**
- * Set layout mode.
- *
- * @param integer $web_layout_mode
- *
- * @return CWidget
- */
- public function setWebLayoutMode($web_layout_mode) {
+ public function setWebLayoutMode(int $web_layout_mode): self {
$this->web_layout_mode = $web_layout_mode;
return $this;
}
- /**
- * Set navigation for displaying exclusively in ZBX_LAYOUT_NORMAL mode.
- *
- * @param mixed $navigation
- *
- * @return CWidget
- */
- public function setNavigation($navigation) {
+ public function setNavigation(?CList $navigation): self {
$this->navigation = $navigation;
return $this;
}
- public function addItem($items = null) {
- if (!is_null($items)) {
- $this->body[] = $items;
+ public function addItem($value): self {
+ if ($value !== null) {
+ $this->items[] = $value;
}
return $this;
}
- public function show() {
+ public function show(): self {
echo $this->toString();
return $this;
}
- public function toString() {
+ private function toString() {
$items = [];
if ($this->web_layout_mode == ZBX_LAYOUT_KIOSKMODE) {
@@ -138,7 +119,7 @@ class CWidget {
)
);
}
- elseif ($this->title !== null || $this->controls !== null || $this->doc_url !== null) {
+ elseif ($this->title !== '' || $this->doc_url !== '' || $this->controls !== null) {
$items[] = $this->createTopHeader();
}
@@ -152,27 +133,28 @@ class CWidget {
? (new CDiv($this->navigation))->addClass(self::ZBX_STYLE_HEADER_NAVIGATION)
: null;
- $items[] = new CTag('main', true, [$navigation, $this->body]);
+ $items[] = new CTag('main', true, [$navigation, $this->items]);
return unpack_object($items);
}
private function createTopHeader(): CTag {
$divs = [
- (new CTag('nav', true, (new CButton(null, _('Show sidebar')))
- ->setId('sidebar-button-toggle')
- ->addClass('button-toggle')
- ->setAttribute('title', _('Show sidebar'))
+ (new CTag('nav', true,
+ (new CButton(null, _('Show sidebar')))
+ ->setId('sidebar-button-toggle')
+ ->addClass('button-toggle')
+ ->setAttribute('title', _('Show sidebar'))
))
->addClass('sidebar-nav-toggle')
->setAttribute('role', 'navigation')
->setAttribute('aria-label', _('Sidebar control'))
];
- if ($this->title !== null) {
- $title_tag = (new CTag('h1', true, $this->title))->setId(ZBX_STYLE_PAGE_TITLE);
+ if ($this->title !== '') {
+ $title_tag = (new CTag('h1', true, $this->title))->setId(self::PAGE_TITLE_ID);
- if ($this->title_submenu) {
+ if ($this->title_submenu !== []) {
$title_tag = (new CLinkAction($title_tag))
->setMenuPopup([
'type' => 'submenu',
@@ -189,7 +171,7 @@ class CWidget {
$divs[] = new CDiv($title_tag);
}
- if ($this->doc_url !== null) {
+ if ($this->doc_url !== '') {
$divs[] = (new CDiv(
(new CLink(null, $this->doc_url))
->setTitle(_('Help'))
diff --git a/ui/include/classes/html/CHtmlPageHeader.php b/ui/include/classes/html/CHtmlPageHeader.php
new file mode 100644
index 00000000000..c0944d6e244
--- /dev/null
+++ b/ui/include/classes/html/CHtmlPageHeader.php
@@ -0,0 +1,181 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Class for rendering html page head part.
+ */
+class CHtmlPageHeader {
+
+ /**
+ * Page title.
+ */
+ protected string $title;
+
+ /**
+ * Language attribute.
+ */
+ protected string $lang;
+
+ /**
+ * Theme attribute.
+ */
+ protected string $theme = ZBX_DEFAULT_THEME;
+
+ /**
+ * CSS files list.
+ */
+ protected array $css_files = [];
+
+ /**
+ * Inline CSS styles.
+ */
+ protected array $styles = [];
+
+ /**
+ * JavaScripts to render before JS files.
+ */
+ protected array $js = [];
+
+ /**
+ * JS files list.
+ */
+ protected array $js_files = [];
+
+ protected string $sid;
+
+ public function __construct(string $title, string $lang) {
+ $this->title = CHtml::encode($title);
+ $this->lang = $lang;
+ $this->sid = substr(CSessionHelper::getId(), 16, 16);
+ }
+
+ public function setTheme(string $theme): self {
+ $this->theme = CHtml::encode($theme);
+
+ return $this;
+ }
+
+ public function getTheme(): string {
+ return $this->theme;
+ }
+
+ /**
+ * Add path to css file to render in page head.
+ */
+ public function addCssFile(string $css_file): self {
+ $this->css_files[$css_file] = $css_file;
+
+ return $this;
+ }
+
+ /**
+ * Add css style to render in page head.
+ */
+ public function addStyle(string $style): self {
+ $this->styles[] = $style;
+
+ return $this;
+ }
+
+ /**
+ * Add JavaScript to render in page head before js file includes are rendered.
+ */
+ public function addJavaScript(string $js): self {
+ $this->js[] = $js;
+
+ return $this;
+ }
+
+ /**
+ * Add path to js file to render in page head.
+ */
+ public function addJsFile(string $js_file): self {
+ $this->js_files[$js_file] = $js_file;
+
+ return $this;
+ }
+
+ public function addJsTranslationStrings(array $translations_strings): self {
+ foreach ($translations_strings as $orig_string => $string) {
+ $this->addJavaScript('locale[\''.$orig_string.'\'] = '.json_encode($string, JSON_THROW_ON_ERROR).';');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Show page head html.
+ */
+ public function show(): CHtmlPageHeader {
+ echo '<!DOCTYPE html>';
+ echo '<html lang="'.$this->lang.'" theme="'.$this->theme.'">';
+ echo <<<HTML
+ <head>
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="Author" content="Zabbix SIA" />
+ <title>$this->title</title>
+ <link rel="icon" href="favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="76x76" href="assets/img/apple-touch-icon-76x76-precomposed.png">
+ <link rel="apple-touch-icon-precomposed" sizes="120x120" href="assets/img/apple-touch-icon-120x120-precomposed.png">
+ <link rel="apple-touch-icon-precomposed" sizes="152x152" href="assets/img/apple-touch-icon-152x152-precomposed.png">
+ <link rel="apple-touch-icon-precomposed" sizes="180x180" href="assets/img/apple-touch-icon-180x180-precomposed.png">
+ <link rel="icon" sizes="192x192" href="assets/img/touch-icon-192x192.png">
+ <meta name="csrf-token" content="$this->sid"/>
+ <meta name="msapplication-TileImage" content="assets/img/ms-tile-144x144.png">
+ <meta name="msapplication-TileColor" content="#d40000">
+ <meta name="msapplication-config" content="none"/>
+ HTML;
+
+ foreach ($this->css_files as $path) {
+ if (parse_url($path, PHP_URL_QUERY) === null) {
+ $path .= '?'.(int) filemtime($path);
+ }
+
+ echo '<link rel="stylesheet" type="text/css" href="'.htmlspecialchars($path).'" />'."\n";
+ }
+
+ if ($this->styles) {
+ echo '<style>';
+ echo implode("\n", $this->styles);
+ echo '</style>';
+ }
+
+ if ($this->js) {
+ echo '<script>';
+ echo implode("\n", $this->js);
+ echo '</script>';
+ }
+
+ foreach ($this->js_files as $path) {
+ if (parse_url($path, PHP_URL_QUERY) === null) {
+ $path .= '?'.(int) filemtime($path);
+ }
+
+ echo '<script src="'.htmlspecialchars($path).'"></script>'."\n";
+ }
+
+ echo '</head>'."\n";
+
+ return $this;
+ }
+}
diff --git a/ui/include/classes/html/CLabel.php b/ui/include/classes/html/CLabel.php
index 513dfe94eb0..ab41f1493fc 100644
--- a/ui/include/classes/html/CLabel.php
+++ b/ui/include/classes/html/CLabel.php
@@ -21,12 +21,18 @@
class CLabel extends CTag {
- public function __construct($label, $for = null) {
+ public function __construct($label, $id = null) {
parent::__construct('label', true, $label);
- if ($for !== null) {
- $this->setAttribute('for', zbx_formatDomId($for));
+ $this->setFor($id);
+ }
+
+ public function setFor($id): self {
+ if ($id !== null) {
+ $this->setAttribute('for', zbx_formatDomId($id));
}
+
+ return $this;
}
/**
diff --git a/ui/include/classes/html/CRadioButtonList.php b/ui/include/classes/html/CRadioButtonList.php
index 8ff7c4c8138..69f195c1982 100644
--- a/ui/include/classes/html/CRadioButtonList.php
+++ b/ui/include/classes/html/CRadioButtonList.php
@@ -100,7 +100,7 @@ class CRadioButtonList extends CList {
return $this;
}
- public function setModern($modern) {
+ public function setModern($modern = true) {
$this->modern = $modern;
return $this;
diff --git a/ui/include/classes/html/CSection.php b/ui/include/classes/html/CSection.php
new file mode 100644
index 00000000000..18c77db3930
--- /dev/null
+++ b/ui/include/classes/html/CSection.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+class CSection extends CTag {
+
+ private const ZBX_STYLE_HEAD = 'section-head';
+ private const ZBX_STYLE_BODY = 'section-body';
+ private const ZBX_STYLE_FOOT = 'section-foot';
+
+ protected ?CDiv $header = null;
+ protected ?CDiv $footer = null;
+
+ public function __construct($items = null) {
+ parent::__construct('section', true, $items);
+ }
+
+ public function addItem($value): self {
+ if ($value !== null) {
+ $this->items[] = $value;
+ }
+
+ return $this;
+ }
+
+ public function setHeader($header_items): self {
+ if ($header_items !== null) {
+ $this->header = (new CDiv($header_items))->addClass(self::ZBX_STYLE_HEAD);
+ }
+
+ return $this;
+ }
+
+ public function setFooter($footer_items): self {
+ if ($footer_items !== null) {
+ $this->footer = (new CDiv($footer_items))->addClass(self::ZBX_STYLE_FOOT);
+ }
+
+ return $this;
+ }
+
+ public function toString($destroy = true): string {
+ $body = (new CDiv($this->items))->addClass(self::ZBX_STYLE_BODY);
+
+ $this->cleanItems();
+
+ parent::addItem([$this->header, $body, $this->footer]);
+
+ return parent::toString($destroy);
+ }
+}
diff --git a/ui/include/classes/html/CSectionCollapsible.php b/ui/include/classes/html/CSectionCollapsible.php
new file mode 100644
index 00000000000..55d3ebf1171
--- /dev/null
+++ b/ui/include/classes/html/CSectionCollapsible.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+class CSectionCollapsible extends CSection {
+
+ private const ZBX_STYLE_COLLAPSED = 'section-collapsed';
+ private const ZBX_STYLE_TOGGLE = 'section-toggle';
+
+ private bool $is_expanded = true;
+ private string $profile_key = '';
+
+ public function setExpanded(bool $is_expanded): self {
+ $this->is_expanded = $is_expanded;
+
+ return $this;
+ }
+
+ public function setProfileIdx(string $profile_key): self {
+ $this->profile_key = $profile_key;
+
+ return $this;
+ }
+
+ public function toString($destroy = true): string {
+ $this->addClass($this->is_expanded ? null : self::ZBX_STYLE_COLLAPSED);
+
+ $toggle = (new CSimpleButton())
+ ->addClass(self::ZBX_STYLE_TOGGLE)
+ ->setTitle($this->is_expanded ? _('Collapse') : _('Expand'))
+ ->onClick('toggleSection("'.$this->getId().'", "'.$this->profile_key.'");');
+
+ if ($this->header === null) {
+ $this->setHeader($toggle);
+ }
+ else {
+ $this->header->addItem($toggle);
+ }
+
+ return parent::toString($destroy);
+ }
+}
diff --git a/ui/include/classes/html/CTemplateTag.php b/ui/include/classes/html/CTemplateTag.php
new file mode 100644
index 00000000000..79a60f26648
--- /dev/null
+++ b/ui/include/classes/html/CTemplateTag.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Class to embed HTML template.
+ */
+class CTemplateTag extends CTag {
+
+ public function __construct($id, $value = null) {
+ parent::__construct('template', true);
+
+ $this
+ ->setId($id)
+ ->addItem($value);
+ }
+}
diff --git a/ui/include/classes/html/CUiWidget.php b/ui/include/classes/html/CUiWidget.php
deleted file mode 100644
index 0823642534b..00000000000
--- a/ui/include/classes/html/CUiWidget.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CUiWidget extends CDiv {
-
- /**
- * Widget id.
- *
- * @var string
- */
- public $id;
-
- /**
- * Expand/collapse widget.
- *
- * Supported values:
- * - true - expanded;
- * - false - collapsed.
- *
- * @var bool
- */
- public $open;
-
- /**
- * Header div.
- *
- * @var CDiv
- */
- protected $header;
-
- /**
- * Body div.
- *
- * @var array
- */
- protected $body;
-
- /**
- * Footer div.
- *
- * @var CDiv
- */
- protected $footer;
-
- /**
- * Construct widget.
- *
- * @param string $id
- * @param string|array|CTag $body
- */
- public function __construct($id, $body = null) {
- $this->id = $id;
- $this->body = $body ? [$body] : [];
-
- parent::__construct();
-
- $this->addClass(ZBX_STYLE_DASHBOARD_WIDGET);
- $this->setId($this->id.'_widget');
- }
-
- /**
- * Set widget header.
- *
- * @param string $caption
- * @param array $controls
- *
- * @return $this
- */
- public function setHeader($caption, array $controls = []) {
- $this->header = (new CDiv())
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_HEAD)
- ->addItem(
- (new CTag('h4', true, $caption))->setId($this->id.'_header')
- );
-
- if ($controls) {
- $this->header->addItem(new CList($controls));
- }
-
- return $this;
- }
-
- /**
- * Set widget footer.
- *
- * @param string|array|CTag $footer
- * @param bool $right
- */
- public function setFooter($list) {
- $this->footer = $list;
- $this->footer->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FOOT);
- return $this;
- }
-
- /**
- * Build widget header, body and footer.
- */
- protected function build() {
- $body = (new CDiv($this->body))
- ->setId($this->id);
-
- $this->cleanItems();
-
- $this->addItem($this->header);
- $this->addItem($body);
- $this->addItem($this->footer);
- return $this;
- }
-
- /**
- * Get widget html.
- */
- public function toString($destroy = true) {
- $this->build();
-
- return parent::toString($destroy);
- }
-}
diff --git a/ui/include/classes/html/pageheader/CPageHeader.php b/ui/include/classes/html/pageheader/CPageHeader.php
deleted file mode 100644
index e272f094998..00000000000
--- a/ui/include/classes/html/pageheader/CPageHeader.php
+++ /dev/null
@@ -1,190 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Class for rendering html page head part.
- */
-class CPageHeader {
-
- /**
- * @var string page title
- */
- protected $title;
-
- /**
- * @var string Language attribute.
- */
- protected $lang;
-
- /**
- * @var array of css file paths
- */
- protected $cssFiles = [];
-
- /**
- * @var array of css styles
- */
- protected $styles = [];
-
- /**
- * @var array of js file paths
- */
- protected $jsFiles = [];
-
- /**
- * @var array of js scripts to render before js files
- */
- protected $jsBefore = [];
-
- /**
- * @var array of js scripts to render after js files
- */
- protected $js = [];
-
- /**
- * @var {string} sid
- */
- protected $sid;
-
- /**
- * @param string $title
- * @param string $lang
- */
- public function __construct(string $title, string $lang) {
- $this->title = CHtml::encode($title);
- $this->lang = $lang;
- $this->sid = substr(CSessionHelper::getId(), 16, 16);
- }
-
- /**
- * Add path to css file to render in page head.
- *
- * @param string $path
- */
- public function addCssFile($path) {
- $this->cssFiles[$path] = $path;
- return $this;
- }
-
- /**
- * Add css style to render in page head.
- *
- * @param string $style
- */
- public function addStyle($style) {
- $this->styles[] = $style;
- return $this;
- }
-
- /**
- * Add path to js file to render in page head.
- *
- * @param string $path
- */
- public function addJsFile($path) {
- $this->jsFiles[$path] = $path;
- return $this;
- }
-
- /**
- * Add js script to render in page head after js file includes are rendered.
- *
- * @param string $js
- */
- public function addJs($js) {
- $this->js[] = $js;
- return $this;
- }
-
- /**
- * Add js script to render in page head before js file includes are rendered.
- *
- * @param string $js
- */
- public function addJsBeforeScripts($js) {
- $this->jsBefore[] = $js;
- return $this;
- }
-
- /**
- * Display page head html.
- */
- public function display() {
- echo '<!DOCTYPE html>'."\n";
- echo '<html lang="'.$this->lang.'">'."\n";
- echo <<<HTML
- <head>
- <meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <meta name="Author" content="Zabbix SIA" />
- <title>$this->title</title>
- <link rel="icon" href="favicon.ico">
- <link rel="apple-touch-icon-precomposed" sizes="76x76" href="assets/img/apple-touch-icon-76x76-precomposed.png">
- <link rel="apple-touch-icon-precomposed" sizes="120x120" href="assets/img/apple-touch-icon-120x120-precomposed.png">
- <link rel="apple-touch-icon-precomposed" sizes="152x152" href="assets/img/apple-touch-icon-152x152-precomposed.png">
- <link rel="apple-touch-icon-precomposed" sizes="180x180" href="assets/img/apple-touch-icon-180x180-precomposed.png">
- <link rel="icon" sizes="192x192" href="assets/img/touch-icon-192x192.png">
- <meta name="csrf-token" content="$this->sid"/>
- <meta name="msapplication-TileImage" content="assets/img/ms-tile-144x144.png">
- <meta name="msapplication-TileColor" content="#d40000">
- <meta name="msapplication-config" content="none"/>
-
-HTML;
-
- foreach ($this->cssFiles as $path) {
- if (parse_url($path, PHP_URL_QUERY) === null) {
- $path .= '?'.(int) filemtime($path);
- }
-
- echo '<link rel="stylesheet" type="text/css" href="'.htmlspecialchars($path).'" />'."\n";
- }
-
- if ($this->styles) {
- echo '<style type="text/css">';
- echo implode("\n", $this->styles);
- echo '</style>';
- }
-
- if ($this->jsBefore) {
- echo '<script>';
- echo implode("\n", $this->jsBefore);
- echo '</script>';
- }
-
- foreach ($this->jsFiles as $path) {
- if (parse_url($path, PHP_URL_QUERY) === null) {
- $path .= '?'.(int) filemtime($path);
- }
-
- echo '<script src="'.htmlspecialchars($path).'"></script>'."\n";
- }
-
- if ($this->js) {
- echo '<script>';
- echo implode("\n", $this->js);
- echo '</script>';
- }
-
- echo '</head>'."\n";
- return $this;
- }
-}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldCheckBoxListView.php b/ui/include/classes/html/widgets/CWidgetFieldCheckBoxListView.php
new file mode 100644
index 00000000000..2fe19e51d1d
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldCheckBoxListView.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldCheckBoxList;
+
+class CWidgetFieldCheckBoxListView extends CWidgetFieldView {
+
+ private array $classes = [];
+
+ public function __construct(CWidgetFieldCheckBoxList $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CList {
+ $checkbox_list = (new CList())->addClass(ZBX_STYLE_LIST_CHECK_RADIO);
+
+ foreach ($this->classes as $class) {
+ $checkbox_list->addClass($class);
+ }
+
+ foreach ($this->field->getValues() as $key => $label) {
+ $checkbox_list->addItem(
+ (new CCheckBox($this->field->getName().'[]', $key))
+ ->setLabel($label)
+ ->setId($this->field->getName().'_'.$key)
+ ->setChecked(in_array($key, $this->field->getValue()))
+ ->setEnabled(!$this->isDisabled())
+ );
+ }
+
+ return $checkbox_list;
+ }
+
+ public function addClass(?string $class): self {
+ if ($class !== null) {
+ $this->classes[] = $class;
+ }
+
+ return $this;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldCheckBoxView.php b/ui/include/classes/html/widgets/CWidgetFieldCheckBoxView.php
new file mode 100644
index 00000000000..f2a3dbfa274
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldCheckBoxView.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldCheckBox;
+
+class CWidgetFieldCheckBoxView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldCheckBox $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): array {
+ return [
+ (new CVar($this->field->getName(), '0'))->removeId(),
+ (new CCheckBox($this->field->getName()))
+ ->setChecked((bool) $this->field->getValue())
+ ->setEnabled(!$this->isDisabled())
+ ->setLabel($this->field->getCaption())
+ ->onChange($this->field->getAction())
+ ];
+ }
+}
diff --git a/ui/include/classes/html/CScriptTemplate.php b/ui/include/classes/html/widgets/CWidgetFieldColorView.php
index 5d3f4212036..0c7ee880f64 100644
--- a/ui/include/classes/html/CScriptTemplate.php
+++ b/ui/include/classes/html/widgets/CWidgetFieldColorView.php
@@ -19,34 +19,27 @@
**/
-/**
- * Class to embed script HTML template.
- */
-class CScriptTemplate extends CTag {
-
- /**
- * Create a <script type="text/x-jquery-tmpl" id="{$id}"> HTML template.
- *
- * @param string $id Template id
- */
- public function __construct($id) {
- parent::__construct('script', true);
- $this->setAttribute('type', 'text/x-jquery-tmpl');
- $this->setId($id);
+use Zabbix\Widgets\Fields\CWidgetFieldColor;
+
+class CWidgetFieldColorView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldColor $field) {
+ $this->field = $field;
}
- public function addItem($value) {
- if (is_array($value)) {
- array_map([$this, 'addItem'], $value);
- }
- else {
- $this->items[] = $value;
+ public function getLabel(): ?CLabel {
+ $label = parent::getLabel();
+
+ if ($label !== null) {
+ $label->setFor('lbl_'.$this->field->getName());
}
- return $this;
+ return $label;
}
- protected function bodyToString(): string {
- return implode("\n", $this->items);
+ public function getView(): CColor {
+ return (new CColor($this->field->getName(), $this->field->getValue()))
+ ->appendColorPickerJs(false)
+ ->enableUseDefault(!$this->field->hasAllowInherited());
}
}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldColumnsListView.php b/ui/include/classes/html/widgets/CWidgetFieldColumnsListView.php
new file mode 100644
index 00000000000..ffdd353366b
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldColumnsListView.php
@@ -0,0 +1,91 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldColumnsList;
+
+class CWidgetFieldColumnsListView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldColumnsList $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CTag {
+ $columns = $this->field->getValue();
+
+ $header = [
+ '',
+ (new CColHeader(_('Name')))->addStyle('width: 39%'),
+ (new CColHeader(_('Data')))->addStyle('width: 59%'),
+ _('Action')
+ ];
+
+ $row_actions = [
+ (new CButton('edit', _('Edit')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->removeId(),
+ (new CButton('remove', _('Remove')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->removeId()
+ ];
+
+ $table = (new CTable())
+ ->setId('list_'.$this->field->getName())
+ ->setHeader($header);
+
+ foreach ($columns as $column_index => $column) {
+ $column_data = [new CVar('sortorder['.$this->field->getName().'][]', $column_index)];
+
+ foreach ($column as $key => $value) {
+ $column_data[] = new CVar($this->field->getName().'['.$column_index.']['.$key.']', $value);
+ }
+
+ if ($column['data'] == CWidgetFieldColumnsList::DATA_HOST_NAME) {
+ $label = new CTag('em', true, _('Host name'));
+ }
+ else if ($column['data'] == CWidgetFieldColumnsList::DATA_TEXT) {
+ $label = new CTag('em', true, $column['text']);
+ }
+ elseif (array_key_exists('item', $column)) {
+ $label = $column['item'];
+ }
+ else {
+ $label = '';
+ }
+
+ $table->addRow((new CRow([
+ (new CCol((new CDiv)->addClass(ZBX_STYLE_DRAG_ICON)))->addClass(ZBX_STYLE_TD_DRAG_ICON),
+ (new CDiv($column['name']))->addClass('text'),
+ (new CDiv($label))->addClass('text'),
+ (new CList(array_merge($row_actions, [$column_data])))->addClass(ZBX_STYLE_HOR_LIST)
+ ]))->addClass('sortable'));
+ }
+
+ $table->addRow(
+ (new CCol(
+ (new CButton('add', _('Add')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->setEnabled(!$this->isDisabled())
+ ))->setColSpan(count($header))
+ );
+
+ return $table;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldDatePickerView.php b/ui/include/classes/html/widgets/CWidgetFieldDatePickerView.php
new file mode 100644
index 00000000000..d6b2fce25ba
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldDatePickerView.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldDatePicker;
+
+class CWidgetFieldDatePickerView extends CWidgetFieldView {
+
+ private string $date_format = '';
+
+ private string $placeholder = '';
+
+ public function __construct(CWidgetFieldDatePicker $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CDateSelector {
+ $date_selector = (new CDateSelector($this->field->getName(), $this->field->getValue()))
+ ->setMaxLength(DB::getFieldLength('widget_field', 'value_str'))
+ ->setAriaRequired($this->isRequired())
+ ->setEnabled(!$this->isDisabled());
+
+ if ($this->date_format !== '') {
+ $date_selector->setDateFormat($this->date_format);
+ }
+
+ if ($this->placeholder !== '') {
+ $date_selector->setPlaceholder($this->placeholder);
+ }
+
+ return $date_selector;
+ }
+
+ public function setDateFormat(string $date_format): self {
+ $this->date_format = $date_format;
+
+ return $this;
+ }
+
+ public function setPlaceholder(string $placeholder): self {
+ $this->placeholder = $placeholder;
+
+ return $this;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldGraphDataSetView.php b/ui/include/classes/html/widgets/CWidgetFieldGraphDataSetView.php
new file mode 100644
index 00000000000..ecb39e5e7ce
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldGraphDataSetView.php
@@ -0,0 +1,440 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldGraphDataSet;
+
+class CWidgetFieldGraphDataSetView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldGraphDataSet $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CList {
+ $list = (new CList())
+ ->setId('data_sets')
+ ->addClass(ZBX_STYLE_SORTABLE_LIST);
+
+ $values = $this->field->getValue();
+
+ if (!$values) {
+ $values[] = CWidgetFieldGraphDataSet::getDefaults();
+ }
+
+ // Get item names for single item datasets.
+ $itemids = array_merge(...array_column($values, 'itemids'));
+ $item_names = [];
+ if ($itemids) {
+ $item_names = CWidgetFieldGraphDataSet::getItemNames($itemids);
+ }
+
+ foreach ($values as $i => $value) {
+ if ($value['dataset_type'] == CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM) {
+ $value['item_names'] = $item_names;
+ }
+
+ $list->addItem(
+ $this->getGraphDataSetLayout($value, $value['dataset_type'], $i == 0, $i)
+ );
+ }
+
+ return $list;
+ }
+
+ public function getFooterView(): CList {
+ return (new CList())
+ ->addClass(ZBX_STYLE_BTN_SPLIT)
+ ->addItem([
+ (new CButton(null, [
+ (new CSpan())->addClass(ZBX_STYLE_PLUS_ICON),
+ _('Add new data set')
+ ]))
+ ->setId('dataset-add')
+ ->addClass(ZBX_STYLE_BTN_ALT),
+ (new CButton(null, '&#8203;'))
+ ->setId('dataset-menu')
+ ->addClass(ZBX_STYLE_BTN_ALT)
+ ->addClass(ZBX_STYLE_BTN_TOGGLE_CHEVRON)
+ ]);
+ }
+
+ public function getTemplates(): array {
+ $value = ['color' => '#{color}'] + CWidgetFieldGraphDataSet::getDefaults();
+
+ return [
+ new CTemplateTag('dataset-pattern-item-tmpl',
+ $this->getGraphDataSetLayout($value, CWidgetFieldGraphDataSet::DATASET_TYPE_PATTERN_ITEM, true)
+ ),
+ new CTemplateTag('dataset-single-item-tmpl',
+ $this->getGraphDataSetLayout($value, CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM, true)
+ ),
+ new CTemplateTag('dataset-item-row-tmpl', $this->getItemRowTemplate())
+ ];
+ }
+
+ private function getGraphDataSetLayout(array $value, int $dataset_type, bool $is_opened,
+ $row_num = '#{rowNum}'): CListItem {
+ $field_name = $this->field->getName();
+
+ $dataset_head = [
+ new CDiv((new CSimpleButton('&nbsp;'))->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM_TOGGLE)),
+ new CVar($field_name.'['.$row_num.'][dataset_type]', $dataset_type, '')
+ ];
+
+ if ($dataset_type == CWidgetFieldGraphDataSet::DATASET_TYPE_PATTERN_ITEM) {
+ $host_pattern_field = (new CPatternSelect([
+ 'name' => $field_name.'['.$row_num.'][hosts][]',
+ 'object_name' => 'hosts',
+ 'data' => $value['hosts'],
+ 'placeholder' => _('host pattern'),
+ 'wildcard_allowed' => 1,
+ 'popup' => [
+ 'parameters' => [
+ 'srctbl' => 'hosts',
+ 'srcfld1' => 'host',
+ 'dstfrm' => $this->form_name,
+ 'dstfld1' => zbx_formatDomId($field_name.'['.$row_num.'][hosts][]')
+ ]
+ ],
+ 'add_post_js' => false
+ ]))->addClass('js-hosts-multiselect');
+
+ $dataset_head = array_merge($dataset_head, [
+ (new CColor($field_name.'['.$row_num.'][color]', $value['color']))
+ ->appendColorPickerJs(false),
+ $host_pattern_field,
+ (new CPatternSelect([
+ 'name' => $field_name.'['.$row_num.'][items][]',
+ 'object_name' => 'items',
+ 'data' => $value['items'],
+ 'placeholder' => _('item pattern'),
+ 'wildcard_allowed' => 1,
+ 'popup' => [
+ 'parameters' => [
+ 'srctbl' => 'items',
+ 'srcfld1' => 'name',
+ 'real_hosts' => 1,
+ 'numeric' => 1,
+ 'dstfrm' => $this->form_name,
+ 'dstfld1' => zbx_formatDomId($field_name.'['.$row_num.'][items][]')
+ ],
+ 'filter_preselect' => [
+ 'id' => $host_pattern_field->getId(),
+ 'submit_as' => 'host_pattern',
+ 'submit_parameters' => [
+ 'host_pattern_wildcard_allowed' => 1,
+ 'host_pattern_multiple' => 1
+ ],
+ 'multiple' => true
+ ]
+ ],
+ 'autosuggest' => [
+ 'filter_preselect' => [
+ 'id' => $host_pattern_field->getId(),
+ 'submit_as' => 'host_pattern',
+ 'submit_parameters' => [
+ 'host_pattern_wildcard_allowed' => 1,
+ 'host_pattern_multiple' => 1
+ ],
+ 'multiple' => true
+ ]
+ ],
+ 'add_post_js' => false
+ ]))->addClass('js-items-multiselect')
+ ]);
+ }
+ else {
+ $item_rows = [];
+ foreach($value['itemids'] as $i => $itemid) {
+ $item_name = array_key_exists($itemid, $value['item_names'])
+ ? $value['item_names'][$itemid]
+ : '';
+
+ $item_rows[] = $this->getItemRowTemplate($row_num, ($i + 1), $itemid, $item_name, $value['color'][$i]);
+ }
+
+ $empty_msg_block = (new CDiv(_('No item selected.')))->addClass('no-items-message');
+
+ $items_list = (new CTable())
+ ->addClass('single-item-table')
+ ->setAttribute('data-set', $row_num)
+ ->setColumns([
+ (new CTableColumn())->addClass('table-col-handle'),
+ (new CTableColumn())->addClass('table-col-color'),
+ (new CTableColumn())->addClass('table-col-no'),
+ (new CTableColumn(_('Name')))->addClass('table-col-name'),
+ (new CTableColumn(_('Action')))->addClass('table-col-action')
+ ])
+ ->addItem([
+ $item_rows,
+ (new CTag('tfoot', true))
+ ->addItem(
+ (new CCol(
+ (new CList())
+ ->addClass(ZBX_STYLE_INLINE_FILTER_FOOTER)
+ ->addItem(
+ (new CSimpleButton(_('Add')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->addClass('js-add-item')
+ )
+ ))->setColSpan(5)
+ )
+ ]);
+
+ $dataset_head = array_merge($dataset_head, [
+ (new CDiv([$empty_msg_block, $items_list]))->addClass('items-list table-forms-separator')
+ ]);
+ }
+
+ $dataset_head[] = (new CDiv(
+ (new CButton())
+ ->setAttribute('title', _('Delete'))
+ ->addClass(ZBX_STYLE_BTN_REMOVE)
+ ->removeId()
+ ))->addClass('dataset-actions');
+
+ return (new CListItem([
+ (new CDiv())
+ ->addClass(ZBX_STYLE_DRAG_ICON)
+ ->addClass(ZBX_STYLE_SORTABLE_DRAG_HANDLE)
+ ->addClass('js-main-drag-icon'),
+ (new CDiv())
+ ->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM_HEAD)
+ ->addClass('dataset-head')
+ ->addItem($dataset_head),
+ (new CDiv())
+ ->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM_BODY)
+ ->addClass('dataset-body')
+ ->addItem([
+ (new CFormGrid())
+ ->addItem([
+ new CLabel(_('Draw')),
+ new CFormField(
+ (new CRadioButtonList($field_name.'['.$row_num.'][type]', (int) $value['type']))
+ ->addClass('js-type')
+ ->addValue(_('Line'), SVG_GRAPH_TYPE_LINE)
+ ->addValue(_('Points'), SVG_GRAPH_TYPE_POINTS)
+ ->addValue(_('Staircase'), SVG_GRAPH_TYPE_STAIRCASE)
+ ->addValue(_('Bar'), SVG_GRAPH_TYPE_BAR)
+ ->setModern()
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Stacked'), $field_name.'['.$row_num.'][stacked]'),
+ new CFormField([
+ (new CVar($field_name.'['.$row_num.'][stacked]', '0'))->removeId(),
+ (new CCheckBox($field_name.'['.$row_num.'][stacked]'))
+ ->addClass('js-stacked')
+ ->setChecked((bool) $value['stacked'])
+ ->setEnabled($value['type'] != SVG_GRAPH_TYPE_POINTS)
+ ])
+ ])
+ ->addItem([
+ new CLabel(_('Width')),
+ new CFormField(
+ (new CRangeControl($field_name.'['.$row_num.'][width]', (int) $value['width']))
+ ->setEnabled(!in_array($value['type'], [SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_BAR]))
+ ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
+ ->setStep(1)
+ ->setMin(0)
+ ->setMax(10)
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Point size')),
+ new CFormField(
+ (new CRangeControl($field_name.'['.$row_num.'][pointsize]', (int) $value['pointsize']))
+ ->setEnabled($value['type'] == SVG_GRAPH_TYPE_POINTS)
+ ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
+ ->setStep(1)
+ ->setMin(1)
+ ->setMax(10)
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Transparency')),
+ new CFormField(
+ (new CRangeControl($field_name.'['.$row_num.'][transparency]',
+ (int) $value['transparency'])
+ )
+ ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
+ ->setStep(1)
+ ->setMin(0)
+ ->setMax(10)
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Fill')),
+ new CFormField(
+ (new CRangeControl($field_name.'['.$row_num.'][fill]', (int) $value['fill']))
+ ->setEnabled(!in_array($value['type'], [SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_BAR]))
+ ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
+ ->setStep(1)
+ ->setMin(0)
+ ->setMax(10)
+ )
+ ]),
+ (new CFormGrid())
+ ->addItem([
+ new CLabel(_('Missing data')),
+ new CFormField(
+ (new CRadioButtonList($field_name.'['.$row_num.'][missingdatafunc]',
+ (int) $value['missingdatafunc'])
+ )
+ ->addValue(_('None'), SVG_GRAPH_MISSING_DATA_NONE)
+ ->addValue(_x('Connected', 'missing data function'),
+ SVG_GRAPH_MISSING_DATA_CONNECTED
+ )
+ ->addValue(_x('Treat as 0', 'missing data function'),
+ SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO
+ )
+ ->addValue(_x('Last known', 'missing data function'),
+ SVG_GRAPH_MISSING_DATA_LAST_KNOWN
+ )
+ ->setEnabled(!in_array($value['type'], [SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_BAR]))
+ ->setModern()
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Y-axis')),
+ new CFormField(
+ (new CRadioButtonList($field_name.'['.$row_num.'][axisy]', (int) $value['axisy']))
+ ->addValue(_('Left'), GRAPH_YAXIS_SIDE_LEFT)
+ ->addValue(_('Right'), GRAPH_YAXIS_SIDE_RIGHT)
+ ->setModern()
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Time shift'), $field_name.'['.$row_num.'][timeshift]'),
+ new CFormField(
+ (new CTextBox($field_name.'['.$row_num.'][timeshift]', $value['timeshift']))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
+ ->setAttribute('placeholder', _('none'))
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Aggregation function'),
+ 'label-'.$field_name.'_'.$row_num.'_aggregate_function'
+ ),
+ new CFormField(
+ (new CSelect($field_name.'['.$row_num.'][aggregate_function]'))
+ ->setId($field_name.'_'.$row_num.'_aggregate_function')
+ ->setFocusableElementId('label-'.$field_name.'_'.$row_num.'_aggregate_function')
+ ->setValue((int) $value['aggregate_function'])
+ ->addOptions(CSelect::createOptionsFromArray([
+ AGGREGATE_NONE => graph_item_aggr_fnc2str(AGGREGATE_NONE),
+ AGGREGATE_MIN => graph_item_aggr_fnc2str(AGGREGATE_MIN),
+ AGGREGATE_MAX => graph_item_aggr_fnc2str(AGGREGATE_MAX),
+ AGGREGATE_AVG => graph_item_aggr_fnc2str(AGGREGATE_AVG),
+ AGGREGATE_COUNT => graph_item_aggr_fnc2str(AGGREGATE_COUNT),
+ AGGREGATE_SUM => graph_item_aggr_fnc2str(AGGREGATE_SUM),
+ AGGREGATE_FIRST => graph_item_aggr_fnc2str(AGGREGATE_FIRST),
+ AGGREGATE_LAST => graph_item_aggr_fnc2str(AGGREGATE_LAST)
+ ]))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Aggregation interval'), $field_name.'['.$row_num.'][aggregate_interval]'),
+ new CFormField(
+ (new CTextBox($field_name.'['.$row_num.'][aggregate_interval]',
+ $value['aggregate_interval']
+ ))
+ ->setEnabled($value['aggregate_function'] != AGGREGATE_NONE)
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
+ ->setAttribute('placeholder', GRAPH_AGGREGATE_DEFAULT_INTERVAL)
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Aggregate')),
+ new CFormField(
+ (new CRadioButtonList($field_name.'['.$row_num.'][aggregate_grouping]',
+ (int) $value['aggregate_grouping'])
+ )
+ ->addValue(_('Each item'), GRAPH_AGGREGATE_BY_ITEM)
+ ->addValue(_('Data set'), GRAPH_AGGREGATE_BY_DATASET)
+ ->setEnabled($value['aggregate_function'] != AGGREGATE_NONE)
+ ->setModern()
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Approximation'),
+ 'label-'.$field_name.'_'.$row_num.'_approximation'
+ ),
+ new CFormField(
+ (new CSelect($field_name.'['.$row_num.'][approximation]'))
+ ->setId($field_name.'_'.$row_num.'_approximation')
+ ->setFocusableElementId('label-'.$field_name.'_'.$row_num.'_approximation')
+ ->setValue((int) $value['approximation'])
+ ->addOptions(CSelect::createOptionsFromArray([
+ APPROXIMATION_ALL => [
+ 'label' => _('all'),
+ 'disabled' => $value['type'] != SVG_GRAPH_TYPE_LINE || $value['stacked']
+ ],
+ APPROXIMATION_MIN => _('min'),
+ APPROXIMATION_AVG => _('avg'),
+ APPROXIMATION_MAX => _('max')
+ ]))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
+ )
+ ])
+ ])
+ ]))
+ ->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM)
+ ->addClass(ZBX_STYLE_SORTABLE_ITEM)
+ ->addClass($is_opened ? ZBX_STYLE_LIST_ACCORDION_ITEM_OPENED : ZBX_STYLE_LIST_ACCORDION_ITEM_CLOSED)
+ ->setAttribute('data-set', $row_num)
+ ->setAttribute('data-type', $dataset_type);
+ }
+
+ private function getItemRowTemplate($ds_num = '#{dsNum}', $row_num = '#{rowNum}', $itemid = '#{itemid}',
+ $name = '#{name}', $color = '#{color}'): CRow {
+ return (new CRow([
+ (new CCol(
+ (new CDiv())->addClass(ZBX_STYLE_DRAG_ICON)
+ ))
+ ->addClass('table-col-handle')
+ ->addClass(ZBX_STYLE_TD_DRAG_ICON),
+ (new CCol(
+ (new CColor($this->field->getName().'['.$ds_num.'][color][]', $color,
+ 'items_'.$ds_num.'_'.$row_num.'_color'
+ ))->appendColorPickerJs(false)
+ ))->addClass('table-col-color'),
+ (new CCol(new CSpan($row_num.':')))->addClass('table-col-no'),
+ (new CCol(
+ (new CLink($name))
+ ->setId('items_'.$ds_num.'_'.$row_num.'_name')
+ ->addClass('js-click-expend')
+ ))->addClass('table-col-name'),
+ (new CCol([
+ (new CButton('button', _('Remove')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->addClass('element-table-remove'),
+ new CVar($this->field->getName().'['.$ds_num.'][itemids][]', $itemid,
+ 'items_'.$ds_num.'_'.$row_num.'_input'
+ )
+ ]))
+ ->addClass('table-col-action')
+ ->addClass(ZBX_STYLE_NOWRAP)
+ ]))
+ ->addClass(ZBX_STYLE_SORTABLE)
+ ->addClass('single-item-table-row');
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldGraphOverrideView.php b/ui/include/classes/html/widgets/CWidgetFieldGraphOverrideView.php
new file mode 100644
index 00000000000..a15914f30d1
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldGraphOverrideView.php
@@ -0,0 +1,348 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldGraphOverride;
+
+class CWidgetFieldGraphOverrideView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldGraphOverride $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CList {
+ $list = (new CList())->addClass(ZBX_STYLE_OVERRIDES_LIST);
+
+ $i = 0;
+ foreach ($this->field->getValue() as $override) {
+ $list->addItem($this->getItemTemplate($override, $i));
+
+ $i++;
+ }
+
+ $list->addItem(
+ (new CDiv(
+ (new CButton('override_add', [(new CSpan())->addClass(ZBX_STYLE_PLUS_ICON), _('Add new override')]))
+ ->addClass(ZBX_STYLE_BTN_ALT)
+ ->setId('override-add')
+ )),
+ 'overrides-foot'
+ );
+
+ return $list;
+ }
+
+ public function getJavaScript(): string {
+ return '
+ // Define it as function to avoid redundancy.
+ function initializeOverrides() {
+ jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_OPTIONS_LIST.'").overrides({
+ add: ".'.ZBX_STYLE_BTN_ALT.'",
+ options: "input[type=hidden]",
+ captions: '.json_encode($this->getGraphOverrideOptionNames()).',
+ makeName: function(option, row_id) {
+ return "'.$this->field->getName().'[" + row_id + "][" + option + "]";
+ },
+ makeOption: function(name) {
+ return name.match(
+ /.*\[('.implode('|', $this->field->getOverrideOptions()).')\]/
+ )[1];
+ },
+ override: ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'",
+ overridesList: ".'.ZBX_STYLE_OVERRIDES_LIST.'",
+ onUpdate: () => widget_svggraph_form.onGraphConfigChange(),
+ menu: '.json_encode($this->getGraphOverrideMenu()).'
+ });
+ }
+
+ // Initialize dynamicRows.
+ jQuery("#overrides")
+ .dynamicRows({
+ template: "#overrides-row",
+ beforeRow: ".overrides-foot",
+ remove: ".'.ZBX_STYLE_BTN_REMOVE.'",
+ add: "#override-add",
+ row: ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'"
+ })
+ .bind("afteradd.dynamicRows", function(event, options) {
+ const container = jQuery(".overlay-dialogue-body");
+
+ container.scrollTop(Math.max(container.scrollTop(),
+ jQuery("#widget-dialogue-form")[0].scrollHeight - container.height()
+ ));
+
+ jQuery(".multiselect", jQuery("#overrides")).each(function() {
+ jQuery(this).multiSelect(jQuery(this).data("params"));
+ });
+
+ widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
+ widget_svggraph_form.onGraphConfigChange();
+ })
+ .bind("afterremove.dynamicRows", function(event, options) {
+ widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
+ widget_svggraph_form.onGraphConfigChange();
+ })
+ .bind("tableupdate.dynamicRows", function(event, options) {
+ widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
+ initializeOverrides();
+ if (jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'").length > 1) {
+ jQuery("#overrides .drag-icon").removeClass("disabled");
+ jQuery("#overrides").sortable("enable");
+ }
+ else {
+ jQuery("#overrides .drag-icon").addClass("disabled");
+ jQuery("#overrides").sortable("disable");
+ }
+ });
+
+ // Initialize overrides UI control.
+ initializeOverrides();
+
+ // Initialize override pattern-selectors.
+ jQuery(".multiselect", jQuery("#overrides")).each(function() {
+ jQuery(this).multiSelect(jQuery(this).data("params"));
+ });
+
+ // Make overrides sortable.
+ if (jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'").length < 2) {
+ jQuery("#overrides .drag-icon").addClass("disabled");
+ }
+
+ jQuery("#overrides").sortable({
+ items: ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'",
+ containment: "parent",
+ handle: ".drag-icon",
+ tolerance: "pointer",
+ scroll: false,
+ cursor: "grabbing",
+ opacity: 0.6,
+ axis: "y",
+ disabled: function() {
+ return jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'").length < 2;
+ }(),
+ start: function() { // Workaround to fix wrong scrolling at initial sort.
+ jQuery(this).sortable("refreshPositions");
+ },
+ stop: () => widget_svggraph_form.onGraphConfigChange(),
+ update: function() {
+ widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
+ }
+ });
+ ';
+ }
+
+ public function getTemplates(): array {
+ return [
+ new CTemplateTag('overrides-row', $this->getItemTemplate(CWidgetFieldGraphOverride::getDefaults()))
+ ];
+ }
+
+ /**
+ * Function returns array containing string values used as titles for override options.
+ */
+ private function getGraphOverrideOptionNames(): array {
+ return [
+ 'width' => _('Width'),
+ 'type' => _('Draw'),
+ 'type'.SVG_GRAPH_TYPE_LINE => _('Line'),
+ 'type'.SVG_GRAPH_TYPE_POINTS => _('Points'),
+ 'type'.SVG_GRAPH_TYPE_STAIRCASE => _('Staircase'),
+ 'type'.SVG_GRAPH_TYPE_BAR => _('Bar'),
+ 'transparency' => _('Transparency'),
+ 'fill' => _('Fill'),
+ 'pointsize' => _('Point size'),
+ 'missingdatafunc' => _('Missing data'),
+ 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_NONE => _('None'),
+ 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_CONNECTED => _x('Connected', 'missing data function'),
+ 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO => _x('Treat as 0', 'missing data function'),
+ 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_LAST_KNOWN => _x('Last known', 'missing data function'),
+ 'axisy' => _('Y-axis'),
+ 'axisy'.GRAPH_YAXIS_SIDE_LEFT => _('Left'),
+ 'axisy'.GRAPH_YAXIS_SIDE_RIGHT => _('Right'),
+ 'timeshift' => _('Time shift')
+ ];
+ }
+
+ /**
+ * Function returns array used to construct override field menu of available override options.
+ */
+ private function getGraphOverrideMenu(): array {
+ return [
+ 'sections' => [
+ [
+ 'name' => _('ADD OVERRIDE'),
+ 'options' => [
+ ['name' => _('Base color'), 'callback' => 'addOverride', 'args' => ['color', '']],
+
+ ['name' => _('Width').'/0', 'callback' => 'addOverride', 'args' => ['width', 0]],
+ ['name' => _('Width').'/1', 'callback' => 'addOverride', 'args' => ['width', 1]],
+ ['name' => _('Width').'/2', 'callback' => 'addOverride', 'args' => ['width', 2]],
+ ['name' => _('Width').'/3', 'callback' => 'addOverride', 'args' => ['width', 3]],
+ ['name' => _('Width').'/4', 'callback' => 'addOverride', 'args' => ['width', 4]],
+ ['name' => _('Width').'/5', 'callback' => 'addOverride', 'args' => ['width', 5]],
+ ['name' => _('Width').'/6', 'callback' => 'addOverride', 'args' => ['width', 6]],
+ ['name' => _('Width').'/7', 'callback' => 'addOverride', 'args' => ['width', 7]],
+ ['name' => _('Width').'/8', 'callback' => 'addOverride', 'args' => ['width', 8]],
+ ['name' => _('Width').'/9', 'callback' => 'addOverride', 'args' => ['width', 9]],
+ ['name' => _('Width').'/10', 'callback' => 'addOverride', 'args' => ['width', 10]],
+
+ ['name' => _('Draw').'/'._('Line'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_LINE]],
+ ['name' => _('Draw').'/'._('Points'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_POINTS]],
+ ['name' => _('Draw').'/'._('Staircase'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_STAIRCASE]],
+ ['name' => _('Draw').'/'._('Bar'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_BAR]],
+
+ ['name' => _('Transparency').'/0', 'callback' => 'addOverride', 'args' => ['transparency', 0]],
+ ['name' => _('Transparency').'/1', 'callback' => 'addOverride', 'args' => ['transparency', 1]],
+ ['name' => _('Transparency').'/2', 'callback' => 'addOverride', 'args' => ['transparency', 2]],
+ ['name' => _('Transparency').'/3', 'callback' => 'addOverride', 'args' => ['transparency', 3]],
+ ['name' => _('Transparency').'/4', 'callback' => 'addOverride', 'args' => ['transparency', 4]],
+ ['name' => _('Transparency').'/5', 'callback' => 'addOverride', 'args' => ['transparency', 5]],
+ ['name' => _('Transparency').'/6', 'callback' => 'addOverride', 'args' => ['transparency', 6]],
+ ['name' => _('Transparency').'/7', 'callback' => 'addOverride', 'args' => ['transparency', 7]],
+ ['name' => _('Transparency').'/8', 'callback' => 'addOverride', 'args' => ['transparency', 8]],
+ ['name' => _('Transparency').'/9', 'callback' => 'addOverride', 'args' => ['transparency', 9]],
+ ['name' => _('Transparency').'/10', 'callback' => 'addOverride', 'args' => ['transparency', 10]],
+
+ ['name' => _('Fill').'/0', 'callback' => 'addOverride', 'args' => ['fill', 0]],
+ ['name' => _('Fill').'/1', 'callback' => 'addOverride', 'args' => ['fill', 1]],
+ ['name' => _('Fill').'/2', 'callback' => 'addOverride', 'args' => ['fill', 2]],
+ ['name' => _('Fill').'/3', 'callback' => 'addOverride', 'args' => ['fill', 3]],
+ ['name' => _('Fill').'/4', 'callback' => 'addOverride', 'args' => ['fill', 4]],
+ ['name' => _('Fill').'/5', 'callback' => 'addOverride', 'args' => ['fill', 5]],
+ ['name' => _('Fill').'/6', 'callback' => 'addOverride', 'args' => ['fill', 6]],
+ ['name' => _('Fill').'/7', 'callback' => 'addOverride', 'args' => ['fill', 7]],
+ ['name' => _('Fill').'/8', 'callback' => 'addOverride', 'args' => ['fill', 8]],
+ ['name' => _('Fill').'/9', 'callback' => 'addOverride', 'args' => ['fill', 9]],
+ ['name' => _('Fill').'/10', 'callback' => 'addOverride', 'args' => ['fill', 10]],
+
+ ['name' => _('Point size').'/1', 'callback' => 'addOverride', 'args' => ['pointsize', 1]],
+ ['name' => _('Point size').'/2', 'callback' => 'addOverride', 'args' => ['pointsize', 2]],
+ ['name' => _('Point size').'/3', 'callback' => 'addOverride', 'args' => ['pointsize', 3]],
+ ['name' => _('Point size').'/4', 'callback' => 'addOverride', 'args' => ['pointsize', 4]],
+ ['name' => _('Point size').'/5', 'callback' => 'addOverride', 'args' => ['pointsize', 5]],
+ ['name' => _('Point size').'/6', 'callback' => 'addOverride', 'args' => ['pointsize', 6]],
+ ['name' => _('Point size').'/7', 'callback' => 'addOverride', 'args' => ['pointsize', 7]],
+ ['name' => _('Point size').'/8', 'callback' => 'addOverride', 'args' => ['pointsize', 8]],
+ ['name' => _('Point size').'/9', 'callback' => 'addOverride', 'args' => ['pointsize', 9]],
+ ['name' => _('Point size').'/10', 'callback' => 'addOverride', 'args' => ['pointsize', 10]],
+
+ ['name' => _('Missing data').'/'._('None'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_NONE]],
+ ['name' => _('Missing data').'/'._x('Connected', 'missing data function'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_CONNECTED]],
+ ['name' => _('Missing data').'/'._x('Treat as 0', 'missing data function'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO]],
+ ['name' => _('Missing data').'/'._x('Last known', 'missing data function'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_LAST_KNOWN]],
+
+ ['name' => _('Y-axis').'/'._('Left'), 'callback' => 'addOverride', 'args' => ['axisy', GRAPH_YAXIS_SIDE_LEFT]],
+ ['name' => _('Y-axis').'/'._('Right'), 'callback' => 'addOverride', 'args' => ['axisy', GRAPH_YAXIS_SIDE_RIGHT]],
+
+ ['name' => _('Time shift'), 'callback' => 'addOverride', 'args' => ['timeshift']]
+ ]
+ ]
+ ]
+ ];
+ }
+
+ private function getItemTemplate(array $value, $row_num = '#{rowNum}'): CListItem {
+ $inputs = [];
+
+ // Create override options list.
+ foreach ($this->field->getOverrideOptions() as $option) {
+ if (array_key_exists($option, $value)) {
+ $inputs[] = (new CVar($this->field->getName().'['.$row_num.']['.$option.']', $value[$option]));
+ }
+ }
+
+ $host_pattern_field = (new CPatternSelect([
+ 'name' => $this->field->getName().'['.$row_num.'][hosts][]',
+ 'object_name' => 'hosts',
+ 'data' => $value['hosts'],
+ 'placeholder' => _('host pattern'),
+ 'wildcard_allowed' => 1,
+ 'popup' => [
+ 'parameters' => [
+ 'srctbl' => 'hosts',
+ 'srcfld1' => 'hostid',
+ 'dstfrm' => $this->form_name,
+ 'dstfld1' => zbx_formatDomId($this->field->getName().'['.$row_num.'][hosts][]')
+ ]
+ ],
+ 'add_post_js' => false
+ ]))
+ ->setEnabled(!$this->isDisabled())
+ ->setAriaRequired($this->isRequired());
+
+ return (new CListItem([
+ (new CDiv())->addClass(ZBX_STYLE_DRAG_ICON),
+ $host_pattern_field,
+ (new CPatternSelect([
+ 'name' => $this->field->getName().'['.$row_num.'][items][]',
+ 'object_name' => 'items',
+ 'data' => $value['items'],
+ 'placeholder' => _('item pattern'),
+ 'wildcard_allowed' => 1,
+ 'popup' => [
+ 'parameters' => [
+ 'srctbl' => 'items',
+ 'srcfld1' => 'itemid',
+ 'real_hosts' => 1,
+ 'numeric' => 1,
+ 'dstfrm' => $this->form_name,
+ 'dstfld1' => zbx_formatDomId($this->field->getName().'['.$row_num.'][items][]')
+ ],
+ 'filter_preselect' => [
+ 'id' => $host_pattern_field->getId(),
+ 'submit_as' => 'host_pattern',
+ 'submit_parameters' => [
+ 'host_pattern_wildcard_allowed' => 1,
+ 'host_pattern_multiple' => 1
+ ],
+ 'multiple' => true
+ ]
+ ],
+ 'autosuggest' => [
+ 'filter_preselect' => [
+ 'id' => $host_pattern_field->getId(),
+ 'submit_as' => 'host_pattern',
+ 'submit_parameters' => [
+ 'host_pattern_wildcard_allowed' => 1,
+ 'host_pattern_multiple' => 1
+ ],
+ 'multiple' => true
+ ]
+ ],
+ 'add_post_js' => false
+ ]))
+ ->setEnabled(!$this->isDisabled())
+ ->setAriaRequired($this->isRequired()),
+ (new CDiv(
+ (new CButton())
+ ->setAttribute('title', _('Delete'))
+ ->addClass(ZBX_STYLE_BTN_REMOVE)
+ ->removeId()
+ ))->addClass('dataset-actions'),
+ (new CList($inputs))
+ ->addClass(ZBX_STYLE_OVERRIDES_OPTIONS_LIST)
+ ->addItem(
+ (new CButton(null, (new CSpan())->addClass(ZBX_STYLE_PLUS_ICON)))
+ ->setAttribute('data-row', $row_num)
+ ->addClass(ZBX_STYLE_BTN_ALT)
+ )
+ ]))->addClass(ZBX_STYLE_OVERRIDES_LIST_ITEM);
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldHostPatternSelectView.php b/ui/include/classes/html/widgets/CWidgetFieldHostPatternSelectView.php
new file mode 100644
index 00000000000..2f16643f678
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldHostPatternSelectView.php
@@ -0,0 +1,65 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldHostPatternSelect;
+
+class CWidgetFieldHostPatternSelectView extends CWidgetFieldView {
+
+ private string $placeholder = '';
+
+ public function __construct(CWidgetFieldHostPatternSelect $field) {
+ $this->field = $field;
+ }
+
+ public function setPlaceholder(string $placeholder): self {
+ $this->placeholder = $placeholder;
+
+ return $this;
+ }
+
+ public function getView(): CPatternSelect {
+ return (new CPatternSelect([
+ 'name' => $this->field->getName().'[]',
+ 'object_name' => 'hosts',
+ 'data' => $this->field->getValue(),
+ 'placeholder' => $this->placeholder,
+ 'wildcard_allowed' => 1,
+ 'popup' => [
+ 'parameters' => [
+ 'srctbl' => 'hosts',
+ 'srcfld1' => 'hostid',
+ 'dstfrm' => $this->form_name,
+ 'dstfld1' => zbx_formatDomId($this->field->getName().'[]')
+ ]
+ ],
+ 'add_post_js' => false
+ ]))
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setEnabled(!$this->isDisabled())
+ ->setAriaRequired($this->isRequired());
+ }
+
+ public function getJavaScript(): string {
+ $field_id = zbx_formatDomId($this->field->getName().'[]');
+
+ return 'jQuery("#'.$field_id.'").multiSelect(jQuery("#'.$field_id.'").data("params"));';
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldIntegerBoxView.php b/ui/include/classes/html/widgets/CWidgetFieldIntegerBoxView.php
new file mode 100644
index 00000000000..f1e36ee5e6a
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldIntegerBoxView.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldIntegerBox;
+
+class CWidgetFieldIntegerBoxView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldIntegerBox $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CNumericBox {
+ return (new CNumericBox($this->field->getName(), $this->field->getValue(), $this->field->getMaxLength(), false,
+ !$this->isNotEmpty()
+ ))
+ ->setWidth(ZBX_TEXTAREA_NUMERIC_STANDARD_WIDTH)
+ ->setAriaRequired($this->isRequired());
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldLatLngView.php b/ui/include/classes/html/widgets/CWidgetFieldLatLngView.php
new file mode 100644
index 00000000000..d06e5c4e1fc
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldLatLngView.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldLatLng;
+
+class CWidgetFieldLatLngView extends CWidgetFieldView {
+
+ private string $placeholder = '';
+
+ private int $width = ZBX_TEXTAREA_MEDIUM_WIDTH;
+
+ public function __construct(CWidgetFieldLatLng $field) {
+ $this->field = $field;
+
+ $this->setHelpHint([
+ _('Comma separated center coordinates and zoom level to display when the widget is initially loaded.'),
+ BR(),
+ _('Supported formats:'),
+ (new CList([
+ new CListItem((new CSpan('<lat>,<lng>,<zoom>'))->addClass(ZBX_STYLE_MONOSPACE_FONT)),
+ new CListItem((new CSpan('<lat>,<lng>'))->addClass(ZBX_STYLE_MONOSPACE_FONT))
+ ]))->addClass(ZBX_STYLE_LIST_DASHED),
+ BR(),
+ _s('The maximum zoom level is "%1$s".', CSettingsHelper::get(CSettingsHelper::GEOMAPS_MAX_ZOOM)),
+ BR(),
+ _('Initial view is ignored if the default view is set.')
+ ]);
+ }
+
+ public function setPlaceholder(string $placeholder): self {
+ $this->placeholder = $placeholder;
+
+ return $this;
+ }
+
+ public function setWidth(int $width): self {
+ $this->width = $width;
+
+ return $this;
+ }
+
+ public function getView(): CTextBox {
+ $textbox = (new CTextBox($this->field->getName(), $this->field->getValue()))
+ ->setWidth($this->width)
+ ->setEnabled(!$this->isDisabled())
+ ->setAriaRequired($this->isRequired());
+
+ if ($this->placeholder !== '') {
+ $textbox = $textbox->setAttribute('placeholder', $this->placeholder);
+ }
+
+ return $textbox;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphPrototypeView.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphPrototypeView.php
new file mode 100644
index 00000000000..eb4169a0faa
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphPrototypeView.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectGraphPrototype;
+
+class CWidgetFieldMultiSelectGraphPrototypeView extends CWidgetFieldMultiSelectView {
+
+ public function __construct(CWidgetFieldMultiSelectGraphPrototype $field, array $data) {
+ parent::__construct($field, $data);
+ }
+
+ protected function getObjectName(): string {
+ return 'graph_prototypes';
+ }
+
+ protected function getPopupParameters(): array {
+ return [
+ 'srctbl' => 'graph_prototypes',
+ 'srcfld1' => 'graphid',
+ 'srcfld2' => 'name',
+ 'with_graph_prototypes' => true
+ ];
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphView.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphView.php
new file mode 100644
index 00000000000..a67260b30ac
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGraphView.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectGraph;
+
+class CWidgetFieldMultiSelectGraphView extends CWidgetFieldMultiSelectView {
+
+ public function __construct(CWidgetFieldMultiSelectGraph $field, array $data) {
+ parent::__construct($field, $data);
+ }
+
+ protected function getObjectName(): string {
+ return 'graphs';
+ }
+
+ protected function getPopupParameters(): array {
+ return [
+ 'srctbl' => 'graphs',
+ 'srcfld1' => 'graphid',
+ 'srcfld2' => 'name',
+ 'with_graphs' => true
+ ];
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGroupView.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGroupView.php
new file mode 100644
index 00000000000..42ac95d0721
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectGroupView.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectGroup;
+
+class CWidgetFieldMultiSelectGroupView extends CWidgetFieldMultiSelectView {
+
+ public function __construct(CWidgetFieldMultiSelectGroup $field, array $data) {
+ parent::__construct($field, $data);
+ }
+
+ protected function getObjectName(): string {
+ return 'hostGroup';
+ }
+
+ protected function getPopupParameters(): array {
+ return [
+ 'srctbl' => 'host_groups',
+ 'srcfld1' => 'groupid',
+ 'real_hosts' => true,
+ 'enrich_parent_groups' => true
+ ];
+ }
+}
diff --git a/ui/app/views/js/monitoring.dashboard.widget.edit.js.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectHostView.php
index b0f46f671e7..23d727818e5 100644
--- a/ui/app/views/js/monitoring.dashboard.widget.edit.js.php
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectHostView.php
@@ -17,21 +17,24 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-?>
-window.widget_form = new class {
- init() {
- document.getElementById('type').addEventListener('change', () => ZABBIX.Dashboard.reloadWidgetProperties());
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectHost;
- document.getElementById('widget-dialogue-form').addEventListener('change', (e) => {
- const is_trimmable = e.target.matches(
- 'input[type="text"]:not([data-no-trim="1"]), textarea:not([data-no-trim="1"])'
- );
+class CWidgetFieldMultiSelectHostView extends CWidgetFieldMultiSelectView {
- if (is_trimmable) {
- e.target.value = e.target.value.trim();
- }
- }, {capture: true});
+ public function __construct(CWidgetFieldMultiSelectHost $field, array $data) {
+ parent::__construct($field, $data);
}
-};
+
+ protected function getObjectName(): string {
+ return 'hosts';
+ }
+
+ protected function getPopupParameters(): array {
+ return [
+ 'srctbl' => 'hosts',
+ 'srcfld1' => 'hostid'
+ ];
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemPrototypeView.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemPrototypeView.php
new file mode 100644
index 00000000000..8de80be206f
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemPrototypeView.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectItemPrototype;
+
+class CWidgetFieldMultiSelectItemPrototypeView extends CWidgetFieldMultiSelectView {
+
+ public function __construct(CWidgetFieldMultiSelectItemPrototype $field, array $data) {
+ parent::__construct($field, $data);
+ }
+
+ protected function getObjectName(): string {
+ return 'item_prototypes';
+ }
+
+ protected function getPopupParameters(): array {
+ return [
+ 'srctbl' => 'item_prototypes',
+ 'srcfld1' => 'itemid'
+ ];
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemView.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemView.php
new file mode 100644
index 00000000000..74c7816ef41
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectItemView.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectItem;
+
+class CWidgetFieldMultiSelectItemView extends CWidgetFieldMultiSelectView {
+
+ public function __construct(CWidgetFieldMultiSelectItem $field, array $data) {
+ parent::__construct($field, $data);
+ }
+
+ protected function getObjectName(): string {
+ return 'items';
+ }
+
+ protected function getPopupParameters(): array {
+ return [
+ 'srctbl' => 'items',
+ 'srcfld1' => 'itemid'
+ ];
+ }
+}
diff --git a/ui/include/classes/widgets/views/js/widget.problems.form.view.js.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectServiceView.php
index 64206926d0c..4b68ec939b4 100644
--- a/ui/include/classes/widgets/views/js/widget.problems.form.view.js.php
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectServiceView.php
@@ -17,17 +17,19 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-?>
-window.widget_problems_form = new class {
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectService;
- init({sort_with_enabled_show_timeline}) {
- document.getElementById('sort_triggers').addEventListener('change', (e) => {
- const show_timeline = document.getElementById('show_timeline');
+class CWidgetFieldMultiSelectServiceView extends CWidgetFieldMultiSelectView {
- show_timeline.disabled = !sort_with_enabled_show_timeline[e.target.value];
- show_timeline.checked = !show_timeline.disabled;
- });
+ public function __construct(CWidgetFieldMultiSelectService $field, array $data) {
+ parent::__construct($field, $data);
+
+ $this->custom_select = true;
+ }
+
+ protected function getObjectName(): string {
+ return 'services';
}
-};
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldMultiSelectSlaView.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectSlaView.php
new file mode 100644
index 00000000000..6b3b87ede1a
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectSlaView.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelectSla;
+
+class CWidgetFieldMultiSelectSlaView extends CWidgetFieldMultiSelectView {
+
+ public function __construct(CWidgetFieldMultiSelectSla $field, array $data) {
+ parent::__construct($field, $data);
+ }
+
+ protected function getObjectName(): string {
+ return 'sla';
+ }
+
+ protected function getPopupParameters(): array {
+ return [
+ 'srctbl' => 'sla',
+ 'srcfld1' => 'slaid'
+ ];
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldMultiSelectView.php b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectView.php
new file mode 100644
index 00000000000..17e148e670c
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldMultiSelectView.php
@@ -0,0 +1,106 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldMultiSelect;
+
+abstract class CWidgetFieldMultiSelectView extends CWidgetFieldView {
+
+ protected const OBJECT_NAME = '';
+
+ protected ?CMultiSelect $multiselect = null;
+
+ protected array $data;
+
+ protected bool $custom_select = false;
+
+ protected array $filter_preselect = [];
+
+ public function __construct(CWidgetFieldMultiSelect $field, array $data) {
+ $this->field = $field;
+ $this->data = $data;
+ }
+
+ public function getId(): string {
+ return $this->multiselect->getId();
+ }
+
+ public function getLabel(): ?CLabel {
+ $label = parent::getLabel();
+
+ return $label !== null
+ ? $label->setFor($this->getId().'_ms')
+ : null;
+ }
+
+ public function getView(): CMultiSelect {
+ if ($this->multiselect === null) {
+ $multiselect_name = $this->field->getName().($this->field->isMultiple() ? '[]' : '');
+
+ $options = [
+ 'name' => $multiselect_name,
+ 'object_name' => $this->getObjectName(),
+ 'multiple' => $this->field->isMultiple(),
+ 'data' => $this->data,
+ 'add_post_js' => false
+ ];
+
+ if ($this->custom_select) {
+ $options['custom_select'] = true;
+ }
+ else {
+ $options['popup'] = [
+ 'parameters' => [
+ 'dstfrm' => $this->form_name,
+ 'dstfld1' => zbx_formatDomId($multiselect_name)
+ ] + $this->getPopupParameters() + $this->field->getFilterParameters()
+ ];
+
+ if ($this->filter_preselect) {
+ $options['popup']['filter_preselect'] = $this->filter_preselect;
+ }
+ }
+
+ $this->multiselect = (new CMultiSelect($options))
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setAriaRequired($this->isRequired());
+ }
+
+ return $this->multiselect;
+ }
+
+ public function getJavaScript(): string {
+ return $this->getView()->getPostJS();
+ }
+
+ public function setFilterPreselect(array $filter_preselect): self {
+ $this->filter_preselect = $filter_preselect;
+
+ return $this;
+ }
+
+ protected function getObjectName(): string {
+ return '';
+ }
+
+ protected function getPopupParameters(): array {
+ return [];
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldNumericBoxView.php b/ui/include/classes/html/widgets/CWidgetFieldNumericBoxView.php
new file mode 100644
index 00000000000..4f2957c0b42
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldNumericBoxView.php
@@ -0,0 +1,58 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldNumericBox;
+
+class CWidgetFieldNumericBoxView extends CWidgetFieldView {
+
+ private string $placeholder = '';
+
+ private int $width = ZBX_TEXTAREA_NUMERIC_BIG_WIDTH;
+
+ public function __construct(CWidgetFieldNumericBox $field) {
+ $this->field = $field;
+ }
+
+ public function setPlaceholder(string $placeholder): self {
+ $this->placeholder = $placeholder;
+
+ return $this;
+ }
+
+ public function setWidth(int $width): self {
+ $this->width = $width;
+
+ return $this;
+ }
+
+ public function getView(): CTextBox {
+ $textbox = (new CTextBox($this->field->getName(), $this->field->getValue()))
+ ->setWidth($this->width)
+ ->setAriaRequired($this->isRequired())
+ ->setEnabled(!$this->isDisabled());
+
+ if ($this->placeholder !== '') {
+ $textbox = $textbox->setAttribute('placeholder', $this->placeholder);
+ }
+
+ return $textbox;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldRadioButtonListView.php b/ui/include/classes/html/widgets/CWidgetFieldRadioButtonListView.php
new file mode 100644
index 00000000000..158026e7bc7
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldRadioButtonListView.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldRadioButtonList;
+
+class CWidgetFieldRadioButtonListView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldRadioButtonList $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CRadioButtonList {
+ $radio_button_list = (new CRadioButtonList($this->field->getName(), $this->field->getValue()))
+ ->setModern()
+ ->setAriaRequired($this->isRequired());
+
+ foreach ($this->field->getValues() as $key => $value) {
+ $radio_button_list
+ ->addValue($value, $key, null, $this->field->getAction())
+ ->setEnabled(!$this->isDisabled());
+ }
+
+ return $radio_button_list;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldRangeControlView.php b/ui/include/classes/html/widgets/CWidgetFieldRangeControlView.php
new file mode 100644
index 00000000000..f736024fc7b
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldRangeControlView.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldRangeControl;
+
+class CWidgetFieldRangeControlView extends CWidgetFieldView {
+
+ protected ?CRangeControl $range_control = null;
+
+ public function __construct(CWidgetFieldRangeControl $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CRangeControl {
+ return $this->getRangeControl();
+ }
+
+ public function getJavaScript(): string {
+ return $this->getRangeControl()->getPostJS();
+ }
+
+ private function getRangeControl(): CRangeControl {
+ if ($this->range_control === null) {
+ $this->range_control = (new CRangeControl($this->field->getName(), (int) $this->field->getValue()))
+ ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
+ ->setStep($this->field->getStep())
+ ->setMin($this->field->getMin())
+ ->setMax($this->field->getMax())
+ ->setEnabled(!$this->isDisabled());
+ }
+
+ return $this->range_control;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldSelectResourceView.php b/ui/include/classes/html/widgets/CWidgetFieldSelectResourceView.php
new file mode 100644
index 00000000000..df6b80cf05f
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldSelectResourceView.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldSelectResource;
+
+class CWidgetFieldSelectResourceView extends CWidgetFieldView {
+
+ private array $data;
+
+ public function __construct(CWidgetFieldSelectResource $field, array $data) {
+ $this->field = $field;
+ $this->data = $data;
+ }
+
+ public function getView(): array {
+ $caption = $this->field->getValue() != 0
+ ? $this->data[$this->field->getResourceType()][$this->field->getValue()]
+ : '';
+
+ return [
+ (new CTextBox($this->field->getName().'_caption', $caption, true))
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setAriaRequired($this->isRequired()),
+ (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
+ (new CButton('select', _('Select')))
+ ->addClass(ZBX_STYLE_BTN_GREY)
+ ->onClick('return PopUp("popup.generic",
+ '.json_encode($this->field->getPopupOptions($this->form_name)).',
+ {dialogue_class: "modal-popup-generic"}
+ );'),
+ new CVar($this->field->getName(), $this->field->getValue())
+ ];
+ }
+
+
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldSelectView.php b/ui/include/classes/html/widgets/CWidgetFieldSelectView.php
new file mode 100644
index 00000000000..94475f64ced
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldSelectView.php
@@ -0,0 +1,55 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldSelect;
+
+class CWidgetFieldSelectView extends CWidgetFieldView {
+
+ protected ?CSelect $select = null;
+
+ public function __construct(CWidgetFieldSelect $field) {
+ $this->field = $field;
+ }
+
+ public function getLabel(): ?CLabel {
+ $label = parent::getLabel();
+
+ if ($label !== null) {
+ $label->setFor($this->getView()->getFocusableElementId());
+ }
+
+ return $label;
+ }
+
+ public function getView(): CSelect {
+ if ($this->select === null) {
+ $this->select = (new CSelect($this->field->getName()))
+ ->setId($this->field->getName())
+ ->setFocusableElementId('label-'.$this->field->getName())
+ ->setValue($this->field->getValue())
+ ->addOptions(CSelect::createOptionsFromArray($this->field->getValues()))
+ ->setDisabled($this->isDisabled())
+ ->setAriaRequired($this->isRequired());
+ }
+
+ return $this->select;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldSeveritiesView.php b/ui/include/classes/html/widgets/CWidgetFieldSeveritiesView.php
new file mode 100644
index 00000000000..316d2629b12
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldSeveritiesView.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldSeverities;
+
+class CWidgetFieldSeveritiesView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldSeverities $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CCheckBoxList {
+ return (new CCheckBoxList($this->field->getName()))
+ ->setOptions(CSeverityHelper::getSeverities())
+ ->setChecked($this->field->getValue())
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setEnabled(!$this->isDisabled())
+ ->setColumns(3)
+ ->setVertical();
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldTagsView.php b/ui/include/classes/html/widgets/CWidgetFieldTagsView.php
new file mode 100644
index 00000000000..a7d08e29fdb
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldTagsView.php
@@ -0,0 +1,118 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldTags;
+
+class CWidgetFieldTagsView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldTags $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CTable {
+ $tags = $this->field->getValue();
+
+ if (!$tags) {
+ $tags = [CWidgetFieldTags::DEFAULT_TAG];
+ }
+
+ $tags_table = (new CTable())
+ ->setId('tags_table_'.$this->field->getName())
+ ->addClass('table-tags')
+ ->addClass('table-initial-width');
+
+ $i = 0;
+
+ foreach ($tags as $tag) {
+ $tags_table->addItem($this->getRowTemplate($tag, $i));
+
+ $i++;
+ }
+
+ $tags_table->addRow(
+ (new CCol(
+ (new CButton('tags_add', _('Add')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->addClass('element-table-add')
+ ->setEnabled(!$this->isDisabled())
+ ))->setColSpan(3)
+ );
+
+ return $tags_table;
+ }
+
+ public function getJavaScript(): string {
+ return '
+ jQuery("#tags_table_'.$this->field->getName().'")
+ .dynamicRows({template: "#'.$this->field->getName().'-row-tmpl"})
+ .on("afteradd.dynamicRows", function() {
+ const rows = this.querySelectorAll(".form_row");
+ new CTagFilterItem(rows[rows.length - 1]);
+ });
+
+ // Init existing fields once loaded.
+ document.querySelectorAll("#tags_table_'.$this->field->getName().' .form_row").forEach(row => {
+ new CTagFilterItem(row);
+ });
+ ';
+ }
+
+ public function getTemplates(): array {
+ return [
+ new CTemplateTag($this->field->getName().'-row-tmpl', $this->getRowTemplate(CWidgetFieldTags::DEFAULT_TAG))
+ ];
+ }
+
+ private function getRowTemplate(array $tag, $row_num = '#{rowNum}'): CRow {
+ return (new CRow([
+ (new CTextBox($this->field->getName().'['.$row_num.'][tag]', $tag['tag']))
+ ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
+ ->setAriaRequired($this->isRequired())
+ ->setEnabled(!$this->isDisabled() || $row_num === '#{rowNum}')
+ ->setAttribute('placeholder', _('tag')),
+ (new CSelect($this->field->getName().'['.$row_num.'][operator]'))
+ ->addOptions(CSelect::createOptionsFromArray([
+ TAG_OPERATOR_EXISTS => _('Exists'),
+ TAG_OPERATOR_EQUAL => _('Equals'),
+ TAG_OPERATOR_LIKE => _('Contains'),
+ TAG_OPERATOR_NOT_EXISTS => _('Does not exist'),
+ TAG_OPERATOR_NOT_EQUAL => _('Does not equal'),
+ TAG_OPERATOR_NOT_LIKE => _('Does not contain')
+ ]))
+ ->setValue($tag['operator'])
+ ->setFocusableElementId($this->field->getName().'-'.$row_num.'-operator-select')
+ ->setId($this->field->getName().'_'.$row_num.'_operator')
+ ->setDisabled($this->isDisabled() && $row_num !== '#{rowNum}'),
+ (new CTextBox($this->field->getName().'['.$row_num.'][value]', $tag['value']))
+ ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
+ ->setAriaRequired($this->isRequired())
+ ->setId($this->field->getName().'_'.$row_num.'_value')
+ ->setEnabled(!$this->isDisabled() || $row_num === '#{rowNum}')
+ ->setAttribute('placeholder', _('value')),
+ (new CCol(
+ (new CButton($this->field->getName().'['.$row_num.'][remove]', _('Remove')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->addClass('element-table-remove')
+ ->setEnabled(!$this->isDisabled() || $row_num === '#{rowNum}')
+ ))->addClass(ZBX_STYLE_NOWRAP)
+ ]))->addClass('form_row');
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldTextAreaView.php b/ui/include/classes/html/widgets/CWidgetFieldTextAreaView.php
new file mode 100644
index 00000000000..1c7a6bfb7a6
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldTextAreaView.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldTextArea;
+
+class CWidgetFieldTextAreaView extends CWidgetFieldView {
+
+ private int $width = ZBX_TEXTAREA_STANDARD_WIDTH;
+ private ?int $adaptive_width = null;
+
+ public function __construct(CWidgetFieldTextArea $field) {
+ $this->field = $field;
+ }
+
+ public function setWidth(int $width): self {
+ $this->width = $width;
+
+ return $this;
+ }
+
+ public function setAdaptiveWidth(int $adaptive_width): self {
+ $this->adaptive_width = $adaptive_width;
+
+ return $this;
+ }
+
+ public function getView(): CTextArea {
+ $textarea = (new CTextArea($this->field->getName(), $this->field->getValue()))
+ ->setEnabled(!$this->isDisabled())
+ ->setAriaRequired($this->isRequired());
+
+ if ($this->adaptive_width !== null) {
+ $textarea->setAdaptiveWidth($this->adaptive_width);
+ }
+ else {
+ $textarea->setWidth($this->width);
+ }
+
+ return $textarea;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldTextBoxView.php b/ui/include/classes/html/widgets/CWidgetFieldTextBoxView.php
new file mode 100644
index 00000000000..8a8a666d9b8
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldTextBoxView.php
@@ -0,0 +1,71 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldTextBox;
+
+class CWidgetFieldTextBoxView extends CWidgetFieldView {
+
+ private string $placeholder = '';
+
+ private int $width = ZBX_TEXTAREA_STANDARD_WIDTH;
+ private ?int $adaptive_width = null;
+
+ public function __construct(CWidgetFieldTextBox $field) {
+ $this->field = $field;
+ }
+
+ public function setPlaceholder(string $placeholder): self {
+ $this->placeholder = $placeholder;
+
+ return $this;
+ }
+
+ public function setWidth(int $width): self {
+ $this->width = $width;
+
+ return $this;
+ }
+
+ public function setAdaptiveWidth(int $adaptive_width): self {
+ $this->adaptive_width = $adaptive_width;
+
+ return $this;
+ }
+
+ public function getView(): CTextBox {
+ $textbox = (new CTextBox($this->field->getName(), $this->field->getValue()))
+ ->setEnabled(!$this->isDisabled())
+ ->setAriaRequired($this->isRequired());
+
+ if ($this->placeholder !== '') {
+ $textbox = $textbox->setAttribute('placeholder', $this->placeholder);
+ }
+
+ if ($this->adaptive_width !== null) {
+ $textbox->setAdaptiveWidth($this->adaptive_width);
+ }
+ else {
+ $textbox->setWidth($this->width);
+ }
+
+ return $textbox;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldThresholdsView.php b/ui/include/classes/html/widgets/CWidgetFieldThresholdsView.php
new file mode 100644
index 00000000000..331efe4e145
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldThresholdsView.php
@@ -0,0 +1,100 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldThresholds;
+
+class CWidgetFieldThresholdsView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldThresholds $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CDiv {
+ $thresholds_table = (new CTable())
+ ->setId($this->field->getName().'-table')
+ ->addClass(ZBX_STYLE_TABLE_FORMS)
+ ->setHeader([
+ '',
+ (new CColHeader(_('Threshold')))->setWidth('100%'),
+ _('Action')
+ ])
+ ->setFooter(new CRow(
+ new CCol(
+ (new CSimpleButton(_('Add')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->addClass('element-table-add')
+ )
+ ));
+
+ foreach ($this->field->getValue() as $i => $threshold) {
+ $thresholds_table->addRow(
+ $this->getRowTemplate($i, $threshold['color'], $threshold['threshold'])
+ );
+ }
+
+ return (new CDiv($thresholds_table))
+ ->addClass('table-forms-separator')
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH);
+ }
+
+ public function getJavaScript(): string {
+ return '
+ var $thresholds_table = jQuery("#'.$this->field->getName().'-table");
+
+ $thresholds_table
+ .dynamicRows({template: "#'.$this->field->getName().'-row-tmpl"})
+ .on("afteradd.dynamicRows", function(opt) {
+ const rows = this.querySelectorAll(".form_row");
+ const colors = jQuery("#widget-dialogue-form")[0]
+ .querySelectorAll(".'.ZBX_STYLE_COLOR_PICKER.' input");
+ const used_colors = [];
+ for (const color of colors) {
+ if (color.value !== "" && color.name.includes("thresholds")) {
+ used_colors.push(color.value);
+ }
+ }
+ jQuery(".color-picker input", rows[rows.length - 1])
+ .val(colorPalette.getNextColor(used_colors))
+ .colorpicker({
+ appendTo: ".overlay-dialogue-body"
+ });
+ });
+ ';
+ }
+
+ public function getTemplates(): array {
+ return [
+ new CTemplateTag($this->field->getName().'-row-tmpl', $this->getRowTemplate())
+ ];
+ }
+
+ public function getRowTemplate($row_num = '#{rowNum}', $color = '#{color}', $threshold = '#{threshold}'): CRow {
+ return (new CRow([
+ (new CColor($this->field->getName().'['.$row_num.'][color]', $color))->appendColorPickerJs(false),
+ (new CTextBox($this->field->getName().'['.$row_num.'][threshold]', $threshold, false))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
+ ->setAriaRequired(),
+ (new CButton($this->field->getName().'['.$row_num.'][remove]', _('Remove')))
+ ->addClass(ZBX_STYLE_BTN_LINK)
+ ->addClass('element-table-remove')
+ ]))->addClass('form_row');
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldTimeZoneView.php b/ui/include/classes/html/widgets/CWidgetFieldTimeZoneView.php
new file mode 100644
index 00000000000..d7fc2fb65bc
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldTimeZoneView.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldTimeZone;
+
+class CWidgetFieldTimeZoneView extends CWidgetFieldSelectView {
+
+ public function __construct(CWidgetFieldTimeZone $field) {
+ parent::__construct($field);
+ }
+
+ public function getJavaScript(): string {
+ return '
+ var timezone_select = document.getElementById("'.$this->field->getName().'");
+ var timezone_from_list = timezone_select.getOptionByValue(Intl.DateTimeFormat().resolvedOptions().timeZone);
+ var local_list_item = timezone_select.getOptionByValue("'.TIMEZONE_DEFAULT_LOCAL.'");
+
+ if (timezone_from_list && local_list_item) {
+ const title = `${local_list_item.label}: ${timezone_from_list.label}`;
+ local_list_item.label = title;
+ local_list_item._node.innerText = title;
+
+ if (timezone_select.selectedIndex === local_list_item._index) {
+ timezone_select._preselect(timezone_select.selectedIndex);
+ }
+ }
+ ';
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldUrlView.php b/ui/include/classes/html/widgets/CWidgetFieldUrlView.php
new file mode 100644
index 00000000000..3b4158bef5a
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldUrlView.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldUrl;
+
+class CWidgetFieldUrlView extends CWidgetFieldView {
+
+ public function __construct(CWidgetFieldUrl $field) {
+ $this->field = $field;
+ }
+
+ public function getView(): CTextBox {
+ return (new CTextBox($this->field->getName(), $this->field->getValue()))
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setAriaRequired($this->isRequired());
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldView.php b/ui/include/classes/html/widgets/CWidgetFieldView.php
new file mode 100644
index 00000000000..7d3e3b01cb6
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldView.php
@@ -0,0 +1,91 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\CWidgetField;
+
+abstract class CWidgetFieldView {
+
+ protected CWidgetField $field;
+
+ protected string $form_name = '';
+
+ protected ?CTag $hint = null;
+ protected $help_hint;
+
+ public function setFormName($form_name): self {
+ $this->form_name = $form_name;
+
+ return $this;
+ }
+
+ public function setHint(CTag $hint): self {
+ $this->hint = $hint;
+
+ return $this;
+ }
+
+ public function setHelpHint($help_hint): self {
+ $this->help_hint = $help_hint;
+
+ return $this;
+ }
+
+ public function getLabel(): ?CLabel {
+ $label = $this->field->getLabel();
+
+ if ($label === null) {
+ return null;
+ }
+
+ return new CLabel([
+ $label,
+ $this->hint,
+ $this->help_hint !== null ? makeHelpIcon($this->help_hint) : null
+ ], zbx_formatDomId($this->field->getName()));
+ }
+
+ /**
+ * @return null|array|CTag
+ */
+ public function getView() {
+ return null;
+ }
+
+ public function getJavaScript(): string {
+ return '';
+ }
+
+ public function getTemplates(): array {
+ return [];
+ }
+
+ public function isNotEmpty(): bool {
+ return ($this->field->getFlags() & CWidgetField::FLAG_NOT_EMPTY) !== 0;
+ }
+
+ public function isRequired(): bool {
+ return ($this->field->getFlags() & CWidgetField::FLAG_LABEL_ASTERISK) !== 0;
+ }
+
+ public function isDisabled(): bool {
+ return ($this->field->getFlags() & CWidgetField::FLAG_DISABLED) !== 0;
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFieldWidgetSelectView.php b/ui/include/classes/html/widgets/CWidgetFieldWidgetSelectView.php
new file mode 100644
index 00000000000..0a643d27810
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFieldWidgetSelectView.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\Fields\CWidgetFieldWidgetSelect;
+
+class CWidgetFieldWidgetSelectView extends CWidgetFieldView {
+
+ protected ?CSelect $select = null;
+
+ public function __construct(CWidgetFieldWidgetSelect $field) {
+ $this->field = $field;
+ }
+
+ public function getLabel(): ?CLabel {
+ $label = parent::getLabel();
+
+ if ($label !== null) {
+ $label->setFor($this->getView()->getFocusableElementId());
+ }
+
+ return $label;
+ }
+
+ public function getView(): CSelect {
+ if ($this->select === null) {
+ $this->select = (new CSelect($this->field->getName()))
+ ->setId($this->field->getName())
+ ->setFocusableElementId('label-'.$this->field->getName())
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setAriaRequired($this->isRequired());
+ }
+
+ return $this->select;
+ }
+
+ public function getJavaScript(): string {
+ return '
+ var filter_select = document.getElementById("'.$this->field->getName().'");
+
+ filter_select.addOption('.json_encode(['label' => _('Select widget'), 'value' => '-1']).');
+ filter_select.selectedIndex = 0;
+
+ ZABBIX.Dashboard.getSelectedDashboardPage().getWidgets().forEach((widget) => {
+ if (widget.getType() === "'.$this->field->getSearchByValue().'") {
+ const widget_reference = widget.getFields().reference;
+ filter_select.addOption({label: widget.getHeaderName(), value: widget_reference});
+ if (widget_reference === "'.$this->field->getValue().'") {
+ filter_select.value = "'.$this->field->getValue().'";
+ }
+ }
+ });
+ ';
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetFormView.php b/ui/include/classes/html/widgets/CWidgetFormView.php
new file mode 100644
index 00000000000..d85d6c74f80
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetFormView.php
@@ -0,0 +1,281 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Zabbix\Widgets\CWidgetField;
+
+class CWidgetFormView {
+
+ private array $data;
+ private string $name;
+
+ private array $vars = [];
+ private array $javascript = [];
+ private array $templates = [];
+
+ private CFormGrid $form_grid;
+
+ public function __construct($data, $name = 'widget_dialogue_form') {
+ $this->data = $data;
+ $this->name = $name;
+
+ $this->makeFormGrid();
+ }
+
+ /**
+ * Add configuration row with single label and multiple CWidgetFieldView-s as content.
+ *
+ * @param array|string|null $label
+ * @param array $items
+ * @param string|null $row_class
+ *
+ * @return $this
+ */
+ public function addFieldsGroup($label, array $items, string $row_class = null): self {
+ foreach ($items as &$item) {
+ if ($item instanceof CWidgetFieldView) {
+ $item = $this->makeField($item);
+ }
+ }
+ unset($item);
+
+ $this->form_grid->addItem([
+ $label !== null
+ ? (new CLabel($label))
+ ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL)
+ ->addClass($row_class)
+ : null,
+ (new CDiv($items))
+ ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
+ ->addClass($row_class)
+ ]);
+
+ return $this;
+ }
+
+ /**
+ * Add configuration row based on single CWidgetFieldView.
+ *
+ * @param CWidgetFieldView|null $field_view
+ * @param string|null $row_class
+ * @param bool $show_label
+ *
+ * @return $this
+ */
+ public function addField(?CWidgetFieldView $field_view, string $row_class = null, bool $show_label = true): self {
+ if ($field_view !== null) {
+ $this->registerFieldView($field_view);
+
+ $this->form_grid->addItem($this->makeField($field_view, $row_class, $show_label));
+ }
+
+ return $this;
+ }
+
+ /**
+ * Prepare CWidgetFieldView for addFieldGroup() items array in default view or by custom CHTML.
+ *
+ * @param CWidgetFieldView $field_view
+ * @param array $items
+ * @param string|null $row_class
+ *
+ * @return array Label and field views taken from field object or $items array if not empty.
+ */
+ public function makeCustomField(CWidgetFieldView $field_view, array $items = [], string $row_class = null): array {
+ $this->registerFieldView($field_view);
+
+ return $items ?: $this->makeField($field_view, $row_class);
+ }
+
+ public function addItem($value): self {
+ $this->form_grid->addItem($value);
+
+ return $this;
+ }
+
+ public function addVar(string $name, string $value): self {
+ $this->vars[] = (new CVar($name, $value))->removeId();
+
+ return $this;
+ }
+
+ public function addFieldVar(?CWidgetField $field): self {
+ if ($field !== null) {
+ $this->vars[] = new CVar($field->getName(), $field->getValue());
+ }
+
+ return $this;
+ }
+
+ public function addJavaScript(string $javascript): self {
+ $this->javascript[] = $javascript;
+
+ return $this;
+ }
+
+ public function includeJsFile(string $file_path): self {
+ $view = APP::View();
+
+ if ($view !== null) {
+ ob_start();
+
+ if ((include $view->getDirectory().'/'.$file_path) === false) {
+ ob_end_clean();
+
+ throw new RuntimeException(sprintf('Cannot read file: "%s".', $file_path));
+ }
+
+ $this->javascript[] = ob_get_clean();
+ }
+
+
+ return $this;
+ }
+
+ /**
+ * @throws JsonException
+ */
+ public function show(): void {
+ $output = [
+ 'header' => $this->data['unique_id'] !== null ? _('Edit widget') : _('Add widget'),
+ 'body' => implode('', [
+ (new CForm())
+ ->cleanItems()
+ ->setId('widget-dialogue-form')
+ ->setName($this->name)
+ ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FORM)
+ ->addClass('dashboard-widget-'.$this->data['type'])
+ ->addItem($this->vars)
+ ->addItem($this->form_grid)
+ // Submit button is needed to enable submit event on Enter on inputs.
+ ->addItem((new CInput('submit', 'dashboard_widget_config_submit'))->addStyle('display: none;')),
+ implode('', $this->templates),
+ $this->javascript ? new CScriptTag($this->javascript) : ''
+ ]),
+ 'buttons' => [
+ [
+ 'title' => $this->data['unique_id'] !== null ? _('Apply') : _('Add'),
+ 'class' => 'dialogue-widget-save',
+ 'keepOpen' => true,
+ 'isSubmit' => true,
+ 'action' => 'ZABBIX.Dashboard.applyWidgetProperties();'
+ ]
+ ],
+ 'doc_url' => CDocHelper::getUrl(CDocHelper::DASHBOARDS_WIDGET_EDIT),
+ 'data' => [
+ 'original_properties' => [
+ 'type' => $this->data['type'],
+ 'unique_id' => $this->data['unique_id'],
+ 'dashboard_page_unique_id' => $this->data['dashboard_page_unique_id']
+ ]
+ ]
+ ];
+
+ if ($error = get_and_clear_messages()) {
+ $output['error'] = [
+ 'messages' => array_column($error, 'message')
+ ];
+ }
+
+ if ($this->data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
+ CProfiler::getInstance()->stop();
+ $output['debug'] = CProfiler::getInstance()->make()->toString();
+ }
+
+ echo json_encode($output, JSON_THROW_ON_ERROR);
+ }
+
+ private function addTemplate(?CTemplateTag $template): void {
+ if ($template !== null) {
+ $this->templates[$template->getId()] = $template;
+ }
+ }
+
+ private function registerFieldView(CWidgetFieldView $field_view): void {
+ $field_view->setFormName($this->name);
+
+ $this->addJavaScript($field_view->getJavaScript());
+
+ foreach ($field_view->getTemplates() as $template) {
+ $this->addTemplate($template);
+ }
+ }
+
+ private function makeFormGrid(): void {
+ $types_select = (new CSelect('type'))
+ ->setFocusableElementId('label-type')
+ ->setId('type')
+ ->setValue($this->data['type'])
+ ->setAttribute('autofocus', 'autofocus')
+ ->addOptions(CSelect::createOptionsFromArray($this->data['known_types']))
+ ->addStyle('max-width: '.ZBX_TEXTAREA_MEDIUM_WIDTH.'px');
+
+ if ($this->data['deprecated_types']) {
+ $types_select->addOptionGroup(
+ (new CSelectOptionGroup(_('Deprecated')))
+ ->addOptions(CSelect::createOptionsFromArray($this->data['deprecated_types']))
+ );
+ }
+
+ $this->form_grid = (new CFormGrid())
+ ->addItem([
+ new CLabel(_('Type'), 'label-type'),
+ new CFormField(array_key_exists($this->data['type'], $this->data['deprecated_types'])
+ ? [$types_select, ' ', makeWarningIcon(_('Widget is deprecated.'))]
+ : $types_select
+ )
+ ])
+ ->addItem(
+ (new CFormField(
+ (new CCheckBox('show_header'))
+ ->setLabel(_('Show header'))
+ ->setLabelPosition(CCheckBox::LABEL_POSITION_LEFT)
+ ->setId('show_header')
+ ->setChecked($this->data['view_mode'] == ZBX_WIDGET_VIEW_MODE_NORMAL)
+ ))->addClass('form-field-show-header')
+ )
+ ->addItem([
+ new CLabel(_('Name'), 'name'),
+ new CFormField(
+ (new CTextBox('name', $this->data['name']))
+ ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setAttribute('placeholder', _('default'))
+ )
+ ]);
+
+ if (array_key_exists('rf_rate', $this->data['fields'])) {
+ $this->addField(new CWidgetFieldSelectView($this->data['fields']['rf_rate']));
+ }
+ }
+
+ private function makeField(CWidgetFieldView $field_view, string $row_class = null, bool $show_label = true): array {
+ $label = $show_label ? $field_view->getLabel() : null;
+
+ return [
+ $label !== null
+ ? $label
+ ->addClass($row_class)
+ ->setAsteriskMark($field_view->isRequired())
+ : null,
+ (new CFormField($field_view->getView()))
+ ->addClass($row_class)
+ ];
+ }
+}
diff --git a/ui/include/classes/html/widgets/CWidgetView.php b/ui/include/classes/html/widgets/CWidgetView.php
new file mode 100644
index 00000000000..33f09802990
--- /dev/null
+++ b/ui/include/classes/html/widgets/CWidgetView.php
@@ -0,0 +1,69 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+class CWidgetView extends CObject {
+
+ private array $data;
+
+ private array $vars = [];
+
+ public function __construct($data) {
+ parent::__construct();
+
+ $this->data = $data;
+ }
+
+ public function setVar(string $name, $value): self {
+ $this->vars[$name] = $value;
+
+ return $this;
+ }
+
+ /**
+ * @throws JsonException
+ */
+ public function show($destroy = true): void {
+ $output = [];
+
+ if (array_key_exists('name', $this->data)) {
+ $output['name'] = $this->data['name'];
+ }
+
+ if ($this->items) {
+ $output['body'] = implode('', $this->items);
+ }
+
+ foreach ($this->vars as $name => $value) {
+ $output[$name] = $value;
+ }
+
+ if ($messages = get_and_clear_messages()) {
+ $output['messages'] = array_column($messages, 'message');
+ }
+
+ if (array_key_exists('user', $this->data) && $this->data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
+ CProfiler::getInstance()->stop();
+ $output['debug'] = CProfiler::getInstance()->make()->toString();
+ }
+
+ echo json_encode($output, JSON_THROW_ON_ERROR);
+ }
+}
diff --git a/ui/include/classes/import/CConfigurationImport.php b/ui/include/classes/import/CConfigurationImport.php
index 9697ea9236c..d16635b0a85 100644
--- a/ui/include/classes/import/CConfigurationImport.php
+++ b/ui/include/classes/import/CConfigurationImport.php
@@ -758,8 +758,19 @@ class CConfigurationImport {
foreach ($order_tree[$host] as $item_key => $level) {
$item = $items[$item_key];
$item['hostid'] = $hostid;
+ unset($item['triggers']);
+
$levels[$level] = true;
+ $delay_types = [ITEM_TYPE_ZABBIX, ITEM_TYPE_SIMPLE, ITEM_TYPE_INTERNAL, ITEM_TYPE_ZABBIX_ACTIVE,
+ ITEM_TYPE_EXTERNAL, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_IPMI, ITEM_TYPE_SSH, ITEM_TYPE_TELNET,
+ ITEM_TYPE_CALCULATED, ITEM_TYPE_JMX, ITEM_TYPE_HTTPAGENT, ITEM_TYPE_SNMP, ITEM_TYPE_SCRIPT
+ ];
+
+ if (!in_array($item['type'], $delay_types)) {
+ unset($item['delay']);
+ }
+
if (array_key_exists('interface_ref', $item) && $item['interface_ref']) {
$interfaceid = $this->referencer->findInterfaceidByRef($hostid, $item['interface_ref']);
@@ -771,6 +782,7 @@ class CConfigurationImport {
$item['interfaceid'] = $interfaceid;
}
+ unset($item['interface_ref']);
if (array_key_exists('valuemap', $item) && $item['valuemap']) {
$valuemapid = $this->referencer->findValuemapidByName($hostid, $item['valuemap']['name']);
@@ -785,8 +797,8 @@ class CConfigurationImport {
}
$item['valuemapid'] = $valuemapid;
- unset($item['valuemap']);
}
+ unset($item['valuemap']);
if ($item['type'] == ITEM_TYPE_DEPENDENT) {
if (!array_key_exists('key', $item[$master_item_key])) {
@@ -837,17 +849,9 @@ class CConfigurationImport {
if ($itemid !== null) {
$item['itemid'] = $itemid;
- if (!array_key_exists($level, $items_to_update)) {
- $items_to_update[$level] = [];
- }
-
$items_to_update[$level][] = $item;
}
else {
- if (!array_key_exists($level, $items_to_create)) {
- $items_to_create[$level] = [];
- }
-
$items_to_create[$level][] = $item;
}
}
@@ -908,7 +912,7 @@ class CConfigurationImport {
* Update CItem or CItemPrototype with dependency.
*
* @param array $items_by_level Associative array of entities where key is entity dependency
- * level and value is array of entities for this level.
+ * level and value is array of entities for this level.
* @param string $master_item_key Master entity array key in xml parsed data.
* @param CItem|CItemPrototype $api_service Entity service which is capable to proceed with entity update.
*
@@ -917,6 +921,8 @@ class CConfigurationImport {
protected function updateItemsWithDependency(array $items_by_level, string $master_item_key,
CItemGeneral $api_service): void {
foreach ($items_by_level as $items_to_update) {
+ $hostids = [];
+
foreach ($items_to_update as &$item) {
if (array_key_exists($master_item_key, $item)) {
$item['master_itemid'] = $this->referencer->findItemidByKey($item['hostid'],
@@ -930,15 +936,19 @@ class CConfigurationImport {
}
unset($item[$master_item_key]);
}
+
+ unset($item['uuid']);
+
+ $hostids[] = $item['hostid'];
+ unset($item['hostid']);
}
unset($item);
- $updated_items = $api_service->update(array_map(function($item) {
- unset($item['uuid']);
- return $item;
- }, $items_to_update));
+ $updated_items = $api_service->update($items_to_update);
foreach ($items_to_update as $index => $item) {
+ $item['hostid'] = array_shift($hostids);
+
$this->referencer->setDbItem($updated_items['itemids'][$index], $item);
}
}
@@ -1138,8 +1148,19 @@ class CConfigurationImport {
foreach ($item_prototypes as $index => $level) {
$item_prototype = $discovery_rule['item_prototypes'][$index];
$item_prototype['hostid'] = $hostid;
+ unset($item_prototype['trigger_prototypes']);
+
$levels[$level] = true;
+ $delay_types = [ITEM_TYPE_ZABBIX, ITEM_TYPE_SIMPLE, ITEM_TYPE_INTERNAL, ITEM_TYPE_ZABBIX_ACTIVE,
+ ITEM_TYPE_EXTERNAL, ITEM_TYPE_DB_MONITOR, ITEM_TYPE_IPMI, ITEM_TYPE_SSH, ITEM_TYPE_TELNET,
+ ITEM_TYPE_CALCULATED, ITEM_TYPE_JMX, ITEM_TYPE_HTTPAGENT, ITEM_TYPE_SNMP, ITEM_TYPE_SCRIPT
+ ];
+
+ if (!in_array($item_prototype['type'], $delay_types)) {
+ unset($item_prototype['delay']);
+ }
+
if (array_key_exists('interface_ref', $item_prototype) && $item_prototype['interface_ref']) {
$interfaceid = $this->referencer->findInterfaceidByRef($hostid,
$item_prototype['interface_ref']
@@ -1158,6 +1179,7 @@ class CConfigurationImport {
));
}
}
+ unset($item_prototype['interface_ref']);
if ($item_prototype['valuemap']) {
$valuemapid = $this->referencer->findValuemapidByName($hostid,
@@ -1175,8 +1197,8 @@ class CConfigurationImport {
}
$item_prototype['valuemapid'] = $valuemapid;
- unset($item_prototype['valuemap']);
}
+ unset($item_prototype['valuemap']);
if ($item_prototype['type'] == ITEM_TYPE_DEPENDENT) {
if (!array_key_exists('key', $item_prototype[$master_item_key])) {
@@ -1220,11 +1242,9 @@ class CConfigurationImport {
? $this->referencer->findItemidByUuid($item_prototype['uuid'])
: $this->referencer->findItemidByKey($hostid, $item_prototype['key_']);
- $item_prototype['rule'] = [
- 'hostid' => $hostid,
- 'key' => $discovery_rule['key_']
- ];
- $item_prototype['ruleid'] = $itemid;
+ if ($item_prototypeid === null) {
+ $item_prototype['ruleid'] = $itemid;
+ }
foreach ($item_prototype['preprocessing'] as &$preprocessing_step) {
$preprocessing_step['params'] = implode("\n", $preprocessing_step['parameters']);
@@ -2701,23 +2721,17 @@ class CConfigurationImport {
$parent_item_keys = [];
$resolved_masters_cache = [];
- $host_name_to_hostid = array_fill_keys(array_keys($items_by_hosts), null);
+ $host_name_to_hostid = [];
- foreach ($host_name_to_hostid as $host_name => &$hostid) {
+ foreach ($items_by_hosts as $host_name => $items) {
$hostid = $this->referencer->findTemplateidOrHostidByHost($host_name);
- }
- unset($hostid);
- foreach ($items_by_hosts as $host_name => $items) {
- if (!array_key_exists($host_name, $host_name_to_hostid)) {
- throw new Exception(_s('Incorrect value for field "%1$s": %2$s.', 'host',
- _s('value "%1$s" not found', $host_name)
- ));
+ if ($hostid === null) {
+ unset($items_by_hosts[$host_name]);
+ continue;
}
- if (!array_key_exists($host_name, $resolved_masters_cache)) {
- $resolved_masters_cache[$host_name] = [];
- }
+ $host_name_to_hostid[$host_name] = $hostid;
// Cache input array entities.
foreach ($items as $item) {
@@ -2727,7 +2741,7 @@ class CConfigurationImport {
];
if ($item['type'] == ITEM_TYPE_DEPENDENT && array_key_exists('key', $item[$master_item_key])) {
- $parent_item_hostids[$host_name_to_hostid[$host_name]] = true;
+ $parent_item_hostids[$hostid] = true;
$parent_item_keys[$item[$master_item_key]['key']] = true;
}
}
diff --git a/ui/include/classes/import/CImportReferencer.php b/ui/include/classes/import/CImportReferencer.php
index 0ccc0915b92..16017a2e14c 100644
--- a/ui/include/classes/import/CImportReferencer.php
+++ b/ui/include/classes/import/CImportReferencer.php
@@ -1000,7 +1000,7 @@ class CImportReferencer {
'output' => ['name', 'uuid'],
'filter' => [
'uuid' => array_column($this->template_groups, 'uuid'),
- 'name' => array_column($this->template_groups, 'name')
+ 'name' => array_keys($this->template_groups)
],
'searchByAny' => true,
'preservekeys' => true
@@ -1023,7 +1023,7 @@ class CImportReferencer {
'output' => ['name', 'uuid'],
'filter' => [
'uuid' => array_column($this->host_groups, 'uuid'),
- 'name' => array_column($this->host_groups, 'name')
+ 'name' => array_keys($this->host_groups)
],
'searchByAny' => true,
'preservekeys' => true
diff --git a/ui/include/classes/import/converters/C10ImportConverter.php b/ui/include/classes/import/converters/C10ImportConverter.php
index d901a4f62e8..7e4eafe7fad 100644
--- a/ui/include/classes/import/converters/C10ImportConverter.php
+++ b/ui/include/classes/import/converters/C10ImportConverter.php
@@ -323,26 +323,22 @@ class C10ImportConverter extends CConverter {
// map items to new interfaces
if (isset($host['items']) && $host['items']) {
- $item_interface = [
- ITEM_TYPE_ZABBIX => INTERFACE_TYPE_AGENT,
- ITEM_TYPE_SNMPV1 => INTERFACE_TYPE_SNMP,
- ITEM_TYPE_SIMPLE => INTERFACE_TYPE_AGENT,
- ITEM_TYPE_SNMPV2C => INTERFACE_TYPE_SNMP,
- ITEM_TYPE_SNMPV3 => INTERFACE_TYPE_SNMP,
- ITEM_TYPE_EXTERNAL => INTERFACE_TYPE_ANY,
- ITEM_TYPE_IPMI => INTERFACE_TYPE_IPMI,
- ITEM_TYPE_SSH => INTERFACE_TYPE_ANY,
- ITEM_TYPE_TELNET => INTERFACE_TYPE_ANY
- ];
-
foreach ($host['items'] as &$item) {
- if (!array_key_exists('type', $item) || !array_key_exists($item['type'], $item_interface)) {
+ if (!array_key_exists('type', $item)) {
continue;
}
- switch ($item_interface[$item['type']]) {
+ // 1.8 till 4.4 uses the old item types.
+ if (in_array($item['type'], [ITEM_TYPE_SNMPV1, ITEM_TYPE_SNMPV2C, ITEM_TYPE_SNMPV3])) {
+ $interface_type = INTERFACE_TYPE_SNMP;
+ }
+ else {
+ $interface_type = itemTypeInterface($item['type']);
+ }
+
+ switch ($interface_type) {
case INTERFACE_TYPE_AGENT:
- case INTERFACE_TYPE_ANY:
+ case INTERFACE_TYPE_OPT:
$item['interface_ref'] = $agentInterface['interface_ref'];
break;
diff --git a/ui/include/classes/import/converters/C62ImportConverter.php b/ui/include/classes/import/converters/C62ImportConverter.php
index 9d236322a7d..19bb2ccf11d 100644
--- a/ui/include/classes/import/converters/C62ImportConverter.php
+++ b/ui/include/classes/import/converters/C62ImportConverter.php
@@ -24,6 +24,15 @@
*/
class C62ImportConverter extends CConverter {
+ private const DASHBOARD_WIDGET_TYPE = [
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_CLOCK => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_CLOCK,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_GRAPH_CLASSIC => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_GRAPH_CLASSIC,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_GRAPH_PROTOTYPE => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_GRAPH_PROTOTYPE,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_ITEM => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_ITEM,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_PLAIN_TEXT => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_PLAIN_TEXT,
+ CXmlConstantName::DASHBOARD_WIDGET_TYPE_URL => CXmlConstantValue::DASHBOARD_WIDGET_TYPE_URL
+ ];
+
/**
* Convert import data from 6.2 to 6.4 version.
*
@@ -34,6 +43,120 @@ class C62ImportConverter extends CConverter {
public function convert(array $data): array {
$data['zabbix_export']['version'] = '6.4';
+ if (array_key_exists('hosts', $data['zabbix_export'])) {
+ $data['zabbix_export']['hosts'] = self::convertHosts($data['zabbix_export']['hosts']);
+ }
+
+ if (array_key_exists('templates', $data['zabbix_export'])) {
+ $data['zabbix_export']['templates'] = self::convertTemplates($data['zabbix_export']['templates']);
+ }
+
return $data;
}
+
+ /**
+ * Convert hosts.
+ *
+ * @param array $hosts
+ *
+ * @return array
+ */
+ private static function convertHosts(array $hosts): array {
+ foreach ($hosts as &$host) {
+ if (array_key_exists('discovery_rules', $host)) {
+ $host['discovery_rules'] = self::convertDiscoveryRules($host['discovery_rules']);
+ }
+ }
+ unset($host);
+
+ return $hosts;
+ }
+
+ /**
+ * Convert templates.
+ *
+ * @param array $templates
+ *
+ * @return array
+ */
+ private static function convertTemplates(array $templates): array {
+ foreach ($templates as &$template) {
+ if (array_key_exists('discovery_rules', $template)) {
+ $template['discovery_rules'] = self::convertDiscoveryRules($template['discovery_rules']);
+ }
+
+ if (array_key_exists('dashboards', $template)) {
+ $template['dashboards'] = self::convertDashboards($template['dashboards']);
+ }
+ }
+ unset($template);
+
+ return $templates;
+ }
+
+ /**
+ * Convert discovery rules.
+ *
+ * @param array $discovery_rules
+ *
+ * @return array
+ */
+ private static function convertDiscoveryRules(array $discovery_rules): array {
+ foreach ($discovery_rules as &$discovery_rule) {
+ if (array_key_exists('item_prototypes', $discovery_rule)) {
+ $discovery_rule['item_prototypes'] = self::convertItemPrototypes($discovery_rule['item_prototypes']);
+ }
+ }
+ unset($discovery_rule);
+
+ return $discovery_rules;
+ }
+
+ /**
+ * Convert item prototypes.
+ *
+ * @param array $item_prototypes
+ *
+ * @return array
+ */
+ private static function convertItemPrototypes(array $item_prototypes): array {
+ foreach ($item_prototypes as &$item_prototype) {
+ if (array_key_exists('inventory_link', $item_prototype)) {
+ unset($item_prototype['inventory_link']);
+ }
+ }
+ unset($item_prototype);
+
+ return $item_prototypes;
+ }
+
+ /**
+ * Convert dashboards.
+ *
+ * @param array $dashboards
+ *
+ * @return array
+ */
+ private static function convertDashboards(array $dashboards): array {
+ foreach ($dashboards as &$dashboard) {
+ if (!array_key_exists('pages', $dashboard)) {
+ continue;
+ }
+
+ foreach ($dashboard['pages'] as &$dashboard_page) {
+ if (!array_key_exists('widgets', $dashboard_page)) {
+ continue;
+ }
+
+ foreach ($dashboard_page['widgets'] as &$widget) {
+ $widget['type'] = self::DASHBOARD_WIDGET_TYPE[$widget['type']];
+ }
+ unset($widget);
+ }
+ unset($dashboard_page);
+ }
+ unset($dashboard);
+
+ return $dashboards;
+ }
}
diff --git a/ui/include/classes/import/converters/CImportConverterFactory.php b/ui/include/classes/import/converters/CImportConverterFactory.php
index 97e693ff11c..a4a88562064 100644
--- a/ui/include/classes/import/converters/CImportConverterFactory.php
+++ b/ui/include/classes/import/converters/CImportConverterFactory.php
@@ -22,23 +22,29 @@
/**
* Factory for creating import conversions.
*/
-class CImportConverterFactory extends CRegistryFactory {
+final class CImportConverterFactory extends CRegistryFactory {
+
+ private const SEQUENTIAL_CONVERTERS = [
+ '1.0' => 'C10ImportConverter',
+ '2.0' => 'C20ImportConverter',
+ '3.0' => 'C30ImportConverter',
+ '3.2' => 'C32ImportConverter',
+ '3.4' => 'C34ImportConverter',
+ '4.0' => 'C40ImportConverter',
+ '4.2' => 'C42ImportConverter',
+ '4.4' => 'C44ImportConverter',
+ '5.0' => 'C50ImportConverter',
+ '5.2' => 'C52ImportConverter',
+ '5.4' => 'C54ImportConverter',
+ '6.0' => 'C60ImportConverter',
+ '6.2' => 'C62ImportConverter'
+ ];
public function __construct() {
- parent::__construct([
- '1.0' => 'C10ImportConverter',
- '2.0' => 'C20ImportConverter',
- '3.0' => 'C30ImportConverter',
- '3.2' => 'C32ImportConverter',
- '3.4' => 'C34ImportConverter',
- '4.0' => 'C40ImportConverter',
- '4.2' => 'C42ImportConverter',
- '4.4' => 'C44ImportConverter',
- '5.0' => 'C50ImportConverter',
- '5.2' => 'C52ImportConverter',
- '5.4' => 'C54ImportConverter',
- '6.0' => 'C60ImportConverter',
- '6.2' => 'C62ImportConverter'
- ]);
+ parent::__construct(self::SEQUENTIAL_CONVERTERS);
+ }
+
+ public static function getSequentialVersions() {
+ return array_keys(self::SEQUENTIAL_CONVERTERS);
}
}
diff --git a/ui/include/classes/import/validators/C64XmlValidator.php b/ui/include/classes/import/validators/C64XmlValidator.php
index 8cb51d81ad6..625fe8cb1e1 100644
--- a/ui/include/classes/import/validators/C64XmlValidator.php
+++ b/ui/include/classes/import/validators/C64XmlValidator.php
@@ -374,15 +374,6 @@ class C64XmlValidator extends CXmlValidatorGeneral {
CXmlConstantValue::CUSTOM_INTERFACES_YES => CXmlConstantName::YES
];
- private $DASHBOARD_WIDGET_TYPE = [
- CXmlConstantValue::DASHBOARD_WIDGET_TYPE_CLOCK => CXmlConstantName::DASHBOARD_WIDGET_TYPE_CLOCK,
- CXmlConstantValue::DASHBOARD_WIDGET_TYPE_GRAPH_CLASSIC => CXmlConstantName::DASHBOARD_WIDGET_TYPE_GRAPH_CLASSIC,
- CXmlConstantValue::DASHBOARD_WIDGET_TYPE_GRAPH_PROTOTYPE => CXmlConstantName::DASHBOARD_WIDGET_TYPE_GRAPH_PROTOTYPE,
- CXmlConstantValue::DASHBOARD_WIDGET_TYPE_ITEM => CXmlConstantName::DASHBOARD_WIDGET_TYPE_ITEM,
- CXmlConstantValue::DASHBOARD_WIDGET_TYPE_PLAIN_TEXT => CXmlConstantName::DASHBOARD_WIDGET_TYPE_PLAIN_TEXT,
- CXmlConstantValue::DASHBOARD_WIDGET_TYPE_URL => CXmlConstantName::DASHBOARD_WIDGET_TYPE_URL
- ];
-
private $DASHBOARD_WIDGET_FIELD_TYPE = [
CXmlConstantValue::DASHBOARD_WIDGET_FIELD_TYPE_INTEGER => CXmlConstantName::DASHBOARD_WIDGET_FIELD_TYPE_INTEGER,
CXmlConstantValue::DASHBOARD_WIDGET_FIELD_TYPE_STRING => CXmlConstantName::DASHBOARD_WIDGET_FIELD_TYPE_STRING,
@@ -638,7 +629,6 @@ class C64XmlValidator extends CXmlValidatorGeneral {
'publickey' => ['type' => XML_STRING, 'default' => ''],
'privatekey' => ['type' => XML_STRING, 'default' => ''],
'description' => ['type' => XML_STRING, 'default' => ''],
- 'inventory_link' => ['type' => XML_STRING, 'default' => CXmlConstantValue::NONE, 'in' => $this->ITEM_INVENTORY_LINK],
'valuemap' => ['type' => XML_ARRAY, 'rules' => [
'name' => ['type' => XML_STRING | XML_REQUIRED]
]],
@@ -1324,7 +1314,6 @@ class C64XmlValidator extends CXmlValidatorGeneral {
'publickey' => ['type' => XML_STRING, 'default' => ''],
'privatekey' => ['type' => XML_STRING, 'default' => ''],
'description' => ['type' => XML_STRING, 'default' => ''],
- 'inventory_link' => ['type' => XML_STRING, 'default' => CXmlConstantValue::NONE, 'in' => $this->ITEM_INVENTORY_LINK],
'valuemap' => ['type' => XML_ARRAY, 'rules' => [
'name' => ['type' => XML_STRING | XML_REQUIRED]
]],
@@ -1747,7 +1736,7 @@ class C64XmlValidator extends CXmlValidatorGeneral {
'display_period' => ['type' => XML_STRING, 'default' => '0'],
'widgets' => ['type' => XML_INDEXED_ARRAY, 'prefix' => 'widget', 'rules' => [
'widget' => ['type' => XML_ARRAY, 'rules' => [
- 'type' => ['type' => XML_STRING | XML_REQUIRED, 'in' => $this->DASHBOARD_WIDGET_TYPE],
+ 'type' => ['type' => XML_STRING | XML_REQUIRED],
'name' => ['type' => XML_STRING, 'default' => ''],
'x' => ['type' => XML_STRING, 'default' => '0'],
'y' => ['type' => XML_STRING, 'default' => '0'],
diff --git a/ui/include/classes/mvc/CControllerResponse.php b/ui/include/classes/mvc/CControllerResponse.php
index ddb418c6327..90559fed541 100644
--- a/ui/include/classes/mvc/CControllerResponse.php
+++ b/ui/include/classes/mvc/CControllerResponse.php
@@ -39,7 +39,7 @@ abstract class CControllerResponse {
CMessageHelper::restoreScheduleMessages();
}
- (new CPageHeader(_('Loading...'), CWebUser::getLang()))->display();
+ (new CHtmlPageHeader(_('Loading...'), CWebUser::getLang()))->show();
echo '<body>';
diff --git a/ui/include/classes/mvc/CRouter.php b/ui/include/classes/mvc/CRouter.php
index 4f444971dbe..83195e00f05 100644
--- a/ui/include/classes/mvc/CRouter.php
+++ b/ui/include/classes/mvc/CRouter.php
@@ -22,38 +22,28 @@
class CRouter {
/**
* Layout used for view rendering.
- *
- * @var string
*/
- private $layout = null;
+ private ?string $layout = null;
/**
* Controller class for action handling.
- *
- * @var string
*/
- private $controller = null;
+ private ?string $controller = null;
/**
* View used to generate HTML, CSV, JSON and other content.
- *
- * @var string
*/
- private $view = null;
+ private ?string $view = null;
/**
* Unique action (request) identifier.
- *
- * @var string
*/
- private $action = null;
+ private ?string $action = null;
/**
* Mapping between action and corresponding controller, layout and view.
- *
- * @var array
*/
- private $routes = [
+ private array $routes = [
// action controller layout view
'action.operation.get' => ['CControllerActionOperationGet', 'layout.json', null],
'action.operation.validate' => ['CControllerActionOperationValidate', 'layout.json', null],
@@ -74,6 +64,7 @@ class CRouter {
'correlation.enable' => ['CControllerCorrelationEnable', null, null],
'correlation.list' => ['CControllerCorrelationList', 'layout.htmlpage', 'configuration.correlation.list'],
'correlation.update' => ['CControllerCorrelationUpdate', null, null],
+ 'dashboard.config.hash' => ['CControllerDashboardConfigHash', 'layout.json', null],
'dashboard.delete' => ['CControllerDashboardDelete', null, null],
'dashboard.list' => ['CControllerDashboardList', 'layout.htmlpage', 'monitoring.dashboard.list'],
'dashboard.page.properties.check' => ['CControllerDashboardPagePropertiesCheck', 'layout.json', null],
@@ -85,8 +76,6 @@ class CRouter {
'dashboard.update' => ['CControllerDashboardUpdate', 'layout.json', null],
'dashboard.view' => ['CControllerDashboardView', 'layout.htmlpage', 'monitoring.dashboard.view'],
'dashboard.widget.check' => ['CControllerDashboardWidgetCheck', 'layout.json', null],
- 'dashboard.widget.configure' => ['CControllerDashboardWidgetConfigure', 'layout.json', null],
- 'dashboard.widget.edit' => ['CControllerDashboardWidgetEdit', 'layout.json', 'monitoring.dashboard.widget.edit'],
'dashboard.widget.rfrate' => ['CControllerDashboardWidgetRfRate', 'layout.json', null],
'dashboard.widgets.sanitize' => ['CControllerDashboardWidgetsSanitize', 'layout.json', null],
'discovery.create' => ['CControllerDiscoveryCreate', null, null],
@@ -102,8 +91,8 @@ class CRouter {
'export.sysmaps' => ['CControllerExport', 'layout.export', null],
'export.templates' => ['CControllerExport', 'layout.export', null],
'export.valuemaps' => ['CControllerExport', 'layout.export', null],
- 'favourite.create' => ['CControllerFavouriteCreate', 'layout.javascript', null],
- 'favourite.delete' => ['CControllerFavouriteDelete', 'layout.javascript', null],
+ 'favorite.create' => ['CControllerFavoriteCreate', 'layout.javascript', null],
+ 'favorite.delete' => ['CControllerFavoriteDelete', 'layout.javascript', null],
'geomaps.edit' => ['CControllerGeomapsEdit', 'layout.htmlpage', 'administration.geomaps.edit'],
'geomaps.update' => ['CControllerGeomapsUpdate', null, null],
'gui.edit' => ['CControllerGuiEdit', 'layout.htmlpage', 'administration.gui.edit'],
@@ -217,7 +206,6 @@ class CRouter {
'popup.testtriggerexpr' => ['CControllerPopupTestTriggerExpr', 'layout.json', 'popup.testtriggerexpr'],
'popup.token.edit' => ['CControllerPopupTokenEdit', 'layout.json', 'popup.token.edit'],
'popup.token.view' => ['CControllerPopupTokenView', 'layout.json', 'popup.token.view'],
- 'popup.tophosts.column.edit' => ['CControllerPopupTopHostsColumnEdit', 'layout.json', 'popup.tophosts.column.edit'],
'popup.triggerexpr' => ['CControllerPopupTriggerExpr', 'layout.json', 'popup.triggerexpr'],
'popup.valuemap.edit' => ['CControllerPopupValueMapEdit', 'layout.json', 'popup.valuemap.edit'],
'popup.valuemap.update' => ['CControllerPopupValueMapUpdate', 'layout.json', null],
@@ -315,32 +303,6 @@ class CRouter {
'userrole.list' => ['CControllerUserroleList', 'layout.htmlpage', 'administration.userrole.list'],
'userrole.update' => ['CControllerUserroleUpdate', null, null],
'web.view' => ['CControllerWebView', 'layout.htmlpage', 'monitoring.web.view'],
- 'widget.actionlog.view' => ['CControllerWidgetActionLogView', 'layout.widget', 'monitoring.widget.actionlog.view'],
- 'widget.clock.view' => ['CControllerWidgetClockView', 'layout.widget', 'monitoring.widget.clock.view'],
- 'widget.dataover.view' => ['CControllerWidgetDataOverView', 'layout.widget', 'monitoring.widget.dataover.view'],
- 'widget.discovery.view' => ['CControllerWidgetDiscoveryView', 'layout.widget', 'monitoring.widget.discovery.view'],
- 'widget.favgraphs.view' => ['CControllerWidgetFavGraphsView', 'layout.widget', 'monitoring.widget.favgraphs.view'],
- 'widget.favmaps.view' => ['CControllerWidgetFavMapsView', 'layout.widget', 'monitoring.widget.favmaps.view'],
- 'widget.geomap.view' => ['CControllerWidgetGeoMapView', 'layout.widget', 'monitoring.widget.geomap.view'],
- 'widget.graph.view' => ['CControllerWidgetGraphView', 'layout.widget', 'monitoring.widget.graph.view'],
- 'widget.graphprototype.view' => ['CControllerWidgetIteratorGraphPrototypeView', 'layout.json', null],
- 'widget.hostavail.view' => ['CControllerWidgetHostAvailView', 'layout.widget', 'monitoring.widget.hostavail.view'],
- 'widget.item.view' => ['CControllerWidgetItemView', 'layout.widget', 'monitoring.widget.item.view'],
- 'widget.map.view' => ['CControllerWidgetMapView', 'layout.widget', 'monitoring.widget.map.view'],
- 'widget.navtree.item.edit' => ['CControllerWidgetNavTreeItemEdit', 'layout.json', 'monitoring.widget.navtreeitem.edit'],
- 'widget.navtree.item.update' => ['CControllerWidgetNavTreeItemUpdate', 'layout.json', null],
- 'widget.navtree.view' => ['CControllerWidgetNavTreeView', 'layout.widget', 'monitoring.widget.navtree.view'],
- 'widget.plaintext.view' => ['CControllerWidgetPlainTextView', 'layout.widget', 'monitoring.widget.plaintext.view'],
- 'widget.problemhosts.view' => ['CControllerWidgetProblemHostsView', 'layout.widget', 'monitoring.widget.problemhosts.view'],
- 'widget.problems.view' => ['CControllerWidgetProblemsView', 'layout.widget', 'monitoring.widget.problems.view'],
- 'widget.problemsbysv.view' => ['CControllerWidgetProblemsBySvView', 'layout.widget', 'monitoring.widget.problemsbysv.view'],
- 'widget.slareport.view' => ['CControllerWidgetSlaReportView', 'layout.widget', 'monitoring.widget.slareport.view'],
- 'widget.svggraph.view' => ['CControllerWidgetSvgGraphView', 'layout.widget', 'monitoring.widget.svggraph.view'],
- 'widget.systeminfo.view' => ['CControllerWidgetSystemInfoView', 'layout.widget', 'monitoring.widget.systeminfo.view'],
- 'widget.tophosts.view' => ['CControllerWidgetTopHostsView', 'layout.widget', 'monitoring.widget.tophosts.view'],
- 'widget.trigover.view' => ['CControllerWidgetTrigOverView', 'layout.widget', 'monitoring.widget.trigover.view'],
- 'widget.url.view' => ['CControllerWidgetUrlView', 'layout.widget', 'monitoring.widget.url.view'],
- 'widget.web.view' => ['CControllerWidgetWebView', 'layout.widget', 'monitoring.widget.web.view'],
// legacy actions
'actionconf.php' => ['CLegacyAction', null, null],
@@ -381,6 +343,13 @@ class CRouter {
'triggers.php' => ['CLegacyAction', null, null]
];
+ private const DASHBOARD_ACTIONS = [
+ 'dashboard.print',
+ 'dashboard.view',
+ 'host.dashboard.view',
+ 'template.dashboard.edit'
+ ];
+
/**
* Add new actions (potentially overwriting the existing ones).
*
@@ -420,39 +389,23 @@ class CRouter {
}
}
- /**
- * Returns layout name.
- *
- * @return string|null
- */
public function getLayout(): ?string {
return $this->layout;
}
- /**
- * Returns controller name.
- *
- * @return string|null
- */
public function getController(): ?string {
return $this->controller;
}
- /**
- * Returns view name.
- *
- * @return string|null
- */
public function getView(): ?string {
return $this->view;
}
- /**
- * Returns action name.
- *
- * @return string|null
- */
public function getAction(): ?string {
return $this->action;
}
+
+ public static function isDashboardAction(string $action): bool {
+ return in_array($action, self::DASHBOARD_ACTIONS, true);
+ }
}
diff --git a/ui/include/classes/mvc/CView.php b/ui/include/classes/mvc/CView.php
index 92f0a769c16..89dfaef5093 100644
--- a/ui/include/classes/mvc/CView.php
+++ b/ui/include/classes/mvc/CView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -26,61 +26,45 @@ class CView {
/**
* Directory list of MVC views ordered by search priority.
- *
- * @static
- *
- * @var array
*/
- private static $directories = ['local/app/views', 'app/views', 'include/views'];
+ private static array $directories = ['local/app/views', 'app/views', 'include/views'];
/**
* Indicates support of web layout modes.
- *
- * @var boolean
*/
- private $layout_modes_enabled = false;
+ private bool $layout_modes_enabled = false;
/**
* Explicitly set layout mode.
- *
- * @var int
*/
- private $layout_mode;
+ private ?int $layout_mode = null;
/**
- * View name.
- *
- * @var string
+ * Directory where the view file was found.
*/
- private $name;
+ private ?string $directory = null;
+
+ private string $assets_path = 'assets';
/**
- * Data provided for view.
- *
- * @var array
+ * View name.
*/
- private $data;
+ private string $name;
/**
- * Directory where the view file was found.
- *
- * @var string
+ * List of JavaScript files for inclusion into HTML page using <script src="...">.
*/
- private $directory;
+ private array $js_files = [];
/**
- * List of JavaScript files for inclusion into a HTML page using <script src="...">.
- *
- * @var array
+ * List of CSS files for inclusion into HTML page using <link rel="stylesheet" type="text/css" src="...">.
*/
- private $js_files = [];
+ private array $css_files = [];
/**
- * List of CSS files for inclusion into a HTML page using <link rel="stylesheet" type="text/css" src="...">.
- *
- * @var array
+ * Data provided for view.
*/
- private $css_files = [];
+ private array $data;
/**
* Create a view based on view name and data.
@@ -91,7 +75,7 @@ class CView {
* @throws InvalidArgumentException if view name not valid.
* @throws RuntimeException if view not found or not readable.
*/
- public function __construct($name, array $data = []) {
+ public function __construct(string $name, array $data = []) {
if (!preg_match('/^[a-z]+(\/[a-z]+)*(\.[a-z]+)*$/', $name)) {
throw new InvalidArgumentException(sprintf('Invalid view name: "%s".', $name));
}
@@ -100,6 +84,7 @@ class CView {
foreach (self::$directories as $directory) {
$file_path = $directory.'/'.$name.'.php';
+
if (is_file($file_path)) {
$this->directory = $directory;
break;
@@ -118,15 +103,27 @@ class CView {
$this->data = $data;
}
+ public function getDirectory(): string {
+ return $this->directory;
+ }
+
+ public function setAssetsPath(string $asset_path): self {
+ $this->assets_path = $asset_path;
+
+ return $this;
+ }
+
+ public function getAssetsPath(): string {
+ RETURN $this->assets_path;
+ }
+
/**
* Render view and return the output.
* Note: view should only output textual content like HTML, JSON, scripts or similar.
*
* @throws RuntimeException if view not found, not readable or returned false.
- *
- * @return string
*/
- public function getOutput() {
+ public function getOutput(): string {
$data = $this->data;
$file_path = $this->directory.'/'.$this->name.'.php';
@@ -148,17 +145,15 @@ class CView {
* - JavaScript file will be searched in the "js" subdirectory of the view file.
* - A copy of $data variable will be available for using within the file.
*
- * @param string $file_name
- * @param array $data
- *
- * @throws RuntimeException if the file not found, not readable or returned false.
+ * @param string $file_name
+ * @param array|null $data
*
* @return string
*/
- public function readJsFile(string $file_name, ?array $data = null): string {
- $data = ($data === null) ? $this->data : $data;
+ public function readJsFile(string $file_name, array $data = null, $relative_dir = '/js'): string {
+ $data = $data ?? $this->data;
- $file_path = $this->directory.'/js/'.$file_name;
+ $file_path = $this->directory.$relative_dir.'/'.$file_name;
ob_start();
@@ -177,40 +172,37 @@ class CView {
* - JavaScript file will be searched in the "js" subdirectory of the view file.
* - A copy of $data variable will be available for using within the file.
*
- * @param string $file_name
- * @param array $data
- *
* @throws RuntimeException if the file not found, not readable or returned false.
*/
- public function includeJsFile(string $file_name, array $data = null) {
+ public function includeJsFile(string $file_name, array $data = null): self {
echo $this->readJsFile($file_name, $data);
+
+ return $this;
}
/**
* Add a native JavaScript file to this view.
- *
- * @param string $src
*/
- public function addJsFile($src) {
- $this->js_files[] = $src;
+ public function addJsFile(string $js): self {
+ $this->js_files[] = $js;
+
+ return $this;
}
/**
* Get list of native JavaScript files added to this view.
- *
- * @return array
*/
- public function getJsFiles() {
+ public function getJsFiles(): array {
return $this->js_files;
}
/**
* Add a CSS file to this view.
- *
- * @param string $src
*/
- public function addCssFile($src) {
- $this->css_files[] = $src;
+ public function addCssFile($css): self {
+ $this->css_files[] = $css;
+
+ return $this;
}
/**
@@ -218,15 +210,17 @@ class CView {
*
* @return array
*/
- public function getCssFiles() {
+ public function getCssFiles(): array {
return $this->css_files;
}
/**
* Enable support of web layout modes.
*/
- public function enableLayoutModes() {
+ public function enableLayoutModes(): self {
$this->layout_modes_enabled = true;
+
+ return $this;
}
/**
@@ -234,8 +228,10 @@ class CView {
*
* @param int $layout_mode ZBX_LAYOUT_NORMAL | ZBX_LAYOUT_KIOSKMODE
*/
- public function setLayoutMode(int $layout_mode): void {
+ public function setLayoutMode(int $layout_mode): self {
$this->layout_mode = $layout_mode;
+
+ return $this;
}
/**
@@ -243,9 +239,9 @@ class CView {
*
* @return int ZBX_LAYOUT_NORMAL | ZBX_LAYOUT_KIOSKMODE
*/
- public function getLayoutMode() {
+ public function getLayoutMode(): int {
if ($this->layout_modes_enabled) {
- return ($this->layout_mode !== null) ? $this->layout_mode : CViewHelper::loadLayoutMode();
+ return $this->layout_mode ?? CViewHelper::loadLayoutMode();
}
return ZBX_LAYOUT_NORMAL;
@@ -253,11 +249,9 @@ class CView {
/**
* Register custom directory of MVC views. The last registered will have the first priority.
- *
- * @param string $directory
*/
- public static function registerDirectory($directory) {
- if (!in_array($directory, self::$directories)) {
+ public static function registerDirectory(string $directory): void {
+ if (!in_array($directory, self::$directories, true)) {
array_unshift(self::$directories, $directory);
}
}
diff --git a/ui/include/classes/parsers/CPrometheusOutputParser.php b/ui/include/classes/parsers/CPrometheusOutputParser.php
index fc27f69fccb..3e39974518a 100644
--- a/ui/include/classes/parsers/CPrometheusOutputParser.php
+++ b/ui/include/classes/parsers/CPrometheusOutputParser.php
@@ -30,6 +30,8 @@ class CPrometheusOutputParser extends CParser {
];
private $user_macro_parser;
+ private $lld_macro_parser;
+ private $lld_macro_function_parser;
public function __construct($options = []) {
if (array_key_exists('usermacros', $options)) {
@@ -44,6 +46,7 @@ class CPrometheusOutputParser extends CParser {
}
if ($this->options['lldmacros']) {
$this->lld_macro_parser = new CLLDMacroParser();
+ $this->lld_macro_function_parser = new CLLDMacroFunctionParser();
}
}
@@ -94,6 +97,12 @@ class CPrometheusOutputParser extends CParser {
return true;
}
+ elseif ($this->options['lldmacros']
+ && $this->lld_macro_function_parser->parse($source, $pos) != self::PARSE_FAIL) {
+ $pos += $this->lld_macro_function_parser->getLength();
+
+ return true;
+ }
return false;
}
diff --git a/ui/include/classes/parsers/CPrometheusPatternParser.php b/ui/include/classes/parsers/CPrometheusPatternParser.php
index 6cfde3c3939..d45a50e7589 100644
--- a/ui/include/classes/parsers/CPrometheusPatternParser.php
+++ b/ui/include/classes/parsers/CPrometheusPatternParser.php
@@ -31,6 +31,7 @@ class CPrometheusPatternParser extends CParser {
private $user_macro_parser;
private $lld_macro_parser;
+ private $lld_macro_function_parser;
public function __construct($options = []) {
if (array_key_exists('usermacros', $options)) {
@@ -45,6 +46,7 @@ class CPrometheusPatternParser extends CParser {
}
if ($this->options['lldmacros']) {
$this->lld_macro_parser = new CLLDMacroParser();
+ $this->lld_macro_function_parser = new CLLDMacroFunctionParser();
}
}
@@ -138,6 +140,12 @@ class CPrometheusPatternParser extends CParser {
return true;
}
+ elseif ($this->options['lldmacros']
+ && $this->lld_macro_function_parser->parse($source, $pos) != self::PARSE_FAIL) {
+ $pos += $this->lld_macro_function_parser->getLength();
+
+ return true;
+ }
return false;
}
@@ -176,6 +184,10 @@ class CPrometheusPatternParser extends CParser {
elseif ($this->options['lldmacros'] && $this->lld_macro_parser->parse($source, $pos) != self::PARSE_FAIL) {
$p += $this->lld_macro_parser->getLength();
}
+ elseif ($this->options['lldmacros']
+ && $this->lld_macro_function_parser->parse($source, $pos) != self::PARSE_FAIL) {
+ $p += $this->lld_macro_function_parser->getLength();
+ }
else {
return false;
}
@@ -321,6 +333,12 @@ class CPrometheusPatternParser extends CParser {
return true;
}
+ elseif ($this->options['lldmacros']
+ && $this->lld_macro_function_parser->parse($source, $pos) != self::PARSE_FAIL) {
+ $pos += $this->lld_macro_function_parser->getLength();
+
+ return true;
+ }
return false;
}
diff --git a/ui/include/classes/parsers/CUpdateIntervalParser.php b/ui/include/classes/parsers/CUpdateIntervalParser.php
index 5ff772d94e9..0fbb2b49c80 100644
--- a/ui/include/classes/parsers/CUpdateIntervalParser.php
+++ b/ui/include/classes/parsers/CUpdateIntervalParser.php
@@ -76,6 +76,8 @@ class CUpdateIntervalParser extends CParser {
// First interval must be simple interval (or macro). Other intervals may be mixed and repeat multiple times.
if ($this->simple_interval_parser->parse($source, $p) == self::PARSE_FAIL) {
+ $this->errorPos($source, $p);
+
return self::PARSE_FAIL;
}
$p += $this->simple_interval_parser->getLength();
@@ -111,7 +113,13 @@ class CUpdateIntervalParser extends CParser {
$this->length = $p - $pos;
$this->match = substr($source, $pos, $this->length);
- return isset($source[$p]) ? self::PARSE_SUCCESS_CONT : self::PARSE_SUCCESS;
+ if (!isset($source[$p])) {
+ return self::PARSE_SUCCESS;
+ }
+
+ $this->errorPos($source, $p);
+
+ return self::PARSE_SUCCESS_CONT;
}
/**
@@ -124,26 +132,25 @@ class CUpdateIntervalParser extends CParser {
}
/**
- * Get all intervals or specifically flexible or scheduling intervals.
+ * Get all intervals, or specifically flexible or scheduling ones.
*
- * @param int $type If null get both types, else either ITEM_DELAY_FLEXIBLE or ITEM_DELAY_SCHEDULING
+ * @param int|null $type ITEM_DELAY_FLEXIBLE, ITEM_DELAY_SCHEDULING, or null for both.
*
* @return array
*/
- public function getIntervals($type = null) {
+ public function getIntervals(?int $type = null) {
if ($type === null) {
return $this->intervals;
}
- else {
- $intervals = [];
- foreach ($this->intervals as $interval) {
- if ($interval['type'] == $type) {
- $intervals[] = $interval['interval'];
- }
- }
+ $intervals = [];
- return $intervals;
+ foreach ($this->intervals as $interval) {
+ if ($interval['type'] == $type) {
+ $intervals[] = $interval['interval'];
+ }
}
+
+ return $intervals;
}
}
diff --git a/ui/include/classes/setup/CSetupWizard.php b/ui/include/classes/setup/CSetupWizard.php
index 97fb1b9eb19..6216713e257 100644
--- a/ui/include/classes/setup/CSetupWizard.php
+++ b/ui/include/classes/setup/CSetupWizard.php
@@ -320,7 +320,7 @@ class CSetupWizard extends CForm {
// make zabbix.conf.php downloadable
header('Content-Type: application/x-httpd-php');
header('Content-Disposition: attachment; filename="'.basename(CConfigFile::CONFIG_FILE_PATH).'"');
- $config = new CConfigFile(APP::getInstance()->getRootDir().CConfigFile::CONFIG_FILE_PATH);
+ $config = new CConfigFile(APP::getRootDir().CConfigFile::CONFIG_FILE_PATH);
$config->config = [
'DB' => [
'TYPE' => $this->getConfig('DB_TYPE'),
@@ -973,7 +973,7 @@ class CSetupWizard extends CForm {
$this->setConfig('ZBX_CONFIG_FILE_CORRECT', true);
- $config_file_name = APP::getInstance()->getRootDir().CConfigFile::CONFIG_FILE_PATH;
+ $config_file_name = APP::getRootDir().CConfigFile::CONFIG_FILE_PATH;
$config = new CConfigFile($config_file_name);
$config->config = [
'DB' => [
diff --git a/ui/include/classes/user/CWebUser.php b/ui/include/classes/user/CWebUser.php
index 7204f071b21..f25a14b3bd8 100644
--- a/ui/include/classes/user/CWebUser.php
+++ b/ui/include/classes/user/CWebUser.php
@@ -234,13 +234,11 @@ class CWebUser {
}
/**
- * Get user ip address.
+ * Get user IP address.
*
* @return string
*/
public static function getIp(): string {
- return (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER) && $_SERVER['HTTP_X_FORWARDED_FOR'] !== '')
- ? $_SERVER['HTTP_X_FORWARDED_FOR']
- : $_SERVER['REMOTE_ADDR'];
+ return $_SERVER['REMOTE_ADDR'];
}
}
diff --git a/ui/include/classes/validators/CApiInputValidator.php b/ui/include/classes/validators/CApiInputValidator.php
index 971e3f570a7..106677afd20 100644
--- a/ui/include/classes/validators/CApiInputValidator.php
+++ b/ui/include/classes/validators/CApiInputValidator.php
@@ -242,6 +242,30 @@ class CApiInputValidator {
case API_TG_NAME:
return self::validateTemplateGroupName($rule, $data, $path, $error);
+
+ case API_ANY:
+ return true;
+
+ case API_ITEM_KEY:
+ return self::validateItemKey($rule, $data, $path, $error);
+
+ case API_ITEM_DELAY:
+ return self::validateItemDelay($rule, $data, $path, $error);
+
+ case API_JSON:
+ return self::validateJson($rule, $data, $path, $error);
+
+ case API_XML:
+ return self::validateXml($rule, $data, $path, $error);
+
+ case API_PREPROC_PARAMS:
+ return self::validatePreprocParams($rule, $data, $path, $error);
+
+ case API_PROMETHEUS_PATTERN:
+ return self::validatePrometheusPattern($rule, $data, $path, $error);
+
+ case API_PROMETHEUS_LABEL:
+ return self::validatePrometheusLabel($rule, $data, $path, $error);
}
// This message can be untranslated because warn about incorrect validation rules at a development stage.
@@ -314,6 +338,14 @@ class CApiInputValidator {
case API_LAT_LNG_ZOOM:
case API_TIMESTAMP:
case API_TG_NAME:
+ case API_ANY:
+ case API_ITEM_KEY:
+ case API_ITEM_DELAY:
+ case API_JSON:
+ case API_XML:
+ case API_PREPROC_PARAMS:
+ case API_PROMETHEUS_PATTERN:
+ case API_PROMETHEUS_LABEL:
return true;
case API_OBJECT:
@@ -924,7 +956,7 @@ class CApiInputValidator {
* Floating point number validator.
*
* @param array $rule
- * @param int $rule['flags'] (optional) API_ALLOW_NULL
+ * @param int $rule['flags'] (optional) API_ALLOW_NULL | API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO
* @param string $rule['in'] (optional) a comma-delimited character string, for example: '0,60:900'
* @param mixed $data
* @param string $path
@@ -932,7 +964,7 @@ class CApiInputValidator {
*
* @return bool
*/
- private static function validateFloat($rule, &$data, $path, &$error) {
+ private static function validateFloat(array $rule, &$data, string $path, string &$error): bool {
$flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
if (($flags & API_ALLOW_NULL) && $data === null) {
@@ -949,6 +981,21 @@ class CApiInputValidator {
$value = (float) $number_parser->getMatch();
}
else {
+ if ($flags & API_ALLOW_USER_MACRO) {
+ $user_macro_parser = new CUserMacroParser();
+ }
+
+ if ($flags & API_ALLOW_LLD_MACRO) {
+ $lld_macro_parser = new CLLDMacroParser();
+ $lld_macro_function_parser = new CLLDMacroFunctionParser();
+ }
+
+ if (($flags & API_ALLOW_USER_MACRO && $user_macro_parser->parse($data) == CParser::PARSE_SUCCESS)
+ || ($flags & API_ALLOW_LLD_MACRO && ($lld_macro_parser->parse($data) == CParser::PARSE_SUCCESS
+ || $lld_macro_function_parser->parse($data) == CParser::PARSE_SUCCESS))) {
+ return true;
+ }
+
$value = NAN;
}
}
@@ -966,6 +1013,10 @@ class CApiInputValidator {
return false;
}
+ if (!self::checkCompare($rule, $value, $path, $error)) {
+ return false;
+ }
+
$data = $value;
return true;
@@ -989,6 +1040,8 @@ class CApiInputValidator {
return true;
}
+ $e = '';
+
if (($flags & API_NORMALIZE) && self::validateFloat([], $data, '', $e)) {
$data = [$data];
}
@@ -1023,7 +1076,7 @@ class CApiInputValidator {
foreach (explode(',', $in) as $in) {
if (strpos($in, ':') !== false) {
- list($from, $to) = explode(':', $in);
+ [$from, $to] = explode(':', $in);
}
else {
$from = $in;
@@ -1073,7 +1126,7 @@ class CApiInputValidator {
*
* @return bool
*/
- private static function checkFloatIn($rule, $data, $path, &$error) {
+ private static function checkFloatIn(array $rule, $data, string $path, string &$error) {
if (!array_key_exists('in', $rule)) {
return true;
}
@@ -1144,12 +1197,12 @@ class CApiInputValidator {
/**
* Validate integer ranges.
* Example:
- * 0-100,200,300-400
+ * -100-0,0-100,200,300-{$MACRO},{$MACRO},{#LLD},400-500
*
* @static
*
* @param array $rule
- * @param int $rule['flags'] (optional) API_NOT_EMPTY
+ * @param int $rule['flags'] (optional) API_NOT_EMPTY, API_ALLOW_USER_MACRO, API_ALLOW_LLD_MACRO
* @param int $rule['length'] (optional)
* @param string $rule['in'] (optional) A comma-delimited character string, for example: '0,60:900'
* @param mixed $data
@@ -1161,7 +1214,7 @@ class CApiInputValidator {
private static function validateInt32Ranges(array $rule, &$data, string $path, string &$error): bool {
$flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
- if (self::checkStringUtf8($flags, $data, $path, $error) === false) {
+ if (self::checkStringUtf8($flags & API_NOT_EMPTY, $data, $path, $error) === false) {
return false;
}
@@ -1174,7 +1227,11 @@ class CApiInputValidator {
return false;
}
- $parser = new CRangesParser(['with_minus' => true]);
+ $parser = new CRangesParser([
+ 'usermacros' => (bool) ($flags & API_ALLOW_USER_MACRO),
+ 'lldmacros' => (bool) ($flags & API_ALLOW_LLD_MACRO),
+ 'with_minus' => true
+ ]);
if ($parser->parse($data) != CParser::PARSE_SUCCESS) {
$error = _s('Invalid parameter "%1$s": %2$s.', $path, _('invalid range expression'));
@@ -1183,6 +1240,10 @@ class CApiInputValidator {
foreach ($parser->getRanges() as $ranges) {
foreach ($ranges as $range) {
+ if (($flags & (API_ALLOW_USER_MACRO | API_ALLOW_LLD_MACRO)) && $range[0] === '{') {
+ continue;
+ }
+
if (!self::checkInt32In($rule, $range, $path, $error)) {
return false;
}
@@ -1196,13 +1257,14 @@ class CApiInputValidator {
* Identifier validator.
*
* @param array $rule
+ * @param string $rule['in'] (optional)
* @param mixed $data
* @param string $path
* @param string $error
*
* @return bool
*/
- private static function validateId($rule, &$data, $path, &$error) {
+ private static function validateId(array $rule, &$data, string $path, string &$error) :bool {
if (!is_scalar($data) || is_bool($data) || is_double($data) || !ctype_digit(strval($data))) {
$error = _s('Invalid parameter "%1$s": %2$s.', $path, _('a number is expected'));
return false;
@@ -1223,6 +1285,39 @@ class CApiInputValidator {
}
}
+ if (!self::checkIdIn($rule, $data, $path, $error)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * @param array $rule
+ * @param string $rule['in'] (optional)
+ * @param string $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function checkIdIn(array $rule, string $data, string $path, string &$error): bool {
+ if (!array_key_exists('in', $rule)) {
+ return true;
+ }
+
+ if ($rule['in'] != 0) {
+ $error = 'Incorrect validation rules.';
+
+ return false;
+ }
+
+ if ($data != 0) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _s('value must be %1$s', '0'));
+
+ return false;
+ }
+
return true;
}
@@ -1392,6 +1487,10 @@ class CApiInputValidator {
$field_rule['compare']['value'] = $data[$field_rule['compare']['field']];
}
+ if (array_key_exists('preproc_type', $field_rule)) {
+ $field_rule['preproc_type']['value'] = $data[$field_rule['preproc_type']['field']];
+ }
+
if (array_key_exists($field_name, $data)) {
$subpath = ($path === '/' ? $path : $path.'/').$field_name;
if (!self::validateData($field_rule, $data[$field_name], $subpath, $error)) {
@@ -1554,6 +1653,8 @@ class CApiInputValidator {
return true;
}
+ $e = '';
+
if (($flags & API_NORMALIZE) && self::validateId([], $data, '', $e)) {
$data = [$data];
}
@@ -2023,7 +2124,7 @@ class CApiInputValidator {
return true;
}
- if (@preg_match('/'.str_replace('/', '\/', $data).'/', '') === false) {
+ if (@preg_match('('.$data.')', '') === false) {
$error = _s('Invalid parameter "%1$s": %2$s.', $path, _('invalid regular expression'));
return false;
}
@@ -2098,7 +2199,7 @@ class CApiInputValidator {
/**
* Array of ids, int32 or strings uniqueness validator.
*
- * @param bool $rule
+ * @param array $rule
* @param integer $rule['type']
* @param bool $rule['uniq'] (optional)
* @param array|null $data
@@ -2192,7 +2293,7 @@ class CApiInputValidator {
foreach ($data as $index => $object) {
$_uniq = &$uniq;
- $values = [];
+ $object_values = [];
$level = 1;
foreach ($field_names as $field_name) {
@@ -2200,29 +2301,104 @@ class CApiInputValidator {
break;
}
- $values[] = $object[$field_name];
+ $object_values[] = $object[$field_name];
- $value = ($rule['fields'][$field_name]['type'] == API_USER_MACRO)
+ $object_value = ($rule['fields'][$field_name]['type'] == API_USER_MACRO)
? self::trimMacro($object[$field_name])
: $object[$field_name];
if ($level < count($field_names)) {
- if (!array_key_exists($value, $_uniq)) {
- $_uniq[$value] = [];
+ if (!array_key_exists($object_value, $_uniq)) {
+ $_uniq[$object_value] = [];
}
- $_uniq = &$_uniq[$value];
+ $_uniq = &$_uniq[$object_value];
}
else {
- if (array_key_exists($value, $_uniq)) {
+ if (array_key_exists($object_value, $_uniq)) {
$subpath = ($path === '/' ? $path : $path.'/').($index + 1);
$error = _s('Invalid parameter "%1$s": %2$s.', $subpath, _s('value %1$s already exists',
- '('.implode(', ', $field_names).')=('.implode(', ', $values).')'
+ '('.implode(', ', $field_names).')=('.implode(', ', $object_values).')'
));
return false;
}
- $_uniq[$value] = true;
+ $_uniq[$object_value] = true;
+ }
+
+ $level++;
+ }
+ }
+ }
+ }
+
+ if (array_key_exists('uniq_by_values', $rule)) {
+ foreach ($rule['uniq_by_values'] as $field_values) {
+ $uniq = [];
+ $_uniqs = [&$uniq];
+
+ foreach ($data as $index => $object) {
+ $object_values = [];
+ $level = 1;
+
+ foreach ($field_values as $field_name => $values) {
+ if (!array_key_exists($field_name, $object)) {
+ $_uniqs = [&$uniq];
+ break;
+ }
+
+ $object_values[] = $object[$field_name];
+
+ $object_value = ($rule['fields'][$field_name]['type'] == API_USER_MACRO)
+ ? self::trimMacro($object[$field_name])
+ : $object[$field_name];
+
+ if (!in_array($object_value, $values)) {
+ $_uniqs = [&$uniq];
+ break;
+ }
+
+ if ($level < count($field_values)) {
+ $__uniqs = [];
+
+ foreach ($_uniqs as &$_uniq) {
+ foreach ($values as $value) {
+ if (!array_key_exists($value, $_uniq)) {
+ $_uniq[$value] = [];
+ }
+
+ $__uniqs[] = &$_uniq[$value];
+ }
+ }
+ unset($_uniq);
+
+ $_uniqs = $__uniqs;
+ }
+ else {
+ foreach ($_uniqs as &$_uniq) {
+ foreach ($values as $value) {
+ if (array_key_exists($value, $_uniq)) {
+ $subpath = ($path === '/' ? $path : $path.'/').($index + 1);
+
+ $combinations = array_map(static function (array $values): string {
+ return '('.implode(', ', $values).')';
+ }, $field_values);
+
+ $error = _s('Invalid parameter "%1$s": %2$s.', $subpath,
+ _s('only one object can exist within the combinations of %1$s',
+ '('.implode(', ', array_keys($field_values)).')=('.
+ implode(', ', $combinations).')'
+ )
+ );
+ return false;
+ }
+
+ $_uniq[$value] = true;
+ }
+ }
+ unset($_uniq);
+
+ $_uniqs = [&$uniq];
}
$level++;
@@ -2445,21 +2621,22 @@ class CApiInputValidator {
/**
* Validate IP ranges. Multiple IPs separated by comma character.
* Example:
- * 127.0.0.1,192.168.1.1-254,192.168.2.1-100,192.168.3.0/24
+ * 127.0.0.1,192.168.1.1-254,192.168.2.1-100,192.168.3.0/24,{$MACRO}
*
- * @param array $rule
- * @param int $rule['flags'] (optional) API_NOT_EMPTY, API_ALLOW_DNS, API_ALLOW_RANGE
- * @param int $rule['length'] (optional)
- * @param mixed $data
- * @param string $path
- * @param string $error
+ * @param array $rule
+ * @param int $rule['flags'] (optional) API_NOT_EMPTY, API_ALLOW_DNS, API_ALLOW_RANGE, API_ALLOW_USER_MACRO
+ * @param array|bool $rule['macros'] (optional) An array of supported macros. True - all macros are supported.
+ * @param int $rule['length'] (optional)
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
*
* @return bool
*/
private static function validateIpRanges($rule, &$data, $path, &$error) {
$flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
- if (self::checkStringUtf8($flags, $data, $path, $error) === false) {
+ if (self::checkStringUtf8($flags & API_NOT_EMPTY, $data, $path, $error) === false) {
return false;
}
@@ -2474,8 +2651,10 @@ class CApiInputValidator {
$ip_range_parser = new CIPRangeParser([
'v6' => ZBX_HAVE_IPV6,
- 'dns' => ($flags & API_ALLOW_DNS),
- 'ranges' => ($flags & API_ALLOW_RANGE)
+ 'dns' => (bool) ($flags & API_ALLOW_DNS),
+ 'ranges' => (bool) ($flags & API_ALLOW_RANGE),
+ 'usermacros' => (bool) ($flags & API_ALLOW_USER_MACRO),
+ 'macros' => array_key_exists('macros', $rule) ? $rule['macros'] : []
]);
if (!$ip_range_parser->parse($data)) {
@@ -3186,10 +3365,10 @@ class CApiInputValidator {
/**
* @param array $rule
- * @param array $rule[compare] (optional)
- * @param string $rule[compare][operator]
- * @param string $rule[compare][path]
- * @param mixed $rule[compare][value]
+ * @param array $rule['compare'] (optional)
+ * @param string $rule['compare']['operator']
+ * @param string $rule['compare']['path']
+ * @param mixed $rule['compare']['value']
* @param int $data
* @param string $path
* @param string $error
@@ -3197,7 +3376,7 @@ class CApiInputValidator {
* @return bool
*/
private static function checkCompare(array $rule, $data, string $path, string &$error): bool {
- if (!array_key_exists('compare', $rule)) {
+ if (!array_key_exists('compare', $rule) || $rule['compare']['value'] === null) {
return true;
}
@@ -3226,7 +3405,7 @@ class CApiInputValidator {
*
* @param string $field_name
* @param array $field_rule
- * @param string $field_rule[error_type] (optional) API_ERR_INHERITED, API_ERR_DISCOVERED
+ * @param string $field_rule['error_type'] (optional) API_ERR_INHERITED, API_ERR_DISCOVERED
* @param array $object
* @param string $path
* @param string $error
@@ -3264,4 +3443,719 @@ class CApiInputValidator {
return false;
}
+
+ /**
+ * @param array $rule
+ * @param int $rule['length'] (optional)
+ * @param int $rule['flags'] (optional) API_REQUIRED_LLD_MACRO
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function validateItemKey(array $rule, &$data, string $path, string &$error): bool {
+ if (self::checkStringUtf8(API_NOT_EMPTY, $data, $path, $error) === false) {
+ return false;
+ }
+
+ if (array_key_exists('length', $rule) && mb_strlen($data) > $rule['length']) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('value is too long'));
+ return false;
+ }
+
+ $flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
+ $item_key_parser = new CItemKey();
+
+ if ($item_key_parser->parse($data) != CParser::PARSE_SUCCESS) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, $item_key_parser->getError());
+ return false;
+ }
+
+ if (($flags & API_REQUIRED_LLD_MACRO)) {
+ $parameters = $item_key_parser->getParamsRaw();
+ $lld_macro_parser = new CLLDMacroParser();
+ $lld_macro_function_parser = new CLLDMacroFunctionParser();
+ $has_lld_macros = false;
+
+ if ($parameters) {
+ $parameters = $parameters[0]['raw'];
+ $p = 1;
+
+ while (isset($parameters[$p])) {
+ if ($lld_macro_parser->parse($parameters, $p) != CParser::PARSE_FAIL
+ || $lld_macro_function_parser->parse($parameters, $p) != CParser::PARSE_FAIL) {
+ $has_lld_macros = true;
+ break;
+ }
+
+ $p++;
+ }
+ }
+
+ if (!$has_lld_macros) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path,
+ _('must contain at least one low-level discovery macro')
+ );
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Try to parse delay/interval information and check that some polling can be performed during the schedule-week.
+ *
+ * Note: In case of non-convertible entries (containing macros), we can only check for edge cases, e.g.
+ * where the whole week is fully blocked by periods with an update interval of 0.
+ *
+ * @param array $rule
+ * @param int $rule['flags'] (optional) API_ALLOW_USER_MACRO, API_ALLOW_LLD_MACRO
+ * @param int $rule['length'] (optional)
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function validateItemDelay(array $rule, &$data, string $path, string &$error): bool {
+ $flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
+
+ if (is_int($data)) {
+ $data = (string) $data;
+ }
+
+ if (self::checkStringUtf8(API_NOT_EMPTY, $data, $path, $error) === false) {
+ return false;
+ }
+
+ if (array_key_exists('length', $rule) && mb_strlen($data) > $rule['length']) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('value is too long'));
+
+ return false;
+ }
+
+ $update_interval_parser = new CUpdateIntervalParser([
+ 'usermacros' => (bool) ($flags & API_ALLOW_USER_MACRO),
+ 'lldmacros' => (bool) ($flags & API_ALLOW_LLD_MACRO)
+ ]);
+
+ if ($update_interval_parser->parse($data) != CParser::PARSE_SUCCESS) {
+ $error = strpos($data, ';') === false
+ ? _s('Invalid parameter "%1$s": %2$s.', $path, _('a time unit is expected'))
+ : _s('Invalid parameter "%1$s": %2$s.', $path, $update_interval_parser->getError());
+
+ return false;
+ }
+
+ $delay = $update_interval_parser->getDelay();
+ $intervals = $update_interval_parser->getIntervals();
+
+ if ($delay[0] !== '{') {
+ $delay_sec = timeUnitToSeconds($delay);
+
+ if ($delay_sec == 0 && !$intervals) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path,
+ _('cannot be equal to zero without custom intervals')
+ );
+
+ return false;
+ }
+
+ if ($delay_sec > SEC_PER_DAY) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path,
+ _s('value must be one of %1$s', implode('-', [0, SEC_PER_DAY]))
+ );
+
+ return false;
+ }
+ }
+
+ if (!$intervals || array_key_exists(ITEM_DELAY_SCHEDULING, array_column($intervals, null, 'type'))) {
+ return true;
+ }
+
+ $active_macro_interval = false;
+
+ foreach ($intervals as $i => $interval) {
+ if (strpos($interval['interval'], '{') !== false) {
+ unset($intervals[$i]);
+
+ if (strpos($interval['update_interval'], '{') === false) {
+ if ($interval['update_interval'] != 0) {
+ $active_macro_interval = true;
+ }
+ }
+ else {
+ $active_macro_interval = true;
+ }
+ }
+ }
+
+ $inactive_intervals = [];
+ $active_intervals = [];
+
+ foreach ($intervals as $interval) {
+ $update_interval = timeUnitToSeconds($interval['update_interval']);
+
+ [$day_period, $time_period] = explode(',', $interval['time_period']);
+
+ [$day_from, $day_to] = (strpos($day_period, '-') === false)
+ ? [$day_period, $day_period]
+ : explode('-', $day_period);
+
+ [$time_from, $time_to] = explode('-', $time_period);
+
+ [$time_from_hours, $time_from_minutes] = explode(':', $time_from);
+ [$time_to_hours, $time_to_minutes] = explode(':', $time_to);
+
+ $time_from = $time_from_hours * SEC_PER_HOUR + $time_from_minutes * SEC_PER_MIN;
+ $time_to = $time_to_hours * SEC_PER_HOUR + $time_to_minutes * SEC_PER_MIN;
+
+ if ($update_interval > 0) {
+ if ($time_from == 0 && $time_to == SEC_PER_DAY && $day_to - $day_from > 0) {
+ $_interval = $day_to * SEC_PER_DAY + $time_to - $day_from * SEC_PER_DAY + $time_from;
+ }
+ else {
+ $_interval = $time_to - $time_from;
+ }
+
+ if ($update_interval > $_interval) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path,
+ _s('update interval "%1$s" is longer than period "%2$s"', $interval['update_interval'],
+ $interval['time_period']
+ )
+ );
+
+ return false;
+ }
+ }
+
+ for ($day = $day_from; $day <= $day_to; $day++) {
+ if ($update_interval == 0) {
+ $inactive_intervals[] = [
+ 'time_from' => ($day - 1) * SEC_PER_DAY + $time_from,
+ 'time_to' => ($day - 1) * SEC_PER_DAY + $time_to
+ ];
+ }
+ else {
+ $active_intervals[] = [
+ 'update_interval' => $update_interval,
+ 'time_from' => ($day - 1) * SEC_PER_DAY + $time_from,
+ 'time_to' => ($day - 1) * SEC_PER_DAY + $time_to
+ ];
+ }
+ }
+ }
+
+ if ($delay[0] !== '{' && $delay_sec == 0 && !$active_intervals && !$active_macro_interval) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('must have at least one interval greater than 0'));
+
+ return false;
+ }
+
+ CArrayHelper::sort($inactive_intervals, ['time_from']);
+
+ $_inactive_intervals = $inactive_intervals ? [array_shift($inactive_intervals)] : [];
+ $last = 0;
+
+ foreach ($inactive_intervals as $interval) {
+ if ($interval['time_from'] > $_inactive_intervals[$last]['time_to']) {
+ $_inactive_intervals[++$last] = $interval;
+ continue;
+ }
+
+ if ($interval['time_to'] <= $_inactive_intervals[$last]['time_to']) {
+ continue;
+ }
+
+ $_inactive_intervals[$last]['time_to'] = $interval['time_to'];
+ }
+
+ $inactive_intervals = $_inactive_intervals;
+
+ if ($inactive_intervals && $inactive_intervals[0]['time_from'] == 0
+ && $inactive_intervals[0]['time_to'] == 7 * SEC_PER_DAY) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path,
+ _('non-active intervals cannot fill the entire time')
+ );
+
+ return false;
+ }
+
+ if ($delay[0] === '{' || $active_macro_interval) {
+ return true;
+ }
+
+ CArrayHelper::sort($active_intervals, ['time_from']);
+
+ $_active_intervals = $active_intervals ? [array_shift($active_intervals)] : [];
+ $last = 0;
+
+ foreach ($active_intervals as $i => $interval) {
+ if ($interval['time_from'] > $_active_intervals[$last]['time_to']) {
+ $_active_intervals[++$last] = $interval;
+ continue;
+ }
+
+ if ($interval['update_interval'] >= $_active_intervals[$last]['update_interval']) {
+ if ($interval['time_to'] <= $_active_intervals[$last]['time_to']) {
+ continue;
+ }
+
+ if ($interval['update_interval'] == $_active_intervals[$last]['update_interval']) {
+ $_active_intervals[$last]['time_to'] = $interval['time_to'];
+ }
+ else {
+ ++$last;
+ $_active_intervals[$last] = ['time_from' => $_active_intervals[$last - 1]['time_to']] + $interval;
+ }
+ }
+ else {
+ $_active_interval = $_active_intervals[$last];
+
+ if ($_active_intervals[$last]['time_from'] == $interval['time_from']) {
+ $_active_intervals[$last] = $interval;
+ }
+ else {
+ $_active_intervals[$last]['time_to'] = $interval['time_from'];
+ $_active_intervals[++$last] = $interval;
+ }
+
+ if ($_active_interval['time_to'] > $interval['time_to']) {
+ $_active_intervals[++$last] = ['time_from' => $interval['time_to']] + $_active_interval;
+ }
+ }
+ }
+
+ $active_intervals = $_active_intervals;
+
+ foreach ($active_intervals as $active_interval) {
+ if ($active_interval['time_to'] - $active_interval['time_from'] < $active_interval['update_interval']) {
+ continue;
+ }
+
+ if (!$inactive_intervals) {
+ return true;
+ }
+
+ $_inactive_intervals = [];
+
+ foreach ($inactive_intervals as $inactive_interval) {
+ if ($inactive_interval['time_from'] < $active_interval['time_to']
+ && $inactive_interval['time_to'] > $active_interval['time_from']) {
+ $_inactive_intervals[] = $inactive_interval;
+ }
+ }
+
+ if (!$_inactive_intervals) {
+ return true;
+ }
+
+ foreach ($_inactive_intervals as $i => $inactive_interval) {
+ if ($i == 0 && $inactive_interval['time_from'] > $active_interval['time_from']) {
+ $active_time_from = $active_interval['time_from'];
+ $active_time_to = $inactive_interval['time_from'];
+
+ if ($active_time_to - $active_time_from >= $active_interval['update_interval']) {
+ return true;
+ }
+ }
+
+ $active_time_from = $inactive_interval['time_to'];
+
+ $active_time_to = array_key_exists($i + 1, $_inactive_intervals)
+ ? $_inactive_intervals[$i + 1]['time_from']
+ : $active_interval['time_to'];
+
+ if ($active_time_to - $active_time_from >= $active_interval['update_interval']) {
+ return true;
+ }
+ }
+ }
+
+ if ($delay_sec > 0) {
+ $intervals = array_merge($inactive_intervals, $active_intervals);
+ CArrayHelper::sort($intervals, ['time_from']);
+
+ $_intervals = $intervals ? [array_shift($intervals)] : [];
+ $last = 0;
+
+ foreach ($intervals as $interval) {
+ if ($interval['time_from'] > $_intervals[$last]['time_to']) {
+ $_intervals[++$last] = $interval;
+ continue;
+ }
+
+ if ($interval['time_to'] <= $_intervals[$last]['time_to']) {
+ continue;
+ }
+
+ $_intervals[$last]['time_to'] = $interval['time_to'];
+ }
+
+ foreach ($_intervals as $i => $interval) {
+ if ($i == 0) {
+ if ($interval['time_from'] > 0 && $interval['time_from'] >= $delay_sec) {
+ return true;
+ }
+
+ continue;
+ }
+
+ if ($interval['time_from'] - $_intervals[$i - 1]['time_to'] >= $delay_sec) {
+ return true;
+ }
+ }
+
+ if (7 * SEC_PER_DAY - $interval['time_to'] >= $delay_sec) {
+ return true;
+ }
+ }
+
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path,
+ _('must have a polling interval not blocked by non-active interval periods')
+ );
+
+ return false;
+ }
+
+ /**
+ * JSON validator.
+ *
+ * @param array $rule
+ * @param int $rule['flags'] (optional) API_NOT_EMPTY, API_ALLOW_USER_MACRO, API_ALLOW_LLD_MACRO
+ * @param array $rule['macros_n'] (optional) An array of supported macros. Example: ['{HOST.IP}', '{ITEM.KEY}'].
+ * @param int $rule['length'] (optional)
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function validateJson($rule, &$data, $path, &$error) {
+ $flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
+
+ if (self::checkStringUtf8($flags & API_NOT_EMPTY, $data, $path, $error) === false) {
+ return false;
+ }
+
+ if ($data === '') {
+ return true;
+ }
+
+ if (array_key_exists('length', $rule) && mb_strlen($data) > $rule['length']) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('value is too long'));
+ return false;
+ }
+
+ $json = $data;
+
+ $types = [];
+
+ if ($flags & API_ALLOW_USER_MACRO) {
+ $types['usermacros'] = true;
+ }
+
+ if ($flags & API_ALLOW_LLD_MACRO) {
+ $types['lldmacros'] = true;
+ }
+
+ if (array_key_exists('macros_n', $rule)) {
+ $types['macros_n'] = $rule['macros_n'];
+ }
+
+ if ($types) {
+ $matches = (new CMacrosResolverGeneral())->getMacroPositions($json, $types);
+ $shift = 0;
+
+ foreach ($matches as $pos => $substr) {
+ $json = substr_replace($json, '1', $pos + $shift, strlen($substr));
+ $shift = $shift + 1 - strlen($substr);
+ }
+ }
+
+ json_decode($json);
+
+ if (json_last_error() != JSON_ERROR_NONE) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('JSON is expected'));
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * XML validator.
+ *
+ * @param array $rule
+ * @param int $rule['flags'] (optional) API_NOT_EMPTY
+ * @param int $rule['length'] (optional)
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function validateXml(array $rule, &$data, string $path, string &$error): bool {
+ $flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
+
+ if (self::checkStringUtf8($flags & API_NOT_EMPTY, $data, $path, $error) === false) {
+ return false;
+ }
+
+ if ($data === '') {
+ return true;
+ }
+
+ if (array_key_exists('length', $rule) && mb_strlen($data) > $rule['length']) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('value is too long'));
+ return false;
+ }
+
+ libxml_use_internal_errors(true);
+
+ if (simplexml_load_string($data, null, LIBXML_IMPORT_FLAGS) === false) {
+ $errors = libxml_get_errors();
+ libxml_clear_errors();
+
+ if ($errors) {
+ $error = reset($errors);
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _s('%1$s [Line: %2$s | Column: %3$s]',
+ '('.$error->code.') '.trim($error->message), $error->line, $error->column
+ ));
+ return false;
+ }
+
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('XML is expected'));
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * @param array $rule
+ * @param int $rule['flags'] (optional) API_ALLOW_USER_MACRO, API_ALLOW_LLD_MACRO
+ * @param array $rule['preproc_type']
+ * @param int $rule['preproc_type']['value']
+ * @param int $rule['length'] (optional)
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function validatePreprocParams(array $rule, &$data, string $path, string &$error): bool {
+ $preproc_type = $rule['preproc_type']['value'];
+ $flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
+
+ if (self::checkStringUtf8(0x00, $data, $path, $error) === false) {
+ return false;
+ }
+
+ $data = str_replace("\r\n", "\n", $data);
+
+ if (array_key_exists('length', $rule) && mb_strlen($data) > $rule['length']) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('value is too long'));
+
+ return false;
+ }
+
+ $params = [];
+
+ if ($preproc_type == ZBX_PREPROC_SCRIPT) {
+ $params[1] = $data;
+ }
+ else {
+ foreach (explode("\n", $data) as $i => $param) {
+ $params[$i + 1] = $param;
+ }
+ }
+
+ switch ($preproc_type) {
+ case ZBX_PREPROC_MULTIPLIER:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_FLOAT, 'flags' => API_REQUIRED | ($flags & API_ALLOW_USER_MACRO) | ($flags & API_ALLOW_LLD_MACRO)]
+ ]];
+ break;
+
+ case ZBX_PREPROC_RTRIM:
+ case ZBX_PREPROC_LTRIM:
+ case ZBX_PREPROC_TRIM:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY]
+ ]];
+ break;
+
+ case ZBX_PREPROC_REGSUB:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_REGEX, 'flags' => API_REQUIRED | API_NOT_EMPTY],
+ '2' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY]
+ ]];
+ break;
+
+ case ZBX_PREPROC_XPATH:
+ case ZBX_PREPROC_JSONPATH:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY]
+ ]];
+ break;
+
+ case ZBX_PREPROC_VALIDATE_RANGE:
+ if (count($params) == 2 && ($params[1] === '' || $params[2] === '')) {
+ if ($params[1] === '' && $params[2] === '') {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('cannot be empty'));
+
+ return false;
+ }
+
+ $params[1] = $params[1] === '' ? null : $params[1];
+ $params[2] = $params[2] === '' ? null : $params[2];
+ }
+
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_FLOAT, 'flags' => API_REQUIRED | API_ALLOW_NULL | ($flags & API_ALLOW_USER_MACRO) | ($flags & API_ALLOW_LLD_MACRO)],
+ '2' => ['type' => API_FLOAT, 'flags' => API_REQUIRED | API_ALLOW_NULL | ($flags & API_ALLOW_USER_MACRO) | ($flags & API_ALLOW_LLD_MACRO), 'compare' => ['operator' => '>', 'field' => '1']]
+ ]];
+ break;
+
+ case ZBX_PREPROC_VALIDATE_REGEX:
+ case ZBX_PREPROC_VALIDATE_NOT_REGEX:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_REGEX, 'flags' => API_REQUIRED | API_NOT_EMPTY]
+ ]];
+ break;
+
+ case ZBX_PREPROC_ERROR_FIELD_JSON:
+ case ZBX_PREPROC_ERROR_FIELD_XML:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY]
+ ]];
+ break;
+
+ case ZBX_PREPROC_ERROR_FIELD_REGEX:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_REGEX, 'flags' => API_REQUIRED | API_NOT_EMPTY],
+ '2' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY]
+ ]];
+ break;
+
+ case ZBX_PREPROC_THROTTLE_TIMED_VALUE:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_TIME_UNIT, 'flags' => API_REQUIRED | API_NOT_EMPTY | ($flags & API_ALLOW_USER_MACRO) | ($flags & API_ALLOW_LLD_MACRO), 'in' => implode(':', [1, 25 * SEC_PER_YEAR])]
+ ]];
+ break;
+
+ case ZBX_PREPROC_SCRIPT:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY]
+ ]];
+ break;
+
+ case ZBX_PREPROC_PROMETHEUS_PATTERN:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_REQUIRED | API_NOT_EMPTY | ($flags & API_ALLOW_USER_MACRO) | ($flags & API_ALLOW_LLD_MACRO)],
+ '2' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'in' => implode(',', [ZBX_PREPROC_PROMETHEUS_VALUE, ZBX_PREPROC_PROMETHEUS_LABEL, ZBX_PREPROC_PROMETHEUS_FUNCTION])],
+ '3' => ['type' => API_MULTIPLE, 'rules' =>[
+ ['if' => ['field' => '2', 'in' => implode(',', [ZBX_PREPROC_PROMETHEUS_VALUE])], 'type' => API_STRING_UTF8, 'in' => '', 'default' => ''],
+ ['if' => ['field' => '2', 'in' => implode(',', [ZBX_PREPROC_PROMETHEUS_LABEL])], 'type' => API_PROMETHEUS_LABEL, 'flags' => API_REQUIRED | ($flags & API_ALLOW_USER_MACRO) | ($flags & API_ALLOW_LLD_MACRO)],
+ ['if' => ['field' => '2', 'in' => implode(',', [ZBX_PREPROC_PROMETHEUS_FUNCTION])], 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'in' => implode(',', [ZBX_PREPROC_PROMETHEUS_SUM, ZBX_PREPROC_PROMETHEUS_MIN, ZBX_PREPROC_PROMETHEUS_MAX, ZBX_PREPROC_PROMETHEUS_AVG, ZBX_PREPROC_PROMETHEUS_COUNT])]
+ ]]
+ ]];
+ break;
+
+ case ZBX_PREPROC_PROMETHEUS_TO_JSON:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_REQUIRED | ($flags & API_ALLOW_USER_MACRO) | ($flags & API_ALLOW_LLD_MACRO)]
+ ]];
+ break;
+
+ case ZBX_PREPROC_CSV_TO_JSON:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 1],
+ '2' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 1],
+ '3' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'in' => implode(',', [ZBX_PREPROC_CSV_NO_HEADER, ZBX_PREPROC_CSV_HEADER])]
+ ]];
+ break;
+
+ case ZBX_PREPROC_STR_REPLACE:
+ $api_input_rules = ['type' => API_OBJECT, 'fields' => [
+ '1' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY],
+ '2' => ['type' => API_STRING_UTF8, 'default' => '']
+ ]];
+ break;
+ }
+
+ if (self::validate($api_input_rules, $params, $path, $error)) {
+ $data = implode("\n", $params);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * @param array $rule
+ * @param int $rule['flags'] (optional) API_NOT_EMPTY API_ALLOW_USER_MACRO, API_ALLOW_LLD_MACRO
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function validatePrometheusPattern(array $rule, &$data, string $path, string &$error): bool {
+ $flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
+
+ if (self::checkStringUtf8($flags & API_NOT_EMPTY, $data, $path, $error) === false) {
+ return false;
+ }
+
+ if (($flags & API_NOT_EMPTY) == 0 && $data === '') {
+ return true;
+ }
+
+ $prometheus_pattern_parser = new CPrometheusPatternParser([
+ 'usermacros' => (bool) ($flags & API_ALLOW_USER_MACRO),
+ 'lldmacros' => (bool) ($flags & API_ALLOW_LLD_MACRO)
+ ]);
+
+ if ($prometheus_pattern_parser->parse($data) != CParser::PARSE_SUCCESS) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('invalid Prometheus pattern'));
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * @param array $rule
+ * @param int $rule['flags'] (optional) API_ALLOW_USER_MACRO, API_ALLOW_LLD_MACRO
+ * @param mixed $data
+ * @param string $path
+ * @param string $error
+ *
+ * @return bool
+ */
+ private static function validatePrometheusLabel(array $rule, &$data, string $path, string &$error): bool {
+ $flags = array_key_exists('flags', $rule) ? $rule['flags'] : 0x00;
+
+ if (self::checkStringUtf8(API_NOT_EMPTY, $data, $path, $error) === false) {
+ return false;
+ }
+
+ $prometheus_output_parser = new CPrometheusOutputParser([
+ 'usermacros' => (bool) ($flags & API_ALLOW_USER_MACRO),
+ 'lldmacros' => (bool) ($flags & API_ALLOW_LLD_MACRO)
+ ]);
+
+ if ($prometheus_output_parser->parse($data) != CParser::PARSE_SUCCESS) {
+ $error = _s('Invalid parameter "%1$s": %2$s.', $path, _('invalid Prometheus label'));
+ return false;
+ }
+
+ return true;
+ }
}
diff --git a/ui/include/classes/widgets/CWidgetConfig.php b/ui/include/classes/widgets/CWidgetConfig.php
deleted file mode 100644
index 1d37c52e602..00000000000
--- a/ui/include/classes/widgets/CWidgetConfig.php
+++ /dev/null
@@ -1,501 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CWidgetConfig {
-
- /**
- * Array of deprecated widgets constants.
- */
- public const DEPRECATED_WIDGETS = [
- WIDGET_DATA_OVER
- ];
-
- /**
- * Classifier for non-template dashboards.
- */
- public const CONTEXT_DASHBOARD = 'dashboard';
-
- /**
- * Classifier for template and host dashboards.
- */
- public const CONTEXT_TEMPLATE_DASHBOARD = 'template_dashboard';
-
- /**
- * Get default names for all widget types.
- *
- * @static
- *
- * @param string $context CWidgetConfig::CONTEXT_DASHBOARD | CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- *
- * @return array
- */
- public static function getKnownWidgetTypes(string $context): array {
- $types = [
- WIDGET_ACTION_LOG => _('Action log'),
- WIDGET_CLOCK => _('Clock'),
- WIDGET_DATA_OVER => _('Data overview'),
- WIDGET_DISCOVERY => _('Discovery status'),
- WIDGET_FAV_GRAPHS => _('Favorite graphs'),
- WIDGET_FAV_MAPS => _('Favorite maps'),
- WIDGET_GEOMAP => _('Geomap'),
- WIDGET_ITEM => _('Item value'),
- WIDGET_GRAPH => _('Graph (classic)'),
- WIDGET_GRAPH_PROTOTYPE => _('Graph prototype'),
- WIDGET_HOST_AVAIL => _('Host availability'),
- WIDGET_MAP => _('Map'),
- WIDGET_NAV_TREE => _('Map navigation tree'),
- WIDGET_PLAIN_TEXT => _('Plain text'),
- WIDGET_PROBLEM_HOSTS => _('Problem hosts'),
- WIDGET_PROBLEMS => _('Problems'),
- WIDGET_PROBLEMS_BY_SV => _('Problems by severity'),
- WIDGET_SLA_REPORT => _('SLA report'),
- WIDGET_SVG_GRAPH => _('Graph'),
- WIDGET_SYSTEM_INFO => _('System information'),
- WIDGET_TRIG_OVER => _('Trigger overview'),
- WIDGET_URL => _('URL'),
- WIDGET_WEB => _('Web monitoring'),
- WIDGET_TOP_HOSTS => _('Top hosts')
- ];
-
- $types = array_filter($types,
- function(string $type) use ($context): bool {
- return self::isWidgetTypeSupportedInContext($type, $context);
- },
- ARRAY_FILTER_USE_KEY
- );
-
- return $types;
- }
-
- /**
- * Get JavaScript classes for all widget types.
- *
- * @static
- *
- * @return array
- */
- public static function getJSClasses(): array {
- return [
- WIDGET_ACTION_LOG => 'CWidget',
- WIDGET_CLOCK => 'CWidgetClock',
- WIDGET_DATA_OVER => 'CWidget',
- WIDGET_DISCOVERY => 'CWidget',
- WIDGET_FAV_GRAPHS => 'CWidget',
- WIDGET_FAV_MAPS => 'CWidget',
- WIDGET_GEOMAP => 'CWidgetGeoMap',
- WIDGET_ITEM => 'CWidgetItem',
- WIDGET_GRAPH => 'CWidgetGraph',
- WIDGET_GRAPH_PROTOTYPE => 'CWidgetGraphPrototype',
- WIDGET_HOST_AVAIL => 'CWidget',
- WIDGET_MAP => 'CWidgetMap',
- WIDGET_NAV_TREE => 'CWidgetNavTree',
- WIDGET_PLAIN_TEXT => 'CWidget',
- WIDGET_PROBLEM_HOSTS => 'CWidget',
- WIDGET_PROBLEMS => 'CWidgetProblems',
- WIDGET_PROBLEMS_BY_SV => 'CWidgetProblemsBySv',
- WIDGET_SLA_REPORT => 'CWidget',
- WIDGET_SVG_GRAPH => 'CWidgetSvgGraph',
- WIDGET_SYSTEM_INFO => 'CWidget',
- WIDGET_TRIG_OVER => 'CWidgetTrigerOver',
- WIDGET_URL => 'CWidget',
- WIDGET_WEB => 'CWidget',
- WIDGET_TOP_HOSTS => 'CWidget'
- ];
- }
-
- /**
- * Get reference field name for widgets of the given type.
- *
- * @static
- *
- * @return string|null
- */
- public static function getReferenceField(string $type): ?string {
- switch ($type) {
- case WIDGET_MAP:
- case WIDGET_NAV_TREE:
- return 'reference';
-
- default:
- return null;
- }
- }
-
- /**
- * Get foreign reference field names for widgets of the given type.
- *
- * @static
- *
- * @return array
- */
- public static function getForeignReferenceFields(string $type): array {
- switch ($type) {
- case WIDGET_MAP:
- return ['filter_widget_reference'];
-
- default:
- return [];
- }
- }
-
- /**
- * Get default widget dimensions.
- *
- * @static
- *
- * @return array
- */
- private static function getDefaultDimensions(): array {
- return [
- WIDGET_ACTION_LOG => ['width' => 12, 'height' => 5],
- WIDGET_CLOCK => ['width' => 4, 'height' => 3],
- WIDGET_DATA_OVER => ['width' => 12, 'height' => 5],
- WIDGET_DISCOVERY => ['width' => 6, 'height' => 3],
- WIDGET_FAV_GRAPHS => ['width' => 4, 'height' => 3],
- WIDGET_FAV_MAPS => ['width' => 4, 'height' => 3],
- WIDGET_GEOMAP => ['width' => 12, 'height' => 5],
- WIDGET_ITEM => ['width' => 4, 'height' => 3],
- WIDGET_GRAPH => ['width' => 12, 'height' => 5],
- WIDGET_GRAPH_PROTOTYPE => ['width' => 16, 'height' => 5],
- WIDGET_HOST_AVAIL => ['width' => 6, 'height' => 3],
- WIDGET_MAP => ['width' => 18, 'height' => 5],
- WIDGET_NAV_TREE => ['width' => 6, 'height' => 5],
- WIDGET_PLAIN_TEXT => ['width' => 6, 'height' => 3],
- WIDGET_PROBLEM_HOSTS => ['width' => 12, 'height' => 5],
- WIDGET_PROBLEMS => ['width' => 12, 'height' => 5],
- WIDGET_PROBLEMS_BY_SV => ['width' => 12, 'height' => 5],
- WIDGET_SLA_REPORT => ['width' => 12, 'height' => 5],
- WIDGET_SVG_GRAPH => ['width' => 12, 'height' => 5],
- WIDGET_SYSTEM_INFO => ['width' => 12, 'height' => 5],
- WIDGET_TRIG_OVER => ['width' => 12, 'height' => 5],
- WIDGET_URL => ['width' => 12, 'height' => 5],
- WIDGET_WEB => ['width' => 6, 'height' => 3],
- WIDGET_TOP_HOSTS => ['width' => 12, 'height' => 5]
- ];
- }
-
- /**
- * Get default values for widgets.
- *
- * @static
- *
- * @param string $context CWidgetConfig::CONTEXT_DASHBOARD | CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- *
- * @return array
- */
- public static function getDefaults(string $context): array {
- $ret = [];
-
- $dimensions = self::getDefaultDimensions();
- $js_clases = self::getJSClasses();
-
- foreach (self::getKnownWidgetTypes($context) as $type => $name) {
- $ret[$type] = [
- 'name' => $name,
- 'size' => $dimensions[$type],
- 'js_class' => $js_clases[$type],
- 'iterator' => self::isIterator($type),
- 'reference_field' => self::getReferenceField($type),
- 'foreign_reference_fields' => self::getForeignReferenceFields($type)
- ];
- }
-
- return $ret;
- }
-
- /**
- * Check if widget type is supported in a given context.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param string $context CWidgetConfig::CONTEXT_DASHBOARD | CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- *
- * @return bool
- */
- public static function isWidgetTypeSupportedInContext(string $type, string $context): bool {
- switch ($context) {
- case self::CONTEXT_DASHBOARD:
- return true;
-
- case self::CONTEXT_TEMPLATE_DASHBOARD:
- switch ($type) {
- case WIDGET_CLOCK:
- case WIDGET_GRAPH:
- case WIDGET_GRAPH_PROTOTYPE:
- case WIDGET_ITEM:
- case WIDGET_PLAIN_TEXT:
- case WIDGET_URL:
- return true;
-
- default:
- return false;
- }
- }
- }
-
- /**
- * Get default refresh rate for widget type.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- *
- * @return int default refresh rate, 0 for no refresh
- */
- public static function getDefaultRfRate(string $type): int {
- switch ($type) {
- case WIDGET_ACTION_LOG:
- case WIDGET_DATA_OVER:
- case WIDGET_TOP_HOSTS:
- case WIDGET_DISCOVERY:
- case WIDGET_GEOMAP:
- case WIDGET_GRAPH:
- case WIDGET_GRAPH_PROTOTYPE:
- case WIDGET_PLAIN_TEXT:
- case WIDGET_ITEM:
- case WIDGET_PROBLEM_HOSTS:
- case WIDGET_PROBLEMS:
- case WIDGET_PROBLEMS_BY_SV:
- case WIDGET_SVG_GRAPH:
- case WIDGET_TRIG_OVER:
- case WIDGET_WEB:
- return SEC_PER_MIN;
-
- case WIDGET_CLOCK:
- case WIDGET_FAV_GRAPHS:
- case WIDGET_FAV_MAPS:
- case WIDGET_HOST_AVAIL:
- case WIDGET_MAP:
- case WIDGET_NAV_TREE:
- case WIDGET_SYSTEM_INFO:
- return 15 * SEC_PER_MIN;
-
- case WIDGET_SLA_REPORT:
- case WIDGET_URL:
- return 0;
- }
- }
-
- /**
- * Get all possible widget refresh intervals.
- *
- * @return array
- */
- public static function getRfRates() {
- return [
- 0 => _('No refresh'),
- SEC_PER_MIN / 6 => _n('%1$s second', '%1$s seconds', 10),
- SEC_PER_MIN / 2 => _n('%1$s second', '%1$s seconds', 30),
- SEC_PER_MIN => _n('%1$s minute', '%1$s minutes', 1),
- SEC_PER_MIN * 2 => _n('%1$s minute', '%1$s minutes', 2),
- SEC_PER_MIN * 10 => _n('%1$s minute', '%1$s minutes', 10),
- SEC_PER_MIN * 15 => _n('%1$s minute', '%1$s minutes', 15)
- ];
- }
-
- /**
- * Check if time selector is necessary for widget having specified type and fields.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param array $fields
- *
- * @return bool
- */
- public static function usesTimeSelector(string $type, array $fields): bool {
- switch ($type) {
- case WIDGET_GRAPH:
- case WIDGET_GRAPH_PROTOTYPE:
- return true;
-
- case WIDGET_SVG_GRAPH:
- return !CWidgetFormSvgGraph::hasOverrideTime($fields);
-
- default:
- return false;
- }
- }
-
- /**
- * Check if widget type belongs to iterators.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- *
- * @return bool
- */
- public static function isIterator(string $type): bool {
- switch ($type) {
- case WIDGET_GRAPH_PROTOTYPE:
- return true;
-
- default:
- return false;
- }
- }
-
- /**
- * Check if widget has padding or not.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param array $fields Widget form fields
- * @param int $view_mode Widget view mode. ZBX_WIDGET_VIEW_MODE_NORMAL by default
- *
- * @return bool
- */
- private static function hasPadding(string $type, array $fields, int $view_mode): bool {
- if ($view_mode == ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER) {
- switch ($type) {
- case WIDGET_CLOCK:
- return $fields['clock_type'] === WIDGET_CLOCK_TYPE_ANALOG;
-
- case WIDGET_GRAPH:
- case WIDGET_MAP:
- case WIDGET_SVG_GRAPH:
- return true;
-
- default:
- return false;
- }
- }
- else {
- switch ($type) {
- case WIDGET_CLOCK:
- return $fields['clock_type'] === WIDGET_CLOCK_TYPE_ANALOG;
-
- case WIDGET_HOST_AVAIL:
- return (count($fields['interface_type']) != 1);
-
- case WIDGET_PROBLEMS_BY_SV:
- return $fields['show_type'] != WIDGET_PROBLEMS_BY_SV_SHOW_TOTALS;
-
- case WIDGET_GRAPH_PROTOTYPE:
- case WIDGET_ITEM:
- case WIDGET_URL:
- return false;
-
- default:
- return true;
- }
- }
- }
-
- /**
- * Get widget configuration based on widget type, fields and current view mode.
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param array $fields Widget form fields
- * @param int $view_mode Widget view mode
- *
- * @return array
- */
- public static function getConfiguration(string $type, array $fields, int $view_mode): array {
- return [
- 'padding' => self::hasPadding($type, $fields, $view_mode)
- ];
- }
-
- /**
- * Get Form object for widget with provided data.
- *
- * @static
- *
- * @param string $type Widget type - 'WIDGET_*' constant.
- * @param string $data JSON string with widget fields.
- * @param string|null $templateid Template ID for template dashboards or null for non-template dashboards.
- *
- * @return CWidgetForm
- */
- public static function getForm(string $type, string $data, ?string $templateid): CWidgetForm {
- switch ($type) {
- case WIDGET_ACTION_LOG:
- return new CWidgetFormActionLog($data, $templateid);
-
- case WIDGET_CLOCK:
- return new CWidgetFormClock($data, $templateid);
-
- case WIDGET_DATA_OVER:
- return new CWidgetFormDataOver($data, $templateid);
-
- case WIDGET_GEOMAP:
- return new CWidgetFormGeoMap($data, $templateid);
-
- case WIDGET_GRAPH:
- return new CWidgetFormGraph($data, $templateid);
-
- case WIDGET_GRAPH_PROTOTYPE:
- return new CWidgetFormGraphPrototype($data, $templateid);
-
- case WIDGET_HOST_AVAIL:
- return new CWidgetFormHostAvail($data, $templateid);
-
- case WIDGET_MAP:
- return new CWidgetFormMap($data, $templateid);
-
- case WIDGET_NAV_TREE:
- return new CWidgetFormNavTree($data, $templateid);
-
- case WIDGET_PLAIN_TEXT:
- return new CWidgetFormPlainText($data, $templateid);
-
- case WIDGET_PROBLEM_HOSTS:
- return new CWidgetFormProblemHosts($data, $templateid);
-
- case WIDGET_PROBLEMS:
- return new CWidgetFormProblems($data, $templateid);
-
- case WIDGET_PROBLEMS_BY_SV:
- return new CWidgetFormProblemsBySv($data, $templateid);
-
- case WIDGET_SLA_REPORT:
- return new CWidgetFormSlaReport($data, $templateid);
-
- case WIDGET_SVG_GRAPH:
- return new CWidgetFormSvgGraph($data, $templateid);
-
- case WIDGET_SYSTEM_INFO:
- return new CWidgetFormSystemInfo($data, $templateid);
-
- case WIDGET_TRIG_OVER:
- return new CWidgetFormTrigOver($data, $templateid);
-
- case WIDGET_URL:
- return new CWidgetFormUrl($data, $templateid);
-
- case WIDGET_WEB:
- return new CWidgetFormWeb($data, $templateid);
-
- case WIDGET_ITEM:
- return new CWidgetFormItem($data, $templateid);
-
- case WIDGET_TOP_HOSTS:
- return new CWidgetFormTopHosts($data, $templateid);
-
- default:
- return new CWidgetForm($data, $templateid, $type);
- }
- }
-}
diff --git a/ui/include/classes/widgets/fields/CWidgetField.php b/ui/include/classes/widgets/CWidgetField.php
index 8eda42f3da7..76a0444288b 100644
--- a/ui/include/classes/widgets/fields/CWidgetField.php
+++ b/ui/include/classes/widgets/CWidgetField.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -18,197 +18,115 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-class CWidgetField {
- const FLAG_ACKNOWLEDGES = 0x01;
- const FLAG_NOT_EMPTY = 0x02;
- const FLAG_LABEL_ASTERISK = 0x04;
- const FLAG_DISABLED = 0x08;
+namespace Zabbix\Widgets;
+
+use CApiInputValidator;
+
+abstract class CWidgetField {
+
+ public const FLAG_ACKNOWLEDGES = 0x01;
+ public const FLAG_NOT_EMPTY = 0x02;
+ public const FLAG_LABEL_ASTERISK = 0x04;
+ public const FLAG_DISABLED = 0x08;
+
+ protected string $name;
+ protected ?string $label;
+ protected ?string $full_name = null;
+
+ protected ?int $save_type = null;
- protected $name;
- protected $full_name;
- protected $label;
protected $value;
protected $default;
- protected $save_type;
- protected $action;
- protected $validation_rules = [];
- protected $strict_validation_rules = null;
- protected $ex_validation_rules = [];
- protected $flags;
+
+ protected ?string $action = null;
+
+ protected int $flags = 0x00;
+
+ protected array $validation_rules = [];
+ protected ?array $strict_validation_rules = null;
+ protected array $ex_validation_rules = [];
/**
- * Create widget field (general)
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
+ * @param string $name Field name in form.
+ * @param string|null $label Label for the field in form.
*/
- public function __construct($name, $label = null) {
+ public function __construct(string $name, string $label = null) {
$this->name = $name;
$this->label = $label;
$this->value = null;
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->flags = 0x00;
}
- public function setValue($value) {
- $this->value = $value;
-
- return $this;
+ public function getName(): string {
+ return $this->name;
}
- public function setDefault($value) {
- $this->default = $value;
-
- return $this;
+ public function getLabel(): ?string {
+ return $this->label;
}
/**
- * Set JS code that will be called on field change.
- *
- * @param string $action JS function to call on field change.
- *
- * @return $this
+ * Set field full name which will appear in case of error messages. For example:
+ * Invalid parameter "<FULL NAME>": too many decimal places.
*/
- public function setAction($action) {
- $this->action = $action;
-
- return $this;
- }
-
- protected function setSaveType($save_type) {
- switch ($save_type) {
- case ZBX_WIDGET_FIELD_TYPE_INT32:
- $this->validation_rules = ['type' => API_INT32];
- break;
-
- case ZBX_WIDGET_FIELD_TYPE_STR:
- $this->validation_rules = ['type' => API_STRING_UTF8, 'length' => 255];
- break;
-
- case ZBX_WIDGET_FIELD_TYPE_GROUP:
- case ZBX_WIDGET_FIELD_TYPE_HOST:
- case ZBX_WIDGET_FIELD_TYPE_ITEM:
- case ZBX_WIDGET_FIELD_TYPE_ITEM_PROTOTYPE:
- case ZBX_WIDGET_FIELD_TYPE_GRAPH:
- case ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE:
- case ZBX_WIDGET_FIELD_TYPE_SERVICE:
- case ZBX_WIDGET_FIELD_TYPE_SLA:
- $this->validation_rules = ['type' => API_IDS];
- break;
-
- case ZBX_WIDGET_FIELD_TYPE_MAP:
- $this->validation_rules = ['type' => API_ID];
- break;
-
- default:
- exit(_('Internal error.'));
- }
-
- $this->save_type = $save_type;
+ public function setFullName(string $name): self {
+ $this->full_name = $name;
return $this;
}
- protected function setValidationRules(array $validation_rules) {
- $this->validation_rules = $validation_rules;
- }
-
- protected function getValidationRules() {
- return $this->validation_rules;
- }
-
- /**
- * Set validation rules for "strict" mode.
- *
- * @param array|null $strict_validation_rules
- */
- protected function setStrictValidationRules(array $strict_validation_rules = null) {
- $this->strict_validation_rules = $strict_validation_rules;
- }
-
- protected function setExValidationRules(array $ex_validation_rules) {
- $this->ex_validation_rules = $ex_validation_rules;
- }
-
/**
* Get field value. If no value is set, will return default value.
- *
- * @return mixed
*/
public function getValue() {
- return ($this->value === null) ? $this->default : $this->value;
+ return $this->value ?? $this->default;
}
- public function getLabel() {
- return $this->label;
- }
+ public function setValue($value): self {
+ $this->value = $value;
- public function getName() {
- return $this->name;
+ return $this;
}
- /**
- * Set field full name which will appear in case of error messages. For example:
- * Invalid parameter "<FULL NAME>": too many decimal places.
- *
- * @param string $name
- *
- * @return CWidgetField
- */
- public function setFullName($name) {
- $this->full_name = $name;
+ public function setDefault($value): self {
+ $this->default = $value;
return $this;
}
- public function getAction() {
+ public function getAction(): ?string {
return $this->action;
}
- public function getSaveType() {
- return $this->save_type;
+ /**
+ * Set JS code that will be called on field change.
+ *
+ * @param string $action JS function to call on field change.
+ */
+ public function setAction(string $action): self {
+ $this->action = $action;
+
+ return $this;
}
/**
- * Set additional flags for validation rule array.
- *
- * @param array $validation_rule
- * @param int $flag
- *
+ * Get additional flags, which can be used in configuration form.
*/
- protected static function setValidationRuleFlag(array &$validation_rule, $flag) {
- if (array_key_exists('flags', $validation_rule)) {
- $validation_rule['flags'] |= $flag;
- }
- else {
- $validation_rule['flags'] = $flag;
- }
+ public function getFlags(): int {
+ return $this->flags;
}
/**
* Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
*/
- public function setFlags($flags) {
+ public function setFlags(int $flags): self {
$this->flags = $flags;
return $this;
}
/**
- * Get additional flags, which can be used in configuration form.
- *
- * @return int
- */
- public function getFlags() {
- return $this->flags;
- }
-
- /**
* @param bool $strict Widget form submit validation?
*
* @return array Errors.
@@ -220,13 +138,14 @@ class CWidgetField {
? $this->strict_validation_rules
: $this->validation_rules;
$validation_rules += $this->ex_validation_rules;
- $value = ($this->value === null) ? $this->default : $this->value;
+
+ $value = $this->value ?? $this->default;
if ($this->full_name !== null) {
$label = $this->full_name;
}
else {
- $label = ($this->label === null) ? $this->name : $this->label;
+ $label = $this->label ?? $this->name;
}
if (CApiInputValidator::validate($validation_rules, $value, $label, $error)) {
@@ -245,9 +164,9 @@ class CWidgetField {
* Reference is needed here to avoid array merging in CWidgetForm::fieldsToApi method. With large number of widget
* fields it causes significant performance decrease.
*
- * @param array $widget_fields reference to Array of widget fields.
+ * @param array $widget_fields reference to Array of widget fields.
*/
- public function toApi(array &$widget_fields = []) {
+ public function toApi(array &$widget_fields = []): void {
$value = $this->getValue();
if ($value !== null && $value !== $this->default) {
@@ -268,4 +187,75 @@ class CWidgetField {
}
}
}
+
+ protected function setSaveType($save_type): self {
+ switch ($save_type) {
+ case ZBX_WIDGET_FIELD_TYPE_INT32:
+ $this->validation_rules = ['type' => API_INT32];
+ break;
+
+ case ZBX_WIDGET_FIELD_TYPE_STR:
+ $this->validation_rules = ['type' => API_STRING_UTF8, 'length' => 255];
+ break;
+
+ case ZBX_WIDGET_FIELD_TYPE_GROUP:
+ case ZBX_WIDGET_FIELD_TYPE_HOST:
+ case ZBX_WIDGET_FIELD_TYPE_ITEM:
+ case ZBX_WIDGET_FIELD_TYPE_ITEM_PROTOTYPE:
+ case ZBX_WIDGET_FIELD_TYPE_GRAPH:
+ case ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE:
+ case ZBX_WIDGET_FIELD_TYPE_SERVICE:
+ case ZBX_WIDGET_FIELD_TYPE_SLA:
+ $this->validation_rules = ['type' => API_IDS];
+ break;
+
+ case ZBX_WIDGET_FIELD_TYPE_MAP:
+ $this->validation_rules = ['type' => API_ID];
+ break;
+
+ default:
+ exit(_('Internal error.'));
+ }
+
+ $this->save_type = $save_type;
+
+ return $this;
+ }
+
+ protected function getValidationRules(): array {
+ return $this->validation_rules;
+ }
+
+ protected function setValidationRules(array $validation_rules): self {
+ $this->validation_rules = $validation_rules;
+
+ return $this;
+ }
+
+ /**
+ * Set validation rules for "strict" mode.
+ */
+ protected function setStrictValidationRules(array $strict_validation_rules = null): self {
+ $this->strict_validation_rules = $strict_validation_rules;
+
+ return $this;
+ }
+
+ protected function setExValidationRules(array $ex_validation_rules): self {
+ $this->ex_validation_rules = $ex_validation_rules;
+
+ return $this;
+ }
+
+ /**
+ * Set additional flags for validation rule array.
+ */
+ protected static function setValidationRuleFlag(array &$validation_rule, int $flag): void {
+ if (array_key_exists('flags', $validation_rule)) {
+ $validation_rule['flags'] |= $flag;
+ }
+ else {
+ $validation_rule['flags'] = $flag;
+ }
+ }
}
diff --git a/ui/include/classes/widgets/forms/CWidgetForm.php b/ui/include/classes/widgets/CWidgetForm.php
index a48a5c86d27..308a0a72645 100644
--- a/ui/include/classes/widgets/forms/CWidgetForm.php
+++ b/ui/include/classes/widgets/CWidgetForm.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,76 +19,95 @@
**/
-class CWidgetForm {
-
- protected $fields;
+namespace Zabbix\Widgets;
- /**
- * Widget fields array that came from AJAX request.
- *
- * @var array
- */
- protected $data;
+class CWidgetForm {
- protected $templateid;
+ protected array $fields = [];
- public function __construct($data, $templateid, $type) {
- $this->data = json_decode($data, true);
+ protected array $values;
+ protected ?string $templateid;
+ public function __construct(array $values, ?string $templateid) {
+ $this->values = $this->normalizeValues($values);
$this->templateid = $templateid;
+ }
- $this->fields = [];
+ public function addFields(): self {
+ return $this;
+ }
- if ($templateid === null) {
- // Refresh interval field.
- $default_rf_rate = '';
+ public function addField(?CWidgetField $field): self {
+ if ($field !== null) {
+ $this->fields[$field->getName()] = $field;
+ }
- foreach (CWidgetConfig::getRfRates() as $rf_rate => $label) {
- if ($rf_rate == CWidgetConfig::getDefaultRfRate($type)) {
- $default_rf_rate = $label;
- break;
- }
- }
+ return $this;
+ }
- $rf_rates = [
- -1 => _('Default').' ('.$default_rf_rate.')'
- ];
- $rf_rates += CWidgetConfig::getRfRates();
+ public function getFields(): array {
+ return $this->fields;
+ }
- $rf_rate_field = (new CWidgetFieldSelect('rf_rate', _('Refresh interval'), $rf_rates))
- ->setDefault(-1);
+ public function getFieldValue(string $field_name) {
+ return $this->fields[$field_name]->getValue();
+ }
- if (array_key_exists('rf_rate', $this->data)) {
- $rf_rate_field->setValue($this->data['rf_rate']);
- }
+ public function getFieldsValues(): array {
+ $values = [];
- $this->fields[$rf_rate_field->getName()] = $rf_rate_field;
+ foreach ($this->fields as $field) {
+ $values[$field->getName()] = $field->getValue();
}
- // Add Columns and Rows fields for Iterator widgets.
-
- if (CWidgetConfig::isIterator($type)) {
- $field_columns = (new CWidgetFieldIntegerBox('columns', _('Columns'), 1, DASHBOARD_MAX_COLUMNS))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
- ->setDefault(2);
+ return $values;
+ }
- if (array_key_exists('columns', $this->data)) {
- $field_columns->setValue($this->data['columns']);
+ public function setFieldsValues(): self {
+ foreach ($this->fields as $field) {
+ if (array_key_exists($field->getName(), $this->values)) {
+ $field->setValue($this->values[$field->getName()]);
}
+ }
- $this->fields[$field_columns->getName()] = $field_columns;
+ return $this;
+ }
- $field_rows = (new CWidgetFieldIntegerBox('rows', _('Rows'), 1,
- floor(DASHBOARD_WIDGET_MAX_ROWS / DASHBOARD_WIDGET_MIN_ROWS)))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
- ->setDefault(1);
+ /**
+ * Validate form fields.
+ *
+ * @param bool $strict Enables more strict validation of the form fields.
+ * Must be enabled for validation of input parameters in the widget configuration form.
+ *
+ * @return array
+ */
+ public function validate(bool $strict = false): array {
+ $errors = [];
- if (array_key_exists('rows', $this->data)) {
- $field_rows->setValue($this->data['rows']);
- }
+ foreach ($this->fields as $field) {
+ $errors = array_merge($errors, $field->validate($strict));
+ }
+
+ return $errors;
+ }
+
+ /**
+ * Prepares array, ready to be passed to CDashboard API functions.
+ *
+ * @return array Array of widget fields ready for saving in API.
+ */
+ public function fieldsToApi(): array {
+ $api_fields = [];
- $this->fields[$field_rows->getName()] = $field_rows;
+ foreach ($this->fields as $field) {
+ $field->toApi($api_fields);
}
+
+ return $api_fields;
+ }
+
+ protected function normalizeValues(array $values): array {
+ return self::convertDottedKeys($values);
}
/**
@@ -119,9 +138,9 @@ class CWidgetForm {
*
* @return array
*/
- protected static function convertDottedKeys(array $data) {
+ protected static function convertDottedKeys(array $data): array {
// API doesn't guarantee fields to be retrieved in same order as stored. Sorting by key...
- uksort($data, function ($key1, $key2) {
+ uksort($data, static function ($key1, $key2) {
foreach (['key1', 'key2'] as $var) {
if (preg_match('/^([a-z]+)\.([a-z_]+)\.(\d+)\.(\d+)$/', (string) $$var, $matches) === 1) {
$$var = $matches[1].'.'.$matches[3].'.'.$matches[2].'.'.$matches[4];
@@ -152,62 +171,4 @@ class CWidgetForm {
return $data;
}
-
- /**
- * Return fields for this form.
- *
- * @return array An array of CWidgetField.
- */
- public function getFields() {
- return $this->fields;
- }
-
- /**
- * Returns widget fields data as array.
- *
- * @return array Key/value pairs where key is field name and value is it's data.
- */
- public function getFieldsData() {
- $data = [];
-
- foreach ($this->fields as $field) {
- /* @var $field CWidgetField */
- $data[$field->getName()] = $field->getValue();
- }
-
- return $data;
- }
-
- /**
- * Validate form fields.
- *
- * @param bool $strict Enables more strict validation of the form fields.
- * Must be enabled for validation of input parameters in the widget configuration form.
- *
- * @return array
- */
- public function validate($strict = false) {
- $errors = [];
-
- foreach ($this->fields as $field) {
- $errors = array_merge($errors, $field->validate($strict));
- }
-
- return $errors;
- }
-
- /**
- * Prepares array, ready to be passed to CDashboard API functions.
- *
- * @return array Array of widget fields ready for saving in API.
- */
- public function fieldsToApi() {
- $api_fields = [];
-
- foreach ($this->fields as $field) {
- $field->toApi($api_fields);
- }
-
- return $api_fields;
- }
}
diff --git a/ui/include/classes/widgets/CWidgetHelper.php b/ui/include/classes/widgets/CWidgetHelper.php
deleted file mode 100644
index abbf450d4a9..00000000000
--- a/ui/include/classes/widgets/CWidgetHelper.php
+++ /dev/null
@@ -1,1614 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CWidgetHelper {
-
- public const DATASET_TYPE_SINGLE_ITEM = 0;
- public const DATASET_TYPE_PATTERN_ITEM = 1;
-
- /**
- * Create CForm for widget configuration form.
- *
- * @return CForm
- */
- public static function createForm(): CForm {
- return (new CForm('post'))
- ->cleanItems()
- ->setId('widget-dialogue-form')
- ->setName('widget_dialogue_form')
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FORM);
- }
-
- /**
- * Create CFormGrid for widget configuration form with default fields in it.
- *
- * @param string $name
- * @param string $type
- * @param int $view_mode ZBX_WIDGET_VIEW_MODE_NORMAL | ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER
- * @param array $known_widget_types
- * @param CWidgetFieldSelect|null $field_rf_rate
- *
- * @return CFormGrid
- */
- public static function createFormGrid(string $name, string $type, int $view_mode, array $known_widget_types,
- ?CWidgetFieldSelect $field_rf_rate): CFormGrid {
-
- $deprecated_widget_types = array_intersect_key($known_widget_types,
- array_flip(CWidgetConfig::DEPRECATED_WIDGETS)
- );
-
- $widget_types_select = (new CSelect('type'))
- ->setFocusableElementId('label-type')
- ->setId('type')
- ->setValue($type)
- ->setAttribute('autofocus', 'autofocus')
- ->addOptions(CSelect::createOptionsFromArray(
- array_diff_key($known_widget_types, $deprecated_widget_types))
- );
-
- if ($deprecated_widget_types) {
- $widget_types_select->addOptionGroup(
- (new CSelectOptionGroup(_('Deprecated')))
- ->addOptions(CSelect::createOptionsFromArray($deprecated_widget_types))
- );
- }
-
- return (new CFormGrid())
- ->addItem([
- new CLabel(_('Type'), 'label-type'),
- new CFormField(array_key_exists($type, $deprecated_widget_types)
- ? [$widget_types_select, ' ', makeWarningIcon(_('Widget is deprecated.'))]
- : $widget_types_select
- )
- ])
- ->addItem(
- (new CFormField(
- (new CCheckBox('show_header'))
- ->setLabel(_('Show header'))
- ->setLabelPosition(CCheckBox::LABEL_POSITION_LEFT)
- ->setId('show_header')
- ->setChecked($view_mode == ZBX_WIDGET_VIEW_MODE_NORMAL)
- ))->addClass('form-field-show-header')
- )
- ->addItem([
- new CLabel(_('Name'), 'name'),
- new CFormField(
- (new CTextBox('name', $name))
- ->setAttribute('placeholder', _('default'))
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
- )
- ])
- ->addItem($field_rf_rate !== null
- ? [
- self::getLabel($field_rf_rate),
- new CFormField(self::getSelect($field_rf_rate))
- ]
- : null
- );
- }
-
- /**
- * Creates label linked to the field.
- *
- * @param CWidgetField $field
- * @param string $class Custom CSS class for label.
- * @param mixed $hint Hint box text.
- *
- * @return CLabel
- */
- public static function getLabel($field, $class = null, $hint = null) {
- $help_icon = ($hint !== null)
- ? makeHelpIcon($hint)
- : null;
-
- if ($field instanceof CWidgetFieldSelect) {
- return (new CLabel([$field->getLabel(), $help_icon], 'label-'.$field->getName()))
- ->setAsteriskMark(self::isAriaRequired($field))
- ->addClass($class);
- }
-
- return (new CLabel([$field->getLabel(), $help_icon], $field->getName()))
- ->setAsteriskMark(self::isAriaRequired($field))
- ->addClass($class);
- }
-
- /**
- * @param CWidgetFieldSelect $field
- *
- * @return CSelect
- */
- public static function getSelect($field) {
- return (new CSelect($field->getName()))
- ->setId($field->getName())
- ->setFocusableElementId('label-'.$field->getName())
- ->setValue($field->getValue())
- ->addOptions(CSelect::createOptionsFromArray($field->getValues()))
- ->setDisabled($field->getFlags() & CWidgetField::FLAG_DISABLED)
- ->setAriaRequired(self::isAriaRequired($field));
- }
-
- /**
- * @param CWidgetFieldTextArea $field
- *
- * @return CTextArea
- */
- public static function getTextArea($field) {
- return (new CTextArea($field->getName(), $field->getValue()))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setAdaptiveWidth($field->getWidth());
- }
-
- /**
- * @param CWidgetFieldTextBox $field
- *
- * @return CTextBox
- */
- public static function getTextBox($field) {
- return (new CTextBox($field->getName(), $field->getValue()))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setAttribute('placeholder', $field->getPlaceholder())
- ->setWidth($field->getWidth());
- }
-
- /**
- * @param CWidgetFieldLatLng $field
- *
- * @return CTextBox
- */
- public static function getLatLngZoomBox($field) {
- return (new CTextBox($field->getName(), $field->getValue()))
- ->setAttribute('placeholder', $field->getPlaceholder())
- ->setWidth($field->getWidth());
- }
-
- /**
- * @param CWidgetFieldUrl $field
- *
- * @return CTextBox
- */
- public static function getUrlBox($field) {
- return (new CTextBox($field->getName(), $field->getValue()))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH);
- }
-
- /**
- * @param CWidgetFieldRangeControl $field
- *
- * @return CRangeControl
- */
- public static function getRangeControl($field) {
- return (new CRangeControl($field->getName(), (int) $field->getValue()))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ->setStep($field->getStep())
- ->setMin($field->getMin())
- ->setMax($field->getMax());
- }
-
- /**
- * @param CWidgetFieldHostPatternSelect $field Widget field object.
- * @param string $form_name HTML form element name.
- *
- * @return CPatternSelect
- */
- public static function getHostPatternSelect($field, $form_name) {
- return (new CPatternSelect([
- 'name' => $field->getName().'[]',
- 'object_name' => 'hosts',
- 'data' => $field->getValue(),
- 'placeholder' => $field->getPlaceholder(),
- 'wildcard_allowed' => 1,
- 'popup' => [
- 'parameters' => [
- 'srctbl' => 'hosts',
- 'srcfld1' => 'hostid',
- 'dstfrm' => $form_name,
- 'dstfld1' => zbx_formatDomId($field->getName().'[]')
- ]
- ],
- 'add_post_js' => false
- ]))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH);
- }
-
- /**
- * @param CWidgetFieldCheckBox $field
- *
- * @return array
- */
- public static function getCheckBox($field) {
- return [(new CVar($field->getName(), '0'))->removeId(), (new CCheckBox($field->getName()))
- ->setChecked((bool) $field->getValue())
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setLabel($field->getCaption())
- ->onChange($field->getAction())
- ];
- }
-
- /**
- * @param CWidgetFieldColor $field
- * @param bool $use_default Tell the Color picker whether to use Default color feature or not.
- *
- * @return CColor
- */
- public static function getColor($field, $use_default = false) {
- // appendColorPickerJs(false), because the script responsible for it is in widget.item.form.view.
- $color_picker = (new CColor($field->getName(), $field->getValue()))->appendColorPickerJs(false);
- if ($use_default) {
- $color_picker->enableUseDefault();
- }
- return $color_picker;
- }
-
- /**
- * Creates label linked to the multiselect field.
- *
- * @param CWidgetFieldMs $field
- *
- * @return CLabel
- */
- public static function getMultiselectLabel($field) {
- $field_name = $field->getName();
-
- if ($field instanceof CWidgetFieldMs) {
- $field_name .= ($field->isMultiple() ? '[]' : '');
- }
- else {
- $field_name .= '[]';
- }
-
- return (new CLabel($field->getLabel(), $field_name.'_ms'))
- ->setAsteriskMark(self::isAriaRequired($field));
- }
-
- /**
- * @param CWidgetFieldMs $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- private static function getMultiselectField($field, $captions, $form_name, $object_name, $popup_options) {
- $field_name = $field->getName().($field->isMultiple() ? '[]' : '');
- $options = [
- 'name' => $field_name,
- 'object_name' => $object_name,
- 'multiple' => $field->isMultiple(),
- 'data' => $captions,
- 'popup' => [
- 'parameters' => [
- 'dstfrm' => $form_name,
- 'dstfld1' => zbx_formatDomId($field_name)
- ] + $popup_options
- ],
- 'add_post_js' => false
- ];
-
- if ($field instanceof CWidgetFieldMsHost && $field->getFilterPreselect()) {
- $options['popup']['filter_preselect']['id'] = $field->getFilterPreselect();
- $options['popup']['filter_preselect']['submit_as'] = 'groupid';
- }
-
- return (new CMultiSelect($options))
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field));
- }
-
- /**
- * @param CWidgetFieldMsGroup $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getGroup($field, $captions, $form_name) {
- return self::getMultiselectField($field, $captions, $form_name, 'hostGroup', [
- 'srctbl' => 'host_groups',
- 'srcfld1' => 'groupid',
- 'real_hosts' => true,
- 'enrich_parent_groups' => true
- ] + $field->getFilterParameters());
- }
-
- /**
- * @param CWidgetFieldMsHost $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getHost($field, $captions, $form_name) {
- return self::getMultiselectField($field, $captions, $form_name, 'hosts', [
- 'srctbl' => 'hosts',
- 'srcfld1' => 'hostid'
- ] + $field->getFilterParameters());
- }
-
- /**
- * @param CWidgetFieldMsItem $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getItem($field, $captions, $form_name) {
- return self::getMultiselectField($field, $captions, $form_name, 'items', [
- 'srctbl' => 'items',
- 'srcfld1' => 'itemid'
- ] + $field->getFilterParameters());
- }
-
- /**
- * @param CWidgetFieldMsGraph $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getGraph($field, $captions, $form_name) {
- return self::getMultiselectField($field, $captions, $form_name, 'graphs', [
- 'srctbl' => 'graphs',
- 'srcfld1' => 'graphid',
- 'srcfld2' => 'name',
- 'with_graphs' => true
- ] + $field->getFilterParameters());
- }
-
- /**
- * @param CWidgetFieldMsItemPrototype $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getItemPrototype($field, $captions, $form_name) {
- return self::getMultiselectField($field, $captions, $form_name, 'item_prototypes', [
- 'srctbl' => 'item_prototypes',
- 'srcfld1' => 'itemid'
- ] + $field->getFilterParameters());
- }
-
- /**
- * @param CWidgetFieldMsGraphPrototype $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getGraphPrototype($field, $captions, $form_name) {
- return self::getMultiselectField($field, $captions, $form_name, 'graph_prototypes', [
- 'srctbl' => 'graph_prototypes',
- 'srcfld1' => 'graphid',
- 'srcfld2' => 'name',
- 'with_graph_prototypes' => true
- ] + $field->getFilterParameters());
- }
-
- /**
- * @param CWidgetFieldMsService $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getService($field, $captions, $form_name) {
- return (new CMultiSelect([
- 'name' => $field->getName().($field->isMultiple() ? '[]' : ''),
- 'object_name' => 'services',
- 'multiple' => $field->isMultiple(),
- 'data' => $captions,
- 'custom_select' => true,
- 'add_post_js' => false
- ]))
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field));
- }
-
- /**
- * @param CWidgetFieldMsSla $field
- * @param array $captions
- * @param string $form_name
- *
- * @return CMultiSelect
- */
- public static function getSla($field, $captions, $form_name) {
- return self::getMultiselectField($field, $captions, $form_name, 'sla', [
- 'srctbl' => 'sla',
- 'srcfld1' => 'slaid'
- ] + $field->getFilterParameters());
- }
-
- public static function getSelectResource($field, $caption, $form_name) {
- return [
- (new CTextBox($field->getName().'_caption', $caption, true))
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field)),
- (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
- (new CButton('select', _('Select')))
- ->addClass(ZBX_STYLE_BTN_GREY)
- ->onClick('return PopUp("popup.generic", '.json_encode($field->getPopupOptions($form_name)).',
- {dialogue_class: "modal-popup-generic"}
- );')
- ];
- }
-
- /**
- * Creates select field without values, to later fill it by JS script.
- *
- * @param CWidgetFieldWidgetSelect $field
- *
- * @return CSelect
- */
- public static function getEmptySelect($field) {
- return (new CSelect($field->getName()))
- ->setFocusableElementId('label-'.$field->getName())
- ->setId($field->getName())
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field));
- }
-
- /**
- * @param CWidgetFieldIntegerBox $field
- *
- * @return CNumericBox
- */
- public static function getIntegerBox(CWidgetFieldIntegerBox $field): CNumericBox {
- return (new CNumericBox($field->getName(), $field->getValue(), $field->getMaxLength(), false,
- ($field->getFlags() & CWidgetField::FLAG_NOT_EMPTY) == 0
- ))
- ->setWidth(ZBX_TEXTAREA_NUMERIC_STANDARD_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field));
- }
-
- /**
- * @param CWidgetFieldNumericBox $field
- *
- * @return CTextBox
- */
- public static function getNumericBox($field) {
- return (new CTextBox($field->getName(), $field->getValue()))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setAttribute('placeholder', $field->getPlaceholder())
- ->setWidth($field->getWidth());
- }
-
- /**
- * @param CWidgetFieldRadioButtonList $field
- *
- * @return CRadioButtonList
- */
- public static function getRadioButtonList($field) {
- $radio_button_list = (new CRadioButtonList($field->getName(), $field->getValue()))
- ->setModern($field->getModern())
- ->setAriaRequired(self::isAriaRequired($field));
-
- foreach ($field->getValues() as $key => $value) {
- $radio_button_list
- ->addValue($value, $key, null, $field->getAction())
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED));
- }
-
- return $radio_button_list;
- }
-
- /**
- * @param CWidgetFieldSeverities $field
- *
- * @return CCheckBoxList
- */
- public static function getSeverities($field) {
- return (new CCheckBoxList($field->getName()))
- ->setOptions(CSeverityHelper::getSeverities())
- ->setChecked($field->getValue())
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
- ->setColumns(3)
- ->setVertical(true);
- }
-
- /**
- * @param CWidgetFieldCheckBoxList $field
- * @param array $list Option list array.
- * @param array $class_list List of additional CSS classes.
- *
- * @return CList
- */
- public static function getCheckBoxList($field, array $list, array $class_list = []) {
- $checkbox_list = (new CList())->addClass(ZBX_STYLE_LIST_CHECK_RADIO);
- if ($class_list) {
- foreach ($class_list as $class) {
- $checkbox_list->addClass($class);
- }
- }
-
- foreach ($list as $key => $label) {
- $checkbox_list->addItem(
- (new CCheckBox($field->getName().'[]', $key))
- ->setLabel($label)
- ->setId($field->getName().'_'.$key)
- ->setChecked(in_array($key, $field->getValue()))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- );
- }
-
- return $checkbox_list;
- }
-
- /**
- * @param CWidgetFieldColumnsList $field Widget columns field.
- *
- * @return CDiv
- */
- public static function getWidgetColumns(CWidgetFieldColumnsList $field) {
- $columns = $field->getValue();
- $header = [
- '',
- (new CColHeader(_('Name')))->addStyle('width: 39%'),
- (new CColHeader(_('Data')))->addStyle('width: 59%'),
- _('Action')
- ];
- $row_actions = [
- (new CButton('edit', _('Edit')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->removeId(),
- (new CButton('remove', _('Remove')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->removeId()
- ];
- $table = (new CTable())
- ->setId('list_'.$field->getName())
- ->setHeader($header);
- $enabled = !($field->getFlags() & CWidgetField::FLAG_DISABLED);
-
- foreach ($columns as $column_index => $column) {
- $column_data = [new CVar('sortorder['.$field->getName().'][]', $column_index)];
-
- foreach ($column as $key => $value) {
- $column_data[] = new CVar($field->getName().'['.$column_index.']['.$key.']', $value);
- }
-
- $label = array_key_exists('item', $column) ? $column['item'] : '';
-
- if ($column['data'] == CWidgetFieldColumnsList::DATA_HOST_NAME) {
- $label = new CTag('em', true, _('Host name'));
- }
- else if ($column['data'] == CWidgetFieldColumnsList::DATA_TEXT) {
- $label = new CTag('em', true, $column['text']);
- }
-
- $table->addRow((new CRow([
- (new CCol((new CDiv)->addClass(ZBX_STYLE_DRAG_ICON)))->addClass(ZBX_STYLE_TD_DRAG_ICON),
- (new CDiv($column['name']))->addClass('text'),
- (new CDiv($label))->addClass('text'),
- (new CList(array_merge($row_actions, [$column_data])))->addClass(ZBX_STYLE_HOR_LIST)
- ]))->addClass('sortable'));
- }
-
- $table->addRow(
- (new CCol(
- (new CButton('add', _('Add')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->setEnabled($enabled)
- ))->setColSpan(count($header))
- );
-
- return $table;
- }
-
- /**
- * @param CWidgetFieldTags $field
- *
- * @return CTable
- */
- public static function getTags($field) {
- $tags = $field->getValue();
-
- if (!$tags) {
- $tags = [['tag' => '', 'operator' => TAG_OPERATOR_LIKE, 'value' => '']];
- }
-
- $tags_table = (new CTable())
- ->setId('tags_table_'.$field->getName())
- ->addClass('table-tags')
- ->addClass('table-initial-width');
-
- $enabled = !($field->getFlags() & CWidgetField::FLAG_DISABLED);
- $i = 0;
-
- foreach ($tags as $tag) {
- $zselect_operator = (new CSelect($field->getName().'['.$i.'][operator]'))
- ->addOptions(CSelect::createOptionsFromArray([
- TAG_OPERATOR_EXISTS => _('Exists'),
- TAG_OPERATOR_EQUAL => _('Equals'),
- TAG_OPERATOR_LIKE => _('Contains'),
- TAG_OPERATOR_NOT_EXISTS => _('Does not exist'),
- TAG_OPERATOR_NOT_EQUAL => _('Does not equal'),
- TAG_OPERATOR_NOT_LIKE => _('Does not contain')
- ]))
- ->setValue($tag['operator'])
- ->setFocusableElementId($field->getName().'-'.$i.'-operator-select')
- ->setId($field->getName().'_'.$i.'_operator');
-
- if (!$enabled) {
- $zselect_operator->setDisabled();
- }
-
- $tags_table->addRow([
- (new CTextBox($field->getName().'['.$i.'][tag]', $tag['tag']))
- ->setAttribute('placeholder', _('tag'))
- ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field))
- ->setEnabled($enabled),
- $zselect_operator,
- (new CTextBox($field->getName().'['.$i.'][value]', $tag['value']))
- ->setAttribute('placeholder', _('value'))
- ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field))
- ->setId($field->getName().'_'.$i.'_value')
- ->setEnabled($enabled),
- (new CCol(
- (new CButton($field->getName().'['.$i.'][remove]', _('Remove')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('element-table-remove')
- ->setEnabled($enabled)
- ))->addClass(ZBX_STYLE_NOWRAP)
- ], 'form_row');
-
- $i++;
- }
-
- $tags_table->addRow(
- (new CCol(
- (new CButton('tags_add', _('Add')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('element-table-add')
- ->setEnabled($enabled)
- ))->setColSpan(3)
- );
-
- return $tags_table;
- }
-
- /**
- * JS Template for one tag line for Tags field
- *
- * @param CWidgetFieldTags $field
- *
- * @return string
- */
- public static function getTagsTemplate($field) {
- return (new CRow([
- (new CTextBox($field->getName().'[#{rowNum}][tag]'))
- ->setAttribute('placeholder', _('tag'))
- ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field)),
- (new CSelect($field->getName().'[#{rowNum}][operator]'))
- ->addOptions(CSelect::createOptionsFromArray([
- TAG_OPERATOR_EXISTS => _('Exists'),
- TAG_OPERATOR_EQUAL => _('Equals'),
- TAG_OPERATOR_LIKE => _('Contains'),
- TAG_OPERATOR_NOT_EXISTS => _('Does not exist'),
- TAG_OPERATOR_NOT_EQUAL => _('Does not equal'),
- TAG_OPERATOR_NOT_LIKE => _('Does not contain')
- ]))
- ->setValue(TAG_OPERATOR_LIKE)
- ->setFocusableElementId($field->getName().'-#{rowNum}-operator-select')
- ->setId($field->getName().'_#{rowNum}_operator'),
- (new CTextBox($field->getName().'[#{rowNum}][value]'))
- ->setAttribute('placeholder', _('value'))
- ->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
- ->setAriaRequired(self::isAriaRequired($field))
- ->setId($field->getName().'_#{rowNum}_value'),
- (new CCol(
- (new CButton($field->getName().'[#{rowNum}][remove]', _('Remove')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('element-table-remove')
- ))->addClass(ZBX_STYLE_NOWRAP)
- ]))
- ->addClass('form_row')
- ->toString();
- }
-
- /**
- * @param CWidgetFieldDatePicker $field
- *
- * @return CDateSelector
- */
- public static function getDatePicker(CWidgetFieldDatePicker $field): CDateSelector {
- return (new CDateSelector($field->getName(), $field->getValue()))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setMaxLength(DB::getFieldLength('widget_field', 'value_str'))
- ->setEnabled(($field->getFlags() & CWidgetField::FLAG_DISABLED) == 0);
- }
-
- /**
- * Function returns array containing HTML objects filled with given values. Used to generate HTML in widget
- * overrides field.
- *
- * @param CWidgetFieldGraphOverride $field
- * @param array $value Values to fill in particular data set row. See self::setValue() for
- * detailed description.
- * @param string $form_name Name of form in which data set fields resides.
- * @param int|string $row_num Unique data set numeric identifier. Used to make unique field names.
- *
- * @return CListItem
- */
- public static function getGraphOverrideLayout($field, array $value, $form_name, $row_num) {
- $inputs = [];
-
- // Create override options list.
- foreach (CWidgetFieldGraphOverride::getOverrideOptions() as $option) {
- if (array_key_exists($option, $value)) {
- $inputs[] = (new CVar($field->getName().'['.$row_num.']['.$option.']', $value[$option]));
- }
- }
-
- return (new CListItem([
- /**
- * First line: host pattern field, item pattern field.
- * Contains also drag and drop button and delete button.
- */
- (new CDiv([
- (new CDiv())
- ->addClass(ZBX_STYLE_DRAG_ICON)
- ->addStyle('position: absolute; margin-left: -25px;'),
- (new CDiv([
- (new CDiv(
- (new CPatternSelect([
- 'name' => $field->getName().'['.$row_num.'][hosts][]',
- 'object_name' => 'hosts',
- 'data' => $value['hosts'],
- 'placeholder' => _('host pattern'),
- 'wildcard_allowed' => 1,
- 'popup' => [
- 'parameters' => [
- 'srctbl' => 'hosts',
- 'srcfld1' => 'hostid',
- 'dstfrm' => $form_name,
- 'dstfld1' => zbx_formatDomId($field->getName().'['.$row_num.'][hosts][]')
- ]
- ],
- 'add_post_js' => false
- ]))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ))->addClass(ZBX_STYLE_COLUMN_50),
- (new CDiv(
- (new CPatternSelect([
- 'name' => $field->getName().'['.$row_num.'][items][]',
- 'object_name' => 'items',
- 'data' => $value['items'],
- 'placeholder' => _('item pattern'),
- 'multiple' => true,
- 'wildcard_allowed' => 1,
- 'popup' => [
- 'parameters' => [
- 'srctbl' => 'items',
- 'srcfld1' => 'itemid',
- 'real_hosts' => 1,
- 'numeric' => 1,
- 'dstfrm' => $form_name,
- 'dstfld1' => zbx_formatDomId($field->getName().'['.$row_num.'][items][]')
- ]
- ],
- 'add_post_js' => false
- ]))
- ->setEnabled(!($field->getFlags() & CWidgetField::FLAG_DISABLED))
- ->setAriaRequired(self::isAriaRequired($field))
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ))->addClass(ZBX_STYLE_COLUMN_50)
- ]))
- ->addClass(ZBX_STYLE_COLUMNS)
- ->addClass(ZBX_STYLE_COLUMNS_NOWRAP)
- ->addClass(ZBX_STYLE_COLUMN_95),
-
- (new CDiv(
- (new CButton())
- ->setAttribute('title', _('Delete'))
- ->addClass(ZBX_STYLE_BTN_REMOVE)
- ->removeId()
- ))
- ->addClass(ZBX_STYLE_COLUMN_5)
- ]))
- ->addClass(ZBX_STYLE_COLUMNS),
-
- // Selected override options.
- (new CList($inputs))
- ->addClass(ZBX_STYLE_OVERRIDES_OPTIONS_LIST)
- ->addItem((new CButton(null, (new CSpan())
- ->addClass(ZBX_STYLE_PLUS_ICON)
- ->addStyle('margin-right: 0px;')
- ))
- ->setAttribute('data-row', $row_num)
- ->addClass(ZBX_STYLE_BTN_ALT)
- )
- ]))
- ->addClass(ZBX_STYLE_OVERRIDES_LIST_ITEM);
- }
-
- /**
- * Return template used by dynamic rows in CWidgetFieldGraphOverride field.
- *
- * @param CWidgetFieldGraphOverride $field
- * @param string $form_name Form name in which override field is located.
- *
- * @return string
- */
- public static function getGraphOverrideTemplate($field, $form_name) {
- $value = CWidgetFieldGraphOverride::getDefaults();
-
- return self::getGraphOverrideLayout($field, $value, $form_name, '#{rowNum}')->toString();
- }
-
- /**
- * @param CWidgetFieldGraphOverride $field
- *
- * @return CList
- */
- public static function getGraphOverride($field, $form_name) {
- $list = (new CList())->addClass(ZBX_STYLE_OVERRIDES_LIST);
-
- $values = $field->getValue();
-
- if (!$values) {
- $values = [];
- }
-
- $i = 0;
-
- foreach ($values as $override) {
- $list->addItem(self::getGraphOverrideLayout($field, $override, $form_name, $i));
-
- $i++;
- }
-
- // Add 'Add' button under the list.
- $list->addItem(
- (new CDiv(
- (new CButton('override_add', [(new CSpan())->addClass(ZBX_STYLE_PLUS_ICON), _('Add new override')]))
- ->addClass(ZBX_STYLE_BTN_ALT)
- ->setId('override-add')
- )),
- 'overrides-foot'
- );
-
- return $list;
- }
-
- /**
- * Function returns array containing string values used as titles for override options.
- *
- * @return array
- */
- private static function getGraphOverrideOptionNames() {
- return [
- 'width' => _('Width'),
- 'type' => _('Draw'),
- 'type'.SVG_GRAPH_TYPE_LINE => _('Line'),
- 'type'.SVG_GRAPH_TYPE_POINTS => _('Points'),
- 'type'.SVG_GRAPH_TYPE_STAIRCASE => _('Staircase'),
- 'type'.SVG_GRAPH_TYPE_BAR => _('Bar'),
- 'transparency' => _('Transparency'),
- 'fill' => _('Fill'),
- 'pointsize' => _('Point size'),
- 'missingdatafunc' => _('Missing data'),
- 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_NONE => _('None'),
- 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_CONNECTED => _x('Connected', 'missing data function'),
- 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO => _x('Treat as 0', 'missing data function'),
- 'missingdatafunc'.SVG_GRAPH_MISSING_DATA_LAST_KNOWN => _x('Last known', 'missing data function'),
- 'axisy' => _('Y-axis'),
- 'axisy'.GRAPH_YAXIS_SIDE_LEFT => _('Left'),
- 'axisy'.GRAPH_YAXIS_SIDE_RIGHT => _('Right'),
- 'timeshift' => _('Time shift')
- ];
- }
-
- /**
- * Function returns array used to construct override field menu of available override options.
- *
- * @return array
- */
- private static function getGraphOverrideMenu() {
- return [
- 'sections' => [
- [
- 'name' => _('ADD OVERRIDE'),
- 'options' => [
- ['name' => _('Base color'), 'callback' => 'addOverride', 'args' => ['color', '']],
-
- ['name' => _('Width').'/0', 'callback' => 'addOverride', 'args' => ['width', 0]],
- ['name' => _('Width').'/1', 'callback' => 'addOverride', 'args' => ['width', 1]],
- ['name' => _('Width').'/2', 'callback' => 'addOverride', 'args' => ['width', 2]],
- ['name' => _('Width').'/3', 'callback' => 'addOverride', 'args' => ['width', 3]],
- ['name' => _('Width').'/4', 'callback' => 'addOverride', 'args' => ['width', 4]],
- ['name' => _('Width').'/5', 'callback' => 'addOverride', 'args' => ['width', 5]],
- ['name' => _('Width').'/6', 'callback' => 'addOverride', 'args' => ['width', 6]],
- ['name' => _('Width').'/7', 'callback' => 'addOverride', 'args' => ['width', 7]],
- ['name' => _('Width').'/8', 'callback' => 'addOverride', 'args' => ['width', 8]],
- ['name' => _('Width').'/9', 'callback' => 'addOverride', 'args' => ['width', 9]],
- ['name' => _('Width').'/10', 'callback' => 'addOverride', 'args' => ['width', 10]],
-
- ['name' => _('Draw').'/'._('Line'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_LINE]],
- ['name' => _('Draw').'/'._('Points'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_POINTS]],
- ['name' => _('Draw').'/'._('Staircase'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_STAIRCASE]],
- ['name' => _('Draw').'/'._('Bar'), 'callback' => 'addOverride', 'args' => ['type', SVG_GRAPH_TYPE_BAR]],
-
- ['name' => _('Transparency').'/0', 'callback' => 'addOverride', 'args' => ['transparency', 0]],
- ['name' => _('Transparency').'/1', 'callback' => 'addOverride', 'args' => ['transparency', 1]],
- ['name' => _('Transparency').'/2', 'callback' => 'addOverride', 'args' => ['transparency', 2]],
- ['name' => _('Transparency').'/3', 'callback' => 'addOverride', 'args' => ['transparency', 3]],
- ['name' => _('Transparency').'/4', 'callback' => 'addOverride', 'args' => ['transparency', 4]],
- ['name' => _('Transparency').'/5', 'callback' => 'addOverride', 'args' => ['transparency', 5]],
- ['name' => _('Transparency').'/6', 'callback' => 'addOverride', 'args' => ['transparency', 6]],
- ['name' => _('Transparency').'/7', 'callback' => 'addOverride', 'args' => ['transparency', 7]],
- ['name' => _('Transparency').'/8', 'callback' => 'addOverride', 'args' => ['transparency', 8]],
- ['name' => _('Transparency').'/9', 'callback' => 'addOverride', 'args' => ['transparency', 9]],
- ['name' => _('Transparency').'/10', 'callback' => 'addOverride', 'args' => ['transparency', 10]],
-
- ['name' => _('Fill').'/0', 'callback' => 'addOverride', 'args' => ['fill', 0]],
- ['name' => _('Fill').'/1', 'callback' => 'addOverride', 'args' => ['fill', 1]],
- ['name' => _('Fill').'/2', 'callback' => 'addOverride', 'args' => ['fill', 2]],
- ['name' => _('Fill').'/3', 'callback' => 'addOverride', 'args' => ['fill', 3]],
- ['name' => _('Fill').'/4', 'callback' => 'addOverride', 'args' => ['fill', 4]],
- ['name' => _('Fill').'/5', 'callback' => 'addOverride', 'args' => ['fill', 5]],
- ['name' => _('Fill').'/6', 'callback' => 'addOverride', 'args' => ['fill', 6]],
- ['name' => _('Fill').'/7', 'callback' => 'addOverride', 'args' => ['fill', 7]],
- ['name' => _('Fill').'/8', 'callback' => 'addOverride', 'args' => ['fill', 8]],
- ['name' => _('Fill').'/9', 'callback' => 'addOverride', 'args' => ['fill', 9]],
- ['name' => _('Fill').'/10', 'callback' => 'addOverride', 'args' => ['fill', 10]],
-
- ['name' => _('Point size').'/1', 'callback' => 'addOverride', 'args' => ['pointsize', 1]],
- ['name' => _('Point size').'/2', 'callback' => 'addOverride', 'args' => ['pointsize', 2]],
- ['name' => _('Point size').'/3', 'callback' => 'addOverride', 'args' => ['pointsize', 3]],
- ['name' => _('Point size').'/4', 'callback' => 'addOverride', 'args' => ['pointsize', 4]],
- ['name' => _('Point size').'/5', 'callback' => 'addOverride', 'args' => ['pointsize', 5]],
- ['name' => _('Point size').'/6', 'callback' => 'addOverride', 'args' => ['pointsize', 6]],
- ['name' => _('Point size').'/7', 'callback' => 'addOverride', 'args' => ['pointsize', 7]],
- ['name' => _('Point size').'/8', 'callback' => 'addOverride', 'args' => ['pointsize', 8]],
- ['name' => _('Point size').'/9', 'callback' => 'addOverride', 'args' => ['pointsize', 9]],
- ['name' => _('Point size').'/10', 'callback' => 'addOverride', 'args' => ['pointsize', 10]],
-
- ['name' => _('Missing data').'/'._('None'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_NONE]],
- ['name' => _('Missing data').'/'._x('Connected', 'missing data function'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_CONNECTED]],
- ['name' => _('Missing data').'/'._x('Treat as 0', 'missing data function'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO]],
- ['name' => _('Missing data').'/'._x('Last known', 'missing data function'), 'callback' => 'addOverride', 'args' => ['missingdatafunc', SVG_GRAPH_MISSING_DATA_LAST_KNOWN]],
-
- ['name' => _('Y-axis').'/'._('Left'), 'callback' => 'addOverride', 'args' => ['axisy', GRAPH_YAXIS_SIDE_LEFT]],
- ['name' => _('Y-axis').'/'._('Right'), 'callback' => 'addOverride', 'args' => ['axisy', GRAPH_YAXIS_SIDE_RIGHT]],
-
- ['name' => _('Time shift'), 'callback' => 'addOverride', 'args' => ['timeshift']]
- ]
- ]
- ]
- ];
- }
-
- /**
- * Return javascript necessary to initialize CWidgetFieldGraphOverride field.
- *
- * @param CWidgetFieldGraphOverride $field
- *
- * @return string
- */
- public static function getGraphOverrideJavascript($field) {
- return '
- // Define it as function to avoid redundancy.
- function initializeOverrides() {
- jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_OPTIONS_LIST.'").overrides({
- add: ".'.ZBX_STYLE_BTN_ALT.'",
- options: "input[type=hidden]",
- captions: '.json_encode(self::getGraphOverrideOptionNames()).',
- makeName: function(option, row_id) {
- return "'.$field->getName().'[" + row_id + "][" + option + "]";
- },
- makeOption: function(name) {
- return name.match(
- /.*\[('.implode('|', CWidgetFieldGraphOverride::getOverrideOptions()).')\]/
- )[1];
- },
- override: ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'",
- overridesList: ".'.ZBX_STYLE_OVERRIDES_LIST.'",
- onUpdate: () => widget_svggraph_form.onGraphConfigChange(),
- menu: '.json_encode(self::getGraphOverrideMenu()).'
- });
- }
-
- // Initialize dynamicRows.
- jQuery("#overrides")
- .dynamicRows({
- template: "#overrides-row",
- beforeRow: ".overrides-foot",
- remove: ".'.ZBX_STYLE_BTN_REMOVE.'",
- add: "#override-add",
- row: ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'"
- })
- .bind("afteradd.dynamicRows", function(event, options) {
- const container = jQuery(".overlay-dialogue-body");
-
- container.scrollTop(Math.max(container.scrollTop(),
- jQuery("#widget-dialogue-form")[0].scrollHeight - container.height()
- ));
-
- jQuery(".multiselect", jQuery("#overrides")).each(function() {
- jQuery(this).multiSelect(jQuery(this).data("params"));
- });
-
- widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
- widget_svggraph_form.onGraphConfigChange();
- })
- .bind("afterremove.dynamicRows", function(event, options) {
- widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
- widget_svggraph_form.onGraphConfigChange();
- })
- .bind("tableupdate.dynamicRows", function(event, options) {
- widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
- initializeOverrides();
- if (jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'").length > 1) {
- jQuery("#overrides .drag-icon").removeClass("disabled");
- jQuery("#overrides").sortable("enable");
- }
- else {
- jQuery("#overrides .drag-icon").addClass("disabled");
- jQuery("#overrides").sortable("disable");
- }
- });
-
- // Initialize overrides UI control.
- initializeOverrides();
-
- // Initialize override pattern-selectors.
- jQuery(".multiselect", jQuery("#overrides")).each(function() {
- jQuery(this).multiSelect(jQuery(this).data("params"));
- });
-
- // Make overrides sortable.
- if (jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'").length < 2) {
- jQuery("#overrides .drag-icon").addClass("disabled");
- }
-
- jQuery("#overrides").sortable({
- items: ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'",
- containment: "parent",
- handle: ".drag-icon",
- tolerance: "pointer",
- scroll: false,
- cursor: "grabbing",
- opacity: 0.6,
- axis: "y",
- disabled: function() {
- return jQuery("#overrides .'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'").length < 2;
- }(),
- start: function() { // Workaround to fix wrong scrolling at initial sort.
- jQuery(this).sortable("refreshPositions");
- },
- stop: () => widget_svggraph_form.onGraphConfigChange(),
- update: function() {
- widget_svggraph_form.updateVariableOrder(jQuery("#overrides"), ".'.ZBX_STYLE_OVERRIDES_LIST_ITEM.'", "or");
- }
- });
- ';
- }
-
- /**
- * Function returns array containing HTML objects filled with given values. Used to generate HTML row in widget
- * data set field.
- *
- * @param string $field_name
- * @param array $value Values to fill in particular data set row. See self::setValue() for detailed
- * description.
- * @param string $form_name Name of form in which data set fields resides.
- * @param int|string $row_num Unique data set numeric identifier. Used to make unique field names.
- * @param bool $is_opened Either accordion row is made opened or closed.
- *
- * @return CListItem
- */
- private static function getGraphDataSetLayout($field_name, array $value, $form_name, $row_num, $is_opened,
- int $dataset_type = CWidgetHelper::DATASET_TYPE_PATTERN_ITEM) {
- $dataset_head = [
- new CDiv((new CSimpleButton('&nbsp;'))->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM_TOGGLE)),
- new CVar($field_name.'['.$row_num.'][dataset_type]', $dataset_type, '')
- ];
-
- if ($dataset_type == self::DATASET_TYPE_PATTERN_ITEM) {
- $host_pattern_field = (new CPatternSelect([
- 'name' => $field_name.'['.$row_num.'][hosts][]',
- 'object_name' => 'hosts',
- 'data' => $value['hosts'],
- 'placeholder' => _('host pattern'),
- 'wildcard_allowed' => 1,
- 'popup' => [
- 'parameters' => [
- 'srctbl' => 'hosts',
- 'srcfld1' => 'host',
- 'dstfrm' => $form_name,
- 'dstfld1' => zbx_formatDomId($field_name.'['.$row_num.'][hosts][]')
- ]
- ],
- 'add_post_js' => false
- ]))
- ->addClass('js-hosts-multiselect')
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH);
-
- $dataset_head = array_merge($dataset_head, [
- (new CColor($field_name.'['.$row_num.'][color]', $value['color']))->appendColorPickerJs(false),
- $host_pattern_field,
- (new CPatternSelect([
- 'name' => $field_name.'['.$row_num.'][items][]',
- 'object_name' => 'items',
- 'data' => $value['items'],
- 'placeholder' => _('item pattern'),
- 'wildcard_allowed' => 1,
- 'popup' => [
- 'parameters' => [
- 'srctbl' => 'items',
- 'srcfld1' => 'name',
- 'real_hosts' => 1,
- 'numeric' => 1,
- 'dstfrm' => $form_name,
- 'dstfld1' => zbx_formatDomId($field_name.'['.$row_num.'][items][]')
- ],
- 'filter_preselect' => [
- 'id' => $host_pattern_field->getId(),
- 'submit_as' => 'host_pattern',
- 'submit_parameters' => [
- 'host_pattern_wildcard_allowed' => 1,
- 'host_pattern_multiple' => 1
- ],
- 'multiple' => true
- ]
- ],
- 'autosuggest' => [
- 'filter_preselect' => [
- 'id' => $host_pattern_field->getId(),
- 'submit_as' => 'host_pattern',
- 'submit_parameters' => [
- 'host_pattern_wildcard_allowed' => 1,
- 'host_pattern_multiple' => 1
- ],
- 'multiple' => true
- ]
- ],
- 'add_post_js' => false
- ]))
- ->addClass('js-items-multiselect')
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ]);
- }
- else {
- $item_rows = [];
- foreach($value['itemids'] as $i => $itemid) {
- $item_name = array_key_exists($itemid, $value['item_names'])
- ? $value['item_names'][$itemid]
- : '';
-
- $item_rows[] = (new CRow([
- (new CCol(
- (new CDiv())->addClass(ZBX_STYLE_DRAG_ICON)
- ))
- ->addClass('table-col-handle')
- ->addClass(ZBX_STYLE_TD_DRAG_ICON),
- (new CCol(
- (new CColor($field_name.'['.$row_num.'][color][]', $value['color'][$i],
- 'items_'.$row_num.'_'.($i + 1).'_color'
- ))->appendColorPickerJs(false)
- ))->addClass('table-col-color'),
- (new CCol(new CSpan(($i + 1).':')))->addClass('table-col-no'),
- (new CCol(
- (new CLink($item_name))
- ->setId('items_'.$row_num.'_'.($i + 1).'_name')
- ->addClass('js-click-expend')
- ))->addClass('table-col-name'),
- (new CCol([
- (new CButton('button', _('Remove')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('element-table-remove'),
- new CVar($field_name.'['.$row_num.'][itemids][]', $itemid,
- 'items_'.$row_num.'_'.($i + 1).'_input'
- )
- ]))
- ->addClass('table-col-action')
- ->addClass(ZBX_STYLE_NOWRAP)
- ]))
- ->addClass(ZBX_STYLE_SORTABLE)
- ->addClass('single-item-table-row');
- }
-
- $empty_msg_block = (new CDiv(_('No item selected.')))->addClass('no-items-message');
-
- $items_list = (new CTable())
- ->addClass('single-item-table')
- ->setAttribute('data-set', $row_num)
- ->setColumns([
- (new CTableColumn())->addClass('table-col-handle'),
- (new CTableColumn())->addClass('table-col-color'),
- (new CTableColumn())->addClass('table-col-no'),
- (new CTableColumn(_('Name')))->addClass('table-col-name'),
- (new CTableColumn(_('Action')))->addClass('table-col-action')
- ])
- ->addItem([
- $item_rows,
- (new CTag('tfoot', true))
- ->addItem(
- (new CCol(
- (new CList())
- ->addClass(ZBX_STYLE_INLINE_FILTER_FOOTER)
- ->addItem(
- (new CSimpleButton(_('Add')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('js-add-item')
- )
- ))->setColSpan(5)
- )
- ]);
-
- $dataset_head = array_merge($dataset_head, [
- (new CDiv([$empty_msg_block, $items_list]))->addClass('items-list table-forms-separator')
- ]);
- }
-
- $dataset_head[] = (new CDiv(
- (new CButton())
- ->setAttribute('title', _('Delete'))
- ->addClass(ZBX_STYLE_BTN_REMOVE)
- ->removeId()
- ))->addClass('dataset-actions');
-
- return (new CListItem([
- (new CDiv())
- ->addClass(ZBX_STYLE_DRAG_ICON)
- ->addClass(ZBX_STYLE_SORTABLE_DRAG_HANDLE)
- ->addClass('js-main-drag-icon'),
- (new CDiv())
- ->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM_HEAD)
- ->addClass('dataset-head')
- ->addItem($dataset_head),
- (new CDiv())
- ->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM_BODY)
- ->addClass('dataset-body')
- ->addItem([
- (new CFormGrid())
- ->addItem([
- new CLabel(_('Draw')),
- new CFormField(
- (new CRadioButtonList($field_name.'['.$row_num.'][type]', (int) $value['type']))
- ->addClass('js-type')
- ->addValue(_('Line'), SVG_GRAPH_TYPE_LINE)
- ->addValue(_('Points'), SVG_GRAPH_TYPE_POINTS)
- ->addValue(_('Staircase'), SVG_GRAPH_TYPE_STAIRCASE)
- ->addValue(_('Bar'), SVG_GRAPH_TYPE_BAR)
- ->setModern(true)
- )
- ])
- ->addItem([
- new CLabel(_('Stacked'), $field_name.'['.$row_num.'][stacked]'),
- new CFormField([
- (new CVar($field_name.'['.$row_num.'][stacked]', '0'))->removeId(),
- (new CCheckBox($field_name.'['.$row_num.'][stacked]'))
- ->addClass('js-stacked')
- ->setChecked((bool) $value['stacked'])
- ->setEnabled($value['type'] != SVG_GRAPH_TYPE_POINTS)
- ])
- ])
- ->addItem([
- new CLabel(_('Width')),
- new CFormField(
- (new CRangeControl($field_name.'['.$row_num.'][width]', (int) $value['width']))
- ->setEnabled(!in_array($value['type'], [SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_BAR]))
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ->setStep(1)
- ->setMin(0)
- ->setMax(10)
- )
- ])
- ->addItem([
- new CLabel(_('Point size')),
- new CFormField(
- (new CRangeControl($field_name.'['.$row_num.'][pointsize]', (int) $value['pointsize']))
- ->setEnabled($value['type'] == SVG_GRAPH_TYPE_POINTS)
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ->setStep(1)
- ->setMin(1)
- ->setMax(10)
- )
- ])
- ->addItem([
- new CLabel(_('Transparency')),
- new CFormField(
- (new CRangeControl($field_name.'['.$row_num.'][transparency]',
- (int) $value['transparency'])
- )
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ->setStep(1)
- ->setMin(0)
- ->setMax(10)
- )
- ])
- ->addItem([
- new CLabel(_('Fill')),
- new CFormField(
- (new CRangeControl($field_name.'['.$row_num.'][fill]', (int) $value['fill']))
- ->setEnabled(!in_array($value['type'], [SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_BAR]))
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ->setStep(1)
- ->setMin(0)
- ->setMax(10)
- )
- ]),
- (new CFormGrid())
- ->addItem([
- new CLabel(_('Missing data')),
- new CFormField(
- (new CRadioButtonList($field_name.'['.$row_num.'][missingdatafunc]',
- (int) $value['missingdatafunc'])
- )
- ->addValue(_('None'), SVG_GRAPH_MISSING_DATA_NONE)
- ->addValue(_x('Connected', 'missing data function'),
- SVG_GRAPH_MISSING_DATA_CONNECTED
- )
- ->addValue(_x('Treat as 0', 'missing data function'),
- SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO
- )
- ->addValue(_x('Last known', 'missing data function'),
- SVG_GRAPH_MISSING_DATA_LAST_KNOWN
- )
- ->setEnabled(!in_array($value['type'], [SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_BAR]))
- ->setModern(true)
- )
- ])
- ->addItem([
- new CLabel(_('Y-axis')),
- new CFormField(
- (new CRadioButtonList($field_name.'['.$row_num.'][axisy]', (int) $value['axisy']))
- ->addValue(_('Left'), GRAPH_YAXIS_SIDE_LEFT)
- ->addValue(_('Right'), GRAPH_YAXIS_SIDE_RIGHT)
- ->setModern(true)
- )
- ])
- ->addItem([
- new CLabel(_('Time shift'), $field_name.'['.$row_num.'][timeshift]'),
- new CFormField(
- (new CTextBox($field_name.'['.$row_num.'][timeshift]', $value['timeshift']))
- ->setAttribute('placeholder', _('none'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
- )
- ])
- ->addItem([
- new CLabel(_('Aggregation function'),
- 'label-'.$field_name.'_'.$row_num.'_aggregate_function'
- ),
- new CFormField(
- (new CSelect($field_name.'['.$row_num.'][aggregate_function]'))
- ->setId($field_name.'_'.$row_num.'_aggregate_function')
- ->setFocusableElementId('label-'.$field_name.'_'.$row_num.'_aggregate_function')
- ->setValue((int) $value['aggregate_function'])
- ->addOptions(CSelect::createOptionsFromArray([
- AGGREGATE_NONE => graph_item_aggr_fnc2str(AGGREGATE_NONE),
- AGGREGATE_MIN => graph_item_aggr_fnc2str(AGGREGATE_MIN),
- AGGREGATE_MAX => graph_item_aggr_fnc2str(AGGREGATE_MAX),
- AGGREGATE_AVG => graph_item_aggr_fnc2str(AGGREGATE_AVG),
- AGGREGATE_COUNT => graph_item_aggr_fnc2str(AGGREGATE_COUNT),
- AGGREGATE_SUM => graph_item_aggr_fnc2str(AGGREGATE_SUM),
- AGGREGATE_FIRST => graph_item_aggr_fnc2str(AGGREGATE_FIRST),
- AGGREGATE_LAST => graph_item_aggr_fnc2str(AGGREGATE_LAST)
- ]))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
- )
- ])
- ->addItem([
- new CLabel(_('Aggregation interval'), $field_name.'['.$row_num.'][aggregate_interval]'),
- new CFormField(
- (new CTextBox($field_name.'['.$row_num.'][aggregate_interval]',
- $value['aggregate_interval']
- ))
- ->setEnabled($value['aggregate_function'] != AGGREGATE_NONE)
- ->setAttribute('placeholder', GRAPH_AGGREGATE_DEFAULT_INTERVAL)
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
- )
- ])
- ->addItem([
- new CLabel(_('Aggregate')),
- new CFormField(
- (new CRadioButtonList($field_name.'['.$row_num.'][aggregate_grouping]',
- (int) $value['aggregate_grouping'])
- )
- ->addValue(_('Each item'), GRAPH_AGGREGATE_BY_ITEM)
- ->addValue(_('Data set'), GRAPH_AGGREGATE_BY_DATASET)
- ->setEnabled($value['aggregate_function'] != AGGREGATE_NONE)
- ->setModern(true)
- )
- ])
- ->addItem([
- new CLabel(_('Approximation'),
- 'label-'.$field_name.'_'.$row_num.'_approximation'
- ),
- new CFormField(
- (new CSelect($field_name.'['.$row_num.'][approximation]'))
- ->setId($field_name.'_'.$row_num.'_approximation')
- ->setFocusableElementId('label-'.$field_name.'_'.$row_num.'_approximation')
- ->setValue((int) $value['approximation'])
- ->addOptions(CSelect::createOptionsFromArray([
- APPROXIMATION_ALL => [
- 'label' => _('all'),
- 'disabled' => ($value['type'] != SVG_GRAPH_TYPE_LINE || (bool) $value['stacked'])
- ],
- APPROXIMATION_MIN => _('min'),
- APPROXIMATION_AVG => _('avg'),
- APPROXIMATION_MAX => _('max')
- ]))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
- )
- ])
- ])
- ]))
- ->addClass(ZBX_STYLE_LIST_ACCORDION_ITEM)
- ->addClass(ZBX_STYLE_SORTABLE_ITEM)
- ->addClass($is_opened ? ZBX_STYLE_LIST_ACCORDION_ITEM_OPENED : ZBX_STYLE_LIST_ACCORDION_ITEM_CLOSED)
- ->setAttribute('data-set', $row_num)
- ->setAttribute('data-type', $dataset_type);
- }
-
- /**
- * Return template used by dynamic rows in CWidgetFieldGraphDataSet field.
- *
- * @param CWidgetFieldGraphDataSet $field
- * @param string $form_name Form name in which data set field resides.
- * @param int $dataset_type
- *
- * @return string
- */
- public static function getGraphDataSetTemplate($field, $form_name, int $dataset_type) {
- $value = ['color' => '#{color}'] + CWidgetFieldGraphDataSet::getDefaults();
-
- return self::getGraphDataSetLayout($field->getName(), $value, $form_name, '#{rowNum}', true, $dataset_type)->toString();
- }
-
- /**
- * @param CWidgetFieldGraphDataSet $field
- *
- * @return CList
- */
- public static function getGraphDataSet($field, $form_name) {
- $list = (new CList())
- ->setId('data_sets')
- ->addClass(ZBX_STYLE_SORTABLE_LIST);
-
- $values = $field->getValue();
-
- if (!$values) {
- $values[] = CWidgetFieldGraphDataSet::getDefaults();
- }
-
- // Get item names for single item datasets.
- $itemids = array_merge(...array_column($values, 'itemids'));
- if ($itemids) {
- $names = self::getItemNames($itemids);
- }
-
- foreach ($values as $i => $value) {
- if ($value['dataset_type'] == self::DATASET_TYPE_SINGLE_ITEM) {
- $value['item_names'] = $names;
- }
-
- $list->addItem(
- self::getGraphDataSetLayout($field->getName(), $value, $form_name, $i, $i == 0, $value['dataset_type'])
- );
- }
-
- return $list;
- }
-
- public static function getGraphDataSetFooter() {
- return (new CList())
- ->addClass(ZBX_STYLE_BTN_SPLIT)
- ->addItem([
- (new CButton(null, [
- (new CSpan())->addClass(ZBX_STYLE_PLUS_ICON),
- _('Add new data set')
- ]))
- ->setId('dataset-add')
- ->addClass(ZBX_STYLE_BTN_ALT),
- (new CButton(null, '&#8203;'))
- ->setId('dataset-menu')
- ->addClass(ZBX_STYLE_BTN_ALT)
- ->addClass(ZBX_STYLE_BTN_TOGGLE_CHEVRON)
- ]);
- }
-
- private static function getItemNames(array $itemids): array {
- $names = [];
-
- $items = API::Item()->get([
- 'output' => ['itemid', 'hostid', 'name'],
- 'selectHosts' => ['hostid', 'name'],
- 'webitems' => true,
- 'itemids' => $itemids,
- 'preservekeys' => true
- ]);
-
- if (!$items) {
- return $names;
- }
-
- foreach ($items as $item) {
- $hosts = array_column($item['hosts'], 'name', 'hostid');
- $names[$item['itemid']] = $hosts[$item['hostid']].NAME_DELIMITER.$item['name'];
- }
-
- return $names;
- }
-
- public static function getThresholds(CWidgetFieldThresholds $field): CDiv {
- $thresholds_table = (new CTable())
- ->setId(sprintf(CWidgetFieldThresholds::THRESHOLDS_TABLE_ID, $field->getName()))
- ->addClass(ZBX_STYLE_TABLE_FORMS)
- ->setHeader([
- '',
- (new CColHeader(_('Threshold')))->setWidth('100%'),
- _('Action')
- ])
- ->setFooter(new CRow(
- new CCol(
- (new CSimpleButton(_('Add')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('element-table-add')
- )
- ));
-
- foreach ($field->getValue() as $i => $threshold) {
- $thresholds_table->addRow(
- self::getThresholdsTemplate($field->getName(), $i, $threshold['color'], $threshold['threshold'])
- );
- }
-
- return (new CDiv($thresholds_table))
- ->addClass('table-forms-separator')
- ->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH);
- }
-
- public static function getThresholdsTemplate($name, $index = '#{rowNum}', $color = '#{color}',
- $threshold = '#{threshold}'): CRow {
- return (new CRow([
- (new CColor($name.'['.$index.'][color]', $color))->appendColorPickerJs(false),
- (new CTextBox($name.'['.$index.'][threshold]', $threshold, false))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
- ->setAriaRequired(),
- (new CButton($name.'['.$index.'][remove]', _('Remove')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('element-table-remove')
- ]))->addClass('form_row');
- }
-
- /**
- * @param CWidgetField $field
- *
- * @return int
- */
- public static function isAriaRequired($field) {
- return ($field->getFlags() & CWidgetField::FLAG_LABEL_ASTERISK);
- }
-}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldCheckBox.php b/ui/include/classes/widgets/fields/CWidgetFieldCheckBox.php
index a12565c4d96..716a030382c 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldCheckBox.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldCheckBox.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -18,30 +18,35 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
+
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldCheckBox extends CWidgetField {
- private $caption;
+ public const DEFAULT_VALUE = 0;
+
+ private ?string $caption;
/**
- * Check box widget field.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
- * @param string $caption Text after checkbox.
+ * @param string|null $caption Text after checkbox.
*/
- public function __construct($name, $label, $caption = null) {
+ public function __construct(string $name, string $label = null, string $caption = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32);
- $this->setDefault(0);
$this->caption = $caption;
+
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32);
}
- public function setValue($value) {
+ public function setValue($value): self {
return parent::setValue((int) $value);
}
- public function getCaption() {
+ public function getCaption(): ?string {
return $this->caption;
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldCheckBoxList.php b/ui/include/classes/widgets/fields/CWidgetFieldCheckBoxList.php
index 5fc1f3f0762..9127e262ac9 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldCheckBoxList.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldCheckBoxList.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,24 +19,39 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldCheckBoxList extends CWidgetField {
- public function __construct($name, $label) {
+ public const DEFAULT_VALUE = [];
+
+ private array $values;
+
+ public function __construct(string $name, string $label = null, array $values = []) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32);
- $this->setDefault([]);
- $this->setValidationRules(['type' => API_INTS32]);
+ $this->values = $values;
+
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32)
+ ->setValidationRules(['type' => API_INTS32]);
+ }
+
+ public function getValues(): array {
+ return $this->values;
}
- public function setValue($value) {
+ public function setValue($value): self {
$this->value = (array) $value;
return $this;
}
- public function setDefault($values) {
- $this->default = (array) $values;
+ public function setDefault($value): self {
+ $this->default = (array) $value;
return $this;
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldColor.php b/ui/include/classes/widgets/fields/CWidgetFieldColor.php
index b70d550631a..a0082e1c484 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldColor.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldColor.php
@@ -19,21 +19,37 @@
**/
-/**
- * Class for widget field color.
- */
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldColor extends CWidgetField {
+ public const DEFAULT_VALUE = '';
+
+ private bool $allow_inherited = false;
+
+ public function __construct(string $name, string $label = null) {
+ parent::__construct($name, $label);
+
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_COLOR, 'flags' => API_ALLOW_NULL]);
+ }
+
+ public function hasAllowInherited(): bool {
+ return $this->allow_inherited;
+ }
+
/**
- * Create color widget field.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
+ * Tell the Color picker whether to use Default (inherited) color feature or not.
*/
- public function __construct($name, $label) {
- parent::__construct($name, $label);
+ public function allowInherited($allow_inherited = true): self {
+ $this->allow_inherited = $allow_inherited;
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_COLOR, 'flags' => API_ALLOW_NULL]);
+ return $this;
}
+
+
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldColumnsList.php b/ui/include/classes/widgets/fields/CWidgetFieldColumnsList.php
index f74c303dd67..dc6e43d5108 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldColumnsList.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldColumnsList.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2021 Zabbix SIA
@@ -19,92 +19,90 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldColumnsList extends CWidgetField {
// Source of value to display in column.
- const DATA_ITEM_VALUE = 1;
- const DATA_HOST_NAME = 2;
- const DATA_TEXT = 3;
+ public const DATA_ITEM_VALUE = 1;
+ public const DATA_HOST_NAME = 2;
+ public const DATA_TEXT = 3;
// Column value display type.
- const DISPLAY_AS_IS = 1;
- const DISPLAY_BAR = 2;
- const DISPLAY_INDICATORS = 3;
+ public const DISPLAY_AS_IS = 1;
+ public const DISPLAY_BAR = 2;
+ public const DISPLAY_INDICATORS = 3;
// Where to select data for aggregation function.
- const HISTORY_DATA_AUTO = 1;
- const HISTORY_DATA_HISTORY = 2;
- const HISTORY_DATA_TRENDS = 3;
+ public const HISTORY_DATA_AUTO = 1;
+ public const HISTORY_DATA_HISTORY = 2;
+ public const HISTORY_DATA_TRENDS = 3;
// Predefined colors for thresholds. Each next threshold takes next sequential value from palette.
- const THRESHOLDS_DEFAULT_COLOR_PALETTE = [
- 'FF465C','B0AF07','0EC9AC','524BBC','ED1248','D1E754','2AB5FF','385CC7','EC1594','BAE37D',
- '6AC8FF','EE2B29','3CA20D','6F4BBC','00A1FF','F3601B','1CAE59','45CFDB','894BBC','6D6D6D'
+ public const THRESHOLDS_DEFAULT_COLOR_PALETTE = [
+ 'FF465C', 'B0AF07', '0EC9AC', '524BBC', 'ED1248', 'D1E754', '2AB5FF', '385CC7', 'EC1594', 'BAE37D',
+ '6AC8FF', 'EE2B29', '3CA20D', '6F4BBC', '00A1FF', 'F3601B', '1CAE59', '45CFDB', '894BBC', '6D6D6D'
];
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_OBJECTS, 'fields' => [
- 'name' => ['type' => API_STRING_UTF8, 'default' => '', 'length' => 255],
- 'data' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [self::DATA_ITEM_VALUE, self::DATA_HOST_NAME, self::DATA_TEXT])],
- 'item' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => ['field' => 'data', 'in' => self::DATA_ITEM_VALUE],
- 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 255],
- ['else' => true,
- 'type' => API_STRING_UTF8]
- ]],
- 'timeshift' => ['type' => API_TIME_UNIT, 'in' => implode(':', [ZBX_MIN_TIMESHIFT, ZBX_MAX_TIMESHIFT])],
- 'aggregate_function' => ['type' => API_INT32, 'in' => implode(',', [AGGREGATE_NONE, AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST]), 'default' => AGGREGATE_NONE],
- 'aggregate_interval' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => ['field' => 'aggregate_function', 'in' => implode(',', [AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST])],
- 'type' => API_TIME_UNIT, 'flags' => API_REQUIRED | API_NOT_EMPTY | API_TIME_UNIT_WITH_YEAR, 'in' => implode(':', [1, ZBX_MAX_TIMESHIFT])],
- ['else' => true,
- 'type' => API_STRING_UTF8]
- ]],
- 'display' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => ['field' => 'data', 'in' => self::DATA_ITEM_VALUE],
- 'type' => API_INT32, 'default' => self::DISPLAY_AS_IS, 'in' => implode(',', [self::DISPLAY_AS_IS, self::DISPLAY_BAR, self::DISPLAY_INDICATORS])],
- ['else' => true,
- 'type' => API_INT32]
- ]],
- 'history' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => ['field' => 'data', 'in' => self::DATA_ITEM_VALUE],
- 'type' => API_INT32, 'default' => self::HISTORY_DATA_AUTO, 'in' => implode(',', [self::HISTORY_DATA_AUTO, self::HISTORY_DATA_HISTORY, self::HISTORY_DATA_TRENDS])],
- ['else' => true,
- 'type' => API_INT32]
- ]],
- 'base_color' => ['type' => API_COLOR],
- 'min' => ['type' => API_NUMERIC],
- 'max' => ['type' => API_NUMERIC],
- 'thresholds' => ['type' => API_OBJECTS, 'uniq' => [['threshold']], 'fields' => [
- 'color' => ['type' => API_COLOR],
- 'threshold' => ['type' => API_NUMERIC]
- ]],
- 'text' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => ['field' => 'data', 'in' => self::DATA_TEXT],
- 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => 255],
- ['else' => true,
- 'type' => API_STRING_UTF8]
- ]]
- ]]);
+ $this
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_OBJECTS, 'fields' => [
+ 'name' => ['type' => API_STRING_UTF8, 'default' => '', 'length' => 255],
+ 'data' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [self::DATA_ITEM_VALUE, self::DATA_HOST_NAME, self::DATA_TEXT])],
+ 'item' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'data', 'in' => self::DATA_ITEM_VALUE],
+ 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 255],
+ ['else' => true,
+ 'type' => API_STRING_UTF8]
+ ]],
+ 'timeshift' => ['type' => API_TIME_UNIT, 'in' => implode(':', [ZBX_MIN_TIMESHIFT, ZBX_MAX_TIMESHIFT])],
+ 'aggregate_function' => ['type' => API_INT32, 'in' => implode(',', [AGGREGATE_NONE, AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST]), 'default' => AGGREGATE_NONE],
+ 'aggregate_interval' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'aggregate_function', 'in' => implode(',', [AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST])],
+ 'type' => API_TIME_UNIT, 'flags' => API_REQUIRED | API_NOT_EMPTY | API_TIME_UNIT_WITH_YEAR, 'in' => implode(':', [1, ZBX_MAX_TIMESHIFT])],
+ ['else' => true,
+ 'type' => API_STRING_UTF8]
+ ]],
+ 'display' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'data', 'in' => self::DATA_ITEM_VALUE],
+ 'type' => API_INT32, 'default' => self::DISPLAY_AS_IS, 'in' => implode(',', [self::DISPLAY_AS_IS, self::DISPLAY_BAR, self::DISPLAY_INDICATORS])],
+ ['else' => true,
+ 'type' => API_INT32]
+ ]],
+ 'history' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'data', 'in' => self::DATA_ITEM_VALUE],
+ 'type' => API_INT32, 'default' => self::HISTORY_DATA_AUTO, 'in' => implode(',', [self::HISTORY_DATA_AUTO, self::HISTORY_DATA_HISTORY, self::HISTORY_DATA_TRENDS])],
+ ['else' => true,
+ 'type' => API_INT32]
+ ]],
+ 'base_color' => ['type' => API_COLOR],
+ 'min' => ['type' => API_NUMERIC],
+ 'max' => ['type' => API_NUMERIC],
+ 'thresholds' => ['type' => API_OBJECTS, 'uniq' => [['threshold']], 'fields' => [
+ 'color' => ['type' => API_COLOR],
+ 'threshold' => ['type' => API_NUMERIC]
+ ]],
+ 'text' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'data', 'in' => self::DATA_TEXT],
+ 'type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => 255],
+ ['else' => true,
+ 'type' => API_STRING_UTF8]
+ ]]
+ ]]);
}
- public function setValue($value) {
+ public function setValue($value): self {
$this->value = (array) $value;
return $this;
}
- /**
- * Prepares array entry for widget field, ready to be passed to CDashboard API functions.
- * Reference is needed here to avoid array merging in CWidgetForm::fieldsToApi method. With large number of widget
- * fields it causes significant performance decrease.
- *
- * @param array $widget_fields reference to Array of widget fields.
- */
- public function toApi(array &$widget_fields = []) {
+ public function toApi(array &$widget_fields = []): void {
$fields = [
'name' => ZBX_WIDGET_FIELD_TYPE_STR,
'data' => ZBX_WIDGET_FIELD_TYPE_INT32,
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldDatePicker.php b/ui/include/classes/widgets/fields/CWidgetFieldDatePicker.php
index 881b9f22785..faf3f03bd60 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldDatePicker.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldDatePicker.php
@@ -19,43 +19,42 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use CAbsoluteTimeParser,
+ CParser,
+ CRelativeTimeParser,
+ DB;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldDatePicker extends CWidgetField {
- /**
- * @var bool
- */
- private $is_date_only;
-
- /**
- * @param string $name
- * @param string $label
- * @param bool $is_date_only
- */
- public function __construct(string $name, string $label, bool $is_date_only) {
+ public const DEFAULT_VALUE = '';
+
+ private bool $is_date_only;
+
+ public function __construct(string $name, string $label = null, bool $is_date_only = false) {
parent::__construct($name, $label);
$this->is_date_only = $is_date_only;
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules([
- 'type' => API_STRING_UTF8,
- 'length' => DB::getFieldLength('widget_field', 'value_str')
- ]);
- $this->setDefault('');
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules([
+ 'type' => API_STRING_UTF8,
+ 'length' => DB::getFieldLength('widget_field', 'value_str')
+ ]);
}
- /**
- * @param $flags
- *
- * @return CWidgetFieldDatePicker
- */
- public function setFlags($flags): self {
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
$validation_rules = $this->getValidationRules();
$validation_rules['flags'] = $validation_rules['flags'] ?? 0x00;
- if (($flags & self::FLAG_NOT_EMPTY) != 0) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$validation_rules['flags'] |= API_NOT_EMPTY;
}
else {
@@ -67,11 +66,6 @@ class CWidgetFieldDatePicker extends CWidgetField {
return $this;
}
- /**
- * @param bool $strict
- *
- * @return array
- */
public function validate(bool $strict = false): array {
if ($errors = parent::validate($strict)) {
return $errors;
@@ -80,7 +74,7 @@ class CWidgetFieldDatePicker extends CWidgetField {
$label = $this->full_name ?? $this->label ?? $this->name;
$value = $this->value ?? $this->default;
- if ($value === '' && ($this->getFlags() & self::FLAG_NOT_EMPTY) == 0) {
+ if ($value === '' && ($this->getFlags() & self::FLAG_NOT_EMPTY) === 0) {
$this->setValue('');
return [];
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldGraphDataSet.php b/ui/include/classes/widgets/fields/CWidgetFieldGraphDataSet.php
index b65418b16f5..1ff879942f8 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldGraphDataSet.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldGraphDataSet.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,61 +19,65 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use API,
+ CApiInputValidator;
+
+use Zabbix\Widgets\CWidgetField;
+
/**
* Class for data set widget field used in Graph widget configuration Data set tab.
*/
class CWidgetFieldGraphDataSet extends CWidgetField {
+ public const DEFAULT_VALUE = [];
+
+ public const DATASET_TYPE_SINGLE_ITEM = 0;
+ public const DATASET_TYPE_PATTERN_ITEM = 1;
+
// Predefined colors for data-sets in JSON format. Each next data set takes next sequential value from palette.
- const DEFAULT_COLOR_PALETTE = ["FF465C","B0AF07","0EC9AC","524BBC","ED1248","D1E754","2AB5FF","385CC7","EC1594","BAE37D","6AC8FF","EE2B29","3CA20D","6F4BBC","00A1FF","F3601B","1CAE59","45CFDB","894BBC","6D6D6D"];
+ public const DEFAULT_COLOR_PALETTE = [
+ 'FF465C', 'B0AF07', '0EC9AC', '524BBC', 'ED1248', 'D1E754', '2AB5FF', '385CC7', 'EC1594', 'BAE37D',
+ '6AC8FF', 'EE2B29', '3CA20D', '6F4BBC', '00A1FF', 'F3601B', '1CAE59', '45CFDB', '894BBC', '6D6D6D'
+ ];
// First color from the default color palette.
- const DEFAULT_COLOR = 'FF465C';
-
- /**
- * Create widget field for Data set selection.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
- */
- public function __construct($name, $label) {
+ private const DEFAULT_COLOR = 'FF465C';
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_OBJECTS, 'fields' => [
- 'dataset_type' => ['type' => API_INT32, 'in' => implode(',', [CWidgetHelper::DATASET_TYPE_SINGLE_ITEM, CWidgetHelper::DATASET_TYPE_PATTERN_ITEM])],
- 'hosts' => ['type' => API_STRINGS_UTF8, 'flags' => null],
- 'items' => ['type' => API_STRINGS_UTF8, 'flags' => null],
- 'itemids' => ['type' => API_IDS, 'flags' => null],
- 'color' => ['type' => API_COLOR, 'flags' => API_REQUIRED | API_NOT_EMPTY],
- 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [SVG_GRAPH_TYPE_LINE, SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_STAIRCASE, SVG_GRAPH_TYPE_BAR])],
- 'stacked' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [SVG_GRAPH_STACKED_OFF, SVG_GRAPH_STACKED_ON])],
- 'width' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
- 'pointsize' => ['type' => API_INT32, 'in' => implode(',', range(1, 10))],
- 'transparency' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', range(0, 10))],
- 'fill' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
- 'missingdatafunc' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_MISSING_DATA_NONE, SVG_GRAPH_MISSING_DATA_CONNECTED, SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO, SVG_GRAPH_MISSING_DATA_LAST_KNOWN])],
- 'axisy' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [GRAPH_YAXIS_SIDE_LEFT, GRAPH_YAXIS_SIDE_RIGHT])],
- 'timeshift' => ['type' => API_TIME_UNIT, 'flags' => API_REQUIRED, 'in' => implode(':', [ZBX_MIN_TIMESHIFT, ZBX_MAX_TIMESHIFT])],
- 'aggregate_function' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [AGGREGATE_NONE, AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST])],
- 'aggregate_interval' => ['type' => API_MULTIPLE, 'rules' => [
- ['if' => ['field' => 'aggregate_function', 'in' => implode(',', [AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST])],
- 'type' => API_TIME_UNIT, 'flags' => API_REQUIRED | API_NOT_EMPTY | API_TIME_UNIT_WITH_YEAR, 'in' => implode(':', [1, ZBX_MAX_TIMESHIFT])],
- ['else' => true, 'type' => API_STRING_UTF8, 'in' => GRAPH_AGGREGATE_DEFAULT_INTERVAL]
- ]],
- 'aggregate_grouping' => ['type' => API_INT32, 'in' => implode(',', [GRAPH_AGGREGATE_BY_ITEM, GRAPH_AGGREGATE_BY_DATASET])],
- 'approximation' => ['type' => API_INT32, 'in' => implode(',', [APPROXIMATION_MIN, APPROXIMATION_AVG, APPROXIMATION_MAX, APPROXIMATION_ALL])]
- ]]);
-
- $this->setDefault([]);
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_OBJECTS, 'fields' => [
+ 'dataset_type' => ['type' => API_INT32, 'in' => implode(',', [self::DATASET_TYPE_SINGLE_ITEM, self::DATASET_TYPE_PATTERN_ITEM])],
+ 'hosts' => ['type' => API_STRINGS_UTF8, 'flags' => null],
+ 'items' => ['type' => API_STRINGS_UTF8, 'flags' => null],
+ 'itemids' => ['type' => API_IDS, 'flags' => null],
+ 'color' => ['type' => API_COLOR, 'flags' => API_REQUIRED | API_NOT_EMPTY],
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [SVG_GRAPH_TYPE_LINE, SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_STAIRCASE, SVG_GRAPH_TYPE_BAR])],
+ 'stacked' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [SVG_GRAPH_STACKED_OFF, SVG_GRAPH_STACKED_ON])],
+ 'width' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
+ 'pointsize' => ['type' => API_INT32, 'in' => implode(',', range(1, 10))],
+ 'transparency' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', range(0, 10))],
+ 'fill' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
+ 'missingdatafunc' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_MISSING_DATA_NONE, SVG_GRAPH_MISSING_DATA_CONNECTED, SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO, SVG_GRAPH_MISSING_DATA_LAST_KNOWN])],
+ 'axisy' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [GRAPH_YAXIS_SIDE_LEFT, GRAPH_YAXIS_SIDE_RIGHT])],
+ 'timeshift' => ['type' => API_TIME_UNIT, 'flags' => API_REQUIRED, 'in' => implode(':', [ZBX_MIN_TIMESHIFT, ZBX_MAX_TIMESHIFT])],
+ 'aggregate_function' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [AGGREGATE_NONE, AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST])],
+ 'aggregate_interval' => ['type' => API_MULTIPLE, 'rules' => [
+ ['if' => ['field' => 'aggregate_function', 'in' => implode(',', [AGGREGATE_MIN, AGGREGATE_MAX, AGGREGATE_AVG, AGGREGATE_COUNT, AGGREGATE_SUM, AGGREGATE_FIRST, AGGREGATE_LAST])],
+ 'type' => API_TIME_UNIT, 'flags' => API_REQUIRED | API_NOT_EMPTY | API_TIME_UNIT_WITH_YEAR, 'in' => implode(':', [1, ZBX_MAX_TIMESHIFT])],
+ ['else' => true, 'type' => API_STRING_UTF8, 'in' => GRAPH_AGGREGATE_DEFAULT_INTERVAL]
+ ]],
+ 'aggregate_grouping' => ['type' => API_INT32, 'in' => implode(',', [GRAPH_AGGREGATE_BY_ITEM, GRAPH_AGGREGATE_BY_DATASET])],
+ 'approximation' => ['type' => API_INT32, 'in' => implode(',', [APPROXIMATION_MIN, APPROXIMATION_AVG, APPROXIMATION_MAX, APPROXIMATION_ALL])]
+ ]]);
}
- /**
- * Set field values for the datasets.
- *
- * @return $this
- */
- public function setValue($value) {
+ public function setValue($value): self {
$data_sets = [];
foreach ((array) $value as $data_set) {
@@ -83,14 +87,7 @@ class CWidgetFieldGraphDataSet extends CWidgetField {
return parent::setValue($data_sets);
}
- /**
- * Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
- */
- public function setFlags($flags) {
+ public function setFlags($flags): self {
parent::setFlags($flags);
if ($flags & self::FLAG_NOT_EMPTY) {
@@ -102,20 +99,15 @@ class CWidgetFieldGraphDataSet extends CWidgetField {
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
}
- /**
- * Default values filled in newly created data set or used as unspecified values.
- *
- * @return array
- */
- public static function getDefaults() {
+ public static function getDefaults(): array {
return [
- 'dataset_type' => CWidgetHelper::DATASET_TYPE_PATTERN_ITEM,
+ 'dataset_type' => self::DATASET_TYPE_PATTERN_ITEM,
'hosts' => [],
'items' => [],
'itemids' => [],
@@ -136,11 +128,29 @@ class CWidgetFieldGraphDataSet extends CWidgetField {
];
}
- /**
- * @param bool $strict Widget form submit validation?
- *
- * @return array Errors.
- */
+ public static function getItemNames(array $itemids): array {
+ $names = [];
+
+ $items = API::Item()->get([
+ 'output' => ['itemid', 'hostid', 'name'],
+ 'selectHosts' => ['hostid', 'name'],
+ 'webitems' => true,
+ 'itemids' => $itemids,
+ 'preservekeys' => true
+ ]);
+
+ if (!$items) {
+ return $names;
+ }
+
+ foreach ($items as $item) {
+ $hosts = array_column($item['hosts'], 'name', 'hostid');
+ $names[$item['itemid']] = $hosts[$item['hostid']].NAME_DELIMITER.$item['name'];
+ }
+
+ return $names;
+ }
+
public function validate(bool $strict = false): array {
$errors = [];
@@ -148,13 +158,14 @@ class CWidgetFieldGraphDataSet extends CWidgetField {
? $this->strict_validation_rules
: $this->validation_rules;
$validation_rules += $this->ex_validation_rules;
- $value = ($this->value === null) ? $this->default : $this->value;
+
+ $value = $this->value ?? $this->default;
if ($this->full_name !== null) {
$label = $this->full_name;
}
else {
- $label = ($this->label === null) ? $this->name : $this->label;
+ $label = $this->label ?? $this->name;
}
if ($strict) {
@@ -170,7 +181,7 @@ class CWidgetFieldGraphDataSet extends CWidgetField {
foreach ($value as $i => $data) {
$validation_rules_by_type = $validation_rules;
- if ($data['dataset_type'] == CWidgetHelper::DATASET_TYPE_SINGLE_ITEM) {
+ if ($data['dataset_type'] == self::DATASET_TYPE_SINGLE_ITEM) {
$validation_rules_by_type['fields']['itemids']['flags'] |= API_REQUIRED;
$validation_rules_by_type['fields']['color']['type'] = API_COLORS;
@@ -200,14 +211,7 @@ class CWidgetFieldGraphDataSet extends CWidgetField {
return $errors;
}
- /**
- * Prepares array entry for widget field, ready to be passed to CDashboard API functions.
- * Reference is needed here to avoid array merging in CWidgetForm::fieldsToApi method. With large number of widget
- * fields it causes significant performance decrease.
- *
- * @param array $widget_fields Reference to array of widget fields.
- */
- public function toApi(array &$widget_fields = []) {
+ public function toApi(array &$widget_fields = []): void {
$value = $this->getValue();
$dataset_fields = [
@@ -251,8 +255,8 @@ class CWidgetFieldGraphDataSet extends CWidgetField {
'value' => $itemid
];
}
- // Field "color" stored as array for dataset type CWidgetHelper::DATASET_TYPE_SINGLE_ITEM (0)
- if ($val['dataset_type'] == CWidgetHelper::DATASET_TYPE_SINGLE_ITEM) {
+ // Field "color" stored as array for dataset type DATASET_TYPE_SINGLE_ITEM (0)
+ if ($val['dataset_type'] == self::DATASET_TYPE_SINGLE_ITEM) {
foreach ($val['color'] as $num => $color) {
$widget_fields[] = [
'type' => ZBX_WIDGET_FIELD_TYPE_STR,
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldGraphOverride.php b/ui/include/classes/widgets/fields/CWidgetFieldGraphOverride.php
index f9a6a6ba166..ef9558b47bf 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldGraphOverride.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldGraphOverride.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,43 +19,43 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
/**
* Class for override widget field used in Graph widget configuration overrides tab.
*/
class CWidgetFieldGraphOverride extends CWidgetField {
- /**
- * Create widget field for Graph Override selection.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
- */
- public function __construct($name, $label) {
+ public const DEFAULT_VALUE = [];
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_OBJECTS, 'fields' => [
- 'hosts' => ['type' => API_STRINGS_UTF8, 'flags' => API_REQUIRED],
- 'items' => ['type' => API_STRINGS_UTF8, 'flags' => API_REQUIRED],
- 'color' => ['type' => API_COLOR],
- 'type' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_TYPE_LINE, SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_STAIRCASE, SVG_GRAPH_TYPE_BAR])],
- 'width' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
- 'pointsize' => ['type' => API_INT32, 'in' => implode(',', range(1, 10))],
- 'transparency' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
- 'fill' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
- 'missingdatafunc' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_MISSING_DATA_NONE, SVG_GRAPH_MISSING_DATA_CONNECTED, SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO])],
- 'axisy' => ['type' => API_INT32, 'in' => implode(',', [GRAPH_YAXIS_SIDE_LEFT, GRAPH_YAXIS_SIDE_RIGHT])],
- 'timeshift' => ['type' => API_TIME_UNIT, 'in' => implode(':', [ZBX_MIN_TIMESHIFT, ZBX_MAX_TIMESHIFT])]
- ]]);
- $this->setDefault([]);
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_OBJECTS, 'fields' => [
+ 'hosts' => ['type' => API_STRINGS_UTF8, 'flags' => API_REQUIRED],
+ 'items' => ['type' => API_STRINGS_UTF8, 'flags' => API_REQUIRED],
+ 'color' => ['type' => API_COLOR],
+ 'type' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_TYPE_LINE, SVG_GRAPH_TYPE_POINTS, SVG_GRAPH_TYPE_STAIRCASE, SVG_GRAPH_TYPE_BAR])],
+ 'width' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
+ 'pointsize' => ['type' => API_INT32, 'in' => implode(',', range(1, 10))],
+ 'transparency' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
+ 'fill' => ['type' => API_INT32, 'in' => implode(',', range(0, 10))],
+ 'missingdatafunc' => ['type' => API_INT32, 'in' => implode(',', [SVG_GRAPH_MISSING_DATA_NONE, SVG_GRAPH_MISSING_DATA_CONNECTED, SVG_GRAPH_MISSING_DATA_TREAT_AS_ZERO])],
+ 'axisy' => ['type' => API_INT32, 'in' => implode(',', [GRAPH_YAXIS_SIDE_LEFT, GRAPH_YAXIS_SIDE_RIGHT])],
+ 'timeshift' => ['type' => API_TIME_UNIT, 'in' => implode(':', [ZBX_MIN_TIMESHIFT, ZBX_MAX_TIMESHIFT])]
+ ]]);
+ }
+
+ public function getOverrideOptions(): array {
+ return ['color', 'width', 'type', 'transparency', 'fill', 'pointsize', 'missingdatafunc', 'axisy', 'timeshift'];
}
- /**
- * Set field values for the overrides.
- *
- * @return $this
- */
- public function setValue($value) {
+ public function setValue($value): self {
$overrides = [];
foreach ((array) $value as $override) {
@@ -65,17 +65,17 @@ class CWidgetFieldGraphOverride extends CWidgetField {
return parent::setValue($overrides);
}
- /**
- * Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
- */
- public function setFlags($flags) {
+ public static function getDefaults(): array {
+ return [
+ 'hosts' => [],
+ 'items' => []
+ ];
+ }
+
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
- if ($flags & self::FLAG_NOT_EMPTY) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$strict_validation_rules = $this->getValidationRules();
self::setValidationRuleFlag($strict_validation_rules['fields']['hosts'], API_NOT_EMPTY);
self::setValidationRuleFlag($strict_validation_rules['fields']['items'], API_NOT_EMPTY);
@@ -84,47 +84,21 @@ class CWidgetFieldGraphOverride extends CWidgetField {
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
}
- /**
- * Default values filled in newly created data set or used as unspecified values.
- *
- * @return array
- */
- public static function getDefaults() {
- return [
- 'hosts' => [],
- 'items' => []
- ];
- }
-
- /**
- * Returns array of supported override options.
- *
- * @return array
- */
- public static function getOverrideOptions() {
- return ['color', 'width', 'type', 'transparency', 'fill', 'pointsize', 'missingdatafunc', 'axisy', 'timeshift'];
- }
-
- /**
- * @param bool $strict
- *
- * @return array
- */
public function validate(bool $strict = false): array {
$errors = parent::validate($strict);
$value = $this->getValue();
- $label = ($this->label === null) ? $this->name : $this->label;
+ $label = $this->label ?? $this->name;
// Validate options.
if (!$errors && $strict) {
foreach ($value as $index => $overrides) {
- if (!array_intersect(self::getOverrideOptions(), array_keys($overrides))) {
+ if (!array_intersect($this->getOverrideOptions(), array_keys($overrides))) {
$errors[] = _s('Invalid parameter "%1$s": %2$s.', $label.'/'.($index + 1),
_('at least one override option must be specified')
);
@@ -136,14 +110,7 @@ class CWidgetFieldGraphOverride extends CWidgetField {
return $errors;
}
- /**
- * Prepares array entry for widget field, ready to be passed to CDashboard API functions.
- * Reference is needed here to avoid array merging in CWidgetForm::fieldsToApi method. With large number of widget
- * fields it causes significant performance decrease.
- *
- * @param array $widget_fields reference to Array of widget fields.
- */
- public function toApi(array &$widget_fields = []) {
+ public function toApi(array &$widget_fields = []): void {
$value = $this->getValue();
foreach ($value as $index => $val) {
@@ -163,7 +130,7 @@ class CWidgetFieldGraphOverride extends CWidgetField {
];
}
- foreach (self::getOverrideOptions() as $opt) {
+ foreach ($this->getOverrideOptions() as $opt) {
if (array_key_exists($opt, $val)) {
$widget_fields[] = [
'type' => ($opt === 'color' || $opt === 'timeshift')
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldHidden.php b/ui/include/classes/widgets/fields/CWidgetFieldHidden.php
deleted file mode 100644
index d1d8bf21b54..00000000000
--- a/ui/include/classes/widgets/fields/CWidgetFieldHidden.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CWidgetFieldHidden extends CWidgetField {
-
- /**
- * Hidden widget field. Will not be displayed for user. Can contain string, int or id type value.
- *
- * @param string $name field name in form
- * @param int $save_type ZBX_WIDGET_FIELD_TYPE_ constant. Defines how field will be saved in database.
- */
- public function __construct($name, $save_type) {
- parent::__construct($name, null);
-
- $this->setSaveType($save_type);
- }
-}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldHostPatternSelect.php b/ui/include/classes/widgets/fields/CWidgetFieldHostPatternSelect.php
index d988491be0d..165cdcc2d20 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldHostPatternSelect.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldHostPatternSelect.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,36 +19,23 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldHostPatternSelect extends CWidgetField {
- private $placeholder;
+ public const DEFAULT_VALUE = [];
- /**
- * Textarea widget field.
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- */
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setDefault([]);
-
- /*
- * Set validation rules bypassing a parent::setSaveType to skip validation of length.
- * Save type is set in self::toApi method for each string field separately.
- */
- $this->setValidationRules(['type' => API_STRINGS_UTF8]);
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setValidationRules(['type' => API_STRINGS_UTF8]);
}
- /**
- * Prepares array entry for widget field, ready to be passed to CDashboard API functions.
- * Reference is needed here to avoid array merging in CWidgetForm::fieldsToApi method. With large number of widget
- * fields it causes significant performance decrease.
- *
- * @param array $widget_fields reference to array of widget fields.
- */
- public function toApi(array &$widget_fields = []) {
+ public function toApi(array &$widget_fields = []): void {
$value = $this->getValue();
if ($value !== $this->default) {
@@ -61,20 +48,4 @@ class CWidgetFieldHostPatternSelect extends CWidgetField {
}
}
}
-
- public function setPlaceholder($placeholder) {
- $this->placeholder = $placeholder;
-
- return $this;
- }
-
- public function getPlaceholder() {
- return $this->placeholder;
- }
-
- public function getJavascript() {
- $fieldid = zbx_formatDomId($this->getName().'[]');
-
- return 'jQuery("#'.$fieldid.'").multiSelect(jQuery("#'.$fieldid.'").data("params"));';
- }
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldIntegerBox.php b/ui/include/classes/widgets/fields/CWidgetFieldIntegerBox.php
index a246dfda320..32c12e43393 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldIntegerBox.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldIntegerBox.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,47 +19,33 @@
**/
-/**
- * Widget Field for integer values.
- */
-class CWidgetFieldIntegerBox extends CWidgetField {
+namespace Zabbix\Widgets\Fields;
- /**
- * Allowed min value
- *
- * @var int
- */
- private $min;
+use Zabbix\Widgets\CWidgetField;
- /**
- * Allowed max value
- *
- * @var int
- */
- private $max;
+class CWidgetFieldIntegerBox extends CWidgetField {
+
+ private int $max;
/**
- * A numeric box widget field.
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- * @param int $min minimal allowed value (this included)
- * @param int $max maximal allowed value (this included)
+ * @param int $min Minimal allowed value.
+ * @param int $max Maximal allowed value.
*/
- public function __construct($name, $label, $min = 0, $max = ZBX_MAX_INT32) {
+ public function __construct(string $name, string $label = null, int $min = 0, int $max = ZBX_MAX_INT32) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32);
- $this->min = $min;
$this->max = $max;
- $this->setExValidationRules(['in' => $this->min.':'.$this->max]);
- }
- public function getMaxLength() {
- return strlen((string) $this->max);
+ $this
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32)
+ ->setExValidationRules(['in' => $min.':'.$this->max]);
}
- public function setValue($value) {
+ public function setValue($value): self {
return parent::setValue((int) $value);
}
+
+ public function getMaxLength(): int {
+ return strlen((string) $this->max);
+ }
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldLatLng.php b/ui/include/classes/widgets/fields/CWidgetFieldLatLng.php
index 798a8a21d92..60494f70cf4 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldLatLng.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldLatLng.php
@@ -19,39 +19,23 @@
**/
-class CWidgetFieldLatLng extends CWidgetField {
+namespace Zabbix\Widgets\Fields;
- /**
- * @var string
- */
- private $placeholder;
+use Zabbix\Widgets\CWidgetField;
- /**
- * @var int
- */
- private $width;
+class CWidgetFieldLatLng extends CWidgetField {
+
+ public const DEFAULT_VALUE = '';
/**
* Latitude, longitude and zoom level input text box widget field.
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
*/
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_LAT_LNG_ZOOM, 'length' => 255]);
- $this->placeholder = '40.6892494,-74.0466891';
- $this->width = ZBX_TEXTAREA_MEDIUM_WIDTH;
- $this->setDefault('');
- }
-
- public function getPlaceholder() {
- return $this->placeholder;
- }
-
- public function getWidth() {
- return $this->width;
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_LAT_LNG_ZOOM, 'length' => 255]);
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsHost.php b/ui/include/classes/widgets/fields/CWidgetFieldMsHost.php
deleted file mode 100644
index d168170ee68..00000000000
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsHost.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CWidgetFieldMsHost extends CWidgetFieldMs {
-
- /**
- * ID for Host group Multiselect element used to prefill Application PoPup Host group filter.
- * Analog for multiselect filter_preselect_fields['hostgroups'] property.
- *
- * @var string (nullable) ID for Multiselect element.
- */
- protected $filter_preselect;
-
- /**
- * Create widget field for Host selection
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- */
- public function __construct(string $name, string $label) {
- parent::__construct($name, $label);
-
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_HOST);
- }
-
- public function setFilterPreselect(string $id) {
- $this->filter_preselect = $id;
- return $this;
- }
-
- public function getFilterPreselect() {
- return $this->filter_preselect;
- }
-}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMs.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelect.php
index 5dc9946c683..45984fa57e4 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMs.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelect.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,106 +19,72 @@
**/
-class CWidgetFieldMs extends CWidgetField {
+namespace Zabbix\Widgets\Fields;
- /**
- * Is selecting multiple objects or a single one?
- *
- * @var bool
- */
- protected $multiple = true;
+use Zabbix\Widgets\CWidgetField;
- /**
- * Additional filter parameters used for data selection.
- *
- * @var array
- */
- protected $filter_parameters = [];
+abstract class CWidgetFieldMultiSelect extends CWidgetField {
- /**
- * Multiselect widget field.
- * Will create text box field with select button, that will allow to select specified resource.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
- */
- public function __construct($name, $label) {
+ // Is selecting multiple objects or a single one?
+ private bool $is_multiple = true;
+
+ // Additional filter parameters used for data selection.
+ protected array $filter_parameters = [];
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
$this->setDefault([]);
}
- /**
- * Set additional validation flags.
- *
- * @param int $flags
- *
- * @return CWidgetFieldMs
- */
- public function setFlags($flags) {
+ public function setValue($value): self {
+ $this->value = (array) $value;
+
+ return $this;
+ }
+
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
- if ($flags & self::FLAG_NOT_EMPTY) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$strict_validation_rules = $this->getValidationRules();
self::setValidationRuleFlag($strict_validation_rules, API_NOT_EMPTY);
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
}
/**
- * @return CWidgetFieldMs
- */
- public function setValue($value) {
- $this->value = (array) $value;
-
- return $this;
- }
-
- /**
* Is selecting multiple values or a single value?
- *
- * @return bool
*/
- public function isMultiple() {
- return $this->multiple;
+ public function isMultiple(): bool {
+ return $this->is_multiple;
}
/**
* Set field to multiple objects mode.
- *
- * @param bool $multiple
- *
- * @return CWidgetFieldMs
*/
- public function setMultiple($multiple) {
- $this->multiple = $multiple;
+ public function setMultiple(bool $is_multiple = true): self {
+ $this->is_multiple = $is_multiple;
return $this;
}
/**
* Get additional filter parameters.
- *
- * @return array
*/
- public function getFilterParameters() {
+ public function getFilterParameters(): array {
return $this->filter_parameters;
}
/**
* Set an additional filter parameter for data selection.
- *
- * @param string $name
- * @param mixed $value
- *
- * @return CWidgetFieldMs
*/
- public function setFilterParameter($name, $value) {
+ public function setFilterParameter(string $name, $value): self {
$this->filter_parameters[$name] = $value;
return $this;
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsGraph.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGraph.php
index 2904ebe8c77..756ed0be4e2 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsGraph.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGraph.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,22 +19,20 @@
**/
-class CWidgetFieldMsGraph extends CWidgetFieldMs {
+namespace Zabbix\Widgets\Fields;
- public function __construct($name, $label, $hostid = null) {
+class CWidgetFieldMultiSelectGraph extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null, $hostid = null) {
parent::__construct($name, $label);
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_GRAPH);
if ($hostid === null) {
- $this->filter_parameters += [
- 'real_hosts' => true
- ];
+ $this->setFilterParameter('real_hosts', true);
}
else {
- $this->filter_parameters += [
- 'hostid' => $hostid
- ];
+ $this->setFilterParameter('hostid', $hostid);
}
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsGraphPrototype.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGraphPrototype.php
index 10e63026729..1d5736c8e12 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsGraphPrototype.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGraphPrototype.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,22 +19,20 @@
**/
-class CWidgetFieldMsGraphPrototype extends CWidgetFieldMs {
+namespace Zabbix\Widgets\Fields;
- public function __construct($name, $label, $hostid = null) {
+class CWidgetFieldMultiSelectGraphPrototype extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null, $hostid = null) {
parent::__construct($name, $label);
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_GRAPH_PROTOTYPE);
if ($hostid === null) {
- $this->filter_parameters += [
- 'real_hosts' => true
- ];
+ $this->setFilterParameter('real_hosts', true);
}
else {
- $this->filter_parameters += [
- 'hostid' => $hostid
- ];
+ $this->setFilterParameter('hostid', $hostid);
}
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsGroup.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGroup.php
index dae91733aac..9c9e7743d34 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsGroup.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectGroup.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,9 +19,11 @@
**/
-class CWidgetFieldMsGroup extends CWidgetFieldMs {
+namespace Zabbix\Widgets\Fields;
- public function __construct($name, $label) {
+class CWidgetFieldMultiSelectGroup extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_GROUP);
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectHost.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectHost.php
new file mode 100644
index 00000000000..65987d9253a
--- /dev/null
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectHost.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Zabbix\Widgets\Fields;
+
+class CWidgetFieldMultiSelectHost extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null) {
+ parent::__construct($name, $label);
+
+ $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_HOST);
+ }
+}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsItem.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectItem.php
index 9ba02f81d27..ad25de8d77f 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsItem.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectItem.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,22 +19,20 @@
**/
-class CWidgetFieldMsItem extends CWidgetFieldMs {
+namespace Zabbix\Widgets\Fields;
- public function __construct($name, $label, $hostid = null) {
+class CWidgetFieldMultiSelectItem extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null, $hostid = null) {
parent::__construct($name, $label);
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_ITEM);
if ($hostid === null) {
- $this->filter_parameters += [
- 'real_hosts' => true
- ];
+ $this->setFilterParameter('real_hosts', true);
}
else {
- $this->filter_parameters += [
- 'hostid' => $hostid
- ];
+ $this->setFilterParameter('hostid', $hostid);
}
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsItemPrototype.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectItemPrototype.php
index c380af8124a..d29b5435020 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsItemPrototype.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectItemPrototype.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,22 +19,20 @@
**/
-class CWidgetFieldMsItemPrototype extends CWidgetFieldMs {
+namespace Zabbix\Widgets\Fields;
- public function __construct($name, $label, $hostid = null) {
+class CWidgetFieldMultiSelectItemPrototype extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null, $hostid = null) {
parent::__construct($name, $label);
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_ITEM_PROTOTYPE);
if ($hostid === null) {
- $this->filter_parameters += [
- 'real_hosts' => true
- ];
+ $this->setFilterParameter('real_hosts', true);
}
else {
- $this->filter_parameters += [
- 'hostid' => $hostid
- ];
+ $this->setFilterParameter('hostid', $hostid);
}
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsService.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectService.php
index ab88ce01186..7d7ed555588 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsService.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectService.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,15 +19,11 @@
**/
-class CWidgetFieldMsService extends CWidgetFieldMs {
+namespace Zabbix\Widgets\Fields;
- /**
- * Create widget field for Service selection
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- */
- public function __construct($name, $label) {
+class CWidgetFieldMultiSelectService extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_SERVICE);
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldMsSla.php b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectSla.php
index 0e77590975a..55cc0dd2667 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldMsSla.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldMultiSelectSla.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,15 +19,11 @@
**/
-class CWidgetFieldMsSla extends CWidgetFieldMs {
+namespace Zabbix\Widgets\Fields;
- /**
- * Create widget field for SLA selection
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- */
- public function __construct($name, $label) {
+class CWidgetFieldMultiSelectSla extends CWidgetFieldMultiSelect {
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
$this->setSaveType(ZBX_WIDGET_FIELD_TYPE_SLA);
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldNavTree.php b/ui/include/classes/widgets/fields/CWidgetFieldNavTree.php
index 1fc163f4b9a..6ff384232e3 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldNavTree.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldNavTree.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,41 +19,45 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldNavTree extends CWidgetField {
- /**
- * Create widget field for Tags selection.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
- */
- public function __construct($name, $label) {
+ public const DEFAULT_VALUE = [];
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_OBJECTS, 'flags' => API_PRESERVE_KEYS, 'fields' => [
- 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => 255],
- 'order' => ['type' => API_INT32, 'in' => '1:'.ZBX_MAX_INT32, 'default' => 1],
- 'parent' => ['type' => API_INT32, 'in' => '0:'.ZBX_MAX_INT32, 'default' => 0],
- 'sysmapid' => ['type' => API_ID, 'default' => '0']
- ]]);
- $this->setDefault([]);
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_OBJECTS, 'flags' => API_PRESERVE_KEYS, 'fields' => [
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED | API_NOT_EMPTY, 'length' => 255],
+ 'order' => ['type' => API_INT32, 'in' => '1:'.ZBX_MAX_INT32, 'default' => 1],
+ 'parent' => ['type' => API_INT32, 'in' => '0:'.ZBX_MAX_INT32, 'default' => 0],
+ 'sysmapid' => ['type' => API_ID, 'default' => '0']
+ ]]);
}
- public function setValue($value) {
+ public function setValue($value): self {
$this->value = (array) $value;
return $this;
}
- /**
- * Prepares array entry for widget field, ready to be passed to CDashboard API functions.
- * Reference is needed here to avoid array merging in CWidgetForm::fieldsToApi method. With large number of widget
- * fields it causes significant performance decrease.
- *
- * @param array $widget_fields reference to Array of widget fields.
- */
- public function toApi(array &$widget_fields = []) {
+ public function validate(bool $strict = false): array {
+ $errors = parent::validate($strict);
+
+ if (!$errors) {
+ $this->setValue(self::validateNavTree($this->getValue(), $errors));
+ }
+
+ return $errors;
+ }
+
+ public function toApi(array &$widget_fields = []): void {
$value = $this->getValue();
foreach ($value as $index => $val) {
@@ -96,13 +100,8 @@ class CWidgetFieldNavTree extends CWidgetField {
/**
* Check and fix the tree of the maps.
- *
- * @param array $navtree_items
- * @param string $navtree_items[<id>]['parent']
- *
- * @return array
*/
- static private function validateNavTree(array $navtree_items, array &$errors) {
+ private static function validateNavTree(array $navtree_items, array &$errors): array {
// Check for incorrect parent IDs.
foreach ($navtree_items as $fieldid => &$navtree_item) {
if ($navtree_item['parent'] != 0 && !array_key_exists($navtree_item['parent'], $navtree_items)) {
@@ -115,7 +114,7 @@ class CWidgetFieldNavTree extends CWidgetField {
unset($navtree_item);
// Find and fix circular dependencies.
- foreach ($navtree_items as $fieldid => $navtree_item) {
+ foreach ($navtree_items as $navtree_item) {
$parentid = $navtree_item['parent'];
$parentids = [$parentid => true];
@@ -133,19 +132,4 @@ class CWidgetFieldNavTree extends CWidgetField {
return $navtree_items;
}
-
- /**
- * @param bool $strict
- *
- * @return array
- */
- public function validate(bool $strict = false): array {
- $errors = parent::validate($strict);
-
- if (!$errors) {
- $this->setValue(self::validateNavTree($this->getValue(), $errors));
- }
-
- return $errors;
- }
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldNumericBox.php b/ui/include/classes/widgets/fields/CWidgetFieldNumericBox.php
index 4981289b46f..9aa6e68dcf6 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldNumericBox.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldNumericBox.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,50 +19,24 @@
**/
-/**
- * Widget Field for numeric data.
- */
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldNumericBox extends CWidgetField {
- private $placeholder;
- private $width;
+ public const DEFAULT_VALUE = '';
/**
* A numeric box widget field.
* Supported signed decimal values with suffix (KMGTsmhdw).
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
*/
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_NUMERIC, 'length' => 255]);
- $this->setDefault('');
- }
-
- public function getMaxLength() {
- return strlen((string) $this->max);
- }
-
- public function setPlaceholder($placeholder) {
- $this->placeholder = $placeholder;
-
- return $this;
- }
-
- public function getPlaceholder() {
- return $this->placeholder;
- }
-
- public function setWidth($width) {
- $this->width = $width;
-
- return $this;
- }
-
- public function getWidth() {
- return $this->width;
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_NUMERIC, 'length' => 255]);
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldRadioButtonList.php b/ui/include/classes/widgets/fields/CWidgetFieldRadioButtonList.php
index 4764301cf9b..6da247c53e7 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldRadioButtonList.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldRadioButtonList.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,41 +19,34 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldRadioButtonList extends CWidgetField {
- private $values;
- private $modern = false;
+ private array $values;
/**
* Radio button widget field. Can use both, string and integer type keys.
*
- * @param string $name field name in form
- * @param string $label label for the field in form
- * @param array $values key/value pairs of radio button values. Key - saved in DB. Value - visible to user.
+ * @param array $values key/value pairs of radio button values. Key - saved in DB. Value - visible to user.
*/
- public function __construct($name, $label, $values) {
+ public function __construct(string $name, string $label = null, array $values = []) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32);
$this->values = $values;
- $this->setExValidationRules(['in' => implode(',', array_keys($this->values))]);
- }
-
- public function setValue($value) {
- return parent::setValue((int) $value);
- }
-
- public function setModern($modern) {
- $this->modern = $modern;
- return $this;
+ $this
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32)
+ ->setExValidationRules(['in' => implode(',', array_keys($this->values))]);
}
- public function getModern() {
- return $this->modern;
+ public function getValues(): array {
+ return $this->values;
}
- public function getValues() {
- return $this->values;
+ public function setValue($value): self {
+ return parent::setValue((int) $value);
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldRangeControl.php b/ui/include/classes/widgets/fields/CWidgetFieldRangeControl.php
index 43246743f36..8e92698fac2 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldRangeControl.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldRangeControl.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,65 +19,48 @@
**/
-/**
- * Widget Field for numeric box
- */
-class CWidgetFieldRangeControl extends CWidgetField {
+namespace Zabbix\Widgets\Fields;
- /**
- * Allowed min value
- *
- * @var int
- */
- private $min;
+use Zabbix\Widgets\CWidgetField;
- /**
- * Allowed max value
- *
- * @var int
- */
- private $max;
+class CWidgetFieldRangeControl extends CWidgetField {
- /**
- * Step value
- *
- * @var int
- */
- private $step;
+ private int $min;
+ private int $max;
+ private int $step;
/**
- * A numeric box widget field.
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- * @param int $min minimal allowed value (this included)
- * @param int $max maximal allowed value (this included)
- * @param int $step step value
+ * @param int $min Minimal allowed value.
+ * @param int $max Maximal allowed value.
*/
- public function __construct($name, $label, $min = 0, $max = ZBX_MAX_INT32, $step = 1) {
+ public function __construct(string $name, string $label = null, int $min = 0, int $max = ZBX_MAX_INT32,
+ int $step = 1) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32);
$this->min = $min;
$this->max = $max;
$this->step = $step;
- $this->setExValidationRules(['in' => $this->min.':'.$this->max]);
+
+ $this
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32)
+ ->setExValidationRules(['in' => $this->min.':'.$this->max]);
}
- public function setValue($value) {
+ public function setValue($value): self {
$this->value = (int) $value;
+
return $this;
}
- public function getMin() {
+ public function getMin(): int {
return $this->min;
}
- public function getMax() {
+ public function getMax(): int {
return $this->max;
}
- public function getStep() {
+ public function getStep(): int {
return $this->step;
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldReference.php b/ui/include/classes/widgets/fields/CWidgetFieldReference.php
index 0505d00e490..894aff69931 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldReference.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldReference.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,10 +19,16 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldReference extends CWidgetField {
+ public const DEFAULT_VALUE = '';
+
// This field name is reserved by Zabbix for this particular use case. See comments below.
- const FIELD_NAME = 'reference';
+ public const FIELD_NAME = 'reference';
/**
* Reference widget field. If added to widget, will generate unique value across the dashboard
@@ -33,20 +39,18 @@ class CWidgetFieldReference extends CWidgetField {
* All reference fields for all widgets on dashboard should share the same name.
* It is needed to make possible search if value is not taken by some other widget in same dashboard.
*/
- parent::__construct(self::FIELD_NAME, null);
+ parent::__construct(self::FIELD_NAME);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
}
/**
- * Set field value.
- *
* @param string $value Reference value. Only numeric characters allowed.
- *
- * @return CWidgetFieldReference
*/
- public function setValue($value) {
- if ($value === '' || ctype_alnum($value)) {
+ public function setValue($value): self {
+ if ($value === '' || ctype_alnum((string) $value)) {
$this->value = $value;
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldSelect.php b/ui/include/classes/widgets/fields/CWidgetFieldSelect.php
index c9380869366..055a64ad840 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldSelect.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldSelect.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,38 +19,37 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldSelect extends CWidgetField {
- private $values;
+ public const DEFAULT_VALUE = null;
+
+ private array $values;
/**
* CSelect widget field. Can use both, string and integer type keys.
*
- * @param string $name Field name in form
- * @param string $label Label for the field in form
* @param array $values Key/value pairs of select option values. Key - saved in DB. Value - visible to user.
*/
- public function __construct($name, $label, $values) {
+ public function __construct(string $name, string $label, array $values) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32);
$this->values = $values;
- $this->setExValidationRules(['in' => implode(',', array_keys($this->values))]);
+
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_INT32)
+ ->setExValidationRules(['in' => implode(',', array_keys($this->values))]);
}
- public function setValue($value) {
+ public function setValue($value): self {
return parent::setValue((int) $value);
}
- public function getValues() {
+ public function getValues(): array {
return $this->values;
}
-
- public function setAction($action) {
- throw new RuntimeException(sprintf('Method is not implemented: "%s".', __METHOD__));
- }
-
- public function getAction() {
- throw new RuntimeException(sprintf('Method is not implemented: "%s".', __METHOD__));
- }
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldSelectResource.php b/ui/include/classes/widgets/fields/CWidgetFieldSelectResource.php
index 06c7bec9ad6..1cc86819715 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldSelectResource.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldSelectResource.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,78 +19,80 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldSelectResource extends CWidgetField {
- protected $srctbl;
- protected $srcfld1;
- protected $srcfld2;
- protected $dstfld1;
- protected $dstfld2;
- protected $resource_type;
+ public const RESOURCE_TYPE_SYSMAP = 1;
+
+ public const DEFAULT_VALUE = '0';
+
+ private string $resource_type;
+
+ private array $popup_options = [
+ 'srctbl' => null,
+ 'srcfld1' => null,
+ 'srcfld2' => null,
+ 'dstfld1' => null,
+ 'dstfld2' => null,
+ 'dstfrm' => null
+ ];
/**
* Select resource type widget field. Will create text box field with select button,
- * that will allow to select specified resource.
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- * @param int $resource_type WIDGET_FIELD_SELECT_RES_ constant.
+ * that will allow selecting specified resource.
*/
- public function __construct($name, $label, $resource_type) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
+ $this->popup_options = array_merge($this->popup_options, [
+ 'dstfld1' => $this->name,
+ 'dstfld2' => $this->name.'_caption'
+ ]);
+
+ $this->setDefault(self::DEFAULT_VALUE);
+ }
+
+ public function getResourceType(): int {
+ return $this->resource_type;
+ }
+
+ public function setResourceType(int $resource_type): self {
$this->resource_type = $resource_type;
- switch ($resource_type) {
- case WIDGET_FIELD_SELECT_RES_SYSMAP:
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_MAP);
- $this->srctbl = 'sysmaps';
- $this->srcfld1 = 'sysmapid';
- $this->srcfld2 = 'name';
- break;
+ if ($this->resource_type == self::RESOURCE_TYPE_SYSMAP) {
+ $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_MAP);
+
+ $this->popup_options = array_merge($this->popup_options, [
+ 'srctbl' => 'sysmaps',
+ 'srcfld1' => 'sysmapid',
+ 'srcfld2' => 'name'
+ ]);
}
- $this->dstfld1 = $name;
- $this->dstfld2 = $this->name.'_caption';
- $this->setDefault('0');
+ return $this;
}
- /**
- * Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
- */
- public function setFlags($flags) {
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
- if ($flags & self::FLAG_NOT_EMPTY) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$strict_validation_rules = $this->getValidationRules();
self::setValidationRuleFlag($strict_validation_rules, API_NOT_EMPTY);
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
}
- public function getResourceType() {
- return $this->resource_type;
- }
-
- public function getPopupOptions($dstfrm) {
- $popup_options = [
- 'srctbl' => $this->srctbl,
- 'srcfld1' => $this->srcfld1,
- 'srcfld2' => $this->srcfld2,
- 'dstfld1' => $this->dstfld1,
- 'dstfld2' => $this->dstfld2,
- 'dstfrm' => $dstfrm
- ];
-
- return $popup_options;
+ public function getPopupOptions(string $form_name): array {
+ return array_merge($this->popup_options, [
+ 'dstfrm' => $form_name
+ ]);
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldSeverities.php b/ui/include/classes/widgets/fields/CWidgetFieldSeverities.php
index 5c661cd673a..7e72d150d16 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldSeverities.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldSeverities.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,9 +19,11 @@
**/
+namespace Zabbix\Widgets\Fields;
+
class CWidgetFieldSeverities extends CWidgetFieldCheckBoxList {
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
$this->setExValidationRules(
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldTags.php b/ui/include/classes/widgets/fields/CWidgetFieldTags.php
index 528af29a696..febcc6c862f 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldTags.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldTags.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,36 +19,30 @@
**/
-class CWidgetFieldTags extends CWidgetField {
+namespace Zabbix\Widgets\Fields;
- /**
- * Create widget field for Tags selection.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
- */
- public function __construct($name, $label) {
- parent::__construct($name, $label);
+use Zabbix\Widgets\CWidgetField;
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_OBJECTS, 'fields' => [
- 'tag' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 255],
- 'operator' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [TAG_OPERATOR_LIKE, TAG_OPERATOR_EQUAL, TAG_OPERATOR_NOT_LIKE, TAG_OPERATOR_NOT_EQUAL, TAG_OPERATOR_EXISTS, TAG_OPERATOR_NOT_EXISTS])],
- 'value' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 255]
- ]]);
- $this->setDefault([]);
- }
+class CWidgetFieldTags extends CWidgetField {
- public function setValue($value) {
- $this->value = (array) $value;
+ public const DEFAULT_VALUE = [];
+ public const DEFAULT_TAG = ['tag' => '', 'operator' => TAG_OPERATOR_LIKE, 'value' => ''];
- return $this;
+ public function __construct(string $name, string $label = null) {
+ parent::__construct($name, $label);
+
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_OBJECTS, 'fields' => [
+ 'tag' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 255],
+ 'operator' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => implode(',', [TAG_OPERATOR_LIKE, TAG_OPERATOR_EQUAL, TAG_OPERATOR_NOT_LIKE, TAG_OPERATOR_NOT_EQUAL, TAG_OPERATOR_EXISTS, TAG_OPERATOR_NOT_EXISTS])],
+ 'value' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED, 'length' => 255]
+ ]]);
}
/**
* Get field value. If no value is set, will return default value.
- *
- * @return mixed
*/
public function getValue() {
$value = parent::getValue();
@@ -62,35 +56,13 @@ class CWidgetFieldTags extends CWidgetField {
return $value;
}
- /**
- * Add dynamic row script and fix the distance between AND/OR buttons and tag inputs below them.
- *
- * @return string
- */
- public function getJavascript() {
- return 'var tags_table = jQuery("#tags_table_'.$this->getName().'");'.
-
- 'tags_table'.
- '.dynamicRows({template: "#tag-row-tmpl"})'.
- '.on("afteradd.dynamicRows", function() {'.
- 'var rows = this.querySelectorAll(".form_row");'.
- 'new CTagFilterItem(rows[rows.length - 1]);'.
- '});'.
+ public function setValue($value): self {
+ $this->value = (array) $value;
- // Init existing fields once loaded.
- 'document.querySelectorAll("#tags_table_'.$this->getName().' .form_row").forEach(row => {'.
- 'new CTagFilterItem(row);'.
- '});';
+ return $this;
}
- /**
- * Prepares array entry for widget field, ready to be passed to CDashboard API functions.
- * Reference is needed here to avoid array merging in CWidgetForm::fieldsToApi method. With large number of widget
- * fields it causes significant performance decrease.
- *
- * @param array $widget_fields reference to Array of widget fields.
- */
- public function toApi(array &$widget_fields = []) {
+ public function toApi(array &$widget_fields = []): void {
$value = $this->getValue();
foreach ($value as $index => $val) {
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldTextArea.php b/ui/include/classes/widgets/fields/CWidgetFieldTextArea.php
index 6d3edfec74a..5d9b8633e58 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldTextArea.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldTextArea.php
@@ -19,53 +19,34 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldTextArea extends CWidgetField {
- private $width;
+ public const DEFAULT_VALUE = '';
- /**
- * Textarea widget field.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
- */
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setDefault('');
- $this->width = ZBX_TEXTAREA_STANDARD_WIDTH;
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
}
- /**
- * Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
- */
- public function setFlags($flags) {
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
- if ($flags & self::FLAG_NOT_EMPTY) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$strict_validation_rules = $this->getValidationRules();
self::setValidationRuleFlag($strict_validation_rules, API_NOT_EMPTY);
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
}
-
- public function setWidth($width) {
- $this->width = $width;
-
- return $this;
- }
-
- public function getWidth() {
- return $this->width;
- }
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldTextBox.php b/ui/include/classes/widgets/fields/CWidgetFieldTextBox.php
index 1dbeaddb245..6932d86f9b1 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldTextBox.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldTextBox.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,64 +19,40 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldTextBox extends CWidgetField {
- private $placeholder;
- private $width;
+ public const DEFAULT_VALUE = '';
/**
* Text box widget field.
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
*/
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setDefault('');
- $this->width = ZBX_TEXTAREA_STANDARD_WIDTH;
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
}
/**
* Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
*/
- public function setFlags($flags) {
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
- if ($flags & self::FLAG_NOT_EMPTY) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$strict_validation_rules = $this->getValidationRules();
self::setValidationRuleFlag($strict_validation_rules, API_NOT_EMPTY);
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
}
-
- public function setPlaceholder($placeholder) {
- $this->placeholder = $placeholder;
-
- return $this;
- }
-
- public function getPlaceholder() {
- return $this->placeholder;
- }
-
- public function setWidth($width) {
- $this->width = $width;
-
- return $this;
- }
-
- public function getWidth() {
- return $this->width;
- }
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldThresholds.php b/ui/include/classes/widgets/fields/CWidgetFieldThresholds.php
index dac9b93f543..0988fb29143 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldThresholds.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldThresholds.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,29 +19,34 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use CArrayHelper,
+ CNumberParser,
+ CParser;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldThresholds extends CWidgetField {
- public const THRESHOLDS_TABLE_ID = '%s-table';
- public const THRESHOLDS_ROW_TMPL_ID = '%s-row-tmpl';
+ public const DEFAULT_VALUE = [];
/**
* Create widget field for Thresholds selection.
- *
- * @param string $name Field name in form.
- * @param string $label Label for the field in form.
*/
- public function __construct($name, $label) {
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_OBJECTS, 'uniq' => [['threshold']], 'fields' => [
- 'color' => ['type' => API_COLOR, 'flags' => API_REQUIRED | API_NOT_EMPTY],
- 'threshold' => ['type' => API_NUMERIC, 'flags' => API_REQUIRED]
- ]]);
- $this->setDefault([]);
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_OBJECTS, 'uniq' => [['threshold']], 'fields' => [
+ 'color' => ['type' => API_COLOR, 'flags' => API_REQUIRED | API_NOT_EMPTY],
+ 'threshold' => ['type' => API_NUMERIC, 'flags' => API_REQUIRED]
+ ]]);
}
- public function setValue($value) {
+ public function setValue($value): self {
$thresholds = [];
foreach ($value as $threshold) {
@@ -81,29 +86,7 @@ class CWidgetFieldThresholds extends CWidgetField {
return [];
}
- public function getJavascript() {
- return 'var thresholds_table = jQuery("#'.sprintf(self::THRESHOLDS_TABLE_ID, $this->getName()).'");'.
- 'thresholds_table'.
- '.dynamicRows({template: "#'.sprintf(self::THRESHOLDS_ROW_TMPL_ID, $this->getName()).'"})'.
- '.on("afteradd.dynamicRows", function(opt) {'.
- 'const rows = this.querySelectorAll(".form_row");'.
- 'const colors = jQuery("#widget-dialogue-form")[0]'.
- '.querySelectorAll(".'.ZBX_STYLE_COLOR_PICKER.' input");'.
- 'const used_colors = [];'.
- 'for (const color of colors) {'.
- 'if (color.value !== "" && color.name.includes("thresholds")) {'.
- 'used_colors.push(color.value);'.
- '}'.
- '}'.
- 'jQuery(".color-picker input", rows[rows.length - 1])'.
- '.val(colorPalette.getNextColor(used_colors))'.
- '.colorpicker({'.
- 'appendTo: ".overlay-dialogue-body"'.
- '});'.
- '});';
- }
-
- public function toApi(array &$widget_fields = []) {
+ public function toApi(array &$widget_fields = []): void {
$value = $this->getValue();
foreach ($value as $index => $val) {
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldTimeZone.php b/ui/include/classes/widgets/fields/CWidgetFieldTimeZone.php
index 202283188f3..32806e9885a 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldTimeZone.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldTimeZone.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,62 +19,33 @@
**/
-class CWidgetFieldTimeZone extends CWidgetField {
+namespace Zabbix\Widgets\Fields;
- private $values;
+use CTimezoneHelper;
- /**
- * CSelect widget field.
- *
- * @param string $name Field name in form
- * @param string $label Label for the field in form
- * @param array $values Key/value pairs of select option values. Key - saved in DB. Value - visible to user.
- */
- public function __construct($name, $label, $values = null) {
- parent::__construct($name, $label);
+class CWidgetFieldTimeZone extends CWidgetFieldSelect {
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
+ public const DEFAULT_VALUE = '';
- if ($values === null) {
- $this->values = $this->generateValues();
- }
+ public function __construct(string $name, string $label = null, array $values = null) {
+ parent::__construct($name, $label, $values === null
+ ? [
+ ZBX_DEFAULT_TIMEZONE => CTimezoneHelper::getTitle(CTimezoneHelper::getSystemTimezone(),
+ _('System default')
+ ),
+ TIMEZONE_DEFAULT_LOCAL => _('Local default')
+ ] + CTimezoneHelper::getList()
+ : null
+ );
- $this->setExValidationRules(['in' => implode(',', array_keys($this->values))]);
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
}
- public function setValue($value) {
- return parent::setValue($value);
- }
-
- public function getValues() {
- return $this->values;
- }
-
- private function generateValues() {
- return [
- ZBX_DEFAULT_TIMEZONE => CTimezoneHelper::getTitle(CTimezoneHelper::getSystemTimezone(),
- _('System default')
- ),
- TIMEZONE_DEFAULT_LOCAL => _('Local default')
- ] + CTimezoneHelper::getList();
- }
-
- public function getJavascript() {
- return '
- var timezone_select = document.getElementById("'.$this->getName().'");
- var local_time_zone = Intl.DateTimeFormat().resolvedOptions().timeZone;
- var timezone_from_list = timezone_select.getOptionByValue(local_time_zone);
- var local_list_item = timezone_select.getOptionByValue("'.TIMEZONE_DEFAULT_LOCAL.'");
-
- if (timezone_from_list && local_list_item) {
- const title = local_list_item.label + ": " + timezone_from_list.label;
- local_list_item.label = title;
- local_list_item._node.innerText = title;
+ public function setValue($value): self {
+ $this->value = $value;
- if (timezone_select.selectedIndex === local_list_item._index) {
- timezone_select._preselect(timezone_select.selectedIndex);
- }
- }
- ';
+ return $this;
}
}
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldUrl.php b/ui/include/classes/widgets/fields/CWidgetFieldUrl.php
index 31c760be381..7d8706deb1a 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldUrl.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldUrl.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,39 +19,33 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldUrl extends CWidgetField {
- /**
- * URL widget field.
- *
- * @param string $name field name in form
- * @param string $label label for the field in form
- */
- public function __construct($name, $label) {
+ public const DEFAULT_VALUE = '';
+
+ public function __construct(string $name, string $label = null) {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
- $this->setValidationRules(['type' => API_URL, 'flags' => API_ALLOW_USER_MACRO]);
- $this->setDefault('');
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR)
+ ->setValidationRules(['type' => API_URL, 'flags' => API_ALLOW_USER_MACRO]);
}
- /**
- * Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
- */
- public function setFlags($flags) {
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
- if ($flags & self::FLAG_NOT_EMPTY) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$strict_validation_rules = $this->getValidationRules();
self::setValidationRuleFlag($strict_validation_rules, API_NOT_EMPTY);
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
diff --git a/ui/include/classes/widgets/fields/CWidgetFieldWidgetSelect.php b/ui/include/classes/widgets/fields/CWidgetFieldWidgetSelect.php
index b9dd08205fd..25c79fd5868 100644
--- a/ui/include/classes/widgets/fields/CWidgetFieldWidgetSelect.php
+++ b/ui/include/classes/widgets/fields/CWidgetFieldWidgetSelect.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,82 +19,55 @@
**/
+namespace Zabbix\Widgets\Fields;
+
+use Zabbix\Widgets\CWidgetField;
+
class CWidgetFieldWidgetSelect extends CWidgetField {
- private $search_by_value;
+ public const DEFAULT_VALUE = '';
+
+ private string $search_by_value;
/**
* Field that creates a selection of widgets in current dashboard, filtered by given key of widget array.
*
- * @param string $name Name of field in config form and widget['fields'] array.
- * @param string $label Field label in config form.
- * @param mixed $search_type Value that will be searched in widgets.
+ * @param string $search_by_value Value that will be searched in widgets.
*/
- public function __construct($name, $label, $search_by_value) {
+ public function __construct(string $name, string $label = null, string $search_by_value = '') {
parent::__construct($name, $label);
- $this->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
$this->search_by_value = $search_by_value;
+
+ $this
+ ->setDefault(self::DEFAULT_VALUE)
+ ->setSaveType(ZBX_WIDGET_FIELD_TYPE_STR);
}
- /**
- * Set additional flags, which can be used in configuration form.
- *
- * @param int $flags
- *
- * @return $this
- */
- public function setFlags($flags) {
+ public function getSearchByValue(): string {
+ return $this->search_by_value;
+ }
+
+ public function setFlags(int $flags): self {
parent::setFlags($flags);
- if ($flags & self::FLAG_NOT_EMPTY) {
+ if (($flags & self::FLAG_NOT_EMPTY) !== 0) {
$strict_validation_rules = $this->getValidationRules();
self::setValidationRuleFlag($strict_validation_rules, API_NOT_EMPTY);
$this->setStrictValidationRules($strict_validation_rules);
}
else {
- $this->setStrictValidationRules(null);
+ $this->setStrictValidationRules();
}
return $this;
}
- /**
- * JS code, that should be executed, to fill the select element with values and select current one.
- *
- * @return string
- */
- public function getJavascript() {
- return '
- var filter_select = document.getElementById("'.$this->getName().'");
-
- filter_select.addOption('.json_encode(['label' => _('Select widget'), 'value' => '-1']).');
- filter_select.selectedIndex = 0;
-
- ZABBIX.Dashboard.getSelectedDashboardPage().getWidgets().forEach((widget) => {
- if (widget.getType() === "'.$this->search_by_value.'") {
- filter_select.addOption({label: widget.getHeaderName(), value: widget.getFields().reference});
- if (widget.getFields().reference === "'.$this->getValue().'") {
- filter_select.value = "'.$this->getValue().'";
- }
- }
- });
- ';
- }
-
- public function setValue($value) {
- if ($value === '' || ctype_alnum($value)) {
+ public function setValue($value): self {
+ if ($value === '' || ctype_alnum((string) $value)) {
$this->value = $value;
}
return $this;
}
-
- public function setAction($action) {
- throw new RuntimeException(sprintf('Method is not implemented: "%s".', __METHOD__));
- }
-
- public function getAction() {
- throw new RuntimeException(sprintf('Method is not implemented: "%s".', __METHOD__));
- }
}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormActionLog.php b/ui/include/classes/widgets/forms/CWidgetFormActionLog.php
deleted file mode 100644
index 2603dfddd90..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormActionLog.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Action log widget form.
- */
-class CWidgetFormActionLog extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_ACTION_LOG);
-
- $field_sort = (new CWidgetFieldSelect('sort_triggers', _('Sort entries by'), [
- SCREEN_SORT_TRIGGERS_TIME_DESC => _('Time').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_TIME_ASC => _('Time').' ('._('ascending').')',
- SCREEN_SORT_TRIGGERS_TYPE_DESC => _('Type').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_TYPE_ASC => _('Type').' ('._('ascending').')',
- SCREEN_SORT_TRIGGERS_STATUS_DESC => _('Status').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_STATUS_ASC => _('Status').' ('._('ascending').')',
- SCREEN_SORT_TRIGGERS_RECIPIENT_DESC => _('Recipient').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_RECIPIENT_ASC => _('Recipient').' ('._('ascending').')'
- ]))
- ->setDefault(SCREEN_SORT_TRIGGERS_TIME_DESC);
-
- if (array_key_exists('sort_triggers', $this->data)) {
- $field_sort->setValue($this->data['sort_triggers']);
- }
-
- $this->fields[$field_sort->getName()] = $field_sort;
-
- $field_lines = (new CWidgetFieldIntegerBox('show_lines', _('Show lines'), ZBX_MIN_WIDGET_LINES,
- ZBX_MAX_WIDGET_LINES
- ))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
- ->setDefault(25);
-
- if (array_key_exists('show_lines', $this->data)) {
- $field_lines->setValue($this->data['show_lines']);
- }
-
- $this->fields[$field_lines->getName()] = $field_lines;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormClock.php b/ui/include/classes/widgets/forms/CWidgetFormClock.php
deleted file mode 100644
index 6e619dcc6bf..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormClock.php
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Clock widget form.
- */
-class CWidgetFormClock extends CWidgetForm {
-
- /**
- * Minimum value of percentage.
- *
- * @var int
- */
- private const WIDGET_CLOCK_PERCENT_MIN = 1;
-
- /**
- * Maximum value of percentage.
- *
- * @var int
- */
- private const WIDGET_CLOCK_PERCENT_MAX = 100;
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_CLOCK);
-
- // Time type field.
- $field_time_type = (new CWidgetFieldSelect('time_type', _('Time type'), [
- TIME_TYPE_LOCAL => _('Local time'),
- TIME_TYPE_SERVER => _('Server time'),
- TIME_TYPE_HOST => _('Host time')
- ]))->setDefault(TIME_TYPE_LOCAL);
-
- if (array_key_exists('time_type', $this->data)) {
- $field_time_type->setValue($this->data['time_type']);
- }
-
- $this->fields[$field_time_type->getName()] = $field_time_type;
-
- // Item field.
- if ($field_time_type->getValue() === TIME_TYPE_HOST) {
- // Item multiselector with single value.
- $field_item = (new CWidgetFieldMsItem('itemid', _('Item'), $templateid))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setMultiple(false);
-
- if (array_key_exists('itemid', $this->data)) {
- $field_item->setValue($this->data['itemid']);
- }
-
- $this->fields[$field_item->getName()] = $field_item;
- }
-
- // clock type
- $field_clock_type = (new CWidgetFieldRadioButtonList('clock_type', _('Clock type'), [
- WIDGET_CLOCK_TYPE_ANALOG => _('Analog'),
- WIDGET_CLOCK_TYPE_DIGITAL => _('Digital')
- ]))
- ->setDefault(WIDGET_CLOCK_TYPE_ANALOG)
- ->setModern(true);
-
- if (array_key_exists('clock_type', $this->data)) {
- $field_clock_type->setValue($this->data['clock_type']);
- }
-
- $this->fields[$field_clock_type->getName()] = $field_clock_type;
-
- // field show
- $field_show =(new CWidgetFieldCheckBoxList('show', _('Show')))
- ->setDefault([WIDGET_CLOCK_SHOW_TIME])
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK);
-
- if (array_key_exists('show', $this->data)) {
- $field_show->setValue($this->data['show']);
- }
-
- $this->fields[$field_show->getName()] = $field_show;
-
- // advanced configuration
- $field_adv_conf = (new CWidgetFieldCheckBox('adv_conf', _('Advanced configuration')))->setDefault(0);
-
- if (array_key_exists('adv_conf', $this->data)) {
- $field_adv_conf->setValue($this->data['adv_conf']);
- }
-
- $this->fields[$field_adv_conf->getName()] = $field_adv_conf;
-
- // background color
- $field_bg_color = (new CWidgetFieldColor('bg_color', _('Background color')))->setDefault('');
-
- if (array_key_exists('bg_color', $this->data)) {
- $field_bg_color->setValue($this->data['bg_color']);
- }
-
- $this->fields[$field_bg_color->getName()] = $field_bg_color;
-
- // date size
- $field_date_size = (new CWidgetFieldIntegerBox('date_size', _('Size'), self::WIDGET_CLOCK_PERCENT_MIN,
- self::WIDGET_CLOCK_PERCENT_MAX
- ))->setDefault(20);
-
- if (array_key_exists('date_size', $this->data)) {
- $field_date_size->setValue($this->data['date_size']);
- }
-
- $this->fields[$field_date_size->getName()] = $field_date_size;
-
- // date bold
- $field_date_bold = (new CWidgetFieldCheckBox('date_bold', _('Bold')))->setDefault(0);
-
- if (array_key_exists('date_bold', $this->data)) {
- $field_date_bold->setValue($this->data['date_bold']);
- }
-
- $this->fields[$field_date_bold->getName()] = $field_date_bold;
-
- // date color
- $field_date_color = (new CWidgetFieldColor('date_color', _('Color')))->setDefault('');
-
- if (array_key_exists('date_color', $this->data)) {
- $field_date_color->setValue($this->data['date_color']);
- }
-
- $this->fields[$field_date_color->getName()] = $field_date_color;
-
- // time size
- $field_time_size = (new CWidgetFieldIntegerBox('time_size', _('Size'), self::WIDGET_CLOCK_PERCENT_MIN,
- self::WIDGET_CLOCK_PERCENT_MAX
- ))->setDefault(30);
-
- if (array_key_exists('time_size', $this->data)) {
- $field_time_size->setValue($this->data['time_size']);
- }
-
- $this->fields[$field_time_size->getName()] = $field_time_size;
-
- // time bold
- $field_time_bold = (new CWidgetFieldCheckBox('time_bold', _('Bold')))->setDefault(0);
-
- if (array_key_exists('time_bold', $this->data)) {
- $field_time_bold->setValue($this->data['time_bold']);
- }
-
- $this->fields[$field_time_bold->getName()] = $field_time_bold;
-
- // time color
- $field_time_color = (new CWidgetFieldColor('time_color', _('Color')))->setDefault('');
-
- if (array_key_exists('time_color', $this->data)) {
- $field_time_color->setValue($this->data['time_color']);
- }
-
- $this->fields[$field_time_color->getName()] = $field_time_color;
-
- // time seconds
- $field_time_sec = (new CWidgetFieldCheckBox('time_sec', _('Seconds')))->setDefault(1);
-
- if (array_key_exists('time_sec', $this->data)) {
- $field_time_sec->setValue($this->data['time_sec']);
- }
-
- $this->fields[$field_time_sec->getName()] = $field_time_sec;
-
- // time format
- $field_time_format = (new CWidgetFieldRadioButtonList('time_format', _('Format'), [
- WIDGET_CLOCK_HOUR_TWENTY_FOUR => _('24-hour'),
- WIDGET_CLOCK_HOUR_TWELVE => _('12-hour')
- ]))
- ->setDefault(WIDGET_CLOCK_HOUR_TWENTY_FOUR)
- ->setModern(true);
-
- if (array_key_exists('time_format', $this->data)) {
- $field_time_format->setValue($this->data['time_format']);
- }
-
- $this->fields[$field_time_format->getName()] = $field_time_format;
-
- // time zone size
- $field_tzone_size = (new CWidgetFieldIntegerBox('tzone_size', _('Size'), self::WIDGET_CLOCK_PERCENT_MIN,
- self::WIDGET_CLOCK_PERCENT_MAX
- ))->setDefault(20);
-
- if (array_key_exists('tzone_size', $this->data)) {
- $field_tzone_size->setValue($this->data['tzone_size']);
- }
-
- $this->fields[$field_tzone_size->getName()] = $field_tzone_size;
-
- // time zone bold
- $field_tzone_bold = (new CWidgetFieldCheckBox('tzone_bold', _('Bold')))->setDefault(0);
-
- if (array_key_exists('tzone_bold', $this->data)) {
- $field_tzone_bold->setValue($this->data['tzone_bold']);
- }
-
- $this->fields[$field_tzone_bold->getName()] = $field_tzone_bold;
-
- // time zone color
- $field_tzone_color = (new CWidgetFieldColor('tzone_color', _('Color')))->setDefault('');
-
- if (array_key_exists('tzone_color', $this->data)) {
- $field_tzone_color->setValue($this->data['tzone_color']);
- }
-
- $this->fields[$field_tzone_color->getName()] = $field_tzone_color;
-
- // time zone time zone
- $field_tzone_timezone = (new CWidgetFieldTimeZone('tzone_timezone', _('Time zone')))
- ->setDefault(ZBX_DEFAULT_TIMEZONE);
-
- if ($field_time_type->getValue() === TIME_TYPE_LOCAL) {
- $field_tzone_timezone->setDefault(TIMEZONE_DEFAULT_LOCAL);
- }
-
- if (array_key_exists('tzone_timezone', $this->data)) {
- $field_tzone_timezone->setValue($this->data['tzone_timezone']);
- }
- elseif ($field_time_type->getValue() === TIME_TYPE_LOCAL) {
- $field_tzone_timezone->setValue(TIMEZONE_DEFAULT_LOCAL);
- }
-
- $this->fields[$field_tzone_timezone->getName()] = $field_tzone_timezone;
-
- // time zone format
- $field_tzone_format = (new CWidgetFieldRadioButtonList('tzone_format', _('Format'), [
- WIDGET_CLOCK_TIMEZONE_SHORT => _('Short'),
- WIDGET_CLOCK_TIMEZONE_FULL => _('Full')
- ]))
- ->setDefault(WIDGET_CLOCK_TIMEZONE_SHORT)
- ->setModern(true);
-
- if (array_key_exists('tzone_format', $this->data)) {
- $field_tzone_format->setValue($this->data['tzone_format']);
- }
-
- $this->fields[$field_tzone_format->getName()] = $field_tzone_format;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormDataOver.php b/ui/include/classes/widgets/forms/CWidgetFormDataOver.php
deleted file mode 100644
index d6b5a4a6380..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormDataOver.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Data overview widget form.
- */
-class CWidgetFormDataOver extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_DATA_OVER);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Hosts.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Show suppressed problems.
- $field_show_suppressed = (new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems')))
- ->setDefault(ZBX_PROBLEM_SUPPRESSED_FALSE);
-
- if (array_key_exists('show_suppressed', $this->data)) {
- $field_show_suppressed->setValue($this->data['show_suppressed']);
- }
-
- $this->fields[$field_show_suppressed->getName()] = $field_show_suppressed;
-
- // Hosts names location.
- $field_style = (new CWidgetFieldRadioButtonList('style', _('Hosts location'), [
- STYLE_LEFT => _('Left'),
- STYLE_TOP => _('Top')
- ]))
- ->setDefault(STYLE_LEFT)
- ->setModern(true);
-
- if (array_key_exists('style', $this->data)) {
- $field_style->setValue($this->data['style']);
- }
-
- $this->fields[$field_style->getName()] = $field_style;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormGeoMap.php b/ui/include/classes/widgets/forms/CWidgetFormGeoMap.php
deleted file mode 100644
index be0a49f437c..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormGeoMap.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Geomap widget form.
- */
-class CWidgetFormGeoMap extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_GEOMAP);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
-
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Hosts field.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Default view.
- $field_default_view = new CWidgetFieldLatLng('default_view', _('Initial view'));
-
- if (array_key_exists('default_view', $this->data)) {
- $field_default_view->setValue($this->data['default_view']);
- }
-
- $this->fields[$field_default_view->getName()] = $field_default_view;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormGraph.php b/ui/include/classes/widgets/forms/CWidgetFormGraph.php
deleted file mode 100644
index 034923647ef..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormGraph.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Graph widget form.
- */
-class CWidgetFormGraph extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_GRAPH);
-
- // Select graph type field.
- $field_source = (new CWidgetFieldRadioButtonList('source_type', _('Source'), [
- ZBX_WIDGET_FIELD_RESOURCE_GRAPH => _('Graph'),
- ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH => _('Simple graph')
- ]))
- ->setDefault(ZBX_WIDGET_FIELD_RESOURCE_GRAPH)
- ->setAction('ZABBIX.Dashboard.reloadWidgetProperties()')
- ->setModern(true);
-
- if (array_key_exists('source_type', $this->data)) {
- $field_source->setValue($this->data['source_type']);
- }
-
- $this->fields[$field_source->getName()] = $field_source;
-
- if (array_key_exists('source_type', $this->data)
- && $this->data['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
- // Select simple graph field.
- $field_item = (new CWidgetFieldMsItem('itemid', _('Item'), $templateid))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setMultiple(false)
- ->setFilterParameter('numeric', true);
-
- if ($templateid === null) {
- // For groups and hosts selection.
- $field_item->setFilterParameter('with_simple_graph_items', true);
- }
-
- if (array_key_exists('itemid', $this->data)) {
- $field_item->setValue($this->data['itemid']);
- }
-
- $this->fields[$field_item->getName()] = $field_item;
- }
- else {
- // Select graph field.
- $field_graph = (new CWidgetFieldMsGraph('graphid', _('Graph'), $templateid))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setMultiple(false);
-
- if (array_key_exists('graphid', $this->data)) {
- $field_graph->setValue($this->data['graphid']);
- }
-
- $this->fields[$field_graph->getName()] = $field_graph;
- }
-
- // Show legend checkbox.
- $field_legend = (new CWidgetFieldCheckBox('show_legend', _('Show legend')))->setDefault(1);
-
- if (array_key_exists('show_legend', $this->data)) {
- $field_legend->setValue($this->data['show_legend']);
- }
-
- $this->fields[$field_legend->getName()] = $field_legend;
-
- // Dynamic item.
- if ($templateid === null) {
- $field_dynamic = (new CWidgetFieldCheckBox('dynamic', _('Enable host selection')))->setDefault(WIDGET_SIMPLE_ITEM);
-
- $field_dynamic->setValue(array_key_exists('dynamic', $this->data) ? $this->data['dynamic'] : false);
-
- $this->fields[$field_dynamic->getName()] = $field_dynamic;
- }
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormGraphPrototype.php b/ui/include/classes/widgets/forms/CWidgetFormGraphPrototype.php
deleted file mode 100644
index fb940335cc4..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormGraphPrototype.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Graph prototype widget form.
- */
-class CWidgetFormGraphPrototype extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_GRAPH_PROTOTYPE);
-
- // Select graph type field.
- $field_source = (new CWidgetFieldRadioButtonList('source_type', _('Source'), [
- ZBX_WIDGET_FIELD_RESOURCE_GRAPH_PROTOTYPE => _('Graph prototype'),
- ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH_PROTOTYPE => _('Simple graph prototype')
- ]))
- ->setDefault(ZBX_WIDGET_FIELD_RESOURCE_GRAPH_PROTOTYPE)
- ->setAction('ZABBIX.Dashboard.reloadWidgetProperties()')
- ->setModern(true);
-
- if (array_key_exists('source_type', $this->data)) {
- $field_source->setValue($this->data['source_type']);
- }
-
- $this->fields[$field_source->getName()] = $field_source;
-
- if (array_key_exists('source_type', $this->data)
- && $this->data['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH_PROTOTYPE) {
- // Select simple graph prototype field.
- $field_item_prototype = (new CWidgetFieldMsItemPrototype('itemid', _('Item prototype'), $templateid))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setMultiple(false)
- ->setFilterParameter('numeric', true);
-
- if ($templateid === null) {
- // For groups and hosts selection.
- $field_item_prototype->setFilterParameter('with_simple_graph_item_prototypes', true);
- }
-
- if (array_key_exists('itemid', $this->data)) {
- $field_item_prototype->setValue($this->data['itemid']);
- }
-
- $this->fields[$field_item_prototype->getName()] = $field_item_prototype;
- }
- else {
- // Select graph prototype field.
- $field_graph_prototype = (new CWidgetFieldMsGraphPrototype('graphid', _('Graph prototype'), $templateid))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setMultiple(false);
-
- if (array_key_exists('graphid', $this->data)) {
- $field_graph_prototype->setValue($this->data['graphid']);
- }
-
- $this->fields[$field_graph_prototype->getName()] = $field_graph_prototype;
- }
-
- // Show legend checkbox.
- $field_legend = (new CWidgetFieldCheckBox('show_legend', _('Show legend')))->setDefault(1);
-
- if (array_key_exists('show_legend', $this->data)) {
- $field_legend->setValue($this->data['show_legend']);
- }
-
- $this->fields[$field_legend->getName()] = $field_legend;
-
- // Dynamic item.
- if ($templateid === null) {
- $field_dynamic = (new CWidgetFieldCheckBox('dynamic', _('Enable host selection')))->setDefault(WIDGET_SIMPLE_ITEM);
-
- $field_dynamic->setValue(array_key_exists('dynamic', $this->data) ? $this->data['dynamic'] : false);
-
- $this->fields[$field_dynamic->getName()] = $field_dynamic;
- }
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormHostAvail.php b/ui/include/classes/widgets/forms/CWidgetFormHostAvail.php
deleted file mode 100644
index e3aedaa5f5c..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormHostAvail.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Host availability widget form.
- */
-class CWidgetFormHostAvail extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_HOST_AVAIL);
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Interface type.
- $field_interface_type = new CWidgetFieldCheckBoxList('interface_type', _('Interface type'));
-
- if (array_key_exists('interface_type', $this->data)) {
- $field_interface_type->setValue($this->data['interface_type']);
- }
-
- $this->fields[$field_interface_type->getName()] = $field_interface_type;
-
- // Layout.
- $field_layout = (new CWidgetFieldRadioButtonList('layout', _('Layout'), [
- STYLE_HORIZONTAL => _('Horizontal'),
- STYLE_VERTICAL => _('Vertical')
- ]))
- ->setDefault(STYLE_HORIZONTAL)
- ->setModern(true);
-
- if (array_key_exists('layout', $this->data)) {
- $field_layout->setValue($this->data['layout']);
- }
-
- $this->fields[$field_layout->getName()] = $field_layout;
-
- // Show hosts in maintenance.
- $field_maintenance = (new CWidgetFieldCheckBox('maintenance', _('Show hosts in maintenance')))
- ->setDefault(HOST_MAINTENANCE_STATUS_OFF);
-
- if (array_key_exists('maintenance', $this->data)) {
- $field_maintenance->setValue($this->data['maintenance']);
- }
-
- $this->fields[$field_maintenance->getName()] = $field_maintenance;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormItem.php b/ui/include/classes/widgets/forms/CWidgetFormItem.php
deleted file mode 100644
index 96272bd7d51..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormItem.php
+++ /dev/null
@@ -1,461 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Single item widget form.
- */
-class CWidgetFormItem extends CWidgetForm {
-
- /**
- * Minimum value of percentage.
- *
- * @var int
- */
- private const WIDGET_ITEM_PERCENT_MIN = 1;
-
- /**
- * Maximum value of percentage.
- *
- * @var int
- */
- private const WIDGET_ITEM_PERCENT_MAX = 100;
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_ITEM);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Item field.
- $field_item = (new CWidgetFieldMsItem('itemid', _('Item'), $templateid))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setMultiple(false);
-
- if (array_key_exists('itemid', $this->data)) {
- $field_item->setValue($this->data['itemid']);
- }
-
- $this->fields[$field_item->getName()] = $field_item;
-
- // Show checkboxes.
- $field_show = (new CWidgetFieldCheckBoxList('show', _('Show')))
- ->setDefault([WIDGET_ITEM_SHOW_DESCRIPTION, WIDGET_ITEM_SHOW_VALUE, WIDGET_ITEM_SHOW_TIME,
- WIDGET_ITEM_SHOW_CHANGE_INDICATOR
- ])
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK);
-
- if (array_key_exists('show', $this->data)) {
- $field_show->setValue($this->data['show']);
- }
-
- $this->fields[$field_show->getName()] = $field_show;
-
- // Advanced configuration.
- $field_adv_conf = (new CWidgetFieldCheckBox('adv_conf', _('Advanced configuration')))->setDefault(0);
-
- if (array_key_exists('adv_conf', $this->data)) {
- $field_adv_conf->setValue($this->data['adv_conf']);
- }
-
- $this->fields[$field_adv_conf->getName()] = $field_adv_conf;
-
- // Description textarea field.
- $field_desc = (new CWidgetFieldTextArea('description', _('Description')))
- ->setDefault('{ITEM.NAME}')
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setWidth(ZBX_TEXTAREA_BIG_WIDTH - 38);
-
- if (array_key_exists('description', $this->data)) {
- $field_desc->setValue($this->data['description']);
- }
-
- $this->fields[$field_desc->getName()] = $field_desc;
-
- // Description horizontal position.
- $field_desc_h_pos = (new CWidgetFieldRadioButtonList('desc_h_pos', _('Horizontal position'), [
- WIDGET_ITEM_POS_LEFT => _('Left'),
- WIDGET_ITEM_POS_CENTER => _('Center'),
- WIDGET_ITEM_POS_RIGHT => _('Right')
- ]))
- ->setDefault(WIDGET_ITEM_POS_CENTER)
- ->setModern(true);
-
- if (array_key_exists('desc_h_pos', $this->data)) {
- $field_desc_h_pos->setValue($this->data['desc_h_pos']);
- }
-
- $this->fields[$field_desc_h_pos->getName()] = $field_desc_h_pos;
-
- // Description vertical position.
- $field_desc_v_pos = (new CWidgetFieldRadioButtonList('desc_v_pos', _('Vertical position'), [
- WIDGET_ITEM_POS_TOP => _('Top'),
- WIDGET_ITEM_POS_MIDDLE => _('Middle'),
- WIDGET_ITEM_POS_BOTTOM => _('Bottom')
- ]))
- ->setDefault(WIDGET_ITEM_POS_BOTTOM)
- ->setModern(true);
-
- if (array_key_exists('desc_v_pos', $this->data)) {
- $field_desc_v_pos->setValue($this->data['desc_v_pos']);
- }
-
- $this->fields[$field_desc_v_pos->getName()] = $field_desc_v_pos;
-
- // Description size.
- $field_desc_size = (new CWidgetFieldIntegerBox('desc_size', _('Size'), self::WIDGET_ITEM_PERCENT_MIN,
- self::WIDGET_ITEM_PERCENT_MAX
- ))->setDefault(15);
-
- if (array_key_exists('desc_size', $this->data)) {
- $field_desc_size->setValue($this->data['desc_size']);
- }
-
- $this->fields[$field_desc_size->getName()] = $field_desc_size;
-
- // Description bold.
- $field_desc_bold = (new CWidgetFieldCheckBox('desc_bold', _('Bold')))->setDefault(0);
-
- if (array_key_exists('desc_bold', $this->data)) {
- $field_desc_bold->setValue($this->data['desc_bold']);
- }
-
- $this->fields[$field_desc_bold->getName()] = $field_desc_bold;
-
- // Description color.
- $field_desc_color = (new CWidgetFieldColor('desc_color', _('Color')))
- ->setDefault('');
-
- if (array_key_exists('desc_color', $this->data)) {
- $field_desc_color->setValue($this->data['desc_color']);
- }
-
- $this->fields[$field_desc_color->getName()] = $field_desc_color;
-
- // Value decimal places.
- $field_decimal_places = (new CWidgetFieldIntegerBox('decimal_places', _('Decimal places'), 0, 10))
- ->setDefault(2);
-
- if (array_key_exists('decimal_places', $this->data)) {
- $field_decimal_places->setValue($this->data['decimal_places']);
- }
-
- $this->fields[$field_decimal_places->getName()] = $field_decimal_places;
-
- // Value decimal size.
- $field_decimal_size = (new CWidgetFieldIntegerBox('decimal_size', _('Size'), self::WIDGET_ITEM_PERCENT_MIN,
- self::WIDGET_ITEM_PERCENT_MAX
- ))->setDefault(35);
-
- if (array_key_exists('decimal_size', $this->data)) {
- $field_decimal_size->setValue($this->data['decimal_size']);
- }
-
- $this->fields[$field_decimal_size->getName()] = $field_decimal_size;
-
- // Value horizontal position.
- $field_value_h_pos = (new CWidgetFieldRadioButtonList('value_h_pos', _('Horizontal position'), [
- WIDGET_ITEM_POS_LEFT => _('Left'),
- WIDGET_ITEM_POS_CENTER => _('Center'),
- WIDGET_ITEM_POS_RIGHT => _('Right')
- ]))
- ->setDefault(WIDGET_ITEM_POS_CENTER)
- ->setModern(true);
-
- if (array_key_exists('value_h_pos', $this->data)) {
- $field_value_h_pos->setValue($this->data['value_h_pos']);
- }
-
- $this->fields[$field_value_h_pos->getName()] = $field_value_h_pos;
-
- // Value vertical position.
- $field_value_v_pos = (new CWidgetFieldRadioButtonList('value_v_pos', _('Vertical position'), [
- WIDGET_ITEM_POS_TOP => _('Top'),
- WIDGET_ITEM_POS_MIDDLE => _('Middle'),
- WIDGET_ITEM_POS_BOTTOM => _('Bottom')
- ]))
- ->setDefault(WIDGET_ITEM_POS_MIDDLE)
- ->setModern(true);
-
- if (array_key_exists('value_v_pos', $this->data)) {
- $field_value_v_pos->setValue($this->data['value_v_pos']);
- }
-
- $this->fields[$field_value_v_pos->getName()] = $field_value_v_pos;
-
- // Value size.
- $field_value_size = (new CWidgetFieldIntegerBox('value_size', _('Size'), self::WIDGET_ITEM_PERCENT_MIN,
- self::WIDGET_ITEM_PERCENT_MAX
- ))->setDefault(45);
-
- if (array_key_exists('value_size', $this->data)) {
- $field_value_size->setValue($this->data['value_size']);
- }
-
- $this->fields[$field_value_size->getName()] = $field_value_size;
-
- // Value bold.
- $field_value_bold = (new CWidgetFieldCheckBox('value_bold', _('Bold')))->setDefault(1);
-
- if (array_key_exists('value_bold', $this->data)) {
- $field_value_bold->setValue($this->data['value_bold']);
- }
-
- $this->fields[$field_value_bold->getName()] = $field_value_bold;
-
- // Value color.
- $field_value_color = (new CWidgetFieldColor('value_color', _('Color')))
- ->setDefault('');
-
- if (array_key_exists('value_color', $this->data)) {
- $field_value_color->setValue($this->data['value_color']);
- }
-
- $this->fields[$field_value_color->getName()] = $field_value_color;
-
- // Units show.
- $field_units_show = (new CWidgetFieldCheckBox('units_show', _('Units')))->setDefault(1);
-
- if (array_key_exists('units_show', $this->data)) {
- $field_units_show->setValue($this->data['units_show']);
- }
-
- $this->fields[$field_units_show->getName()] = $field_units_show;
-
- // Units input field.
- $field_units = new CWidgetFieldTextBox('units', _('Units'));
-
- if (array_key_exists('units', $this->data)) {
- $field_units->setValue($this->data['units']);
- }
-
- $this->fields[$field_units->getName()] = $field_units;
-
- // Units position.
- $field_units_pos = (new CWidgetFieldSelect('units_pos', _('Position'), [
- WIDGET_ITEM_POS_BEFORE => _('Before value'),
- WIDGET_ITEM_POS_ABOVE => _('Above value'),
- WIDGET_ITEM_POS_AFTER => _('After value'),
- WIDGET_ITEM_POS_BELOW => _('Below value')
- ]))
- ->setDefault(WIDGET_ITEM_POS_AFTER);
-
- if (array_key_exists('units_pos', $this->data)) {
- $field_units_pos->setValue($this->data['units_pos']);
- }
-
- $this->fields[$field_units_pos->getName()] = $field_units_pos;
-
- // Units size.
- $field_units_size = (new CWidgetFieldIntegerBox('units_size', _('Size'), self::WIDGET_ITEM_PERCENT_MIN,
- self::WIDGET_ITEM_PERCENT_MAX
- ))->setDefault(35);
-
- if (array_key_exists('units_size', $this->data)) {
- $field_units_size->setValue($this->data['units_size']);
- }
-
- $this->fields[$field_units_size->getName()] = $field_units_size;
-
- // Units bold.
- $field_units_bold = (new CWidgetFieldCheckBox('units_bold', _('Bold')))->setDefault(1);
-
- if (array_key_exists('units_bold', $this->data)) {
- $field_units_bold->setValue($this->data['units_bold']);
- }
-
- $this->fields[$field_units_bold->getName()] = $field_units_bold;
-
- // Units color.
- $field_units_color = (new CWidgetFieldColor('units_color', _('Color')))
- ->setDefault('');
-
- if (array_key_exists('units_color', $this->data)) {
- $field_units_color->setValue($this->data['units_color']);
- }
-
- $this->fields[$field_units_color->getName()] = $field_units_color;
-
- // Time horizontal position.
- $field_time_h_pos = (new CWidgetFieldRadioButtonList('time_h_pos', _('Horizontal position'), [
- WIDGET_ITEM_POS_LEFT => _('Left'),
- WIDGET_ITEM_POS_CENTER => _('Center'),
- WIDGET_ITEM_POS_RIGHT => _('Right')
- ]))
- ->setDefault(WIDGET_ITEM_POS_CENTER)
- ->setModern(true);
-
- if (array_key_exists('time_h_pos', $this->data)) {
- $field_time_h_pos->setValue($this->data['time_h_pos']);
- }
-
- $this->fields[$field_time_h_pos->getName()] = $field_time_h_pos;
-
- // Time vertical position.
- $field_time_v_pos = (new CWidgetFieldRadioButtonList('time_v_pos', _('Vertical position'), [
- WIDGET_ITEM_POS_TOP => _('Top'),
- WIDGET_ITEM_POS_MIDDLE => _('Middle'),
- WIDGET_ITEM_POS_BOTTOM => _('Bottom')
- ]))
- ->setDefault(WIDGET_ITEM_POS_TOP)
- ->setModern(true);
-
- if (array_key_exists('time_v_pos', $this->data)) {
- $field_time_v_pos->setValue($this->data['time_v_pos']);
- }
-
- $this->fields[$field_time_v_pos->getName()] = $field_time_v_pos;
-
- // Time size.
- $field_time_size = (new CWidgetFieldIntegerBox('time_size', _('Size'), self::WIDGET_ITEM_PERCENT_MIN,
- self::WIDGET_ITEM_PERCENT_MAX
- ))->setDefault(15);
-
- if (array_key_exists('time_size', $this->data)) {
- $field_time_size->setValue($this->data['time_size']);
- }
-
- $this->fields[$field_time_size->getName()] = $field_time_size;
-
- // Time bold.
- $field_time_bold = (new CWidgetFieldCheckBox('time_bold', _('Bold')))->setDefault(0);
-
- if (array_key_exists('time_bold', $this->data)) {
- $field_time_bold->setValue($this->data['time_bold']);
- }
-
- $this->fields[$field_time_bold->getName()] = $field_time_bold;
-
- // Time color.
- $field_time_color = (new CWidgetFieldColor('time_color', _('Color')))
- ->setDefault('');
-
- if (array_key_exists('time_color', $this->data)) {
- $field_time_color->setValue($this->data['time_color']);
- }
-
- $this->fields[$field_time_color->getName()] = $field_time_color;
-
- // Change indicator up arrow color.
- $field_up_color = (new CWidgetFieldColor('up_color', _('Change indicator')))
- ->setDefault('');
-
- if (array_key_exists('up_color', $this->data)) {
- $field_up_color->setValue($this->data['up_color']);
- }
-
- $this->fields[$field_up_color->getName()] = $field_up_color;
-
- // Change indicator down arrow color.
- $field_down_color = (new CWidgetFieldColor('down_color', _('Change indicator')))
- ->setDefault('');
-
- if (array_key_exists('down_color', $this->data)) {
- $field_down_color->setValue($this->data['down_color']);
- }
-
- $this->fields[$field_down_color->getName()] = $field_down_color;
-
- // Change indicator up/down arrow color.
- $field_updown_color = (new CWidgetFieldColor('updown_color', _('Change indicator')))
- ->setDefault('');
-
- if (array_key_exists('updown_color', $this->data)) {
- $field_updown_color->setValue($this->data['updown_color']);
- }
-
- $this->fields[$field_updown_color->getName()] = $field_updown_color;
-
- // Background color.
- $field_bg_color = (new CWidgetFieldColor('bg_color', _('Background color')))
- ->setDefault('');
-
- if (array_key_exists('bg_color', $this->data)) {
- $field_bg_color->setValue($this->data['bg_color']);
- }
-
- $this->fields[$field_bg_color->getName()] = $field_bg_color;
-
- // Thresholds.
- $field_thresholds = (new CWidgetFieldThresholds('thresholds', _('Thresholds')));
-
- if (array_key_exists('thresholds', $this->data)) {
- $field_thresholds->setValue($this->data['thresholds']);
- }
-
- $this->fields[$field_thresholds->getName()] = $field_thresholds;
-
- // Dynamic item.
- if ($templateid === null) {
- $dynamic_item = (new CWidgetFieldCheckBox('dynamic', _('Enable host selection')))->setDefault(WIDGET_SIMPLE_ITEM);
-
- if (array_key_exists('dynamic', $this->data)) {
- $dynamic_item->setValue($this->data['dynamic']);
- }
-
- $this->fields[$dynamic_item->getName()] = $dynamic_item;
- }
- }
-
- /**
- * Validate form fields.
- *
- * @param bool $strict Enables more strict validation of the form fields.
- * Must be enabled for validation of input parameters in the widget configuration form.
- *
- * @return array
- */
- public function validate($strict = false) {
- $errors = parent::validate($strict);
-
- // Check if one of the objects (description, value or time) occupies same space.
- $fields = [
- ['show' => WIDGET_ITEM_SHOW_DESCRIPTION, 'h_pos' => 'desc_h_pos', 'v_pos' => 'desc_v_pos'],
- ['show' => WIDGET_ITEM_SHOW_VALUE, 'h_pos' => 'value_h_pos', 'v_pos' => 'value_v_pos'],
- ['show' => WIDGET_ITEM_SHOW_TIME, 'h_pos' => 'time_h_pos', 'v_pos' => 'time_v_pos']
- ];
- $fields_count = count($fields);
- $show = $this->fields['show']->getValue();
-
- for ($i = 0; $i < $fields_count - 1; $i++) {
- if (!in_array($fields[$i]['show'], $show)) {
- continue;
- }
-
- $i_h_pos = $this->fields[$fields[$i]['h_pos']]->getValue();
- $i_v_pos = $this->fields[$fields[$i]['v_pos']]->getValue();
-
- for ($j = $i + 1; $j < $fields_count; $j++) {
- if (!in_array($fields[$j]['show'], $show)) {
- continue;
- }
-
- $j_h_pos = $this->fields[$fields[$j]['h_pos']]->getValue();
- $j_v_pos = $this->fields[$fields[$j]['v_pos']]->getValue();
-
- if ($i_h_pos == $j_h_pos && $i_v_pos == $j_v_pos) {
- $errors[] = _('Two or more fields cannot occupy same space.');
- break 2;
- }
- }
- }
-
- return $errors;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormMap.php b/ui/include/classes/widgets/forms/CWidgetFormMap.php
deleted file mode 100644
index 4f1230e95be..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormMap.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Map widget form.
- */
-class CWidgetFormMap extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_MAP);
-
- // Widget reference field.
- $field_reference = (new CWidgetFieldReference())->setDefault('');
-
- if (array_key_exists($field_reference->getName(), $this->data)) {
- $field_reference->setValue($this->data[$field_reference->getName()]);
- }
-
- $this->fields[$field_reference->getName()] = $field_reference;
-
- // Select source type field.
- $field_source_type = (new CWidgetFieldRadioButtonList('source_type', _('Source type'), [
- WIDGET_SYSMAP_SOURCETYPE_MAP => _('Map'),
- WIDGET_SYSMAP_SOURCETYPE_FILTER => _('Map navigation tree')
- ]))
- ->setDefault(WIDGET_SYSMAP_SOURCETYPE_MAP)
- ->setAction('ZABBIX.Dashboard.reloadWidgetProperties()')
- ->setModern(true);
-
- if (array_key_exists('source_type', $this->data)) {
- $field_source_type->setValue($this->data['source_type']);
- }
-
- $this->fields[$field_source_type->getName()] = $field_source_type;
-
- if ($field_source_type->getValue() === WIDGET_SYSMAP_SOURCETYPE_FILTER) {
- // Select filter widget field.
- $field_filter_widget = (new CWidgetFieldWidgetSelect('filter_widget_reference', _('Filter'),
- WIDGET_NAV_TREE
- ))
- ->setDefault('')
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK);
-
- if (array_key_exists('filter_widget_reference', $this->data)) {
- $field_filter_widget->setValue($this->data['filter_widget_reference']);
- }
-
- $this->fields[$field_filter_widget->getName()] = $field_filter_widget;
- }
- else {
- // Select sysmap field.
- $field_map = (new CWidgetFieldSelectResource('sysmapid', _('Map'), WIDGET_FIELD_SELECT_RES_SYSMAP))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK);
-
- if (array_key_exists('sysmapid', $this->data)) {
- $field_map->setValue($this->data['sysmapid']);
- }
-
- $this->fields[$field_map->getName()] = $field_map;
- }
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormNavTree.php b/ui/include/classes/widgets/forms/CWidgetFormNavTree.php
deleted file mode 100644
index fa5e68a87a2..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormNavTree.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Map navigation widget form.
- */
-class CWidgetFormNavTree extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_NAV_TREE);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Widget reference field.
- $field_reference = (new CWidgetFieldReference())->setDefault('');
-
- if (array_key_exists($field_reference->getName(), $this->data)) {
- $field_reference->setValue($this->data[$field_reference->getName()]);
- }
-
- $this->fields[$field_reference->getName()] = $field_reference;
-
- // Elements of the tree.
- $field_navtree = new CWidgetFieldNavTree('navtree', '');
-
- if (array_key_exists('navtree', $this->data)) {
- $field_navtree->setValue($this->data['navtree']);
- }
-
- $this->fields[$field_navtree->getName()] = $field_navtree;
-
- // Show unavailable maps.
- $show_unavailable_maps = (new CWidgetFieldCheckBox('show_unavailable', _('Show unavailable maps')))
- ->setDefault(0);
-
- if (array_key_exists('show_unavailable', $this->data)) {
- $show_unavailable_maps->setValue($this->data['show_unavailable']);
- }
-
- $this->fields[$show_unavailable_maps->getName()] = $show_unavailable_maps;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormPlainText.php b/ui/include/classes/widgets/forms/CWidgetFormPlainText.php
deleted file mode 100644
index fd5ed730fb4..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormPlainText.php
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Plain text widget form.
- */
-class CWidgetFormPlainText extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_PLAIN_TEXT);
-
- // Items selector.
- $field_items = (new CWidgetFieldMsItem('itemids', _('Items'), $templateid))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK);
-
- if (array_key_exists('itemids', $this->data)) {
- $field_items->setValue($this->data['itemids']);
- }
-
- $this->fields[$field_items->getName()] = $field_items;
-
- // Location of the item names.
- $field_style = (new CWidgetFieldRadioButtonList('style', _('Items location'), [
- STYLE_LEFT => _('Left'),
- STYLE_TOP => _('Top')
- ]))
- ->setDefault(STYLE_LEFT)
- ->setModern(true);
-
- if (array_key_exists('style', $this->data)) {
- $field_style->setValue($this->data['style']);
- }
-
- $this->fields[$field_style->getName()] = $field_style;
-
- // Number of records to display.
- $field_lines = (new CWidgetFieldIntegerBox('show_lines', _('Show lines'), ZBX_MIN_WIDGET_LINES,
- ZBX_MAX_WIDGET_LINES
- ))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
- ->setDefault(ZBX_DEFAULT_WIDGET_LINES);
-
- if (array_key_exists('show_lines', $this->data)) {
- $field_lines->setValue($this->data['show_lines']);
- }
-
- $this->fields[$field_lines->getName()] = $field_lines;
-
- // Show text as HTML.
- $field_show_as_html = (new CWidgetFieldCheckBox('show_as_html', _('Show text as HTML')))->setDefault(0);
-
- if (array_key_exists('show_as_html', $this->data)) {
- $field_show_as_html->setValue($this->data['show_as_html']);
- }
-
- $this->fields[$field_show_as_html->getName()] = $field_show_as_html;
-
- // Dynamic item.
- if ($templateid === null) {
- $dynamic_item = (new CWidgetFieldCheckBox('dynamic', _('Enable host selection')))->setDefault(WIDGET_SIMPLE_ITEM);
-
- if (array_key_exists('dynamic', $this->data)) {
- $dynamic_item->setValue($this->data['dynamic']);
- }
-
- $this->fields[$dynamic_item->getName()] = $dynamic_item;
- }
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormProblemHosts.php b/ui/include/classes/widgets/forms/CWidgetFormProblemHosts.php
deleted file mode 100644
index 9db26f80e32..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormProblemHosts.php
+++ /dev/null
@@ -1,136 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Problem hosts widget form.
- */
-class CWidgetFormProblemHosts extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_PROBLEM_HOSTS);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
-
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Exclude host groups.
- $field_exclude_groups = new CWidgetFieldMsGroup('exclude_groupids', _('Exclude host groups'));
-
- if (array_key_exists('exclude_groupids', $this->data)) {
- $field_exclude_groups->setValue($this->data['exclude_groupids']);
- }
-
- $this->fields[$field_exclude_groups->getName()] = $field_exclude_groups;
-
- // Hosts field.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Problem field.
- $field_problem = new CWidgetFieldTextBox('problem', _('Problem'));
-
- if (array_key_exists('problem', $this->data)) {
- $field_problem->setValue($this->data['problem']);
- }
-
- $this->fields[$field_problem->getName()] = $field_problem;
-
- // Severity field.
- $field_severities = new CWidgetFieldSeverities('severities', _('Severity'));
-
- if (array_key_exists('severities', $this->data)) {
- $field_severities->setValue($this->data['severities']);
- }
-
- $this->fields[$field_severities->getName()] = $field_severities;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Show suppressed problems.
- $field_show_suppressed = (new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems')))
- ->setDefault(ZBX_PROBLEM_SUPPRESSED_FALSE);
-
- if (array_key_exists('show_suppressed', $this->data)) {
- $field_show_suppressed->setValue($this->data['show_suppressed']);
- }
-
- $this->fields[$field_show_suppressed->getName()] = $field_show_suppressed;
-
- // Hide groups without problems.
- $field_hide_empty_groups = new CWidgetFieldCheckBox('hide_empty_groups', _('Hide groups without problems'));
-
- if (array_key_exists('hide_empty_groups', $this->data)) {
- $field_hide_empty_groups->setValue($this->data['hide_empty_groups']);
- }
-
- $this->fields[$field_hide_empty_groups->getName()] = $field_hide_empty_groups;
-
- // Problem display.
- $field_ext_ack = (new CWidgetFieldRadioButtonList('ext_ack', _('Problem display'), [
- EXTACK_OPTION_ALL => _('All'),
- EXTACK_OPTION_BOTH => _('Separated'),
- EXTACK_OPTION_UNACK => _('Unacknowledged only')
- ]))
- ->setDefault(EXTACK_OPTION_ALL)
- ->setFlags(CWidgetField::FLAG_ACKNOWLEDGES)
- ->setModern(true);
-
- if (array_key_exists('ext_ack', $this->data)) {
- $field_ext_ack->setValue($this->data['ext_ack']);
- }
-
- $this->fields[$field_ext_ack->getName()] = $field_ext_ack;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormProblems.php b/ui/include/classes/widgets/forms/CWidgetFormProblems.php
deleted file mode 100644
index 5236da642de..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormProblems.php
+++ /dev/null
@@ -1,243 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Problems widget form.
- */
-class CWidgetFormProblems extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_PROBLEMS);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Output information option.
- $field_show = (new CWidgetFieldRadioButtonList('show', _('Show'), [
- TRIGGERS_OPTION_RECENT_PROBLEM => _('Recent problems'),
- TRIGGERS_OPTION_IN_PROBLEM => _('Problems'),
- TRIGGERS_OPTION_ALL => _('History')
- ]))
- ->setDefault(TRIGGERS_OPTION_RECENT_PROBLEM)
- ->setModern(true);
-
- if (array_key_exists('show', $this->data)) {
- $field_show->setValue($this->data['show']);
- }
-
- $this->fields[$field_show->getName()] = $field_show;
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
-
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Exclude host groups.
- $field_exclude_groups = new CWidgetFieldMsGroup('exclude_groupids', _('Exclude host groups'));
-
- if (array_key_exists('exclude_groupids', $this->data)) {
- $field_exclude_groups->setValue($this->data['exclude_groupids']);
- }
-
- $this->fields[$field_exclude_groups->getName()] = $field_exclude_groups;
-
- // Hosts field.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Problem field.
- $field_problem = new CWidgetFieldTextBox('problem', _('Problem'));
-
- if (array_key_exists('problem', $this->data)) {
- $field_problem->setValue($this->data['problem']);
- }
-
- $this->fields[$field_problem->getName()] = $field_problem;
-
- // Severity field.
- $field_severities = new CWidgetFieldSeverities('severities', _('Severity'));
-
- if (array_key_exists('severities', $this->data)) {
- $field_severities->setValue($this->data['severities']);
- }
-
- $this->fields[$field_severities->getName()] = $field_severities;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Show tags.
- $field_show_tags = (new CWidgetFieldRadioButtonList('show_tags', _('Show tags'), [
- SHOW_TAGS_NONE => _('None'),
- SHOW_TAGS_1 => SHOW_TAGS_1,
- SHOW_TAGS_2 => SHOW_TAGS_2,
- SHOW_TAGS_3 => SHOW_TAGS_3
- ]))
- ->setDefault(SHOW_TAGS_NONE)
- ->setModern(true)
- ->setAction('var disabled = jQuery(this).filter("[value=\''.SHOW_TAGS_NONE.'\']").is(":checked");'.
- 'jQuery("#tag_priority").prop("disabled", disabled);'.
- 'jQuery("#tag_name_format input").prop("disabled", disabled)'
- );
-
- if (array_key_exists('show_tags', $this->data)) {
- $field_show_tags->setValue($this->data['show_tags']);
- }
-
- $this->fields[$field_show_tags->getName()] = $field_show_tags;
-
- // Tag name.
- $tag_format_line = (new CWidgetFieldRadioButtonList('tag_name_format', _('Tag name'), [
- TAG_NAME_FULL => _('Full'),
- TAG_NAME_SHORTENED => _('Shortened'),
- TAG_NAME_NONE => _('None')
- ]))
- ->setDefault(TAG_NAME_FULL)
- ->setModern(true);
-
- if (array_key_exists('tag_name_format', $this->data)) {
- $tag_format_line->setValue($this->data['tag_name_format']);
- }
- $this->fields[$tag_format_line->getName()] = $tag_format_line;
-
- // Tag display priority.
- $tag_priority = (new CWidgetFieldTextBox('tag_priority', _('Tag display priority')));
-
- if (array_key_exists('tag_priority', $this->data)) {
- $tag_priority->setValue($this->data['tag_priority']);
- }
- $this->fields[$tag_priority->getName()] = $tag_priority;
-
- // Show operational data.
- $field_show_opdata = (new CWidgetFieldRadioButtonList('show_opdata', _('Show operational data'), [
- OPERATIONAL_DATA_SHOW_NONE => _('None'),
- OPERATIONAL_DATA_SHOW_SEPARATELY => _('Separately'),
- OPERATIONAL_DATA_SHOW_WITH_PROBLEM => _('With problem name')
- ]))
- ->setDefault(OPERATIONAL_DATA_SHOW_NONE)
- ->setModern(true);
-
- if (array_key_exists('show_opdata', $this->data)) {
- $field_show_opdata->setValue($this->data['show_opdata']);
- }
-
- $this->fields[$field_show_opdata->getName()] = $field_show_opdata;
-
- // Show suppressed problems.
- $field_show_suppressed = (new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems')))
- ->setDefault(ZBX_PROBLEM_SUPPRESSED_FALSE);
-
- if (array_key_exists('show_suppressed', $this->data)) {
- $field_show_suppressed->setValue($this->data['show_suppressed']);
- }
-
- $this->fields[$field_show_suppressed->getName()] = $field_show_suppressed;
-
- // Show unacknowledged only.
- $field_unacknowledged = (new CWidgetFieldCheckBox('unacknowledged', _('Show unacknowledged only')))
- ->setFlags(CWidgetField::FLAG_ACKNOWLEDGES);
-
- if (array_key_exists('unacknowledged', $this->data)) {
- $field_unacknowledged->setValue($this->data['unacknowledged']);
- }
-
- $this->fields[$field_unacknowledged->getName()] = $field_unacknowledged;
-
- $sort_with_enabled_show_timeline = [
- SCREEN_SORT_TRIGGERS_TIME_DESC => true,
- SCREEN_SORT_TRIGGERS_TIME_ASC => true
- ];
-
- // Sort entries by.
- $field_sort = (new CWidgetFieldSelect('sort_triggers', _('Sort entries by'), [
- SCREEN_SORT_TRIGGERS_TIME_DESC => _('Time').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_TIME_ASC => _('Time').' ('._('ascending').')',
- SCREEN_SORT_TRIGGERS_SEVERITY_DESC => _('Severity').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_SEVERITY_ASC => _('Severity').' ('._('ascending').')',
- SCREEN_SORT_TRIGGERS_NAME_DESC => _('Problem').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_NAME_ASC => _('Problem').' ('._('ascending').')',
- SCREEN_SORT_TRIGGERS_HOST_NAME_DESC => _('Host').' ('._('descending').')',
- SCREEN_SORT_TRIGGERS_HOST_NAME_ASC => _('Host').' ('._('ascending').')'
- ]))
- ->setDefault(SCREEN_SORT_TRIGGERS_TIME_DESC);
-
- if (array_key_exists('sort_triggers', $this->data)) {
- $field_sort->setValue($this->data['sort_triggers']);
- }
-
- $this->fields[$field_sort->getName()] = $field_sort;
-
- // Show timeline.
- $field_show_timeline = (new CWidgetFieldCheckBox('show_timeline', _('Show timeline')))->setDefault(1);
-
- if (array_key_exists('show_timeline', $this->data)) {
- $field_show_timeline->setValue($this->data['show_timeline']);
- }
-
- if (!array_key_exists($field_sort->getValue(), $sort_with_enabled_show_timeline)) {
- $field_show_timeline->setFlags(CWidgetField::FLAG_DISABLED);
- }
-
- $this->fields[$field_show_timeline->getName()] = $field_show_timeline;
-
- // Show lines.
- $field_lines = (new CWidgetFieldIntegerBox('show_lines', _('Show lines'), ZBX_MIN_WIDGET_LINES,
- ZBX_MAX_WIDGET_LINES
- ))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
- ->setDefault(ZBX_DEFAULT_WIDGET_LINES);
-
- if (array_key_exists('show_lines', $this->data)) {
- $field_lines->setValue($this->data['show_lines']);
- }
-
- $this->fields[$field_lines->getName()] = $field_lines;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormProblemsBySv.php b/ui/include/classes/widgets/forms/CWidgetFormProblemsBySv.php
deleted file mode 100644
index c76820d6624..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormProblemsBySv.php
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Problems by severity widget form.
- */
-class CWidgetFormProblemsBySv extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_PROBLEMS_BY_SV);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
-
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Exclude host groups.
- $field_exclude_groups = new CWidgetFieldMsGroup('exclude_groupids', _('Exclude host groups'));
-
- if (array_key_exists('exclude_groupids', $this->data)) {
- $field_exclude_groups->setValue($this->data['exclude_groupids']);
- }
-
- $this->fields[$field_exclude_groups->getName()] = $field_exclude_groups;
-
- // Hosts field.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Problem field.
- $field_problem = new CWidgetFieldTextBox('problem', _('Problem'));
-
- if (array_key_exists('problem', $this->data)) {
- $field_problem->setValue($this->data['problem']);
- }
-
- $this->fields[$field_problem->getName()] = $field_problem;
-
- // Severity field.
- $field_severities = new CWidgetFieldSeverities('severities', _('Severity'));
-
- if (array_key_exists('severities', $this->data)) {
- $field_severities->setValue($this->data['severities']);
- }
-
- $this->fields[$field_severities->getName()] = $field_severities;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Show type.
- $field_show_type = (new CWidgetFieldRadioButtonList('show_type', _('Show'), [
- WIDGET_PROBLEMS_BY_SV_SHOW_GROUPS => _('Host groups'),
- WIDGET_PROBLEMS_BY_SV_SHOW_TOTALS => _('Totals')
- ]))
- ->setDefault(WIDGET_PROBLEMS_BY_SV_SHOW_GROUPS)
- ->setModern(true)
- ->setAction('var disabled = jQuery(this).filter("[value=\''.WIDGET_PROBLEMS_BY_SV_SHOW_GROUPS.'\']")'.
- '.is(":checked");'.
- 'jQuery("#hide_empty_groups").prop("disabled", !disabled);'.
- 'jQuery("#layout input").prop("disabled", disabled)'
- );
-
- if (array_key_exists('show_type', $this->data)) {
- $field_show_type->setValue($this->data['show_type']);
- }
-
- $this->fields[$field_show_type->getName()] = $field_show_type;
-
- // Layout.
- $field_layout = (new CWidgetFieldRadioButtonList('layout', _('Layout'), [
- STYLE_HORIZONTAL => _('Horizontal'),
- STYLE_VERTICAL => _('Vertical')
- ]))
- ->setDefault(STYLE_HORIZONTAL)
- ->setModern(true);
-
- if (array_key_exists('layout', $this->data)) {
- $field_layout->setValue($this->data['layout']);
- }
-
- if ($field_show_type->getValue() == WIDGET_PROBLEMS_BY_SV_SHOW_GROUPS) {
- $field_layout->setFlags(CWidgetField::FLAG_DISABLED);
- }
-
- $this->fields[$field_layout->getName()] = $field_layout;
-
- // Show operational data.
- $field_show_opdata = (new CWidgetFieldRadioButtonList('show_opdata', _('Show operational data'), [
- OPERATIONAL_DATA_SHOW_NONE => _('None'),
- OPERATIONAL_DATA_SHOW_SEPARATELY => _('Separately'),
- OPERATIONAL_DATA_SHOW_WITH_PROBLEM => _('With problem name')
- ]))
- ->setDefault(OPERATIONAL_DATA_SHOW_NONE)
- ->setModern(true);
-
- if (array_key_exists('show_opdata', $this->data)) {
- $field_show_opdata->setValue($this->data['show_opdata']);
- }
-
- $this->fields[$field_show_opdata->getName()] = $field_show_opdata;
-
- // Show suppressed problems.
- $field_show_suppressed = (new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems')))
- ->setDefault(ZBX_PROBLEM_SUPPRESSED_FALSE);
-
- if (array_key_exists('show_suppressed', $this->data)) {
- $field_show_suppressed->setValue($this->data['show_suppressed']);
- }
-
- $this->fields[$field_show_suppressed->getName()] = $field_show_suppressed;
-
- // Hide groups without problems.
- $field_hide_empty_groups = new CWidgetFieldCheckBox('hide_empty_groups', _('Hide groups without problems'));
-
- if (array_key_exists('hide_empty_groups', $this->data)) {
- $field_hide_empty_groups->setValue($this->data['hide_empty_groups']);
- }
-
- if ($field_show_type->getValue() == WIDGET_PROBLEMS_BY_SV_SHOW_TOTALS) {
- $field_hide_empty_groups->setFlags(CWidgetField::FLAG_DISABLED);
- }
-
- $this->fields[$field_hide_empty_groups->getName()] = $field_hide_empty_groups;
-
- // Problem display.
- $field_ext_ack = (new CWidgetFieldRadioButtonList('ext_ack', _('Problem display'), [
- EXTACK_OPTION_ALL => _('All'),
- EXTACK_OPTION_BOTH => _('Separated'),
- EXTACK_OPTION_UNACK => _('Unacknowledged only')
- ]))
- ->setDefault(EXTACK_OPTION_ALL)
- ->setFlags(CWidgetField::FLAG_ACKNOWLEDGES)
- ->setModern(true);
-
- if (array_key_exists('ext_ack', $this->data)) {
- $field_ext_ack->setValue($this->data['ext_ack']);
- }
-
- $this->fields[$field_ext_ack->getName()] = $field_ext_ack;
-
- // Show timeline.
- $field_show_timeline = (new CWidgetFieldCheckBox('show_timeline', _('Show timeline')))
- ->setDefault(1);
-
- if (array_key_exists('show_timeline', $this->data)) {
- $field_show_timeline->setValue($this->data['show_timeline']);
- }
-
- $this->fields[$field_show_timeline->getName()] = $field_show_timeline;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormSlaReport.php b/ui/include/classes/widgets/forms/CWidgetFormSlaReport.php
deleted file mode 100644
index e1a2f2705b0..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormSlaReport.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CWidgetFormSlaReport extends CWidgetForm
-{
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_SLA_REPORT);
-
- // SLA.
- $field_sla = (new CWidgetFieldMsSla('slaid', _('SLA')))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
- ->setMultiple(false);
-
- if (array_key_exists('slaid', $this->data)) {
- $field_sla->setValue($this->data['slaid']);
- }
-
- $this->fields[$field_sla->getName()] = $field_sla;
-
- // Service.
- $field_service = (new CWidgetFieldMsService('serviceid', _('Service')))
- ->setMultiple(false);
-
- if (array_key_exists('serviceid', $this->data)) {
- $field_service->setValue($this->data['serviceid']);
- }
-
- $this->fields[$field_service->getName()] = $field_service;
-
- // Show periods.
- $field_show_periods = (new CWidgetFieldIntegerBox('show_periods', _('Show periods'), 1,
- ZBX_SLA_MAX_REPORTING_PERIODS
- ))->setDefault(ZBX_SLA_DEFAULT_REPORTING_PERIODS);
-
- if (array_key_exists('show_periods', $this->data)) {
- $field_show_periods->setValue($this->data['show_periods']);
- }
-
- $this->fields[$field_show_periods->getName()] = $field_show_periods;
-
- // Date from.
- $field_date_from = new CWidgetFieldDatePicker('date_from', _('From'), true);
-
- if (array_key_exists('date_from', $this->data)) {
- $field_date_from->setValue($this->data['date_from']);
- }
-
- $this->fields[$field_date_from->getName()] = $field_date_from;
-
- // Date to.
- $field_date_to = new CWidgetFieldDatePicker('date_to', _('To'), true);
-
- if (array_key_exists('date_to', $this->data)) {
- $field_date_to->setValue($this->data['date_to']);
- }
-
- $this->fields[$field_date_to->getName()] = $field_date_to;
- }
-
- /**
- * @param bool $strict
- *
- * @return array
- */
- public function validate($strict = false): array {
- if ($errors = parent::validate($strict)) {
- return $errors;
- }
-
- $errors = [];
-
- $slaids = $this->fields['slaid']->getValue();
-
- $slas = $slaids
- ? API::Sla()->get([
- 'output' => ['timezone'],
- 'slaids' => $slaids,
- 'filter' => [
- 'status' => ZBX_SLA_STATUS_ENABLED
- ]
- ])
- : [];
-
- $sla = $slas ? $slas[0] : null;
-
- $timezone = new DateTimeZone($sla !== null && $sla['timezone'] !== ZBX_DEFAULT_TIMEZONE
- ? $sla['timezone']
- : CTimezoneHelper::getSystemTimezone()
- );
-
- $absolute_time_parser = new CAbsoluteTimeParser();
-
- $period_from = null;
-
- if ($absolute_time_parser->parse($this->fields['date_from']->getValue()) == CParser::PARSE_SUCCESS) {
- $period_from = $absolute_time_parser
- ->getDateTime(true, $timezone)
- ->getTimestamp();
-
- if ($period_from < 0 || $period_from > ZBX_MAX_DATE) {
- $period_from = null;
-
- $errors[] = _s('Incorrect value for field "%1$s": %2$s.', _s('From'), _('a date is expected'));
- }
- }
-
- $period_to = null;
-
- if ($absolute_time_parser->parse($this->fields['date_to']->getValue()) == CParser::PARSE_SUCCESS) {
- $period_to = $absolute_time_parser
- ->getDateTime(false, $timezone)
- ->getTimestamp();
-
- if ($period_to < 0 || $period_to > ZBX_MAX_DATE) {
- $period_to = null;
-
- $errors[] = _s('Incorrect value for field "%1$s": %2$s.', _s('To'), _('a date is expected'));
- }
- }
-
- if ($period_from !== null && $period_to !== null && $period_to <= $period_from) {
- $errors[] = _s('"%1$s" date must be less than "%2$s" date.', _('From'), _('To'));
- }
-
- return $errors;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php b/ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php
deleted file mode 100644
index ca4f60adc92..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormSvgGraph.php
+++ /dev/null
@@ -1,635 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-class CWidgetFormSvgGraph extends CWidgetForm {
-
- private const WIDGET_ITEM_PERCENTILE_MIN = 1;
- private const WIDGET_ITEM_PERCENTILE_MAX = 100;
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_SVG_GRAPH);
-
- $this->data = self::convertDottedKeys($this->data);
-
- $this->initDataSetFields();
- $this->initDisplayingOptionsFields();
- $this->initTimePeriodFields();
- $this->initAxesFields();
- $this->initLegendFields();
- $this->initProblemsFields();
- $this->initOverridesFields();
- }
-
- /**
- * Validate form fields.
- *
- * @param bool $strict Enables more strict validation of the form fields.
- * Must be enabled for validation of input parameters in the widget configuration form.
- *
- * @throws Exception
- *
- * @return array
- */
- public function validate($strict = false): array {
- $errors = parent::validate($strict);
-
- $number_parser_w_suffix = new CNumberParser(['with_size_suffix' => true, 'with_time_suffix' => true]);
- $number_parser_wo_suffix = new CNumberParser();
-
- // Percentiles
- if ($this->fields['percentile_left']->getValue() == SVG_GRAPH_PERCENTILE_LEFT_ON) {
- $percentile_left_value = $this->fields['percentile_left_value']->getValue();
-
- if ($percentile_left_value !== '') {
- $percentile_left_value_calculated =
- $number_parser_wo_suffix->parse($percentile_left_value) == CParser::PARSE_SUCCESS
- ? $number_parser_wo_suffix->calcValue()
- : null;
-
- if ($percentile_left_value_calculated === null
- || $percentile_left_value_calculated < self::WIDGET_ITEM_PERCENTILE_MIN
- || $percentile_left_value_calculated > self::WIDGET_ITEM_PERCENTILE_MAX) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Percentile line (left)'),
- _s('value must be between "%1$s" and "%2$s"', self::WIDGET_ITEM_PERCENTILE_MIN,
- self::WIDGET_ITEM_PERCENTILE_MAX
- )
- );
- }
- }
- }
-
- if ($this->fields['percentile_right']->getValue() == SVG_GRAPH_PERCENTILE_RIGHT_ON) {
- $percentile_right_value = $this->fields['percentile_right_value']->getValue();
-
- if ($percentile_right_value !== '') {
- $percentile_right_value_calculated =
- $number_parser_wo_suffix->parse($percentile_right_value) == CParser::PARSE_SUCCESS
- ? $number_parser_wo_suffix->calcValue()
- : null;
-
- if ($percentile_right_value_calculated === null
- || $percentile_right_value_calculated < self::WIDGET_ITEM_PERCENTILE_MIN
- || $percentile_right_value_calculated > self::WIDGET_ITEM_PERCENTILE_MAX) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Percentile line (right)'),
- _s('value must be between "%1$s" and "%2$s"', self::WIDGET_ITEM_PERCENTILE_MIN,
- self::WIDGET_ITEM_PERCENTILE_MAX
- )
- );
- }
- }
- }
-
- // Test graph custom time period.
- if ($this->fields['graph_time']->getValue() == SVG_GRAPH_CUSTOM_TIME) {
- $errors = array_merge($errors, self::validateTimeSelectorPeriod($this->fields['time_from']->getValue(),
- $this->fields['time_to']->getValue()
- ));
- }
-
- // Validate Min/Max values in Axes tab.
- if ($this->fields['lefty']->getValue() == SVG_GRAPH_AXIS_SHOW) {
- $lefty_min =
- $number_parser_w_suffix->parse($this->fields['lefty_min']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- $lefty_max =
- $number_parser_w_suffix->parse($this->fields['lefty_max']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- if ($lefty_min !== '' && $lefty_max !== '' && $lefty_min >= $lefty_max) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Left Y').'/'._('Max'),
- _('Y axis MAX value must be greater than Y axis MIN value')
- );
- }
- }
-
- if ($this->fields['righty']->getValue() == SVG_GRAPH_AXIS_SHOW) {
- $righty_min =
- $number_parser_w_suffix->parse($this->fields['righty_min']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- $righty_max =
- $number_parser_w_suffix->parse($this->fields['righty_max']->getValue()) == CParser::PARSE_SUCCESS
- ? $number_parser_w_suffix->calcValue()
- : '';
-
- if ($righty_min !== '' && $righty_max !== '' && $righty_min >= $righty_max) {
- $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Right Y').'/'._('Max'),
- _('Y axis MAX value must be greater than Y axis MIN value')
- );
- }
- }
-
- return $errors;
- }
-
- /**
- * Check if widget configuration is set to use overridden time.
- *
- * @param array $fields Widget configuration fields.
- *
- * @return bool
- */
- public static function hasOverrideTime(array $fields): bool {
- return array_key_exists('graph_time', $fields) && $fields['graph_time'] == SVG_GRAPH_CUSTOM_TIME;
- }
-
- private function initDataSetFields(): void {
- $field_ds = (new CWidgetFieldGraphDataSet('ds', _('Data set')))->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if (array_key_exists('ds', $this->data)) {
- $field_ds->setValue($this->data['ds']);
- }
-
- $this->fields[$field_ds->getName()] = $field_ds;
- }
-
- private function initDisplayingOptionsFields(): void {
- // History data selection.
- $field_data_source = (new CWidgetFieldRadioButtonList('source', _('History data selection'), [
- SVG_GRAPH_DATA_SOURCE_AUTO => _x('Auto', 'history source selection method'),
- SVG_GRAPH_DATA_SOURCE_HISTORY => _('History'),
- SVG_GRAPH_DATA_SOURCE_TRENDS => _('Trends')
- ]))
- ->setDefault(SVG_GRAPH_DATA_SOURCE_AUTO)
- ->setModern(true);
-
- if (array_key_exists('source', $this->data)) {
- $field_data_source->setValue($this->data['source']);
- }
-
- $this->fields[$field_data_source->getName()] = $field_data_source;
-
- // Simple triggers.
- $field_simple_triggers = new CWidgetFieldCheckBox('simple_triggers', _('Simple triggers'));
-
- if (array_key_exists('simple_triggers', $this->data)) {
- $field_simple_triggers->setValue($this->data['simple_triggers']);
- }
-
- $this->fields[$field_simple_triggers->getName()] = $field_simple_triggers;
-
- // Working time.
- $field_working_time = new CWidgetFieldCheckBox('working_time', _('Working time'));
-
- if (array_key_exists('working_time', $this->data)) {
- $field_working_time->setValue($this->data['working_time']);
- }
-
- $this->fields[$field_working_time->getName()] = $field_working_time;
-
- // Percentile line left.
- $field_percentile_left = new CWidgetFieldCheckBox('percentile_left', _('Percentile line (left)'));
-
- if (array_key_exists('percentile_left', $this->data)) {
- $field_percentile_left->setValue($this->data['percentile_left']);
- }
-
- $this->fields[$field_percentile_left->getName()] = $field_percentile_left;
-
- // Percentile line left value.
- $field_percentile_left_value = (new CWidgetFieldTextBox('percentile_left_value', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_percentile_left->getValue() != SVG_GRAPH_PERCENTILE_LEFT_ON) {
- $field_percentile_left_value->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('percentile_left_value', $this->data)) {
- $field_percentile_left_value->setValue($this->data['percentile_left_value']);
- }
-
- $this->fields[$field_percentile_left_value->getName()] = $field_percentile_left_value;
-
- // Percentile line right.
- $field_percentile_right = new CWidgetFieldCheckBox('percentile_right', _('Percentile line (right)'));
-
- if (array_key_exists('percentile_right', $this->data)) {
- $field_percentile_right->setValue($this->data['percentile_right']);
- }
-
- $this->fields[$field_percentile_right->getName()] = $field_percentile_right;
-
- // Percentile line right value.
- $field_percentile_right_value = (new CWidgetFieldTextBox('percentile_right_value', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_percentile_right->getValue() != SVG_GRAPH_PERCENTILE_RIGHT_ON) {
- $field_percentile_right_value->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('percentile_right_value', $this->data)) {
- $field_percentile_right_value->setValue($this->data['percentile_right_value']);
- }
-
- $this->fields[$field_percentile_right_value->getName()] = $field_percentile_right_value;
- }
-
- private function initTimePeriodFields(): void {
- // Checkbox to specify either relative dashboard time or widget's own time.
- $field_graph_time = new CWidgetFieldCheckBox('graph_time', _('Set custom time period'));
-
- if (array_key_exists('graph_time', $this->data)) {
- $field_graph_time->setValue($this->data['graph_time']);
- }
-
- $this->fields[$field_graph_time->getName()] = $field_graph_time;
-
- // Date from.
- $field_time_from = (new CWidgetFieldDatePicker('time_from', _('From'), false))
- ->setDefault('now-1h')
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if ($field_graph_time->getValue() != SVG_GRAPH_CUSTOM_TIME) {
- $field_time_from->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('time_from', $this->data)) {
- $field_time_from->setValue($this->data['time_from']);
- }
-
- $this->fields[$field_time_from->getName()] = $field_time_from;
-
- // Time to.
- $field_time_to = (new CWidgetFieldDatePicker('time_to', _('To'), false))
- ->setDefault('now')
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if ($field_graph_time->getValue() != SVG_GRAPH_CUSTOM_TIME) {
- $field_time_to->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('time_to', $this->data)) {
- $field_time_to->setValue($this->data['time_to']);
- }
-
- $this->fields[$field_time_to->getName()] = $field_time_to;
- }
-
- private function initAxesFields(): void {
- // Show left Y axis.
- $field_lefty = (new CWidgetFieldCheckBox('lefty', _('Left Y'), _('Show')))->setDefault(SVG_GRAPH_AXIS_SHOW);
-
- if (array_key_exists('lefty', $this->data)) {
- $field_lefty->setValue($this->data['lefty']);
- }
-
- $this->fields[$field_lefty->getName()] = $field_lefty;
-
- // Min value on left Y axis.
- $field_lefty_min = (new CWidgetFieldNumericBox('lefty_min', _('Min')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Left Y').'/'._('Min'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_lefty_min->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_min', $this->data)) {
- $field_lefty_min->setValue($this->data['lefty_min']);
- }
-
- $this->fields[$field_lefty_min->getName()] = $field_lefty_min;
-
- // Max value on left Y axis.
- $field_lefty_max = (new CWidgetFieldNumericBox('lefty_max', _('Max')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Left Y').'/'._('Max'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_lefty_max->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_max', $this->data)) {
- $field_lefty_max->setValue($this->data['lefty_max']);
- }
-
- $this->fields[$field_lefty_max->getName()] = $field_lefty_max;
-
- // Specify the type of units on left Y axis.
- $field_lefty_units = (new CWidgetFieldSelect('lefty_units', _('Units'), [
- SVG_GRAPH_AXIS_UNITS_AUTO => _x('Auto', 'history source selection method'),
- SVG_GRAPH_AXIS_UNITS_STATIC => _x('Static', 'history source selection method')
- ]))->setDefault(SVG_GRAPH_AXIS_UNITS_AUTO);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_lefty_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_units', $this->data)) {
- $field_lefty_units->setValue($this->data['lefty_units']);
- }
-
- $this->fields[$field_lefty_units->getName()] = $field_lefty_units;
-
- // Static units on left Y axis.
- $field_lefty_static_units = (new CWidgetFieldTextBox('lefty_static_units', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_lefty->getValue() != SVG_GRAPH_AXIS_SHOW
- || $field_lefty_units->getValue() != SVG_GRAPH_AXIS_UNITS_STATIC) {
- $field_lefty_static_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('lefty_static_units', $this->data)) {
- $field_lefty_static_units->setValue($this->data['lefty_static_units']);
- }
-
- $this->fields[$field_lefty_static_units->getName()] = $field_lefty_static_units;
-
- // Show right Y axis.
- $field_righty = (new CWidgetFieldCheckBox('righty', _('Right Y'), _('Show')))->setDefault(SVG_GRAPH_AXIS_SHOW);
-
- if (array_key_exists('righty', $this->data)) {
- $field_righty->setValue($this->data['righty']);
- }
-
- $this->fields[$field_righty->getName()] = $field_righty;
-
- // Min value on right Y axis.
- $field_righty_min = (new CWidgetFieldNumericBox('righty_min', _('Min')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Right Y').'/'._('Min'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_righty_min->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_min', $this->data)) {
- $field_righty_min->setValue($this->data['righty_min']);
- }
-
- $this->fields[$field_righty_min->getName()] = $field_righty_min;
-
- // Max value on right Y axis.
- $field_righty_max = (new CWidgetFieldNumericBox('righty_max', _('Max')))
- ->setPlaceholder(_('calculated'))
- ->setFullName(_('Right Y').'/'._('Max'))
- ->setWidth(ZBX_TEXTAREA_SMALL_WIDTH);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_righty_max->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_max', $this->data)) {
- $field_righty_max->setValue($this->data['righty_max']);
- }
-
- $this->fields[$field_righty_max->getName()] = $field_righty_max;
-
- // Specify the type of units on right Y axis.
- $field_righty_units = (new CWidgetFieldSelect('righty_units', _('Units'), [
- SVG_GRAPH_AXIS_UNITS_AUTO => _x('Auto', 'history source selection method'),
- SVG_GRAPH_AXIS_UNITS_STATIC => _x('Static', 'history source selection method')
- ]))->setDefault(SVG_GRAPH_AXIS_UNITS_AUTO);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW) {
- $field_righty_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_units', $this->data)) {
- $field_righty_units->setValue($this->data['righty_units']);
- }
-
- $this->fields[$field_righty_units->getName()] = $field_righty_units;
-
- // Static units on right Y axis.
- $field_righty_static_units = (new CWidgetFieldTextBox('righty_static_units', null))
- ->setPlaceholder(_('value'))
- ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
-
- if ($field_righty->getValue() != SVG_GRAPH_AXIS_SHOW
- || $field_righty_units->getValue() != SVG_GRAPH_AXIS_UNITS_STATIC) {
- $field_righty_static_units->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('righty_static_units', $this->data)) {
- $field_righty_static_units->setValue($this->data['righty_static_units']);
- }
-
- $this->fields[$field_righty_static_units->getName()] = $field_righty_static_units;
-
- // Show X axis.
- $field_axisx = (new CWidgetFieldCheckBox('axisx', _('X-Axis'), _('Show')))->setDefault(SVG_GRAPH_AXIS_SHOW);
-
- if (array_key_exists('axisx', $this->data)) {
- $field_axisx->setValue($this->data['axisx']);
- }
-
- $this->fields[$field_axisx->getName()] = $field_axisx;
- }
-
- private function initLegendFields(): void {
- /**
- * Legend tab.
- *
- * Contains check-box field to show/hide legend and field to specify number of lines in which legend is shown.
- */
-
- $field_legend = (new CWidgetFieldCheckBox('legend', _('Show legend')))->setDefault(SVG_GRAPH_LEGEND_ON);
-
- if (array_key_exists('legend', $this->data)) {
- $field_legend->setValue($this->data['legend']);
- }
-
- $this->fields[$field_legend->getName()] = $field_legend;
-
- // Show legend statistic.
- $field_legend_statistic = (new CWidgetFieldCheckBox('legend_statistic', _('Display min/max/avg')))
- ->setDefault(SVG_GRAPH_LEGEND_STATISTIC_OFF);
-
- if ($field_legend->getValue() == SVG_GRAPH_LEGEND_OFF) {
- $field_legend_statistic->setFlags(CWidgetField::FLAG_DISABLED);
- }
- if (array_key_exists('legend_statistic', $this->data)) {
- $field_legend_statistic->setValue($this->data['legend_statistic']);
- }
-
- $this->fields[$field_legend_statistic->getName()] = $field_legend_statistic;
-
- // Number of lines.
- $field_legend_lines = (new CWidgetFieldRangeControl('legend_lines', _('Number of rows'),
- SVG_GRAPH_LEGEND_LINES_MIN, SVG_GRAPH_LEGEND_LINES_MAX
- ))->setDefault(SVG_GRAPH_LEGEND_LINES_MIN);
-
- if ($field_legend->getValue() == SVG_GRAPH_LEGEND_OFF) {
- $field_legend_lines->setFlags(CWidgetField::FLAG_DISABLED);
- }
- if (array_key_exists('legend_lines', $this->data)) {
- $field_legend_lines->setValue($this->data['legend_lines']);
- }
-
- $this->fields[$field_legend_lines->getName()] = $field_legend_lines;
-
- // Number of columns.
- $field_legend_columns = (new CWidgetFieldRangeControl('legend_columns', _('Number of columns'),
- SVG_GRAPH_LEGEND_COLUMNS_MIN, SVG_GRAPH_LEGEND_COLUMNS_MAX
- ))->setDefault(SVG_GRAPH_LEGEND_COLUMNS_MAX);
-
- if ($field_legend_statistic->getValue() == SVG_GRAPH_LEGEND_STATISTIC_ON) {
- $field_legend_columns->setFlags(CWidgetField::FLAG_DISABLED);
- }
- if (array_key_exists('legend_columns', $this->data)) {
- $field_legend_columns->setValue($this->data['legend_columns']);
- }
-
- $this->fields[$field_legend_columns->getName()] = $field_legend_columns;
- }
-
- private function initProblemsFields(): void {
- // Checkbox: Selected items only.
- $field_show_problems = new CWidgetFieldCheckBox('show_problems', _('Show problems'));
-
- if (array_key_exists('show_problems', $this->data)) {
- $field_show_problems->setValue($this->data['show_problems']);
- }
-
- $this->fields[$field_show_problems->getName()] = $field_show_problems;
-
- // Checkbox: Selected items only.
- $field_problems = (new CWidgetFieldCheckBox('graph_item_problems', _('Selected items only')))
- ->setDefault(SVG_GRAPH_SELECTED_ITEM_PROBLEMS);
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_problems->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('graph_item_problems', $this->data)) {
- $field_problems->setValue($this->data['graph_item_problems']);
- }
-
- $this->fields[$field_problems->getName()] = $field_problems;
-
- // Problem hosts.
- $field_problemhosts = (new CWidgetFieldHostPatternSelect('problemhosts', _('Problem hosts')))
- ->setPlaceholder(_('host pattern'));
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_problemhosts->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('problemhosts', $this->data)) {
- $field_problemhosts->setValue($this->data['problemhosts']);
- }
-
- $this->fields[$field_problemhosts->getName()] = $field_problemhosts;
-
- // Severity checkboxes list.
- $field_severities = new CWidgetFieldSeverities('severities', _('Severity'));
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_severities->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('severities', $this->data)) {
- $field_severities->setValue($this->data['severities']);
- }
-
- $this->fields[$field_severities->getName()] = $field_severities;
-
- // Problem name input-text field.
- $field_problem_name = (new CWidgetFieldTextBox('problem_name', _('Problem')))
- ->setPlaceholder(_('problem pattern'));
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_problem_name->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('problem_name', $this->data)) {
- $field_problem_name->setValue($this->data['problem_name']);
- }
-
- $this->fields[$field_problem_name->getName()] = $field_problem_name;
-
- // Problem tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_evaltype->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Problem tags field.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if ($field_show_problems->getValue() != SVG_GRAPH_PROBLEMS_SHOW) {
- $field_tags->setFlags(CWidgetField::FLAG_DISABLED);
- }
- elseif (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
- }
-
- private function initOverridesFields(): void {
- $field_or = (new CWidgetFieldGraphOverride('or', _('Overrides')))->setFlags(CWidgetField::FLAG_NOT_EMPTY);
-
- if (array_key_exists('or', $this->data)) {
- $field_or->setValue($this->data['or']);
- }
-
- $this->fields[$field_or->getName()] = $field_or;
- }
-
- /**
- * Validate "from" and "to" parameters for allowed period.
- *
- * @param string $from
- * @param string $to
- *
- * @return array
- */
- private static function validateTimeSelectorPeriod(string $from, string $to): array {
- $errors = [];
- $ts = [];
- $ts['now'] = time();
- $range_time_parser = new CRangeTimeParser();
-
- foreach (['from' => $from, 'to' => $to] as $field => $value) {
- $range_time_parser->parse($value);
- $ts[$field] = $range_time_parser
- ->getDateTime($field === 'from')
- ->getTimestamp();
- }
-
- $period = $ts['to'] - $ts['from'] + 1;
- $range_time_parser->parse('now-'.CSettingsHelper::get(CSettingsHelper::MAX_PERIOD));
- $max_period = 1 + $ts['now'] - $range_time_parser
- ->getDateTime(true)
- ->getTimestamp();
-
- if ($period < ZBX_MIN_PERIOD) {
- $errors[] = _n('Minimum time period to display is %1$s minute.',
- 'Minimum time period to display is %1$s minutes.', (int) (ZBX_MIN_PERIOD / SEC_PER_MIN)
- );
- }
- elseif ($period > $max_period) {
- $errors[] = _n('Maximum time period to display is %1$s day.',
- 'Maximum time period to display is %1$s days.', (int) round($max_period / SEC_PER_DAY)
- );
- }
-
- return $errors;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormSystemInfo.php b/ui/include/classes/widgets/forms/CWidgetFormSystemInfo.php
deleted file mode 100644
index 7a2f318bdcc..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormSystemInfo.php
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * System information widget form.
- */
-class CWidgetFormSystemInfo extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_SYSTEM_INFO);
-
- $field_info_type = (new CWidgetFieldRadioButtonList('info_type', _('Show'), [
- ZBX_SYSTEM_INFO_SERVER_STATS => _('System stats'),
- ZBX_SYSTEM_INFO_HAC_STATUS => _('High availability nodes')
- ]))
- ->setDefault(ZBX_SYSTEM_INFO_SERVER_STATS)
- ->setModern(true);
-
- if (array_key_exists('info_type', $this->data)) {
- $field_info_type->setValue($this->data['info_type']);
- }
-
- $this->fields[$field_info_type->getName()] = $field_info_type;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormTopHosts.php b/ui/include/classes/widgets/forms/CWidgetFormTopHosts.php
deleted file mode 100644
index a594b86e201..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormTopHosts.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2021 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Top hosts data widget form.
- */
-class CWidgetFormTopHosts extends CWidgetForm {
-
- const ORDER_TOPN = 2;
- const ORDER_BOTTOMN = 3;
-
- const DEFAULT_HOSTS_COUNT = 10;
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_TOP_HOSTS);
-
- $this->data = self::convertDottedKeys($this->data);
-
- if (array_key_exists('columnsthresholds', $this->data)) {
- foreach ($this->data['columnsthresholds'] as $column_index => $fields) {
- $this->data['columns'][$column_index]['thresholds'] = [];
-
- foreach ($fields as $field_key => $field_values) {
- foreach ($field_values as $value_index => $value) {
- $this->data['columns'][$column_index]['thresholds'][$value_index][$field_key] = $value;
- }
- }
- }
- }
-
- // Apply sortable changes to data.
- if (array_key_exists('sortorder', $this->data)) {
- if (array_key_exists('column', $this->data) && array_key_exists('columns', $this->data['sortorder'])) {
- // Fix selected column index when columns were sorted.
- $this->data['column'] = array_search($this->data['column'], $this->data['sortorder']['columns']);
- }
-
- foreach ($this->data['sortorder'] as $key => $sortorder) {
- if (!array_key_exists($key, $this->data)) {
- continue;
- }
-
- $sorted = [];
-
- foreach ($sortorder as $index) {
- $sorted[] = $this->data[$key][$index];
- }
-
- $this->data[$key] = $sorted;
- }
- }
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
-
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Hosts.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Host tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Columns definition table.
- $field_columns = (new CWidgetFieldColumnsList('columns', _('Columns')))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK);
- $field_column_values = [];
-
- if (array_key_exists('columns', $this->data)) {
- $field_columns->setValue($this->data['columns']);
-
- foreach ($this->data['columns'] as $key => $value) {
- if ($value['data'] == CWidgetFieldColumnsList::DATA_ITEM_VALUE) {
- $field_column_values[$key] = ($value['name'] === '') ? $value['item'] : $value['name'];
- }
- }
- }
-
- $this->fields[$field_columns->getName()] = $field_columns;
-
- // Order.
- $field_order = (new CWidgetFieldRadioButtonList('order', _('Order'), [
- self::ORDER_TOPN => _('Top N'),
- self::ORDER_BOTTOMN => _('Bottom N')
- ]))
- ->setDefault(self::ORDER_TOPN)
- ->setModern(true);
-
- if (array_key_exists('order', $this->data)) {
- $field_order->setValue($this->data['order']);
- }
-
- $this->fields[$field_order->getName()] = $field_order;
-
- // Field column.
- $field_column = (new CWidgetFieldSelect('column', _('Order column'), $field_column_values))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK);
-
- if (array_key_exists('column', $this->data)) {
- $field_column->setValue($this->data['column']);
- }
- else if ($field_column_values) {
- reset($field_column_values);
- $field_column->setValue((int) key($field_column_values));
- }
-
- $this->fields[$field_column->getName()] = $field_column;
-
- // Host count.
- $field_count = (new CWidgetFieldIntegerBox('count', _('Host count'), ZBX_MIN_WIDGET_LINES,
- ZBX_MAX_WIDGET_LINES
- ))
- ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
- ->setDefault(self::DEFAULT_HOSTS_COUNT);
-
- if (array_key_exists('count', $this->data)) {
- $field_count->setValue((int) $this->data['count']);
- }
-
- $this->fields[$field_count->getName()] = $field_count;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormTrigOver.php b/ui/include/classes/widgets/forms/CWidgetFormTrigOver.php
deleted file mode 100644
index e4a1e76ca0c..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormTrigOver.php
+++ /dev/null
@@ -1,113 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Trigger overview widget form.
- */
-class CWidgetFormTrigOver extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_TRIG_OVER);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Output information option.
- $field_show = (new CWidgetFieldRadioButtonList('show', _('Show'), [
- TRIGGERS_OPTION_RECENT_PROBLEM => _('Recent problems'),
- TRIGGERS_OPTION_IN_PROBLEM => _('Problems'),
- TRIGGERS_OPTION_ALL => _('Any')
- ]))
- ->setDefault(TRIGGERS_OPTION_RECENT_PROBLEM)
- ->setModern(true);
-
- if (array_key_exists('show', $this->data)) {
- $field_show->setValue($this->data['show']);
- }
-
- $this->fields[$field_show->getName()] = $field_show;
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
-
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Hosts.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Show suppressed problems.
- $field_show_suppressed = (new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems')))
- ->setDefault(ZBX_PROBLEM_SUPPRESSED_FALSE);
-
- if (array_key_exists('show_suppressed', $this->data)) {
- $field_show_suppressed->setValue($this->data['show_suppressed']);
- }
-
- $this->fields[$field_show_suppressed->getName()] = $field_show_suppressed;
-
- // Hosts names location.
- $field_style = (new CWidgetFieldRadioButtonList('style', _('Hosts location'), [
- STYLE_LEFT => _('Left'),
- STYLE_TOP => _('Top')
- ]))
- ->setDefault(STYLE_LEFT)
- ->setModern(true);
-
- if (array_key_exists('style', $this->data)) {
- $field_style->setValue($this->data['style']);
- }
-
- $this->fields[$field_style->getName()] = $field_style;
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormUrl.php b/ui/include/classes/widgets/forms/CWidgetFormUrl.php
deleted file mode 100644
index 2be6bd78530..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormUrl.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * URL widget form.
- */
-class CWidgetFormUrl extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_URL);
-
- // URL field.
- $field_url = (new CWidgetFieldUrl('url', _('URL')))
- ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK);
-
- if (array_key_exists('url', $this->data)) {
- $field_url->setValue($this->data['url']);
- }
-
- $this->fields[$field_url->getName()] = $field_url;
-
- // Dynamic item.
- if ($templateid === null) {
- $field_dynamic = (new CWidgetFieldCheckBox('dynamic', _('Enable host selection')))->setDefault(WIDGET_SIMPLE_ITEM);
-
- if (array_key_exists('dynamic', $this->data)) {
- $field_dynamic->setValue($this->data['dynamic']);
- }
-
- $this->fields[$field_dynamic->getName()] = $field_dynamic;
- }
- }
-}
diff --git a/ui/include/classes/widgets/forms/CWidgetFormWeb.php b/ui/include/classes/widgets/forms/CWidgetFormWeb.php
deleted file mode 100644
index 00b33dc89e7..00000000000
--- a/ui/include/classes/widgets/forms/CWidgetFormWeb.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Web widget form.
- */
-class CWidgetFormWeb extends CWidgetForm {
-
- public function __construct($data, $templateid) {
- parent::__construct($data, $templateid, WIDGET_WEB);
-
- $this->data = self::convertDottedKeys($this->data);
-
- // Host groups.
- $field_groups = new CWidgetFieldMsGroup('groupids', _('Host groups'));
-
- if (array_key_exists('groupids', $this->data)) {
- $field_groups->setValue($this->data['groupids']);
- }
-
- $this->fields[$field_groups->getName()] = $field_groups;
-
- // Exclude host groups.
- $field_exclude_groups = new CWidgetFieldMsGroup('exclude_groupids', _('Exclude host groups'));
-
- if (array_key_exists('exclude_groupids', $this->data)) {
- $field_exclude_groups->setValue($this->data['exclude_groupids']);
- }
-
- $this->fields[$field_exclude_groups->getName()] = $field_exclude_groups;
-
- // Hosts field.
- $field_hosts = new CWidgetFieldMsHost('hostids', _('Hosts'));
- $field_hosts->setFilterPreselect('groupids_');
-
- if (array_key_exists('hostids', $this->data)) {
- $field_hosts->setValue($this->data['hostids']);
- }
-
- $this->fields[$field_hosts->getName()] = $field_hosts;
-
- // Tag evaltype (And/Or).
- $field_evaltype = (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
- TAG_EVAL_TYPE_AND_OR => _('And/Or'),
- TAG_EVAL_TYPE_OR => _('Or')
- ]))
- ->setDefault(TAG_EVAL_TYPE_AND_OR)
- ->setModern(true);
-
- if (array_key_exists('evaltype', $this->data)) {
- $field_evaltype->setValue($this->data['evaltype']);
- }
-
- $this->fields[$field_evaltype->getName()] = $field_evaltype;
-
- // Tags array: tag, operator and value. No label, because it belongs to previous group.
- $field_tags = new CWidgetFieldTags('tags', '');
-
- if (array_key_exists('tags', $this->data)) {
- $field_tags->setValue($this->data['tags']);
- }
-
- $this->fields[$field_tags->getName()] = $field_tags;
-
- // Show hosts in maintenance.
- $field_maintenance = (new CWidgetFieldCheckBox('maintenance', _('Show hosts in maintenance')))
- ->setDefault(1);
-
- if (array_key_exists('maintenance', $this->data)) {
- $field_maintenance->setValue($this->data['maintenance']);
- }
-
- $this->fields[$field_maintenance->getName()] = $field_maintenance;
- }
-}
diff --git a/ui/include/classes/widgets/views/js/widget.clock.form.view.js.php b/ui/include/classes/widgets/views/js/widget.clock.form.view.js.php
deleted file mode 100644
index c7469b37ab3..00000000000
--- a/ui/include/classes/widgets/views/js/widget.clock.form.view.js.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-?>
-
-
-window.widget_clock_form = new class {
-
- init() {
- this.form = document.getElementById('widget-dialogue-form');
- this.time_type = document.getElementById('time_type');
- this.clock_type = document.getElementById('clock_type');
-
- this.show_date = document.getElementById('show_1');
- this.show_time = document.getElementById('show_2');
- this.show_tzone = document.getElementById('show_3');
-
- this.advanced_configuration = document.getElementById('adv_conf');
-
- for (const colorpicker of this.form.querySelectorAll('.<?= ZBX_STYLE_COLOR_PICKER ?> input')) {
- $(colorpicker).colorpicker({
- appendTo: '.overlay-dialogue-body',
- use_default: true,
- onUpdate: window.setIndicatorColor
- });
- }
-
- this.time_type.addEventListener('change', () => {
- ZABBIX.Dashboard.reloadWidgetProperties();
- this.updateForm();
- });
-
- for (const checkbox of this.clock_type.querySelectorAll('input')) {
- checkbox.addEventListener('change', () => this.updateForm());
- }
-
- const show = [this.show_date, this.show_time, this.show_tzone];
-
- for (const checkbox of show) {
- checkbox.addEventListener('change', (e) => {
- if (show.filter((checkbox) => checkbox.checked).length > 0) {
- this.updateForm();
- }
- else {
- e.target.checked = true;
- }
- });
- }
-
- this.advanced_configuration.addEventListener('change', () => this.updateForm());
-
- this.updateForm();
- }
-
- updateForm() {
- const is_digital = this.clock_type.querySelector('input:checked').value == <?= WIDGET_CLOCK_TYPE_DIGITAL ?>;
-
- const show_date_row = is_digital && this.advanced_configuration.checked && this.show_date.checked;
- const show_time_row = is_digital && this.advanced_configuration.checked && this.show_time.checked;
- const show_tzone_row = is_digital && this.advanced_configuration.checked && this.show_tzone.checked;
-
- for (const element of this.form.querySelectorAll('.js-row-show, .js-row-adv-conf')) {
- element.style.display = is_digital ? '' : 'none';
- }
-
- for (const element of this.form.querySelectorAll('.js-row-bg-color')) {
- element.style.display = is_digital && this.advanced_configuration.checked ? '' : 'none';
- }
-
- for (const element of this.form.querySelectorAll('.js-row-date')) {
- element.style.display = show_date_row ? '' : 'none';
- }
-
- for (const element of this.form.querySelectorAll('.js-row-time')) {
- element.style.display = show_time_row ? '' : 'none';
- }
-
- for (const element of this.form.querySelectorAll('.js-row-tzone')) {
- element.style.display = show_tzone_row ? '' : 'none';
- }
-
- for (const element of this.form.querySelectorAll('.js-row-tzone-timezone, .js-row-tzone-format')) {
- element.style.display = this.time_type.value != <?= TIME_TYPE_HOST ?> ? '' : 'none';
- }
- }
-};
diff --git a/ui/include/classes/widgets/views/widget.clock.form.view.php b/ui/include/classes/widgets/views/widget.clock.form.view.php
deleted file mode 100644
index 23232749fb1..00000000000
--- a/ui/include/classes/widgets/views/widget.clock.form.view.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Clock widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [$this->readJsFile('../../../include/classes/widgets/views/js/widget.clock.form.view.js.php')];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Time type.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['time_type']),
- new CFormField(CWidgetHelper::getSelect($fields['time_type']))
-]);
-
-// Item.
-if (array_key_exists('itemid', $fields)) {
- $field_itemid = CWidgetHelper::getItem($fields['itemid'], $data['captions']['ms']['items']['itemid'],
- $form->getName()
- );
- $form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['itemid']),
- new CFormField($field_itemid)
- ]);
- $scripts[] = $field_itemid->getPostJS();
-}
-
-// Clock type.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['clock_type']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['clock_type']))
-]);
-
-// Show.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show'])->addClass('js-row-show'),
- (new CFormField(
- CWidgetHelper::getCheckBoxList($fields['show'], [
- WIDGET_CLOCK_SHOW_DATE => _('Date'),
- WIDGET_CLOCK_SHOW_TIME => _('Time'),
- WIDGET_CLOCK_SHOW_TIMEZONE => _('Time zone')
- ])
- ))->addClass('js-row-show')
-]);
-
-// Advanced configuration.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['adv_conf'])->addClass('js-row-adv-conf'),
- (new CFormField(
- CWidgetHelper::getCheckBox($fields['adv_conf'])
- ))->addClass('js-row-adv-conf')
-]);
-
-// Background color.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['bg_color'])->addClass('js-row-bg-color'),
- (new CFormField(
- CWidgetHelper::getColor($fields['bg_color'], true)
- ))->addClass('js-row-bg-color')
-]);
-
-// Date.
-$form_grid->addItem([
- (new CLabel(_('Date')))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL)
- ->addClass('js-row-date'),
- (new CDiv([
- CWidgetHelper::getLabel($fields['date_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['date_size']), '%']))->addClass('field-size'),
-
- CWidgetHelper::getLabel($fields['date_bold']),
- new CFormField(CWidgetHelper::getCheckBox($fields['date_bold'])),
-
- CWidgetHelper::getLabel($fields['date_color'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getColor($fields['date_color'], true))
- ]))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
- ->addClass('fields-group-date')
- ->addClass('js-row-date')
-]);
-
-// Time.
-$form_grid->addItem([
- (new CLabel(_('Time')))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL)
- ->addClass('js-row-time'),
- (new CDiv([
- CWidgetHelper::getLabel($fields['time_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['time_size']), '%']))->addClass('field-size'),
-
- CWidgetHelper::getLabel($fields['time_bold']),
- new CFormField(CWidgetHelper::getCheckBox($fields['time_bold'])),
-
- CWidgetHelper::getLabel($fields['time_color'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getColor($fields['time_color'], true)),
-
- CWidgetHelper::getLabel($fields['time_sec']),
- new CFormField(CWidgetHelper::getCheckBox($fields['time_sec'])),
-
- CWidgetHelper::getLabel($fields['time_format']),
- (new CFormField(CWidgetHelper::getRadioButtonList($fields['time_format'])))->addClass('field-format')
- ]))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
- ->addClass('fields-group-time')
- ->addClass('js-row-time')
-]);
-
-// Time zone.
-$form_grid->addItem([
- (new CLabel(_('Time zone')))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL)
- ->addClass('js-row-tzone'),
- (new CDiv([
- CWidgetHelper::getLabel($fields['tzone_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['tzone_size']), '%']))->addClass('field-size'),
-
- CWidgetHelper::getLabel($fields['tzone_bold']),
- new CFormField(CWidgetHelper::getCheckBox($fields['tzone_bold'])),
-
- CWidgetHelper::getLabel($fields['tzone_color'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getColor($fields['tzone_color'], true)),
-
- (CWidgetHelper::getLabel($fields['tzone_timezone']))->addClass('js-row-tzone-timezone'),
- (new CFormField(CWidgetHelper::getSelect($fields['tzone_timezone'])))
- ->addClass('field-timezone')
- ->addClass('js-row-tzone-timezone'),
-
- (CWidgetHelper::getLabel($fields['tzone_format']))->addClass('js-row-tzone-format'),
- (new CFormField(CWidgetHelper::getRadioButtonList($fields['tzone_format'])))
- ->addClass('field-format')
- ->addClass('js-row-tzone-format')
- ]))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
- ->addClass('fields-group-tzone')
- ->addClass('js-row-tzone')
-]);
-
-$scripts[] = $fields['tzone_timezone']->getJavascript();
-
-$form->addItem($form_grid);
-
-$scripts[] = '
- widget_clock_form.init();
-';
-
-return [
- 'form' => $form,
- 'scripts' => $scripts
-];
diff --git a/ui/include/classes/widgets/views/widget.dataover.form.view.php b/ui/include/classes/widgets/views/widget.dataover.form.view.php
deleted file mode 100644
index 4823ba334fe..00000000000
--- a/ui/include/classes/widgets/views/widget.dataover.form.view.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Data overview widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Show suppressed problems.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_suppressed']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_suppressed']))
-]);
-
-// Hosts location.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['style']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['style']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.geomap.form.view.php b/ui/include/classes/widgets/views/widget.geomap.form.view.php
deleted file mode 100644
index 0a61d3d2cb3..00000000000
--- a/ui/include/classes/widgets/views/widget.geomap.form.view.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Map widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Initial view.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['default_view'], null, [
- _('Comma separated center coordinates and zoom level to display when the widget is initially loaded.'),
- BR(),
- _('Supported formats:'),
- (new CList([
- new CListItem((new CSpan('<lat>,<lng>,<zoom>'))->addClass(ZBX_STYLE_MONOSPACE_FONT)),
- new CListItem((new CSpan('<lat>,<lng>'))->addClass(ZBX_STYLE_MONOSPACE_FONT))
- ]))->addClass(ZBX_STYLE_LIST_DASHED),
- BR(),
- _s('The maximum zoom level is "%1$s".', CSettingsHelper::get(CSettingsHelper::GEOMAPS_MAX_ZOOM)),
- BR(),
- _('Initial view is ignored if the default view is set.')
- ]),
- new CFormField(CWidgetHelper::getLatLngZoomBox($fields['default_view']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.graph.form.view.php b/ui/include/classes/widgets/views/widget.graph.form.view.php
deleted file mode 100644
index 31dea04b1dc..00000000000
--- a/ui/include/classes/widgets/views/widget.graph.form.view.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Graph widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Source.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['source_type']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['source_type']))
-]);
-
-// Graph.
-if (array_key_exists('graphid', $fields)) {
- $field_graphid = CWidgetHelper::getGraph($fields['graphid'], $data['captions']['ms']['graphs']['graphid'],
- $form->getName()
- );
- $form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['graphid']),
- new CFormField($field_graphid)
- ]);
- $scripts[] = $field_graphid->getPostJS();
-}
-
-// Item.
-if (array_key_exists('itemid', $fields)) {
- $field_itemid = CWidgetHelper::getItem($fields['itemid'], $data['captions']['ms']['items']['itemid'],
- $form->getName()
- );
- $form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['itemid']),
- new CFormField($field_itemid)
- ]);
- $scripts[] = $field_itemid->getPostJS();
-}
-
-// Show legend.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_legend']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_legend']))
-]);
-
-// Dynamic item.
-if ($data['templateid'] === null) {
- $form_grid->addItem([
- CWidgetHelper::getLabel($fields['dynamic']),
- new CFormField(CWidgetHelper::getCheckBox($fields['dynamic']))
- ]);
-}
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts
-];
diff --git a/ui/include/classes/widgets/views/widget.graphprototype.form.view.php b/ui/include/classes/widgets/views/widget.graphprototype.form.view.php
deleted file mode 100644
index 400b4c9ef87..00000000000
--- a/ui/include/classes/widgets/views/widget.graphprototype.form.view.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Graph prototype widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Source.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['source_type']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['source_type']))
-]);
-
-// Graph prototype.
-if (array_key_exists('graphid', $fields)) {
- $field_graphid = CWidgetHelper::getGraphPrototype($fields['graphid'],
- $data['captions']['ms']['graph_prototypes']['graphid'], $form->getName()
- );
- $form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['graphid']),
- new CFormField($field_graphid)
- ]);
- $scripts[] = $field_graphid->getPostJS();
-}
-
-// Item prototype.
-if (array_key_exists('itemid', $fields)) {
- $field_itemid = CWidgetHelper::getItemPrototype($fields['itemid'],
- $data['captions']['ms']['item_prototypes']['itemid'], $form->getName()
- );
- $form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['itemid']),
- new CFormField($field_itemid)
- ]);
- $scripts[] = $field_itemid->getPostJS();
-}
-
-// Show legend.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_legend']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_legend']))
-]);
-
-// Dynamic item.
-if ($data['templateid'] === null) {
- $form_grid->addItem([
- CWidgetHelper::getLabel($fields['dynamic']),
- new CFormField(CWidgetHelper::getCheckBox($fields['dynamic']))
- ]);
-}
-
-// Columns.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['columns']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['columns']))
-]);
-
-// Rows.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['rows']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['rows']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts
-];
diff --git a/ui/include/classes/widgets/views/widget.hostavail.form.view.php b/ui/include/classes/widgets/views/widget.hostavail.form.view.php
deleted file mode 100644
index a691fc0cafc..00000000000
--- a/ui/include/classes/widgets/views/widget.hostavail.form.view.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Host availability widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Interface type.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['interface_type']),
- new CFormField(
- CWidgetHelper::getCheckBoxList($fields['interface_type'], [
- INTERFACE_TYPE_AGENT => _('Zabbix agent'),
- INTERFACE_TYPE_SNMP => _('SNMP'),
- INTERFACE_TYPE_JMX => _('JMX'),
- INTERFACE_TYPE_IPMI => _('IPMI')
- ])
- )
-]);
-
-// Layout.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['layout']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['layout']))
-]);
-
-// Show hosts in maintenance.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['maintenance']),
- new CFormField(CWidgetHelper::getCheckBox($fields['maintenance']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts
-];
diff --git a/ui/include/classes/widgets/views/widget.item.form.view.php b/ui/include/classes/widgets/views/widget.item.form.view.php
deleted file mode 100644
index cad8ddd6962..00000000000
--- a/ui/include/classes/widgets/views/widget.item.form.view.php
+++ /dev/null
@@ -1,262 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Item value widget.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [$this->readJsFile('../../../include/classes/widgets/views/js/widget.item.form.view.js.php')];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Item.
-$field_itemid = CWidgetHelper::getItem($fields['itemid'], $data['captions']['ms']['items']['itemid'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['itemid']),
- new CFormField($field_itemid)
-]);
-$scripts[] = $field_itemid->getPostJS();
-
-// Show.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show']),
- new CFormField(
- CWidgetHelper::getCheckBoxList($fields['show'], [
- WIDGET_ITEM_SHOW_DESCRIPTION => _('Description'),
- WIDGET_ITEM_SHOW_VALUE => _('Value'),
- WIDGET_ITEM_SHOW_TIME => _('Time'),
- WIDGET_ITEM_SHOW_CHANGE_INDICATOR => _('Change indicator')
- ], [ZBX_STYLE_COLUMNS, ZBX_STYLE_COLUMNS_2])
- )
-]);
-
-// Advanced configuration.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['adv_conf']),
- new CFormField(CWidgetHelper::getCheckBox($fields['adv_conf']))
-]);
-
-// Description.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['description'], CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL, [
- _('Supported macros:'),
- (new CList([
- '{HOST.*}',
- '{ITEM.*}',
- '{INVENTORY.*}',
- _('User macros')
- ]))->addClass(ZBX_STYLE_LIST_DASHED)
- ])->addClass('js-row-description'),
- (new CDiv([
- new CFormField(
- CWidgetHelper::getTextArea($fields['description'])
- ->setAttribute('maxlength', DB::getFieldLength('widget_field', 'value_str'))
- ),
-
- CWidgetHelper::getLabel($fields['desc_h_pos']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['desc_h_pos'])),
-
- CWidgetHelper::getLabel($fields['desc_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['desc_size']), '%']))->addClass('field-size'),
-
- CWidgetHelper::getLabel($fields['desc_v_pos']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['desc_v_pos'])),
-
- CWidgetHelper::getLabel($fields['desc_bold']),
- new CFormField(CWidgetHelper::getCheckBox($fields['desc_bold'])),
-
- CWidgetHelper::getLabel($fields['desc_color'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getColor($fields['desc_color'], true))
- ]))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
- ->addClass('fields-group-description')
- ->addClass('js-row-description')
-]);
-
-// Value.
-$form_grid->addItem([
- (new CLabel(_('Value')))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL)
- ->addClass('js-row-value'),
- (new CDiv([
- CWidgetHelper::getLabel($fields['decimal_places']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['decimal_places'])),
-
- CWidgetHelper::getLabel($fields['decimal_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['decimal_size']), '%']))->addClass('field-size'),
-
- new CTag('hr'),
-
- CWidgetHelper::getLabel($fields['value_h_pos']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['value_h_pos'])),
-
- CWidgetHelper::getLabel($fields['value_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['value_size']), '%']))->addClass('field-size'),
-
- CWidgetHelper::getLabel($fields['value_v_pos']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['value_v_pos'])),
-
- CWidgetHelper::getLabel($fields['value_bold']),
- new CFormField(CWidgetHelper::getCheckBox($fields['value_bold'])),
-
- CWidgetHelper::getLabel($fields['value_color'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getColor($fields['value_color'], true)),
-
- new CTag('hr'),
-
- (new CDiv([
- CWidgetHelper::getCheckBox($fields['units_show']),
- CWidgetHelper::getLabel($fields['units'])
- ]))->addClass('units-show'),
-
- (new CFormField(
- CWidgetHelper::getTextBox($fields['units'])
- ->setAttribute('style', '')
- ->setAdaptiveWidth(ZBX_TEXTAREA_BIG_WIDTH)
- ))->addClass(CFormField::ZBX_STYLE_FORM_FIELD_FLUID),
-
- CWidgetHelper::getLabel($fields['units_pos'], null,
- _('Position is ignored for s, uptime and unixtime units.')
- ),
- new CFormField(CWidgetHelper::getSelect($fields['units_pos'])),
-
- CWidgetHelper::getLabel($fields['units_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['units_size']), '%']))->addClass('field-size'),
-
- CWidgetHelper::getLabel($fields['units_bold'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getCheckBox($fields['units_bold'])),
-
- CWidgetHelper::getLabel($fields['units_color'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getColor($fields['units_color'], true))
- ]))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
- ->addClass('fields-group-value')
- ->addClass('js-row-value')
-]);
-
-// Time.
-$form_grid->addItem([
- (new CLabel(_('Time')))
- ->addCLass(CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL)
- ->addClass('js-row-time'),
- (new CDiv([
- CWidgetHelper::getLabel($fields['time_h_pos']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['time_h_pos'])),
-
- CWidgetHelper::getLabel($fields['time_size']),
- (new CFormField([CWidgetHelper::getIntegerBox($fields['time_size']), '%']))->addClass('field-size'),
-
- CWidgetHelper::getLabel($fields['time_v_pos']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['time_v_pos'])),
-
- CWidgetHelper::getLabel($fields['time_bold']),
- new CFormField(CWidgetHelper::getCheckBox($fields['time_bold'])),
-
- CWidgetHelper::getLabel($fields['time_color'])->addClass('offset-3'),
- new CFormField(CWidgetHelper::getColor($fields['time_color'], true))
- ]))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
- ->addClass('fields-group-time')
- ->addClass('js-row-time')
-]);
-
-// Change indicator.
-$form_grid->addItem([
- (new CLabel(_('Change indicator')))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP_LABEL)
- ->addClass('js-row-change-indicator'),
- (new CDiv([
- (new CSvgArrow(['up' => true, 'fill_color' => $fields['up_color']->getValue()]))
- ->setId('change-indicator-up')
- ->setSize(14, 20),
- new CFormField(CWidgetHelper::getColor($fields['up_color'], true)),
-
- (new CSvgArrow(['down' => true, 'fill_color' => $fields['down_color']->getValue()]))
- ->setId('change-indicator-down')
- ->setSize(14, 20),
- new CFormField(CWidgetHelper::getColor($fields['down_color'], true)),
-
- (new CSvgArrow(['up' => true, 'down' => true, 'fill_color' => $fields['updown_color']->getValue()]))
- ->setId('change-indicator-updown')
- ->setSize(14, 20),
- new CFormField(CWidgetHelper::getColor($fields['updown_color'], true))
- ]))
- ->addClass(CFormGrid::ZBX_STYLE_FIELDS_GROUP)
- ->addClass('fields-group-change-indicator')
- ->addClass('js-row-change-indicator')
-]);
-
-// Background color.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['bg_color'])->addClass('js-row-bg-color'),
- (new CFormField(CWidgetHelper::getColor($fields['bg_color'], true)))->addClass('js-row-bg-color')
-]);
-
-// Thresholds.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['thresholds'])
- ->addItem(
- (new CSpan([
- '&nbsp;',
- makeWarningIcon(_('This setting applies only to numeric data.'))
- ]))->setId('item-value-thresholds-warning'))
- ->addClass('js-row-thresholds'),
- (new CFormField(CWidgetHelper::getThresholds($fields['thresholds'])))->addClass('js-row-thresholds')
-]);
-$scripts[] = $fields['thresholds']->getJavascript();
-
-$thresholds_tmpl_id = sprintf(CWidgetFieldThresholds::THRESHOLDS_ROW_TMPL_ID, $fields['thresholds']->getName());
-$jq_templates[$thresholds_tmpl_id] = CWidgetHelper::getThresholdsTemplate($fields['thresholds']->getName())
- ->toString();
-
-// Dynamic item.
-if ($data['templateid'] === null) {
- $form_grid->addItem([
- CWidgetHelper::getLabel($fields['dynamic']),
- new CFormField(CWidgetHelper::getCheckBox($fields['dynamic']))
- ]);
-}
-
-$form->addItem($form_grid);
-
-$scripts[] = '
- widget_item_form.init('.json_encode([
- 'thresholds_colors' => CWidgetFieldColumnsList::THRESHOLDS_DEFAULT_COLOR_PALETTE
- ]).');
-';
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.map.form.view.php b/ui/include/classes/widgets/views/widget.map.form.view.php
deleted file mode 100644
index c2de3627efc..00000000000
--- a/ui/include/classes/widgets/views/widget.map.form.view.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Map widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Map widget reference.
-$form->addVar($fields[CWidgetFieldReference::FIELD_NAME]->getName(),
- $fields[CWidgetFieldReference::FIELD_NAME]->getValue()
-);
-
-// Source type.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['source_type']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['source_type']))
-]);
-
-// Map.
-if (array_key_exists('sysmapid', $fields)) {
- $field = $fields['sysmapid'];
-
- $form->addVar($field->getName(), $field->getValue());
-
- $form_grid->addItem([
- CWidgetHelper::getLabel($field),
- new CFormField(
- CWidgetHelper::getSelectResource(
- $field,
- $field->getValue() != 0
- ? $data['captions']['simple'][$field->getResourceType()][$field->getValue()]
- : '',
- $form->getName()
- )
- )
- ]);
-}
-
-// Filter.
-if (array_key_exists('filter_widget_reference', $fields)) {
- $form_grid->addItem([
- CWidgetHelper::getLabel($fields['filter_widget_reference']),
- new CFormField(CWidgetHelper::getEmptySelect($fields['filter_widget_reference']))
- ]);
- $scripts[] = $fields['filter_widget_reference']->getJavascript();
-}
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts
-];
diff --git a/ui/include/classes/widgets/views/widget.navtree.form.view.php b/ui/include/classes/widgets/views/widget.navtree.form.view.php
deleted file mode 100644
index 96601e3f47d..00000000000
--- a/ui/include/classes/widgets/views/widget.navtree.form.view.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Map navigation tree widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Map widget reference.
-$form->addItem(
- (new CVar($fields[CWidgetFieldReference::FIELD_NAME]->getName(),
- $fields[CWidgetFieldReference::FIELD_NAME]->getValue()
- ))->removeId()
-);
-
-// Add dynamically created fields navtree.name.<N>, navtree.parent.<N>, navtree.order.<N> and navtree.sysmapid.<N>.
-foreach ($fields['navtree']->getValue() as $i => $navtree_item) {
- $form->addItem((new CVar($fields['navtree']->getName().'.name.'.$i, $navtree_item['name']))->removeId());
-
- if ($navtree_item['order'] != 1) {
- $form->addItem((new CVar($fields['navtree']->getName().'.order.'.$i, $navtree_item['order']))->removeId());
- }
- if ($navtree_item['parent'] != 0) {
- $form->addItem((new CVar($fields['navtree']->getName().'.parent.'.$i, $navtree_item['parent']))->removeId());
- }
- if (array_key_exists('sysmapid', $navtree_item)) {
- $form->addItem(
- (new CVar($fields['navtree']->getName().'.sysmapid.'.$i, $navtree_item['sysmapid']))->removeId()
- );
- }
-}
-
-// Show unavailable maps.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_unavailable']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_unavailable']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form
-];
diff --git a/ui/include/classes/widgets/views/widget.plaintext.form.view.php b/ui/include/classes/widgets/views/widget.plaintext.form.view.php
deleted file mode 100644
index 649a4d0941b..00000000000
--- a/ui/include/classes/widgets/views/widget.plaintext.form.view.php
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Plain text widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Items.
-$field_itemids = CWidgetHelper::getItem($fields['itemids'], $data['captions']['ms']['items']['itemids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['itemids']),
- new CFormField($field_itemids)
-]);
-$scripts[] = $field_itemids->getPostJS();
-
-// Items location.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['style']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['style']))
-]);
-
-// Show lines.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_lines']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['show_lines']))
-]);
-
-// Show text as HTML.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_as_html']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_as_html']))
-]);
-
-// Dynamic item.
-if ($data['templateid'] === null) {
- $form_grid->addItem([
- CWidgetHelper::getLabel($fields['dynamic']),
- new CFormField(CWidgetHelper::getCheckBox($fields['dynamic']))
- ]);
-}
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts
-];
diff --git a/ui/include/classes/widgets/views/widget.problemhosts.form.view.php b/ui/include/classes/widgets/views/widget.problemhosts.form.view.php
deleted file mode 100644
index c748d2119dd..00000000000
--- a/ui/include/classes/widgets/views/widget.problemhosts.form.view.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Problem hosts widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Exclude host groups.
-$field_exclude_groupids = CWidgetHelper::getGroup($fields['exclude_groupids'],
- $data['captions']['ms']['groups']['exclude_groupids'], $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['exclude_groupids']),
- new CFormField($field_exclude_groupids)
-]);
-$scripts[] = $field_exclude_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Problem.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['problem']),
- new CFormField(CWidgetHelper::getTextBox($fields['problem']))
-]);
-
-// Severity.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['severities']),
- new CFormField(CWidgetHelper::getSeverities($fields['severities']))
-]);
-
-// Tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Show suppressed problems.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_suppressed']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_suppressed']))
-]);
-
-// Hide groups without problems.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['hide_empty_groups']),
- new CFormField(CWidgetHelper::getCheckBox($fields['hide_empty_groups']))
-]);
-
-// Problem display.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['ext_ack']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['ext_ack']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.problems.form.view.php b/ui/include/classes/widgets/views/widget.problems.form.view.php
deleted file mode 100644
index a806e7464a4..00000000000
--- a/ui/include/classes/widgets/views/widget.problems.form.view.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Problems widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [$this->readJsFile('../../../include/classes/widgets/views/js/widget.problems.form.view.js.php')];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Show.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['show']))
-]);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Exclude host groups.
-$field_exclude_groupids = CWidgetHelper::getGroup($fields['exclude_groupids'],
- $data['captions']['ms']['groups']['exclude_groupids'], $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['exclude_groupids']),
- new CFormField($field_exclude_groupids)
-]);
-$scripts[] = $field_exclude_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Problem.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['problem']),
- new CFormField(CWidgetHelper::getTextBox($fields['problem']))
-]);
-
-// Severity.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['severities']),
- new CFormField(CWidgetHelper::getSeverities($fields['severities']))
-]);
-
-// Tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Show tags.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_tags']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['show_tags']))
-]);
-
-// Tag name.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['tag_name_format']),
- new CFormField(
- CWidgetHelper::getRadioButtonList($fields['tag_name_format'])
- ->setEnabled($fields['show_tags']->getValue() !== SHOW_TAGS_NONE)
- )
-]);
-
-// Tag display priority.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['tag_priority']),
- new CFormField(
- CWidgetHelper::getTextBox($fields['tag_priority'])
- ->setAttribute('placeholder', _('comma-separated list'))
- ->setEnabled($fields['show_tags']->getValue() !== SHOW_TAGS_NONE)
- )
-]);
-
-// Show operational data.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_opdata']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['show_opdata']))
-]);
-
-// Show suppressed problems.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_suppressed']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_suppressed']))
-]);
-
-// Show unacknowledged only.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['unacknowledged']),
- new CFormField(CWidgetHelper::getCheckBox($fields['unacknowledged']))
-]);
-
-// Sort entries by.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['sort_triggers']),
- new CFormField(CWidgetHelper::getSelect($fields['sort_triggers']))
-]);
-
-// Show timeline.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_timeline']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_timeline']))
-]);
-
-// Show lines.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_lines']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['show_lines']))
-]);
-
-$form
- ->addItem($form_grid)
- ->addItem(
- (new CScriptTag('
- widget_problems_form.init('.json_encode([
- 'sort_with_enabled_show_timeline' => [
- SCREEN_SORT_TRIGGERS_TIME_DESC => true,
- SCREEN_SORT_TRIGGERS_TIME_ASC => true
- ]
- ]).');
- '))->setOnDocumentReady()
- );
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.problemsbysv.form.view.php b/ui/include/classes/widgets/views/widget.problemsbysv.form.view.php
deleted file mode 100644
index f1e48a701ce..00000000000
--- a/ui/include/classes/widgets/views/widget.problemsbysv.form.view.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Problems by severity widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Exclude host groups.
-$field_exclude_groupids = CWidgetHelper::getGroup($fields['exclude_groupids'],
- $data['captions']['ms']['groups']['exclude_groupids'], $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['exclude_groupids']),
- new CFormField($field_exclude_groupids)
-]);
-$scripts[] = $field_exclude_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Problem.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['problem']),
- new CFormField(CWidgetHelper::getTextBox($fields['problem']))
-]);
-
-// Severity.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['severities']),
- new CFormField(CWidgetHelper::getSeverities($fields['severities']))
-]);
-
-// Tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Show.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_type']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['show_type']))
-]);
-
-// Layout.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['layout']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['layout']))
-]);
-
-// Show operational data.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_opdata']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['show_opdata']))
-]);
-
-// Show suppressed problems.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_suppressed']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_suppressed']))
-]);
-
-// Hide groups without problems.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['hide_empty_groups']),
- new CFormField(CWidgetHelper::getCheckBox($fields['hide_empty_groups']))
-]);
-
-// Problem display.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['ext_ack']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['ext_ack']))
-]);
-
-// Show timeline.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_timeline']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_timeline']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.slareport.form.view.php b/ui/include/classes/widgets/views/widget.slareport.form.view.php
deleted file mode 100644
index 9a470ac3cfe..00000000000
--- a/ui/include/classes/widgets/views/widget.slareport.form.view.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * SLA report widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [$this->readJsFile('../../../include/classes/widgets/views/js/widget.slareport.form.view.js.php')];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// SLA.
-$field_slaid = CWidgetHelper::getSla($fields['slaid'], $data['captions']['ms']['slas']['slaid'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['slaid']),
- new CFormField($field_slaid)
-]);
-$scripts[] = $field_slaid->getPostJS();
-
-// Service.
-$field_serviceid = CWidgetHelper::getService($fields['serviceid'], $data['captions']['ms']['services']['serviceid'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['serviceid']),
- new CFormField($field_serviceid)
-]);
-$scripts[] = $field_serviceid->getPostJS();
-
-// Show periods.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_periods']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['show_periods']))
-]);
-
-// From.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['date_from']),
- new CFormField(
- CWidgetHelper::getDatePicker($fields['date_from'])
- ->setDateFormat(ZBX_DATE)
- ->setPlaceholder(_('YYYY-MM-DD'))
- )
-]);
-
-// To.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['date_to']),
- new CFormField(
- CWidgetHelper::getDatePicker($fields['date_to'])
- ->setDateFormat(ZBX_DATE)
- ->setPlaceholder(_('YYYY-MM-DD'))
- )
-]);
-
-$form->addItem($form_grid);
-
-$scripts[] = '
- widget_slareport_form.init('.json_encode([
- 'serviceid_field_id' => $fields['serviceid']->getName(),
- 'serviceid_multiple' => $fields['serviceid']->isMultiple()
- ]).');
-';
-
-return [
- 'form' => $form,
- 'scripts' => $scripts
-];
diff --git a/ui/include/classes/widgets/views/widget.svggraph.form.view.php b/ui/include/classes/widgets/views/widget.svggraph.form.view.php
deleted file mode 100644
index 4c42861e105..00000000000
--- a/ui/include/classes/widgets/views/widget.svggraph.form.view.php
+++ /dev/null
@@ -1,328 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * SVG graph widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [$this->readJsFile('../../../include/classes/widgets/views/js/widget.svggraph.form.view.js.php')];
-$jq_templates = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-$graph_preview = (new CDiv())
- ->addClass(ZBX_STYLE_SVG_GRAPH_PREVIEW)
- ->addItem((new CDiv())->setId('svg-graph-preview'));
-
-$form_tabs = (new CTabView())
- ->addTab('data_set', _('Data set'), getDatasetTab($fields, $jq_templates, $form->getName()),
- TAB_INDICATOR_GRAPH_DATASET
- )
- ->addTab('displaying_options', _('Displaying options'), getDisplayOptionsTab($fields),
- TAB_INDICATOR_GRAPH_DISPLAY_OPTIONS
- )
- ->addTab('time_period', _('Time period'), getTimePeriodTab($fields), TAB_INDICATOR_GRAPH_TIME)
- ->addTab('axes', _('Axes'), getAxesTab($fields), TAB_INDICATOR_GRAPH_AXES)
- ->addTab('legend_tab', _('Legend'), getLegendTab($fields, $scripts), TAB_INDICATOR_GRAPH_LEGEND)
- ->addTab('problems', _('Problems'), getProblemsTab($fields, $scripts, $jq_templates, $form->getName()),
- TAB_INDICATOR_GRAPH_PROBLEMS
- )
- ->addTab('overrides', _('Overrides'), getOverridesTab($fields, $scripts, $jq_templates, $form->getName()),
- TAB_INDICATOR_GRAPH_OVERRIDES
- )
- ->addClass('graph-widget-config-tabs')
- ->setSelected(0);
-$scripts[] = $form_tabs->makeJavascript();
-
-$form
- ->addItem($form_grid)
- ->addItem($graph_preview)
- ->addItem($form_tabs);
-
-$scripts[] = '
- widget_svggraph_form.init('.json_encode([
- 'form_id' => $form->getId(),
- 'form_tabs_id' => $form_tabs->getId(),
- 'color_palette' => CWidgetFieldGraphDataSet::DEFAULT_COLOR_PALETTE
- ]).');
-';
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
-
-function getGraphDataSetItemRow(): string {
- return (new CRow([
- (new CCol(
- (new CDiv())->addClass(ZBX_STYLE_DRAG_ICON)
- ))
- ->addClass('table-col-handle')
- ->addClass(ZBX_STYLE_TD_DRAG_ICON),
- (new CCol(
- (new CColor('ds[#{dsNum}][color][]', '#{color}', 'items_#{dsNum}_#{rowNum}_color'))
- ->appendColorPickerJs(false)
- ))->addClass('table-col-color'),
- (new CCol(new CSpan('#{rowNum}:')))->addClass('table-col-no'),
- (new CCol(
- (new CLink('#{name}'))
- ->setId('items_#{dsNum}_#{rowNum}_name')
- ->addClass('js-click-expend')
- ))->addClass('table-col-name'),
- (new CCol([
- (new CButton('button', _('Remove')))
- ->addClass(ZBX_STYLE_BTN_LINK)
- ->addClass('element-table-remove'),
- (new CVar('ds[#{dsNum}][itemids][]', '#{itemid}', 'items_#{dsNum}_#{rowNum}_input'))
- ]))
- ->addClass('table-col-action')
- ->addClass(ZBX_STYLE_NOWRAP)
- ]))
- ->addClass('sortable')
- ->addClass('single-item-table-row')
- ->toString();
-}
-
-function getDatasetTab(array $fields, array &$jq_templates, string $form_name): CFormGrid {
- $jq_templates['dataset-single-item-tmpl'] = CWidgetHelper::getGraphDataSetTemplate($fields['ds'], $form_name,
- CWidgetHelper::DATASET_TYPE_SINGLE_ITEM
- );
- $jq_templates['dataset-pattern-item-tmpl'] = CWidgetHelper::getGraphDataSetTemplate($fields['ds'], $form_name,
- CWidgetHelper::DATASET_TYPE_PATTERN_ITEM
- );
- $jq_templates['dataset-item-row-tmpl'] = getGraphDataSetItemRow();
-
- return (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['ds']),
- (new CFormField(CWidgetHelper::getGraphDataSet($fields['ds'], $form_name)))
- ->addClass(ZBX_STYLE_LIST_VERTICAL_ACCORDION),
- (new CFormField(CWidgetHelper::getGraphDataSetFooter()))->addClass(ZBX_STYLE_LIST_ACCORDION_FOOT)
- ]);
-}
-
-function getDisplayOptionsTab(array $fields): CDiv {
- return (new CDiv())
- ->addClass(ZBX_STYLE_GRID_COLUMNS)
- ->addClass(ZBX_STYLE_GRID_COLUMNS_2)
- ->addItem(
- (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['source']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['source']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['simple_triggers']),
- new CFormField(CWidgetHelper::getCheckBox($fields['simple_triggers']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['working_time']),
- new CFormField(CWidgetHelper::getCheckBox($fields['working_time']))
- ])
- )
- ->addItem(
- (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['percentile_left']),
- new CFormField([
- CWidgetHelper::getCheckBox($fields['percentile_left']),
- CWidgetHelper::getTextBox($fields['percentile_left_value'])
- ])
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['percentile_right']),
- new CFormField([
- CWidgetHelper::getCheckBox($fields['percentile_right']),
- CWidgetHelper::getTextBox($fields['percentile_right_value'])
- ])
- ])
- );
-}
-
-function getTimePeriodTab(array $fields): CFormGrid {
- return (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['graph_time']),
- new CFormField(CWidgetHelper::getCheckBox($fields['graph_time']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['time_from']),
- new CFormField(
- CWidgetHelper::getDatePicker($fields['time_from'])
- ->setDateFormat(ZBX_FULL_DATE_TIME)
- ->setPlaceholder(_('YYYY-MM-DD hh:mm:ss'))
- )
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['time_to']),
- new CFormField(
- CWidgetHelper::getDatePicker($fields['time_to'])
- ->setDateFormat(ZBX_FULL_DATE_TIME)
- ->setPlaceholder(_('YYYY-MM-DD hh:mm:ss'))
- )
- ]);
-}
-
-function getAxesTab(array $fields): CDiv {
- return (new CDiv())
- ->addClass(ZBX_STYLE_GRID_COLUMNS)
- ->addClass(ZBX_STYLE_GRID_COLUMNS_3)
- ->addItem(
- (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['lefty']),
- new CFormField(CWidgetHelper::getCheckBox($fields['lefty']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['lefty_min']),
- new CFormField(CWidgetHelper::getNumericBox($fields['lefty_min']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['lefty_max']),
- new CFormField(CWidgetHelper::getNumericBox($fields['lefty_max']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['lefty_units']),
- new CFormField([
- CWidgetHelper::getSelect($fields['lefty_units'])->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
- CWidgetHelper::getTextBox($fields['lefty_static_units'])
- ])
- ])
- )
- ->addItem(
- (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['righty']),
- new CFormField(CWidgetHelper::getCheckBox($fields['righty']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['righty_min']),
- new CFormField(CWidgetHelper::getNumericBox($fields['righty_min']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['righty_max']),
- new CFormField(CWidgetHelper::getNumericBox($fields['righty_max']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['righty_units']),
- new CFormField([
- CWidgetHelper::getSelect($fields['righty_units'])->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
- CWidgetHelper::getTextBox($fields['righty_static_units'])
- ])
- ])
- )
- ->addItem(
- (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['axisx']),
- new CFormField(CWidgetHelper::getCheckBox($fields['axisx']))
- ])
- );
-}
-
-function getLegendTab(array $fields, array &$scripts): CDiv {
- $field_legend_lines = CWidgetHelper::getRangeControl($fields['legend_lines']);
- $field_legend_columns = CWidgetHelper::getRangeControl($fields['legend_columns']);
-
- $scripts[] = $field_legend_lines->getPostJS();
- $scripts[] = $field_legend_columns->getPostJS();
-
- return (new CDiv())
- ->addClass(ZBX_STYLE_GRID_COLUMNS)
- ->addClass(ZBX_STYLE_GRID_COLUMNS_2)
- ->addItem(
- (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['legend']),
- new CFormField(CWidgetHelper::getCheckBox($fields['legend']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['legend_statistic']),
- new CFormField(CWidgetHelper::getCheckBox($fields['legend_statistic']))
- ])
- )
- ->addItem(
- (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['legend_lines']),
- new CFormField($field_legend_lines)
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['legend_columns']),
- new CFormField($field_legend_columns)
- ])
- );
-}
-
-function getProblemsTab(array $fields, array &$scripts, array &$jq_templates, string $form_name): CFormGrid {
- $scripts[] = $fields['problemhosts']->getJavascript();
- $scripts[] = $fields['tags']->getJavascript();
- $jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
- return (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['show_problems']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_problems']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['graph_item_problems']),
- new CFormField(CWidgetHelper::getCheckBox($fields['graph_item_problems']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['problemhosts']),
- new CFormField(CWidgetHelper::getHostPatternSelect($fields['problemhosts'], $form_name))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['severities']),
- new CFormField(CWidgetHelper::getSeverities($fields['severities']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['problem_name']),
- new CFormField(CWidgetHelper::getTextBox($fields['problem_name']))
- ])
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(new CFormField(CWidgetHelper::getTags($fields['tags'])));
-}
-
-function getOverridesTab(array $fields, array &$scripts, array &$jq_templates, string $form_name): CFormGrid {
- $scripts[] = CWidgetHelper::getGraphOverrideJavascript($fields['or']);
- $jq_templates['overrides-row'] = CWidgetHelper::getGraphOverrideTemplate($fields['or'], $form_name);
-
- return (new CFormGrid())
- ->addItem([
- CWidgetHelper::getLabel($fields['or']),
- new CFormField(CWidgetHelper::getGraphOverride($fields['or'], $form_name))
- ]);
-}
diff --git a/ui/include/classes/widgets/views/widget.tophosts.form.view.php b/ui/include/classes/widgets/views/widget.tophosts.form.view.php
deleted file mode 100644
index b740f4f2ea5..00000000000
--- a/ui/include/classes/widgets/views/widget.tophosts.form.view.php
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Data overview widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [$this->readJsFile('../../../include/classes/widgets/views/js/widget.tophosts.form.view.js.php')];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Host tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Columns.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['columns']),
- (new CFormField(
- CWidgetHelper::getWidgetColumns($fields['columns'])
- ))->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR)
-]);
-
-// Order.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['order']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['order']))
-]);
-
-// Order column.
-$column = CWidgetHelper::getSelect($fields['column']);
-if (!$fields['column']->getValues()) {
- $column = (new CDiv(_('Add item column')))->addClass(
- ($fields['column']->getFlags() & CWidgetField::FLAG_DISABLED)
- ? ZBX_STYLE_DISABLED
- : null
- );
-}
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['column']),
- new CFormField($column)
-]);
-
-// Hosts count.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['count']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['count']))
-]);
-
-$form->addItem($form_grid);
-
-$scripts[] = '
- widget_tophosts_form.init('.json_encode([
- 'form_id' => $form->getId()
- ]).');
-';
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.trigover.form.view.php b/ui/include/classes/widgets/views/widget.trigover.form.view.php
deleted file mode 100644
index af3327ed14e..00000000000
--- a/ui/include/classes/widgets/views/widget.trigover.form.view.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Trigger overview widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Show.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['show']))
-]);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Show suppressed problems.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_suppressed']),
- new CFormField(CWidgetHelper::getCheckBox($fields['show_suppressed']))
-]);
-
-// Hosts location.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['style']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['style']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/classes/widgets/views/widget.url.form.view.php b/ui/include/classes/widgets/views/widget.url.form.view.php
deleted file mode 100644
index b055cbbd4a0..00000000000
--- a/ui/include/classes/widgets/views/widget.url.form.view.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * URL widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// URL.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['url']),
- new CFormField(CWidgetHelper::getUrlBox($fields['url']))
-]);
-
-// Dynamic item.
-if ($data['templateid'] === null) {
- $form_grid->addItem([
- CWidgetHelper::getLabel($fields['dynamic']),
- new CFormField(CWidgetHelper::getCheckBox($fields['dynamic']))
- ]);
-}
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form
-];
diff --git a/ui/include/classes/widgets/views/widget.web.form.view.php b/ui/include/classes/widgets/views/widget.web.form.view.php
deleted file mode 100644
index 40b5364f77d..00000000000
--- a/ui/include/classes/widgets/views/widget.web.form.view.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php declare(strict_types = 0);
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-
-/**
- * Web widget form view.
- *
- * @var CView $this
- * @var array $data
- */
-
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$scripts = [];
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Host groups.
-$field_groupids = CWidgetHelper::getGroup($fields['groupids'], $data['captions']['ms']['groups']['groupids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['groupids']),
- new CFormField($field_groupids)
-]);
-$scripts[] = $field_groupids->getPostJS();
-
-// Exclude host groups.
-$field_exclude_groupids = CWidgetHelper::getGroup($fields['exclude_groupids'],
- $data['captions']['ms']['groups']['exclude_groupids'], $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['exclude_groupids']),
- new CFormField($field_exclude_groupids)
-]);
-$scripts[] = $field_exclude_groupids->getPostJS();
-
-// Hosts.
-$field_hostids = CWidgetHelper::getHost($fields['hostids'], $data['captions']['ms']['hosts']['hostids'],
- $form->getName()
-);
-$form_grid->addItem([
- CWidgetHelper::getMultiselectLabel($fields['hostids']),
- new CFormField($field_hostids)
-]);
-$scripts[] = $field_hostids->getPostJS();
-
-// Tags.
-$form_grid
- ->addItem([
- CWidgetHelper::getLabel($fields['evaltype']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['evaltype']))
- ])
- ->addItem(
- new CFormField(CWidgetHelper::getTags($fields['tags']))
- );
-$scripts[] = $fields['tags']->getJavascript();
-$jq_templates['tag-row-tmpl'] = CWidgetHelper::getTagsTemplate($fields['tags']);
-
-// Show hosts in maintenance.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['maintenance']),
- new CFormField(CWidgetHelper::getCheckBox($fields['maintenance']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form,
- 'scripts' => $scripts,
- 'jq_templates' => $jq_templates
-];
diff --git a/ui/include/defines.inc.php b/ui/include/defines.inc.php
index 92055b205dd..1583e4980db 100644
--- a/ui/include/defines.inc.php
+++ b/ui/include/defines.inc.php
@@ -18,11 +18,11 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-define('ZABBIX_VERSION', '6.4.0beta3');
+define('ZABBIX_VERSION', '6.4.0beta4');
define('ZABBIX_API_VERSION', '6.4.0');
define('ZABBIX_EXPORT_VERSION', '6.4');
-define('ZABBIX_DB_VERSION', 6030061);
+define('ZABBIX_DB_VERSION', 6030063);
define('DB_VERSION_SUPPORTED', 0);
define('DB_VERSION_LOWER_THAN_MINIMUM', 1);
@@ -134,9 +134,6 @@ define('EXTACK_OPTION_ALL', 0);
define('EXTACK_OPTION_UNACK', 1);
define('EXTACK_OPTION_BOTH', 2);
-define('WIDGET_PROBLEMS_BY_SV_SHOW_GROUPS', 0);
-define('WIDGET_PROBLEMS_BY_SV_SHOW_TOTALS', 1);
-
define('TRIGGERS_OPTION_RECENT_PROBLEM', 1);
define('TRIGGERS_OPTION_ALL', 2);
define('TRIGGERS_OPTION_IN_PROBLEM', 3);
@@ -860,7 +857,7 @@ define('SCREEN_SORT_TRIGGERS_NAME_DESC', 16);
define('SCREEN_MODE_PREVIEW', 0);
define('SCREEN_MODE_EDIT', 1);
-define('SCREEN_MODE_SLIDESHOW', 2);
+define('SCREEN_MODE_SLIDESHOW', 2);
define('SCREEN_MODE_JS', 3);
define('SCREEN_REFRESH_RESPONSIVENESS', 10);
@@ -1177,7 +1174,8 @@ define('SVG_GRAPH_PERCENTILE_LEFT_ON', 1);
define('SVG_GRAPH_PERCENTILE_RIGHT_OFF', 0);
define('SVG_GRAPH_PERCENTILE_RIGHT_ON', 1);
-define('SVG_GRAPH_CUSTOM_TIME', 1);
+define('SVG_GRAPH_CUSTOM_TIME_OFF', 0);
+define('SVG_GRAPH_CUSTOM_TIME_ON', 1);
define('SVG_GRAPH_LEGEND_OFF', 0);
define('SVG_GRAPH_LEGEND_ON', 1);
@@ -1191,11 +1189,13 @@ define('SVG_GRAPH_LEGEND_LINES_MAX', 10);
define('SVG_GRAPH_LEGEND_COLUMNS_MIN', 1);
define('SVG_GRAPH_LEGEND_COLUMNS_MAX', 4);
-define('SVG_GRAPH_PROBLEMS_SHOW', 1);
+define('SVG_GRAPH_PROBLEMS_OFF', 0);
+define('SVG_GRAPH_PROBLEMS_ON', 1);
define('SVG_GRAPH_SELECTED_ITEM_PROBLEMS', 1);
-define('SVG_GRAPH_AXIS_SHOW', 1);
+define('SVG_GRAPH_AXIS_OFF', 0);
+define('SVG_GRAPH_AXIS_ON', 1);
define('SVG_GRAPH_AXIS_UNITS_AUTO', 0);
define('SVG_GRAPH_AXIS_UNITS_STATIC', 1);
@@ -1292,6 +1292,9 @@ define('ZBX_FUNCTION_TYPE_OPERATOR', 5);
define('ZBX_FUNCTION_TYPE_PREDICTION', 6);
define('ZBX_FUNCTION_TYPE_STRING', 7);
+define('ZBX_TIMELINE_OFF', 0);
+define('ZBX_TIMELINE_ON', 1);
+
/**
* @deprecated use either a literal space " " or a non-breakable space "&nbsp;" instead
*/
@@ -1436,6 +1439,10 @@ define('API_UINTS64', 14);
define('API_CUIDS', 44);
define('API_USER_MACROS', 52);
define('API_FILTER_VALUES', 59);
+
+// any type
+define('API_ANY', 61);
+
// specific types
define('API_HG_NAME', 15);
define('API_SCRIPT_MENU_PATH', 16);
@@ -1478,6 +1485,13 @@ define('API_TIMESTAMP', 55);
define('API_TG_NAME', 56);
define('API_COLORS', 57);
define('API_FILTER', 58);
+define('API_ITEM_KEY', 62);
+define('API_ITEM_DELAY', 63);
+define('API_JSON', 64);
+define('API_XML', 65);
+define('API_PREPROC_PARAMS', 66);
+define('API_PROMETHEUS_PATTERN', 67);
+define('API_PROMETHEUS_LABEL', 68);
// flags
define('API_REQUIRED', 0x00001);
@@ -1598,94 +1612,28 @@ define('ZBX_ACTIONS_POPUP_MAX_WIDTH', 800);
define('ZBX_HINTBOX_CONTENT_LIMIT', 8192);
-// dashboard widgets
-define('WIDGET_ACTION_LOG', 'actionlog');
+// Dashboard widget types supported in templates (used only in import converters).
define('WIDGET_CLOCK', 'clock');
-define('WIDGET_DISCOVERY', 'discovery');
-define('WIDGET_FAV_GRAPHS', 'favgraphs');
-define('WIDGET_FAV_MAPS', 'favmaps');
-define('WIDGET_GEOMAP', 'geomap');
define('WIDGET_GRAPH', 'graph');
define('WIDGET_GRAPH_PROTOTYPE', 'graphprototype');
-define('WIDGET_HOST_AVAIL', 'hostavail');
-define('WIDGET_MAP', 'map');
-define('WIDGET_NAV_TREE', 'navtree');
+define('WIDGET_ITEM', 'item');
define('WIDGET_PLAIN_TEXT', 'plaintext');
-define('WIDGET_PROBLEM_HOSTS', 'problemhosts');
-define('WIDGET_PROBLEMS', 'problems');
-define('WIDGET_PROBLEMS_BY_SV', 'problemsbysv');
-define('WIDGET_SLA_REPORT', 'slareport');
-define('WIDGET_SVG_GRAPH', 'svggraph');
-define('WIDGET_SYSTEM_INFO', 'systeminfo');
-define('WIDGET_TOP_HOSTS', 'tophosts');
-define('WIDGET_TRIG_OVER', 'trigover');
define('WIDGET_URL', 'url');
-define('WIDGET_WEB', 'web');
-define('WIDGET_ITEM', 'item');
-// Deprecated widgets
-define('WIDGET_DATA_OVER', 'dataover');
-
-// Clock widget type
-define('WIDGET_CLOCK_TYPE_ANALOG', 0);
-define('WIDGET_CLOCK_TYPE_DIGITAL', 1);
-
-// Clock time zone format
-define('WIDGET_CLOCK_TIMEZONE_SHORT', 0);
-define('WIDGET_CLOCK_TIMEZONE_FULL', 1);
-
-// Clock widget time format
-define('WIDGET_CLOCK_HOUR_TWENTY_FOUR', 0);
-define('WIDGET_CLOCK_HOUR_TWELVE', 1);
-
-// Item widget object positions.
-define('WIDGET_ITEM_POS_LEFT', 0);
-define('WIDGET_ITEM_POS_CENTER', 1);
-define('WIDGET_ITEM_POS_RIGHT', 2);
-
-define('WIDGET_ITEM_POS_TOP', 0);
-define('WIDGET_ITEM_POS_MIDDLE', 1);
-define('WIDGET_ITEM_POS_BOTTOM', 2);
-
-define('WIDGET_ITEM_POS_BEFORE', 0);
-define('WIDGET_ITEM_POS_ABOVE', 1);
-define('WIDGET_ITEM_POS_AFTER', 2);
-define('WIDGET_ITEM_POS_BELOW', 3);
-
-// sysmap widget source types
-define('WIDGET_SYSMAP_SOURCETYPE_MAP', 1);
-define('WIDGET_SYSMAP_SOURCETYPE_FILTER', 2);
-
-// widget select resource field types
-define('WIDGET_FIELD_SELECT_RES_SYSMAP', 1);
-
-// max depth of navigation tree
-define('WIDGET_NAVIGATION_TREE_MAX_DEPTH', 10);
-
-// event details widgets
-define('WIDGET_HAT_TRIGGERDETAILS', 'hat_triggerdetails');
-define('WIDGET_HAT_EVENTDETAILS', 'hat_eventdetails');
-define('WIDGET_HAT_EVENTACTIONS', 'hat_eventactions');
-define('WIDGET_HAT_EVENTLIST', 'hat_eventlist');
-// search widget
-define('WIDGET_SEARCH_HOSTS', 'search_hosts');
-define('WIDGET_SEARCH_HOSTGROUP', 'search_hostgroup');
-define('WIDGET_SEARCH_TEMPLATES', 'search_templates');
-define('WIDGET_SEARCH_TEMPLATEGROUP', 'search_templategroup');
-
-// dashboard widget dynamic state
-define('WIDGET_SIMPLE_ITEM', 0);
-define('WIDGET_DYNAMIC_ITEM', 1);
-
-// clock widget blocks
-define('WIDGET_CLOCK_SHOW_DATE', 1);
-define('WIDGET_CLOCK_SHOW_TIME', 2);
-define('WIDGET_CLOCK_SHOW_TIMEZONE', 3);
-
-// item widget blocks
-define('WIDGET_ITEM_SHOW_DESCRIPTION', 1);
-define('WIDGET_ITEM_SHOW_VALUE', 2);
-define('WIDGET_ITEM_SHOW_TIME', 3);
-define('WIDGET_ITEM_SHOW_CHANGE_INDICATOR', 4);
+
+// Inaccessible widget type.
+define('ZBX_WIDGET_INACCESSIBLE', 'inaccessible');
+
+// event details sections
+define('SECTION_HAT_TRIGGERDETAILS', 'hat_triggerdetails');
+define('SECTION_HAT_EVENTDETAILS', 'hat_eventdetails');
+define('SECTION_HAT_EVENTACTIONS', 'hat_eventactions');
+define('SECTION_HAT_EVENTLIST', 'hat_eventlist');
+
+// search sections
+define('SECTION_SEARCH_HOSTS', 'search_hosts');
+define('SECTION_SEARCH_HOSTGROUP', 'search_hostgroup');
+define('SECTION_SEARCH_TEMPLATES', 'search_templates');
+define('SECTION_SEARCH_TEMPLATEGROUP', 'search_templategroup');
// widget defaults
define('ZBX_WIDGET_ROWS', 20);
@@ -1712,9 +1660,6 @@ define('ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH_PROTOTYPE', 3);
define('ZBX_WIDGET_VIEW_MODE_NORMAL', 0);
define('ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER', 1);
-// top hosts widget
-define('ZBX_WIDGET_TOP_HOSTS_DEFAULT_FILL', '#97AAB3');
-
// validation
define('DB_ID', "({}>=0&&bccomp({},\"9223372036854775807\")<=0)&&");
define('NOT_EMPTY', "({}!='')&&");
@@ -1909,7 +1854,6 @@ define('ZBX_STYLE_DASHBOARD_NEXT_PAGE', 'dashboard-next-page');
define('ZBX_STYLE_DASHBOARD_TOGGLE_SLIDESHOW', 'dashboard-toggle-slideshow');
define('ZBX_STYLE_DASHBOARD_WIDGET', 'dashboard-widget');
define('ZBX_STYLE_DASHBOARD_WIDGET_FORM', 'dashboard-widget-form');
-define('ZBX_STYLE_DASHBOARD_WIDGET_FLUID', 'dashboard-widget-fluid');
define('ZBX_STYLE_DASHBOARD_WIDGET_HEAD', 'dashboard-widget-head');
define('ZBX_STYLE_DASHBOARD_WIDGET_FOOT', 'dashboard-widget-foot');
define('ZBX_STYLE_DASHBOARD_EDIT', 'dashboard-edit');
@@ -2052,7 +1996,6 @@ define('ZBX_STYLE_OVERLAY_DESCR_URL', 'overlay-descr-url');
define('ZBX_STYLE_OVERFLOW_ELLIPSIS', 'overflow-ellipsis');
define('ZBX_STYLE_PAGING_BTN_CONTAINER', 'paging-btn-container');
define('ZBX_STYLE_PAGING_SELECTED', 'paging-selected');
-define('ZBX_STYLE_PAGE_TITLE', 'page-title-general');
define('ZBX_STYLE_PAGE_TITLE_SUBMENU', 'page-title-submenu');
define('ZBX_STYLE_RED', 'red');
define('ZBX_STYLE_RED_BG', 'red-bg');
diff --git a/ui/include/func.inc.php b/ui/include/func.inc.php
index d34d9b36b0a..55600959ffc 100644
--- a/ui/include/func.inc.php
+++ b/ui/include/func.inc.php
@@ -1625,7 +1625,7 @@ function access_deny($mode = ACCESS_DENY_OBJECT) {
show_error_message(_('No permissions to referred object or it does not exist!'));
require_once dirname(__FILE__).'/page_header.php';
- (new CWidget())->show();
+ (new CHtmlPage())->show();
require_once dirname(__FILE__).'/page_footer.php';
}
// deny access to a page
@@ -1806,8 +1806,20 @@ function makeMessageBox(string $class, array $messages, string $title = null, bo
function filter_messages(): array {
if (!CSettingsHelper::getGlobal(CSettingsHelper::SHOW_TECHNICAL_ERRORS)
&& CWebUser::getType() != USER_TYPE_SUPER_ADMIN && !CWebUser::getDebugMode()) {
+
+ $type = CMessageHelper::getType();
+ $title = CMessageHelper::getTitle();
$messages = CMessageHelper::getMessages();
- CMessageHelper::clear(false);
+ CMessageHelper::clear();
+
+ if ($title !== null) {
+ if ($type === CMessageHelper::MESSAGE_TYPE_SUCCESS) {
+ CMessageHelper::setSuccessTitle($title);
+ }
+ else {
+ CMessageHelper::setErrorTitle($title);
+ }
+ }
$generic_exists = false;
foreach ($messages as $message) {
diff --git a/ui/include/html.inc.php b/ui/include/html.inc.php
index 9c4b6e549bf..f808e6a092f 100644
--- a/ui/include/html.inc.php
+++ b/ui/include/html.inc.php
@@ -140,7 +140,7 @@ function BR() {
function get_icon($type, $params = []) {
switch ($type) {
- case 'favourite':
+ case 'favorite':
if (CFavorite::exists($params['fav'], $params['elid'], $params['elname'])) {
$icon = (new CRedirectButton(SPACE, null))
->addClass(ZBX_STYLE_BTN_REMOVE_FAV)
@@ -806,11 +806,11 @@ function makePageFooter($with_version = true) {
/**
* Get drop-down submenu item list for the User settings section.
*
- * @return array|null Menu definition for CWidget::setTitleSubmenu.
+ * @return array Menu definition for CHtmlPage::setTitleSubmenu.
*/
-function getUserSettingsSubmenu(): ?array {
+function getUserSettingsSubmenu(): array {
if (!CWebUser::checkAccess(CRoleHelper::ACTIONS_MANAGE_API_TOKENS)) {
- return null;
+ return [];
}
$profile_url = (new CUrl('zabbix.php'))
@@ -834,7 +834,7 @@ function getUserSettingsSubmenu(): ?array {
/**
* Get drop-down submenu item list for the Administration->General section.
*
- * @return array Menu definition for CWidget::setTitleSubmenu.
+ * @return array Menu definition for CHtmlPage::setTitleSubmenu.
*/
function getAdministrationGeneralSubmenu() {
$gui_url = (new CUrl('zabbix.php'))
diff --git a/ui/include/items.inc.php b/ui/include/items.inc.php
index 14940303fe1..18a8dc6f86b 100644
--- a/ui/include/items.inc.php
+++ b/ui/include/items.inc.php
@@ -344,7 +344,6 @@ function orderItemsByStatus(array &$items, $sortorder = ZBX_SORT_UP) {
*/
function interfaceType2str($type) {
$interfaceGroupLabels = [
- INTERFACE_TYPE_OPT => _('None'),
INTERFACE_TYPE_AGENT => _('Agent'),
INTERFACE_TYPE_SNMP => _('SNMP'),
INTERFACE_TYPE_JMX => _('JMX'),
@@ -397,366 +396,290 @@ function interfaceIdsByType(array $interfaces) {
}
/**
- * Copies the given items to the given hosts or templates.
+ * Create copies of items from the given sources to the given destination hosts or templates.
*
- * @param array $src_itemids Items which will be copied to $dst_hostids.
- * @param array $dst_hostids Hosts and templates to whom add items.
+ * If source type is 'templateids' or 'hostids', only non-inherited items are copied.
+ *
+ * If source type is 'itemids', all the given items are copied.
+ *
+ * @param string $src_type
+ * @param array $src_ids
+ * @param bool $dst_is_template
+ * @param array $dst_hostids
*
* @return bool
*/
-function copyItemsToHosts($src_itemids, $dst_hostids) {
- $items = API::Item()->get([
- 'output' => ['type', 'snmp_oid', 'name', 'key_', 'delay', 'history', 'trends', 'status', 'value_type',
- 'trapper_hosts', 'units', 'logtimefmt', 'valuemapid', 'params', 'ipmi_sensor', 'authtype', 'username',
- 'password', 'publickey', 'privatekey', 'flags', 'description', 'inventory_link', 'jmx_endpoint',
- 'master_itemid', 'timeout', 'url', 'query_fields', 'posts', 'status_codes', 'follow_redirects',
- 'post_type', 'http_proxy', 'headers', 'retrieve_mode', 'request_method', 'output_format', 'ssl_cert_file',
- 'ssl_key_file', 'ssl_key_password', 'verify_peer', 'verify_host', 'allow_traps', 'parameters'
+function copyItemsToHosts(string $src_type, array $src_ids, bool $dst_is_template, array $dst_hostids): bool {
+ $options = in_array($src_type, ['templateids', 'hostids']) ? ['inherited' => false] : [];
+
+ $src_items = API::Item()->get([
+ 'output' => ['itemid', 'name', 'type', 'key_', 'value_type', 'units', 'history', 'trends',
+ 'valuemapid', 'inventory_link', 'logtimefmt', 'description', 'status',
+
+ // Type fields.
+ // The fields used for multiple item types.
+ 'interfaceid', 'authtype', 'username', 'password', 'params', 'timeout', 'delay', 'trapper_hosts',
+
+ // Dependent item type specific fields.
+ 'master_itemid',
+
+ // HTTP Agent item type specific fields.
+ 'url', 'query_fields', 'request_method', 'post_type', 'posts',
+ 'headers', 'status_codes', 'follow_redirects', 'retrieve_mode', 'output_format', 'http_proxy',
+ 'verify_peer', 'verify_host', 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password', 'allow_traps',
+
+ // IPMI item type specific fields.
+ 'ipmi_sensor',
+
+ // JMX item type specific fields.
+ 'jmx_endpoint',
+
+ // Script item type specific fields.
+ 'parameters',
+
+ // SNMP item type specific fields.
+ 'snmp_oid',
+
+ // SSH item type specific fields.
+ 'publickey', 'privatekey'
],
'selectPreprocessing' => ['type', 'params', 'error_handler', 'error_handler_params'],
'selectTags' => ['tag', 'value'],
- 'itemids' => $src_itemids,
+ $src_type => $src_ids,
'preservekeys' => true
- ]);
-
- // Check if dependent items have master items in same selection. If not, those could be web items.
- $master_itemids = [];
+ ] + $options);
- foreach ($items as $itemid => $item) {
- if ($item['type'] == ITEM_TYPE_DEPENDENT && !array_key_exists($item['master_itemid'], $items)) {
- $master_itemids[$item['master_itemid']] = true;
- }
+ if (!$src_items) {
+ return true;
}
- // Find same master items (that includes web items) on destination host.
- $dst_master_items = [];
+ $src_itemids = array_fill_keys(array_keys($src_items), true);
+ $src_valuemapids = [];
+ $src_interfaceids = [];
+ $src_dep_items = [];
+ $dep_itemids = [];
- foreach (array_keys($master_itemids) as $master_itemid) {
- $same_master_item = get_same_item_for_host(['itemid' => $master_itemid], $dst_hostids);
-
- if ($same_master_item) {
- $dst_master_items[$master_itemid] = $same_master_item;
+ foreach ($src_items as $itemid => &$item) {
+ if ($item['valuemapid'] != 0) {
+ $src_valuemapids[$item['valuemapid']] = true;
}
- }
- $create_order = [];
- $src_itemid_to_key = [];
+ if ($item['interfaceid'] != 0) {
+ $src_interfaceids[$item['interfaceid']] = true;
+ }
- // Calculate dependency level between items so that master items are created before dependent items.
- foreach ($items as $itemid => $item) {
- $dependency_level = 0;
- $master_item = $item;
- $src_itemid_to_key[$itemid] = $item['key_'];
+ if ($item['type'] == ITEM_TYPE_DEPENDENT) {
+ if (array_key_exists($item['master_itemid'], $src_itemids)) {
+ $src_dep_items[$item['master_itemid']][] = $item;
- while ($master_item['type'] == ITEM_TYPE_DEPENDENT) {
- if (!array_key_exists($master_item['master_itemid'], $items)) {
- break;
+ unset($src_items[$itemid]);
+ }
+ else {
+ $dep_itemids[$item['master_itemid']][] = $item['itemid'];
}
-
- $master_item = $items[$master_item['master_itemid']];
- ++$dependency_level;
}
-
- $create_order[$itemid] = $dependency_level;
}
+ unset($item);
- asort($create_order);
-
- $dstHosts = API::Host()->get([
- 'output' => ['hostid', 'host', 'status'],
- 'selectInterfaces' => ['interfaceid', 'type', 'main'],
- 'hostids' => $dst_hostids,
- 'preservekeys' => true,
- 'nopermissions' => true,
- 'templated_hosts' => true
- ]);
-
- $src_valuemapids = array_column($items, 'valuemapid', 'valuemapid');
- unset($src_valuemapids[0]);
+ $valuemap_links = [];
if ($src_valuemapids) {
- $valuemapids_map = [];
$src_valuemaps = API::ValueMap()->get([
- 'output' => ['name'],
- 'valuemapids' => $src_valuemapids,
- 'preservekeys' => true
+ 'output' => ['valuemapid', 'name'],
+ 'valuemapids' => array_keys($src_valuemapids)
]);
+
$dst_valuemaps = API::ValueMap()->get([
- 'output' => ['name', 'hostid'],
+ 'output' => ['valuemapid', 'hostid', 'name'],
'hostids' => $dst_hostids,
- 'filter' => ['name' => array_column($src_valuemaps, 'name')],
- 'preservekeys' => true
+ 'filter' => ['name' => array_unique(array_column($src_valuemaps, 'name'))]
]);
- foreach ($src_valuemaps as $src_valuemapid => $src_valuemap) {
- foreach ($dst_valuemaps as $dst_valuemapid => $dst_valuemap) {
- if ($dst_valuemap['name'] === $src_valuemap['name']) {
- $valuemapids_map[$src_valuemapid][$dst_valuemap['hostid']] = $dst_valuemapid;
- }
- }
- }
- }
+ $dst_valuemapids = [];
- foreach ($dstHosts as $dstHost) {
- $interfaceids = [];
+ foreach ($dst_valuemaps as $dst_valuemap) {
+ $dst_valuemapids[$dst_valuemap['name']][$dst_valuemap['hostid']] = $dst_valuemap['valuemapid'];
+ }
- foreach ($dstHost['interfaces'] as $interface) {
- if ($interface['main'] == INTERFACE_PRIMARY) {
- $interfaceids[$interface['type']] = $interface['interfaceid'];
+ foreach ($src_valuemaps as $src_valuemap) {
+ if (array_key_exists($src_valuemap['name'], $dst_valuemapids)) {
+ foreach ($dst_valuemapids[$src_valuemap['name']] as $dst_hostid => $dst_valuemapid) {
+ $valuemap_links[$src_valuemap['valuemapid']][$dst_hostid] = $dst_valuemapid;
+ }
}
}
+ }
- $itemkey_to_id = [];
- $create_items = [];
- $current_dependency = reset($create_order);
+ $interface_links = [];
+ $dst_interfaceids = [];
- foreach ($create_order as $itemid => $dependency_level) {
- if ($current_dependency != $dependency_level) {
- $current_dependency = $dependency_level;
- $created_itemids = API::Item()->create($create_items);
+ if (!$dst_is_template) {
+ $src_interfaces = [];
- if (!$created_itemids) {
- return false;
- }
- $created_itemids = $created_itemids['itemids'];
+ if ($src_interfaceids) {
+ $src_hosts = API::Host()->get([
+ 'output' => [],
+ 'selectInterfaces' => ['interfaceid', 'main', 'type', 'useip', 'ip', 'dns', 'port', 'details'],
+ $src_type => $src_ids
+ ]);
- foreach ($create_items as $index => $created_item) {
- $itemkey_to_id[$created_item['key_']] = $created_itemids[$index];
+ foreach ($src_hosts as $src_host) {
+ foreach ($src_host['interfaces'] as $src_interface) {
+ if (array_key_exists($src_interface['interfaceid'], $src_interfaceids)) {
+ $src_interfaces[$src_interface['interfaceid']] =
+ array_diff_key($src_interface, array_flip(['interfaceid']));
+ }
}
-
- $create_items = [];
}
+ }
- $item = $items[$itemid];
+ $dst_hosts = API::Host()->get([
+ 'output' => ['hostid'],
+ 'selectInterfaces' => ['interfaceid', 'main', 'type', 'useip', 'ip', 'dns', 'port', 'details'],
+ 'hostids' => $dst_hostids
+ ]);
- if ($dstHost['status'] != HOST_STATUS_TEMPLATE) {
- $type = itemTypeInterface($item['type']);
+ foreach ($dst_hosts as $dst_host) {
+ foreach ($dst_host['interfaces'] as $dst_interface) {
+ $dst_interfaceid = $dst_interface['interfaceid'];
+ unset($dst_interface['interfaceid']);
- if ($type == INTERFACE_TYPE_ANY) {
- foreach (CItem::INTERFACE_TYPES_BY_PRIORITY as $itype) {
- if (array_key_exists($type, $interfaceids)) {
- $item['interfaceid'] = $interfaceids[$itype];
- break;
- }
+ foreach ($src_interfaces as $src_interfaceid => $src_interface) {
+ if ($src_interface == $dst_interface) {
+ $interface_links[$src_interfaceid][$dst_host['hostid']] = $dst_interfaceid;
}
}
- elseif ($type !== false && $type != INTERFACE_TYPE_OPT) {
- if (!isset($interfaceids[$type])) {
- error(_s('Cannot find host interface on "%1$s" for item key "%2$s".', $dstHost['host'],
- $item['key_']
- ));
-
- return false;
- }
- $item['interfaceid'] = $interfaceids[$type];
+ if ($dst_interface['main'] == INTERFACE_PRIMARY) {
+ $dst_interfaceids[$dst_host['hostid']][$dst_interface['type']] = $dst_interfaceid;
}
}
+ }
+ }
- unset($item['itemid']);
-
- if ($item['valuemapid'] != 0) {
- if (array_key_exists($item['valuemapid'], $valuemapids_map)
- && array_key_exists($dstHost['hostid'], $valuemapids_map[$item['valuemapid']])) {
- $item['valuemapid'] = $valuemapids_map[$item['valuemapid']][$dstHost['hostid']];
- }
- else {
- $item['valuemapid'] = 0;
- }
- }
-
- $item['hostid'] = $dstHost['hostid'];
-
- if ($item['type'] == ITEM_TYPE_DEPENDENT) {
- if (array_key_exists($item['master_itemid'], $items)) {
- $src_item_key = $src_itemid_to_key[$item['master_itemid']];
- $item['master_itemid'] = $itemkey_to_id[$src_item_key];
- }
- else {
- $item_found = false;
-
- if (array_key_exists($item['master_itemid'], $dst_master_items)) {
- foreach ($dst_master_items[$item['master_itemid']] as $dst_master_item) {
- if ($dst_master_item['hostid'] == $dstHost['hostid']) {
- // A matching item on destination host has been found.
+ $master_item_links = [];
- $item['master_itemid'] = $dst_master_item['itemid'];
- $item_found = true;
- }
- }
- }
+ if ($dep_itemids) {
+ $master_items = API::Item()->get([
+ 'output' => ['itemid', 'key_'],
+ 'itemids' => array_keys($dep_itemids)
+ ]);
- // Master item does not exist on destination host or has not been selected for copying.
- if (!$item_found) {
- error(_s('Item "%1$s" cannot be copied without its master item.', $item['name']));
+ $options = $dst_is_template ? ['templateids' => $dst_hostids] : ['hostids' => $dst_hostids];
- return false;
- }
- }
- }
- else {
- unset($item['master_itemid']);
- }
+ $dst_master_items = API::Item()->get([
+ 'output' => ['itemid', 'hostid', 'key_'],
+ 'filter' => ['key_' => array_unique(array_column($master_items, 'key_'))]
+ ] + $options);
- $create_items[] = $item;
- }
+ $dst_master_itemids = [];
- if ($create_items && !API::Item()->create($create_items)) {
- return false;
+ foreach ($dst_master_items as $item) {
+ $dst_master_itemids[$item['hostid']][$item['key_']] = $item['itemid'];
}
- }
- return true;
-}
+ foreach ($master_items as $item) {
+ foreach ($dst_hostids as $dst_hostid) {
+ if (array_key_exists($dst_hostid, $dst_master_itemids)
+ && array_key_exists($item['key_'], $dst_master_itemids[$dst_hostid])) {
+ $master_item_links[$item['itemid']][$dst_hostid] = $dst_master_itemids[$dst_hostid][$item['key_']];
+ }
+ else {
+ $src_itemid = reset($dep_itemids[$item['itemid']]);
-function copyItems($srcHostId, $dstHostId, $assign_opt_interface = false) {
- $srcItems = API::Item()->get([
- 'output' => ['type', 'snmp_oid', 'name', 'key_', 'delay', 'history', 'trends', 'status', 'value_type',
- 'trapper_hosts', 'units', 'logtimefmt', 'valuemapid', 'params', 'ipmi_sensor', 'authtype', 'username',
- 'password', 'publickey', 'privatekey', 'flags', 'interfaceid', 'description', 'inventory_link',
- 'jmx_endpoint', 'master_itemid', 'templateid', 'url', 'query_fields', 'timeout', 'posts', 'status_codes',
- 'follow_redirects', 'post_type', 'http_proxy', 'headers', 'retrieve_mode', 'request_method',
- 'output_format', 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password', 'verify_peer', 'verify_host',
- 'allow_traps', 'parameters'
- ],
- 'selectTags' => ['tag', 'value'],
- 'selectPreprocessing' => ['type', 'params', 'error_handler', 'error_handler_params'],
- 'selectValueMap' => ['name'],
- 'hostids' => $srcHostId,
- 'webitems' => true,
- 'filter' => ['flags' => ZBX_FLAG_DISCOVERY_NORMAL],
- 'preservekeys' => true
- ]);
- $dstHosts = API::Host()->get([
- 'output' => ['hostid', 'host', 'status'],
- 'selectInterfaces' => ['interfaceid', 'type', 'main'],
- 'hostids' => $dstHostId,
- 'preservekeys' => true,
- 'nopermissions' => true,
- 'templated_hosts' => true
- ]);
- $dstHost = reset($dstHosts);
- $src_valuemap_names = [];
- $valuemap_map = [];
+ error(_s('Cannot copy item with key "%1$s" without its master item with key "%2$s".',
+ $src_items[$src_itemid]['key_'], $item['key_']
+ ));
- foreach ($srcItems as $src_item) {
- if ($src_item['valuemap'] && $src_item['templateid'] == 0) {
- $src_valuemap_names[] = $src_item['valuemap']['name'];
+ return false;
+ }
+ }
}
}
- if ($src_valuemap_names) {
- $valuemap_map = array_column(API::ValueMap()->get([
- 'output' => ['valuemapid', 'name'],
- 'hostids' => $dstHostId,
- 'filter' => ['name' => $src_valuemap_names]
- ]), 'valuemapid', 'name');
- }
-
- $create_order = [];
- $src_itemid_to_key = [];
- foreach ($srcItems as $itemid => $item) {
- $dependency_level = 0;
- $master_item = $item;
- $src_itemid_to_key[$itemid] = $item['key_'];
+ do {
+ $dst_items = [];
- while ($master_item['type'] == ITEM_TYPE_DEPENDENT) {
- $master_item = $srcItems[$master_item['master_itemid']];
- ++$dependency_level;
- }
+ foreach ($dst_hostids as $dst_hostid) {
+ foreach ($src_items as $src_item) {
+ $dst_item = array_diff_key($src_item, array_flip(['itemid']));
- $create_order[$itemid] = $dependency_level;
- }
- asort($create_order);
+ if ($src_item['valuemapid'] != 0) {
+ if (array_key_exists($src_item['valuemapid'], $valuemap_links)
+ && array_key_exists($dst_hostid, $valuemap_links[$src_item['valuemapid']])) {
+ $dst_item['valuemapid'] = $valuemap_links[$src_item['valuemapid']][$dst_hostid];
+ }
+ else {
+ $dst_item['valuemapid'] = 0;
+ }
+ }
- $itemkey_to_id = [];
- $create_items = [];
- $current_dependency = reset($create_order);
+ $dst_item['interfaceid'] = 0;
- foreach ($create_order as $itemid => $dependency_level) {
- $srcItem = $srcItems[$itemid];
+ if (!$dst_is_template) {
+ if (array_key_exists($src_item['interfaceid'], $interface_links)
+ && array_key_exists($dst_hostid, $interface_links[$src_item['interfaceid']])) {
+ $dst_item['interfaceid'] = $interface_links[$src_item['interfaceid']][$dst_hostid];
+ }
+ else {
+ $type = itemTypeInterface($src_item['type']);
+
+ if (in_array($type,
+ [INTERFACE_TYPE_AGENT, INTERFACE_TYPE_SNMP, INTERFACE_TYPE_JMX, INTERFACE_TYPE_IPMI]
+ )) {
+ if (array_key_exists($dst_hostid, $dst_interfaceids)
+ && array_key_exists($type, $dst_interfaceids[$dst_hostid])) {
+ $dst_item['interfaceid'] = $dst_interfaceids[$dst_hostid][$type];
+ }
+ else {
+ $hosts = API::Host()->get([
+ 'output' => ['host'],
+ 'hostids' => $dst_hostid
+ ]);
- // Skip creating web items. Those were created before.
- if ($srcItem['type'] == ITEM_TYPE_HTTPTEST) {
- continue;
- }
+ error(_s('Cannot find host interface on "%1$s" for item with key "%2$s".',
+ $hosts[0]['host'], $src_item['key_']
+ ));
- if ($current_dependency != $dependency_level && $create_items) {
- $current_dependency = $dependency_level;
- $created_itemids = API::Item()->create($create_items);
+ return false;
+ }
+ }
+ }
+ }
- if (!$created_itemids) {
- return false;
- }
- $created_itemids = $created_itemids['itemids'];
+ if ($src_item['type'] == ITEM_TYPE_DEPENDENT) {
+ $dst_item['master_itemid'] = $master_item_links[$src_item['master_itemid']][$dst_hostid];
+ }
- foreach ($create_items as $index => $created_item) {
- $itemkey_to_id[$created_item['key_']] = $created_itemids[$index];
+ $dst_items[] = ['hostid' => $dst_hostid] + $dst_item;
}
-
- $create_items = [];
}
- if ($srcItem['templateid'] != 0) {
- $srcItem = get_same_item_for_host($srcItem, $dstHost['hostid']);
+ $response = API::Item()->create($dst_items);
- if (!$srcItem) {
- return false;
- }
- $itemkey_to_id[$srcItem['key_']] = $srcItem['itemid'];
- continue;
- }
- else if ($srcItem['valuemapid'] != 0) {
- $srcItem['valuemapid'] = array_key_exists($srcItem['valuemap']['name'], $valuemap_map)
- ? $valuemap_map[$srcItem['valuemap']['name']]
- : 0;
+ if ($response === false) {
+ return false;
}
- if ($dstHost['status'] != HOST_STATUS_TEMPLATE) {
- $interface = CItem::findInterfaceForItem($srcItem['type'], $dstHost['interfaces']);
+ $_src_items = [];
- if ($interface === false && $assign_opt_interface
- && itemTypeInterface($srcItem['type']) == INTERFACE_TYPE_OPT
- && $srcItem['interfaceid'] != 0) {
- $interface = CItem::findInterfaceByPriority($dstHost['interfaces']);
- }
+ if ($src_dep_items) {
+ foreach ($dst_hostids as $dst_hostid) {
+ foreach ($src_items as $src_item) {
+ $dst_itemid = array_shift($response['itemids']);
- if ($interface) {
- $srcItem['interfaceid'] = $interface['interfaceid'];
- }
- elseif ($interface !== false) {
- error(_s('Cannot find host interface on "%1$s" for item key "%2$s".', $dstHost['host'], $srcItem['key_']));
- }
- }
- unset($srcItem['itemid']);
- unset($srcItem['templateid']);
- $srcItem['hostid'] = $dstHostId;
-
- if (!$srcItem['preprocessing']) {
- unset($srcItem['preprocessing']);
- }
+ if (array_key_exists($src_item['itemid'], $src_dep_items)) {
+ $master_item_links[$src_item['itemid']][$dst_hostid] = $dst_itemid;
- if ($srcItem['type'] == ITEM_TYPE_DEPENDENT) {
- if ($srcItems[$srcItem['master_itemid']]['type'] == ITEM_TYPE_HTTPTEST) {
- // Web items are outside the scope and are created before regular items.
- $web_item = get_same_item_for_host($srcItems[$srcItem['master_itemid']], $dstHost['hostid']);
- $srcItem['master_itemid'] = $web_item['itemid'];
- }
- else {
- $src_item_key = $src_itemid_to_key[$srcItem['master_itemid']];
- $srcItem['master_itemid'] = $itemkey_to_id[$src_item_key];
+ $_src_items = array_merge($_src_items, $src_dep_items[$src_item['itemid']]);
+ unset($src_dep_items[$src_item['itemid']]);
+ }
+ }
}
}
- else {
- unset($srcItem['master_itemid']);
- }
-
- $create_items[] = $srcItem;
- }
- if ($create_items && !API::Item()->create($create_items)) {
- return false;
- }
+ $src_items = $_src_items;
+ } while ($src_items);
return true;
}
@@ -1292,7 +1215,7 @@ function getInterfaceSelect(array $interfaces): CSelect {
/** @var CSelectOption[] $options_by_type */
$options_by_type = [];
- $interface_select->addOption(new CSelectOption(INTERFACE_TYPE_OPT, interfaceType2str(INTERFACE_TYPE_OPT)));
+ $interface_select->addOption(new CSelectOption(0, _('None')));
foreach ($interfaces as $interface) {
$option = new CSelectOption($interface['interfaceid'], getHostInterface($interface));
@@ -2228,10 +2151,426 @@ function normalizeItemPreprocessingSteps(array $preprocessing): array {
'error_handler_params' => ''
];
- // Remove fictional field that doesn't belong in DB and API.
- unset($step['sortorder']);
+ // Remove fictional fields that don't belong to DB and API.
+ unset($step['sortorder'], $step['on_fail']);
}
unset($step);
return $preprocessing;
}
+
+/**
+ * Check that the given key is not equal to the example value presented for a specific type.
+ *
+ * @param int $type
+ * @param string $key
+ *
+ * @return bool
+ */
+function isItemExampleKey(int $type, string $key): bool {
+ if (($type == ITEM_TYPE_DB_MONITOR && $key === ZBX_DEFAULT_KEY_DB_MONITOR)
+ || ($type == ITEM_TYPE_SSH && $key === ZBX_DEFAULT_KEY_SSH)
+ || ($type == ITEM_TYPE_TELNET && $key === ZBX_DEFAULT_KEY_TELNET)) {
+ error(_('Check the key, please. Default example was passed.'));
+
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Check the format of the given custom intervals. Unset the custom intervals with empty values.
+ *
+ * @param array $delay_flex
+ * @param bool $lldmacros
+ */
+function isValidCustomIntervals(array &$delay_flex, bool $lldmacros = false): bool {
+ if (!$delay_flex) {
+ return true;
+ }
+
+ $simple_interval_parser = new CSimpleIntervalParser([
+ 'usermacros' => true,
+ 'lldmacros' => $lldmacros
+ ]);
+
+ $time_period_parser = new CTimePeriodParser([
+ 'usermacros' => true,
+ 'lldmacros' => $lldmacros
+ ]);
+
+ $scheduling_interval_parser = new CSchedulingIntervalParser([
+ 'usermacros' => true,
+ 'lldmacros' => $lldmacros
+ ]);
+
+ foreach ($delay_flex as $i => $interval) {
+ if ($interval['type'] == ITEM_DELAY_FLEXIBLE) {
+ if ($interval['delay'] === '' && $interval['period'] === '') {
+ unset($delay_flex[$i]);
+ continue;
+ }
+
+ if ($simple_interval_parser->parse($interval['delay']) != CParser::PARSE_SUCCESS) {
+ error(_s('Invalid interval "%1$s".', $interval['delay']));
+
+ return false;
+ }
+ elseif ($time_period_parser->parse($interval['period']) != CParser::PARSE_SUCCESS) {
+ error(_s('Invalid interval "%1$s".', $interval['period']));
+
+ return false;
+ }
+ }
+ else {
+ if ($interval['schedule'] === '') {
+ unset($delay_flex[$i]);
+ continue;
+ }
+
+ if ($scheduling_interval_parser->parse($interval['schedule']) != CParser::PARSE_SUCCESS) {
+ error(_s('Invalid interval "%1$s".', $interval['schedule']));
+
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+/**
+ * Get all given delay intervals as string in API format.
+ *
+ * @param string $delay
+ * @param array $delay_flex
+ *
+ * @return string
+ */
+function getDelayWithCustomIntervals(string $delay, array $delay_flex): string {
+ foreach ($delay_flex as $interval) {
+ if ($interval['type'] == ITEM_DELAY_FLEXIBLE) {
+ $delay .= ';'.$interval['delay'].'/'.$interval['period'];
+ }
+ else {
+ $delay .= ';'.$interval['schedule'];
+ }
+ }
+
+ return $delay;
+}
+
+/**
+ * Format tags received via form for API input.
+ *
+ * @param array $tags Array of item tags, as received from form submit.
+ *
+ * @return array
+ */
+function prepareItemTags(array $tags): array {
+ foreach ($tags as $key => $tag) {
+ if ($tag['tag'] === '' && $tag['value'] === '') {
+ unset($tags[$key]);
+ }
+ elseif (array_key_exists('type', $tag) && !($tag['type'] & ZBX_PROPERTY_OWN)) {
+ unset($tags[$key]);
+ }
+ else {
+ unset($tags[$key]['type']);
+ }
+ }
+
+ return $tags;
+}
+
+/**
+ * Format query fields received via form for API input.
+ *
+ * @param array $query_fields
+ *
+ * @return array
+ */
+function prepareItemQueryFields(array $query_fields): array {
+ if ($query_fields) {
+ $_query_fields = [];
+
+ foreach ($query_fields['name'] as $index => $key) {
+ $value = $query_fields['value'][$index];
+ $sortorder = $query_fields['sortorder'][$index];
+
+ if ($key !== '' || $value !== '') {
+ $_query_fields[$sortorder] = [$key => $value];
+ }
+ }
+
+ ksort($_query_fields);
+ $query_fields = array_values($_query_fields);
+ }
+
+ return $query_fields;
+}
+
+/**
+ * Format headers field received via form for API input.
+ *
+ * @param array $headers
+ *
+ * @return array
+ */
+function prepareItemHeaders(array $headers): array {
+ if ($headers) {
+ $_headers = [];
+
+ foreach ($headers['name'] as $i => $name) {
+ $value = $headers['value'][$i];
+
+ if ($name === '' && $value === '') {
+ continue;
+ }
+
+ $_headers[$name] = $value;
+ }
+
+ $headers = $_headers;
+ }
+
+ return $headers;
+}
+
+/**
+ * Format parameters field received via form for API input.
+ *
+ * @param array $parameters
+ *
+ * @return array
+ */
+function prepareItemParameters(array $parameters): array {
+ $_parameters = [];
+
+ if (is_array($parameters) && array_key_exists('name', $parameters)
+ && array_key_exists('value', $parameters)) {
+ foreach ($parameters['name'] as $index => $name) {
+ if (array_key_exists($index, $parameters['value'])
+ && ($name !== '' || $parameters['value'][$index] !== '')) {
+ $_parameters[] = [
+ 'name' => $name,
+ 'value' => $parameters['value'][$index]
+ ];
+ }
+ }
+ }
+
+ return $_parameters;
+}
+
+/**
+ * Get sanitized item fields of given input.
+ *
+ * @param array $input
+ * @param string $input['templateid']
+ * @param int $input['flags']
+ * @param int $input['type']
+ * @param string $input['key_']
+ * @param int $input['value_type']
+ * @param int $input['authtype']
+ * @param int $input['allow_traps']
+ * @param int $input['hosts'][0]['status']
+ *
+ * @return array
+ */
+function getSanitizedItemFields(array $input): array {
+ $field_names = getMainItemFieldNames($input);
+
+ if ($input['flags'] != ZBX_FLAG_DISCOVERY_CREATED) {
+ $field_names = array_merge($field_names, getTypeItemFieldNames($input));
+ $field_names = getConditionalItemFieldNames($field_names, $input);
+ }
+
+ return array_intersect_key($input, array_flip($field_names));
+}
+
+/**
+ * Get main item fields of given input.
+ *
+ * @param array $input
+ * @param string $input['templateid']
+ * @param int $input['flags']
+ *
+ * @return array
+ */
+function getMainItemFieldNames(array $input): array {
+ switch ($input['flags']) {
+ case ZBX_FLAG_DISCOVERY_NORMAL:
+ if ($input['templateid'] == 0) {
+ return ['name', 'type', 'key_', 'value_type', 'units', 'history', 'trends', 'valuemapid',
+ 'inventory_link', 'logtimefmt', 'description', 'status', 'tags', 'preprocessing'
+ ];
+ }
+ else {
+ return ['history', 'trends', 'inventory_link', 'description', 'status', 'tags'];
+ }
+
+ case ZBX_FLAG_DISCOVERY_PROTOTYPE:
+ if ($input['templateid'] == 0) {
+ return ['name', 'type', 'key_', 'value_type', 'units', 'history', 'trends', 'valuemapid', 'logtimefmt',
+ 'description', 'status', 'discover', 'tags', 'preprocessing'
+ ];
+ }
+ else {
+ return ['history', 'trends', 'description', 'status', 'discover', 'tags'];
+ }
+
+ case ZBX_FLAG_DISCOVERY_CREATED:
+ return ['status'];
+ }
+}
+
+/**
+ * Get item field names of the given type and template ID.
+ *
+ * @param array $input
+ * @param string $input['templateid']
+ * @param int $input['type']
+ */
+function getTypeItemFieldNames(array $input): array {
+ switch ($input['type']) {
+ case ITEM_TYPE_ZABBIX:
+ return ['interfaceid', 'delay'];
+
+ case ITEM_TYPE_TRAPPER:
+ return ['trapper_hosts'];
+
+ case ITEM_TYPE_SIMPLE:
+ return ['interfaceid', 'username', 'password', 'delay'];
+
+ case ITEM_TYPE_INTERNAL:
+ return ['delay'];
+
+ case ITEM_TYPE_ZABBIX_ACTIVE:
+ return ['delay'];
+
+ case ITEM_TYPE_EXTERNAL:
+ return ['interfaceid', 'delay'];
+
+ case ITEM_TYPE_DB_MONITOR:
+ return ['username', 'password', 'params', 'delay'];
+
+ case ITEM_TYPE_IPMI:
+ if ($input['templateid'] == 0) {
+ return ['interfaceid', 'ipmi_sensor', 'delay'];
+ }
+ else {
+ return ['interfaceid', 'delay'];
+ }
+
+ case ITEM_TYPE_SSH:
+ return ['interfaceid', 'authtype', 'username', 'publickey', 'privatekey', 'password', 'params', 'delay'];
+
+ case ITEM_TYPE_TELNET:
+ return ['interfaceid', 'username', 'password', 'params', 'delay'];
+
+ case ITEM_TYPE_CALCULATED:
+ return ['params', 'delay'];
+
+ case ITEM_TYPE_JMX:
+ if ($input['templateid'] == 0) {
+ return ['interfaceid', 'jmx_endpoint', 'username', 'password', 'delay'];
+ }
+ else {
+ return ['interfaceid', 'username', 'password', 'delay'];
+ }
+
+ case ITEM_TYPE_SNMPTRAP:
+ return ['interfaceid'];
+
+ case ITEM_TYPE_DEPENDENT:
+ return ['master_itemid'];
+
+ case ITEM_TYPE_HTTPAGENT:
+ if ($input['templateid'] == 0) {
+ return ['url', 'query_fields', 'request_method', 'post_type', 'posts', 'headers', 'status_codes',
+ 'follow_redirects', 'retrieve_mode', 'output_format', 'http_proxy', 'interfaceid', 'authtype',
+ 'username', 'password', 'verify_peer', 'verify_host', 'ssl_cert_file', 'ssl_key_file',
+ 'ssl_key_password', 'timeout', 'delay', 'allow_traps', 'trapper_hosts'
+ ];
+ }
+ else {
+ return ['interfaceid', 'delay', 'allow_traps', 'trapper_hosts'];
+ }
+
+ case ITEM_TYPE_SNMP:
+ if ($input['templateid'] == 0) {
+ return ['interfaceid', 'snmp_oid', 'delay'];
+ }
+ else {
+ return ['interfaceid', 'delay'];
+ }
+
+ case ITEM_TYPE_SCRIPT:
+ if ($input['templateid'] == 0) {
+ return ['parameters', 'params', 'timeout', 'delay'];
+ }
+ else {
+ return ['delay'];
+ }
+ }
+}
+
+/**
+ * Get item field names excluding those that don't match a specific conditions.
+ *
+ * @param array $field_names
+ * @param array $input
+ * @param int $input['type']
+ * @param string $input['key_']
+ * @param int $input['value_type']
+ * @param int $input['authtype']
+ * @param int $input['allow_traps']
+ * @param int $input['hosts'][0]['status']
+ *
+ * @return array
+ */
+function getConditionalItemFieldNames(array $field_names, array $input): array {
+ return array_filter($field_names, static function ($field_name) use ($input): bool {
+ switch ($field_name) {
+ case 'units':
+ case 'trends':
+ return in_array($input['value_type'], [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64]);
+
+ case 'valuemapid':
+ return in_array($input['value_type'],
+ [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64]
+ );
+
+ case 'inventory_link':
+ return in_array($input['value_type'],
+ [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_STR, ITEM_VALUE_TYPE_UINT64, ITEM_VALUE_TYPE_TEXT]
+ );
+
+ case 'logtimefmt':
+ return $input['value_type'] == ITEM_VALUE_TYPE_LOG;
+
+ case 'interfaceid':
+ return in_array($input['hosts'][0]['status'], [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]);
+
+ case 'username':
+ case 'password':
+ return $input['type'] != ITEM_TYPE_HTTPAGENT || in_array($input['authtype'],
+ [HTTPTEST_AUTH_BASIC, HTTPTEST_AUTH_NTLM, HTTPTEST_AUTH_KERBEROS, HTTPTEST_AUTH_DIGEST]
+ );
+
+ case 'delay':
+ return $input['type'] != ITEM_TYPE_ZABBIX_ACTIVE || strncmp($input['key_'], 'mqtt.get', 8) != 0;
+
+ case 'trapper_hosts':
+ return $input['type'] != ITEM_TYPE_HTTPAGENT || $input['allow_traps'] == HTTPCHECK_ALLOW_TRAPS_ON;
+
+ case 'publickey':
+ case 'privatekey':
+ return $input['authtype'] == ITEM_AUTHTYPE_PUBLICKEY;
+ }
+
+ return true;
+ });
+}
diff --git a/ui/include/page_header.php b/ui/include/page_header.php
index 693c40e50f3..79c3fecef32 100644
--- a/ui/include/page_header.php
+++ b/ui/include/page_header.php
@@ -114,28 +114,27 @@ if ($page['type'] == PAGE_TYPE_HTML) {
global $ZBX_SERVER_NAME;
// page title
- $pageTitle = '';
+ $page_title = '';
if (isset($ZBX_SERVER_NAME) && $ZBX_SERVER_NAME !== '') {
- $pageTitle = $ZBX_SERVER_NAME.NAME_DELIMITER;
+ $page_title = $ZBX_SERVER_NAME.NAME_DELIMITER;
}
- $pageTitle .= isset($page['title']) ? $page['title'] : _('Zabbix');
+ $page_title .= isset($page['title']) ? $page['title'] : _('Zabbix');
if (defined('ZBX_PAGE_DO_JS_REFRESH') && CWebUser::getRefresh() != 0) {
- $pageTitle .= ' ['._s('refreshed every %1$s sec.', CWebUser::getRefresh()).']';
+ $page_title .= ' ['._s('refreshed every %1$s sec.', CWebUser::getRefresh()).']';
}
- $pageHeader = new CPageHeader($pageTitle, CWebUser::getLang());
+ $page_header = new CHtmlPageHeader($page_title, CWebUser::getLang());
$is_standard_page = (!defined('ZBX_PAGE_NO_MENU') || $page['web_layout_mode'] == ZBX_LAYOUT_KIOSKMODE);
- $theme = ZBX_DEFAULT_THEME;
if (!ZBX_PAGE_NO_THEME) {
global $DB;
if (!empty($DB['DB'])) {
- $theme = getUserTheme(CWebUser::$data);
-
- $pageHeader->addStyle(getTriggerSeverityCss());
- $pageHeader->addStyle(getTriggerStatusCss());
+ $page_header
+ ->setTheme(getUserTheme(CWebUser::$data))
+ ->addStyle(getTriggerSeverityCss())
+ ->addStyle(getTriggerStatusCss());
// perform Zabbix server check only for standard pages
if ($is_standard_page && CSettingsHelper::get(CSettingsHelper::SERVER_CHECK_INTERVAL)) {
@@ -143,39 +142,65 @@ if ($page['type'] == PAGE_TYPE_HTML) {
}
}
}
- $pageHeader->addCssFile('assets/styles/'.CHtml::encode($theme).'.css');
+
+ $page_header->addCssFile('assets/styles/'.$page_header->getTheme().'.css');
+
+ foreach (APP::ModuleManager()->getAssets() as $module_id => $assets) {
+ $module = APP::ModuleManager()->getModule($module_id);
+ $relative_path = $module->getRelativePath().'/assets/css';
+
+ foreach ($assets['css'] as $css_file) {
+ $page_header->addCssFile((new CUrl($relative_path.'/'.$css_file))->getUrl());
+ }
+ }
if ($page['file'] == 'sysmap.php') {
- $pageHeader->addCssFile('imgstore.php?css=1&output=css');
+ $page_header->addCssFile('imgstore.php?css=1&output=css');
}
- $pageHeader
- ->addJsFile((new CUrl('js/browsers.js'))->getUrl())
- ->addJsBeforeScripts(
- 'var PHP_TZ_OFFSET = '.date('Z').','.
- 'PHP_ZBX_FULL_DATE_TIME = "'.ZBX_FULL_DATE_TIME.'";'
- );
+ $page_header
+ ->addJavaScript('
+ const PHP_TZ_OFFSET = '.date('Z').';
+ const PHP_ZBX_FULL_DATE_TIME = "'.ZBX_FULL_DATE_TIME.'";
+ ')
+ ->addJsFile((new CUrl('js/browsers.js'))->getUrl());
// Show GUI messages in pages with menus and in fullscreen mode.
if (!defined('ZBX_PAGE_NO_JSLOADER')) {
- $pageHeader->addJsFile((new CUrl('jsLoader.php'))
- ->setArgument('ver', ZABBIX_VERSION)
- ->setArgument('lang', CWebUser::$data['lang'])
- ->setArgument('showGuiMessaging', ($is_standard_page && !CWebUser::isGuest()) ? 1 : null)
- ->getUrl()
- );
-
- if (array_key_exists('scripts', $page) && $page['scripts']) {
- $pageHeader->addJsFile((new CUrl('jsLoader.php'))
+ $page_header->addJsFile(
+ (new CUrl('jsLoader.php'))
->setArgument('ver', ZABBIX_VERSION)
->setArgument('lang', CWebUser::$data['lang'])
- ->setArgument('files', $page['scripts'])
+ ->setArgument('showGuiMessaging', ($is_standard_page && !CWebUser::isGuest()) ? 1 : null)
->getUrl()
+ );
+
+ if (array_key_exists('scripts', $page) && $page['scripts']) {
+ $page_header->addJsFile(
+ (new CUrl('jsLoader.php'))
+ ->setArgument('ver', ZABBIX_VERSION)
+ ->setArgument('lang', CWebUser::$data['lang'])
+ ->setArgument('files', $page['scripts'])
+ ->getUrl()
);
}
+
+ foreach (APP::ModuleManager()->getAssets() as $module_id => $assets) {
+ $module = APP::ModuleManager()->getModule($module_id);
+ $relative_path = $module->getRelativePath().'/assets/js';
+ $translation_strings = $module->getTranslationStrings();
+
+ foreach ($assets['js'] as $js_file) {
+ $page_header->addJsFile((new CUrl($relative_path.'/'.$js_file))->getUrl());
+
+ if (array_key_exists($js_file, $translation_strings)) {
+ $page_header->addJsTranslationStrings($translation_strings[$js_file]);
+ }
+ }
+ }
}
- $pageHeader->display();
+ $page_header->show();
echo '<body>';
}
diff --git a/ui/include/validate.inc.php b/ui/include/validate.inc.php
index af7fa11b066..f777d2aab02 100644
--- a/ui/include/validate.inc.php
+++ b/ui/include/validate.inc.php
@@ -378,7 +378,7 @@ function invalid_url($msg = null) {
unset_all();
show_error_message($msg);
- (new CWidget())->show();
+ (new CHtmlPage())->show();
require_once dirname(__FILE__).'/page_footer.php';
}
diff --git a/ui/include/views/administration.auditacts.list.php b/ui/include/views/administration.auditacts.list.php
index 241b33fa074..16527340b71 100644
--- a/ui/include/views/administration.auditacts.list.php
+++ b/ui/include/views/administration.auditacts.list.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$auditWidget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Action log'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ADMINISTRATION_AUDITACTS_LIST));
@@ -47,7 +47,7 @@ $filterColumn->addRow(new CLabel(_('Recipients'), 'filter_userids__ms'), [
]))->setWidth(ZBX_TEXTAREA_FILTER_STANDARD_WIDTH)
]);
-$auditWidget->addItem(
+$html_page->addItem(
(new CFilter())
->setResetUrl(new CUrl('auditacts.php'))
->setProfile($data['timeline']['profileIdx'])
@@ -141,7 +141,6 @@ $objData = [
zbx_add_post_js('timeControl.addObject("events", '.zbx_jsvalue($data['timeline']).', '.zbx_jsvalue($objData).');');
zbx_add_post_js('timeControl.processObjects();');
-// append form to widget
-$auditWidget->addItem($auditForm);
-
-$auditWidget->show();
+$html_page
+ ->addItem($auditForm)
+ ->show();
diff --git a/ui/include/views/configuration.action.edit.php b/ui/include/views/configuration.action.edit.php
index a4f3c51bcf0..25ebb5a2575 100644
--- a/ui/include/views/configuration.action.edit.php
+++ b/ui/include/views/configuration.action.edit.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.action.edit.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Actions'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::ALERTS_ACTION_EDIT));
@@ -37,7 +37,7 @@ $actionForm = (new CForm())
->setArgument('eventsource', $data['eventsource'])
->getUrl()
)
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form']);
if ($data['actionid']) {
@@ -539,7 +539,6 @@ $action_tabs->setFooter([
]);
$actionForm->addItem($action_tabs);
-// Append form to widget.
-$widget->addItem($actionForm);
-
-$widget->show();
+$html_page
+ ->addItem($actionForm)
+ ->show();
diff --git a/ui/include/views/configuration.action.list.php b/ui/include/views/configuration.action.list.php
index cc0fd295d84..c7c229a04d6 100644
--- a/ui/include/views/configuration.action.list.php
+++ b/ui/include/views/configuration.action.list.php
@@ -59,7 +59,7 @@ foreach ($submenu_source as $value => $label) {
$current_url = (new CUrl('actionconf.php'))->setArgument('eventsource', $data['eventsource']);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle($title)
->setTitleSubmenu(['main_section' => ['items' => $submenu]])
->setDocUrl(CDocHelper::getUrl(CDocHelper::ALERTS_ACTION_LIST))
@@ -180,7 +180,6 @@ $actionForm->addItem([
], $data['eventsource'])
]);
-// append form to widget
-$widget->addItem($actionForm);
-
-$widget->show();
+$html_page
+ ->addItem($actionForm)
+ ->show();
diff --git a/ui/include/views/configuration.copy.elements.php b/ui/include/views/configuration.copy.elements.php
index 82fd613109d..68110cac228 100644
--- a/ui/include/views/configuration.copy.elements.php
+++ b/ui/include/views/configuration.copy.elements.php
@@ -24,7 +24,7 @@
* @var array $data
*/
-$widget = (new CWidget())->setTitle($data['title']);
+$html_page = (new CHtmlPage())->setTitle($data['title']);
// append host summary to widget header
if ($data['hostid'] != 0) {
@@ -42,13 +42,13 @@ if ($data['hostid'] != 0) {
$host_table_element = '';
}
- $widget->setNavigation(getHostNavigation($host_table_element, $data['hostid']));
+ $html_page->setNavigation(getHostNavigation($host_table_element, $data['hostid']));
}
// create form
$form = (new CForm('post', (new CUrl())->getUrl()))
->setName('elements_form')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('action', $data['action'])
->addVar($data['elements_field'], $data['elements'])
->addVar('hostid', $data['hostid']);
@@ -81,11 +81,11 @@ $tab_view->setFooter(makeFormFooter(
));
$form->addItem($tab_view);
-$widget->addItem($form);
+$html_page->addItem($form);
require_once dirname(__FILE__).'/js/configuration.copy.elements.js.php';
-$widget->show();
+$html_page->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/include/views/configuration.graph.edit.php b/ui/include/views/configuration.graph.edit.php
index c10c07c64d8..1d85b47b2d5 100644
--- a/ui/include/views/configuration.graph.edit.php
+++ b/ui/include/views/configuration.graph.edit.php
@@ -23,16 +23,16 @@
* @var CView $this
*/
-$widget = new CWidget();
+$html_page = new CHtmlPage();
if ($data['parent_discoveryid'] === null) {
- $widget
+ $html_page
->setTitle(_('Graphs'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_GRAPH_EDIT))
->setNavigation(getHostNavigation('graphs', $data['hostid']));
}
else {
- $widget
+ $html_page
->setTitle(_('Graph prototypes'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_PROTOTYPE_GRAPH_EDIT))
->setNavigation(getHostNavigation('graphs', $data['hostid'], $data['parent_discoveryid']));
@@ -46,7 +46,7 @@ $url = (new CUrl('graphs.php'))
// Create form.
$graphForm = (new CForm('post', $url))
->setName('graphForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form'])
->addVar('hostid', $data['hostid']);
@@ -533,10 +533,9 @@ require_once dirname(__FILE__).'/js/configuration.graph.edit.js.php';
$graphForm->addItem($graphTab);
-// Append form to widget.
-$widget->addItem($graphForm);
-
-$widget->show();
+$html_page
+ ->addItem($graphForm)
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/include/views/configuration.graph.list.php b/ui/include/views/configuration.graph.list.php
index d999c4a345b..c30e18a1ded 100644
--- a/ui/include/views/configuration.graph.list.php
+++ b/ui/include/views/configuration.graph.list.php
@@ -26,7 +26,7 @@
$this->includeJsFile('configuration.graph.list.js.php');
if (!empty($this->data['parent_discoveryid'])) {
- $widget = (new CWidget())
+ $html_page = (new CHtmlPage())
->setTitle(_('Graph prototypes'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_GRAPH_PROTOTYPE_LIST
@@ -48,7 +48,7 @@ if (!empty($this->data['parent_discoveryid'])) {
->setNavigation(getHostNavigation('graphs', $this->data['hostid'], $this->data['parent_discoveryid']));
}
else {
- $widget = (new CWidget())
+ $html_page = (new CHtmlPage())
->setTitle(_('Graphs'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_GRAPH_LIST
@@ -75,13 +75,13 @@ else {
);
if (!empty($this->data['hostid'])) {
- $widget->setNavigation(getHostNavigation('graphs', $this->data['hostid']));
+ $html_page->setNavigation(getHostNavigation('graphs', $this->data['hostid']));
}
// Add filter tab.
$hg_ms_params = $data['context'] === 'host' ? ['with_hosts' => true] : ['with_templates' => true];
- $widget->addItem(
+ $html_page->addItem(
(new CFilter())
->setResetUrl((new CUrl('graphs.php'))->setArgument('context', $data['context']))
->setProfile($data['profileIdx'])
@@ -270,7 +270,6 @@ $graphForm->addItem([
)
]);
-// append form to widget
-$widget->addItem($graphForm);
-
-$widget->show();
+$html_page
+ ->addItem($graphForm)
+ ->show();
diff --git a/ui/include/views/configuration.host.discovery.edit.php b/ui/include/views/configuration.host.discovery.edit.php
index aa08f03049c..7d7fe2672b7 100644
--- a/ui/include/views/configuration.host.discovery.edit.php
+++ b/ui/include/views/configuration.host.discovery.edit.php
@@ -24,7 +24,7 @@
* @var array $data
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Discovery rules'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HOST_DISCOVERY_EDIT))
->setNavigation(getHostNavigation('discoveries', $data['hostid'],
@@ -38,7 +38,7 @@ $url = (new CUrl('host_discovery.php'))
$form = (new CForm('post', $url))
->setId('host-discovery-form')
->setName('itemForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form'])
->addVar('hostid', $data['hostid'])
->addVar('backurl', $data['backurl']);
@@ -1021,11 +1021,11 @@ else {
$tab->setFooter(new CFormGrid($form_actions));
$form->addItem($tab);
-$widget->addItem($form);
+$html_page->addItem($form);
require_once __DIR__.'/js/configuration.host.discovery.edit.js.php';
-$widget->show();
+$html_page->show();
(new CScriptTag('
item_form.init('.json_encode([
diff --git a/ui/include/views/configuration.host.discovery.list.php b/ui/include/views/configuration.host.discovery.list.php
index c5a4f46d2d2..2dc1a73c8d5 100644
--- a/ui/include/views/configuration.host.discovery.list.php
+++ b/ui/include/views/configuration.host.discovery.list.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.host.discovery.list.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Discovery rules'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_DISCOVERY_LIST
@@ -52,7 +52,7 @@ $widget = (new CWidget())
);
if ($data['hostid'] != 0) {
- $widget->setNavigation(getHostNavigation('discoveries', $data['hostid']));
+ $html_page->setNavigation(getHostNavigation('discoveries', $data['hostid']));
}
// Add filter tab.
@@ -177,7 +177,7 @@ $filter_column3->addRow(_('Status'),
$filter->addFilterTab(_('Filter'), [$filter_column1, $filter_column2, $filter_column3]);
-$widget->addItem($filter);
+$html_page->addItem($filter);
$url = (new CUrl('host_discovery.php'))
->setArgument('context', $data['context'])
@@ -361,10 +361,9 @@ $discoveryForm->addItem([$discoveryTable, $data['paging'], new CActionButtonList
$button_list, $data['checkbox_hash']
)]);
-// Append form to widget.
-$widget->addItem($discoveryForm);
-
-$widget->show();
+$html_page
+ ->addItem($discoveryForm)
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/include/views/configuration.host.prototype.edit.php b/ui/include/views/configuration.host.prototype.edit.php
index 2c5093777d0..d182b45711b 100644
--- a/ui/include/views/configuration.host.prototype.edit.php
+++ b/ui/include/views/configuration.host.prototype.edit.php
@@ -29,7 +29,7 @@ require_once __DIR__.'/js/common.template.edit.js.php';
$host_prototype = $data['host_prototype'];
$parent_host = $data['parent_host'];
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Host prototypes'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HOST_PROTOTYPE_EDIT))
->setNavigation(getHostNavigation('hosts', $data['discovery_rule']['hostid'], $data['discovery_rule']['itemid']));
@@ -48,7 +48,7 @@ $url = (new CUrl('host_prototypes.php'))
$form = (new CForm('post', $url))
->setId('host-prototype-form')
->setName('hostPrototypeForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', getRequest('form', 1))
->addVar('parent_discoveryid', $data['discovery_rule']['itemid'])
->addVar('tls_accept', $parent_host['tls_accept'])
@@ -449,6 +449,7 @@ else {
}
$form->addItem($tabs);
-$widget->addItem($form);
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/include/views/configuration.host.prototype.list.php b/ui/include/views/configuration.host.prototype.list.php
index da4db4cdd5a..9db4adf4165 100644
--- a/ui/include/views/configuration.host.prototype.list.php
+++ b/ui/include/views/configuration.host.prototype.list.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.host.prototype.list.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Host prototypes'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_PROTOTYPE_LIST
@@ -206,7 +206,6 @@ $itemForm->addItem([
)
]);
-// append form to widget
-$widget->addItem($itemForm);
-
-$widget->show();
+$html_page
+ ->addItem($itemForm)
+ ->show();
diff --git a/ui/include/views/configuration.httpconf.edit.php b/ui/include/views/configuration.httpconf.edit.php
index 7da317aece8..33ca974d66c 100644
--- a/ui/include/views/configuration.httpconf.edit.php
+++ b/ui/include/views/configuration.httpconf.edit.php
@@ -23,13 +23,13 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Web monitoring'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_HTTPCONF_EDIT));
// append host summary to widget header
if (!empty($this->data['hostid'])) {
- $widget->setNavigation(getHostNavigation('web', $this->data['hostid']));
+ $html_page->setNavigation(getHostNavigation('web', $this->data['hostid']));
}
$url = (new CUrl('httpconf.php'))
@@ -40,7 +40,7 @@ $url = (new CUrl('httpconf.php'))
$http_form = (new CForm('post', $url))
->setId('http-form')
->setName('httpForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $this->data['form'])
->addVar('hostid', $this->data['hostid'])
->addVar('templated', $this->data['templated']);
@@ -281,7 +281,7 @@ else {
}
$http_form->addItem($http_tab);
-$widget->addItem($http_form);
+$html_page->addItem($http_form);
$this->data['scenario_tab_data'] = [
'agent_visibility' => [],
@@ -300,7 +300,7 @@ zbx_subarray_push($this->data['scenario_tab_data']['agent_visibility'], ZBX_AGEN
require_once dirname(__FILE__).'/js/configuration.httpconf.edit.js.php';
-$widget->show();
+$html_page->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/include/views/configuration.httpconf.list.php b/ui/include/views/configuration.httpconf.list.php
index ba061589981..23c2538def5 100644
--- a/ui/include/views/configuration.httpconf.list.php
+++ b/ui/include/views/configuration.httpconf.list.php
@@ -88,7 +88,7 @@ $filter = (new CFilter())
->addvar('context', $data['context'])
->addFilterTab(_('Filter'), [$filter_column_left, $filter_column_right]);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Web monitoring'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_HTTPCONF_LIST
@@ -115,10 +115,10 @@ $widget = (new CWidget())
);
if (!empty($this->data['hostid'])) {
- $widget->setNavigation(getHostNavigation('web', $this->data['hostid']));
+ $html_page->setNavigation(getHostNavigation('web', $this->data['hostid']));
}
-$widget->addItem($filter);
+$html_page->addItem($filter);
$url = (new CUrl('httpconf.php'))
->setArgument('context', $data['context'])
@@ -237,10 +237,9 @@ $httpForm->addItem([$httpTable, $data['paging'], new CActionButtonList('action',
$data['hostid']
)]);
-// Append form to widget.
-$widget->addItem($httpForm);
-
-$widget->show();
+$html_page
+ ->addItem($httpForm)
+ ->show();
(new CScriptTag('view.init();'))
->setOnDocumentReady()
diff --git a/ui/include/views/configuration.item.edit.php b/ui/include/views/configuration.item.edit.php
index 98420185b37..4e527061832 100644
--- a/ui/include/views/configuration.item.edit.php
+++ b/ui/include/views/configuration.item.edit.php
@@ -24,14 +24,14 @@
* @var array $data
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Items'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_ITEM_EDIT));
$host = $data['host'];
if (!empty($data['hostid'])) {
- $widget->setNavigation(getHostNavigation('items', $data['hostid']));
+ $html_page->setNavigation(getHostNavigation('items', $data['hostid']));
}
$url = (new CUrl('items.php'))
@@ -42,7 +42,7 @@ $url = (new CUrl('items.php'))
$form = (new CForm('post', $url))
->setId('item-form')
->setName('itemForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form'])
->addVar('hostid', $data['hostid']);
@@ -612,7 +612,7 @@ if ($data['display_interfaces']) {
$item_tab->addItem([
(new CLabel(_('Host interface'), 'interface'))->setId('js-item-interface-label'),
(new CFormField(
- (new CTextBox('interface', interfaceType2str(INTERFACE_TYPE_OPT), true))
+ (new CTextBox('interface', _('None'), true))
->setAttribute('disabled', 'disabled')
))->setId('js-item-interface-field')
]);
@@ -1103,11 +1103,11 @@ else {
}
$form->addItem($item_tabs);
-$widget->addItem($form);
+$html_page->addItem($form);
require_once __DIR__.'/js/configuration.item.edit.js.php';
-$widget->show();
+$html_page->show();
(new CScriptTag('
item_form.init('.json_encode([
diff --git a/ui/include/views/configuration.item.list.php b/ui/include/views/configuration.item.list.php
index c7c335c23ef..4eade5ab61c 100644
--- a/ui/include/views/configuration.item.list.php
+++ b/ui/include/views/configuration.item.list.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.item.list.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Items'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_ITEM_LIST
@@ -52,10 +52,10 @@ $widget = (new CWidget())
);
if ($data['hostid'] != 0) {
- $widget->setNavigation(getHostNavigation('items', $data['hostid']));
+ $html_page->setNavigation(getHostNavigation('items', $data['hostid']));
}
-$widget->addItem(new CPartial('configuration.filter.items', [
+$html_page->addItem(new CPartial('configuration.filter.items', [
'filter_data' => $data['filter_data'],
'subfilter' => $data['subfilter'],
'context' => $data['context']
@@ -343,10 +343,9 @@ $itemForm->addItem([$itemTable, $data['paging'], new CActionButtonList('action',
$data['checkbox_hash']
)]);
-// Append form to widget.
-$widget->addItem($itemForm);
-
-$widget->show();
+$html_page
+ ->addItem($itemForm)
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/include/views/configuration.item.prototype.edit.php b/ui/include/views/configuration.item.prototype.edit.php
index 95bdb53e732..9ce17bf2fc2 100644
--- a/ui/include/views/configuration.item.prototype.edit.php
+++ b/ui/include/views/configuration.item.prototype.edit.php
@@ -24,12 +24,12 @@
* @var array $data
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Item prototypes'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_ITEM_PROTOTYPE_EDIT));
if (!empty($data['hostid'])) {
- $widget->setNavigation(getHostNavigation('items', $data['hostid'], $data['parent_discoveryid']));
+ $html_page->setNavigation(getHostNavigation('items', $data['hostid'], $data['parent_discoveryid']));
}
$url = (new CUrl('disc_prototypes.php'))
@@ -40,7 +40,7 @@ $url = (new CUrl('disc_prototypes.php'))
$form = (new CForm('post', $url))
->setId('item-prototype-form')
->setName('itemForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form'])
->addVar('parent_discoveryid', $data['parent_discoveryid']);
@@ -597,8 +597,7 @@ if ($data['display_interfaces']) {
->setValue($data['interfaceid'])
->addClass(ZBX_STYLE_ZSELECT_HOST_INTERFACE)
->setFocusableElementId('interfaceid')
- ->setAriaRequired()
- ->setReadonly(($data['type'] == ITEM_TYPE_HTTPAGENT) ? $readonly : false);
+ ->setAriaRequired();
$item_tab->addItem([
(new CLabel(_('Host interface'), $select_interface->getFocusableElementId()))
@@ -629,9 +628,12 @@ $item_tab->addItem([
$item_tab
->addItem([
- (new CLabel(_('IPMI sensor'), 'ipmi_sensor'))->setId('js-item-impi-sensor-label'),
+ (new CLabel(_('IPMI sensor'), 'ipmi_sensor'))
+ ->setAsteriskMark()
+ ->setId('js-item-impi-sensor-label'),
(new CFormField((new CTextBox('ipmi_sensor', $data['ipmi_sensor'], $readonly, 128))
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setAriaRequired()
))->setId('js-item-impi-sensor-field')
])
->addItem([
@@ -940,11 +942,11 @@ else {
}
$form->addItem($item_tabs);
-$widget->addItem($form);
+$html_page->addItem($form);
require_once __DIR__.'/js/configuration.item.prototype.edit.js.php';
-$widget->show();
+$html_page->show();
(new CScriptTag('
item_form.init('.json_encode([
diff --git a/ui/include/views/configuration.item.prototype.list.php b/ui/include/views/configuration.item.prototype.list.php
index d15cd8ef074..5de2fa06b49 100644
--- a/ui/include/views/configuration.item.prototype.list.php
+++ b/ui/include/views/configuration.item.prototype.list.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.item.prototype.list.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Item prototypes'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_ITEM_PROTOTYPE_LIST
@@ -226,7 +226,6 @@ $itemForm->addItem([
)
]);
-// append form to widget
-$widget->addItem($itemForm);
-
-$widget->show();
+$html_page
+ ->addItem($itemForm)
+ ->show();
diff --git a/ui/include/views/configuration.maintenance.edit.php b/ui/include/views/configuration.maintenance.edit.php
index 82fd38a3775..9184f0b60c6 100644
--- a/ui/include/views/configuration.maintenance.edit.php
+++ b/ui/include/views/configuration.maintenance.edit.php
@@ -25,14 +25,14 @@
require_once dirname(__FILE__).'/js/configuration.maintenance.edit.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Maintenance periods'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_MAINTENANCE_EDIT));
$maintenance_form = (new CForm())
->setId('maintenance-form')
->setName('maintenanceForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form']);
if (array_key_exists('maintenanceid', $data) && $data['maintenanceid']) {
@@ -281,6 +281,6 @@ else {
$maintenance_form->addItem($maintenance_tab);
-$widget->addItem($maintenance_form);
-
-$widget->show();
+$html_page
+ ->addItem($maintenance_form)
+ ->show();
diff --git a/ui/include/views/configuration.maintenance.list.php b/ui/include/views/configuration.maintenance.list.php
index 8a0fe745fe8..e096aa44b56 100644
--- a/ui/include/views/configuration.maintenance.list.php
+++ b/ui/include/views/configuration.maintenance.list.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Maintenance periods'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_MAINTENANCE_LIST))
->setControls(
@@ -129,7 +129,6 @@ $maintenanceForm->addItem([
])
]);
-// append form to widget
-$widget->addItem($maintenanceForm);
-
-$widget->show();
+$html_page
+ ->addItem($maintenanceForm)
+ ->show();
diff --git a/ui/include/views/configuration.template.edit.php b/ui/include/views/configuration.template.edit.php
index dc5239869c7..0a86265f25e 100644
--- a/ui/include/views/configuration.template.edit.php
+++ b/ui/include/views/configuration.template.edit.php
@@ -25,12 +25,12 @@
require_once __DIR__.'/js/common.template.edit.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Templates'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_TEMPLATES_EDIT));
if ($data['form'] !== 'clone' && $data['form'] !== 'full_clone') {
- $widget->setNavigation(getHostNavigation('', $data['templateid']));
+ $html_page->setNavigation(getHostNavigation('', $data['templateid']));
}
$tabs = new CTabView();
@@ -42,7 +42,7 @@ if (!hasRequest('form_refresh')) {
$form = (new CForm())
->setId('templates-form')
->setName('templatesForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form']);
if ($data['templateid'] != 0) {
@@ -236,6 +236,7 @@ else {
}
$form->addItem($tabs);
-$widget->addItem($form);
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/include/views/configuration.template.list.php b/ui/include/views/configuration.template.list.php
index 4d7ead032c2..55839182cc0 100644
--- a/ui/include/views/configuration.template.list.php
+++ b/ui/include/views/configuration.template.list.php
@@ -83,7 +83,7 @@ $filter = (new CFilter())
(new CFormList())->addRow(_('Tags'), $filter_tags_table)
]);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Templates'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_TEMPLATES_LIST))
->setControls((new CTag('nav', true,
@@ -296,6 +296,6 @@ $form->addItem([
)
]);
-$widget->addItem($form);
-
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/include/views/configuration.trigger.prototype.edit.php b/ui/include/views/configuration.trigger.prototype.edit.php
index 407e4f392d8..d77434b6065 100644
--- a/ui/include/views/configuration.trigger.prototype.edit.php
+++ b/ui/include/views/configuration.trigger.prototype.edit.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.triggers.edit.js.php';
-$triggersWidget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Trigger prototypes'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_TRIGGER_PROTOTYPE_EDIT))
->setNavigation(getHostNavigation('triggers', $data['hostid'], $data['parent_discoveryid']));
@@ -39,7 +39,7 @@ $url = (new CUrl('trigger_prototypes.php'))
$triggersForm = (new CForm('post', $url))
->setId('triggers-prototype-form')
->setName('triggersForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form'])
->addItem((new CVar('parent_discoveryid', $data['parent_discoveryid']))->removeId())
->addVar('expression_constructor', $data['expression_constructor'])
@@ -749,9 +749,9 @@ else {
// append tabs to form
$triggersForm->addItem($triggersTab);
-$triggersWidget->addItem($triggersForm);
-
-$triggersWidget->show();
+$html_page
+ ->addItem($triggersForm)
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/include/views/configuration.trigger.prototype.list.php b/ui/include/views/configuration.trigger.prototype.list.php
index 82fef6e1bb5..ecc66d76ae2 100644
--- a/ui/include/views/configuration.trigger.prototype.list.php
+++ b/ui/include/views/configuration.trigger.prototype.list.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/configuration.trigger.prototype.list.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Trigger prototypes'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_TRIGGER_PROTOTYPE_LIST
@@ -226,7 +226,6 @@ $triggersForm->addItem([
)
]);
-// append form to widget
-$widget->addItem($triggersForm);
-
-$widget->show();
+$html_page
+ ->addItem($triggersForm)
+ ->show();
diff --git a/ui/include/views/configuration.triggers.edit.php b/ui/include/views/configuration.triggers.edit.php
index b2799572593..893d8c6bcf3 100644
--- a/ui/include/views/configuration.triggers.edit.php
+++ b/ui/include/views/configuration.triggers.edit.php
@@ -25,13 +25,13 @@
require_once dirname(__FILE__).'/js/configuration.triggers.edit.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Triggers'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::DATA_COLLECTION_TRIGGERS_EDIT));
// Append host summary to widget header.
if ($data['hostid'] != 0) {
- $widget->setNavigation(getHostNavigation('triggers', $data['hostid']));
+ $html_page->setNavigation(getHostNavigation('triggers', $data['hostid']));
}
$url = (new CUrl('triggers.php'))
@@ -42,7 +42,7 @@ $url = (new CUrl('triggers.php'))
$triggersForm = (new CForm('post', $url))
->setid('triggers-form')
->setName('triggersForm')
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
->addVar('form', $data['form'])
->addVar('hostid', $data['hostid'])
->addVar('expression_constructor', $data['expression_constructor'])
@@ -730,9 +730,9 @@ else {
// Append tabs to form.
$triggersForm->addItem($triggersTab);
-$widget->addItem($triggersForm);
-
-$widget->show();
+$html_page
+ ->addItem($triggersForm)
+ ->show();
(new CScriptTag('
view.init('.json_encode([
diff --git a/ui/include/views/configuration.triggers.list.php b/ui/include/views/configuration.triggers.list.php
index 0072c028e4d..6efdfad5d0b 100644
--- a/ui/include/views/configuration.triggers.list.php
+++ b/ui/include/views/configuration.triggers.list.php
@@ -152,7 +152,7 @@ $filter = (new CFilter())
->addvar('context', $data['context'], 'filter_context')
->addFilterTab(_('Filter'), [$filter_column1, $filter_column2]);
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Triggers'))
->setDocUrl(CDocHelper::getUrl($data['context'] === 'host'
? CDocHelper::DATA_COLLECTION_HOST_TRIGGERS_LIST
@@ -179,10 +179,10 @@ $widget = (new CWidget())
);
if ($data['single_selected_hostid'] != 0) {
- $widget->setNavigation(getHostNavigation('triggers', $data['single_selected_hostid']));
+ $html_page->setNavigation(getHostNavigation('triggers', $data['single_selected_hostid']));
}
-$widget->addItem($filter);
+$html_page->addItem($filter);
$url = (new CUrl('triggers.php'))
->setArgument('context', $data['context'])
@@ -376,10 +376,9 @@ $triggers_form->addItem([
)
]);
-// append form to widget
-$widget->addItem($triggers_form);
-
-$widget->show();
+$html_page
+ ->addItem($triggers_form)
+ ->show();
(new CScriptTag('view.init();'))
->setOnDocumentReady()
diff --git a/ui/include/views/general.warning.php b/ui/include/views/general.warning.php
index b2f3f2ba3c9..90b3bd0bfba 100644
--- a/ui/include/views/general.warning.php
+++ b/ui/include/views/general.warning.php
@@ -21,11 +21,15 @@
/**
* @var CView $this
+ * @var array $data
*/
-$pageHeader = (new CPageHeader(_('Warning').' ['._s('refreshed every %1$s sec.', 30).']', CWebUser::getLang()))
- ->addCssFile('assets/styles/'.CHtml::encode($data['theme']).'.css')
- ->display();
+$page_header = (new CHtmlPageHeader(_('Warning').' ['._s('refreshed every %1$s sec.', 30).']', CWebUser::getLang()));
+
+$page_header
+ ->setTheme($data['theme'])
+ ->addCssFile('assets/styles/'.$page_header->getTheme().'.css')
+ ->show();
$buttons = array_key_exists('buttons', $data)
? $data['buttons']
diff --git a/ui/include/views/inventory.host.list.php b/ui/include/views/inventory.host.list.php
index 4809399d35b..9ddcfa202ba 100644
--- a/ui/include/views/inventory.host.list.php
+++ b/ui/include/views/inventory.host.list.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Host inventory'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::INVENTORY_HOST_LIST));
@@ -37,7 +37,7 @@ foreach ($data['host_inventories'] as $inventoryField) {
}
// filter
-$widget->addItem(
+$html_page->addItem(
(new CFilter())
->setResetUrl(new CUrl('hostinventories.php'))
->setProfile($data['profileIdx'])
@@ -112,6 +112,6 @@ foreach ($this->data['hosts'] as $host) {
$table->addRow($row);
}
-$widget->addItem([$table, $this->data['paging']]);
-
-$widget->show();
+$html_page
+ ->addItem([$table, $this->data['paging']])
+ ->show();
diff --git a/ui/include/views/inventory.host.view.php b/ui/include/views/inventory.host.view.php
index 56052600dff..52c2b24132a 100644
--- a/ui/include/views/inventory.host.view.php
+++ b/ui/include/views/inventory.host.view.php
@@ -260,12 +260,13 @@ $hostInventoriesTab->setFooter(makeFormFooter(null, [new CButtonCancel()]));
$web_layout_mode = CViewHelper::loadLayoutMode();
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Host inventory'))
->setWebLayoutMode($web_layout_mode)
->setControls((new CList())->addItem(get_icon('kioskmode', ['mode' => $web_layout_mode])))
- ->addItem((new CForm())
- ->setAttribute('aria-labelledby', ZBX_STYLE_PAGE_TITLE)
- ->addItem($hostInventoriesTab)
+ ->addItem(
+ (new CForm())
+ ->setAttribute('aria-labelledby', CHtmlPage::PAGE_TITLE_ID)
+ ->addItem($hostInventoriesTab)
)
->show();
diff --git a/ui/include/views/monitoring.history.php b/ui/include/views/monitoring.history.php
index f20ef746389..23e3480b0a2 100644
--- a/ui/include/views/monitoring.history.php
+++ b/ui/include/views/monitoring.history.php
@@ -26,7 +26,7 @@ $this->includeJsFile('monitoring.history.js.php');
$web_layout_mode = CViewHelper::loadLayoutMode();
-$historyWidget = (new CWidget())->setWebLayoutMode($web_layout_mode);
+$html_page = (new CHtmlPage())->setWebLayoutMode($web_layout_mode);
$header = [
'left' => _n('%1$s item', '%1$s items', count($data['items'])),
@@ -52,12 +52,8 @@ if ($data['items']) {
}
if ((count($data['items']) == 1 || $same_host) && $data['itemids']) {
- $header['left'] = [
- $host_name,
- NAME_DELIMITER,
- count($data['items']) == 1 ? $item['name'] : $header['left']
- ];
- $header_row[] = implode('', $header['left']);
+ $header['left'] = $host_name.NAME_DELIMITER.(count($data['items']) == 1 ? $item['name'] : $header['left']);
+ $header_row[] = $header['left'];
}
else {
$header_row[] = $header['left'];
@@ -103,7 +99,7 @@ if ($data['action'] !== HISTORY_GRAPH && $data['action'] !== HISTORY_BATCH_GRAPH
}
if ($data['action'] == HISTORY_GRAPH && count($data['items']) == 1) {
- $action_list->addItem(get_icon('favourite', [
+ $action_list->addItem(get_icon('favorite', [
'fav' => 'web.favorite.graphids',
'elid' => $item['itemid'],
'elname' => 'itemid'
@@ -222,7 +218,7 @@ if ($data['itemids']) {
// append plaintext to widget
if ($data['plaintext']) {
foreach ($header_row as $text) {
- $historyWidget->addItem([new CSpan($text), BR()]);
+ $html_page->addItem([new CSpan($text), BR()]);
}
if ($data['itemids']) {
@@ -231,11 +227,11 @@ if ($data['plaintext']) {
foreach ($screen as $text) {
$pre->addItem([$text, BR()]);
}
- $historyWidget->addItem($pre);
+ $html_page->addItem($pre);
}
}
else {
- $historyWidget
+ $html_page
->setTitle($header['left'])
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_HISTORY))
->setControls((new CTag('nav', true, $header['right']))->setAttribute('aria-label', _('Content controls')));
@@ -272,10 +268,10 @@ else {
if ($data['itemids']) {
if ($data['action'] !== HISTORY_LATEST) {
- $historyWidget->addItem($filter_form);
+ $html_page->addItem($filter_form);
}
- $historyWidget->addItem($screen->get());
+ $html_page->addItem($screen->get());
if ($data['action'] !== HISTORY_LATEST) {
CScreenBuilder::insertScreenStandardJs($screen->timeline);
@@ -283,10 +279,10 @@ else {
}
else {
if ($filter_tab) {
- $historyWidget->addItem($filter_form);
+ $html_page->addItem($filter_form);
}
- $historyWidget->addItem(
+ $html_page->addItem(
(new CTableInfo())
->setHeader([
(new CColHeader(_('Timestamp')))->addClass(ZBX_STYLE_CELL_WIDTH),
@@ -298,4 +294,4 @@ else {
}
}
-$historyWidget->show();
+$html_page->show();
diff --git a/ui/include/views/monitoring.sysmap.constructor.php b/ui/include/views/monitoring.sysmap.constructor.php
index cdc039c2f87..430eeb0b700 100644
--- a/ui/include/views/monitoring.sysmap.constructor.php
+++ b/ui/include/views/monitoring.sysmap.constructor.php
@@ -87,7 +87,7 @@ zbx_add_post_js('ZABBIX.apps.map.run("'.ZBX_STYLE_MAP_AREA.'", '.json_encode([
'defaultIconName' => $data['defaultIconName']
], JSON_FORCE_OBJECT).');');
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Network maps'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_SYSMAP_CONSTRUCTOR))
->setNavigation($menu)
diff --git a/ui/include/views/monitoring.sysmap.edit.php b/ui/include/views/monitoring.sysmap.edit.php
index 0d0883731c8..3ffc716d352 100644
--- a/ui/include/views/monitoring.sysmap.edit.php
+++ b/ui/include/views/monitoring.sysmap.edit.php
@@ -25,7 +25,7 @@
require_once dirname(__FILE__).'/js/monitoring.sysmap.edit.js.php';
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Network maps'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_SYSMAP_EDIT));
@@ -436,7 +436,6 @@ else {
$form->addItem($tabs);
-// Append form to widget.
-$widget->addItem($form);
-
-$widget->show();
+$html_page
+ ->addItem($form)
+ ->show();
diff --git a/ui/include/views/monitoring.sysmap.list.php b/ui/include/views/monitoring.sysmap.list.php
index 37c54a4d4e0..2401f0bd819 100644
--- a/ui/include/views/monitoring.sysmap.list.php
+++ b/ui/include/views/monitoring.sysmap.list.php
@@ -23,7 +23,7 @@
* @var CView $this
*/
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Maps'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::MONITORING_SYSMAP_LIST))
->setControls(
@@ -123,7 +123,6 @@ $sysmapForm->addItem([
])
]);
-// append form to widget
-$widget->addItem($sysmapForm);
-
-$widget->show();
+$html_page
+ ->addItem($sysmapForm)
+ ->show();
diff --git a/ui/include/views/reports.toptriggers.php b/ui/include/views/reports.toptriggers.php
index 93848c64334..3be7a636a44 100644
--- a/ui/include/views/reports.toptriggers.php
+++ b/ui/include/views/reports.toptriggers.php
@@ -119,7 +119,7 @@ $obj_data = [
zbx_add_post_js('timeControl.addObject("toptriggers", '.zbx_jsvalue($data['filter']).', '.zbx_jsvalue($obj_data).');');
zbx_add_post_js('timeControl.processObjects();');
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('100 busiest triggers'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORTS_TOPTRIGGERS))
->addItem($filterForm)
diff --git a/ui/items.php b/ui/items.php
index 4b495b8c466..b62fc4fcede 100644
--- a/ui/items.php
+++ b/ui/items.php
@@ -298,11 +298,6 @@ $fields = [
'sortorder' => [T_ZBX_STR, O_OPT, P_SYS, IN('"'.ZBX_SORT_DOWN.'","'.ZBX_SORT_UP.'"'), null]
];
-if (getRequest('interfaceid') == INTERFACE_TYPE_OPT && itemTypeInterface(getRequest('type')) == INTERFACE_TYPE_OPT) {
- unset($fields['interfaceid']);
- unset($_REQUEST['interfaceid']);
-}
-
$valid_input = check_fields($fields);
$_REQUEST['params'] = getRequest($paramsFieldName, '');
@@ -316,28 +311,33 @@ $subfiltersList = ['subfilter_types', 'subfilter_value_types', 'subfilter_status
/*
* Permissions
*/
-$itemId = getRequest('itemid');
-if ($itemId) {
+$itemid = getRequest('itemid');
+
+if ($itemid) {
$items = API::Item()->get([
'output' => ['itemid'],
'selectHosts' => ['hostid', 'status'],
- 'itemids' => $itemId,
+ 'itemids' => $itemid,
'editable' => true
]);
+
if (!$items) {
access_deny();
}
+
$hosts = $items[0]['hosts'];
}
else {
- $hostId = getRequest('hostid');
- if ($hostId) {
+ $hostid = getRequest('hostid');
+
+ if ($hostid) {
$hosts = API::Host()->get([
'output' => ['hostid', 'status'],
- 'hostids' => $hostId,
+ 'hostids' => $hostid,
'templated_hosts' => true,
'editable' => true
]);
+
if (!$hosts) {
access_deny();
}
@@ -499,16 +499,6 @@ if (!hasRequest('form') && $filter_hostids) {
}
}
-// Convert CR+LF to LF in preprocessing script.
-if (hasRequest('preprocessing')) {
- foreach ($_REQUEST['preprocessing'] as &$step) {
- if ($step['type'] == ZBX_PREPROC_SCRIPT) {
- $step['params'][0] = CRLFtoLF($step['params'][0]);
- }
- }
- unset($step);
-}
-
// Validate backurl.
if (hasRequest('backurl') && !CHtmlUrlValidator::validateSameSite(getRequest('backurl'))) {
access_deny();
@@ -528,365 +518,142 @@ if (isset($_REQUEST['delete']) && isset($_REQUEST['itemid'])) {
show_messages($result, _('Item deleted'), _('Cannot delete item'));
}
elseif (hasRequest('add') || hasRequest('update')) {
- DBstart();
- $result = true;
-
- $delay = getRequest('delay', DB::getDefault('items', 'delay'));
- $type = getRequest('type', ITEM_TYPE_ZABBIX);
+ try {
+ $type = (int) getRequest('type', DB::getDefault('items', 'type'));
+ $key = getRequest('key', DB::getDefault('items', 'key_'));
- $tags = getRequest('tags', []);
- foreach ($tags as $key => $tag) {
- if ($tag['tag'] === '' && $tag['value'] === '') {
- unset($tags[$key]);
- }
- elseif (array_key_exists('type', $tag) && !($tag['type'] & ZBX_PROPERTY_OWN)) {
- unset($tags[$key]);
- }
- else {
- unset($tags[$key]['type']);
+ if (isItemExampleKey($type, $key)) {
+ throw new Exception();
}
- }
- /*
- * "delay_flex" is a temporary field that collects flexible and scheduling intervals separated by a semicolon.
- * In the end, custom intervals together with "delay" are stored in the "delay" variable.
- */
- if ($type != ITEM_TYPE_TRAPPER && $type != ITEM_TYPE_SNMPTRAP
- && ($type != ITEM_TYPE_ZABBIX_ACTIVE || strncmp(getRequest('key'), 'mqtt.get', 8) !== 0)
- && hasRequest('delay_flex')) {
- $intervals = [];
- $simple_interval_parser = new CSimpleIntervalParser(['usermacros' => true]);
- $time_period_parser = new CTimePeriodParser(['usermacros' => true]);
- $scheduling_interval_parser = new CSchedulingIntervalParser(['usermacros' => true]);
-
- foreach (getRequest('delay_flex') as $interval) {
- if ($interval['type'] == ITEM_DELAY_FLEXIBLE) {
- if ($interval['delay'] === '' && $interval['period'] === '') {
- continue;
- }
+ $delay_flex = getRequest('delay_flex', []);
- if ($simple_interval_parser->parse($interval['delay']) != CParser::PARSE_SUCCESS) {
- $result = false;
- error(_s('Invalid interval "%1$s".', $interval['delay']));
- break;
- }
- elseif ($time_period_parser->parse($interval['period']) != CParser::PARSE_SUCCESS) {
- $result = false;
- error(_s('Invalid interval "%1$s".', $interval['period']));
- break;
- }
-
- $intervals[] = $interval['delay'].'/'.$interval['period'];
- }
- else {
- if ($interval['schedule'] === '') {
- continue;
- }
-
- if ($scheduling_interval_parser->parse($interval['schedule']) != CParser::PARSE_SUCCESS) {
- $result = false;
- error(_s('Invalid interval "%1$s".', $interval['schedule']));
- break;
- }
-
- $intervals[] = $interval['schedule'];
- }
+ if (!isValidCustomIntervals($delay_flex)) {
+ throw new Exception();
}
- if ($intervals) {
- $delay .= ';'.implode(';', $intervals);
- }
- }
+ $value_type = (int) getRequest('value_type', DB::getDefault('items', 'value_type'));
+ $trends_default = in_array($value_type, [ITEM_VALUE_TYPE_FLOAT, ITEM_VALUE_TYPE_UINT64])
+ ? DB::getDefault('items', 'trends')
+ : 0;
+
+ $request_method = getRequest('request_method', DB::getDefault('items', 'request_method'));
+ $retrieve_mode_default = $request_method == HTTPCHECK_REQUEST_HEAD
+ ? HTTPTEST_STEP_RETRIEVE_MODE_HEADERS
+ : DB::getDefault('items', 'retrieve_mode');
+
+ $input = [
+ 'name' => getRequest('name', DB::getDefault('items', 'name')),
+ 'type' => $type,
+ 'key_' => $key,
+ 'value_type' => $value_type,
+ 'units' => getRequest('units', DB::getDefault('items', 'units')),
+ 'history' => getRequest('history_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF
+ ? ITEM_NO_STORAGE_VALUE
+ : getRequest('history', DB::getDefault('items', 'history')),
+ 'trends' => getRequest('trends_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF
+ ? ITEM_NO_STORAGE_VALUE
+ : getRequest('trends', $trends_default),
+ 'valuemapid' => getRequest('valuemapid', 0),
+ 'inventory_link' => getRequest('inventory_link', DB::getDefault('items', 'inventory_link')),
+ 'logtimefmt' => getRequest('logtimefmt', DB::getDefault('items', 'logtimefmt')),
+ 'description' => getRequest('description', DB::getDefault('items', 'description')),
+ 'status' => getRequest('status', ITEM_STATUS_DISABLED),
+ 'tags' => prepareItemTags(getRequest('tags', [])),
+ 'preprocessing' => normalizeItemPreprocessingSteps(getRequest('preprocessing', [])),
+
+ // Type fields.
+ // The fields used for multiple item types.
+ 'interfaceid' => getRequest('interfaceid', 0),
+ 'authtype' => $type == ITEM_TYPE_HTTPAGENT
+ ? getRequest('http_authtype', DB::getDefault('items', 'authtype'))
+ : getRequest('authtype', DB::getDefault('items', 'authtype')),
+ 'username' => $type == ITEM_TYPE_HTTPAGENT
+ ? getRequest('http_username', DB::getDefault('items', 'username'))
+ : getRequest('username', DB::getDefault('items', 'username')),
+ 'password' => $type == ITEM_TYPE_HTTPAGENT
+ ? getRequest('http_password', DB::getDefault('items', 'password'))
+ : getRequest('password', DB::getDefault('items', 'password')),
+ 'params' => getRequest('params', DB::getDefault('items', 'params')),
+ 'timeout' => getRequest('timeout', DB::getDefault('items', 'timeout')),
+ 'delay' => getDelayWithCustomIntervals(getRequest('delay', DB::getDefault('items', 'delay')), $delay_flex),
+ 'trapper_hosts' => getRequest('trapper_hosts', DB::getDefault('items', 'trapper_hosts')),
+
+ // Dependent item type specific fields.
+ 'master_itemid' => getRequest('master_itemid', 0),
+
+ // HTTP Agent item type specific fields.
+ 'url' => getRequest('url', DB::getDefault('items', 'url')),
+ 'query_fields' => prepareItemQueryFields(getRequest('query_fields', [])),
+ 'request_method' => $request_method,
+ 'post_type' => getRequest('post_type', DB::getDefault('items', 'post_type')),
+ 'posts' => getRequest('posts', DB::getDefault('items', 'posts')),
+ 'headers' => prepareItemHeaders(getRequest('headers', [])),
+ 'status_codes' => getRequest('status_codes', DB::getDefault('items', 'status_codes')),
+ 'follow_redirects' => getRequest('follow_redirects', DB::getDefault('items', 'follow_redirects')),
+ 'retrieve_mode' => getRequest('retrieve_mode', $retrieve_mode_default),
+ 'output_format' => getRequest('output_format', DB::getDefault('items', 'output_format')),
+ 'http_proxy' => getRequest('http_proxy', DB::getDefault('items', 'http_proxy')),
+ 'verify_peer' => getRequest('verify_peer', DB::getDefault('items', 'verify_peer')),
+ 'verify_host' => getRequest('verify_host', DB::getDefault('items', 'verify_host')),
+ 'ssl_cert_file' => getRequest('ssl_cert_file', DB::getDefault('items', 'ssl_cert_file')),
+ 'ssl_key_file' => getRequest('ssl_key_file', DB::getDefault('items', 'ssl_key_file')),
+ 'ssl_key_password' => getRequest('ssl_key_password', DB::getDefault('items', 'ssl_key_password')),
+ 'allow_traps' => getRequest('allow_traps', DB::getDefault('items', 'allow_traps')),
+
+ // IPMI item type specific fields.
+ 'ipmi_sensor' => getRequest('ipmi_sensor', DB::getDefault('items', 'ipmi_sensor')),
+
+ // JMX item type specific fields.
+ 'jmx_endpoint' => getRequest('jmx_endpoint', DB::getDefault('items', 'jmx_endpoint')),
+
+ // Script item type specific fields.
+ 'parameters' => prepareItemParameters(getRequest('parameters', [])),
+
+ // SNMP item type specific fields.
+ 'snmp_oid' => getRequest('snmp_oid', DB::getDefault('items', 'snmp_oid')),
+
+ // SSH item type specific fields.
+ 'publickey' => getRequest('publickey', DB::getDefault('items', 'publickey')),
+ 'privatekey' => getRequest('privatekey', DB::getDefault('items', 'privatekey'))
+ ];
- if ($result) {
- $preprocessing = getRequest('preprocessing', []);
- $preprocessing = normalizeItemPreprocessingSteps($preprocessing);
-
- if ($type == ITEM_TYPE_HTTPAGENT) {
- $http_item = [
- 'timeout' => getRequest('timeout', DB::getDefault('items', 'timeout')),
- 'url' => getRequest('url'),
- 'query_fields' => getRequest('query_fields', []),
- 'posts' => getRequest('posts'),
- 'status_codes' => getRequest('status_codes', DB::getDefault('items', 'status_codes')),
- 'follow_redirects' => (int) getRequest('follow_redirects'),
- 'post_type' => (int) getRequest('post_type'),
- 'http_proxy' => getRequest('http_proxy'),
- 'headers' => getRequest('headers', []),
- 'retrieve_mode' => (int) getRequest('retrieve_mode'),
- 'request_method' => (int) getRequest('request_method'),
- 'output_format' => (int) getRequest('output_format'),
- 'allow_traps' => (int) getRequest('allow_traps', HTTPCHECK_ALLOW_TRAPS_OFF),
- 'ssl_cert_file' => getRequest('ssl_cert_file'),
- 'ssl_key_file' => getRequest('ssl_key_file'),
- 'ssl_key_password' => getRequest('ssl_key_password'),
- 'verify_peer' => (int) getRequest('verify_peer'),
- 'verify_host' => (int) getRequest('verify_host'),
- 'authtype' => getRequest('http_authtype', HTTPTEST_AUTH_NONE),
- 'username' => getRequest('http_username', ''),
- 'password' => getRequest('http_password', '')
- ];
- }
+ $result = true;
if (hasRequest('add')) {
- $item = [
- 'hostid' => getRequest('hostid'),
- 'name' => getRequest('name', ''),
- 'type' => getRequest('type', ITEM_TYPE_ZABBIX),
- 'key_' => getRequest('key', ''),
- 'interfaceid' => getRequest('interfaceid', 0),
- 'snmp_oid' => getRequest('snmp_oid', ''),
- 'authtype' => getRequest('authtype', ITEM_AUTHTYPE_PASSWORD),
- 'username' => getRequest('username', ''),
- 'password' => getRequest('password', ''),
- 'publickey' => getRequest('publickey', ''),
- 'privatekey' => getRequest('privatekey', ''),
- 'params' => getRequest('params', ''),
- 'ipmi_sensor' => getRequest('ipmi_sensor', ''),
- 'value_type' => getRequest('value_type', ITEM_VALUE_TYPE_FLOAT),
- 'units' => getRequest('units', ''),
- 'delay' => $delay,
- 'history' => (getRequest('history_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF)
- ? ITEM_NO_STORAGE_VALUE
- : getRequest('history', DB::getDefault('items', 'history')),
- 'trends' => (getRequest('trends_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF)
- ? ITEM_NO_STORAGE_VALUE
- : getRequest('trends', DB::getDefault('items', 'trends')),
- 'valuemapid' => getRequest('valuemapid', 0),
- 'logtimefmt' => getRequest('logtimefmt', ''),
- 'trapper_hosts' => getRequest('trapper_hosts', ''),
- 'inventory_link' => getRequest('inventory_link', 0),
- 'description' => getRequest('description', ''),
- 'status' => getRequest('status', ITEM_STATUS_DISABLED),
- 'tags' => $tags
- ];
-
- if ($item['type'] == ITEM_TYPE_HTTPAGENT) {
- $item = prepareItemHttpAgentFormData($http_item) + $item;
- }
+ $item = ['hostid' => $hostid];
- if ($item['type'] == ITEM_TYPE_JMX) {
- $item['jmx_endpoint'] = getRequest('jmx_endpoint', '');
- }
-
- if ($preprocessing) {
- $item['preprocessing'] = $preprocessing;
- }
-
- if ($item['type'] == ITEM_TYPE_DEPENDENT) {
- $item['master_itemid'] = getRequest('master_itemid');
- }
-
- if ($item['type'] == ITEM_TYPE_SCRIPT) {
- $script_item = [
- 'parameters' => getRequest('parameters', []),
- 'timeout' => getRequest('timeout', DB::getDefault('items', 'timeout'))
- ];
+ $item += getSanitizedItemFields($input + [
+ 'templateid' => '0',
+ 'flags' => ZBX_FLAG_DISCOVERY_NORMAL,
+ 'hosts' => $hosts
+ ]);
- $item = prepareScriptItemFormData($script_item) + $item;
- }
+ $response = API::Item()->create($item);
- if ($item['value_type'] == ITEM_VALUE_TYPE_LOG || $item['value_type'] == ITEM_VALUE_TYPE_TEXT) {
- unset($item['valuemapid']);
+ if ($response === false) {
+ throw new Exception();
}
-
- $result = (bool) API::Item()->create($item);
}
- // Update
- else {
+
+ if (hasRequest('update')) {
$db_items = API::Item()->get([
- 'output' => ['name', 'type', 'key_', 'interfaceid', 'snmp_oid', 'authtype', 'username', 'password',
- 'publickey', 'privatekey', 'params', 'ipmi_sensor', 'value_type', 'units', 'delay', 'history',
- 'trends', 'valuemapid', 'logtimefmt', 'trapper_hosts', 'inventory_link', 'description', 'status',
- 'templateid', 'flags', 'jmx_endpoint', 'master_itemid', 'timeout', 'url', 'query_fields', 'posts',
- 'status_codes', 'follow_redirects', 'post_type', 'http_proxy', 'headers', 'retrieve_mode',
- 'request_method', 'output_format', 'ssl_cert_file', 'ssl_key_file', 'ssl_key_password',
- 'verify_peer', 'verify_host', 'allow_traps', 'parameters'
- ],
- 'selectPreprocessing' => ['type', 'params', 'error_handler', 'error_handler_params'],
- 'selectTags' => ['tag', 'value'],
- 'itemids' => getRequest('itemid')
+ 'output' => ['templateid', 'flags', 'type', 'key_', 'value_type', 'authtype', 'allow_traps'],
+ 'itemids' => $itemid
]);
- $db_item = reset($db_items);
-
- $item = [];
-
- if ($db_item['flags'] == ZBX_FLAG_DISCOVERY_NORMAL) {
- if ($db_item['templateid'] == 0) {
- $value_type = getRequest('value_type', ITEM_VALUE_TYPE_FLOAT);
-
- if ($db_item['name'] !== getRequest('name', '')) {
- $item['name'] = getRequest('name', '');
- }
- if ($db_item['type'] != getRequest('type', ITEM_TYPE_ZABBIX)) {
- $item['type'] = getRequest('type', ITEM_TYPE_ZABBIX);
- }
- if ($db_item['key_'] !== getRequest('key', '')) {
- $item['key_'] = getRequest('key', '');
- }
- if ($db_item['snmp_oid'] !== getRequest('snmp_oid', '')) {
- $item['snmp_oid'] = getRequest('snmp_oid', '');
- }
- if ($db_item['ipmi_sensor'] !== getRequest('ipmi_sensor', '')) {
- $item['ipmi_sensor'] = getRequest('ipmi_sensor', '');
- }
- if ($db_item['value_type'] != $value_type) {
- $item['value_type'] = $value_type;
- }
- if ($db_item['units'] !== getRequest('units', '')) {
- $item['units'] = getRequest('units', '');
- }
- if ($value_type != ITEM_VALUE_TYPE_LOG && $value_type != ITEM_VALUE_TYPE_TEXT
- && bccomp($db_item['valuemapid'], getRequest('valuemapid', 0)) != 0) {
- $item['valuemapid'] = getRequest('valuemapid', 0);
- }
- if ($db_item['logtimefmt'] !== getRequest('logtimefmt', '')) {
- $item['logtimefmt'] = getRequest('logtimefmt', '');
- }
- if ($db_item['params'] !== getRequest('params', '')) {
- $item['params'] = getRequest('params', '');
- }
- if ($db_item['preprocessing'] !== $preprocessing) {
- $item['preprocessing'] = $preprocessing;
- }
- }
-
- if (bccomp($db_item['interfaceid'], getRequest('interfaceid', 0)) != 0) {
- $item['interfaceid'] = getRequest('interfaceid', 0);
- }
-
- if ($db_item['delay'] != $delay) {
- $item['delay'] = $delay;
- }
- $def_item_history = (getRequest('history_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF)
- ? ITEM_NO_STORAGE_VALUE
- : DB::getDefault('items', 'history');
- if ((string) $db_item['history'] !== (string) getRequest('history', $def_item_history)) {
- $item['history'] = getRequest('history', $def_item_history);
- }
- $def_item_trends = (getRequest('trends_mode', ITEM_STORAGE_CUSTOM) == ITEM_STORAGE_OFF)
- ? ITEM_NO_STORAGE_VALUE
- : DB::getDefault('items', 'trends');
- if ((string) $db_item['trends'] !== (string) getRequest('trends', $def_item_trends)) {
- $item['trends'] = getRequest('trends', $def_item_trends);
- }
- if ($db_item['trapper_hosts'] !== getRequest('trapper_hosts', '')) {
- $item['trapper_hosts'] = getRequest('trapper_hosts', '');
- }
- if ($db_item['jmx_endpoint'] !== getRequest('jmx_endpoint', '')) {
- $item['jmx_endpoint'] = getRequest('jmx_endpoint', '');
- }
- if ($db_item['inventory_link'] != getRequest('inventory_link', 0)) {
- $item['inventory_link'] = getRequest('inventory_link', 0);
- }
- if ($db_item['description'] !== getRequest('description', '')) {
- $item['description'] = getRequest('description', '');
- }
-
- if ($db_item['templateid'] == 0 && $type == ITEM_TYPE_HTTPAGENT) {
- $item = prepareItemHttpAgentFormData($http_item) + $item;
- }
- }
-
- if ($type == ITEM_TYPE_HTTPAGENT) {
- if ($db_item['authtype'] != getRequest('http_authtype', ITEM_AUTHTYPE_PASSWORD)) {
- $item['authtype'] = getRequest('http_authtype', ITEM_AUTHTYPE_PASSWORD);
- }
-
- if ($db_item['username'] !== getRequest('http_username', '')) {
- $item['username'] = getRequest('http_username', '');
- }
-
- if ($db_item['password'] !== getRequest('http_password', '')) {
- $item['password'] = getRequest('http_password', '');
- }
- }
- else {
- if ($db_item['authtype'] != getRequest('authtype', ITEM_AUTHTYPE_PASSWORD)) {
- $item['authtype'] = getRequest('authtype', ITEM_AUTHTYPE_PASSWORD);
- }
-
- if ($db_item['username'] !== getRequest('username', '')) {
- $item['username'] = getRequest('username', '');
- }
- if ($db_item['password'] !== getRequest('password', '')) {
- $item['password'] = getRequest('password', '');
- }
- }
+ $item = getSanitizedItemFields($input + $db_items[0] + ['hosts' => $hosts]);
- if ($db_item['publickey'] !== getRequest('publickey', '')) {
- $item['publickey'] = getRequest('publickey', '');
- }
+ $response = API::Item()->update(['itemid' => $itemid] + $item);
- if ($db_item['privatekey'] !== getRequest('privatekey', '')) {
- $item['privatekey'] = getRequest('privatekey', '');
- }
-
- if ($db_item['status'] != getRequest('status', ITEM_STATUS_DISABLED)) {
- $item['status'] = getRequest('status', ITEM_STATUS_DISABLED);
- }
-
- if (getRequest('type') == ITEM_TYPE_DEPENDENT && hasRequest('master_itemid')
- && bccomp($db_item['master_itemid'], getRequest('master_itemid')) != 0) {
- $item['master_itemid'] = getRequest('master_itemid');
- }
-
- if (getRequest('type') == ITEM_TYPE_SCRIPT) {
- $script_item = [
- 'parameters' => getRequest('parameters', []),
- 'timeout' => getRequest('timeout', DB::getDefault('items', 'timeout'))
- ];
-
- $item = prepareScriptItemFormData($script_item) + $item;
- if ($db_item['type'] == getRequest('type')) {
- $compare = function($arr, $arr2) {
- return (array_combine(array_column($arr, 'name'), array_column($arr, 'value')) ==
- array_combine(array_column($arr2, 'name'), array_column($arr2, 'value'))
- );
- };
-
- if ($compare($db_item['parameters'], $item['parameters'])) {
- unset($item['parameters']);
- }
- if ($db_item['timeout'] === $item['timeout']) {
- unset($item['timeout']);
- }
-
- if ($db_item['params'] !== getRequest('params', '')) {
- $item['params'] = getRequest('params', '');
- }
- }
- else {
- // If type is changed, even if value stays the same, it must be set. It is required by API.
- $item['params'] = getRequest('params', '');
- }
- }
- else {
- if ($db_item['params'] !== getRequest('params', '')) {
- $item['params'] = getRequest('params', '');
- }
- }
-
- CArrayHelper::sort($db_item['tags'], ['tag', 'value']);
- CArrayHelper::sort($tags, ['tag', 'value']);
-
- if (array_values($db_item['tags']) !== array_values($tags)) {
- $item['tags'] = $tags;
- }
-
- if ($item) {
- $item['itemid'] = getRequest('itemid');
-
- $result = (bool) API::Item()->update($item);
- }
- else {
- $result = true;
+ if ($response === false) {
+ throw new Exception();
}
}
}
-
- $result = DBend($result);
+ catch (Exception $e) {
+ $result = false;
+ }
if (hasRequest('add')) {
show_messages($result, _('Item added'), _('Cannot add item'));
@@ -940,41 +707,52 @@ elseif (hasRequest('action') && str_in_array(getRequest('action'), ['item.massen
elseif (hasRequest('action') && getRequest('action') === 'item.masscopyto' && hasRequest('copy')
&& hasRequest('group_itemid')) {
if (getRequest('copy_targetids', []) && hasRequest('copy_type')) {
- if (getRequest('copy_type') == COPY_TYPE_TO_HOST || getRequest('copy_type') == COPY_TYPE_TO_TEMPLATE) {
- $hostids = getRequest('copy_targetids');
- }
- elseif (getRequest('copy_type') == COPY_TYPE_TO_TEMPLATE_GROUP) {
+ if (in_array(getRequest('copy_type'), [COPY_TYPE_TO_TEMPLATE, COPY_TYPE_TO_TEMPLATE_GROUP])) {
+ $options = getRequest('copy_type') == COPY_TYPE_TO_TEMPLATE
+ ? ['templateids' => getRequest('copy_targetids')]
+ : ['groupids' => getRequest('copy_targetids')];
+
$hostids = array_keys(API::Template()->get([
'output' => [],
- 'groupids' => getRequest('copy_targetids'),
'editable' => true,
'preservekeys' => true
- ]));
+ ] + $options));
+
+ $dst_is_template = true;
}
- else {
+
+ if (in_array(getRequest('copy_type'), [COPY_TYPE_TO_HOST, COPY_TYPE_TO_HOST_GROUP])) {
+ $options = getRequest('copy_type') == COPY_TYPE_TO_HOST
+ ? ['hostids' => getRequest('copy_targetids')]
+ : ['groupids' => getRequest('copy_targetids')];
+
$hostids = array_keys(API::Host()->get([
'output' => [],
- 'groupids' => getRequest('copy_targetids'),
'editable' => true,
'preservekeys' => true
- ]));
+ ] + $options));
+
+ $dst_is_template = false;
}
- DBstart();
+ $result = true;
- $result = copyItemsToHosts(getRequest('group_itemid'), $hostids);
- $result = DBend($result);
+ if ($hostids) {
+ DBstart();
+ $result = copyItemsToHosts('itemids', getRequest('group_itemid'), $dst_is_template, $hostids);
+ DBend($result);
+ }
$items_count = count(getRequest('group_itemid'));
+ show_messages($result, _n('Item copied', 'Items copied', $items_count),
+ _n('Cannot copy item', 'Cannot copy items', $items_count)
+ );
+
if ($result) {
uncheckTableRows(getRequest('checkbox_hash'));
unset($_REQUEST['group_itemid']);
}
- show_messages($result,
- _n('Item copied', 'Items copied', $items_count),
- _n('Cannot copy item', 'Cannot copy items', $items_count)
- );
}
else {
show_error_message(_('No target selected.'));
diff --git a/ui/js/class.dashboard.js b/ui/js/class.dashboard.js
index 2a5c3a09e4e..25a03c2b751 100644
--- a/ui/js/class.dashboard.js
+++ b/ui/js/class.dashboard.js
@@ -33,6 +33,7 @@ const DASHBOARD_EVENT_BUSY = 'dashboard-busy';
const DASHBOARD_EVENT_IDLE = 'dashboard-idle';
const DASHBOARD_EVENT_EDIT = 'dashboard-edit';
const DASHBOARD_EVENT_APPLY_PROPERTIES = 'dashboard-apply-properties';
+const DASHBOARD_EVENT_CONFIGURATION_OUTDATED = 'dashboard-configuration-outdated';
class CDashboard extends CBaseComponent {
@@ -48,6 +49,8 @@ class CDashboard extends CBaseComponent {
widget_min_rows,
widget_max_rows,
widget_defaults,
+ widget_last_type = null,
+ configuration_hash = null,
is_editable,
is_edit_mode,
can_edit_dashboards,
@@ -85,7 +88,9 @@ class CDashboard extends CBaseComponent {
this._max_rows = max_rows;
this._widget_min_rows = widget_min_rows;
this._widget_max_rows = widget_max_rows;
- this._widget_defaults = widget_defaults;
+ this._widget_defaults = {...widget_defaults};
+ this._widget_last_type = widget_last_type;
+ this._configuration_hash = configuration_hash;
this._is_editable = is_editable;
this._is_edit_mode = is_edit_mode;
this._can_edit_dashboards = can_edit_dashboards;
@@ -132,6 +137,11 @@ class CDashboard extends CBaseComponent {
this._slideshow_switch_time = null;
this._slideshow_timeout_id = null;
+ this._configuration_check_period = 60000;
+ this._configuration_check_steady_period = 2000;
+ this._configuration_check_time = null;
+ this._configuration_check_timeout_id = null;
+
this._is_unsaved = false;
if (!this._is_kiosk_mode) {
@@ -173,8 +183,12 @@ class CDashboard extends CBaseComponent {
this._target.classList.add(ZBX_STYLE_DASHBOARD_IS_EDIT_MODE);
}
- if (!this._is_edit_mode && this._data.auto_start == 1 && this._dashboard_pages.size > 1) {
- this._startSlideshow();
+ if (!this._is_edit_mode) {
+ this._startConfigurationChecker();
+
+ if (this._data.auto_start == 1 && this._dashboard_pages.size > 1) {
+ this._startSlideshow();
+ }
}
}
@@ -197,6 +211,7 @@ class CDashboard extends CBaseComponent {
this._tabs.enableSorting();
}
+ this._stopConfigurationChecker();
this._stopSlideshow();
this._target.classList.add(ZBX_STYLE_DASHBOARD_IS_EDIT_MODE);
@@ -282,7 +297,7 @@ class CDashboard extends CBaseComponent {
}
this._slideshow_switch_time = Math.max(Date.now() + this._slideshow_steady_period,
- timeout_ms + this._slideshow_switch_time
+ this._slideshow_switch_time + timeout_ms
);
this._slideshow_timeout_id = setTimeout(() => this._switchSlideshow(),
@@ -310,6 +325,101 @@ class CDashboard extends CBaseComponent {
}
}
+ _startConfigurationChecker() {
+ if (this._configuration_check_timeout_id !== null) {
+ clearTimeout(this._configuration_check_timeout_id);
+ }
+
+ this._configuration_check_time = Date.now() + this._configuration_check_period;
+ this._configuration_check_timeout_id = setTimeout(() => this._checkConfiguration(),
+ this._configuration_check_period
+ );
+ }
+
+ _stopConfigurationChecker() {
+ if (this._configuration_check_timeout_id === null) {
+ return;
+ }
+
+ clearTimeout(this._configuration_check_timeout_id);
+
+ this._configuration_check_time = null;
+ this._configuration_check_timeout_id = null;
+ }
+
+ _checkConfiguration() {
+ this._configuration_check_timeout_id = null;
+
+ if (this._isUserInteracting()) {
+ this._configuration_check_time = Date.now() + this._configuration_check_steady_period;
+ this._configuration_check_timeout_id = setTimeout(() => this._checkConfiguration(),
+ this._configuration_check_steady_period
+ );
+
+ return;
+ }
+
+ const busy_condition = this._createBusyCondition();
+
+ Promise.resolve()
+ .then(() => this._promiseCheckConfiguration())
+ .catch((exception) => {
+ console.log('Could not check the dashboard configuration', exception);
+ })
+ .finally(() => {
+ this._configuration_check_time = Math.max(Date.now() + this._configuration_check_steady_period,
+ this._configuration_check_time + this._configuration_check_period
+ );
+
+ this._configuration_check_timeout_id = setTimeout(() => this._checkConfiguration(),
+ this._configuration_check_time - Date.now()
+ );
+
+ this._deleteBusyCondition(busy_condition);
+ });
+ }
+
+ _promiseCheckConfiguration() {
+ const curl = new Curl('zabbix.php');
+
+ curl.setArgument('action', 'dashboard.config.hash');
+
+ return fetch(curl.getUrl(), {
+ method: 'POST',
+ headers: {'Content-Type': 'application/json'},
+ body: JSON.stringify({
+ templateid: this._data.templateid ?? undefined,
+ dashboardid: this._data.dashboardid
+ })
+ })
+ .then((response) => response.json())
+ .then((response) => {
+ if ('error' in response) {
+ throw {error: response.error};
+ }
+
+ if (response.configuration_hash !== null && this._configuration_hash !== response.configuration_hash) {
+ this.fire(DASHBOARD_EVENT_CONFIGURATION_OUTDATED);
+ }
+ });
+ }
+
+ _keepSteadyConfigurationChecker() {
+ if (this._configuration_check_timeout_id === null) {
+ return;
+ }
+
+ if (this._configuration_check_time - Date.now() < this._configuration_check_steady_period) {
+ clearTimeout(this._configuration_check_timeout_id);
+
+ this._configuration_check_time = Date.now() + this._configuration_check_steady_period;
+
+ this._configuration_check_timeout_id = setTimeout(() => this._checkConfiguration(),
+ this._configuration_check_time - Date.now()
+ );
+ }
+ }
+
_announceWidgets() {
const dashboard_pages = Array.from(this._dashboard_pages.keys());
@@ -502,16 +612,26 @@ class CDashboard extends CBaseComponent {
}
pasteDashboardPage(new_dashboard_page_data) {
+ this._clearWarnings();
+
if (this._dashboard_pages.size >= this._max_dashboard_pages) {
this._warnDashboardExhausted();
return;
}
+ const widgets = [];
+
+ for (const widget of new_dashboard_page_data.widgets) {
+ if (widget.type in this._widget_defaults) {
+ widgets.push(widget);
+ }
+ }
+
const busy_condition = this._createBusyCondition();
return Promise.resolve()
- .then(() => this._promiseDashboardWidgetsSanitize(new_dashboard_page_data.widgets))
+ .then(() => this._promiseDashboardWidgetsSanitize(widgets))
.then((response) => {
if (this._dashboard_pages.size >= this._max_dashboard_pages) {
this._warnDashboardExhausted();
@@ -519,31 +639,42 @@ class CDashboard extends CBaseComponent {
return;
}
- const widgets = new_dashboard_page_data.widgets;
+ if (response.widgets.length < new_dashboard_page_data.widgets.length) {
+ this._warn(t('Inaccessible widgets were not pasted.'));
+ }
+
+ const sane_widgets = [];
for (let i = 0; i < response.widgets.length; i++) {
- widgets[i].fields = response.widgets[i].fields;
+ if (response.widgets[i] !== null) {
+ sane_widgets.push({
+ ...widgets[i],
+ fields: response.widgets[i].fields
+ });
+ }
}
const used_references = this._getUsedReferences();
const reference_substitution = new Map();
- for (const widget of widgets) {
- const reference_field = this._widget_defaults[widget.type].reference_field;
+ for (const widget of sane_widgets) {
+ const widget_class = eval(this._widget_defaults[widget.type].js_class);
- if (reference_field !== null) {
- const old_reference = widget.fields[reference_field];
+ if (widget_class.hasReferenceField()) {
+ const old_reference = widget.fields.reference;
const new_reference = this._createReference({used_references});
- widget.fields[reference_field] = new_reference;
+ widget.fields.reference = new_reference;
used_references.add(new_reference);
reference_substitution.set(old_reference, new_reference);
}
}
- for (const widget of widgets) {
- for (const reference_field of this._widget_defaults[widget.type].foreign_reference_fields) {
+ for (const widget of sane_widgets) {
+ const widget_class = eval(this._widget_defaults[widget.type].js_class);
+
+ for (const reference_field of widget_class.getForeignReferenceFields()) {
const old_reference = widget.fields[reference_field];
if (reference_substitution.has(old_reference)) {
@@ -556,7 +687,7 @@ class CDashboard extends CBaseComponent {
dashboard_pageid: null,
name: new_dashboard_page_data.name,
display_period: new_dashboard_page_data.display_period,
- widgets
+ widgets: sane_widgets
});
this._selectDashboardPage(dashboard_page, {is_async: true});
@@ -583,6 +714,14 @@ class CDashboard extends CBaseComponent {
}
pasteWidget(new_widget_data, {widget = null, new_widget_pos = null} = {}) {
+ this._clearWarnings();
+
+ if (!(new_widget_data.type in this._widget_defaults)) {
+ this._warn(t('Cannot paste inaccessible widget.'));
+
+ return;
+ }
+
const dashboard_page = this._selected_dashboard_page;
if (widget !== null) {
@@ -608,27 +747,29 @@ class CDashboard extends CBaseComponent {
return;
}
+ let old_widget_data = null;
+
if (widget !== null) {
+ old_widget_data = widget.getDataCopy({is_single_copy: false});
+
dashboard_page.deleteWidget(widget, {is_batch_mode: true});
}
- const reference_field = this._widget_defaults[new_widget_data.type].reference_field;
+ const new_widget_class = eval(this._widget_defaults[new_widget_data.type].js_class);
- if (reference_field !== null) {
- new_widget_data.fields[reference_field] = this._createReference();
+ if (new_widget_class.hasReferenceField()) {
+ new_widget_data.fields.reference = this._createReference();
}
let references = [];
for (const widget of dashboard_page.getWidgets()) {
- const reference_field = this._widget_defaults[widget.getType()].reference_field;
-
- if (reference_field !== null) {
- references.push(widget.getFields()[reference_field]);
+ if (widget.constructor.hasReferenceField()) {
+ references.push(widget.getFields()['reference']);
}
}
- for (const reference_field of this._widget_defaults[new_widget_data.type].foreign_reference_fields) {
+ for (const reference_field of new_widget_class.getForeignReferenceFields()) {
if (reference_field in new_widget_data.fields
&& !references.includes(new_widget_data.fields[reference_field])) {
new_widget_data.fields[reference_field] = '';
@@ -654,6 +795,24 @@ class CDashboard extends CBaseComponent {
return;
}
+ if (response.widgets[0] === null) {
+ if (widget !== null) {
+ dashboard_page.replaceWidget(paste_placeholder_widget, {
+ ...old_widget_data,
+ widgetid: widget.getWidgetId(),
+ is_new: false,
+ unique_id: widget.getUniqueId()
+ });
+ }
+ else {
+ dashboard_page.deleteWidget(paste_placeholder_widget);
+ }
+
+ this._warn(t('Cannot paste inaccessible widget.'));
+
+ return;
+ }
+
dashboard_page.replaceWidget(paste_placeholder_widget, {
...new_widget_data,
fields: response.widgets[0].fields,
@@ -691,7 +850,7 @@ class CDashboard extends CBaseComponent {
for (const widget_data of widgets_data) {
request_widgets_data.push({
type: widget_data.type,
- fields: JSON.stringify(widget_data.fields)
+ fields: widget_data.fields
});
}
@@ -787,6 +946,8 @@ class CDashboard extends CBaseComponent {
if (!this._is_edit_mode) {
this._storeSelectedDashboardPage(dashboard_page);
+ this._keepSteadyConfigurationChecker();
+
if (this._isSlideshowRunning()) {
this._keepSteadySlideshow();
}
@@ -794,8 +955,12 @@ class CDashboard extends CBaseComponent {
this._promiseSelectDashboardPage(dashboard_page, {is_async})
.then(() => {
- if (this._isSlideshowRunning()) {
- this._startSlideshow();
+ if (!this._is_edit_mode) {
+ this._keepSteadyConfigurationChecker();
+
+ if (this._isSlideshowRunning()) {
+ this._startSlideshow();
+ }
}
});
}
@@ -1127,7 +1292,19 @@ class CDashboard extends CBaseComponent {
}
editWidgetProperties(properties = {}, {new_widget_pos = null} = {}) {
- const overlay = PopUp('dashboard.widget.edit', {
+ this._clearWarnings();
+
+ if (properties.type === undefined) {
+ properties.type = this._widget_last_type;
+
+ if (properties.type === null) {
+ this._warn(t('Cannot add widget: no widgets available.'));
+
+ return;
+ }
+ }
+
+ const overlay = PopUp(`widget.${properties.type}.edit`, {
templateid: this._data.templateid ?? undefined,
...properties
}, {
@@ -1184,6 +1361,18 @@ class CDashboard extends CBaseComponent {
}
}
+ document.getElementById('type').addEventListener('change', () => this.reloadWidgetProperties());
+
+ form.addEventListener('change', (e) => {
+ const do_trim = e.target.matches(
+ 'input[type="text"]:not([data-no-trim="1"]), textarea:not([data-no-trim="1"])'
+ );
+
+ if (do_trim) {
+ e.target.value = e.target.value.trim();
+ }
+ }, {capture: true});
+
try {
new TabIndicators();
}
@@ -1207,12 +1396,11 @@ class CDashboard extends CBaseComponent {
const properties = {
type: fields.type,
- prev_type: overlay.data.original_properties.type,
unique_id: overlay.data.original_properties.unique_id ?? undefined,
dashboard_page_unique_id: overlay.data.original_properties.dashboard_page_unique_id ?? undefined
};
- if (properties.type === properties.prev_type) {
+ if (properties.type === overlay.data.original_properties.type) {
properties.name = fields.name;
properties.view_mode = fields.show_header == 1
? ZBX_WIDGET_VIEW_MODE_NORMAL
@@ -1222,9 +1410,11 @@ class CDashboard extends CBaseComponent {
delete fields.name;
delete fields.show_header;
- properties.fields = JSON.stringify(fields);
+ properties.fields = fields;
}
+ overlay.$dialogue[0].dispatchEvent(new CustomEvent('overlay.reload'));
+
this.editWidgetProperties(properties, {new_widget_pos: this._new_widget_pos});
}
@@ -1256,18 +1446,24 @@ class CDashboard extends CBaseComponent {
return Promise.resolve()
.then(() => this._promiseDashboardWidgetCheck({templateid, type, name, view_mode, fields}))
- .then(() => this._promiseDashboardWidgetConfigure({templateid, type, view_mode, fields}))
- .then((configuration) => {
+ .then(() => {
overlayDialogueDestroy(overlay.dialogueid);
if (widget !== null && widget.getType() === type) {
- widget.updateProperties({name, view_mode, fields, configuration});
+ widget.updateProperties({name, view_mode, fields});
return;
}
- if (this._widget_defaults[type].reference_field !== null) {
- fields[this._widget_defaults[type].reference_field] = this._createReference();
+ if (type !== this._widget_last_type) {
+ this._widget_last_type = type;
+ updateUserProfile('web.dashboard.last_widget_type', type, [], PROFILE_TYPE_STR);
+ }
+
+ const widget_class = eval(this._widget_defaults[type].js_class);
+
+ if (widget_class.hasReferenceField()) {
+ fields.reference = this._createReference();
}
const widget_data = {
@@ -1275,7 +1471,6 @@ class CDashboard extends CBaseComponent {
name,
view_mode,
fields,
- configuration,
widgetid: null,
pos: widget === null ? this._new_widget_pos_reserved : widget.getPos(),
is_new: widget === null,
@@ -1332,45 +1527,25 @@ class CDashboard extends CBaseComponent {
});
}
- _promiseDashboardWidgetCheck({templateid, type, name, view_mode, fields}) {
- const fields_str = Object.keys(fields).length > 0 ? JSON.stringify(fields) : undefined;
-
- const curl = new Curl('zabbix.php');
-
- curl.setArgument('action', 'dashboard.widget.check');
-
- return fetch(curl.getUrl(), {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- body: JSON.stringify({templateid, type, name, view_mode, fields: fields_str})
- })
- .then((response) => response.json())
- .then((response) => {
- if ('error' in response) {
- throw {error: response.error};
- }
- });
+ _isEditingWidgetProperties() {
+ return this._is_edit_widget_properties_cancel_subscribed;
}
- _promiseDashboardWidgetConfigure({templateid, type, view_mode, fields}) {
- const fields_str = Object.keys(fields).length > 0 ? JSON.stringify(fields) : undefined;
-
+ _promiseDashboardWidgetCheck({templateid, type, name, view_mode, fields}) {
const curl = new Curl('zabbix.php');
- curl.setArgument('action', 'dashboard.widget.configure');
+ curl.setArgument('action', 'dashboard.widget.check');
return fetch(curl.getUrl(), {
method: 'POST',
headers: {'Content-Type': 'application/json'},
- body: JSON.stringify({templateid, type, view_mode, fields: fields_str})
+ body: JSON.stringify({templateid, type, name, view_mode, fields})
})
.then((response) => response.json())
.then((response) => {
if ('error' in response) {
throw {error: response.error};
}
-
- return response.configuration;
});
}
@@ -1385,7 +1560,26 @@ class CDashboard extends CBaseComponent {
if (this._can_edit_dashboards) {
menu_actions.push({
label: t('Copy'),
- clickCallback: () => this._storeDashboardPageDataCopy(dashboard_page.getDataCopy())
+ clickCallback: () => {
+ this._clearWarnings();
+
+ const data_copy = dashboard_page.getDataCopy();
+ const data_copy_widgets = data_copy.widgets;
+
+ data_copy.widgets = [];
+
+ for (const widget of data_copy_widgets) {
+ if (widget.type in this._widget_defaults) {
+ data_copy.widgets.push(widget);
+ }
+ }
+
+ this._storeDashboardPageDataCopy(data_copy);
+
+ if (data_copy.widgets.length < data_copy_widgets.length) {
+ this._warn(t('Inaccessible widgets were not copied.'));
+ }
+ }
});
}
@@ -1430,25 +1624,23 @@ class CDashboard extends CBaseComponent {
// Dashboard view methods.
- _warnDashboardExhausted() {
+ _warn(warning) {
this._clearWarnings();
- this._warning_message_box = makeMessageBox('warning', [], sprintf(
+ this._warning_message_box = makeMessageBox('warning', [], warning);
+
+ addMessage(this._warning_message_box);
+ }
+
+ _warnDashboardExhausted() {
+ this._warn(sprintf(
t('Cannot add dashboard page: maximum number of %1$d dashboard pages has been added.'),
this._max_dashboard_pages
));
-
- addMessage(this._warning_message_box);
}
_warnDashboardPageExhausted() {
- this._clearWarnings();
-
- this._warning_message_box = makeMessageBox('warning', [],
- t('Cannot add widget: not enough free space on the dashboard.')
- );
-
- addMessage(this._warning_message_box);
+ this._warn(t('Cannot add widget: not enough free space on the dashboard.'));
}
_clearWarnings() {
@@ -1676,14 +1868,13 @@ class CDashboard extends CBaseComponent {
for (const dashboard_page of this._dashboard_pages.keys()) {
for (const widget of dashboard_page.getWidgets()) {
- const type = widget.getType();
const fields = widget.getFields();
- if (this._widget_defaults[type].reference_field !== null) {
- used_references.add(fields[this._widget_defaults[type].reference_field]);
+ if (widget.constructor.hasReferenceField()) {
+ used_references.add(fields.reference);
}
- for (const reference_field of this._widget_defaults[type].foreign_reference_fields) {
+ for (const reference_field of widget.constructor.getForeignReferenceFields()) {
used_references.add(fields[reference_field]);
}
}
@@ -1704,31 +1895,23 @@ class CDashboard extends CBaseComponent {
},
dashboardPageWidgetAdd: (e) => {
+ const dashboard_page = this._selected_dashboard_page;
+
const new_widget_data = this.getStoredWidgetDataCopy();
const new_widget_pos = e.detail.new_widget_pos;
if (new_widget_data !== null) {
- const dashboard_page = this._selected_dashboard_page;
-
- let menu_was_cancelled = true;
-
const menu = [
{
label: t('Actions'),
items: [
{
label: t('Add widget'),
- clickCallback: () => {
- this.editWidgetProperties({}, {new_widget_pos});
- menu_was_cancelled = false;
- }
+ clickCallback: () => this.editWidgetProperties({}, {new_widget_pos})
},
{
label: t('Paste widget'),
- clickCallback: () => {
- this.pasteWidget(new_widget_data, {new_widget_pos});
- menu_was_cancelled = false;
- }
+ clickCallback: () => this.pasteWidget(new_widget_data, {new_widget_pos})
}
]
}
@@ -1741,7 +1924,7 @@ class CDashboard extends CBaseComponent {
jQuery(placeholder).menuPopup(menu, placeholder_event, {
closeCallback: () => {
- if (menu_was_cancelled) {
+ if (!this._isEditingWidgetProperties()) {
dashboard_page.resetWidgetPlaceholder();
}
}
@@ -1749,6 +1932,10 @@ class CDashboard extends CBaseComponent {
}
else {
this.editWidgetProperties({}, {new_widget_pos});
+
+ if (!this._isEditingWidgetProperties()) {
+ dashboard_page.resetWidgetPlaceholder();
+ }
}
},
@@ -1780,7 +1967,7 @@ class CDashboard extends CBaseComponent {
type: widget.getType(),
name: widget.getName(),
view_mode: widget.getViewMode(),
- fields: JSON.stringify(widget.getFields()),
+ fields: widget.getFields(),
unique_id: widget.getUniqueId(),
dashboard_page_unique_id: dashboard_page.getUniqueId()
});
@@ -1907,6 +2094,8 @@ class CDashboard extends CBaseComponent {
}
if (!this._is_edit_mode) {
+ this._keepSteadyConfigurationChecker();
+
if (this._isSlideshowRunning()) {
this._keepSteadySlideshow();
}
diff --git a/ui/js/class.dashboard.page.js b/ui/js/class.dashboard.page.js
index bacb46c58ca..33a87f18a68 100644
--- a/ui/js/class.dashboard.page.js
+++ b/ui/js/class.dashboard.page.js
@@ -323,19 +323,26 @@ class CDashboardPage extends CBaseComponent {
return null;
}
- addWidget({type, name, view_mode, fields, configuration, widgetid, pos, is_new, rf_rate, unique_id}) {
- const widget = this._createWidget(this._widget_defaults[type].js_class, {
- type,
- name,
- view_mode,
- fields,
- configuration,
- widgetid,
- pos,
- is_new,
- rf_rate,
- unique_id
- });
+ addWidget({type, name, view_mode, fields, widgetid, pos, is_new, rf_rate, unique_id}) {
+ let widget;
+
+ if (type in this._widget_defaults) {
+ widget = this._createWidget(eval(this._widget_defaults[type].js_class), {
+ type,
+ name,
+ view_mode,
+ fields,
+ defaults: this._widget_defaults[type],
+ widgetid,
+ pos,
+ is_new,
+ rf_rate,
+ unique_id
+ });
+ }
+ else {
+ widget = this._createInaccessibleWidget({name, widgetid, pos, unique_id});
+ }
this._doAddWidget(widget);
@@ -406,14 +413,13 @@ class CDashboardPage extends CBaseComponent {
return this.addWidget(widget_data);
}
- _createWidget(js_class, {type, name, view_mode, fields, configuration, widgetid, pos, is_new, rf_rate, unique_id}) {
- return new (eval(js_class))({
+ _createWidget(widget_class, {type, name, view_mode, fields, defaults, widgetid, pos, is_new, rf_rate, unique_id}) {
+ return new widget_class({
type,
name,
view_mode,
fields,
- configuration,
- defaults: this._widget_defaults[type],
+ defaults,
widgetid,
pos,
is_new,
@@ -433,18 +439,34 @@ class CDashboardPage extends CBaseComponent {
can_edit_dashboards: this._can_edit_dashboards,
time_period: this._time_period,
dynamic_hostid: this._dynamic_hostid,
- scope_id: this._unique_id,
+ unique_id
+ });
+ }
+
+ _createInaccessibleWidget({name, widgetid, pos, unique_id}) {
+ return this._createWidget(CWidgetInaccessible, {
+ type: 'inaccessible',
+ name,
+ view_mode: ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER,
+ fields: {},
+ defaults: {
+ name: t('Inaccessible widget')
+ },
+ widgetid,
+ pos,
+ is_new: false,
+ rf_rate: 0,
unique_id
});
}
_createPastePlaceholderWidget({type, name, view_mode, pos, unique_id}) {
- return this._createWidget('CWidgetPastePlaceholder', {
- type,
+ return this._createWidget(CWidgetPastePlaceholder, {
+ type: 'paste-placeholder',
name,
view_mode,
fields: {},
- configuration: {},
+ defaults: this._widget_defaults[type],
widgetid: null,
pos,
is_new: false,
diff --git a/ui/js/class.dashboard.widget.placeholder.js b/ui/js/class.dashboard.widget.placeholder.js
index 1a5e30307f0..892f06c7f16 100644
--- a/ui/js/class.dashboard.widget.placeholder.js
+++ b/ui/js/class.dashboard.widget.placeholder.js
@@ -94,7 +94,11 @@ class CDashboardWidgetPlaceholder extends CBaseComponent {
link.textContent = t('Add a new widget');
link.href = 'javascript:void(0)';
- this._target.addEventListener('click', () => this.fire(WIDGET_PLACEHOLDER_EVENT_ADD_NEW_WIDGET));
+ this._target.addEventListener('click', (e) => {
+ e.stopImmediatePropagation();
+
+ this.fire(WIDGET_PLACEHOLDER_EVENT_ADD_NEW_WIDGET);
+ });
this._placeholder_box_label_wrap.appendChild(link);
diff --git a/ui/js/class.sortable.js b/ui/js/class.sortable.js
index 6b8211c3085..e07755058b1 100644
--- a/ui/js/class.sortable.js
+++ b/ui/js/class.sortable.js
@@ -258,6 +258,8 @@ class CSortable extends CBaseComponent {
item.style.left = `${item_rect.x - list_rect.x}px`;
item.style.top = `${item_rect.y - list_rect.y}px`;
+ item.style.width = `${item_rect.width}px`;
+ item.style.height = `${item_rect.height}px`;
}
this._target.classList.add(ZBX_STYLE_SORTABLE_DRAGGING);
@@ -268,6 +270,9 @@ class CSortable extends CBaseComponent {
this._drag_item = drag_item;
this._drag_item.style.left = `${drag_item_rect.x - target_rect.x}px`;
this._drag_item.style.top = `${drag_item_rect.y - target_rect.y}px`;
+ this._drag_item.style.width = `${drag_item_rect.width}px`;
+ this._drag_item.style.height = `${drag_item_rect.height}px`;
+
this._target.appendChild(this._drag_item);
// Hide the actual dragging item.
@@ -355,6 +360,8 @@ class CSortable extends CBaseComponent {
drag_item.classList.remove(ZBX_STYLE_SORTABLE_DRAGGING);
drag_item.style.left = '';
drag_item.style.top = '';
+ drag_item.style.width = '';
+ drag_item.style.height = '';
this._target.classList.remove(ZBX_STYLE_SORTABLE_DRAGGING);
this._list.style.width = '';
@@ -363,6 +370,8 @@ class CSortable extends CBaseComponent {
for (const item of items) {
item.style.left = '';
item.style.top = '';
+ item.style.width = '';
+ item.style.height = '';
}
// Re-focus the dragged item.
diff --git a/ui/js/class.tabfilter.js b/ui/js/class.tabfilter.js
index a0faf3c281a..4ee58041b90 100644
--- a/ui/js/class.tabfilter.js
+++ b/ui/js/class.tabfilter.js
@@ -56,7 +56,7 @@ class CTabFilter extends CBaseComponent {
options.data[options.selected].expanded = true;
}
- for (const template of this._target.querySelectorAll('[type="text/x-jquery-tmpl"][data-template]')) {
+ for (const template of this._target.querySelectorAll('[data-template]')) {
this._templates[template.getAttribute('data-template')] = template;
}
diff --git a/ui/js/class.widget.inaccessible.js b/ui/js/class.widget.inaccessible.js
new file mode 100644
index 00000000000..50745bcb04c
--- /dev/null
+++ b/ui/js/class.widget.inaccessible.js
@@ -0,0 +1,78 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+class CWidgetInaccessible extends CWidget {
+
+ _doStart() {
+ super._doStart();
+
+ this._updateButtons();
+
+ this._content_body.innerHTML = `<div>${t('No permissions to referred object or it does not exist!')}</div>`;
+ }
+
+ _updateButtons() {
+ for (const button of this._content_header.querySelectorAll('button')) {
+ button.hidden = !button.classList.contains('js-widget-action') || !this.isEditMode();
+ }
+ }
+
+ setEditMode() {
+ super.setEditMode();
+
+ const state = this.getState();
+
+ if (state === WIDGET_STATE_ACTIVE || state === WIDGET_STATE_INACTIVE) {
+ this._updateButtons();
+ }
+ }
+
+ _promiseUpdate() {
+ return Promise.resolve();
+ }
+
+ getActionsContextMenu({can_paste_widget}) {
+ const menu = super.getActionsContextMenu({can_paste_widget});
+
+ for (const section of menu) {
+ switch (section.label) {
+ case t('Actions'):
+ for (const item of section.items) {
+ if (item.label === t('Copy')) {
+ item.disabled = true;
+ }
+ }
+ break;
+
+ case t('Refresh interval'):
+ for (const item of section.items) {
+ item.disabled = true;
+ }
+ break;
+ }
+ }
+
+ return menu;
+ }
+
+ _hasPadding() {
+ return true;
+ }
+}
diff --git a/ui/js/widgets/class.widget.iterator.js b/ui/js/class.widget.iterator.js
index 12080a2e6fb..d1c8db7131b 100644
--- a/ui/js/widgets/class.widget.iterator.js
+++ b/ui/js/class.widget.iterator.js
@@ -318,7 +318,6 @@ class CWidgetIterator extends CWidget {
name: data.name,
view_mode: this._view_mode,
fields: data.fields,
- configuration: data.configuration,
defaults: data.defaults,
widgetid: data.widgetid,
is_new: false,
diff --git a/ui/js/widgets/class.widget.js b/ui/js/class.widget.js
index e366479402d..36abd91e9c2 100644
--- a/ui/js/widgets/class.widget.js
+++ b/ui/js/class.widget.js
@@ -38,12 +38,19 @@ const WIDGET_EVENT_DELETE = 'widget-delete';
class CWidget extends CBaseComponent {
+ static hasReferenceField() {
+ return false;
+ }
+
+ static getForeignReferenceFields() {
+ return [];
+ }
+
constructor({
type,
name,
view_mode,
fields,
- configuration,
defaults,
widgetid = null,
pos = null,
@@ -59,7 +66,6 @@ class CWidget extends CBaseComponent {
can_edit_dashboards,
time_period,
dynamic_hostid,
- scope_id,
unique_id
}) {
super(document.createElement('div'));
@@ -68,7 +74,6 @@ class CWidget extends CBaseComponent {
this._name = name;
this._view_mode = view_mode;
this._fields = fields;
- this._configuration = configuration;
this._defaults = defaults;
this._widgetid = widgetid;
this._pos = pos;
@@ -92,7 +97,6 @@ class CWidget extends CBaseComponent {
this._can_edit_dashboards = can_edit_dashboards;
this._time_period = time_period;
this._dynamic_hostid = dynamic_hostid;
- this._scope_id = scope_id;
this._unique_id = unique_id;
this._init();
@@ -122,6 +126,8 @@ class CWidget extends CBaseComponent {
this._update_retry_sec = 3;
this._show_preloader_asap = true;
this._resizable_handles = [];
+
+ this._hide_preloader_animation_frame = null;
}
// Logical state control methods.
@@ -340,15 +346,21 @@ class CWidget extends CBaseComponent {
this._fields = fields;
}
- _setConfiguration(configuration) {
- this._configuration = configuration;
+ getWidgetId() {
+ return this._widgetid;
+ }
+
+ _hasPadding() {
+ return this._view_mode != ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER;
+ }
+ _updatePadding() {
if (this._state !== WIDGET_STATE_INITIAL) {
- this._content_body.classList.toggle('no-padding', !this._configuration.padding);
+ this._content_body.classList.toggle('no-padding', !this._hasPadding());
}
}
- updateProperties({name, view_mode, fields, configuration}) {
+ updateProperties({name, view_mode, fields}) {
if (name !== undefined) {
this._setName(name);
}
@@ -361,9 +373,7 @@ class CWidget extends CBaseComponent {
this._setFields(fields);
}
- if (configuration !== undefined) {
- this._setConfiguration(configuration);
- }
+ this._updatePadding();
this._show_preloader_asap = true;
@@ -407,7 +417,6 @@ class CWidget extends CBaseComponent {
name: this._name,
view_mode: this._view_mode,
fields: this._fields,
- configuration: this._configuration,
pos: is_single_copy
? {
width: this._pos.width,
@@ -433,7 +442,7 @@ class CWidget extends CBaseComponent {
type: this._type,
name: this._name,
view_mode: this._view_mode,
- fields: Object.keys(this._fields).length > 0 ? JSON.stringify(this._fields) : undefined
+ fields: Object.keys(this._fields).length > 0 ? this._fields : undefined
};
}
@@ -628,7 +637,7 @@ class CWidget extends CBaseComponent {
dashboardid: this._dashboard.dashboardid ?? undefined,
widgetid: this._widgetid ?? undefined,
name: this._name !== '' ? this._name : undefined,
- fields: Object.keys(this._fields).length > 0 ? JSON.stringify(this._fields) : undefined,
+ fields: Object.keys(this._fields).length > 0 ? this._fields : undefined,
view_mode: this._view_mode,
edit_mode: this._is_edit_mode ? 1 : 0,
dynamic_hostid: this._dashboard.templateid !== null || this.supportsDynamicHosts()
@@ -816,15 +825,38 @@ class CWidget extends CBaseComponent {
}
_showPreloader() {
+ // Fixed Safari 16 bug: removing preloader classes on animation frame to ensure removal of icons.
+
+ if (this._hide_preloader_animation_frame !== null) {
+ cancelAnimationFrame(this._hide_preloader_animation_frame);
+ this._hide_preloader_animation_frame = null;
+ }
+
this._content_body.classList.add('is-loading');
this._content_body.classList.remove('is-loading-fadein', 'delayed-15s');
}
_hidePreloader() {
- this._content_body.classList.remove('is-loading', 'is-loading-fadein', 'delayed-15s');
+ // Fixed Safari 16 bug: removing preloader classes on animation frame to ensure removal of icons.
+
+ if (this._hide_preloader_animation_frame !== null) {
+ return;
+ }
+
+ this._hide_preloader_animation_frame = requestAnimationFrame(() => {
+ this._content_body.classList.remove('is-loading', 'is-loading-fadein', 'delayed-15s');
+ this._hide_preloader_animation_frame = null;
+ });
}
_schedulePreloader() {
+ // Fixed Safari 16 bug: removing preloader classes on animation frame to ensure removal of icons.
+
+ if (this._hide_preloader_animation_frame !== null) {
+ cancelAnimationFrame(this._hide_preloader_animation_frame);
+ this._hide_preloader_animation_frame = null;
+ }
+
this._content_body.classList.add('is-loading', 'is-loading-fadein', 'delayed-15s');
}
@@ -847,7 +879,7 @@ class CWidget extends CBaseComponent {
this._button_edit = document.createElement('button');
this._button_edit.type = 'button';
this._button_edit.title = t('Edit')
- this._button_edit.classList.add('btn-widget-edit');
+ this._button_edit.classList.add('btn-widget-edit', 'js-widget-edit');
const li = document.createElement('li');
@@ -860,7 +892,7 @@ class CWidget extends CBaseComponent {
this._button_actions.title = t('Actions');
this._button_actions.setAttribute('aria-expanded', 'false');
this._button_actions.setAttribute('aria-haspopup', 'true');
- this._button_actions.classList.add('btn-widget-action');
+ this._button_actions.classList.add('btn-widget-action', 'js-widget-action');
const li = document.createElement('li');
@@ -873,7 +905,8 @@ class CWidget extends CBaseComponent {
this._content_body = document.createElement('div');
this._content_body.classList.add(this._css_classes.content);
- this._content_body.classList.toggle('no-padding', !this._configuration.padding);
+ this._content_body.classList.add(`dashboard-widget-${this._type}`);
+ this._content_body.classList.toggle('no-padding', !this._hasPadding());
this._container.appendChild(this._content_body);
diff --git a/ui/js/widgets/class.widget.paste-placeholder.js b/ui/js/class.widget.paste-placeholder.js
index 88db8992684..88db8992684 100644
--- a/ui/js/widgets/class.widget.paste-placeholder.js
+++ b/ui/js/class.widget.paste-placeholder.js
diff --git a/ui/js/common.js b/ui/js/common.js
index cd696caa9e4..bad37ea49a6 100644
--- a/ui/js/common.js
+++ b/ui/js/common.js
@@ -361,7 +361,16 @@ function PopUp(action, parameters, {
.then(function(resp) {
if ('error' in resp) {
overlay.setProperties({
- content: makeMessageBox('bad', resp.error.messages, resp.error.title, false)
+ title: resp.header !== undefined ? resp.header : '',
+ content: makeMessageBox('bad', resp.error.messages, resp.error.title, false),
+ buttons: [
+ {
+ 'title': t('Cancel'),
+ 'class': 'btn-alt js-cancel',
+ 'cancel': true,
+ 'action': function() {}
+ }
+ ]
});
}
else {
@@ -401,6 +410,26 @@ function PopUp(action, parameters, {
overlay.recoverFocus();
overlay.containFocus();
+ })
+ .fail((resp) => {
+ const error = resp.responseJSON !== undefined && resp.responseJSON.error !== undefined
+ ? resp.responseJSON.error
+ : {title: t('Unexpected server error.')};
+
+ overlay.setProperties({
+ content: makeMessageBox('bad', error.messages, error.title, false),
+ buttons: [
+ {
+ 'title': t('Cancel'),
+ 'class': 'btn-alt js-cancel',
+ 'cancel': true,
+ 'action': function() {}
+ }
+ ]
+ });
+
+ overlay.recoverFocus();
+ overlay.containFocus();
});
addToOverlaysStack(overlay);
@@ -522,15 +551,18 @@ function closeDialogHandler(event) {
* @return {object|undefined|null} Overlay object, if found.
*/
function removeFromOverlaysStack(dialogueid, return_focus) {
- var overlay = null;
-
if (return_focus !== false) {
return_focus = true;
}
- overlay = overlays_stack.removeById(dialogueid);
+ const overlay = overlays_stack.removeById(dialogueid);
+
if (overlay && return_focus) {
- jQuery(overlay.element).focus();
+ if (overlay.element !== undefined) {
+ const element = overlay.element instanceof jQuery ? overlay.element[0] : overlay.element;
+
+ element.focus({preventScroll: true});
+ }
}
// Remove event listener.
diff --git a/ui/js/main.js b/ui/js/main.js
index 44ca0377e77..ec143333d4b 100644
--- a/ui/js/main.js
+++ b/ui/js/main.js
@@ -655,10 +655,10 @@ var hintBox = {
};
/**
- * Add object to the list of favourites.
+ * Add object to the list of favorites.
*/
function add2favorites(object, objectid) {
- sendAjaxData('zabbix.php?action=favourite.create', {
+ sendAjaxData('zabbix.php?action=favorite.create', {
data: {
object: object,
objectid: objectid
@@ -667,10 +667,10 @@ function add2favorites(object, objectid) {
}
/**
- * Remove object from the list of favourites. Remove all favourites if objectid==0.
+ * Remove object from the list of favorites. Remove all favorites if objectid==0.
*/
function rm4favorites(object, objectid) {
- sendAjaxData('zabbix.php?action=favourite.delete', {
+ sendAjaxData('zabbix.php?action=favorite.delete', {
data: {
object: object,
objectid: objectid
@@ -684,7 +684,7 @@ function rm4favorites(object, objectid) {
* @param {string} idx User profile index
* @param {string} value Value
* @param {object} idx2 An array of IDs
- * @param {integer} profile_type Profile type
+ * @param {int} profile_type Profile type
*/
function updateUserProfile(idx, value, idx2, profile_type = PROFILE_TYPE_INT) {
const value_fields = {
@@ -701,25 +701,23 @@ function updateUserProfile(idx, value, idx2, profile_type = PROFILE_TYPE_INT) {
});
}
-function changeWidgetState(obj, widgetId, idx) {
- var widgetObj = jQuery('#' + widgetId + '_widget'),
- css = switchElementClass(obj, 'btn-widget-collapse', 'btn-widget-expand'),
- state = 0;
+/**
+ * Section collapse toggle.
+ *
+ * @param {string} id
+ * @param {string|null} profile_idx If not null, stores state in profile.
+ */
+function toggleSection(id, profile_idx) {
+ const section = document.getElementById(id);
+ const toggle = section.querySelector('.section-toggle');
- if (css === 'btn-widget-expand') {
- jQuery('.body', widgetObj).slideUp(50);
- jQuery('.dashboard-widget-foot', widgetObj).slideUp(50);
- }
- else {
- jQuery('.body', widgetObj).slideDown(50);
- jQuery('.dashboard-widget-foot', widgetObj).slideDown(50);
+ let is_collapsed = section.classList.contains('section-collapsed');
- state = 1;
- }
+ section.classList.toggle('section-collapsed', !is_collapsed);
+ toggle.setAttribute('title', is_collapsed ? t('S_COLLAPSE') : t('S_EXPAND'));
- obj.title = (state == 1) ? t('S_COLLAPSE') : t('S_EXPAND');
- if (idx !== '' && typeof idx !== 'undefined') {
- updateUserProfile(idx, state, []);
+ if (profile_idx !== '') {
+ updateUserProfile(profile_idx, is_collapsed ? '1' : '0', []);
}
}
diff --git a/ui/js/menupopup.js b/ui/js/menupopup.js
index 6fd90b81f9a..50da50c3b7e 100644
--- a/ui/js/menupopup.js
+++ b/ui/js/menupopup.js
@@ -611,7 +611,8 @@ function getMenuPopupDashboard(options, trigger_element) {
const url_clone = new Curl('zabbix.php', false);
url_clone.setArgument('action', 'dashboard.view');
- url_clone.setArgument('source_dashboardid', options.dashboardid);
+ url_clone.setArgument('dashboardid', options.dashboardid);
+ url_clone.setArgument('clone', '1');
const url_delete = new Curl('zabbix.php', false);
url_delete.setArgument('action', 'dashboard.delete');
diff --git a/ui/js/pages/items.js b/ui/js/pages/items.js
index 4614da27cb7..75d997a0ede 100644
--- a/ui/js/pages/items.js
+++ b/ui/js/pages/items.js
@@ -97,8 +97,8 @@ function organizeInterfaces(interface_ids_by_types, item_interface_types, item_t
const allowed_opt_interface = (interface_type == INTERFACE_TYPE_OPT);
- $(interface_select_node.getOptionByValue(INTERFACE_TYPE_OPT)).attr('disabled', !allowed_opt_interface);
- $interface_select.find('li[value="'+INTERFACE_TYPE_OPT+'"]')
+ $(interface_select_node.getOptionByValue(0)).attr('disabled', !allowed_opt_interface);
+ $interface_select.find('li[value="0"]')
.toggle(allowed_opt_interface)
.parents('li[optgroup]:first')
.toggle(allowed_opt_interface);
diff --git a/ui/jsLoader.php b/ui/jsLoader.php
index 2adaa6a783b..49d5c21e422 100644
--- a/ui/jsLoader.php
+++ b/ui/jsLoader.php
@@ -36,20 +36,10 @@ $available_js = [
'class.dashboard.js' => '',
'class.dashboard.page.js' => '',
'class.dashboard.widget.placeholder.js' => '',
- 'class.widget.js' => 'widgets/',
- 'class.widget.iterator.js' => 'widgets/',
- 'class.widget.clock.js' => 'widgets/',
- 'class.widget.geomap.js' => 'widgets/',
- 'class.widget.graph.js' => 'widgets/',
- 'class.widget.graph-prototype.js' => 'widgets/',
- 'class.widget.item.js' => 'widgets/',
- 'class.widget.map.js' => 'widgets/',
- 'class.widget.navtree.js' => 'widgets/',
- 'class.widget.paste-placeholder.js' => 'widgets/',
- 'class.widget.problems.js' => 'widgets/',
- 'class.widget.problemsbysv.js' => 'widgets/',
- 'class.widget.svggraph.js' => 'widgets/',
- 'class.widget.trigerover.js' => 'widgets/',
+ 'class.widget.js' => '',
+ 'class.widget.inaccessible.js' => '',
+ 'class.widget.iterator.js' => '',
+ 'class.widget.paste-placeholder.js' => '',
'hostinterfacemanager.js' => '',
'hostmacrosmanager.js' => '',
'menupopup.js' => '',
@@ -136,6 +126,8 @@ $translate_strings = [
'Actions' => _('Actions'),
'Cannot add dashboard page: maximum number of %1$d dashboard pages has been added.' => _('Cannot add dashboard page: maximum number of %1$d dashboard pages has been added.'),
'Cannot add widget: not enough free space on the dashboard.' => _('Cannot add widget: not enough free space on the dashboard.'),
+ 'Cannot add widget: no widgets available.' => _('Cannot add widget: no widgets available.'),
+ 'Cannot paste inaccessible widget.' => _('Cannot paste inaccessible widget.'),
'Copy' => _('Copy'),
'Delete' => _('Delete'),
'Failed to paste dashboard page.' => _('Failed to paste dashboard page.'),
@@ -143,12 +135,17 @@ $translate_strings = [
'Failed to update dashboard page properties.' => _('Failed to update dashboard page properties.'),
'Failed to update dashboard properties.' => _('Failed to update dashboard properties.'),
'Failed to update widget properties.' => _('Failed to update widget properties.'),
+ 'Inaccessible widgets were not copied.' => _('Inaccessible widgets were not copied.'),
+ 'Inaccessible widgets were not pasted.' => _('Inaccessible widgets were not pasted.'),
'Page %1$d' => _('Page %1$d'),
'Paste widget' => _('Paste widget'),
'Properties' => _('Properties'),
'Start slideshow' => _('Start slideshow'),
'Stop slideshow' => _('Stop slideshow')
],
+ 'class.dashboard.page.js' => [
+ 'Inaccessible widget' => _('Inaccessible widget')
+ ],
'class.dashboard.widget.placeholder.js' => [
'Add a new widget' => _('Add a new widget'),
'Click and drag to desired size.' => _('Click and drag to desired size.'),
@@ -172,26 +169,11 @@ $translate_strings = [
'Paste' => _s('Paste'),
'Refresh interval' => _s('Refresh interval')
],
- 'class.widget.geomap.js' => [
- 'Actions' => _('Actions'),
- 'Set this view as default' => _('Set this view as default'),
- 'Reset to initial view' => _('Reset to initial view'),
- 'No problems' => _('No problems'),
- 'Not classified' => _('Not classified'),
- 'Information' => _('Information'),
- 'Warning' => _('Warning'),
- 'Average' => _('Average'),
- 'High' => _('High'),
- 'Disaster' => _('Disaster'),
- 'Host' => _('Host'),
- 'D' => _x('D', 'abbreviation of severity level'),
- 'H' => _x('H', 'abbreviation of severity level'),
- 'A' => _x('A', 'abbreviation of severity level'),
- 'W' => _x('W', 'abbreviation of severity level'),
- 'I' => _x('I', 'abbreviation of severity level'),
- 'N' => _x('N', 'abbreviation of severity level'),
- 'Navigate to default view' => _('Navigate to default view'),
- 'Navigate to initial view' => _('Navigate to initial view')
+ 'class.widget.inaccessible.js' => [
+ 'Actions' => _s('Actions'),
+ 'Copy' => _s('Copy'),
+ 'Inaccessible widget' => _('Inaccessible widget'),
+ 'Refresh interval' => _s('Refresh interval')
],
'class.widget.iterator.js' => [
'Next page' => _s('Next page'),
@@ -199,24 +181,6 @@ $translate_strings = [
'Widget is too small for the specified number of columns and rows.' =>
_s('Widget is too small for the specified number of columns and rows.')
],
- 'class.widget.graph.js' => [
- 'Actions' => _s('Actions'),
- 'Download image' => _s('Download image')
- ],
- 'class.widget.navtree.js' => [
- 'Add' => _s('Add'),
- 'Add child element' => _s('Add child element'),
- 'Add multiple maps' => _s('Add multiple maps'),
- 'Apply' => _s('Apply'),
- 'Cancel' => _s('Cancel'),
- 'Edit' => _s('Edit'),
- 'Edit tree element' => _s('Edit tree element'),
- 'Remove' => _s('Remove')
- ],
- 'class.widget.svggraph.js' => [
- 'Actions' => _s('Actions'),
- 'Download image' => _s('Download image')
- ],
'functions.js' => [
'Cancel' => _('Cancel'),
'S_CLOSE' => _('Close'),
@@ -420,7 +384,8 @@ $translate_strings = [
],
'common.js' => [
'Cancel' => _('Cancel'),
- 'Ok' => _('Ok')
+ 'Ok' => _('Ok'),
+ 'Unexpected server error.' => _('Unexpected server error.')
],
'component.z-select.js' => [
'All' => _('All')
diff --git a/ui/locale/bg/LC_MESSAGES/frontend.po b/ui/locale/bg/LC_MESSAGES/frontend.po
index 99b3a596773..f3e41d16bbd 100644
--- a/ui/locale/bg/LC_MESSAGES/frontend.po
+++ b/ui/locale/bg/LC_MESSAGES/frontend.po
@@ -271,6 +271,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -897,6 +902,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1224,6 +1233,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2125,10 +2164,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Ðе може да Ñе добави уеб Ñценарий"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2200,6 +2253,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2814,6 +2877,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Ðе може да Ñе намери хоÑÑ‚ интефейÑа в \"%1$s\" за елемент на данните ключ \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2931,6 +3004,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3067,6 +3319,10 @@ msgstr "ÐеуÑпешно общо актуализиране видимото
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3153,6 +3409,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9129,6 +9425,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14335,6 +14650,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21085,6 +21404,11 @@ msgstr "Работно време"
msgid "Write"
msgstr "Пиша"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21627,6 +21951,14 @@ msgstr "Ð’Ñички"
msgid "all media"
msgstr "вÑички уведомлениÑ"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21696,6 +22028,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21849,6 +22193,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21949,6 +22309,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21960,6 +22324,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21968,6 +22336,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22395,6 +22771,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22780,6 +23160,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22869,6 +23257,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22944,6 +23336,11 @@ msgstr ""
msgid "on"
msgstr "в"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23258,6 +23655,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "шаблон Ñ ID \"%1$s\" е изпълнен %2$s пъти"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23502,6 +23911,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/ca/LC_MESSAGES/frontend.po b/ui/locale/ca/LC_MESSAGES/frontend.po
index 0f19923b3cf..96c706e882a 100644
--- a/ui/locale/ca/LC_MESSAGES/frontend.po
+++ b/ui/locale/ca/LC_MESSAGES/frontend.po
@@ -271,6 +271,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -897,6 +902,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1224,6 +1233,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2126,10 +2165,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2201,6 +2254,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2807,6 +2870,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2924,6 +2997,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3060,6 +3312,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3146,6 +3402,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9110,6 +9406,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14313,6 +14628,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21059,6 +21378,11 @@ msgstr ""
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21600,6 +21924,14 @@ msgstr ""
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21669,6 +22001,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21822,6 +22166,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21922,6 +22282,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21933,6 +22297,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21941,6 +22309,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22368,6 +22744,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22753,6 +23133,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22842,6 +23230,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22917,6 +23309,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23230,6 +23627,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23474,6 +23883,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/cs/LC_MESSAGES/frontend.po b/ui/locale/cs/LC_MESSAGES/frontend.po
index 677d4695c71..048de9b0fd1 100644
--- a/ui/locale/cs/LC_MESSAGES/frontend.po
+++ b/ui/locale/cs/LC_MESSAGES/frontend.po
@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: Zabbix 6.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-17 15:53+0200\n"
-"PO-Revision-Date: 2022-10-26 08:28+0000\n"
-"Last-Translator: Tomáš Heřmánek <tomas.hermanek@initmax.cz>\n"
+"PO-Revision-Date: 2022-11-04 08:52+0000\n"
+"Last-Translator: Krejcik Tomas <tkrejcik@sysma.cz>\n"
"Language-Team: Zabbix <info@zabbix.com>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
@@ -287,6 +287,11 @@ msgstr "%1$s, vybrané"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr "%1$s. %2$s: %3$s. %4$s."
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -920,6 +925,10 @@ msgstr "Přidat nový widget"
msgid "Add child element"
msgstr "Přidat podřízený prvek"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Přidat podřízenou službu"
@@ -1247,6 +1256,36 @@ msgstr "Množství fyzické paměti hosta, která je odložena do odkládacího
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Množství fyzické pamÄ›ti hostitele spotÅ™ebované pro zálohování stránek fyzické pamÄ›ti hosta, <url> – URL služby VMware, <uuid> – název hostitele virtuálního poÄítaÄe VMware"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "Analogové"
@@ -2152,10 +2191,24 @@ msgstr "Nelze přidat uživatelskou skupinu"
msgid "Cannot add web scenario"
msgstr "Není možné přidat webový scénář"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "Widget nelze přidat: na řídicím panelu není dostatek volného místa."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2229,6 +2282,16 @@ msgstr[0] "Není možné kopírovat položku"
msgstr[1] "Není možné kopírovat položky"
msgstr[2] "Není možné kopírovat položky"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2880,6 +2943,16 @@ msgstr "Nelze najít skupinu \"%1$s\" pro prototyp hosta \"%2$s\" zjišťovacíh
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Nelze najít hostitelské rozhraní na \"%1$s\" pro klÃ­Ä položky \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2998,6 +3071,185 @@ msgstr[0] "Není možné importovat šablonu \"%1$s\", připojená šablona \"%2
msgstr[1] "Není možné importovat šablonu \"%1$s\", připojené šablony \"%2$s\" neexistují."
msgstr[2] "Není možné importovat šablonu \"%1$s\", připojené šablony \"%2$s\" neexistují."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Není možné vložit výraz spouÅ¡tÄ›Äe"
@@ -3135,6 +3387,10 @@ msgstr "Není možné hromadně aktualizovat zobrazované jméno hosta."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "Není možné vykonat vícenásobné linkovaní šablon s ID: %1$s."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3221,6 +3477,46 @@ msgstr "Nelze nastavit \"%1$s\" pro prototyp grafu \"%2$s\"."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Nelze nastavit \"%1$s\" pro položku \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -4075,7 +4371,7 @@ msgstr "Komprimace"
#: app/views/administration.housekeeping.edit.php:174
#: app/views/administration.housekeeping.edit.php:184
msgid "Compression is not supported."
-msgstr ""
+msgstr "Komprese není podporována."
#: app/views/administration.mediatype.edit.php:321
msgid "Concurrent sessions"
@@ -4141,7 +4437,7 @@ msgstr "Nastavení akcí"
#: app/controllers/CControllerAuditSettingsEdit.php:60
msgid "Configuration of audit log"
-msgstr ""
+msgstr "Konfigurace auditního logu"
#: app/controllers/CControllerAuthenticationEdit.php:196
msgid "Configuration of authentication"
@@ -4241,7 +4537,7 @@ msgstr "Nastavení skriptů"
#: app/controllers/CControllerTemplateGroupEdit.php:88
msgid "Configuration of template group"
-msgstr ""
+msgstr "Konfigurace Å¡ablony"
#: app/controllers/CControllerTemplateGroupList.php:123
msgid "Configuration of template groups"
@@ -5261,7 +5557,7 @@ msgstr "Den"
#: include/classes/helpers/CSlaHelper.php:68
msgctxt "compact table header"
msgid "Day"
-msgstr ""
+msgstr "Den"
#: include/func.inc.php:2467
msgid "Day before yesterday"
@@ -5336,7 +5632,7 @@ msgstr ""
#: app/controllers/CControllerAuthenticationUpdate.php:134
msgid "Default LDAP server must be specified."
-msgstr ""
+msgstr "Výchozí LDAP server musí být definován."
#: app/views/administration.userrole.edit.php:123
msgid "Default access to new UI elements"
@@ -5557,7 +5853,7 @@ msgstr "Smazat vybranou smlouvu SLA?"
#: app/views/js/sla.list.js.php:129
msgid "Delete selected SLAs?"
-msgstr ""
+msgstr "Smazat vybraná SLAs?"
#: include/views/configuration.action.list.php:172
msgid "Delete selected actions?"
@@ -5700,7 +5996,7 @@ msgstr "Smazat vybrané tvary?"
#: app/views/js/configuration.templategroup.list.js.php:70
#: app/views/popup.templategroup.edit.php:50
msgid "Delete selected template group?"
-msgstr ""
+msgstr "Smazat vybranou Å¡ablonu?"
#: app/views/js/configuration.templategroup.list.js.php:69
msgid "Delete selected template groups?"
@@ -6599,7 +6895,7 @@ msgstr "E-mail"
#: app/views/js/administration.mediatype.edit.js.php:397
msgid "Email and password"
-msgstr ""
+msgstr "Email a heslo"
#: app/views/administration.mediatype.edit.php:64
msgid "Email provider"
@@ -9219,6 +9515,25 @@ msgstr "Nepřístupný uživatel"
msgid "Inaccessible user group"
msgstr "Nepřístupná uživatelská skupina"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -13840,7 +14155,7 @@ msgstr "Ok"
#: app/views/monitoring.widget.web.view.php:33
msgctxt "compact table header"
msgid "Ok"
-msgstr ""
+msgstr "Ok"
#: include/classes/helpers/CCorrelationHelper.php:52
#: include/classes/helpers/CCorrelationHelper.php:117
@@ -13940,11 +14255,11 @@ msgstr "PoÄítány jsou pouze spouÅ¡tÄ›Äe pÅ™iÅ™azené k povoleným hostitelů
#: app/views/administration.script.edit.php:193
msgid "Open in a new window"
-msgstr ""
+msgstr "Otevřít v novém okně"
#: app/views/popup.mediatypetest.edit.php:52 app/views/popup.scriptexec.php:40
msgid "Open log"
-msgstr ""
+msgstr "Otevřít log"
#: include/httptest.inc.php:421
msgid "Opera"
@@ -14442,6 +14757,10 @@ msgstr "Stránka %1$d"
msgid "Page display period"
msgstr "Doba zobrazení stránky"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -16917,7 +17236,7 @@ msgstr ""
#: include/classes/api/services/CService.php:1519
#, c-format
msgid "Service \"%1$s\" cannot have problem tags and children at the same time."
-msgstr ""
+msgstr "Služba \"%1$s\" nemůže mít problémy v tagech a zároveň v podřízených službách."
#: include/classes/helpers/CMenuHelper.php:83
#: include/classes/helpers/CRoleHelper.php:352
@@ -21213,6 +21532,11 @@ msgstr "Pracovní doba"
msgid "Write"
msgstr "Zápis"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21757,6 +22081,14 @@ msgstr "vše"
msgid "all media"
msgstr "všechny média"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21826,6 +22158,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21979,6 +22323,22 @@ msgstr "vypoÄítáno"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "nemůže být změněno"
@@ -22079,6 +22439,10 @@ msgstr "nemůže být změněno"
msgid "cannot be empty"
msgstr "nemůže být prázdný"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22090,6 +22454,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -22098,6 +22466,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr "nelze převést na JSON, výsledná hodnota je příliš dlouhá"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22525,6 +22901,10 @@ msgctxt "event source"
msgid "internal"
msgstr "interní"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22910,6 +23290,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22999,6 +23387,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23074,6 +23466,11 @@ msgstr "pryÄ"
msgid "on"
msgstr "na"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "je povolená pouze hodnota Äasu"
@@ -23387,6 +23784,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "šablona ID \"%1$s\" je použitá %2$s krát"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23631,6 +24040,11 @@ msgstr "nepodporovaná Äasová přípona"
msgid "unsupported version number"
msgstr "nepodporované Äíslo verze"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/da/LC_MESSAGES/frontend.po b/ui/locale/da/LC_MESSAGES/frontend.po
index 48312d64b2e..e8fcf16091e 100644
--- a/ui/locale/da/LC_MESSAGES/frontend.po
+++ b/ui/locale/da/LC_MESSAGES/frontend.po
@@ -269,6 +269,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -895,6 +900,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1222,6 +1231,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2124,10 +2163,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2199,6 +2252,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2805,6 +2868,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2922,6 +2995,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3058,6 +3310,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3144,6 +3400,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9108,6 +9404,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14311,6 +14626,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21057,6 +21376,11 @@ msgstr ""
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21598,6 +21922,14 @@ msgstr ""
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21667,6 +21999,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21820,6 +22164,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21920,6 +22280,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21931,6 +22295,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21939,6 +22307,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22366,6 +22742,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22751,6 +23131,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22840,6 +23228,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22915,6 +23307,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23228,6 +23625,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23472,6 +23881,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/de/LC_MESSAGES/frontend.po b/ui/locale/de/LC_MESSAGES/frontend.po
index 4a2922f696f..2ec1a686bda 100644
--- a/ui/locale/de/LC_MESSAGES/frontend.po
+++ b/ui/locale/de/LC_MESSAGES/frontend.po
@@ -272,6 +272,11 @@ msgstr "%1$s, ausgewählt"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -898,6 +903,10 @@ msgstr "Neues Widget hinzufügen"
msgid "Add child element"
msgstr "Untergeordnetes Element hinzufügen"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Untergeordneten Dienst hinzugefügt"
@@ -1225,6 +1234,36 @@ msgstr "Menge des physischen Arbeitsspeichers des Gastes, die in den Swap-Bereic
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Menge des physischen Arbeitsspeichers des Hosts, die für die Sicherung der physischen Speicherseiten des Gastes verbraucht wird, <url> - URL des VMware-Dienstes, <uuid> - Hostname der virtuellen VMware-Maschine"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "Analog"
@@ -2130,10 +2169,24 @@ msgstr "Kann Benutzergruppe nicht hinzufügen"
msgid "Cannot add web scenario"
msgstr "Kann Web-Szenario nicht hinzufügen"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "Widget kann nicht hinzugefügt werden: nicht genügend freier Platz auf der Übersichtsseite."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2206,6 +2259,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "Kann Element nicht kopieren"
msgstr[1] "Kann Elemente nicht kopieren"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2812,6 +2875,16 @@ msgstr "Kann Hostgruppe \"%1$s\" nicht finden für Hostprototyp \"%2$s\" der Suc
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Kann für den Datenpunktschlüssel \"%2$s\" die Hostschnittstelle auf \"%1$s\" nicht finden."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2929,6 +3002,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Kann Vorlage nicht importieren \"%1$s\", verknüpfte Vorlage \"%2$s\" existiert nicht."
msgstr[1] "Kann Vorlage nicht importieren \"%1$s\", verknüpfte Vorlagen \"%2$s\" existieren nicht."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Kann Auslöser Ausdruck nicht einfügen"
@@ -3065,6 +3317,10 @@ msgstr "Massenänderung nicht möglich für sichtbare Hostnamen."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "Es können keine doppelten Vorlagen-IDs für die Verknüpfung: %1$s übergeben werden."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3151,6 +3407,46 @@ msgstr "Kann \"%1$s\"\" für Diagramm-Prototypen \"%2$s\" nicht setzen."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Kann \"%1$s\" nicht setzen für Datenpunkt \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9141,6 +9437,25 @@ msgstr "Unerreichbarer Benutzer"
msgid "Inaccessible user group"
msgstr "Unerreichbare Benutzergruppe"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14351,6 +14666,10 @@ msgstr "Seite %1$d"
msgid "Page display period"
msgstr "Anzeigezeitraum der Seite"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21111,6 +21430,11 @@ msgstr "Arbeitszeit"
msgid "Write"
msgstr "Schreiben"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21655,6 +21979,14 @@ msgstr "alle"
msgid "all media"
msgstr "Alle Medien"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "eine IP Adresse wird erwartet"
@@ -21724,6 +22056,18 @@ msgstr "ein Bezeichner ist in der Formel nicht definiert"
msgid "an integer is expected"
msgstr "eine Integerzahl ist erwartet"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21877,6 +22221,22 @@ msgstr "berechnet"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "kann verwendet werden, um \"@2x\" zur URL hinzuzufügen, um Retina-Kacheln zu laden."
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "nicht änderbar"
@@ -21977,6 +22337,10 @@ msgstr "nicht änderbar"
msgid "cannot be empty"
msgstr "darf nicht leer sein"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21988,6 +22352,10 @@ msgstr "darf nicht kleiner oder gleich dem Wert des Parameters „%1$s“ sein"
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "Der Wert des Parameters \"%1$s\" kann nicht angegeben werden"
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "kann nicht entkoppelt werden"
@@ -21996,6 +22364,14 @@ msgstr "kann nicht entkoppelt werden"
msgid "cannot convert to JSON, result value too long"
msgstr "kann nicht in JSON konvertiert werden, Ergebniswert zu lang"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr "Vorlagen-Host-Prototyp kann nicht gelöscht werden"
@@ -22423,6 +22799,10 @@ msgctxt "event source"
msgid "internal"
msgstr "interne"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22808,6 +23188,14 @@ msgstr "muss mindestens einen lateinischen Klein- und einen Großbuchstaben enth
msgid "must contain at least one special character"
msgstr "muss mindestens ein Sonderzeichen enthalten"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22897,6 +23285,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22973,6 +23365,11 @@ msgstr "aus"
msgid "on"
msgstr "an"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23286,6 +23683,18 @@ msgstr "tan() - Der Tangens eines Werts"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "Vorlagen ID \"%1$s\" kommt %2$s mal vor"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "der letzte neue Zeilenvorschub fehlt"
@@ -23530,6 +23939,11 @@ msgstr "nicht unterstütztes Zeitsuffix"
msgid "unsupported version number"
msgstr "nicht unterstützte Version"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "Bezeichner in Großbuchstaben erwartet"
diff --git a/ui/locale/el/LC_MESSAGES/frontend.po b/ui/locale/el/LC_MESSAGES/frontend.po
index 7c26686cf86..0c9bdf05680 100644
--- a/ui/locale/el/LC_MESSAGES/frontend.po
+++ b/ui/locale/el/LC_MESSAGES/frontend.po
@@ -275,6 +275,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -901,6 +906,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1228,6 +1237,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2128,10 +2167,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "ΑδÏνατη η Ï€Ïοσθήκη σενάÏιου ιστοÏ"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2203,6 +2256,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2814,6 +2877,16 @@ msgstr "Δεν βÏίσκω ομάδα ξενιστή \"%1$s\" για Ï€Ïωτό
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Δεν βÏίσκω διεπαφή ξενιστή στον \"%1$s\" για κλειδί συλλέκτη \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2931,6 +3004,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Δεν μποÏÏŽ να εισάγω σχεδιότυπο \"%1$s\", συνδεδεμένο σχεδιότυπο \"%2$s\" ανÏπαÏκτο."
msgstr[1] "Δεν μποÏÏŽ να εισάγω σχεδιότυπο \"%1$s\", συνδεδεμένα σχεδιότυπα \"%2$s\" ανÏπαÏκτα."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "ΑδÏνατη η εισαγωγή έκφÏασης εναÏσματος"
@@ -3067,6 +3319,10 @@ msgstr "ΑδÏνατη η μαζική ενημέÏωση οÏÎ±Ï„Î¿Ï Î¿Î½ÏŒÎ¼Î
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3153,6 +3409,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "ΑδÏνατη η τοποθέτηση \"%1$s\" για συλλέκτη \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9123,6 +9419,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14328,6 +14643,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21079,6 +21398,11 @@ msgstr "ΧÏόνος εÏγασίας"
msgid "Write"
msgstr "ΕγγÏαφή"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21620,6 +21944,14 @@ msgstr "όλα"
msgid "all media"
msgstr "όλα τα μέσα"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21689,6 +22021,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21842,6 +22186,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21942,6 +22302,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21953,6 +22317,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21961,6 +22329,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22388,6 +22764,10 @@ msgctxt "event source"
msgid "internal"
msgstr "εσωτεÏικά"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22773,6 +23153,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22862,6 +23250,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22937,6 +23329,11 @@ msgstr "εκτός"
msgid "on"
msgstr "επί"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23250,6 +23647,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "το ID σχεδιότυπου \"%1$s\" πέÏασε %2$s φοÏές"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23494,6 +23903,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/en/LC_MESSAGES/frontend.pot b/ui/locale/en/LC_MESSAGES/frontend.pot
index 2930c54eecd..9085d7b6275 100644
--- a/ui/locale/en/LC_MESSAGES/frontend.pot
+++ b/ui/locale/en/LC_MESSAGES/frontend.pot
@@ -274,6 +274,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -900,6 +905,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1227,6 +1236,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2129,10 +2168,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2204,6 +2257,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2810,6 +2873,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2927,6 +3000,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3063,6 +3315,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3149,6 +3405,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9113,6 +9409,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14316,6 +14631,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21062,6 +21381,11 @@ msgstr ""
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21603,6 +21927,14 @@ msgstr ""
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21672,6 +22004,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21825,6 +22169,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21925,6 +22285,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21936,6 +22300,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21944,6 +22312,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22371,6 +22747,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22756,6 +23136,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22845,6 +23233,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22920,6 +23312,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23233,6 +23630,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23477,6 +23886,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/en_GB/LC_MESSAGES/frontend.po b/ui/locale/en_GB/LC_MESSAGES/frontend.po
index 5a6c10f1eae..773e69436d9 100644
--- a/ui/locale/en_GB/LC_MESSAGES/frontend.po
+++ b/ui/locale/en_GB/LC_MESSAGES/frontend.po
@@ -273,6 +273,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -899,6 +904,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1226,6 +1235,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2128,10 +2167,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2203,6 +2256,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2809,6 +2872,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2926,6 +2999,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3062,6 +3314,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3148,6 +3404,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9112,6 +9408,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14315,6 +14630,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21061,6 +21380,11 @@ msgstr ""
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21602,6 +21926,14 @@ msgstr ""
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21671,6 +22003,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21824,6 +22168,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21924,6 +22284,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21935,6 +22299,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21943,6 +22311,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22370,6 +22746,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22755,6 +23135,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22844,6 +23232,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22919,6 +23311,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23232,6 +23629,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23476,6 +23885,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/es/LC_MESSAGES/frontend.po b/ui/locale/es/LC_MESSAGES/frontend.po
index db9a259f302..51917189e6c 100644
--- a/ui/locale/es/LC_MESSAGES/frontend.po
+++ b/ui/locale/es/LC_MESSAGES/frontend.po
@@ -271,6 +271,11 @@ msgstr "%1$s, seleccionado"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -897,6 +902,10 @@ msgstr "Agregar un nuevo widget"
msgid "Add child element"
msgstr "Agregar un elemento hijo"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Añadir un servicio hijo"
@@ -1224,6 +1233,36 @@ msgstr "Cantidad de la memoria física del invitado que ha sido enviada al espac
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Cantidad de memoria física del anfitrión consumida para respaldar las páginas de memoria física del huésped, <url> - URL del servicio de VMWare, <uuid> - nombre de la máquina virtual de VMWare"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2126,10 +2165,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "No se pudo agregar el escenario web"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2201,6 +2254,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "No se pudo copiar el monitor"
msgstr[1] "No se pudo copiar los monitores"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2810,6 +2873,16 @@ msgstr "No se pudo encontrar el grupo de equipos \"%1$s\" para el prototipo de e
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "No se pudo encontrar una interfaz de equipo en \"%1$s\" para el parámetro de ítem \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2927,6 +3000,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "No se pudo importar la plantilla \"%1$s\" porque la plantilla enlazada \"%2$s\" no existe."
msgstr[1] "No se pudo importar la plantilla \"%1$s\" porque las plantillas enlazadas \"%2$s\" no existen."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "No se pudo insertar la expresión del disparador"
@@ -3063,6 +3315,10 @@ msgstr "No se puede actualizar en masa los nombres visibles de los equipos."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3149,6 +3405,46 @@ msgstr "No pude definir \"%1$s\" para el prototipo de gráfico \"%2$s\"."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "No se pudo establecer \"%1$s\" para el ítem \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9122,6 +9418,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14327,6 +14642,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21074,6 +21393,11 @@ msgstr "Jornada laboral"
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21615,6 +21939,14 @@ msgstr "todo"
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21684,6 +22016,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21837,6 +22181,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21937,6 +22297,10 @@ msgstr ""
msgid "cannot be empty"
msgstr "no puede estar vacío"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21948,6 +22312,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21956,6 +22324,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22383,6 +22759,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22768,6 +23148,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22857,6 +23245,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22932,6 +23324,11 @@ msgstr "desconectado"
msgid "on"
msgstr "conectado"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23245,6 +23642,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23489,6 +23898,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/fa/LC_MESSAGES/frontend.po b/ui/locale/fa/LC_MESSAGES/frontend.po
index 4ae127a15b1..f3494dde3f4 100644
--- a/ui/locale/fa/LC_MESSAGES/frontend.po
+++ b/ui/locale/fa/LC_MESSAGES/frontend.po
@@ -255,6 +255,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -874,6 +879,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1201,6 +1210,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2100,10 +2139,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2173,6 +2226,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2739,6 +2802,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "واسط هاست در \"%1$s\" برای کلید آیتم \"%2$s\" پیدا نشد."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2855,6 +2928,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -2990,6 +3242,10 @@ msgstr " نام قابل مشاهده هاست را نمیتوانید دستهâ
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3076,6 +3332,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9019,6 +9315,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14202,6 +14517,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20923,6 +21242,11 @@ msgstr "ساعت کاری"
msgid "Write"
msgstr "نوشتن"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21464,6 +21788,14 @@ msgstr "همه"
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21533,6 +21865,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21686,6 +22030,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21786,6 +22146,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21797,6 +22161,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21805,6 +22173,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22232,6 +22608,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22617,6 +22997,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22706,6 +23094,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22781,6 +23173,11 @@ msgstr ""
msgid "on"
msgstr "در"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23094,6 +23491,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23338,6 +23747,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/fi/LC_MESSAGES/frontend.po b/ui/locale/fi/LC_MESSAGES/frontend.po
index 62489928fd3..cd4187b83eb 100644
--- a/ui/locale/fi/LC_MESSAGES/frontend.po
+++ b/ui/locale/fi/LC_MESSAGES/frontend.po
@@ -270,6 +270,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -898,6 +903,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1226,6 +1235,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2126,10 +2165,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2201,6 +2254,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2807,6 +2870,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2924,6 +2997,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3060,6 +3312,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3146,6 +3402,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9110,6 +9406,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14313,6 +14628,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21059,6 +21378,11 @@ msgstr ""
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21600,6 +21924,14 @@ msgstr ""
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21669,6 +22001,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21822,6 +22166,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21922,6 +22282,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21933,6 +22297,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21941,6 +22309,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22368,6 +22744,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22753,6 +23133,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22842,6 +23230,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22917,6 +23309,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23230,6 +23627,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23474,6 +23883,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/fr/LC_MESSAGES/frontend.po b/ui/locale/fr/LC_MESSAGES/frontend.po
index c119e37ca36..3f18d832c8b 100644
--- a/ui/locale/fr/LC_MESSAGES/frontend.po
+++ b/ui/locale/fr/LC_MESSAGES/frontend.po
@@ -272,6 +272,11 @@ msgstr "%1$s, sélectionné"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr "%1$s. %2$s : %3$s. %4$s."
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -898,6 +903,10 @@ msgstr "Ajouter un nouveau widget"
msgid "Add child element"
msgstr "Ajouter un élément enfant"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Ajouter un service enfant"
@@ -1225,6 +1234,36 @@ msgstr "Quantité de mémoire physique invitée qui est échangée vers l'espace
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Quantité de mémoire physique de l'hôte consommée pour la sauvegarde des pages de mémoire physique invitée, <url> - URL du service VMware, <uuid> - Nom d'hôte de la machine virtuelle VMware"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "Analogique"
@@ -2127,10 +2166,24 @@ msgstr "Impossible d'ajouter un groupe d'utilisateurs"
msgid "Cannot add web scenario"
msgstr "Impossible d'ajouter le scénario web"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "Impossible d'ajouter un widget : pas assez d'espace libre sur le tableau de bord."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2202,6 +2255,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "Impossible de copier l'élément"
msgstr[1] "Impossible de copier les éléments"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2808,6 +2871,16 @@ msgstr "Impossible de trouver le groupe d'hôtes \"%1$s\" pour le prototype d'hÃ
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Impossible de trouver l'interface de l'hôte sur \"%1$s\" pour la clé d'élément \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2925,6 +2998,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Impossible d'importer le modèle \"%1$s\", le modèle lié \"%2$s\" n'existe pas."
msgstr[1] "Impossible d'importer le modèle \"%1$s\", les modèles liés \"%2$s\" n'existent pas."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Impossible d'insérer l'expression de déclencheur"
@@ -3061,6 +3313,10 @@ msgstr "Impossible de réaliser une mise à jour collective du nom d'hôte visib
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "Impossible de transmettre les ID de modèle en double pour la liaison : %1$s."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3147,6 +3403,46 @@ msgstr "Impossible de configurer \"%1$s\" pour le prototype de graphique \"%2$s\
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Impossible de configurer \"%1$s\" pour l'élément \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9133,6 +9429,25 @@ msgstr "Utilisateur inaccessible"
msgid "Inaccessible user group"
msgstr "Groupe d'utilisateurs inaccessible"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14336,6 +14651,10 @@ msgstr "Page %1$d"
msgid "Page display period"
msgstr "Période d'affichage de la page"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21082,6 +21401,11 @@ msgstr "Heures ouvrées"
msgid "Write"
msgstr "Écriture"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21629,6 +21953,14 @@ msgstr "tous"
msgid "all media"
msgstr "tous les médias"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "une adresse IP est attendue"
@@ -21698,6 +22030,18 @@ msgstr "aucun identifiant n'est pas défini dans la formule"
msgid "an integer is expected"
msgstr "un entier est attendu"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21851,6 +22195,22 @@ msgstr "calculé"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "peut être utilisé pour ajouter \"@2x\" à l'URL pour charger les tuiles."
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "ne peut pas être changé"
@@ -21951,6 +22311,10 @@ msgstr "ne peut pas être changé"
msgid "cannot be empty"
msgstr "ne peut pas être vide"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21962,6 +22326,10 @@ msgstr "ne peut pas être inférieur ou égal à la valeur du paramètre \"%1$s\
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "impossible de définir la valeur du paramètre \"%1$s\""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "ne peut pas être dissocié"
@@ -21970,6 +22338,14 @@ msgstr "ne peut pas être dissocié"
msgid "cannot convert to JSON, result value too long"
msgstr "impossible de convertir en JSON, la valeur du résultat est trop longue"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr "impossible de supprimer un prototype d'hôte provenant d'un modèle"
@@ -22397,6 +22773,10 @@ msgctxt "event source"
msgid "internal"
msgstr "interne"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22782,6 +23162,14 @@ msgstr "doit contenir au moins une lettre Latine minuscule et une majuscule"
msgid "must contain at least one special character"
msgstr "doit contenir au moins un caractère spécial"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22871,6 +23259,10 @@ msgstr "aucune autorisation pour annuler la suppression des problèmes"
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr "nodata() - Aucune donnée reçue pendant la période de temps T (1 - vrai, 0 - faux), Mode (strict - ignorer le délai d'envoi des données du proxy)"
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22946,6 +23338,11 @@ msgstr "inatif"
msgid "on"
msgstr "sur"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "une seule unité de temps est autorisée"
@@ -23259,6 +23656,18 @@ msgstr "tan() - La tangente d'une valeur"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "ID du modèle \"%1$s\" passé %2$s fois"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "le dernier saut de ligne est manquant"
@@ -23503,6 +23912,11 @@ msgstr "suffixe de temps non supporté"
msgid "unsupported version number"
msgstr "numéro de version non supporté"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "identifiant en majuscule attendu"
diff --git a/ui/locale/he/LC_MESSAGES/frontend.po b/ui/locale/he/LC_MESSAGES/frontend.po
index 8feadc36e73..89b3cc8a9cf 100644
--- a/ui/locale/he/LC_MESSAGES/frontend.po
+++ b/ui/locale/he/LC_MESSAGES/frontend.po
@@ -271,6 +271,11 @@ msgstr "%1$s, בבחירה"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr "%1$s. %2$s: %3$s. %4$s."
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -897,6 +902,10 @@ msgstr "הוספת וידג׳ט חדש"
msgid "Add child element"
msgstr "הוספת פריט צ×צ×"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "הוספת שירות צ×צ×"
@@ -1224,6 +1233,36 @@ msgstr "כמות הזיכרון הפיזי של ×”×ורח שהוחלף בשטח
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "כמות הזיכרון הפיזי שנצרך לטובת גיבוי עמודי הזיכרון הפיזי של המערכת ×”×ורחת, <url> - כתובת שירות ×”Ö¾VMware,†<uuid> - ×©× ×ž×רח של המכונה הווירטו×לית ב־VMware"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "×נלוגי"
@@ -2126,10 +2165,24 @@ msgstr "×œ× × ×™×ª×Ÿ להוסיף משתמש לקבוצה"
msgid "Cannot add web scenario"
msgstr "×œ× × ×™×ª×Ÿ להוסיף תרחיש רשת"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "×œ× × ×™×ª×Ÿ להוסיף וידג׳ט: ×ין מספיק ×ž×§×•× ×¤× ×•×™ בלוח המחווני×."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2201,6 +2254,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "×œ× × ×™×ª×Ÿ להעתיק פריט"
msgstr[1] "×œ× × ×™×ª×Ÿ להעתיק פריטי×"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2807,6 +2870,16 @@ msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת קבוצת המ××¨×—×™× â€ž%1$s†עב×
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת מנשק המ×רח על גבי „%1$s†עבור מפתח הפריט „%2$sâ€."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2924,6 +2997,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "×œ× × ×™×ª×Ÿ ×œ×™×™×‘× ×ת התבנית „%1$sâ€, התבנית המקושרת „%2$s†××™× ×” קיימת."
msgstr[1] "×œ× × ×™×ª×Ÿ ×œ×™×™×‘× ×ת התבנית „%1$sâ€, התבניות המקושרות „%2$s†×ינן קיימות."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "×œ× × ×™×ª×Ÿ להוסיף ביטוי הקפצה"
@@ -3060,6 +3312,10 @@ msgstr "×œ× × ×™×ª×Ÿ לעדכן כמותית ×ת שמות התצוגה למ××
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "×œ× × ×™×ª×Ÿ להעביר מזהי תבניות ×›×¤×•×œ×™× ×œ×§×™×©×•×¨×™×•×ª: %1$s."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3146,6 +3402,46 @@ msgstr "×œ× × ×™×ª×Ÿ להגדיר ×ת „%1$s“ עבור ×בטיפוס הת×
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "×œ× × ×™×ª×Ÿ להגדיר ×ת „%1$s“ עבור הפריט „%2$s“."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9132,6 +9428,25 @@ msgstr "משתמש בלתי נגיש"
msgid "Inaccessible user group"
msgstr "קבוצת ×ž×©×ª×ž×©×™× ×‘×œ×ª×™ נגישה"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14335,6 +14650,10 @@ msgstr "עמוד %1$d"
msgid "Page display period"
msgstr "משך הצגת עמוד"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21081,6 +21400,11 @@ msgstr "זמן עבודה"
msgid "Write"
msgstr "כתיבה"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21628,6 +21952,14 @@ msgstr "הכול"
msgid "all media"
msgstr "כל סוגי המדיה"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "×מורה להיות כתובת IP"
@@ -21697,6 +22029,18 @@ msgstr "×œ× ×”×•×’×“×¨ מזהה בנוסחה"
msgid "an integer is expected"
msgstr "×מור להיות ערך של×"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21850,6 +22194,22 @@ msgstr "מחושב"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "×פשר להשתמש כדי להוסיף „‎@2x†לכתובת כדי לטעון ×ריחי רשתית."
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "×œ× × ×™×ª×Ÿ לשנות"
@@ -21950,6 +22310,10 @@ msgstr "×œ× × ×™×ª×Ÿ לשנות"
msgid "cannot be empty"
msgstr "×œ× ×™×›×•×œ להיש×ר ריק"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21961,6 +22325,10 @@ msgstr "×œ× ×™×›×•×œ להיות קטן ×ו שווה לערך המשתנה „%
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "××™ ×פשר לציין ×ת ערך המשתנה „%1$sâ€"
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "×œ× × ×™×ª×Ÿ לנתק"
@@ -21969,6 +22337,14 @@ msgstr "×œ× × ×™×ª×Ÿ לנתק"
msgid "cannot convert to JSON, result value too long"
msgstr "×œ× × ×™×ª×Ÿ להמיר ל־JSON, ערך התוצ××” ×רוך מדי"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr "×œ× × ×™×ª×Ÿ למחוק ×בטיפוס מ×רח מתבנית"
@@ -22396,6 +22772,10 @@ msgctxt "event source"
msgid "internal"
msgstr "פנימי"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22781,6 +23161,14 @@ msgstr "חייב להכיל לפחות ×ות לטינית ×חת קטנה ו××
msgid "must contain at least one special character"
msgstr "חייב להכיל לפחות תו מיוחד ×חד"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22870,6 +23258,10 @@ msgstr "×ין הרש××” לבטל הדחקת בעיות"
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr "nodata()‎ - ×œ× ×”×ª×§×‘×œ×• × ×ª×•× ×™× ×‘×¤×¨×§ זמן T (1 - ×מת, 0 - שקר), מצב (קפדני - התעלמות מעיכוב בזמן מהמתווך בשליחת נתוני×)"
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22945,6 +23337,11 @@ msgstr "כבוי"
msgid "on"
msgstr "פעיל"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "מותר יחידה חד־פעמית בלבד"
@@ -23258,6 +23655,18 @@ msgstr "tan()‎ - הטנגנס (משיק) של הערך"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "מזהה התבנית %1$s מועבר %2$s פעמי×"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "הזנת השורה החדשה ×”×חרונה חסרה"
@@ -23502,6 +23911,11 @@ msgstr "סיומת הזמן ××™× ×” נתמכת"
msgid "unsupported version number"
msgstr "מספר הגרסה ×ינו נתמך"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "×מור להיות מזהה ב×ותיות גדולות"
diff --git a/ui/locale/hu/LC_MESSAGES/frontend.po b/ui/locale/hu/LC_MESSAGES/frontend.po
index d0ecf04b2dc..9d687725f8b 100644
--- a/ui/locale/hu/LC_MESSAGES/frontend.po
+++ b/ui/locale/hu/LC_MESSAGES/frontend.po
@@ -1,19 +1,20 @@
+#
msgid ""
msgstr ""
"Project-Id-Version: Zabbix 6.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-17 15:53+0200\n"
-"PO-Revision-Date: 2013-01-09 22:10+0300\n"
-"Last-Translator: Robert <szenasy.robert@gmail.com>\n"
+"PO-Revision-Date: 2022-11-08 08:04+0000\n"
+"Last-Translator: Sergejs <sergejs.maklakovs@zabbix.com>\n"
"Language-Team: Zabbix <info@zabbix.com>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.5.1.3\n"
-"X-Poedit-Basepath: ../../\n"
+"X-Generator: Pontoon\n"
"X-POOTLE-MTIME: 1357762227.000000\n"
+"X-Poedit-Basepath: ../../\n"
#: app/controllers/CControllerSlaReportList.php:181
#: include/classes/widgets/forms/CWidgetFormSlaReport.php:104
@@ -87,8 +88,8 @@ msgstr ""
#, c-format
msgid "%1$d day"
msgid_plural "%1$d days"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$d nap"
+msgstr[1] "%1$d nap"
#: jsLoader.php:347
#, c-format
@@ -106,7 +107,7 @@ msgstr[1] ""
#: app/controllers/CControllerPopupAcknowledgeEdit.php:117
#, c-format
msgid "%1$d problems selected."
-msgstr ""
+msgstr "%1$d probléma kijelölve."
#: chart4.php:94
#, c-format
@@ -161,8 +162,8 @@ msgstr[1] ""
#, c-format
msgid "%1$s hour"
msgid_plural "%1$s hours"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s óra"
+msgstr[1] "%1$s óra"
#: app/controllers/CControllerWidgetPlainTextView.php:126
#: app/controllers/CControllerWidgetPlainTextView.php:127
@@ -178,8 +179,8 @@ msgstr[1] ""
msgctxt "screen reader"
msgid "%1$s message"
msgid_plural "%1$s messages"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s üzenet"
+msgstr[1] "%1$s üzenet"
#: include/classes/widgets/CWidgetConfig.php:308
#: include/classes/widgets/CWidgetConfig.php:309
@@ -189,8 +190,8 @@ msgstr[1] ""
#, c-format
msgid "%1$s minute"
msgid_plural "%1$s minutes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s perc"
+msgstr[1] "%1$s perc"
#: include/classes/helpers/CMapHelper.php:316
#, c-format
@@ -210,15 +211,15 @@ msgstr ""
#, c-format
msgid "%1$s problem"
msgid_plural "%1$s problems"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s probléma"
+msgstr[1] "%1$s probléma"
#: include/classes/helpers/CMapHelper.php:319
#, c-format
msgid "%1$s problem in total"
msgid_plural "%1$s problems in total"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s probléma összesen"
+msgstr[1] "%1$s probléma összesen"
#: app/views/monitoring.widget.actionlog.view.php:45
#: include/actions.inc.php:2172
@@ -226,8 +227,8 @@ msgstr[1] ""
#, c-format
msgid "%1$s retry left"
msgid_plural "%1$s retries left"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s próbálkozás maradt"
+msgstr[1] "%1$s próbálkozás maradt"
#: app/views/administration.user.edit.php:671
#: include/classes/widgets/CWidgetConfig.php:306
@@ -236,16 +237,16 @@ msgstr[1] ""
#, c-format
msgid "%1$s second"
msgid_plural "%1$s seconds"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s másodperc"
+msgstr[1] "%1$s másodperc"
#: include/maps.inc.php:368 include/maps.inc.php:371 include/maps.inc.php:378
#: include/maps.inc.php:383
#, c-format
msgid "%1$s unacknowledged problem"
msgid_plural "%1$s unacknowledged problems"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%1$s nem nyugtázott probléma"
+msgstr[1] "%1$s nem nyugtázott probléma"
#: app/views/monitoring.widget.problemhosts.view.php:108
#: app/views/monitoring.widget.problems.view.php:207
@@ -258,23 +259,28 @@ msgstr ""
#, c-format
msgctxt "screen reader"
msgid "%1$s, read only"
-msgstr ""
+msgstr "%1$s, csak olvasható"
#: jsLoader.php:388
#, c-format
msgctxt "screen reader"
msgid "%1$s, selected"
-msgstr ""
+msgstr "%1$s, kiválasztva"
#: app/controllers/CControllerMediatypeEnable.php:93
#, c-format
msgid "%1$s. %2$s: %3$s. %4$s."
+msgstr "%1$s. %2$s: %3$s. %4$s."
+
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
msgstr ""
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
-msgstr ""
+msgstr "%1$s: %2$s"
#: include/classes/graph/CSvgGraph.php:1262
#, c-format
@@ -285,8 +291,8 @@ msgstr ""
#, c-format
msgid "%4$s failed login attempt logged. Last failed attempt was from %1$s on %2$s at %3$s."
msgid_plural "%4$s failed login attempts logged. Last failed attempt was from %1$s on %2$s at %3$s."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%4$s sikertelen belépési kísérlet naplózva. Utolsó sikertelen próbálkozás a(z) %1$s IP címről %2$s napon %3$s időpontban történt."
+msgstr[1] "%4$s sikertelen belépési kísérlet naplózva. Utolsó sikertelen próbálkozás a(z) %1$s IP címről %2$s napon %3$s időpontban történt."
#: include/classes/screens/CScreenDiscovery.php:213
#, c-format
@@ -299,11 +305,11 @@ msgstr[1] "%d eszköz"
#, c-format
msgctxt "user fullname"
msgid "(%1$s %2$s)"
-msgstr ""
+msgstr "(%1$s %2$s)"
#: app/partials/popup.operations.php:56
msgid "(0 - infinitely)"
-msgstr ""
+msgstr "(0 -végtelen)"
#: app/partials/popup.operations.php:67
msgid "(0 - use action default)"
@@ -311,7 +317,7 @@ msgstr ""
#: include/views/configuration.hostgroups.list.php:37
msgid "(Only super admins can create groups)"
-msgstr ""
+msgstr "(Csak szuper adminok tudnak csoportot létrehozni)"
#: app/partials/configuration.tags.tab.php:84
#: app/partials/hostmacros.inherited.list.html.php:190
@@ -897,6 +903,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1224,6 +1234,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -1385,12 +1425,14 @@ msgstr ""
msgid "At %1$s:%2$s %3$s of every week"
msgid_plural "At %1$s:%2$s %3$s of every %4$s weeks"
msgstr[0] ""
+msgstr[1] ""
#: include/maintenances.inc.php:50
#, c-format
msgid "At %1$s:%2$s every day"
msgid_plural "At %1$s:%2$s every %3$s days"
msgstr[0] ""
+msgstr[1] ""
#: include/maintenances.inc.php:112
#, c-format
@@ -2124,10 +2166,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2199,6 +2255,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2328,11 +2394,10 @@ msgid "Cannot delete dependency"
msgstr "Függőség nem törölhető"
#: app/controllers/CControllerDiscoveryDelete.php:69 host_discovery.php:416
-#, fuzzy
msgid "Cannot delete discovery rule"
msgid_plural "Cannot delete discovery rules"
msgstr[0] "Nem lehet törölni a felderítési szabályt"
-msgstr[1] "Nem lehet törölni a felderítési szabályt"
+msgstr[1] "Nem lehet törölni a felderítési szabályokat"
#: host_discovery.php:780
msgid "Cannot delete discovery rules"
@@ -2355,7 +2420,6 @@ msgid "Cannot delete graphs"
msgstr "A grafikonok törlése nem sikerült"
#: hostgroups.php:134 hostgroups.php:156
-#, fuzzy
msgid "Cannot delete group"
msgid_plural "Cannot delete groups"
msgstr[0] "Csoport törlése sikertelen"
@@ -2464,7 +2528,6 @@ msgid "Cannot delete readonly user role \"%1$s\"."
msgstr ""
#: app/controllers/CControllerRegExDelete.php:55
-#, fuzzy
msgid "Cannot delete regular expression"
msgid_plural "Cannot delete regular expressions"
msgstr[0] "Reguláris kifejezés törlése nem sikerült"
@@ -2492,7 +2555,6 @@ msgid "Cannot delete selected actions"
msgstr ""
#: app/controllers/CControllerServiceDelete.php:78
-#, fuzzy
msgid "Cannot delete service"
msgid_plural "Cannot delete services"
msgstr[0] "Szolgáltatás törlése sikertelen"
@@ -2809,6 +2871,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2926,6 +2998,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3062,6 +3313,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3148,6 +3403,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -6132,11 +6427,10 @@ msgid "Discovery rule created"
msgstr ""
#: app/controllers/CControllerDiscoveryDelete.php:66 host_discovery.php:416
-#, fuzzy
msgid "Discovery rule deleted"
msgid_plural "Discovery rules deleted"
msgstr[0] "Felderítési szabály törölve"
-msgstr[1] "Felderítési szabály törölve"
+msgstr[1] "Felderítési szabályok törölve"
#: app/controllers/CControllerDiscoveryDisable.php:71 host_discovery.php:767
msgid "Discovery rule disabled"
@@ -6886,9 +7180,8 @@ msgid "Event ID"
msgstr "Esemény azonosító"
#: include/actions.inc.php:61
-#, fuzzy
msgid "Event acknowledged"
-msgstr "Esemény visszaigazolva"
+msgstr "Esemény nyugtázva"
#: app/controllers/CControllerAuditLogList.php:213
#: app/views/configuration.correlation.list.php:31
@@ -7930,7 +8223,6 @@ msgid "Group added"
msgstr "Csoport létrehozva"
#: hostgroups.php:134 hostgroups.php:155
-#, fuzzy
msgid "Group deleted"
msgid_plural "Groups deleted"
msgstr[0] "Csoport törölve"
@@ -9115,6 +9407,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -13804,11 +14115,11 @@ msgstr ""
#: include/classes/api/services/CDashboard.php:414
msgid "Only super admins can set dashboard owner."
-msgstr ""
+msgstr "Csak a szuper adminok tudják beállítani a dashboard tulajdonosát"
#: include/classes/api/services/CReport.php:334
msgid "Only super admins can set report owner."
-msgstr ""
+msgstr "Csak a szuper adminok tudják beállítani a jelentés tulajdonosát."
#: app/partials/administration.system.info.php:68
msgid "Only triggers assigned to enabled hosts and depending on enabled items are counted"
@@ -14318,6 +14629,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -15376,7 +15691,6 @@ msgid "Regular expression added"
msgstr "Reguláris kifejezés hozzáadva"
#: app/controllers/CControllerRegExDelete.php:50
-#, fuzzy
msgid "Regular expression deleted"
msgid_plural "Regular expressions deleted"
msgstr[0] "Reguláris kifejezés törölve"
@@ -16802,7 +17116,6 @@ msgid "Service data storage period"
msgstr ""
#: app/controllers/CControllerServiceDelete.php:63
-#, fuzzy
msgid "Service deleted"
msgid_plural "Services deleted"
msgstr[0] "Szolgáltatás törölve"
@@ -17738,7 +18051,7 @@ msgstr "Vasárnap"
#: include/users.inc.php:54
msgid "Super admin"
-msgstr ""
+msgstr "Szuper admin"
#: include/classes/helpers/CMenuHelper.php:353
#: include/views/general.login.php:94
@@ -21066,6 +21379,11 @@ msgstr "Munkaidő"
msgid "Write"
msgstr "Ãrás"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21607,6 +21925,14 @@ msgstr "mind"
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21676,6 +22002,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21829,6 +22167,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21929,6 +22283,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21940,6 +22298,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21948,6 +22310,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22375,6 +22745,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22760,6 +23134,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22849,6 +23231,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22924,6 +23310,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23237,6 +23628,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23481,6 +23884,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/id/LC_MESSAGES/frontend.po b/ui/locale/id/LC_MESSAGES/frontend.po
index dacbbf6c599..2fea5902438 100644
--- a/ui/locale/id/LC_MESSAGES/frontend.po
+++ b/ui/locale/id/LC_MESSAGES/frontend.po
@@ -255,6 +255,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -874,6 +879,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1201,6 +1210,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2100,10 +2139,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2173,6 +2226,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2739,6 +2802,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Tidak dapat menemukan host interface pada \"%1$s\" untuk kunci item \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2855,6 +2928,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -2990,6 +3242,10 @@ msgstr "Tidak dapat perbarui nama host yang tampil secara masal."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3076,6 +3332,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9020,6 +9316,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14205,6 +14520,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20927,6 +21246,11 @@ msgstr "Waktu kerja"
msgid "Write"
msgstr "Tulis"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21468,6 +21792,14 @@ msgstr "semua"
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21537,6 +21869,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21690,6 +22034,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21790,6 +22150,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21801,6 +22165,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21809,6 +22177,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22236,6 +22612,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22621,6 +23001,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22710,6 +23098,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22785,6 +23177,11 @@ msgstr ""
msgid "on"
msgstr "pada"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23098,6 +23495,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "template ID \"%1$s\" dilewatkan %2$s kali"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23342,6 +23751,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/it/LC_MESSAGES/frontend.po b/ui/locale/it/LC_MESSAGES/frontend.po
index 6cba7ddf2ba..f461614fb23 100644
--- a/ui/locale/it/LC_MESSAGES/frontend.po
+++ b/ui/locale/it/LC_MESSAGES/frontend.po
@@ -271,6 +271,11 @@ msgstr "%1$s, selezionato"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -897,6 +902,10 @@ msgstr "Aggiungi un nuovo widget"
msgid "Add child element"
msgstr "Aggiungi elemento child"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1224,6 +1233,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2124,10 +2163,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Impossibile aggiungere scenario web"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2199,6 +2252,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "Non è possibile copiare l'item"
msgstr[1] "Non è possibile copiare gli item"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2808,6 +2871,16 @@ msgstr "Impossibile trovare gruppo host \"%1$s\" per il prototipo host \"%2$s\"
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Impossibile trovare interfaccia host su \"%1$s\" per la chiave item \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2925,6 +2998,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Non e' possibile importare il template \"%1$s\", template collegato \"%2$s\" inesistente."
msgstr[1] "Non e' possibile importare il template \"%1$s\", template collegati \"%2$s\" inesistenti."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Impossibile inserire espressione trigger"
@@ -3061,6 +3313,10 @@ msgstr "Impossibile aggiornare massivamente nome visibile host."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3147,6 +3403,46 @@ msgstr "Impossibile definire %1$s\" per il grafico prototipo \"%2$s\"."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Impossibile impostare \"%1$s\" per l'item \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9114,6 +9410,25 @@ msgstr "Utente inaccessibile"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14318,6 +14633,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21065,6 +21384,11 @@ msgstr "Orario di lavoro"
msgid "Write"
msgstr "Scrivi"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21606,6 +21930,14 @@ msgstr "tutti"
msgid "all media"
msgstr "tutti i supporti"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21675,6 +22007,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21828,6 +22172,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21928,6 +22288,10 @@ msgstr ""
msgid "cannot be empty"
msgstr "non può essere vuoto"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21939,6 +22303,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21947,6 +22315,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22374,6 +22750,10 @@ msgctxt "event source"
msgid "internal"
msgstr "interno"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22759,6 +23139,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22848,6 +23236,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22923,6 +23315,11 @@ msgstr "off"
msgid "on"
msgstr "il"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23236,6 +23633,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "L'ID template \"%1$s\" è passato %2$s volte"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23480,6 +23889,11 @@ msgstr ""
msgid "unsupported version number"
msgstr "numero versione non supportata"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/ja/LC_MESSAGES/frontend.po b/ui/locale/ja/LC_MESSAGES/frontend.po
index d1dc6a46dd6..42bebd0074c 100644
--- a/ui/locale/ja/LC_MESSAGES/frontend.po
+++ b/ui/locale/ja/LC_MESSAGES/frontend.po
@@ -257,6 +257,11 @@ msgstr "%1$s件é¸æŠžæ¸ˆ"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -876,6 +881,10 @@ msgstr "æ–°ã—ã„ウィジェットを追加"
msgid "Add child element"
msgstr "å­ã®è¦ç´ ã‚’追加"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "å­ã‚µãƒ¼ãƒ“スã®è¿½åŠ "
@@ -1203,6 +1212,36 @@ msgstr "スワップ領域ã«ã‚¹ãƒ¯ãƒƒãƒ—アウトã•ã‚Œã‚‹ã‚²ã‚¹ãƒˆã®ç‰©ç†ãƒ¡
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "ゲストã®ç‰©ç†ãƒ¡ãƒ¢ãƒªãƒšãƒ¼ã‚¸ã‚’ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã™ã‚‹ãŸã‚ã«æ¶ˆè²»ã•ã‚ŒãŸãƒ›ã‚¹ãƒˆã®ç‰©ç†ãƒ¡ãƒ¢ãƒªé‡ã€<url> - VMwareサービスURLã€<uuid> - VMware仮想マシンã®ãƒ›ã‚¹ãƒˆå"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "アナログ"
@@ -2102,10 +2141,24 @@ msgstr "ユーザーグループを追加ã§ãã¾ã›ã‚“"
msgid "Cannot add web scenario"
msgstr "Webシナリオを追加ã§ãã¾ã›ã‚“"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "ウィジェットãŒè¿½åŠ ã§ãã¾ã›ã‚“: ダッシュボードã®ç©ºã領域ãŒè¶³ã‚Šã¾ã›ã‚“。"
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2175,6 +2228,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] "アイテムをコピーã§ãã¾ã›ã‚“"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2736,6 +2799,16 @@ msgstr "\"%4$s\"上ã®ãƒ‡ã‚£ã‚¹ã‚«ãƒãƒªãƒ«ãƒ¼ãƒ«\"%3$s\"ã®ãƒ›ã‚¹ãƒˆã®ãƒ—ロãƒ
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "アイテムã®ã‚­ãƒ¼\"%2$s\"ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã¯\"%1$s\"ã«å­˜åœ¨ã—ã¾ã›ã‚“。"
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2852,6 +2925,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] "テンプレート\"%1$s\"をインãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“。リンクã•ã‚Œã¦ã„るテンプレート\"%2$s\"ãŒå­˜åœ¨ã—ã¾ã›ã‚“。"
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "トリガーæ¡ä»¶å¼ã‚’追加ã§ãã¾ã›ã‚“"
@@ -2987,6 +3239,10 @@ msgstr "ホストã®è¡¨ç¤ºåを一括更新ã§ãã¾ã›ã‚“。"
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "テンプレートIDã®é‡è¤‡ã®ãŸã‚リンク%1$sを作æˆã§ãã¾ã›ã‚“。"
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3073,6 +3329,46 @@ msgstr "グラフã®ãƒ—ロトタイプ\"%2$s\"ã«\"%1$s\"を設定ã§ãã¾ã›ã‚
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "アイテム\"%2$s\"ã«\"%1$s\"を設定ã§ãã¾ã›ã‚“。"
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9025,6 +9321,25 @@ msgstr "アクセスã§ããªã„ユーザー"
msgid "Inaccessible user group"
msgstr "アクセスã§ããªã„ユーザーグループ"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14208,6 +14523,10 @@ msgstr "ページ %1$d"
msgid "Page display period"
msgstr "ページ表示間隔"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20929,6 +21248,11 @@ msgstr "ワーキングタイム"
msgid "Write"
msgstr "表示/設定"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21473,6 +21797,14 @@ msgstr "ã™ã¹ã¦"
msgid "all media"
msgstr "ã™ã¹ã¦ã®ãƒ¡ãƒ‡ã‚£ã‚¢"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "IPアドレスを指定ã—ã¦ãã ã•ã„"
@@ -21542,6 +21874,18 @@ msgstr "識別å­ã¯å¼ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
msgid "an integer is expected"
msgstr "æ•´æ•°ã§æŒ‡å®šã—ã¦ãã ã•ã„"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21695,6 +22039,22 @@ msgstr "計算"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "高精細タイルを読ã¿è¾¼ã‚€ãŸã‚ã«URLã«\"@2x\"を追加ã§ãる。"
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "変更ã§ãã¾ã›ã‚“"
@@ -21795,6 +22155,10 @@ msgstr "変更ã§ãã¾ã›ã‚“"
msgid "cannot be empty"
msgstr "空白ã¯æŒ‡å®šã§ãã¾ã›ã‚“"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21806,6 +22170,10 @@ msgstr "パラメーター\"%1$s\"ã®å€¤ä»¥ä¸‹ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "パラメーター\"%1$s\"ã®å€¤ã‚’指定ã§ãã¾ã›ã‚“"
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "リンクを削除ã§ãã¾ã›ã‚“"
@@ -21814,6 +22182,14 @@ msgstr "リンクを削除ã§ãã¾ã›ã‚“"
msgid "cannot convert to JSON, result value too long"
msgstr "JSONã«å¤‰æ›ã§ãã¾ã›ã‚“ã€çµæžœã®å€¤ãŒé•·ã™ãŽã¾ã™"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr "テンプレート化ã•ã‚ŒãŸãƒ›ã‚¹ãƒˆãƒ—ロトタイプを削除ã§ãã¾ã›ã‚“"
@@ -22241,6 +22617,10 @@ msgctxt "event source"
msgid "internal"
msgstr "内部イベント"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22626,6 +23006,14 @@ msgstr "å°‘ãªãã¨ã‚‚英字ã®å°æ–‡å­—1文字ã¨å¤§æ–‡å­—1文字をå«ã‚ã‚‹ã
msgid "must contain at least one special character"
msgstr "å°‘ãªãã¨ã‚‚特殊記å·ã‚’1文字å«ã‚るよã†ã«ã—ã¦ãã ã•ã„"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22715,6 +23103,10 @@ msgstr "障害抑制解除ã®æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“"
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr "nodata() - 期間Tã®é–“å–得データãªã— (1 - å–得データãªã—ã€0 - ãれ以外)ã€Mode (strict - é€ã‚‰ã‚Œã¦ããŸãƒ‡ãƒ¼ã‚¿å†…ã®ãƒ—ロキシã§ã®é…延を無視)"
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22790,6 +23182,11 @@ msgstr "off"
msgid "on"
msgstr "on"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "時間ã®å˜ä½ã¯1ã¤ã ã‘ã«ã—ã¦ãã ã•ã„"
@@ -23103,6 +23500,18 @@ msgstr "tan() - 値ã®ã‚¿ãƒ³ã‚¸ã‚§ãƒ³ãƒˆ"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "テンプレートID\"%1$s\"ãŒ%2$s回使用ã•ã‚Œã¦ã„ã¾ã™"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "最後ã®æ”¹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“"
@@ -23347,6 +23756,11 @@ msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„時間ã®å˜ä½ã§ã™"
msgid "unsupported version number"
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã§ã™"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "大文字ã®è­˜åˆ¥å­ãŒå¿…è¦ã§ã™"
diff --git a/ui/locale/ka/LC_MESSAGES/frontend.po b/ui/locale/ka/LC_MESSAGES/frontend.po
index 262d3370765..f7fd2e7e494 100644
--- a/ui/locale/ka/LC_MESSAGES/frontend.po
+++ b/ui/locale/ka/LC_MESSAGES/frontend.po
@@ -255,6 +255,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -876,6 +881,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1203,6 +1212,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2106,10 +2145,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "ვებ სცენáƒáƒ áƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2179,6 +2232,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2741,6 +2804,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2857,6 +2930,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -2992,6 +3244,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3078,6 +3334,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9019,6 +9315,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14202,6 +14517,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20923,6 +21242,11 @@ msgstr ""
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21464,6 +21788,14 @@ msgstr ""
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21533,6 +21865,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21686,6 +22030,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21786,6 +22146,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21797,6 +22161,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21805,6 +22173,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22232,6 +22608,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22617,6 +22997,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22706,6 +23094,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22781,6 +23173,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23094,6 +23491,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23338,6 +23747,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/ko/LC_MESSAGES/frontend.po b/ui/locale/ko/LC_MESSAGES/frontend.po
index 6e144dae5ac..00d363a9008 100644
--- a/ui/locale/ko/LC_MESSAGES/frontend.po
+++ b/ui/locale/ko/LC_MESSAGES/frontend.po
@@ -256,6 +256,11 @@ msgstr "%1$sê±´ ì„ íƒ"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -875,6 +880,10 @@ msgstr "새로운 ìœ„ì ¯ì„ ì¶”ê°€"
msgid "Add child element"
msgstr "하위 요소 추가"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1202,6 +1211,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2101,10 +2140,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Web시나리오를 추가할 수 없습니다"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2174,6 +2227,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] "ì•„ì´í…œì„ 복사할 수 없습니다"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2738,6 +2801,16 @@ msgstr "\"%4$s\"ìƒì˜ 디스커버리 규칙 \"%3$s\"ì˜ í˜¸ìŠ¤íŠ¸ 프로토타
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "ì•„ì´í…œ 키 \"%2$s\"ì˜ ì¸í„°íŽ˜ì´ìŠ¤ëŠ” \"%1$s\"ì— ì¡´ìž¬í•˜ì§€ 않습니다."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2854,6 +2927,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] "템플릿 \"%1$s\"를 가져올 수 없습니다. ë§í¬ë˜ì–´ 있는 템플릿 \"%2$s\"ê°€ 존재하지 않습니다."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "트리거 ì¡°ê±´ì‹ì„ 추가할 수 없습니다"
@@ -2989,6 +3241,10 @@ msgstr "í˜¸ìŠ¤íŠ¸ì˜ í‘œì‹œëª…ì€ ì¼ê´„갱신할 수 없습니다."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3075,6 +3331,46 @@ msgstr "ê·¸ëž˜í”„ì˜ í”„ë¡œí† íƒ€ìž… \"%2$s\"ì— \"%1$s\"를 설정할 수 ì—†ìŠ
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "ì•„ì´í…œ\"%2$s\"ì— \"%1$s\"를 설정할 수 없습니다."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9019,6 +9315,25 @@ msgstr "ì ‘ì†í•  수 없는 유저"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14202,6 +14517,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20924,6 +21243,11 @@ msgstr "워킹 타임"
msgid "Write"
msgstr "쓰기"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21465,6 +21789,14 @@ msgstr "ì „ì²´"
msgid "all media"
msgstr "모든 미디어"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21534,6 +21866,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21687,6 +22031,22 @@ msgstr "계산"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "변경할 수 없습니다"
@@ -21787,6 +22147,10 @@ msgstr "변경할 수 없습니다"
msgid "cannot be empty"
msgstr "공백으로 지정할 수 없습니다"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21798,6 +22162,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21806,6 +22174,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr "JSON으로 변환할 수 없습니다. 결과가 너무 ê¹ë‹ˆë‹¤"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22234,6 +22610,10 @@ msgctxt "event source"
msgid "internal"
msgstr "내부 ì´ë²¤íŠ¸"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22619,6 +22999,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22708,6 +23096,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22783,6 +23175,11 @@ msgstr "off"
msgid "on"
msgstr "on"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23096,6 +23493,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "템플릿ID \"%1$s\"ê°€ %2$s번 사용ë˜ê³  있습니다"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23340,6 +23749,11 @@ msgstr ""
msgid "unsupported version number"
msgstr "지ì›ë˜ì§€ 않는 ë²„ì „ì˜ ë²ˆí˜¸ìž…ë‹ˆë‹¤."
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/lt/LC_MESSAGES/frontend.po b/ui/locale/lt/LC_MESSAGES/frontend.po
index 6ec76a63a7f..cd0aff28916 100644
--- a/ui/locale/lt/LC_MESSAGES/frontend.po
+++ b/ui/locale/lt/LC_MESSAGES/frontend.po
@@ -285,6 +285,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -919,6 +924,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1246,6 +1255,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2147,10 +2186,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2224,6 +2277,16 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2875,6 +2938,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2993,6 +3066,185 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3130,6 +3382,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3216,6 +3472,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9203,6 +9499,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14426,6 +14741,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21197,6 +21516,11 @@ msgstr ""
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21738,6 +22062,14 @@ msgstr ""
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21807,6 +22139,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21960,6 +22304,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -22060,6 +22420,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22071,6 +22435,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -22079,6 +22447,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22506,6 +22882,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22891,6 +23271,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22980,6 +23368,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23055,6 +23447,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23368,6 +23765,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23612,6 +24021,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/lv/LC_MESSAGES/frontend.po b/ui/locale/lv/LC_MESSAGES/frontend.po
index ce3db10cf55..636ea63ab7a 100644
--- a/ui/locale/lv/LC_MESSAGES/frontend.po
+++ b/ui/locale/lv/LC_MESSAGES/frontend.po
@@ -1,32 +1,33 @@
+#
msgid ""
msgstr ""
"Project-Id-Version: Zabbix 6.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-17 15:53+0200\n"
-"PO-Revision-Date: 2013-10-15 07:19+0300\n"
-"Last-Translator: Jaba <janis.jaunbalodis@gmail.com>\n"
+"PO-Revision-Date: 2022-11-08 07:34+0000\n"
+"Last-Translator: Sergejs <sergejs.maklakovs@zabbix.com>\n"
"Language-Team: Zabbix <info@zabbix.com>\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
-"X-Generator: Pootle 2.5.1.3\n"
-"X-Poedit-Basepath: ../../\n"
+"X-Generator: Pontoon\n"
"X-POOTLE-MTIME: 1381814349.000000\n"
+"X-Poedit-Basepath: ../../\n"
#: app/controllers/CControllerSlaReportList.php:181
#: include/classes/widgets/forms/CWidgetFormSlaReport.php:104
#, c-format
msgid "\"%1$s\" date must be less than \"%2$s\" date."
-msgstr ""
+msgstr "\"%1$s\" datumam jÄbÅ«t agrÄkam par \"%2$s\" datumu."
#: include/classes/db/MysqlDbBackend.php:70
#: include/classes/db/OracleDbBackend.php:142
#: include/classes/db/PostgresqlDbBackend.php:96
#, c-format
msgid "\"%1$s\" instead \"%2$s\""
-msgstr ""
+msgstr "\"%1$s\" vietÄ \"%2$s\""
#: include/classes/import/validators/C10XmlValidator.php:323
#: include/classes/import/validators/C10XmlValidator.php:341
@@ -44,44 +45,44 @@ msgstr ""
#: include/classes/import/validators/C62XmlValidator.php:2050
#, c-format
msgid "\"%1$s\" is expected"
-msgstr ""
+msgstr "ir sagaidÄms \"%1$s\""
#: include/classes/api/services/CReport.php:229
#: include/classes/api/services/CReport.php:636
#, c-format
msgid "\"%1$s\" must be an empty string or greater than \"%2$s\"."
-msgstr ""
+msgstr "\"%1$s\" ir jÄbÅ«t tukÅ¡ai virknei vai lielÄkai par \"%2$s\"."
#: include/classes/api/services/CItemGeneral.php:1399
#, c-format
msgid "\"%1$s\" value must be less than or equal to \"%2$s\" value"
-msgstr ""
+msgstr "\"%1$s\" vÄ“rtÄ«bai ir jÄbÅ«t mazÄkai par \"%2$s\" vÄ“rtÄ«bu vai vienÄdai ar to"
#: include/classes/import/validators/C10XmlValidator.php:360
#: include/classes/import/validators/C10XmlValidator.php:383
#: include/classes/import/validators/C10XmlValidator.php:405
msgid "\"host:key\" pair is expected"
-msgstr ""
+msgstr "ir sagaidÄms \"host:key\" pÄris"
#: include/classes/api/services/CItemGeneral.php:2299
msgid "\"hostid\" of dependent item and master item should match"
-msgstr ""
+msgstr "AtkarÄ«gÄ vienuma un galvenÄ vienuma \"hostid\" ir jÄsakrÄ«t"
#: include/classes/api/services/CItemGeneral.php:2306
msgid "\"ruleid\" of dependent item and master item should match"
-msgstr ""
+msgstr "AtkarÄ«gÄ vienuma un galvenÄ vienuma \"ruleid\" ir jÄsakrÄ«t"
#: include/forms.inc.php:1334
#: include/views/configuration.host.discovery.edit.php:901
#: include/views/js/configuration.host.discovery.edit.js.php:86
#: include/views/js/item.preprocessing.js.php:171
msgid "$.path.to.node"
-msgstr ""
+msgstr "$.path.to.node"
#: include/classes/api/services/CDRule.php:556
#, c-format
msgid "%1$d characters exceeds maximum length of %2$d characters"
-msgstr ""
+msgstr "%1$d rakstzÄ«mes pÄrsniedz maksimÄlo %2$d rakstzÄ«mju garumu"
#: include/func.inc.php:488
#, c-format
@@ -89,26 +90,26 @@ msgid "%1$d day"
msgid_plural "%1$d days"
msgstr[0] "%1$d diena"
msgstr[1] "%1$d dienas"
-msgstr[2] ""
+msgstr[2] "%1$d dienas"
#: jsLoader.php:347
#, c-format
msgctxt "screen reader"
msgid "%1$d matches for %2$s found"
-msgstr ""
+msgstr "Atrastas %1$d atbilstÄ«bas vaicÄjumam %2$s"
#: app/controllers/CControllerWidgetProblemsView.php:55
#, c-format
msgid "%1$d of %3$d%2$s problem is shown"
msgid_plural "%1$d of %3$d%2$s problems are shown"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Tiek parÄdÄ«ta %1$d problÄ“ma no %3$d%2$s"
+msgstr[1] "Tiek parÄdÄ«tas %1$d problÄ“mas no %3$d%2$s"
+msgstr[2] "Tiek parÄdÄ«tas %1$d problÄ“mas no %3$d%2$s"
#: app/controllers/CControllerPopupAcknowledgeEdit.php:117
#, c-format
msgid "%1$d problems selected."
-msgstr ""
+msgstr "Atlasītas %1$d problēmas."
#: chart4.php:94
#, c-format
@@ -118,57 +119,57 @@ msgstr "%1$s (%2$s. gads)"
#: include/classes/core/CModuleManager.php:228
#, c-format
msgid "%1$s - thrown by module located at %2$s."
-msgstr ""
+msgstr "%1$s — parÄdÄ«jis modulis, kas atrodas %2$s."
#: include/classes/api/services/CItemGeneral.php:2654
#: include/classes/import/readers/CXmlImportReader.php:46
#, c-format
msgid "%1$s [Line: %2$s | Column: %3$s]"
-msgstr ""
+msgstr "%1$s [Rinda: %2$s | Kolonna: %3$s]"
#: include/actions.inc.php:1893
#, c-format
msgctxt "screen reader"
msgid "%1$s action"
msgid_plural "%1$s actions"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s darbība"
+msgstr[1] "%1$s darbības"
+msgstr[2] "%1$s darbības"
#: jsLoader.php:328
#, c-format
msgid "%1$s characters"
-msgstr ""
+msgstr "%1$s rakstzīmes"
#: jsLoader.php:329
#, c-format
msgid "%1$s characters remaining"
-msgstr ""
+msgstr "Atlikušas %1$s rakstzīmes"
#: app/views/popup.acknowledge.edit.php:60
#: app/views/popup.acknowledge.edit.php:65
#, c-format
msgid "%1$s event"
msgid_plural "%1$s events"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s notikums"
+msgstr[1] "%1$s notikumi"
+msgstr[2] "%1$s notikumi"
#: include/maps.inc.php:410
#, c-format
msgid "%1$s host in maintenance"
msgid_plural "%1$s hosts in maintenance"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s iekÄrta apkopÄ“"
+msgstr[1] "%1$s iekÄrtas apkopÄ“"
+msgstr[2] "%1$s iekÄrtas apkopÄ“"
#: include/func.inc.php:2549
#, c-format
msgid "%1$s hour"
msgid_plural "%1$s hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s stunda"
+msgstr[1] "%1$s stundas"
+msgstr[2] "%1$s stundas"
#: app/controllers/CControllerWidgetPlainTextView.php:126
#: app/controllers/CControllerWidgetPlainTextView.php:127
@@ -176,18 +177,18 @@ msgstr[2] ""
#, c-format
msgid "%1$s item"
msgid_plural "%1$s items"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s vienums"
+msgstr[1] "%1$s vienumi"
+msgstr[2] "%1$s vienumi"
#: include/actions.inc.php:1731
#, c-format
msgctxt "screen reader"
msgid "%1$s message"
msgid_plural "%1$s messages"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s ziņojums"
+msgstr[1] "%1$s ziņojumi"
+msgstr[2] "%1$s ziņojumi"
#: include/classes/widgets/CWidgetConfig.php:308
#: include/classes/widgets/CWidgetConfig.php:309
@@ -197,40 +198,40 @@ msgstr[2] ""
#, c-format
msgid "%1$s minute"
msgid_plural "%1$s minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s minūte"
+msgstr[1] "%1$s minūtes"
+msgstr[2] "%1$s minūtes"
#: include/classes/helpers/CMapHelper.php:316
#, c-format
msgid "%1$s of %2$s element in problem state"
msgid_plural "%1$s of %2$s elements in problem state"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s no %2$s elements problÄ“mas stÄvoklÄ«"
+msgstr[1] "%1$s no %2$s elementi problÄ“mas stÄvoklÄ«"
+msgstr[2] "%1$s no %2$s elementi problÄ“mas stÄvoklÄ«"
#: jsLoader.php:348
#, c-format
msgctxt "screen reader"
msgid "%1$s preselected, use down,up arrow keys and enter to select"
-msgstr ""
+msgstr "Iepriekš atlasīts %1$s, izmantojiet lejupvērsto, augšupvērsto bulttaustiņus un Enter, lai atlasītu"
#: include/maps.inc.php:340 include/maps.inc.php:344 include/maps.inc.php:351
#: include/maps.inc.php:400
#, c-format
msgid "%1$s problem"
msgid_plural "%1$s problems"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s problēma"
+msgstr[1] "%1$s problēmas"
+msgstr[2] "%1$s problēmas"
#: include/classes/helpers/CMapHelper.php:319
#, c-format
msgid "%1$s problem in total"
msgid_plural "%1$s problems in total"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "KopÄ %1$s problÄ“ma"
+msgstr[1] "KopÄ %1$s problÄ“mas"
+msgstr[2] "KopÄ %1$s problÄ“mas"
#: app/views/monitoring.widget.actionlog.view.php:45
#: include/actions.inc.php:2172
@@ -238,9 +239,9 @@ msgstr[2] ""
#, c-format
msgid "%1$s retry left"
msgid_plural "%1$s retries left"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Atlicis %1$s atkÄrtots mÄ“Ä£inÄjums"
+msgstr[1] "AtlikuÅ¡i %1$s atkÄrtoti mÄ“Ä£inÄjumi"
+msgstr[2] "AtlikuÅ¡i %1$s atkÄrtoti mÄ“Ä£inÄjumi"
#: app/views/administration.user.edit.php:671
#: include/classes/widgets/CWidgetConfig.php:306
@@ -249,60 +250,65 @@ msgstr[2] ""
#, c-format
msgid "%1$s second"
msgid_plural "%1$s seconds"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s sekunde"
+msgstr[1] "%1$s sekundes"
+msgstr[2] "%1$s sekundes"
#: include/maps.inc.php:368 include/maps.inc.php:371 include/maps.inc.php:378
#: include/maps.inc.php:383
#, c-format
msgid "%1$s unacknowledged problem"
msgid_plural "%1$s unacknowledged problems"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%1$s neapstiprinÄta problÄ“ma"
+msgstr[1] "%1$s neapstiprinÄtas problÄ“mas"
+msgstr[2] "%1$s neapstiprinÄtas problÄ“mas"
#: app/views/monitoring.widget.problemhosts.view.php:108
#: app/views/monitoring.widget.problems.view.php:207
#, c-format
msgctxt "screen reader"
msgid "%1$s, Severity, %2$s"
-msgstr ""
+msgstr "%1$s, smaguma pakÄpe, %2$s"
#: jsLoader.php:342
#, c-format
msgctxt "screen reader"
msgid "%1$s, read only"
-msgstr ""
+msgstr "%1$s, tikai lasÄms"
#: jsLoader.php:388
#, c-format
msgctxt "screen reader"
msgid "%1$s, selected"
-msgstr ""
+msgstr "%1$s, atlasīts"
#: app/controllers/CControllerMediatypeEnable.php:93
#, c-format
msgid "%1$s. %2$s: %3$s. %4$s."
+msgstr "%1$s. %2$s: %3$s. %4$s."
+
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
msgstr ""
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
-msgstr ""
+msgstr "%1$s: %2$s"
#: include/classes/graph/CSvgGraph.php:1262
#, c-format
msgid "%1$sth percentile: %2$s"
-msgstr ""
+msgstr "%1$s. procentile: %2$s"
#: include/func.inc.php:1947
#, c-format
msgid "%4$s failed login attempt logged. Last failed attempt was from %1$s on %2$s at %3$s."
msgid_plural "%4$s failed login attempts logged. Last failed attempt was from %1$s on %2$s at %3$s."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "%4$s neveiksmÄ«gs pieteikÅ¡anÄs mÄ“Ä£inÄjums reÄ£istrÄ“ts. PÄ“dÄ“jais neveiksmÄ«gais mÄ“Ä£inÄjums bija %1$s, %2$s, %3$s."
+msgstr[1] "%4$s neveiksmÄ«gi pieteikÅ¡anÄs mÄ“Ä£inÄjumi reÄ£istrÄ“ti. PÄ“dÄ“jais neveiksmÄ«gais mÄ“Ä£inÄjums bija %1$s, %2$s, %3$s."
+msgstr[2] "%4$s neveiksmÄ«gi pieteikÅ¡anÄs mÄ“Ä£inÄjumi reÄ£istrÄ“ti. PÄ“dÄ“jais neveiksmÄ«gais mÄ“Ä£inÄjums bija %1$s, %2$s, %3$s."
#: include/classes/screens/CScreenDiscovery.php:213
#, c-format
@@ -316,15 +322,15 @@ msgstr[2] "%d iekÄrtu"
#, c-format
msgctxt "user fullname"
msgid "(%1$s %2$s)"
-msgstr ""
+msgstr "(%1$s %2$s)"
#: app/partials/popup.operations.php:56
msgid "(0 - infinitely)"
-msgstr ""
+msgstr "(0 - bezgalīgi)"
#: app/partials/popup.operations.php:67
msgid "(0 - use action default)"
-msgstr ""
+msgstr "(0 - izmantot darbības noklusējumu)"
#: include/views/configuration.hostgroups.list.php:37
msgid "(Only super admins can create groups)"
@@ -334,11 +340,11 @@ msgstr "(Tikai super administratori var veidot grupas)"
#: app/partials/hostmacros.inherited.list.html.php:190
#: app/partials/hostmacros.list.html.php:87
msgid "(created by host discovery)"
-msgstr ""
+msgstr "(izveidots ar iekÄrtas atklÄÅ¡anu)"
#: app/partials/configuration.host.edit.html.php:131
msgid "(linked by host discovery)"
-msgstr ""
+msgstr "(saistÄ«ts ar iekÄrtas atklÄÅ¡anu)"
#: app/partials/configuration.host.edit.html.php:275
#: app/views/popup.itemtestedit.view.php:241
@@ -349,7 +355,7 @@ msgstr "(bez starpniekservera)"
#: include/classes/setup/CSetupWizard.php:494
msgid "0 - use default port"
-msgstr ""
+msgstr "0 - izmantot noklusēto portu"
#: include/triggers.inc.php:1594
msgid "0 or 1"
@@ -367,19 +373,19 @@ msgstr "10 sekundes"
#: include/views/reports.toptriggers.php:118 toptriggers.php:25
msgid "100 busiest triggers"
-msgstr ""
+msgstr "100 noslogotÄkie trigeri"
#: include/classes/widgets/forms/CWidgetFormClock.php:184
msgid "12-hour"
-msgstr ""
+msgstr "12-stundu"
#: include/classes/widgets/forms/CWidgetFormClock.php:183
msgid "24-hour"
-msgstr ""
+msgstr "24-stundu"
#: app/views/popup.sla.edit.php:100 include/classes/helpers/CSlaHelper.php:243
msgid "24x7"
-msgstr ""
+msgstr "24x7"
#: app/views/administration.queue.overview.php:49
#: app/views/administration.queue.overview.proxy.php:49
@@ -407,87 +413,87 @@ msgstr "500 jaunÄkÄs vÄ“rtÄ«bas"
#: app/views/js/popup.itemtestedit.view.js.php:37
#: app/views/js/popup.itemtestedit.view.js.php:44
msgid "<empty string>"
-msgstr ""
+msgstr "<tukša virkne>"
#: include/forms.inc.php:1406 include/views/js/item.preprocessing.js.php:220
msgid "<label name>"
-msgstr ""
+msgstr "<iezīmes nosaukums>"
#: include/views/monitoring.sysmap.edit.php:129
msgid "<manual>"
-msgstr ""
+msgstr "<manuÄli>"
#: include/forms.inc.php:1389 include/forms.inc.php:1414
#: include/views/js/item.preprocessing.js.php:218
#: include/views/js/item.preprocessing.js.php:227
msgid "<metric name>{<label name>=\"<label value>\", ...} == <value>"
-msgstr ""
+msgstr "<metrikas nosaukums>{<iezīmes nosaukums>=\"<iezīmes vērtība>\", ...} == <vērtība>"
#: app/views/administration.script.edit.php:111
msgid "<sub-menu/sub-menu/...>"
-msgstr ""
+msgstr "<apakšizvēlne/apakšizvēlne/...>"
#: jsLoader.php:185
msgctxt "abbreviation of severity level"
msgid "A"
-msgstr ""
+msgstr "A"
#: include/classes/widgets/CWidgetHelper.php:952
msgid "ADD OVERRIDE"
-msgstr ""
+msgstr "PIEVIENOT IGNORÄ’Å ANU"
#: app/views/administration.user.list.php:115
msgid "API access"
-msgstr ""
+msgstr "API piekļuve"
#: app/controllers/CControllerPopupGeneric.php:333
#: app/views/administration.userrole.edit.php:287
msgid "API methods"
-msgstr ""
+msgstr "API metodes"
#: app/controllers/CControllerAuditLogList.php:210
msgid "API token"
-msgstr ""
+msgstr "API talons"
#: include/classes/api/services/CToken.php:299
#, c-format
msgid "API token \"%1$s\" already exists for userid \"%2$s\"."
-msgstr ""
+msgstr "API talons \"%1$s\" jau pastÄv priekÅ¡ lietotÄja ID \"%2$s\"."
#: app/controllers/CControllerTokenCreate.php:109
#: app/controllers/CControllerTokenCreate.php:131
msgid "API token added"
-msgstr ""
+msgstr "API talons pievienots"
#: app/controllers/CControllerTokenDelete.php:67
msgid "API token deleted"
msgid_plural "API tokens deleted"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "API talons izdzēsts"
+msgstr[1] "API taloni izdzēsti"
+msgstr[2] "API taloni izdzēsti"
#: app/controllers/CControllerTokenDisable.php:63
msgid "API token disabled"
msgid_plural "API tokens disabled"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "API talons atspējots"
+msgstr[1] "API taloni atspējoti"
+msgstr[2] "API taloni atspējoti"
#: app/controllers/CControllerTokenEnable.php:63
msgid "API token enabled"
msgid_plural "API tokens enabled"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "API talons iespējots"
+msgstr[1] "API taloni iespējoti"
+msgstr[2] "API taloni iespējoti"
#: include/classes/api/clients/CLocalApiClient.php:198
msgid "API token expired."
-msgstr ""
+msgstr "API talona derīguma termiņš ir beidzies."
#: app/controllers/CControllerTokenUpdate.php:107
#: app/controllers/CControllerTokenUpdate.php:138
msgid "API token updated"
-msgstr ""
+msgstr "API talons atjauninÄts"
#: app/controllers/CControllerPopupTokenEdit.php:114
#: app/controllers/CControllerPopupTokenView.php:74
@@ -499,19 +505,19 @@ msgstr ""
#: include/classes/helpers/CMenuHelper.php:396 include/html.inc.php:820
#: include/html.inc.php:900
msgid "API tokens"
-msgstr ""
+msgstr "API taloni"
#: include/classes/widgets/forms/CWidgetFormItem.php:251
msgid "Above value"
-msgstr ""
+msgstr "Virs vērtības"
#: app/controllers/CControllerPopupTriggerExpr.php:370
msgid "Abscissa"
-msgstr ""
+msgstr "Abscisa"
#: include/func.inc.php:1578
msgid "Access denied"
-msgstr ""
+msgstr "Piekļuve liegta"
#: sysmap.php:81
msgid "Access denied!"
@@ -520,27 +526,27 @@ msgstr "Piekļuve liegta!"
#: app/views/administration.user.edit.php:603
#: app/views/administration.userrole.edit.php:273
msgid "Access to API"
-msgstr ""
+msgstr "Piekļuve API"
#: app/views/administration.user.edit.php:456
#: app/views/administration.userrole.edit.php:83
msgid "Access to UI elements"
-msgstr ""
+msgstr "Piekļuve lietotÄja saskarnes elementiem"
#: app/views/administration.user.edit.php:632
#: app/views/administration.userrole.edit.php:322
msgid "Access to actions"
-msgstr ""
+msgstr "Piekļuve darbÄ«bÄm"
#: app/views/administration.user.edit.php:574
#: app/views/administration.userrole.edit.php:224
msgid "Access to modules"
-msgstr ""
+msgstr "Piekļuve moduļiem"
#: app/views/administration.user.edit.php:478
#: app/views/administration.userrole.edit.php:136
msgid "Access to services"
-msgstr ""
+msgstr "Piekļuve servisiem"
#: app/views/hintbox.eventlist.php:76
#: app/views/monitoring.widget.problems.view.php:66 include/actions.inc.php:161
@@ -548,33 +554,33 @@ msgstr ""
#: include/classes/screens/CScreenProblem.php:888
#: include/classes/screens/CScreenProblem.php:1157 include/events.inc.php:290
msgid "Ack"
-msgstr "Apst"
+msgstr "Atz"
#: app/views/monitoring.widget.problems.view.php:81
msgctxt "compact table header"
msgid "Ack"
-msgstr ""
+msgstr "Atz"
#: app/views/popup.acknowledge.edit.php:83 jsLoader.php:353
msgid "Acknowledge"
-msgstr "ApstiprinÄjums"
+msgstr "Atzīt"
#: include/classes/helpers/CRoleHelper.php:463
msgid "Acknowledge problems"
-msgstr ""
+msgstr "Atzīt problēmas"
#: app/views/popup.condition.common.php:684 include/actions.inc.php:2075
#: include/events.inc.php:196
msgid "Acknowledged"
-msgstr "ApstiprinÄts"
+msgstr "Atzīts"
#: app/views/administration.trigdisplay.edit.php:53
msgid "Acknowledged PROBLEM events"
-msgstr ""
+msgstr "Atzītie PROBLEM notikumi"
#: app/views/administration.trigdisplay.edit.php:77
msgid "Acknowledged RESOLVED events"
-msgstr ""
+msgstr "Atzītie RESOLVED notikumi"
#: app/controllers/CControllerAuditLogList.php:209
#: app/partials/administration.usergroup.tagfilters.html.php:29
@@ -651,17 +657,17 @@ msgstr "Darbība"
#: app/views/monitoring.widget.actionlog.view.php:37
msgctxt "compact table header"
msgid "Action"
-msgstr ""
+msgstr "Darbība"
#: include/classes/api/services/CAction.php:2688
#, c-format
msgid "Action \"%1$s\" already exists."
-msgstr ""
+msgstr "DarbÄ«ba \"%1$s\" jau pastÄv."
#: include/classes/api/services/CRole.php:761
#, c-format
msgid "Action \"%2$s\" is not available for user role \"%1$s\"."
-msgstr ""
+msgstr "DarbÄ«ba \"%2$s\" nav pieejama lietotÄja lomai \"%1$s\"."
#: actionconf.php:301
msgid "Action added"
@@ -670,7 +676,7 @@ msgstr "Darbība pievienota"
#: include/classes/core/ZBase.php:500
#, c-format
msgid "Action class %1$s must extend %2$s class."
-msgstr ""
+msgstr "DarbÄ«bas klasei %1$s ir jÄpaplaÅ¡ina %2$s klase."
#: actionconf.php:323
msgid "Action deleted"
@@ -679,29 +685,29 @@ msgstr "Darbība izdzēsta"
#: actionconf.php:491
msgid "Action disabled"
msgid_plural "Actions disabled"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Darbība atspējota"
+msgstr[1] "Darbības atspējotas"
+msgstr[2] "Darbības atspējotas"
#: actionconf.php:490
msgid "Action enabled"
msgid_plural "Actions enabled"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Darbība iespējota"
+msgstr[1] "Darbības iespējotas"
+msgstr[2] "Darbības iespējotas"
#: auditacts.php:27 include/classes/helpers/CMenuHelper.php:151
#: include/classes/helpers/CRoleHelper.php:383
#: include/classes/widgets/CWidgetConfig.php:52
#: include/views/administration.auditacts.list.php:27
msgid "Action log"
-msgstr ""
+msgstr "DarbÄ«bu žurnÄls"
#: app/views/administration.script.edit.php:102
#: app/views/administration.script.list.php:52
#: app/views/administration.script.list.php:91
msgid "Action operation"
-msgstr ""
+msgstr "DarbÄ«bas operÄcija"
#: actionconf.php:293
msgid "Action updated"
@@ -727,7 +733,7 @@ msgstr "Darbības"
#: app/views/monitoring.widget.problems.view.php:82
msgctxt "compact table header"
msgid "Actions"
-msgstr ""
+msgstr "Darbības"
#: app/partials/administration.ha.nodes.php:50
#: app/views/administration.proxy.edit.php:74
@@ -740,11 +746,11 @@ msgstr "Aktīvs"
#: include/views/configuration.maintenance.list.php:108
msgctxt "maintenance status"
msgid "Active"
-msgstr ""
+msgstr "Aktīvs"
#: include/hosts.inc.php:497
msgid "Active checks"
-msgstr ""
+msgstr "AktÄ«vÄs pÄrbaudes"
#: include/views/configuration.maintenance.edit.php:112
#: include/views/configuration.maintenance.list.php:91 maintenance.php:44
@@ -909,27 +915,31 @@ msgstr "Pievienot"
#: app/views/js/administration.mediatype.edit.js.php:133
msgid "Add (message type limit reached)"
-msgstr ""
+msgstr "Pievienot (sasniegts ziņojuma veida ierobežojums)"
#: jsLoader.php:149
msgid "Add a new widget"
-msgstr ""
+msgstr "Pievienot jaunu logrīku"
#: jsLoader.php:204
msgid "Add child element"
+msgstr "Pievienot apakšelementu"
+
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
msgstr ""
#: app/partials/service.list.edit.php:120
msgid "Add child service"
-msgstr ""
+msgstr "Pievienot apakšservisu"
#: app/views/js/popup.service.edit.js.php:401
msgid "Add child services"
-msgstr ""
+msgstr "Pievienot apakšservisus"
#: app/partials/configuration.valuemap.php:47
msgid "Add from"
-msgstr ""
+msgstr "Pievienot no"
#: include/actions.inc.php:686 include/actions.inc.php:1029
msgid "Add host"
@@ -939,46 +949,46 @@ msgstr "Pievienot mezglu"
#: include/views/configuration.trigger.prototype.edit.php:685
#: include/views/configuration.triggers.edit.php:669
msgid "Add host trigger"
-msgstr ""
+msgstr "Pievienot iekÄrtas trigeri"
#: include/classes/widgets/views/widget.tophosts.form.view.php:75
msgid "Add item column"
-msgstr ""
+msgstr "Pievienot vienuma kolonnu"
#: app/partials/massupdate.macros.tab.php:95
#: app/partials/massupdate.valuemaps.tab.php:37
msgid "Add missing"
-msgstr ""
+msgstr "Pievienot trūkstošo"
#: jsLoader.php:205
msgid "Add multiple maps"
-msgstr ""
+msgstr "Pievienot vairÄkas kartes"
#: include/classes/widgets/CWidgetHelper.php:1378
msgid "Add new data set"
-msgstr ""
+msgstr "Pievienot jaunu datu kopu"
#: app/partials/configuration.host.edit.html.php:256
#: include/views/configuration.host.prototype.edit.php:267
msgid "Add new interface"
-msgstr ""
+msgstr "Pievienot jaunu interfeisu"
#: include/classes/widgets/CWidgetHelper.php:906
msgid "Add new override"
-msgstr ""
+msgstr "Pievienot jaunu ignorēšanu"
#: app/views/js/configuration.dashboard.edit.js.php:202
#: app/views/js/monitoring.dashboard.view.js.php:290
msgid "Add page"
-msgstr ""
+msgstr "Pievienot lapu"
#: app/views/js/popup.service.edit.js.php:431
msgid "Add parent services"
-msgstr ""
+msgstr "Pievienot galvenos servisus"
#: include/classes/helpers/CRoleHelper.php:461
msgid "Add problem comments"
-msgstr ""
+msgstr "Pievienot problÄ“mas komentÄrus"
#: app/views/popup.massupdate.trigger.php:101
#: include/views/configuration.graph.edit.php:410
@@ -988,19 +998,19 @@ msgstr "Pievienot prototipu"
#: app/controllers/CControllerPopupScheduledReportEdit.php:127
msgid "Add scheduled report"
-msgstr ""
+msgstr "Pievienot plÄnoto pÄrskatu"
#: app/views/js/administration.userrole.edit.js.php:210
msgid "Add services"
-msgstr ""
+msgstr "Pievienot servisus"
#: app/views/monitoring.widget.navtreeitem.edit.php:68
msgid "Add submaps"
-msgstr ""
+msgstr "Pievienot apakškartes"
#: app/controllers/CControllerFavouriteDelete.php:69 include/html.inc.php:153
msgid "Add to favorites"
-msgstr ""
+msgstr "Pievienot favorītiem"
#: include/actions.inc.php:1033
msgid "Add to host group"
@@ -1014,40 +1024,40 @@ msgstr "Pievienot mezglu grupÄm"
#: app/partials/scheduledreport.subscription.php:42
msgid "Add user"
-msgstr ""
+msgstr "Pievienot lietotÄju"
#: app/partials/scheduledreport.subscription.php:46
msgid "Add user group"
-msgstr ""
+msgstr "Pievienot lietotÄju grupu"
#: app/views/js/configuration.dashboard.edit.js.php:198
#: app/views/js/monitoring.dashboard.view.js.php:286
#: app/views/monitoring.dashboard.widget.edit.php:35
msgid "Add widget"
-msgstr ""
+msgstr "Pievienot logrīku"
#: app/controllers/CControllerAuditLogList.php:356
#: app/controllers/CControllerPopupImportCompare.php:161
msgid "Added"
-msgstr ""
+msgstr "Pievienots"
#: jsLoader.php:340
#, c-format
msgctxt "screen reader"
msgid "Added, %1$s"
-msgstr ""
+msgstr "Pievienots, %1$s"
#: app/views/popup.service.statusrule.edit.php:94
msgid "Additional rule"
-msgstr ""
+msgstr "Papildu noteikums"
#: app/views/popup.service.edit.php:182
msgid "Additional rules"
-msgstr ""
+msgstr "Papildu noteikumi"
#: app/partials/administration.ha.nodes.php:28
msgid "Address"
-msgstr ""
+msgstr "Adrese"
#: include/hosts.inc.php:63 include/users.inc.php:53
msgid "Admin"
@@ -1061,15 +1071,15 @@ msgstr "AdministrÄcija"
#: app/views/popup.service.edit.php:158
#: include/classes/widgets/forms/CWidgetFormItem.php:69
msgid "Advanced configuration"
-msgstr ""
+msgstr "PadziļinÄta konfigurÄcija"
#: include/views/monitoring.sysmap.edit.php:160
msgid "Advanced labels"
-msgstr ""
+msgstr "Uzlabotas etiÄ·etes"
#: include/classes/widgets/forms/CWidgetFormItem.php:252
msgid "After value"
-msgstr ""
+msgstr "Pēc vērtības"
#: include/events.inc.php:288
msgid "Age"
@@ -1087,19 +1097,19 @@ msgstr "AÄ£ents"
#: include/classes/data/CItemData.php:818
msgid "Agent availability check. Returns nothing - unavailable; 1 - available"
-msgstr ""
+msgstr "AÄ£enta pieejamÄ«bas pÄrbaude. Neatgriež neko - nav pieejams; 1 - pieejams"
#: app/views/configuration.host.list.php:197
msgid "Agent encryption"
-msgstr ""
+msgstr "Aģenta šifrēšana"
#: include/classes/data/CItemData.php:810
msgid "Agent host metadata. Returns string"
-msgstr ""
+msgstr "AÄ£enta iekÄrtas metadati. Atgriež virkni"
#: include/classes/data/CItemData.php:814
msgid "Agent host name. Returns string"
-msgstr ""
+msgstr "AÄ£enta iekÄrtas nosaukums. Atgriež virkni"
#: include/views/inventory.host.view.php:64
msgid "Agent interfaces"
@@ -1107,38 +1117,38 @@ msgstr "AÄ£enta interfeiss"
#: include/classes/data/CItemData.php:822
msgid "Agent variant check. Returns 1 - for Zabbix agent; 2 - for Zabbix agent 2"
-msgstr ""
+msgstr "AÄ£enta varianta pÄrbaude. Atgriež 1 - Zabbix aÄ£ents; 2 - Zabbix aÄ£ents 2"
#: include/classes/widgets/CWidgetHelper.php:1317
msgid "Aggregate"
-msgstr ""
+msgstr "Apkopot"
#: app/views/popup.triggerexpr.php:109
msgid "Aggregate functions"
-msgstr ""
+msgstr "ApkopotÄs funkcijas"
#: app/views/popup.tophosts.column.edit.php:120
#: include/classes/widgets/CWidgetHelper.php:1289
msgid "Aggregation function"
-msgstr ""
+msgstr "Apkopošanas funkcija"
#: app/views/popup.tophosts.column.edit.php:139
#: include/classes/widgets/CWidgetHelper.php:1308
msgid "Aggregation interval"
-msgstr ""
+msgstr "ApkopoÅ¡anas intervÄls"
#: include/actions.inc.php:2106
msgid "Alert message"
-msgstr ""
+msgstr "BrÄ«dinÄjuma ziņojums"
#: include/classes/helpers/CMenuHelper.php:283
#: include/classes/helpers/CRoleHelper.php:338
msgid "Alerts"
-msgstr ""
+msgstr "BrÄ«dinÄjumi"
#: app/controllers/CControllerPopupTriggerExpr.php:1116
msgid "Algorithm"
-msgstr ""
+msgstr "Algoritms"
#: include/hosts.inc.php:114
msgid "Alias"
@@ -1146,7 +1156,7 @@ msgstr "Saīsne"
#: include/views/monitoring.sysmap.constructor.php:75
msgid "Align map elements"
-msgstr ""
+msgstr "Izlīdziniet kartes elementus"
#: app/controllers/CControllerAuditLogList.php:172
#: app/controllers/CControllerAuditLogList.php:173
@@ -1169,88 +1179,118 @@ msgstr "Viss"
#: app/views/monitoring.dashboard.view.php:186
msgid "All dashboards"
-msgstr ""
+msgstr "Visi informÄcijas paneļi"
#: app/views/monitoring.charts.view.php:83
msgid "All graphs"
-msgstr ""
+msgstr "Visi grafiki"
#: app/partials/administration.usergroup.grouprights.html.php:46
#: app/views/administration.user.edit.php:429
#: app/views/administration.user.edit.php:435
msgid "All groups"
-msgstr ""
+msgstr "Visas grupas"
#: app/views/monitoring.host.dashboard.view.php:120 include/html.inc.php:305
msgid "All hosts"
-msgstr ""
+msgstr "Visas iekÄrtas"
#: jsLoader.php:284
msgid "All links should have \"Name\" and \"URL\" specified"
-msgstr ""
+msgstr "VisÄs saitÄ“s ir jÄnorÄda \"Nosaukums\" un \"URL\"."
#: include/html.inc.php:516
msgid "All maps"
-msgstr ""
+msgstr "Visas kartes"
#: include/views/configuration.trigger.prototype.edit.php:514
#: include/views/configuration.triggers.edit.php:543
msgid "All problems"
-msgstr ""
+msgstr "Visas problēmas"
#: include/views/configuration.trigger.prototype.edit.php:515
#: include/views/configuration.triggers.edit.php:544
msgid "All problems if tag values match"
-msgstr ""
+msgstr "Visas problēmas, ja tagu vērtības sakrīt"
#: app/controllers/CControllerServiceListGeneral.php:150
msgid "All services"
-msgstr ""
+msgstr "Visi servisi"
#: app/partials/administration.usergroup.tagfilters.html.php:47
msgid "All tags"
-msgstr ""
+msgstr "Visi tagi"
#: include/html.inc.php:267
msgid "All templates"
-msgstr ""
+msgstr "Visas veidnes"
#: app/views/administration.userrole.edit.php:291
msgid "Allow list"
-msgstr ""
+msgstr "Atļaut sarakstu"
#: app/views/popup.massupdate.trigger.php:60 include/triggers.inc.php:991
#: include/views/configuration.trigger.prototype.edit.php:527
#: include/views/configuration.triggers.edit.php:556
msgid "Allow manual close"
-msgstr ""
+msgstr "Atļaut manuÄli aizvÄ“rt"
#: app/views/popup.massupdate.item.php:382
#: include/views/configuration.host.discovery.edit.php:723
#: include/views/configuration.item.edit.php:945
#: include/views/configuration.item.prototype.edit.php:852
msgid "Allowed hosts"
-msgstr "Atļautie resursdatori"
+msgstr "AtļautÄs iekÄrtas"
#: app/views/administration.user.edit.php:623
msgid "Allowed methods"
-msgstr ""
+msgstr "AtļautÄs metodes"
#: include/classes/setup/CSetupWizard.php:882
msgid "Alternatively, you can install it manually:"
-msgstr ""
+msgstr "Varat arÄ« to instalÄ“t manuÄli:"
#: include/classes/data/CItemData.php:1442
msgid "Amount of guest physical memory that is swapped out to the swap space, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
-msgstr ""
+msgstr "Viesu fiziskÄs atmiņas apjoms, kas ir aizstÄts ar swap vietu, <url> - VMware servisa URL, <uuid> - VMware virtuÄlÄs maÅ¡Ä«nas iekÄrtas nosaukums"
#: include/classes/data/CItemData.php:1462
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
+msgstr "Resursdatora fiziskÄs atmiņas apjoms, kas patÄ“rÄ“ts viesu fiziskÄs atmiņas lapu dublÄ“Å¡anai, <url> - VMware servisa URL, <uuid> - VMware virtuÄlÄs maÅ¡Ä«nas iekÄrtas nosaukums"
+
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
msgstr ""
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
-msgstr ""
+msgstr "Analogs"
#: app/partials/popup.operations.php:240
#: app/views/configuration.correlation.edit.php:119
@@ -1262,7 +1302,7 @@ msgstr ""
#: include/views/configuration.triggers.edit.php:183
#: include/views/configuration.triggers.edit.php:383
msgid "And"
-msgstr ""
+msgstr "Un"
#: app/partials/monitoring.host.filter.php:32
#: app/partials/monitoring.latest.filter.php:93
@@ -1285,11 +1325,11 @@ msgstr ""
#: include/views/configuration.maintenance.edit.php:143
#: include/views/js/monitoring.sysmaps.js.php:242
msgid "And/Or"
-msgstr ""
+msgstr "Un/Vai"
#: app/views/popup.sla.edit.php:78 include/classes/helpers/CSlaHelper.php:43
msgid "Annually"
-msgstr ""
+msgstr "Ik gadu"
#: app/partials/monitoring.host.filter.php:127
#: app/views/administration.mediatype.list.php:60
@@ -1314,11 +1354,11 @@ msgstr "Jebkurš"
#: app/views/js/administration.regex.edit.js.php:164
#: include/classes/helpers/CRegexHelper.php:27
msgid "Any character string included"
-msgstr ""
+msgstr "Iekļauta jebkura rakstzīmju virkne"
#: include/classes/core/CJsonRpc.php:196
msgid "Application error."
-msgstr "AplikÄcijas kļūda."
+msgstr "Lietojumprogrammas kļūda."
#: app/partials/timeselector.filter.php:104
#: app/views/dashboard.page.properties.edit.php:64
@@ -1338,21 +1378,21 @@ msgstr "Pielietot"
#: include/views/configuration.hostgroups.edit.php:48
msgid "Apply permissions and tag filters to all subgroups"
-msgstr ""
+msgstr "Pielietot atļaujas un tagu filtrus visÄm apakÅ¡grupÄm"
#: app/partials/configuration.templategroup.edit.html.php:47
msgid "Apply permissions to all subgroups"
-msgstr ""
+msgstr "Pielietot atļaujas visÄm apakÅ¡grupÄm"
#: include/views/configuration.maintenance.list.php:71
#: include/views/configuration.maintenance.list.php:105
msgctxt "maintenance status"
msgid "Approaching"
-msgstr ""
+msgstr "Tuvojas"
#: include/classes/widgets/CWidgetHelper.php:1443
msgid "Approximation"
-msgstr ""
+msgstr "TuvinÄÅ¡ana"
#: include/func.inc.php:239
msgid "Apr"
@@ -1364,156 +1404,160 @@ msgstr "Aprīlis"
#: app/views/popup.tabfilter.edit.php:76
msgid "Are you sure you want to delete this filter?"
-msgstr ""
+msgstr "Vai tieÅ¡Äm vÄ“laties dzÄ“st Å¡o filtru?"
#: app/views/js/administration.macros.edit.js.php:86
msgid "Are you sure you want to delete?"
-msgstr ""
+msgstr "Vai tieÅ¡Äm vÄ“laties dzÄ“st?"
#: include/classes/html/CButtonQMessage.php:52
msgid "Are you sure you want to perform this action?"
-msgstr ""
+msgstr "Vai tieÅ¡Äm vÄ“laties veikt Å¡o darbÄ«bu?"
#: include/views/js/monitoring.sysmaps.js.php:122
msgid "Area size"
-msgstr ""
+msgstr "Laukuma lielums"
#: include/views/js/monitoring.sysmaps.js.php:115
msgid "Area type"
-msgstr ""
+msgstr "Laukuma veids"
#: include/items.inc.php:1835
msgid "Arithmetic"
-msgstr ""
+msgstr "Aritmētika"
#: app/views/popup.tophosts.column.edit.php:150
#: include/classes/helpers/CServiceHelper.php:148
msgid "As is"
-msgstr ""
+msgstr "KÄ ir"
#: include/views/monitoring.history.php:102
msgid "As plain text"
-msgstr ""
+msgstr "KÄ vienkÄrÅ¡s teksts"
#: app/views/administration.authentication.edit.php:275
#: app/views/administration.authentication.edit.php:309
msgid "Assertions"
-msgstr ""
+msgstr "Apgalvojumi"
#: include/hosts.inc.php:149
msgid "Asset tag"
-msgstr ""
+msgstr "Līdzekļu tags"
#: include/maintenances.inc.php:70
#, c-format
msgid "At %1$s:%2$s %3$s of every week"
msgid_plural "At %1$s:%2$s %3$s of every %4$s weeks"
-msgstr[0] ""
+msgstr[0] "Katru %4$s nedēļu %1$s:%2$s %3$s"
+msgstr[1] "Katras %4$s nedēļas %1$s:%2$s %3$s"
+msgstr[2] "Katras %4$s nedēļas %1$s:%2$s %3$s"
#: include/maintenances.inc.php:50
#, c-format
msgid "At %1$s:%2$s every day"
msgid_plural "At %1$s:%2$s every %3$s days"
-msgstr[0] ""
+msgstr[0] "Katru %3$s dienu plkst. %1$s:%2$s"
+msgstr[1] "Katas %3$s dienas plkst. %1$s:%2$s"
+msgstr[2] "Katas %3$s dienas plkst. %1$s:%2$s"
#: include/maintenances.inc.php:112
#, c-format
msgid "At %1$s:%2$s on %3$s %4$s of every %5$s"
-msgstr ""
+msgstr "%1$s:%2$s, %3$s %4$s no katriem %5$s"
#: include/maintenances.inc.php:121
#, c-format
msgid "At %1$s:%2$s on day %3$s of every %4$s"
-msgstr ""
+msgstr "%1$s:%2$s, %3$s. dienÄ no katra %4$s"
#: app/views/popup.maintenance.period.php:154
msgid "At (hour:minute)"
-msgstr ""
+msgstr "Plkst. (stunda:minūte)"
#: app/controllers/CControllerAuthenticationUpdate.php:125
msgid "At least one LDAP server must exist."
-msgstr ""
+msgstr "JÄbÅ«t vismaz vienam LDAP serverim."
#: app/views/administration.userrole.edit.php:117
msgid "At least one UI element must be checked."
-msgstr ""
+msgstr "Ir jÄatzÄ«mÄ“ vismaz viens lietotÄja interfeisa elements."
#: include/classes/api/services/CRole.php:487
#, c-format
msgid "At least one UI element must be enabled for user role \"%1$s\"."
-msgstr ""
+msgstr "Vismaz vienam lietotÄja interfeisa elementam ir jÄbÅ«t iespÄ“jotam lietotÄja lomai \"%1$s\"."
#: app/controllers/CControllerPopupLldOperation.php:122
msgid "At least one action is mandatory."
-msgstr ""
+msgstr "Vismaz viena darbÄ«ba ir obligÄta."
#: include/classes/api/services/CUser.php:614
#: include/classes/api/services/CUser.php:1286
#, c-format
msgid "At least one active user must exist with role \"%1$s\"."
-msgstr ""
+msgstr "JÄbÅ«t vismaz vienam aktÄ«vam lietotÄjam ar lomu \"%1$s\"."
#: include/classes/api/services/CMaintenance.php:683
msgid "At least one day of the week or day of the month must be specified."
-msgstr ""
+msgstr "JÄnorÄda vismaz viena nedēļas diena vai mÄ“neÅ¡a diena."
#: include/classes/api/services/CMaintenance.php:382
#: include/classes/api/services/CMaintenance.php:574
#: include/views/configuration.maintenance.edit.php:247
msgid "At least one host group or host must be selected."
-msgstr ""
+msgstr "JÄizvÄ“las vismaz viena iekÄrtu grupa vai iekÄrta."
#: include/classes/api/services/CHostGroup.php:1111
#: include/classes/api/services/CHostGroup.php:1268
msgid "At least one host or template must be specified."
-msgstr ""
+msgstr "JÄnorÄda vismaz viena iekÄrta vai veidne."
#: include/classes/setup/CFrontendSetup.php:241
msgid "At least one of MySQL, PostgreSQL or Oracle should be supported."
-msgstr ""
+msgstr "JÄatbalsta vismaz viens no MySQL, PostgreSQL vai Oracle."
#: app/views/configuration.correlation.edit.php:161
msgid "At least one operation must be selected."
-msgstr ""
+msgstr "JÄizvÄ“las vismaz viena darbÄ«ba."
#: include/views/configuration.action.edit.php:522
msgid "At least one operation must exist."
-msgstr ""
+msgstr "JÄbÅ«t vismaz vienai darbÄ«bai."
#: include/classes/api/services/CHostGroup.php:1594
#, c-format
msgid "At least one parameter \"%1$s\" or \"%2$s\" must be enabled."
-msgstr ""
+msgstr "JÄiespÄ“jo vismaz viens parametrs \"%1$s\" vai \"%2$s\"."
#: app/controllers/CControllerPopupAcknowledgeCreate.php:172
msgid "At least one update operation or message is mandatory"
-msgstr ""
+msgstr "Vismaz viena atjauninÄÅ¡anas darbÄ«ba vai ziņojums ir obligÄts"
#: app/views/popup.acknowledge.edit.php:105
msgid "At least one update operation or message must exist."
-msgstr ""
+msgstr "JÄbÅ«t vismaz vienai atjauninÄÅ¡anas darbÄ«bai vai ziņojumam."
#: app/partials/popup.operations.php:75
msgid "At least one user or user group must be selected."
-msgstr ""
+msgstr "JÄizvÄ“las vismaz viens lietotÄjs vai lietotÄju grupa."
#: include/classes/api/services/CReport.php:343
msgid "At least one user or user group must be specified."
-msgstr ""
+msgstr "JÄnorÄda vismaz viens lietotÄjs vai lietotÄju grupa."
#: app/views/administration.mediatype.edit.php:342
msgid "Attempt interval"
-msgstr ""
+msgstr "MÄ“Ä£inÄjumu intervÄls"
#: app/views/administration.mediatype.edit.php:337 httpconf.php:43
#: include/views/configuration.httpconf.edit.php:78
#: include/views/configuration.httpconf.list.php:141
msgid "Attempts"
-msgstr ""
+msgstr "MÄ“Ä£inÄjumi"
#: app/views/administration.geomaps.edit.php:88
msgid "Attribution"
-msgstr ""
+msgstr "AttiecinÄjums"
#: app/views/administration.housekeeping.edit.php:179
#: include/classes/helpers/CMenuHelper.php:148
@@ -1527,11 +1571,11 @@ msgstr "Audits"
#: app/views/reports.auditlog.list.php:78
#: include/classes/helpers/CMenuHelper.php:253 include/html.inc.php:892
msgid "Audit log"
-msgstr ""
+msgstr "Audita žurnÄls"
#: app/views/administration.housekeeping.edit.php:180
msgid "Audit settings"
-msgstr ""
+msgstr "Audita iestatījumi"
#: include/func.inc.php:243
msgid "Aug"
@@ -1543,11 +1587,11 @@ msgstr "Augusts"
#: app/views/popup.token.view.php:46
msgid "Auth token"
-msgstr ""
+msgstr "AutentifikÄcijas talons"
#: app/views/administration.authentication.edit.php:281
msgid "AuthN requests"
-msgstr ""
+msgstr "AuthN pieprasījumi"
#: app/controllers/CControllerAuditLogList.php:211
#: app/views/administration.authentication.edit.php:323
@@ -1569,7 +1613,7 @@ msgstr "AutentifikÄcijas algoritms"
#: include/classes/api/services/CUser.php:2022
#, c-format
msgid "Authentication failed: %1$s."
-msgstr ""
+msgstr "AutentifikÄcija neizdevÄs: %1$s."
#: app/views/administration.script.edit.php:131
#: app/views/popup.massupdate.item.php:169
@@ -1583,7 +1627,7 @@ msgstr "AutentifikÄcijas metode"
#: app/views/popup.discovery.check.php:103
#: app/views/popup.itemtestedit.view.php:202
msgid "Authentication passphrase"
-msgstr ""
+msgstr "AutentifikÄcijas paroles frÄze"
#: app/partials/configuration.host.interface.row.php:143
#: app/views/popup.discovery.check.php:96
@@ -1594,27 +1638,27 @@ msgstr "AutentifikÄcijas protokols"
#: app/controllers/CControllerAuthenticationUpdate.php:395
#: app/controllers/CControllerAuthenticationUpdate.php:403
msgid "Authentication settings updated"
-msgstr ""
+msgstr "AutentifikÄcijas iestatÄ«jumi ir atjauninÄti"
#: app/views/administration.module.edit.php:40
#: app/views/administration.module.list.php:77
msgid "Author"
-msgstr ""
+msgstr "Autors"
#: app/views/administration.miscconfig.edit.php:87
msgid "Authorization"
-msgstr ""
+msgstr "AutorizÄcija"
#: app/views/popup.tophosts.column.edit.php:162
msgid "Auto"
-msgstr ""
+msgstr "Auto"
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:48
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:154
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:226
msgctxt "history source selection method"
msgid "Auto"
-msgstr ""
+msgstr "Auto"
#: app/views/administration.user.edit.php:261
msgid "Auto-login"
@@ -1622,11 +1666,11 @@ msgstr "AutomÄtiska pieteikÅ¡anÄs"
#: include/classes/api/services/CUser.php:1012
msgid "Auto-login and auto-logout options cannot be enabled together."
-msgstr ""
+msgstr "AutomÄtiskÄs pieteikÅ¡anÄs un automÄtiskÄs atteikÅ¡anÄs opcijas nevar iespÄ“jot kopÄ."
#: app/views/administration.user.edit.php:266
msgid "Auto-logout"
-msgstr ""
+msgstr "AutomÄtiska atteikÅ¡anÄs"
#: app/partials/configuration.host.edit.html.php:360
#: app/partials/popup.operations.php:228
@@ -1639,12 +1683,12 @@ msgstr "AutomÄtiski"
#: include/views/monitoring.sysmap.edit.php:140
msgid "Automatic icon mapping"
-msgstr ""
+msgstr "AutomÄtiska ikonu kartÄ“Å¡ana"
#: include/views/js/monitoring.sysmaps.js.php:260
#: include/views/js/monitoring.sysmaps.js.php:693
msgid "Automatic icon selection"
-msgstr ""
+msgstr "AutomÄtiska ikonu izvÄ“le"
#: app/controllers/CControllerAuditLogList.php:212
#: app/controllers/CControllerAutoregEdit.php:67
@@ -1654,16 +1698,16 @@ msgstr ""
#: include/classes/helpers/CMediatypeHelper.php:189
#: include/classes/helpers/CMenuHelper.php:249 include/html.inc.php:890
msgid "Autoregistration"
-msgstr ""
+msgstr "AutomÄtiskÄ reÄ£istrÄcija"
#: include/classes/helpers/CMenuHelper.php:209
#: include/views/configuration.action.list.php:36
msgid "Autoregistration actions"
-msgstr ""
+msgstr "AutomÄtiskÄs reÄ£istrÄcijas darbÄ«bas"
#: app/views/administration.housekeeping.edit.php:87
msgid "Autoregistration data storage period"
-msgstr ""
+msgstr "AutomÄtiskÄs reÄ£istrÄcijas datu uzglabÄÅ¡anas periods"
#: app/partials/monitoring.host.view.html.php:36
#: app/views/configuration.host.list.php:196
@@ -1685,7 +1729,7 @@ msgstr "Pieejams"
#: app/views/monitoring.widget.hostavail.view.php:37
msgctxt "compact table header"
msgid "Available"
-msgstr ""
+msgstr "Pieejams"
#: app/views/administration.trigdisplay.edit.php:128 jsLoader.php:179
msgid "Average"
@@ -1693,24 +1737,24 @@ msgstr "Vidējs"
#: include/classes/data/CItemData.php:1522
msgid "Average number of outstanding read requests to the virtual disk during the collection interval , <url> - VMware service URL, <uuid> - VMware virtual machine host name, <instance> - disk device instance"
-msgstr ""
+msgstr "VidÄ“jais neapstrÄdÄto lasÄ«Å¡anas pieprasÄ«jumu skaits uz virtuÄlo disku savÄkÅ¡anas intervÄlÄ, <url> - VMware servisa URL, <uuid> - VMware virtuÄlÄs maÅ¡Ä«nas iekÄrtas nosaukums, <instance> - diska ierÄ«ces instance"
#: include/classes/data/CItemData.php:1542
msgid "Average number of outstanding write requests to the virtual disk during the collection interval, <url> - VMware service URL, <uuid> - VMware virtual machine host name, <instance> - disk device instance"
-msgstr ""
+msgstr "VidÄ“jais neapstrÄdÄto ierakstÄ«Å¡anas pieprasÄ«jumu skaits uz virtuÄlo disku savÄkÅ¡anas intervÄla laikÄ, <url> - VMware servisa URL, <uuid> - VMware virtuÄlÄs maÅ¡Ä«nas iekÄrtas nosaukums, <instance> - diska ierÄ«ces instance"
#: app/views/administration.authentication.edit.php:93
msgid "Avoid easy-to-guess passwords"
-msgstr ""
+msgstr "Izvairieties no viegli uzminÄmÄm parolÄ“m"
#: include/classes/widgets/views/widget.svggraph.form.view.php:307
msgid "Axes"
-msgstr ""
+msgstr "Asis"
#: include/classes/setup/CSetupWizard.php:334
#: include/classes/setup/CSetupWizard.php:755
msgid "Back"
-msgstr ""
+msgstr "Atpakaļ"
#: app/views/administration.image.edit.php:74
#: app/views/administration.image.list.php:52
@@ -1721,7 +1765,7 @@ msgstr "Fons"
#: include/classes/widgets/forms/CWidgetFormItem.php:384
#: include/views/js/monitoring.sysmaps.js.php:582
msgid "Background color"
-msgstr ""
+msgstr "Fona krÄsa"
#: include/views/monitoring.sysmap.edit.php:123
msgid "Background image"
@@ -1732,7 +1776,7 @@ msgstr "Fona attēls"
#: include/classes/widgets/CWidgetHelper.php:971
#: include/classes/widgets/CWidgetHelper.php:1219
msgid "Bar"
-msgstr ""
+msgstr "Joslu"
#: app/views/administration.authentication.edit.php:175
msgid "Base DN"
@@ -1742,19 +1786,19 @@ msgstr "BÄzes DN"
#: include/classes/widgets/CWidgetHelper.php:954
#: include/classes/widgets/CWidgetHelper.php:1210
msgid "Base color"
-msgstr ""
+msgstr "PamatkrÄsa"
#: include/httptest.inc.php:28
msgid "Basic"
-msgstr ""
+msgstr "Pamata"
#: include/classes/widgets/forms/CWidgetFormItem.php:250
msgid "Before value"
-msgstr ""
+msgstr "Pirms vērtības"
#: include/classes/widgets/forms/CWidgetFormItem.php:253
msgid "Below value"
-msgstr ""
+msgstr "Zem vērtības"
#: app/views/administration.authentication.edit.php:187
msgid "Bind DN"
@@ -1767,11 +1811,11 @@ msgstr "Bind parole"
#: app/controllers/CControllerPopupTriggerExpr.php:428
#: app/controllers/CControllerPopupTriggerExpr.php:461
msgid "Bits to shift"
-msgstr ""
+msgstr "Biti, kas jÄpÄrslÄ“dz"
#: app/views/popup.triggerexpr.php:110
msgid "Bitwise functions"
-msgstr ""
+msgstr "Bitu funkcijas"
#: app/views/administration.user.list.php:144
msgid "Blocked"
@@ -1779,28 +1823,28 @@ msgstr "BloÄ·Ä“ts"
#: include/classes/core/ZBase.php:358
msgid "Blue"
-msgstr ""
+msgstr "Zils"
#: app/views/popup.httpstep.php:160
#: include/views/configuration.host.discovery.edit.php:400
#: include/views/configuration.item.edit.php:458
#: include/views/configuration.item.prototype.edit.php:436
msgid "Body"
-msgstr ""
+msgstr "Pamatteksts"
#: app/views/popup.httpstep.php:162
#: include/views/configuration.host.discovery.edit.php:402
#: include/views/configuration.item.edit.php:460
#: include/views/configuration.item.prototype.edit.php:438
msgid "Body and headers"
-msgstr ""
+msgstr "Pamatteksts un galvenes"
#: include/classes/widgets/forms/CWidgetFormItem.php:131
#: include/classes/widgets/forms/CWidgetFormItem.php:212
#: include/classes/widgets/forms/CWidgetFormItem.php:275
#: include/classes/widgets/forms/CWidgetFormItem.php:335
msgid "Bold"
-msgstr ""
+msgstr "TreknrakstÄ"
#: include/graphs.inc.php:59 include/views/js/monitoring.sysmaps.js.php:804
#: include/views/js/monitoring.sysmaps.js.php:894
@@ -1809,27 +1853,27 @@ msgstr "Treknraksta līnija"
#: include/items.inc.php:1848
msgid "Boolean to decimal"
-msgstr ""
+msgstr "Boolean uz decimÄlu"
#: include/views/js/monitoring.sysmaps.js.php:421
msgid "Border"
-msgstr ""
+msgstr "Apmale"
#: include/views/js/monitoring.sysmaps.js.php:613
msgid "Border color"
-msgstr ""
+msgstr "Apmales krÄsa"
#: include/views/js/monitoring.sysmaps.js.php:591
msgid "Border type"
-msgstr ""
+msgstr "Apmales veids"
#: include/views/js/monitoring.sysmaps.js.php:603
msgid "Border width"
-msgstr ""
+msgstr "Apmales platums"
#: app/controllers/CControllerUserUpdateGeneral.php:106
msgid "Both passwords must be equal."
-msgstr ""
+msgstr "AbÄm parolÄ“m jÄbÅ«t vienÄdÄm."
#: include/classes/widgets/forms/CWidgetFormItem.php:108
#: include/classes/widgets/forms/CWidgetFormItem.php:189
@@ -1843,15 +1887,15 @@ msgstr "Apakša"
#: include/classes/widgets/forms/CWidgetFormTopHosts.php:133
msgid "Bottom N"
-msgstr ""
+msgstr "ApakÅ¡Ä“jÄ N"
#: jsLoader.php:276
msgid "Bring forward"
-msgstr ""
+msgstr "Izvirzīt"
#: jsLoader.php:275
msgid "Bring to front"
-msgstr ""
+msgstr "Novietot priekÅ¡Ä"
#: include/locales.inc.php:34
msgid "Bulgarian (bg_BG)"
@@ -1863,7 +1907,7 @@ msgstr "PÄ“c resursdatora"
#: report2.php:196
msgid "By trigger template"
-msgstr "PÄ“c trigera Å¡ablona"
+msgstr "PÄ“c trigera veidnes"
#: app/views/administration.proxy.list.php:142
#: app/views/administration.proxy.list.php:155
@@ -1871,7 +1915,7 @@ msgstr "PÄ“c trigera Å¡ablona"
#: app/views/configuration.host.list.php:405
#: app/views/configuration.host.list.php:408
msgid "CERT"
-msgstr ""
+msgstr "SERT"
#: app/views/hintbox.eventlist.php:116
#: app/views/monitoring.widget.problems.view.php:109
@@ -1879,52 +1923,52 @@ msgstr ""
#: include/classes/screens/CScreenProblem.php:969
#: include/classes/screens/CScreenProblem.php:1180 include/events.inc.php:376
msgid "CLOSING"
-msgstr ""
+msgstr "AIZVÄ’RÅ ANA"
#: include/classes/data/CItemData.php:1066
msgid "CPU information. Returns string or integer"
-msgstr ""
+msgstr "CPU informÄcija. Atgriež virkni vai veselu skaitli"
#: include/classes/data/CItemData.php:1042
msgid "CPU load. Returns float"
-msgstr ""
+msgstr "CPU slodze. Atgriež float"
#: include/classes/data/CItemData.php:1422
msgid "CPU time spent waiting for swap-in, <url> - VMware service URL, <uuid> - VMware virtual machine host name, <instance> - CPU instance"
-msgstr ""
+msgstr "CPU laiks, kas pavadÄ«ts, gaidot nomaiņu, <url> - VMware servisa URL, <uuid> - VMware virtuÄlÄs maÅ¡Ä«nas iekÄrtas nosaukums, <instance> - CPU instance"
#: include/classes/data/CItemData.php:1274
msgid "CPU usage as a percentage during the interval depends on power management or HT, <url> - VMware service URL, <uuid> - VMware hypervisor host name"
-msgstr ""
+msgstr "CPU lietojums procentos intervÄlÄ ir atkarÄ«gs no jaudas pÄrvaldÄ«bas vai HT, <url> - VMware servisa URL, <uuid> - VMware hipervizora iekÄrtas nosaukums"
#: include/classes/data/CItemData.php:1266
msgid "CPU usage as a percentage during the interval, <url> - VMware service URL, <uuid> - VMware hypervisor host name"
-msgstr ""
+msgstr "CPU lietojums procentos intervÄla laikÄ, <url> - VMware servisa URL, <uuid> - VMware hipervizora iekÄrtas nosaukums"
#: include/classes/data/CItemData.php:1426
msgid "CPU usage as a percentage during the interval, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
-msgstr ""
+msgstr "CPU lietojums procentos intervÄla laikÄ, <url> - VMware servisa URL, <uuid> - VMware virtuÄlÄs maÅ¡Ä«nas iekÄrtas nosaukums"
#: include/classes/data/CItemData.php:1429
msgid "CPU usage in hertz during the interval on VMware Resource Pool, <url> - VMware service URL, <rpid> - VMware resource pool id"
-msgstr ""
+msgstr "CPU lietojums hercos VMware resursu kopas intervÄla laikÄ, <url> - VMware servisa URL, <rpid> - VMware resursu kopas ID"
#: include/classes/data/CItemData.php:1054
msgid "CPU utilization percentage. Returns float"
-msgstr ""
+msgstr "CPU izmantošanas procents. Atgriež float"
#: app/views/popup.itemtestedit.view.php:300
msgid "CRLF"
-msgstr ""
+msgstr "CRLF"
#: include/items.inc.php:1828
msgid "CSV to JSON"
-msgstr ""
+msgstr "CSV uz JSON"
#: include/classes/validators/CApiInputValidator.php:2717
#: include/classes/validators/CNewValidator.php:352
msgid "CUID is expected"
-msgstr ""
+msgstr "Sagaida CUID"
#: include/items.inc.php:100 include/views/configuration.graph.edit.php:179
#: include/views/configuration.graph.edit.php:254
@@ -1933,11 +1977,11 @@ msgstr "Izskaitļots"
#: jsLoader.php:232
msgid "Calendar"
-msgstr ""
+msgstr "KalendÄrs"
#: include/hosts.inc.php:60
msgid "Callback"
-msgstr ""
+msgstr "Callback"
#: app/partials/scheduledreport.formgrid.html.php:215
#: app/views/administration.iconmap.edit.php:146
@@ -1976,48 +2020,48 @@ msgstr "Atcelt"
#: app/controllers/CControllerTokenCreate.php:65
#: app/controllers/CControllerTokenCreate.php:140
msgid "Cannot add API token"
-msgstr ""
+msgstr "Nevar pievienot API talonu"
#: include/classes/api/services/CGraph.php:517
#: include/classes/api/services/CGraph.php:531
#: include/classes/api/services/CGraph.php:545
#, c-format
msgid "Cannot add a non-numeric item \"%1$s\" to graph \"%2$s\"."
-msgstr ""
+msgstr "Nevar pievienot neciparu vienumu \"%1$s\" grafikam \"%2$s\"."
#: include/classes/api/services/CGraphPrototype.php:471
#: include/classes/api/services/CGraphPrototype.php:535
#, c-format
msgid "Cannot add a non-numeric item \"%1$s\" to graph prototype \"%2$s\"."
-msgstr ""
+msgstr "Nevar pievienot neciparu vienumu \"%1$s\" grafiku prototipam \"%2$s\"."
#: actionconf.php:302
msgid "Cannot add action"
-msgstr ""
+msgstr "Darbību nav iespējams pievienot"
#: app/controllers/CControllerCorrelationCreate.php:115
msgid "Cannot add correlation"
-msgstr ""
+msgstr "KorelÄciju nav iespÄ“jams pievienot"
#: jsLoader.php:133
#, c-format
msgid "Cannot add dashboard page: maximum number of %1$d dashboard pages has been added."
-msgstr ""
+msgstr "Nevar pievienot informÄcijas paneļa lapu: ir pievienots maksimÄlais %1$d informÄcijas paneļa lapu skaits."
#: include/classes/api/services/CTrigger.php:979
#: include/classes/api/services/CTriggerPrototype.php:788
msgid "Cannot add dependency from a host to a template."
-msgstr ""
+msgstr "Veidnei nevar pievienot iekÄrtas atkarÄ«bu."
#: include/classes/api/services/CDiscoveryRule.php:889
#: include/triggers.inc.php:371
#, c-format
msgid "Cannot add dependency from trigger \"%1$s:%2$s\" to non existing trigger \"%3$s:%4$s\"."
-msgstr ""
+msgstr "Nevar pievienot atkarību no trigera \"%1$s:%2$s\" neesošam trigerim \"%3$s:%4$s\"."
#: host_discovery.php:726
msgid "Cannot add discovery rule"
-msgstr ""
+msgstr "Nevar pievienot atklÄÅ¡anas noteikumu"
#: graphs.php:245
msgid "Cannot add graph"
@@ -2025,7 +2069,7 @@ msgstr "Grafiku nav iespējams pievienot"
#: graphs.php:227
msgid "Cannot add graph prototype"
-msgstr ""
+msgstr "Nevar pievienot grafika prototipu"
#: hostgroups.php:114
msgid "Cannot add group"
@@ -2039,11 +2083,11 @@ msgstr "Resursdatoru nav iespējams pievienot"
#: app/controllers/CControllerHostGroupCreate.php:40
#: app/controllers/CControllerHostGroupCreate.php:70
msgid "Cannot add host group"
-msgstr ""
+msgstr "Nevar pievienot iekÄrtu grupu"
#: host_prototypes.php:304
msgid "Cannot add host prototype"
-msgstr ""
+msgstr "Nevar pievienot iekÄrtas prototipu"
#: app/controllers/CControllerImageCreate.php:41
#: app/controllers/CControllerImageCreate.php:101
@@ -2053,43 +2097,43 @@ msgstr "Attēlu nevar pievienot"
#: items.php:876
msgid "Cannot add item"
-msgstr ""
+msgstr "Nevar pievienot vienumu"
#: disc_prototypes.php:553
msgid "Cannot add item prototype"
-msgstr ""
+msgstr "Nevar pievienot vienuma prototipu"
#: maintenance.php:123
msgid "Cannot add maintenance"
-msgstr ""
+msgstr "Nevar pievienot apkopi"
#: include/classes/api/services/CMap.php:1559
#, c-format
msgid "Cannot add map element of the map \"%1$s\" due to circular reference."
-msgstr ""
+msgstr "Apļveida atsauces dēļ nevar pievienot kartes elementu kartei \"%1$s\"."
#: app/controllers/CControllerMediatypeCreate.php:76
#: app/controllers/CControllerMediatypeCreate.php:165
msgid "Cannot add media type"
-msgstr ""
+msgstr "Nevar pievienot mēdija veidu"
#: app/controllers/CControllerModuleScan.php:103
#, c-format
msgid "Cannot add module: %1$s."
msgid_plural "Cannot add modules: %1$s."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar pievienot moduli: %1$s."
+msgstr[1] "Nevar pievienot moduļus: %1$s."
+msgstr[2] "Nevar pievienot moduļus: %1$s."
#: include/classes/api/services/CGraph.php:40
#, c-format
msgid "Cannot add more than one item with type \"Graph sum\" on graph \"%1$s\"."
-msgstr ""
+msgstr "Grafikam \"%1$s\" nevar pievienot vairÄk nekÄ vienu vienumu ar veidu \"Grafika summa\"."
#: include/classes/api/services/CGraphPrototype.php:40
#, c-format
msgid "Cannot add more than one item with type \"Graph sum\" on graph prototype \"%1$s\"."
-msgstr ""
+msgstr "Grafiku prototipam \"%1$s\" nevar pievienot vairÄk par vienu vienumu ar veidu \"Grafika summa\"."
#: sysmaps.php:214
msgid "Cannot add network map"
@@ -2098,16 +2142,16 @@ msgstr "Nav iespējams pievienot tīkla karti"
#: app/controllers/CControllerProxyCreate.php:58
#: app/controllers/CControllerProxyCreate.php:122
msgid "Cannot add proxy"
-msgstr ""
+msgstr "Nevar pievienot starpniekserveri"
#: app/controllers/CControllerRegExCreate.php:41
#: app/controllers/CControllerRegExCreate.php:72
msgid "Cannot add regular expression"
-msgstr ""
+msgstr "Nevar pievienot regulÄro izteiksmi"
#: app/controllers/CControllerScheduledReportCreate.php:152
msgid "Cannot add scheduled report"
-msgstr ""
+msgstr "Nevar pievienot ieplÄnoto pÄrskatu"
#: app/controllers/CControllerScriptCreate.php:60
#: app/controllers/CControllerScriptCreate.php:155
@@ -2116,16 +2160,16 @@ msgstr "Skriptu nav iespējams pievienot"
#: app/views/monitoring.widget.navtreeitem.edit.php:63
msgid "Cannot add submaps. Max depth reached."
-msgstr ""
+msgstr "Nevar pievienot apakÅ¡kartes. Sasniegts maksimÄlais dziļums."
#: templates.php:205
msgid "Cannot add template"
-msgstr "Šablonu nav iespējams pievienot"
+msgstr "Nevar pievienot veidni"
#: app/controllers/CControllerTemplateGroupCreate.php:40
#: app/controllers/CControllerTemplateGroupCreate.php:70
msgid "Cannot add template group"
-msgstr ""
+msgstr "Nevar pievienot veidņu grupu"
#: triggers.php:306
msgid "Cannot add trigger"
@@ -2133,7 +2177,7 @@ msgstr "Trigeri nav iespējams pievienot"
#: trigger_prototypes.php:257
msgid "Cannot add trigger prototype"
-msgstr ""
+msgstr "Nevar pievienot trigera prototipu"
#: app/controllers/CControllerUserCreate.php:63
#: app/controllers/CControllerUserCreate.php:119
@@ -2143,232 +2187,256 @@ msgstr "LietotÄju nav iespÄ“jams pievienot"
#: app/controllers/CControllerUsergroupCreate.php:51
#: app/controllers/CControllerUsergroupCreate.php:101
msgid "Cannot add user group"
-msgstr ""
+msgstr "Nevar pievienot lietotÄju grupu"
#: httpconf.php:198
msgid "Cannot add web scenario"
+msgstr "Nevar pievienot tÄ«mekļa scenÄriju"
+
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
msgstr ""
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
+msgstr "Nevar pievienot logrÄ«ku: informÄcijas panelÄ« nav pietiekami daudz brÄ«vas vietas."
+
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
msgstr ""
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
-msgstr ""
+msgstr "Nevar noņemt"
#: include/classes/validators/CLdapAuthValidator.php:79
msgid "Cannot bind anonymously to LDAP server."
-msgstr ""
+msgstr "Nevar anonīmi saistīties ar LDAP serveri."
#: include/classes/validators/CLdapAuthValidator.php:78
msgid "Cannot bind to LDAP server."
-msgstr ""
+msgstr "Nevar izveidot saiti ar LDAP serveri."
#: include/forms.inc.php:1932 include/forms.inc.php:1939
#: include/forms.inc.php:1949 include/forms.inc.php:1983
#: include/forms.inc.php:1990 include/forms.inc.php:2000
#, c-format
msgid "Cannot build expression tree: %1$s."
-msgstr ""
+msgstr "Nevar izveidot izteiksmju koku: %1$s."
#: include/classes/api/services/CRole.php:792
msgid "Cannot change the user type of own role."
-msgstr ""
+msgstr "Nevar mainÄ«t lietotÄja tipu paÅ¡a lomai"
#: httpconf.php:189 httpconf.php:433 items.php:901 items.php:981
msgid "Cannot clear history"
-msgstr ""
+msgstr "Nevar notīrīt vēsturi"
#: include/classes/api/services/CDiscoveryRule.php:2514
msgid "Cannot clone graph prototypes."
-msgstr ""
+msgstr "Nevar klonēt grafiku prototipus."
#: include/classes/api/services/CDiscoveryRule.php:2317
#: include/classes/api/services/CDiscoveryRule.php:2373
#: include/classes/api/services/CDiscoveryRule.php:2391
msgid "Cannot clone item prototypes."
-msgstr ""
+msgstr "Nevar klonēt vienumu prototipus."
#: include/classes/api/services/CDiscoveryRule.php:802
msgid "Cannot clone trigger prototypes."
-msgstr ""
+msgstr "Nevar klonēt trigeru prototipus."
#: include/classes/api/services/CEvent.php:848
#, c-format
msgid "Cannot close problem: %1$s."
-msgstr ""
+msgstr "Nevar aizvērt problēmu: %1$s."
#: include/classes/validators/CLdapAuthValidator.php:77
msgid "Cannot connect to LDAP server."
-msgstr ""
+msgstr "Nevar izveidot savienojumu ar LDAP serveri."
#: include/classes/setup/CSetupWizard.php:593
msgid "Cannot connect to the database."
-msgstr ""
+msgstr "Nevar izveidot savienojumu ar datu bÄzi."
#: include/views/js/configuration.httpconf.edit.js.php:182
msgid "Cannot convert POST data:"
-msgstr ""
+msgstr "Nevar konvertēt POST datus:"
#: graphs.php:390
msgid "Cannot copy graph"
msgid_plural "Cannot copy graphs"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Grafiku nav iespējams kopēt"
+msgstr[1] "Grafikus nav iespējams kopēt"
+msgstr[2] "Grafikus nav iespējams kopēt"
#: items.php:965
msgid "Cannot copy item"
msgid_plural "Cannot copy items"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar nokopēt vienumu"
+msgstr[1] "Nevar nokopēt vienumus"
+msgstr[2] "Nevar nokopēt vienumus"
+
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar nokopēt trigeri"
+msgstr[1] "Nevar nokopēt trigerus"
+msgstr[2] "Nevar nokopēt trigerus"
#: include/triggers.inc.php:246
#, c-format
msgid "Cannot copy trigger \"%1$s\", because it has multiple hosts in the expression."
-msgstr ""
+msgstr "Nevar kopÄ“t trigeri \"%1$s\", jo tÄ izteiksmÄ“ ir vairÄkas iekÄrtas."
#: include/triggers.inc.php:226
#, c-format
msgid "Cannot copy trigger \"%1$s:%2$s\", because it has multiple hosts in the expression."
-msgstr ""
+msgstr "Nevar kopÄ“t trigeri \"%1$s:%2$s\", jo tÄ izteiksmÄ“ ir vairÄkas iekÄrtas."
#: app/controllers/CControllerSlaCreate.php:69
#: app/controllers/CControllerSlaCreate.php:127
msgid "Cannot create SLA"
-msgstr ""
+msgstr "Nevar izveidot SLA"
#: include/classes/api/services/CHostPrototype.php:1110
#, c-format
msgid "Cannot create a host prototype on a discovered host \"%1$s\"."
-msgstr ""
+msgstr "Nevar izveidot iekÄrtas prototipu atklÄtajÄ iekÄrtÄ \"%1$s\"."
#: include/db.inc.php:34
msgid "Cannot create another database connection."
-msgstr ""
+msgstr "Nevar izveidot citu datu bÄzes savienojumu."
#: include/classes/api/services/CTrigger.php:1013
#: include/classes/api/services/CTriggerPrototype.php:819
msgid "Cannot create circular dependencies."
-msgstr ""
+msgstr "Nevar izveidot apļveida atkarības."
#: include/classes/api/services/CTrigger.php:985
msgid "Cannot create dependency on trigger itself."
-msgstr ""
+msgstr "Nevar izveidot atkarību no paša trigera."
#: include/classes/api/services/CTriggerPrototype.php:758
msgid "Cannot create dependency on trigger prototype itself."
-msgstr ""
+msgstr "Nevar izveidot atkarību no paša trigera prototipa."
#: app/controllers/CControllerDiscoveryCreate.php:47
#: app/controllers/CControllerDiscoveryCreate.php:92
msgid "Cannot create discovery rule"
-msgstr ""
+msgstr "Nevar izveidot atklÄÅ¡anas noteikumu"
#: app/controllers/CControllerIconMapCreate.php:56
msgid "Cannot create icon map"
-msgstr ""
+msgstr "Nevar izveidot ikonu karti"
#: app/controllers/CControllerProxyConfigRefresh.php:79
msgid "Cannot create request"
-msgstr ""
+msgstr "Nevar izveidot pieprasījumu"
#: app/controllers/CControllerScheduledReportCreate.php:59
msgid "Cannot create scheduled report"
-msgstr ""
+msgstr "Nevar izveidot ieplÄnoto pÄrskatu"
#: app/controllers/CControllerServiceCreate.php:96
#: app/controllers/CControllerServiceCreate.php:184
msgid "Cannot create service"
-msgstr ""
+msgstr "Nevar izveidot servisu"
#: include/classes/api/services/CService.php:2373
#: include/classes/api/services/CService.php:2397
#, c-format
msgid "Cannot create service \"%1$s\": %2$s."
-msgstr ""
+msgstr "Nevar izveidot servisu \"%1$s\": %2$s."
#: include/classes/setup/CSetupWizard.php:878
msgid "Cannot create the configuration file."
-msgstr ""
+msgstr "Nevar izveidot konfigurÄcijas failu."
#: app/controllers/CControllerUserroleCreate.php:103
#: app/controllers/CControllerUserroleCreate.php:150
msgid "Cannot create user role"
-msgstr ""
+msgstr "Nevar izveidot lietotÄja lomu"
#: app/controllers/CControllerTokenDelete.php:76
msgid "Cannot delete API token"
msgid_plural "Cannot delete API tokens"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzēst API talonu"
+msgstr[1] "Nevar izdzēst API talonus"
+msgstr[2] "Nevar izdzēst API talonus"
#: app/controllers/CControllerSlaDelete.php:79
msgid "Cannot delete SLA"
msgid_plural "Cannot delete SLAs"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzēst SLA"
+msgstr[1] "Nevar izdzēst SLA"
+msgstr[2] "Nevar izdzēst SLA"
#: include/classes/api/services/CUser.php:1257
#, c-format
msgid "Cannot delete Zabbix internal user \"%1$s\", try disabling that user."
-msgstr ""
+msgstr "Nevar izdzÄ“st Zabbix iekÅ¡Ä“jo lietotÄju \"%1$s\", mÄ“Ä£iniet atspÄ“jot Å¡o lietotÄju."
#: actionconf.php:323
msgid "Cannot delete action"
-msgstr ""
+msgstr "Nevar izdzēst darbību"
#: include/classes/api/services/CRole.php:375
#, c-format
msgid "Cannot delete assigned user role \"%1$s\"."
-msgstr ""
+msgstr "Nevar izdzÄ“st pieÅ¡Ä·irto lietotÄja lomu \"%1$s\"."
#: app/controllers/CControllerCorrelationDelete.php:68
msgid "Cannot delete correlation"
msgid_plural "Cannot delete correlations"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st korelÄciju"
+msgstr[1] "Nevar izdzÄ“st korelÄcijas"
+msgstr[2] "Nevar izdzÄ“st korelÄcijas"
#: app/controllers/CControllerDashboardDelete.php:63
#: app/controllers/CControllerTemplateDashboardDelete.php:61
msgid "Cannot delete dashboard"
msgid_plural "Cannot delete dashboards"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st informÄcijas paneli"
+msgstr[1] "Nevar izdzÄ“st informÄcijas paneļus"
+msgstr[2] "Nevar izdzÄ“st informÄcijas paneļus"
#: include/classes/api/services/CUserDirectory.php:383
msgid "Cannot delete default user directory."
-msgstr ""
+msgstr "Nevar izdzÄ“st noklusÄ“juma lietotÄja direktoriju."
#: include/classes/api/services/CTrigger.php:882
#: include/classes/api/services/CTriggerPrototype.php:570
msgid "Cannot delete dependency"
-msgstr ""
+msgstr "Nevar izdzēst atkarību"
#: app/controllers/CControllerDiscoveryDelete.php:69 host_discovery.php:416
msgid "Cannot delete discovery rule"
msgid_plural "Cannot delete discovery rules"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st atklÄÅ¡anas noteikumu"
+msgstr[1] "Nevar izdzÄ“st atklÄÅ¡anas noteikumus"
+msgstr[2] "Nevar izdzÄ“st atklÄÅ¡anas noteikumus"
#: host_discovery.php:780
msgid "Cannot delete discovery rules"
-msgstr ""
+msgstr "Nevar izdzÄ“st atklÄÅ¡anas noteikumus"
#: graphs.php:279
msgid "Cannot delete graph"
@@ -2376,63 +2444,62 @@ msgstr "Grafiku nav iespējams izdzēst"
#: graphs.php:271
msgid "Cannot delete graph prototype"
-msgstr ""
+msgstr "Nevar izdzēst grafiku prototipu"
#: graphs.php:312
msgid "Cannot delete graph prototypes"
-msgstr ""
+msgstr "Nevar izdzēst grafiku prototipus"
#: graphs.php:329
msgid "Cannot delete graphs"
msgstr "Grafikus nav iespējams izdzēst"
#: hostgroups.php:134 hostgroups.php:156
-#, fuzzy
msgid "Cannot delete group"
msgid_plural "Cannot delete groups"
msgstr[0] "Grupu nav iespējams dzēst"
-msgstr[1] "Grupu nav iespējams dzēst"
-msgstr[2] "Grupu nav iespējams dzēst"
+msgstr[1] "Grupas nav iespējams dzēst"
+msgstr[2] "Grupas nav iespējams dzēst"
#: app/controllers/CControllerHostMassDelete.php:74
msgid "Cannot delete host"
-msgstr ""
+msgstr "Nevar izdzÄ“st iekÄrtu"
#: include/classes/api/services/CHost.php:1379
#, c-format
msgid "Cannot delete host %1$s because maintenance \"%2$s\" must contain at least one host or host group."
msgid_plural "Cannot delete hosts %1$s because maintenance \"%2$s\" must contain at least one host or host group."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st iekÄrtu %1$s, jo uzturÄ“Å¡anai \"%2$s\" ir jÄbÅ«t vismaz vienai iekÄrtai vai iekÄrtu grupai."
+msgstr[1] "Nevar izdzÄ“st iekÄrtas %1$s, jo uzturÄ“Å¡anai \"%2$s\" ir jÄbÅ«t vismaz vienai iekÄrtai vai iekÄrtu grupai."
+msgstr[2] "Nevar izdzÄ“st iekÄrtas %1$s, jo uzturÄ“Å¡anai \"%2$s\" ir jÄbÅ«t vismaz vienai iekÄrtai vai iekÄrtu grupai."
#: app/controllers/CControllerHostGroupDelete.php:75
msgid "Cannot delete host group"
msgid_plural "Cannot delete host groups"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st iekÄrtu grupu"
+msgstr[1] "Nevar izdzÄ“st iekÄrtu grupas"
+msgstr[2] "Nevar izdzÄ“st iekÄrtu grupas"
#: include/classes/api/services/CHostGroup.php:849
#, c-format
msgid "Cannot delete host group %1$s because maintenance \"%2$s\" must contain at least one host or host group."
msgid_plural "Cannot delete host groups %1$s because maintenance \"%2$s\" must contain at least one host or host group."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st iekÄrtu grupu %1$s, jo uzturÄ“Å¡anai \"%2$s\" ir jÄbÅ«t vismaz vienai iekÄrtai vai iekÄrtu grupai."
+msgstr[1] "Nevar izdzÄ“st iekÄrtu grupas %1$s, jo uzturÄ“Å¡anai \"%2$s\" ir jÄbÅ«t vismaz vienai iekÄrtai vai iekÄrtu grupai."
+msgstr[2] "Nevar izdzÄ“st iekÄrtu grupas %1$s, jo uzturÄ“Å¡anai \"%2$s\" ir jÄbÅ«t vismaz vienai iekÄrtai vai iekÄrtu grupai."
#: app/controllers/CControllerHostGroupDelete.php:39
#: app/controllers/CControllerTemplateGroupDelete.php:39
msgid "Cannot delete host groups"
-msgstr ""
+msgstr "Nevar izdzÄ“st iekÄrtu grupas"
#: host_prototypes.php:147 host_prototypes.php:356
msgid "Cannot delete host prototypes"
-msgstr ""
+msgstr "Nevar izdzÄ“st iekÄrtu prototipus"
#: app/controllers/CControllerIconMapDelete.php:65
msgid "Cannot delete icon map"
-msgstr ""
+msgstr "Nevar izdzēst ikonu karti"
#: app/controllers/CControllerImageDelete.php:71
msgid "Cannot delete image"
@@ -2441,46 +2508,46 @@ msgstr "Attēlu nav iespējams izdzēst"
#: include/classes/api/services/CHostInterface.php:636
#, c-format
msgid "Cannot delete interface for discovered host \"%1$s\"."
-msgstr ""
+msgstr "Nevar izdzÄ“st interfeisu atklÄtajai iekÄrtai \"%1$s\"."
#: include/classes/api/services/CHost.php:1142
msgid "Cannot delete inventory."
-msgstr ""
+msgstr "Nevar izdzÄ“st inventÄru."
#: items.php:516
msgid "Cannot delete item"
-msgstr ""
+msgstr "Nevar izdzēst vienumu"
#: disc_prototypes.php:310
msgid "Cannot delete item prototype"
-msgstr ""
+msgstr "Nevar izdzēst vienuma prototipu"
#: disc_prototypes.php:596
msgid "Cannot delete item prototypes"
-msgstr ""
+msgstr "Nevar izdzēst vienumu prototipus"
#: items.php:991
msgid "Cannot delete items"
-msgstr ""
+msgstr "Nevar izdzēst vienumus"
#: maintenance.php:224
msgid "Cannot delete maintenance"
-msgstr ""
+msgstr "Nevar izdzēst apkopi"
#: app/controllers/CControllerMediatypeDelete.php:69
msgid "Cannot delete media type"
msgid_plural "Cannot delete media types"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzēst mēdiju veidu"
+msgstr[1] "Nevar izdzēst mēdiju veidus"
+msgstr[2] "Nevar izdzēst mēdiju veidus"
#: app/controllers/CControllerModuleScan.php:118
#, c-format
msgid "Cannot delete module: %1$s."
msgid_plural "Cannot delete modules: %1$s."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzēst moduli: %1$s."
+msgstr[1] "Nevar izdzēst moduļus: %1$s."
+msgstr[2] "Nevar izdzēst moduļus: %1$s."
#: sysmaps.php:261
msgid "Cannot delete network map"
@@ -2488,33 +2555,33 @@ msgstr "Tīkla karti nav iespējams izdzēst"
#: app/controllers/CControllerProxyDelete.php:39
msgid "Cannot delete proxies"
-msgstr ""
+msgstr "Nevar izdzēst starpniekserverus"
#: app/controllers/CControllerProxyDelete.php:69
msgid "Cannot delete proxy"
msgid_plural "Cannot delete proxies"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzēst starpniekserveri"
+msgstr[1] "Nevar izdzēst starpniekserverus"
+msgstr[2] "Nevar izdzēst starpniekserverus"
#: include/classes/api/services/CRole.php:369
#, c-format
msgid "Cannot delete readonly user role \"%1$s\"."
-msgstr ""
+msgstr "Nevar izdzÄ“st tikai lasÄma lietotÄja lomu \"%1$s\"."
#: app/controllers/CControllerRegExDelete.php:55
msgid "Cannot delete regular expression"
msgid_plural "Cannot delete regular expressions"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st regulÄro izteiksmi"
+msgstr[1] "Nevar izdzÄ“st regulÄrÄs izteiksmes"
+msgstr[2] "Nevar izdzÄ“st regulÄrÄs izteiksmes"
#: app/controllers/CControllerScheduledReportDelete.php:71
msgid "Cannot delete scheduled report"
msgid_plural "Cannot delete scheduled reports"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st ieplÄnoto pÄrskatu"
+msgstr[1] "Nevar izdzÄ“st ieplÄnotos pÄrskatus"
+msgstr[2] "Nevar izdzÄ“st ieplÄnotos pÄrskatus"
#: app/controllers/CControllerScriptDelete.php:69
msgid "Cannot delete script"
@@ -2526,71 +2593,70 @@ msgstr[2] "Skriptu nav iespējams izdzēst"
#: include/classes/api/services/CScript.php:877
#, c-format
msgid "Cannot delete scripts. Script \"%1$s\" is used in action operation \"%2$s\"."
-msgstr ""
+msgstr "Nevar izdzÄ“st skriptus. Skripts \"%1$s\" tiek izmantots darbÄ«bas operÄcijÄ \"%2$s\"."
#: actionconf.php:510
msgid "Cannot delete selected actions"
-msgstr ""
+msgstr "Nevar izdzÄ“st atlasÄ«tÄs darbÄ«bas"
#: app/controllers/CControllerServiceDelete.php:78
-#, fuzzy
msgid "Cannot delete service"
msgid_plural "Cannot delete services"
-msgstr[0] "Servisu nav iespējams izdzēst"
-msgstr[1] "Servisu nav iespējams izdzēst"
-msgstr[2] "Servisu nav iespējams izdzēst"
+msgstr[0] "Nevar izdzēst servisu"
+msgstr[1] "Nevar izdzēst servisus"
+msgstr[2] "Nevar izdzēst servisus"
#: include/classes/api/services/CService.php:455
#: include/classes/api/services/CService.php:470
#, c-format
msgid "Cannot delete service \"%1$s\": %2$s."
-msgstr ""
+msgstr "Nevar izdzēst servisu \"%1$s\": %2$s."
#: templates.php:462 templates.php:476 templates.php:542
msgid "Cannot delete template"
-msgstr ""
+msgstr "Nevar izdzēst veidni"
#: app/controllers/CControllerTemplateGroupDelete.php:75
msgid "Cannot delete template group"
msgid_plural "Cannot delete template groups"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzēst veidņu grupu"
+msgstr[1] "Nevar izdzēst veidņu grupas"
+msgstr[2] "Nevar izdzēst veidņu grupas"
#: include/classes/api/services/CGraphPrototype.php:374
msgid "Cannot delete templated graph prototype."
-msgstr ""
+msgstr "Nevar izdzēst veidņotu grafiku prototipu."
#: include/classes/api/services/CGraph.php:374
msgid "Cannot delete templated graph."
-msgstr ""
+msgstr "Nevar izdzēst veidņotu grafiku."
#: include/classes/api/services/CItemPrototype.php:663
msgid "Cannot delete templated item prototype."
-msgstr ""
+msgstr "Nevar izdzēst veidnes vienuma prototipu."
#: include/classes/api/services/CItem.php:778
msgid "Cannot delete templated item."
-msgstr ""
+msgstr "Nevar izdzēst veidņotu vienumu."
#: include/classes/api/services/CDiscoveryRule.php:581
msgid "Cannot delete templated items."
-msgstr ""
+msgstr "Nevar izdzēst veidņotus vienumus."
#: include/classes/api/services/CTrigger.php:657
#, c-format
msgid "Cannot delete templated trigger \"%1$s:%2$s\"."
-msgstr ""
+msgstr "Nevar izdzēst veidņotu trigeri \"%1$s:%2$s\"."
#: include/classes/api/services/CTriggerPrototype.php:523
#, c-format
msgid "Cannot delete templated trigger prototype \"%1$s:%2$s\"."
-msgstr ""
+msgstr "Nevar izdzēst veidņotu trigera prototipu \"%1$s:%2$s\"."
#: include/classes/api/services/CHttpTest.php:610
#, c-format
msgid "Cannot delete templated web scenario \"%1$s\"."
-msgstr ""
+msgstr "Nevar izdzÄ“st veidņotu tÄ«mekļa scenÄriju \"%1$s\"."
#: triggers.php:444
msgid "Cannot delete trigger"
@@ -2598,11 +2664,11 @@ msgstr "Trigeri nav iespējams izdzēst"
#: trigger_prototypes.php:393
msgid "Cannot delete trigger prototype"
-msgstr ""
+msgstr "Nevar izdzēst trigera prototipu"
#: trigger_prototypes.php:450
msgid "Cannot delete trigger prototypes"
-msgstr ""
+msgstr "Nevar izdzēst trigera prototipus"
#: triggers.php:552
msgid "Cannot delete triggers"
@@ -2611,260 +2677,260 @@ msgstr "Trigerus nav iespējams izdzēst"
#: app/controllers/CControllerUserDelete.php:59
msgid "Cannot delete user"
msgid_plural "Cannot delete users"
-msgstr[0] "LietotÄju nav iespÄ“jams izdzÄ“st"
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st lietotÄju"
+msgstr[1] "Nevar izdzÄ“st lietotÄjus"
+msgstr[2] "Nevar izdzÄ“st lietotÄjus"
#: include/classes/api/services/CUserDirectory.php:398
#, c-format
msgid "Cannot delete user directory \"%1$s\"."
-msgstr ""
+msgstr "Nevar izdzÄ“st lietotÄja direktoriju \"%1$s\"."
#: app/controllers/CControllerUsergroupDelete.php:59
msgid "Cannot delete user group"
msgid_plural "Cannot delete user groups"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st lietotÄju grupu"
+msgstr[1] "Nevar izdzÄ“st lietotÄju grupas"
+msgstr[2] "Nevar izdzÄ“st lietotÄju grupas"
#: app/controllers/CControllerUserroleDelete.php:59
msgid "Cannot delete user role"
msgid_plural "Cannot delete user roles"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar izdzÄ“st lietotÄju lomu"
+msgstr[1] "Nevar izdzÄ“st lietotÄju lomas"
+msgstr[2] "Nevar izdzÄ“st lietotÄju lomas"
#: httpconf.php:177 httpconf.php:442
msgid "Cannot delete web scenario"
-msgstr ""
+msgstr "Nevar izdzÄ“st tÄ«mekļa scenÄriju"
#: app/controllers/CControllerTokenDisable.php:66
msgid "Cannot disable API token"
msgid_plural "Cannot disable API tokens"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspējot API talonu"
+msgstr[1] "Nevar atspējot API talonus"
+msgstr[2] "Nevar atspējot API talonus"
#: app/controllers/CControllerSlaDisable.php:88
msgid "Cannot disable SLA"
msgid_plural "Cannot disable SLAs"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspējot SLA"
+msgstr[1] "Nevar atspējot SLA"
+msgstr[2] "Nevar atspējot SLA"
#: actionconf.php:499
msgid "Cannot disable action"
msgid_plural "Cannot disable actions"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspējot darbību"
+msgstr[1] "Nevar atspējot darbības"
+msgstr[2] "Nevar atspējot darbības"
#: app/controllers/CControllerCorrelationDisable.php:75
msgid "Cannot disable correlation"
msgid_plural "Cannot disable correlations"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspÄ“jot korelÄciju"
+msgstr[1] "Nevar atspÄ“jot korelÄcijas"
+msgstr[2] "Nevar atspÄ“jot korelÄcijas"
#: app/controllers/CControllerDiscoveryDisable.php:74 host_discovery.php:770
msgid "Cannot disable discovery rule"
msgid_plural "Cannot disable discovery rules"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspÄ“jot atklÄÅ¡anas noteikumu"
+msgstr[1] "Nevar atspÄ“jot atklÄÅ¡anas noteikumus"
+msgstr[2] "Nevar atspÄ“jot atklÄÅ¡anas noteikumus"
#: app/controllers/CControllerPopupMassupdateHost.php:447
#: app/controllers/CControllerProxyHostDisable.php:80 hostgroups.php:197
msgid "Cannot disable host"
msgid_plural "Cannot disable hosts"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspÄ“jot iekÄrtu"
+msgstr[1] "Nevar atspÄ“jot iekÄrtas"
+msgstr[2] "Nevar atspÄ“jot iekÄrtas"
#: items.php:925
msgid "Cannot disable item"
msgid_plural "Cannot disable items"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspējot vienumu"
+msgstr[1] "Nevar atspējot vienumus"
+msgstr[2] "Nevar atspējot vienumus"
#: app/controllers/CControllerMediatypeDisable.php:75
msgid "Cannot disable media type"
msgid_plural "Cannot disable media types"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspējot mēdiju veidu"
+msgstr[1] "Nevar atspējot mēdiju veidus"
+msgstr[2] "Nevar atspējot mēdiju veidus"
#: app/controllers/CControllerModuleUpdate.php:165
#, c-format
msgid "Cannot disable module: %1$s."
msgid_plural "Cannot disable modules: %1$s."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspējot moduli: %1$s."
+msgstr[1] "Nevar atspējot moduļus: %1$s."
+msgstr[2] "Nevar atspējot moduļus: %1$s."
#: app/controllers/CControllerScheduledReportDisable.php:78
msgid "Cannot disable scheduled report"
msgid_plural "Cannot disable scheduled reports"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspÄ“jot ieplÄnoto pÄrskatu"
+msgstr[1] "Nevar atspÄ“jot ieplÄnotos pÄrskatus"
+msgstr[2] "Nevar atspÄ“jot ieplÄnotos pÄrskatus"
#: triggers.php:490
msgid "Cannot disable trigger"
msgid_plural "Cannot disable triggers"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspējot trigeri"
+msgstr[1] "Nevar atspējot trigerus"
+msgstr[2] "Nevar atspējot trigerus"
#: httpconf.php:416
msgid "Cannot disable web scenario"
msgid_plural "Cannot disable web scenarios"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atspÄ“jot tÄ«mekļa scenÄriju"
+msgstr[1] "Nevar atspÄ“jot tÄ«mekļa scenÄrijus"
+msgstr[2] "Nevar atspÄ“jot tÄ«mekļa scenÄrijus"
#: app/controllers/CControllerQueueDetails.php:55
#: app/controllers/CControllerQueueOverview.php:53
#: app/controllers/CControllerQueueOverviewProxy.php:53
msgid "Cannot display item queue."
-msgstr ""
+msgstr "Nevar parÄdÄ«t vienumu rindu."
#: chart7.php:91
msgid "Cannot display more than one item with type \"Graph sum\"."
-msgstr ""
+msgstr "Nevar parÄdÄ«t vairÄk nekÄ vienu vienumu ar veidu \"Grafika summa\"."
#: app/controllers/CControllerTokenEnable.php:66
msgid "Cannot enable API token"
msgid_plural "Cannot enable API tokens"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespējot API talonu"
+msgstr[1] "Nevar iespējot API talonus"
+msgstr[2] "Nevar iespējot API talonus"
#: app/controllers/CControllerSlaEnable.php:88
msgid "Cannot enable SLA"
msgid_plural "Cannot enable SLAs"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespējot SLA"
+msgstr[1] "Nevar iespējot SLA"
+msgstr[2] "Nevar iespējot SLA"
#: actionconf.php:498
msgid "Cannot enable action"
msgid_plural "Cannot enable actions"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespējot darbību"
+msgstr[1] "Nevar iespējot darbības"
+msgstr[2] "Nevar iespējot darbības"
#: app/controllers/CControllerCorrelationEnable.php:76
msgid "Cannot enable correlation"
msgid_plural "Cannot enable correlations"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespÄ“jot korelÄciju"
+msgstr[1] "Nevar iespÄ“jot korelÄcijas"
+msgstr[2] "Nevar iespÄ“jot korelÄcijas"
#: app/controllers/CControllerDiscoveryEnable.php:75 host_discovery.php:769
msgid "Cannot enable discovery rule"
msgid_plural "Cannot enable discovery rules"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespÄ“jot atklÄÅ¡anas noteikumu"
+msgstr[1] "Nevar iespÄ“jot atklÄÅ¡anas noteikumus"
+msgstr[2] "Nevar iespÄ“jot atklÄÅ¡anas noteikumus"
#: app/controllers/CControllerPopupMassupdateHost.php:446
#: app/controllers/CControllerProxyHostEnable.php:80 hostgroups.php:196
msgid "Cannot enable host"
msgid_plural "Cannot enable hosts"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespÄ“jot iekÄrtu"
+msgstr[1] "Nevar iespÄ“jot iekÄrtas"
+msgstr[2] "Nevar iespÄ“jot iekÄrtas"
#: items.php:924
msgid "Cannot enable item"
msgid_plural "Cannot enable items"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespējot vienumu"
+msgstr[1] "Nevar iespējot vienumus"
+msgstr[2] "Nevar iespējot vienumus"
#: app/controllers/CControllerMediatypeEnable.php:75
msgid "Cannot enable media type"
msgid_plural "Cannot enable media types"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespējot mēdiju veidu"
+msgstr[1] "Nevar iespējot mēdiju veidus"
+msgstr[2] "Nevar iespējot mēdiju veidus"
#: app/controllers/CControllerModuleUpdate.php:160
#, c-format
msgid "Cannot enable module: %1$s."
msgid_plural "Cannot enable modules: %1$s."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespējot moduli: %1$s."
+msgstr[1] "Nevar iespējot moduļus: %1$s."
+msgstr[2] "Nevar iespējot moduļus: %1$s."
#: app/controllers/CControllerScheduledReportEnable.php:78
msgid "Cannot enable scheduled report"
msgid_plural "Cannot enable scheduled reports"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespÄ“jot ieplÄnoto pÄrskatu"
+msgstr[1] "Nevar iespÄ“jot ieplÄnotos pÄrskatus"
+msgstr[2] "Nevar iespÄ“jot ieplÄnotos pÄrskatus"
#: triggers.php:489
msgid "Cannot enable trigger"
msgid_plural "Cannot enable triggers"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespējot trigeri"
+msgstr[1] "Nevar iespējot trigerus"
+msgstr[2] "Nevar iespējot trigerus"
#: httpconf.php:415
msgid "Cannot enable web scenario"
msgid_plural "Cannot enable web scenarios"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar iespÄ“jot tÄ«mekļa scenÄriju"
+msgstr[1] "Nevar iespÄ“jot tÄ«mekļa scenÄrijus"
+msgstr[2] "Nevar iespÄ“jot tÄ«mekļa scenÄrijus"
#: app/controllers/CControllerPopupTestTriggerExpr.php:199
msgid "Cannot evaluate expression"
-msgstr ""
+msgstr "Nevar novērtēt izteiksmi"
#: include/classes/api/services/CScript.php:1064
msgid "Cannot execute URL type script."
-msgstr ""
+msgstr "Nevar izpildīt URL tipa skriptu."
#: app/controllers/CControllerItemMassCheckNow.php:243
#: app/controllers/CControllerItemMassCheckNow.php:251
msgid "Cannot execute operation"
-msgstr ""
+msgstr "Nevar izpildīt darbību"
#: app/controllers/CControllerPopupScriptExec.php:123
msgid "Cannot execute script."
-msgstr ""
+msgstr "Nevar izpildīt skriptu."
#: jsLoader.php:287
msgid "Cannot expand macros."
-msgstr ""
+msgstr "Nevar izvērst makro."
#: include/classes/import/importers/CMapImporter.php:270
#, c-format
msgid "Cannot find background image \"%1$s\" used in map \"%2$s\"."
-msgstr ""
+msgstr "Nevar atrast fona attēlu \"%1$s\", kas izmantots kartē \"%2$s\"."
#: include/classes/import/importers/CTemplateDashboardImporter.php:170
#, c-format
msgid "Cannot find graph \"%1$s\" used in dashboard \"%2$s\"."
-msgstr ""
+msgstr "Nevar atrast informÄcijas panelÄ« \"%2$s\" izmantoto grafiku \"%1$s\"."
#: include/classes/import/importers/CMapImporter.php:152
#, c-format
msgid "Cannot find group \"%1$s\" used in map \"%2$s\"."
-msgstr "Nevar atrast grupu \"%1$s\", kas ir izmantota kartē \"%2$s\"."
+msgstr "Nevar atrast kartē \"%2$s\" izmantoto grupu \"%1$s\"."
#: include/classes/import/importers/CTemplateDashboardImporter.php:140
#, c-format
msgid "Cannot find host \"%1$s\" used in dashboard \"%2$s\"."
-msgstr ""
+msgstr "Nevar atrast informÄcijas panelÄ« \"%2$s\" izmantoto iekÄrtu \"%1$s\"."
#: include/classes/import/importers/CMapImporter.php:164
#, c-format
msgid "Cannot find host \"%1$s\" used in map \"%2$s\"."
-msgstr ""
+msgstr "Nevar atrast iekÄrtu \"%1$s\", kas izmantots kartÄ“ \"%2$s\"."
#: include/classes/import/CConfigurationImport.php:1211
#, c-format
@@ -2879,6 +2945,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2997,13 +3073,192 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
-msgstr ""
+msgstr "Nevar ievietot trigera izteiksmi"
#: include/classes/api/services/CHost.php:1120
msgid "Cannot link template"
-msgstr ""
+msgstr "Nevar saistīt veidni"
#: include/classes/api/services/CHostBase.php:520
#, c-format
@@ -3113,27 +3368,31 @@ msgstr ""
#, c-format
msgid "Cannot load module at: %1$s."
msgid_plural "Cannot load modules at: %1$s."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar ielÄdÄ“t moduli: %1$s."
+msgstr[1] "Nevar ielÄdÄ“t moduļus: %1$s."
+msgstr[2] "Nevar ielÄdÄ“t moduļus: %1$s."
#: include/classes/api/services/CUser.php:1449
msgid "Cannot log out."
-msgstr ""
+msgstr "Nevar iziet."
#: include/classes/api/services/CHost.php:986
msgid "Cannot mass update host name."
-msgstr ""
+msgstr "Nevar masveidÄ atjauninÄt iekÄrtas nosaukumu."
#: include/classes/api/services/CHost.php:972
msgid "Cannot mass update visible host name."
-msgstr ""
+msgstr "Nevar masveidÄ atjauninÄt redzamo iekÄrtas nosaukumu."
#: include/classes/api/services/CHostBase.php:1080
#, c-format
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3152,19 +3411,19 @@ msgstr ""
#: include/classes/import/readers/CJsonImportReader.php:35
#, c-format
msgid "Cannot read JSON: %1$s."
-msgstr ""
+msgstr "Nevar nolasīt JSON: %1$s."
#: include/classes/import/readers/CXmlImportReader.php:35
#: include/classes/import/readers/CXmlImportReader.php:46
#, c-format
msgid "Cannot read XML: %1$s."
-msgstr ""
+msgstr "Nevar nolasīt XML: %1$s."
#: include/classes/import/readers/CYamlImportReader.php:52
#: include/classes/import/readers/CYamlImportReader.php:55
#, c-format
msgid "Cannot read YAML: %1$s."
-msgstr ""
+msgstr "Nevar nolasīt YAML: %1$s."
#: include/classes/server/CZabbixServer.php:543
#, c-format
@@ -3178,17 +3437,17 @@ msgstr ""
#: include/classes/api/services/CUser.php:556
msgid "Cannot rename guest user."
-msgstr ""
+msgstr "Nevar pÄrdÄ“vÄ“t viesu lietotÄju."
#: include/classes/api/services/CDRule.php:264
#: include/classes/api/services/CDRule.php:414
msgid "Cannot save discovery rule without checks."
-msgstr ""
+msgstr "Nevar saglabÄt atklÄÅ¡anas noteikumu bez pÄrbaudÄ“m."
#: include/classes/helpers/CDashboardHelper.php:466
#, c-format
msgid "Cannot save widget \"%1$s\"."
-msgstr ""
+msgstr "Nevar saglabÄt logrÄ«ku \"%1$s\"."
#: include/classes/server/CZabbixServer.php:484
#, c-format
@@ -3197,27 +3456,67 @@ msgstr ""
#: host_discovery.php:428 host_discovery.php:800 items.php:895 items.php:1011
msgid "Cannot send request"
-msgstr ""
+msgstr "Nevar nosūtīt pieprasījumu"
#: include/classes/api/services/CTask.php:441
#: include/classes/api/services/CTask.php:454
#, c-format
msgid "Cannot send request: %1$s."
-msgstr ""
+msgstr "Nevar nosūtīt pieprasījumu: %1$s."
#: include/classes/api/services/CGraphGeneral.php:535
#, c-format
msgid "Cannot set \"%1$s\" for graph \"%2$s\"."
-msgstr ""
+msgstr "Grafikam \"%2$s\" nevar iestatīt \"%1$s\"."
#: include/classes/api/services/CGraphGeneral.php:542
#, c-format
msgid "Cannot set \"%1$s\" for graph prototype \"%2$s\"."
-msgstr ""
+msgstr "Grafika prototipam \"%2$s\" nevar iestatīt \"%1$s\"."
#: include/classes/api/services/CItemGeneral.php:337
#, c-format
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
+msgstr "Vienumam \"%2$s\" nevar iestatīt \"%1$s\"."
+
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
msgstr ""
#: include/classes/api/services/CHost.php:1037
@@ -3228,7 +3527,7 @@ msgstr ""
#: include/classes/core/CCookieSession.php:127
msgid "Cannot set session cookie."
-msgstr ""
+msgstr "Nevar iestatīt sesijas sīkfailu."
#: include/classes/api/services/CService.php:1403
#, c-format
@@ -3237,32 +3536,32 @@ msgstr ""
#: jsLoader.php:295
msgid "Cannot support notification audio for this device."
-msgstr ""
+msgstr "Šai ierīcei nevar atbalstīt paziņojumu audio."
#: include/classes/api/services/CHostInterface.php:306
msgid "Cannot switch host for interface."
-msgstr ""
+msgstr "Nevar pÄrslÄ“gt iekÄrtu uz interfeisu."
#: app/controllers/CControllerPopupMediatypeTestEdit.php:71
#: app/controllers/CControllerPopupMediatypeTestSend.php:81
msgid "Cannot test disabled media type."
-msgstr ""
+msgstr "Nevar pÄrbaudÄ«t atspÄ“jotu mÄ“diju veidu."
#: app/controllers/CControllerUserUnblock.php:68
msgid "Cannot unblock user"
msgid_plural "Cannot unblock users"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atbloÄ·Ä“t lietotÄju"
+msgstr[1] "Nevar atbloÄ·Ä“t lietotÄjus"
+msgstr[2] "Nevar atbloÄ·Ä“t lietotÄjus"
#: include/classes/api/services/CHostGeneral.php:719
#: include/classes/api/services/CHostGeneral.php:1356
msgid "Cannot unlink and clear Web scenarios."
-msgstr ""
+msgstr "Nevar atsaistÄ«t un notÄ«rÄ«t tÄ«mekļa scenÄrijus."
#: include/classes/api/services/CHost.php:1095
msgid "Cannot unlink template"
-msgstr ""
+msgstr "Nevar atsaistīt veidni"
#: include/classes/api/services/CHostBase.php:331
#, c-format
@@ -3312,7 +3611,7 @@ msgstr ""
#: include/classes/api/services/CAction.php:2636
#, c-format
msgid "Cannot update \"%1$s\" for action \"%2$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt \"%1$s\" darbÄ«bai \"%2$s\"."
#: include/classes/api/services/CGraphGeneral.php:721
#, c-format
@@ -3322,12 +3621,12 @@ msgstr ""
#: include/classes/api/services/CGraphGeneral.php:726
#, c-format
msgid "Cannot update \"%1$s\" for graph prototype \"%2$s\"."
-msgstr ""
+msgstr "Diagrammas prototipam \"%2$s\" nevar atjauninÄt \"%1$s\"."
#: include/classes/api/services/CItemGeneral.php:287
#, c-format
msgid "Cannot update \"%1$s\" for item \"%2$s\"."
-msgstr ""
+msgstr "Vienumam \"%2$s\" nevar atjauninÄt \"%1$s\"."
#: include/classes/api/services/CTriggerGeneral.php:1018
#, c-format
@@ -3354,39 +3653,39 @@ msgstr ""
#: include/classes/api/services/CTrigger.php:842
#, c-format
msgid "Cannot update \"%2$s\" for a discovered trigger \"%1$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt \"%2$s\" atklÄtajam trigerim \"%1$s\"."
#: app/controllers/CControllerTokenUpdate.php:66
#: app/controllers/CControllerTokenUpdate.php:147
msgid "Cannot update API token"
-msgstr ""
+msgstr "Nevar atjauninÄt API talonu"
#: app/controllers/CControllerSlaUpdate.php:70
#: app/controllers/CControllerSlaUpdate.php:138
msgid "Cannot update SLA"
-msgstr ""
+msgstr "Nevar atjauninÄt SLA"
#: include/classes/api/services/CGraphGeneral.php:67
msgid "Cannot update a discovered graph."
-msgstr ""
+msgstr "Nevar atjauninÄt atklÄto grafiku."
#: include/classes/api/services/CHostGroup.php:809
#, c-format
msgid "Cannot update a discovered host group \"%1$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt atklÄto iekÄrtu grupu \"%1$s\"."
#: include/classes/api/services/CHttpTest.php:514
#, c-format
msgid "Cannot update a templated web scenario \"%1$s\": %2$s."
-msgstr ""
+msgstr "Nevar atjauninÄt veidnes tÄ«mekļa scenÄriju \"%1$s\": %2$s."
#: actionconf.php:294
msgid "Cannot update action"
-msgstr ""
+msgstr "Nevar atjauninÄt darbÄ«bu"
#: app/controllers/CControllerAuthenticationUpdate.php:399
msgid "Cannot update authentication"
-msgstr ""
+msgstr "Nevar atjauninÄt autentifikÄciju"
#: app/controllers/CControllerAuditSettingsUpdate.php:45
#: app/controllers/CControllerAuditSettingsUpdate.php:82
@@ -3403,31 +3702,31 @@ msgstr ""
#: app/controllers/CControllerTrigDisplayUpdate.php:59
#: app/controllers/CControllerTrigDisplayUpdate.php:111
msgid "Cannot update configuration"
-msgstr ""
+msgstr "Nevar atjauninÄt konfigurÄciju"
#: app/controllers/CControllerCorrelationCreate.php:47
#: app/controllers/CControllerCorrelationUpdate.php:48
#: app/controllers/CControllerCorrelationUpdate.php:125
msgid "Cannot update correlation"
-msgstr ""
+msgstr "Nevar atjauninÄt korelÄciju"
#: include/classes/api/services/CTrigger.php:701
#: include/classes/api/services/CTrigger.php:836
#, c-format
msgid "Cannot update dependencies of inherited trigger \"%1$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt mantotÄ trigera \"%1$s\" atkarÄ«bas."
#: app/controllers/CControllerDiscoveryUpdate.php:48
#: app/controllers/CControllerDiscoveryUpdate.php:102 host_discovery.php:734
msgid "Cannot update discovery rule"
-msgstr ""
+msgstr "Nevar atjauninÄt atklÄÅ¡anas noteikumu"
#: app/controllers/CControllerPopupAcknowledgeCreate.php:173
msgid "Cannot update event"
msgid_plural "Cannot update events"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atjauninÄt notikumu"
+msgstr[1] "Nevar atjauninÄt notikumus"
+msgstr[2] "Nevar atjauninÄt notikumus"
#: graphs.php:239 graphs.php:292
msgid "Cannot update graph"
@@ -3435,45 +3734,45 @@ msgstr "Grafiku nav iespējams atjaunot"
#: graphs.php:221
msgid "Cannot update graph prototype"
-msgstr ""
+msgstr "Nevar atjauninÄt grafiku prototipu"
#: hostgroups.php:76
msgid "Cannot update group"
-msgstr ""
+msgstr "Nevar atjauninÄt grupu"
#: include/classes/api/services/CHostGroup.php:1337
#, c-format
msgid "Cannot update groups for discovered host \"%1$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt grupas atklÄtajai iekÄrtai \"%1$s\"."
#: app/controllers/CControllerHostUpdate.php:34
#: app/controllers/CControllerHostUpdate.php:153
msgid "Cannot update host"
-msgstr ""
+msgstr "Nevar atjauninÄt iekÄrtu"
#: include/classes/api/services/CHost.php:934
msgid "Cannot update host encryption settings. Connection settings for both directions should be specified."
-msgstr ""
+msgstr "Nevar atjauninÄt iekÄrtas Å¡ifrÄ“Å¡anas iestatÄ«jumus. JÄnorÄda savienojuma iestatÄ«jumi abos virzienos."
#: app/controllers/CControllerHostGroupUpdate.php:43
#: app/controllers/CControllerHostGroupUpdate.php:105
msgid "Cannot update host group"
-msgstr ""
+msgstr "Nevar atjauninÄt iekÄrtu grupu"
#: host_prototypes.php:286 host_prototypes.php:320 host_prototypes.php:341
msgid "Cannot update host prototype"
msgid_plural "Cannot update host prototypes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atjauninÄt iekÄrtas prototipu"
+msgstr[1] "Nevar atjauninÄt iekÄrtas prototipus"
+msgstr[2] "Nevar atjauninÄt iekÄrtas prototipus"
#: app/controllers/CControllerPopupMassupdateHost.php:465
msgid "Cannot update hosts"
-msgstr ""
+msgstr "Nevar atjauninÄt iekÄrtas"
#: app/controllers/CControllerIconMapUpdate.php:73
msgid "Cannot update icon map"
-msgstr ""
+msgstr "Nevar atjauninÄt ikonu karti"
#: app/controllers/CControllerImageUpdate.php:43
#: app/controllers/CControllerImageUpdate.php:111
@@ -3484,73 +3783,73 @@ msgstr "Attēlu nav iespējams atjaunot"
#: include/classes/api/services/CHostInterface.php:385
#, c-format
msgid "Cannot update interface for discovered host \"%1$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt interfeisu atklÄtajai iekÄrtai \"%1$s\"."
#: items.php:879
msgid "Cannot update item"
-msgstr ""
+msgstr "Nevar atjauninÄt vienumu"
#: disc_prototypes.php:556 disc_prototypes.php:583 disc_prototypes.php:617
msgid "Cannot update item prototype"
msgid_plural "Cannot update item prototypes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atjauninÄt vienuma prototipu"
+msgstr[1] "Nevar atjauninÄt vienuma prototipus"
+msgstr[2] "Nevar atjauninÄt vienuma prototipus"
#: app/controllers/CControllerPopupMassupdateItem.php:316
msgid "Cannot update item prototypes"
-msgstr ""
+msgstr "Nevar atjauninÄt vienumu prototipus"
#: app/controllers/CControllerPopupMassupdateItem.php:316
msgid "Cannot update items"
-msgstr ""
+msgstr "Nevar atjauninÄt vienumus"
#: app/controllers/CControllerMacrosUpdate.php:132
msgid "Cannot update macros"
-msgstr ""
+msgstr "Nevar atjauninÄt makro"
#: maintenance.php:119
msgid "Cannot update maintenance"
-msgstr ""
+msgstr "Nevar atjauninÄt apkopi"
#: app/controllers/CControllerMediatypeUpdate.php:77
#: app/controllers/CControllerMediatypeUpdate.php:180
msgid "Cannot update media type"
-msgstr ""
+msgstr "Nevar atjauninÄt mÄ“dija veidu"
#: app/controllers/CControllerModuleUpdate.php:157
#, c-format
msgid "Cannot update module: %1$s."
-msgstr ""
+msgstr "Nevar atjauninÄt moduli: %1$s."
#: sysmaps.php:184
msgid "Cannot update network map"
-msgstr ""
+msgstr "Nevar atjauninÄt tÄ«kla karti"
#: app/controllers/CControllerProxyUpdate.php:58
#: app/controllers/CControllerProxyUpdate.php:117
msgid "Cannot update proxy"
-msgstr ""
+msgstr "Nevar atjauninÄt starpniekserveri"
#: include/classes/api/services/CProxy.php:654
#, c-format
msgid "Cannot update proxy for discovered host \"%1$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt starpniekserveri atklÄtajai iekÄrtai \"%1$s\"."
#: include/classes/api/services/CRole.php:775
#, c-format
msgid "Cannot update readonly user role \"%1$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt tikai lasÄmu lietotÄja lomu \"%1$s\"."
#: app/controllers/CControllerRegExUpdate.php:44
#: app/controllers/CControllerRegExUpdate.php:89
msgid "Cannot update regular expression"
-msgstr ""
+msgstr "Nevar atjauninÄt regulÄro izteiksmi"
#: app/controllers/CControllerScheduledReportUpdate.php:63
#: app/controllers/CControllerScheduledReportUpdate.php:156
msgid "Cannot update scheduled report"
-msgstr ""
+msgstr "Nevar atjauninÄt plÄnoto pÄrskatu"
#: app/controllers/CControllerScriptUpdate.php:61
#: app/controllers/CControllerScriptUpdate.php:170
@@ -3562,12 +3861,12 @@ msgstr "Nevar modificēt skriptu"
#: include/classes/api/services/CScript.php:445
#, c-format
msgid "Cannot update script scope. Script \"%1$s\" is used in action \"%2$s\"."
-msgstr ""
+msgstr "Nevar atjauninÄt skripta tvÄ“rumu. Skripts \"%1$s\" tiek izmantots darbÄ«bÄ \"%2$s\"."
#: app/controllers/CControllerServiceUpdate.php:97
#: app/controllers/CControllerServiceUpdate.php:200
msgid "Cannot update service"
-msgstr ""
+msgstr "Nevar atjauninÄt servisu"
#: include/classes/api/services/CService.php:2310
#: include/classes/api/services/CService.php:2372
@@ -3575,110 +3874,110 @@ msgstr ""
#: include/classes/api/services/CService.php:2430
#, c-format
msgid "Cannot update service \"%1$s\": %2$s."
-msgstr ""
+msgstr "Nevar atjauninÄt servisu \"%1$s\": %2$s."
#: app/controllers/CControllerPopupMassupdateService.php:157
msgid "Cannot update services"
-msgstr ""
+msgstr "Nevar atjauninÄt servisus"
#: include/classes/api/services/CHttpTest.php:538
#: include/classes/api/services/CHttpTest.php:743
#, c-format
msgid "Cannot update step for a templated web scenario \"%1$s\": %2$s."
-msgstr ""
+msgstr "Nevar atjauninÄt soli veidņotam tÄ«mekļa scenÄrijam \"%1$s\": %2$s."
#: templates.php:209
msgid "Cannot update template"
-msgstr ""
+msgstr "Nevar atjauninÄt veidni"
#: app/controllers/CControllerTemplateGroupUpdate.php:41
#: app/controllers/CControllerTemplateGroupUpdate.php:94
msgid "Cannot update template group"
-msgstr ""
+msgstr "Nevar atjauninÄt veidņu grupu"
#: app/controllers/CControllerPopupMassupdateTemplate.php:351
msgid "Cannot update templates"
-msgstr ""
+msgstr "Nevar atjauninÄt veidnes"
#: app/controllers/CControllerPopupMassupdateTrigger.php:210 triggers.php:416
msgid "Cannot update trigger"
-msgstr ""
+msgstr "Nevar atjauninÄt trigeri"
#: include/classes/api/services/CTriggerGeneral.php:1886
#, c-format
msgid "Cannot update trigger \"%1$s\": %2$s."
-msgstr ""
+msgstr "Nevar atjauninÄt trigeri \"%1$s\": %2$s."
#: trigger_prototypes.php:365 trigger_prototypes.php:440
#: trigger_prototypes.php:488
msgid "Cannot update trigger prototype"
msgid_plural "Cannot update trigger prototypes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atjauninÄt trigeru prototipu"
+msgstr[1] "Nevar atjauninÄt trigeru prototipus"
+msgstr[2] "Nevar atjauninÄt trigeru prototipus"
#: include/classes/api/services/CTriggerGeneral.php:1721
#, c-format
msgid "Cannot update trigger prototype \"%1$s\": %2$s."
-msgstr ""
+msgstr "Nevar atjauninÄt trigeru prototipu \"%1$s\": %2$s."
#: app/controllers/CControllerPopupMassupdateTrigger.php:210
msgid "Cannot update trigger prototypes"
-msgstr ""
+msgstr "Nevar atjauninÄt trigeru prototipus"
#: app/controllers/CControllerUserProfileUpdate.php:63
#: app/controllers/CControllerUserProfileUpdate.php:123
#: app/controllers/CControllerUserUpdate.php:67
#: app/controllers/CControllerUserUpdate.php:131
msgid "Cannot update user"
-msgstr "LietotÄju nav iespÄ“jams modificÄ“t"
+msgstr "Nevar atjauninÄt lietotÄju"
#: app/controllers/CControllerUsergroupMassUpdate.php:69
#: app/controllers/CControllerUsergroupUpdate.php:53
#: app/controllers/CControllerUsergroupUpdate.php:105
msgid "Cannot update user group"
msgid_plural "Cannot update user groups"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Nevar atjauninÄt lietotÄju grupu"
+msgstr[1] "Nevar atjauninÄt lietotÄju grupas"
+msgstr[2] "Nevar atjauninÄt lietotÄju grupas"
#: app/controllers/CControllerUserroleUpdate.php:106
#: app/controllers/CControllerUserroleUpdate.php:176
msgid "Cannot update user role"
-msgstr ""
+msgstr "Nevar atjauninÄt lietotÄju lomu"
#: httpconf.php:194
msgid "Cannot update web scenario"
-msgstr ""
+msgstr "Nevar atjauninÄt tÄ«mekļa scenÄriju"
#: app/views/administration.regex.edit.php:51
msgid "Case sensitive"
-msgstr "Reģistrjūtīgs"
+msgstr "Reģistrjutīgs"
#: app/views/administration.authentication.edit.php:130
#: app/views/administration.authentication.edit.php:192
#: app/views/administration.authentication.edit.php:315
msgid "Case-sensitive login"
-msgstr ""
+msgstr "ReÄ£istrjutÄ«ga pieteikÅ¡anÄs"
#: include/locales.inc.php:35
msgid "Catalan (ca_ES)"
-msgstr ""
+msgstr "KatalÄņu (ca_ES)"
#: include/classes/data/CItemData.php:1026
msgid "Catches all SNMP traps that match regex. If regexp is unspecified, catches any trap."
-msgstr ""
+msgstr "Notver visus SNMP trapus, kas atbilst regulÄrai izteiksmei. Ja regexp nav norÄdÄ«ts, noÄ·er jebkuru trapu."
#: include/classes/data/CItemData.php:1022
msgid "Catches all SNMP traps that were not caught by any of snmptrap[] items."
-msgstr ""
+msgstr "Notver visus SNMP trapus, kurus neuztvēra neviens no snmptrap[] vienumiem."
#: include/classes/widgets/forms/CWidgetFormItem.php:92
#: include/classes/widgets/forms/CWidgetFormItem.php:173
#: include/classes/widgets/forms/CWidgetFormItem.php:296
#: include/views/js/monitoring.sysmaps.js.php:35
msgid "Center"
-msgstr ""
+msgstr "Centrēt"
#: app/partials/configuration.host.edit.html.php:433
#: app/partials/configuration.host.edit.html.php:452
@@ -3689,28 +3988,28 @@ msgstr ""
#: include/views/configuration.host.prototype.edit.php:378
#: include/views/configuration.host.prototype.edit.php:394
msgid "Certificate"
-msgstr ""
+msgstr "SertifikÄts"
#: app/partials/monitoring.latest.view.html.php:79
#: app/partials/monitoring.latest.view.html.php:92 include/items.inc.php:1839
#: include/items.inc.php:1843
msgctxt "noun"
msgid "Change"
-msgstr ""
+msgstr "Mainīt"
#: app/partials/hostmacros.inherited.list.html.php:114
#: include/classes/screens/CScreenBase.php:361
#: include/classes/screens/CScreenMap.php:45 jsLoader.php:324
msgctxt "verb"
msgid "Change"
-msgstr ""
+msgstr "Mainīt"
#: app/partials/configuration.host.edit.html.php:464
#: app/views/administration.autoreg.edit.php:81
#: app/views/administration.proxy.edit.php:128
#: include/views/configuration.host.prototype.edit.php:399
msgid "Change PSK"
-msgstr ""
+msgstr "Mainīt PSK"
#: include/classes/widgets/forms/CWidgetFormItem.php:354
#: include/classes/widgets/forms/CWidgetFormItem.php:364
@@ -3718,7 +4017,7 @@ msgstr ""
#: include/classes/widgets/views/widget.item.form.view.php:53
#: include/classes/widgets/views/widget.item.form.view.php:184
msgid "Change indicator"
-msgstr ""
+msgstr "Mainīt indikatoru"
#: app/views/administration.authentication.edit.php:149
#: app/views/administration.mediatype.edit.php:139
@@ -3728,16 +4027,16 @@ msgstr "Mainīt paroli"
#: include/items.inc.php:1844
msgid "Change per second"
-msgstr ""
+msgstr "Izmaiņas sekundē"
#: app/views/popup.acknowledge.edit.php:71
#: include/classes/helpers/CRoleHelper.php:462
msgid "Change severity"
-msgstr ""
+msgstr "MainÄ«t smaguma pakÄpi"
#: include/classes/html/CMacroValue.php:162
msgid "Change type"
-msgstr ""
+msgstr "Mainīt veidu"
#: app/partials/configuration.filter.items.php:139
#: app/views/popup.massupdate.item.php:157 include/items.inc.php:127
@@ -3760,60 +4059,60 @@ msgstr "Simbolu rinda nav iekļauta"
#: app/controllers/CControllerPopupTriggerExpr.php:953
#: app/controllers/CControllerPopupTriggerExpr.php:1141
msgid "Chars"
-msgstr ""
+msgstr "Rakstzīmes"
#: include/hosts.inc.php:234
msgid "Chassis"
-msgstr ""
+msgstr "Å asija"
#: include/classes/data/CItemData.php:1062
msgid "Chassis information. Returns string"
-msgstr ""
+msgstr "InformÄcija par Å¡asiju. Atgriež virkni"
#: app/views/js/configuration.discovery.edit.js.php:388
msgid "Check already exists."
-msgstr ""
+msgstr "PÄrbaude jau pastÄv."
#: include/classes/parsers/C10TriggerExpression.php:542
#, c-format
msgid "Check expression part starting from \"%1$s\"."
-msgstr ""
+msgstr "PÄrbaudiet izteiksmes daļu, sÄkot no \"%1$s\"."
#: include/items.inc.php:1876
msgid "Check for error in JSON"
-msgstr ""
+msgstr "PÄrbaudiet, vai JSON nesatur kļūdas"
#: include/items.inc.php:1880
msgid "Check for error in XML"
-msgstr ""
+msgstr "PÄrbaudiet, vai XML nesatur kļūdas"
#: include/items.inc.php:1884
msgid "Check for error using regular expression"
-msgstr ""
+msgstr "PÄrbaudiet, vai nav kļūdu, izmantojot regulÄro izteiksmi"
#: include/items.inc.php:1888
msgid "Check for not supported value"
-msgstr ""
+msgstr "PÄrbaudiet, vai nav atbalstÄ«ta vÄ“rtÄ«ba"
#: include/classes/setup/CSetupWizard.php:58
#: include/classes/setup/CSetupWizard.php:465
msgid "Check of pre-requisites"
-msgstr ""
+msgstr "PÄrbaudiet priekÅ¡nosacÄ«jumus"
#: include/classes/api/services/CItemGeneral.php:440
#: include/classes/api/services/CItemGeneral.php:447
#: include/classes/api/services/CItemGeneral.php:454
msgid "Check the key, please. Default example was passed."
-msgstr ""
+msgstr "LÅ«dzu, pÄrbaudiet atslÄ“gu. NoklusÄ“juma piemÄ“rs tika nodots."
#: app/views/popup.discovery.check.php:55
msgid "Check type"
-msgstr ""
+msgstr "PÄrbaudes veids"
#: app/views/configuration.discovery.edit.php:76
#: app/views/configuration.discovery.list.php:81
msgid "Checks"
-msgstr ""
+msgstr "PÄrbaudes"
#: include/classes/data/CItemData.php:914
msgid "Checks if DNS service is up. Returns 0 - DNS is down (server did not respond or DNS resolution failed); 1 - DNS is up"
@@ -3857,11 +4156,11 @@ msgstr ""
#: include/classes/api/services/CDRule.php:658
msgid "Checks should be unique."
-msgstr ""
+msgstr "PÄrbaudÄ“m ir jÄbÅ«t unikÄlÄm."
#: app/views/popup.service.edit.php:314 app/views/popup.service.edit.php:327
msgid "Child services"
-msgstr ""
+msgstr "Apakšservisi"
#: include/locales.inc.php:36
msgid "Chinese (zh_CN)"
@@ -3874,44 +4173,44 @@ msgstr "Ķīniešu (zh_TW)"
#: include/classes/import/importers/CTemplateImporter.php:293
#, c-format
msgid "Circular reference in templates: %1$s."
-msgstr ""
+msgstr "Apļveida atsauce veidnēs: %1$s."
#: include/classes/api/services/CHostBase.php:1286
msgid "Circular template linkage is not allowed."
-msgstr ""
+msgstr "Apļveida veidņu saite nav atļauta."
#: include/classes/core/ZBase.php:494
#, c-format
msgid "Class %1$s not found for action %2$s."
-msgstr ""
+msgstr "Darbībai %2$s netika atrasta klase %1$s."
#: include/classes/core/ZBase.php:563
msgid "Class not found."
-msgstr ""
+msgstr "Klase nav atrasta."
#: include/views/configuration.httpconf.list.php:221
#: include/views/configuration.item.list.php:301
msgid "Clear history"
-msgstr ""
+msgstr "Notīrīt vēsturi"
#: include/views/configuration.httpconf.edit.php:263
#: include/views/configuration.item.edit.php:1070
#: include/views/configuration.item.edit.php:1073
msgid "Clear history and trends"
-msgstr ""
+msgstr "Notīrīt vēsturi un tendences"
#: app/views/popup.massupdate.host.php:69
#: app/views/popup.massupdate.template.php:72
msgid "Clear when unlinking"
-msgstr ""
+msgstr "Notīrīt atsaistot"
#: jsLoader.php:150
msgid "Click and drag to desired size."
-msgstr ""
+msgstr "Noklikšķiniet un velciet līdz vajadzīgajam izmēram."
#: jsLoader.php:330
msgid "Click to view or edit"
-msgstr ""
+msgstr "Noklikšķiniet, lai skatītu vai rediģētu"
#: include/classes/widgets/CWidgetConfig.php:53
msgid "Clock"
@@ -3919,7 +4218,7 @@ msgstr "Pulkstenis"
#: include/classes/widgets/forms/CWidgetFormClock.php:72
msgid "Clock type"
-msgstr ""
+msgstr "Pulksteņa tips"
#: app/partials/scheduledreport.formgrid.html.php:225
#: app/views/administration.iconmap.edit.php:139
@@ -3963,36 +4262,36 @@ msgstr "Aizvērt"
#: include/views/configuration.triggers.edit.php:320
#: include/views/configuration.triggers.edit.php:523
msgid "Close expression constructor"
-msgstr ""
+msgstr "Aizvērt izteiksmes konstruktoru"
#: app/views/configuration.correlation.edit.php:157
#: include/classes/helpers/CCorrelationHelper.php:71
msgid "Close new event"
-msgstr ""
+msgstr "Aizvērt jaunu notikumu"
#: app/views/configuration.correlation.edit.php:151
#: include/classes/helpers/CCorrelationHelper.php:70
msgid "Close old events"
-msgstr ""
+msgstr "Aizvērt vecos notikumus"
#: app/views/popup.acknowledge.edit.php:99
msgid "Close problem"
-msgstr ""
+msgstr "Aizvērt problēmu"
#: include/classes/helpers/CRoleHelper.php:464
msgid "Close problems"
-msgstr ""
+msgstr "Aizvērt problēmas"
#: include/classes/html/CCollapsibleUiWidget.php:55
#: include/classes/widgets/CWidgetHelper.php:1152 jsLoader.php:308
#: jsLoader.php:313
msgid "Collapse"
-msgstr ""
+msgstr "Sakļaut"
#: app/partials/layout.htmlpage.aside.php:39
#: app/partials/layout.htmlpage.aside.php:41
msgid "Collapse sidebar"
-msgstr ""
+msgstr "Sakļaut sÄnjoslu"
#: include/classes/widgets/forms/CWidgetFormItem.php:140
#: include/classes/widgets/forms/CWidgetFormItem.php:221
@@ -4004,16 +4303,16 @@ msgstr ""
#: include/views/js/monitoring.sysmaps.js.php:433
#: include/views/js/monitoring.sysmaps.js.php:815
msgid "Color"
-msgstr ""
+msgstr "KrÄsa"
#: include/classes/validators/CColorValidator.php:32 jsLoader.php:289
#, c-format
msgid "Color \"%1$s\" is not correct: expecting hexadecimal color code (6 symbols)."
-msgstr ""
+msgstr "KrÄsa \"%1$s\" nav pareiza: tiek gaidÄ«ts heksadecimÄlais krÄsas kods (6 simboli)."
#: include/views/js/monitoring.sysmaps.js.php:809
msgid "Color (OK)"
-msgstr ""
+msgstr "KrÄsa (OK)"
#: include/classes/widgets/forms/CWidgetForm.php:71
#: include/classes/widgets/forms/CWidgetFormTopHosts.php:114
@@ -4026,7 +4325,7 @@ msgstr "Gala rezultÄts"
#: include/classes/widgets/views/widget.geomap.form.view.php:68
msgid "Comma separated center coordinates and zoom level to display when the widget is initially loaded."
-msgstr ""
+msgstr "Ar komatu atdalÄ«tas centra koordinÄtas un tÄlummaiņas lÄ«menis, kas jÄparÄda, kad logrÄ«ks ir sÄkotnÄ“ji ielÄdÄ“ts."
#: app/views/administration.script.edit.php:175 include/actions.inc.php:1943
#: include/views/administration.auditacts.list.php:105
@@ -4040,45 +4339,45 @@ msgstr "Komandas"
#: app/views/administration.miscconfig.edit.php:133
msgid "Communication with Zabbix server"
-msgstr ""
+msgstr "Saziņa ar Zabbix serveri"
#: include/items.inc.php:1318
msgctxt "SNMP Community"
msgid "Community"
-msgstr ""
+msgstr "Kopiena"
#: app/partials/monitoring.problem.filter.php:263
msgid "Compact view"
-msgstr ""
+msgstr "Kompakts skats"
#: include/classes/core/CComponentRegistry.php:53
#, c-format
msgid "Component %1$s already registered."
-msgstr ""
+msgstr "Komponente %1$s jau reģistrēta."
#: include/classes/core/CComponentRegistry.php:37
#, c-format
msgid "Component %1$s is not registered."
-msgstr ""
+msgstr "Komponente %1$s nav reģistrēta."
#: app/views/administration.housekeeping.edit.php:166
msgid "Compress records older than"
-msgstr ""
+msgstr "Saspiest ierakstus, kas vecÄki par"
#: app/views/administration.proxy.list.php:80
msgid "Compression"
-msgstr ""
+msgstr "Saspiešana"
#: app/views/administration.housekeeping.edit.php:164
#: app/views/administration.housekeeping.edit.php:169
#: app/views/administration.housekeeping.edit.php:174
#: app/views/administration.housekeeping.edit.php:184
msgid "Compression is not supported."
-msgstr ""
+msgstr "Saspiešana netiek atbalstīta."
#: app/views/administration.mediatype.edit.php:321
msgid "Concurrent sessions"
-msgstr ""
+msgstr "Vienlaicīgas sesijas"
#: app/controllers/CControllerPopupTriggerExpr.php:1604
#: app/views/popup.lldoperation.php:59 app/views/popup.lldoverride.php:195
@@ -4123,12 +4422,12 @@ msgstr "KonfigurÄcija"
#: include/classes/data/CItemData.php:1662
msgid "Configuration cache statistics. Cache - buffer (modes: pfree, total, used, free)."
-msgstr ""
+msgstr "KonfigurÄcijas keÅ¡atmiņas statistika. KeÅ¡atmiņa - buferis (režīmi: pfree, total, used, free)."
#: include/classes/setup/CSetupWizard.php:909
#, c-format
msgid "Configuration file \"%1$s\" created."
-msgstr ""
+msgstr "KonfigurÄcijas fails \"%1$s\" izveidots."
#: app/controllers/CControllerGuiEdit.php:96
msgid "Configuration of GUI"
@@ -4136,29 +4435,29 @@ msgstr "GUI konfigurÄcija"
#: actionconf.php:27
msgid "Configuration of actions"
-msgstr ""
+msgstr "DarbÄ«bu konfigurÄcija"
#: app/controllers/CControllerAuditSettingsEdit.php:60
msgid "Configuration of audit log"
-msgstr ""
+msgstr "Audita žurnÄla konfigurÄcija"
#: app/controllers/CControllerAuthenticationEdit.php:196
msgid "Configuration of authentication"
-msgstr ""
+msgstr "AutentifikÄcijas konfigurÄcija"
#: app/controllers/CControllerTemplateDashboardEdit.php:102
#: app/controllers/CControllerTemplateDashboardList.php:93
msgid "Configuration of dashboards"
-msgstr ""
+msgstr "InformÄcijas paneļu konfigurÄcija"
#: app/controllers/CControllerDiscoveryEdit.php:137
#: app/controllers/CControllerDiscoveryList.php:128 host_discovery.php:27
msgid "Configuration of discovery rules"
-msgstr ""
+msgstr "AtklÄÅ¡anas noteikumu konfigurÄcija"
#: graphs.php:27
msgid "Configuration of graph prototypes"
-msgstr ""
+msgstr "Grafiku prototipu konfigurÄcija"
#: graphs.php:27
msgid "Configuration of graphs"
@@ -4166,32 +4465,32 @@ msgstr "Grafiku konfigurÄcija"
#: app/controllers/CControllerHostEdit.php:263
msgid "Configuration of host"
-msgstr ""
+msgstr "IekÄrtas konfigurÄcija"
#: app/controllers/CControllerHostGroupEdit.php:89
msgid "Configuration of host group"
-msgstr ""
+msgstr "IekÄrtu grupas konfigurÄcija"
#: hostgroups.php:25
msgid "Configuration of host groups"
-msgstr ""
+msgstr "IekÄrtu grupu konfigurÄcija"
#: host_prototypes.php:27
msgid "Configuration of host prototypes"
-msgstr ""
+msgstr "IekÄrtu prototipu konfigurÄcija"
#: app/controllers/CControllerHostList.php:358
msgid "Configuration of hosts"
-msgstr ""
+msgstr "IekÄrtu konfigurÄcija"
#: app/controllers/CControllerHousekeepingEdit.php:115
msgid "Configuration of housekeeping"
-msgstr ""
+msgstr "KopÅ¡anas konfigurÄcija"
#: app/controllers/CControllerIconMapEdit.php:98
#: app/controllers/CControllerIconMapList.php:75
msgid "Configuration of icon mapping"
-msgstr ""
+msgstr "Ikonu kartÄ“Å¡anas konfigurÄcija"
#: app/controllers/CControllerImageEdit.php:75
#: app/controllers/CControllerImageList.php:57
@@ -4200,11 +4499,11 @@ msgstr "AttÄ“lu konfigurÄcija"
#: disc_prototypes.php:27
msgid "Configuration of item prototypes"
-msgstr ""
+msgstr "Vienumu prototipu konfigurÄcija"
#: items.php:27
msgid "Configuration of items"
-msgstr ""
+msgstr "Vienumu konfigurÄcija"
#: app/controllers/CControllerMacrosEdit.php:64
msgid "Configuration of macros"
@@ -4212,12 +4511,12 @@ msgstr "Makrosu konfigurÄcija"
#: maintenance.php:27
msgid "Configuration of maintenance periods"
-msgstr ""
+msgstr "Apkopes periodu konfigurÄcija"
#: app/controllers/CControllerMediatypeEdit.php:254
#: app/controllers/CControllerMediatypeList.php:141
msgid "Configuration of media types"
-msgstr ""
+msgstr "MÄ“diju veidu konfigurÄcija"
#: sysmap.php:26 sysmaps.php:26
msgid "Configuration of network maps"
@@ -4231,7 +4530,7 @@ msgstr "Starpniekserveru konfigurÄcija"
#: app/controllers/CControllerRegExEdit.php:111
#: app/controllers/CControllerRegExList.php:53
msgid "Configuration of regular expressions"
-msgstr ""
+msgstr "RegulÄro izteiksmju konfigurÄcija"
#: app/controllers/CControllerScriptEdit.php:208
#: app/controllers/CControllerScriptList.php:197
@@ -4240,11 +4539,11 @@ msgstr "Skriptu konfigurÄcija"
#: app/controllers/CControllerTemplateGroupEdit.php:88
msgid "Configuration of template group"
-msgstr ""
+msgstr "Veidņu grupas konfigurÄcija"
#: app/controllers/CControllerTemplateGroupList.php:123
msgid "Configuration of template groups"
-msgstr ""
+msgstr "Veidņu grupu konfigurÄcija"
#: templates.php:27
msgid "Configuration of templates"
@@ -4252,11 +4551,11 @@ msgstr "Veidņu konfigurÄcija"
#: app/controllers/CControllerTrigDisplayEdit.php:132
msgid "Configuration of trigger displaying options"
-msgstr ""
+msgstr "Trigeru atrÄdÄ«Å¡anas opciju konfigurÄcija"
#: trigger_prototypes.php:27
msgid "Configuration of trigger prototypes"
-msgstr ""
+msgstr "Trigeru prototipu konfigurÄcija"
#: triggers.php:27
msgid "Configuration of triggers"
@@ -4270,7 +4569,7 @@ msgstr "LietotÄju grupu konfigurÄcija"
#: app/controllers/CControllerUserroleEdit.php:187
#: app/controllers/CControllerUserroleList.php:130
msgid "Configuration of user roles"
-msgstr ""
+msgstr "LietotÄju lomu konfigurÄcija"
#: app/controllers/CControllerUserEdit.php:243
#: app/controllers/CControllerUserList.php:170
@@ -4283,7 +4582,7 @@ msgstr "TÄ«mekļa uzraudzÄ«bas konfigurÄcija"
#: app/controllers/CControllerAuditLogList.php:199
msgid "Configuration refresh"
-msgstr ""
+msgstr "KonfigurÄcijas atsvaidzinÄÅ¡ana"
#: app/controllers/CControllerAuditSettingsUpdate.php:78
#: app/controllers/CControllerAutoregUpdate.php:69
@@ -4298,7 +4597,7 @@ msgstr "KonfigurÄcija saglabÄta"
#: include/classes/setup/CSetupWizard.php:62
#: include/classes/setup/CSetupWizard.php:601
msgid "Configure DB connection"
-msgstr ""
+msgstr "Konfigurēt DB savienojumu"
#: app/views/administration.script.edit.php:256
msgid "Confirmation text"
@@ -4310,28 +4609,28 @@ msgstr ""
#: include/classes/setup/CSetupWizard.php:907
msgid "Congratulations! You have successfully installed Zabbix frontend."
-msgstr ""
+msgstr "Apsveicam! Jūs esat veiksmīgi instalējis Zabbix frontend."
#: app/views/administration.proxy.edit.php:51 include/hosts.inc.php:1223
#: include/views/inventory.host.view.php:81
#: include/views/js/monitoring.sysmaps.js.php:794
msgid "Connect to"
-msgstr ""
+msgstr "Pieslēgties pie"
#: include/classes/widgets/CWidgetHelper.php:934
#: include/classes/widgets/CWidgetHelper.php:1009
#: include/classes/widgets/CWidgetHelper.php:1268
msgctxt "missing data function"
msgid "Connected"
-msgstr ""
+msgstr "Savienots"
#: app/views/administration.mediatype.edit.php:81
msgid "Connection security"
-msgstr ""
+msgstr "Savienojuma drošība"
#: app/views/administration.miscconfig.edit.php:141
msgid "Connection timeout"
-msgstr ""
+msgstr "Savienojuma taimauts"
#: include/classes/server/CZabbixServer.php:497
#, c-format
@@ -4345,6 +4644,9 @@ msgid ""
"1. Incorrect \"NodeAddress\" or \"ListenPort\" in the \"zabbix_server.conf\" or server IP/DNS override in the \"zabbix.conf.php\";\n"
"2. Incorrect DNS server configuration.\n"
msgstr ""
+"Savienojums ar Zabbix serveri \"%1$s\" neizdevÄs. IespÄ“jamie iemesli:\n"
+"1. Nepareizs \"NodeAddress\" vai \"ListenPort\" failÄ \"zabbix_server.conf\" vai servera IP/DNS pÄrņemÅ¡ana failÄ \"zabbix.conf.php\";\n"
+"2. Nepareiza DNS servera konfigurÄcija.\n"
#: include/classes/server/CZabbixServer.php:609
#, c-format
@@ -4353,6 +4655,9 @@ msgid ""
"1. Incorrect server IP/DNS in the \"zabbix.conf.php\";\n"
"2. Incorrect DNS server configuration.\n"
msgstr ""
+"Savienojums ar Zabbix serveri \"%1$s\" neizdevÄs. IespÄ“jamie iemesli:\n"
+"1. Nepareizs servera IP/DNS failÄ \"zabbix.conf.php\";\n"
+"2. Nepareiza DNS servera konfigurÄcija.\n"
#: include/classes/server/CZabbixServer.php:598
#, c-format
@@ -4392,7 +4697,7 @@ msgstr ""
#: include/classes/server/CZabbixServer.php:590
msgid "Connection to Zabbix server failed. Incorrect configuration."
-msgstr ""
+msgstr "Savienojums ar Zabbix serveri neizdevÄs. Nepareiza konfigurÄcija."
#: include/classes/setup/CSetupWizard.php:552
msgid "Connection will not be encrypted because it uses a socket file (on Unix) or shared memory (Windows)."
@@ -4400,32 +4705,32 @@ msgstr ""
#: app/views/popup.massupdate.host.php:276
msgid "Connections"
-msgstr ""
+msgstr "Savienojumi"
#: app/partials/configuration.host.edit.html.php:439
#: app/views/popup.massupdate.host.php:237
#: include/views/configuration.host.prototype.edit.php:382
msgid "Connections from host"
-msgstr ""
+msgstr "Savienojumi no iekÄrtas"
#: app/views/administration.proxy.edit.php:102
msgid "Connections from proxy"
-msgstr ""
+msgstr "Savienojumi no starpniekservera"
#: app/partials/configuration.host.edit.html.php:428
#: app/views/popup.massupdate.host.php:229
#: include/views/configuration.host.prototype.edit.php:374
msgid "Connections to host"
-msgstr ""
+msgstr "Savienojumi uz iekÄrtu"
#: app/views/administration.proxy.edit.php:95
msgid "Connections to proxy"
-msgstr ""
+msgstr "Savienojumi uz starpniekserveri"
#: include/views/monitoring.sysmap.list.php:85
#: include/views/monitoring.sysmap.list.php:86
msgid "Constructor"
-msgstr ""
+msgstr "Konstruktors"
#: include/hosts.inc.php:209
msgid "Contact"
@@ -4446,7 +4751,7 @@ msgstr "KontaktinformÄcija"
#: include/views/configuration.maintenance.edit.php:180
#: include/views/js/configuration.maintenance.edit.js.php:33
msgid "Contains"
-msgstr ""
+msgstr "Satur"
#: app/views/administration.iconmap.list.php:37
#: app/views/administration.image.list.php:71
@@ -4496,25 +4801,25 @@ msgstr ""
#: include/views/monitoring.sysmap.list.php:44 report2.php:177
#: tr_events.php:202
msgid "Content controls"
-msgstr ""
+msgstr "Satura vadīklas"
#: include/classes/html/widget/CWidget.php:186
msgid "Content controls: header"
-msgstr ""
+msgstr "Satura vadīklas: galvene"
#: include/html.inc.php:319
msgid "Content menu"
-msgstr ""
+msgstr "Satura izvēlne"
#: app/partials/configuration.host.interface.row.php:104
#: app/views/popup.discovery.check.php:81
#: app/views/popup.itemtestedit.view.php:154 include/items.inc.php:1303
msgid "Context name"
-msgstr ""
+msgstr "Konteksta nosaukums"
#: app/views/popup.lldoverride.php:56
msgid "Continue overrides"
-msgstr ""
+msgstr "TurpinÄt pÄrņemÅ¡anas"
#: include/hosts.inc.php:254
msgid "Contract number"
@@ -4523,12 +4828,12 @@ msgstr "LÄ«guma numurs"
#: include/views/configuration.item.edit.php:467
#: include/views/configuration.item.prototype.edit.php:444
msgid "Convert to JSON"
-msgstr ""
+msgstr "Konvertēt uz JSON"
#: include/views/js/monitoring.sysmaps.js.php:307
#: include/views/js/monitoring.sysmaps.js.php:442
msgid "Coordinates"
-msgstr "KoordinÄtes"
+msgstr "KoordinÄtas"
#: include/views/configuration.copy.elements.php:78
#: include/views/configuration.graph.list.php:248
@@ -4540,49 +4845,49 @@ msgstr "Kopēt"
#: app/views/popup.token.view.php:54
msgid "Copy to clipboard"
-msgstr ""
+msgstr "Kopēt starpliktuvē"
#: app/views/configuration.correlation.edit.php:169
msgid "Correlation"
-msgstr ""
+msgstr "KorelÄcija"
#: include/classes/api/services/CCorrelation.php:536
#, c-format
msgid "Correlation \"%1$s\" already exists."
-msgstr ""
+msgstr "KorelÄcija \"%1$s\" jau pastÄv."
#: app/controllers/CControllerCorrelationCreate.php:108
msgid "Correlation added"
-msgstr ""
+msgstr "KorelÄcija pievienota"
#: app/controllers/CControllerCorrelationDelete.php:65
msgid "Correlation deleted"
msgid_plural "Correlations deleted"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "KorelÄcija izdzÄ“sta"
+msgstr[1] "KorelÄcijas izdzÄ“stas"
+msgstr[2] "KorelÄcijas izdzÄ“stas"
#: app/controllers/CControllerCorrelationDisable.php:72
msgid "Correlation disabled"
msgid_plural "Correlations disabled"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "KorelÄcija atspÄ“jota"
+msgstr[1] "KorelÄcijas atspÄ“jotas"
+msgstr[2] "KorelÄcijas atspÄ“jotas"
#: app/controllers/CControllerCorrelationEnable.php:73
msgid "Correlation enabled"
msgid_plural "Correlations enabled"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "KorelÄcija iespÄ“jota"
+msgstr[1] "KorelÄcijas iespÄ“jotas"
+msgstr[2] "KorelÄcijas iespÄ“jotas"
#: include/events.inc.php:228
msgid "Correlation rule"
-msgstr ""
+msgstr "KorelÄcijas noteikums"
#: app/controllers/CControllerCorrelationUpdate.php:118
msgid "Correlation updated"
-msgstr ""
+msgstr "KorelÄcija atjauninÄta"
#: app/controllers/CControllerPopupTriggerExpr.php:52
#: app/controllers/CControllerPopupTriggerExpr.php:705
@@ -4593,11 +4898,11 @@ msgstr "Skaits"
#: include/classes/data/CItemData.php:1050
msgid "Count of context switches. Returns integer"
-msgstr ""
+msgstr "Konteksta pÄrslÄ“gumu skaits. Atgriež veselu skaitli"
#: include/classes/data/CItemData.php:1138
msgid "Count of directory entries, recursively. Returns integer"
-msgstr ""
+msgstr "Kataloga ierakstu skaits rekursīvi. Atgriež veselu skaitli"
#: include/classes/data/CItemData.php:894
msgid "Count of matched lines in log file monitoring with log rotation support. Returns integer"
@@ -4618,67 +4923,67 @@ msgstr ""
#: app/views/administration.token.list.php:106
#: app/views/administration.user.token.list.php:72
msgid "Create API token"
-msgstr ""
+msgstr "Izveidot API talonu"
#: app/views/sla.list.php:191
msgid "Create SLA"
-msgstr ""
+msgstr "Izveidot SLA"
#: include/views/configuration.action.list.php:64
msgid "Create action"
-msgstr ""
+msgstr "Izveidot darbību"
#: include/classes/helpers/CRoleHelper.php:452
msgid "Create and edit dashboards"
-msgstr ""
+msgstr "Izveidot un rediģēt informÄcijas paneļus"
#: include/classes/helpers/CRoleHelper.php:457
msgid "Create and edit maintenance"
-msgstr ""
+msgstr "Izveidot un rediģēt apkopi"
#: include/classes/helpers/CRoleHelper.php:453
msgid "Create and edit maps"
-msgstr ""
+msgstr "Izveidot un rediģēt kartes"
#: app/views/administration.image.list.php:62
msgid "Create background"
-msgstr ""
+msgstr "Izveidot fonu"
#: app/views/configuration.correlation.list.php:37
msgid "Create correlation"
-msgstr ""
+msgstr "Izveidot korelÄciju"
#: app/views/configuration.dashboard.list.php:77
#: app/views/monitoring.dashboard.list.php:42
msgid "Create dashboard"
-msgstr ""
+msgstr "Izveidot informÄcijas paneli"
#: jsLoader.php:359
msgid "Create dependent discovery rule"
-msgstr ""
+msgstr "Izveidot atkarÄ«gu atklÄÅ¡anas noteikumu"
#: jsLoader.php:358
msgid "Create dependent item"
-msgstr ""
+msgstr "Izveidot atkarīgu vienumu"
#: include/views/configuration.host.prototype.list.php:196
#: include/views/configuration.item.prototype.list.php:205
#: include/views/configuration.trigger.prototype.list.php:204
msgid "Create disabled"
-msgstr ""
+msgstr "Izveidot atspējotu"
#: app/views/configuration.discovery.list.php:37
#: include/views/configuration.host.discovery.list.php:38
msgid "Create discovery rule"
-msgstr ""
+msgstr "Izveidot atklÄÅ¡anas noteikumu"
#: include/views/configuration.host.discovery.list.php:47
msgid "Create discovery rule (select host first)"
-msgstr ""
+msgstr "Izveidot atklÄÅ¡anas noteikumu (vispirms izvÄ“lieties iekÄrtu)"
#: include/views/configuration.host.discovery.list.php:48
msgid "Create discovery rule (select template first)"
-msgstr ""
+msgstr "Izveidot atklÄÅ¡anas noteikumu (vispirms izvÄ“lieties veidni)"
#: app/views/popup.lldoperation.php:80 app/views/popup.massupdate.item.php:324
#: include/views/configuration.host.prototype.edit.php:289
@@ -4691,7 +4996,7 @@ msgstr ""
#: include/views/configuration.trigger.prototype.list.php:67
#: include/views/configuration.trigger.prototype.list.php:201
msgid "Create enabled"
-msgstr ""
+msgstr "Izveidot iespējotu"
#: include/views/configuration.graph.list.php:62
msgid "Create graph"
@@ -4699,57 +5004,57 @@ msgstr "Izveidot grafiku"
#: include/views/configuration.graph.list.php:59
msgid "Create graph (select host first)"
-msgstr ""
+msgstr "Izveidot grafiku (vispirms izvÄ“lieties iekÄrtu)"
#: include/views/configuration.graph.list.php:60
msgid "Create graph (select template first)"
-msgstr ""
+msgstr "Izveidot grafiku (vispirms izvēlieties veidni)"
#: include/views/configuration.graph.list.php:37
msgid "Create graph prototype"
-msgstr ""
+msgstr "Izveidot grafika prototipu"
#: app/views/configuration.host.list.php:39
#: app/views/monitoring.host.view.php:41
msgid "Create host"
-msgstr ""
+msgstr "Izveidot iekÄrtu"
#: include/views/configuration.hostgroups.list.php:33
#: include/views/configuration.hostgroups.list.php:37
msgid "Create host group"
-msgstr ""
+msgstr "Izveidot iekÄrtu grupu"
#: include/views/configuration.host.prototype.list.php:36
msgid "Create host prototype"
-msgstr ""
+msgstr "Izveidot iekÄrtu prototipu"
#: include/views/configuration.host.prototype.list.php:197
msgid "Create hosts from selected prototypes as disabled?"
-msgstr ""
+msgstr "Vai izveidot iekÄrta no atlasÄ«tajiem prototipiem kÄ atspÄ“jotas?"
#: include/views/configuration.host.prototype.list.php:194
msgid "Create hosts from selected prototypes as enabled?"
-msgstr ""
+msgstr "Vai izveidot iekÄrtas no atlasÄ«tajiem prototipiem kÄ iespÄ“jotas?"
#: app/views/administration.image.list.php:61
msgid "Create icon"
-msgstr ""
+msgstr "Izveidot ikonu"
#: app/views/administration.iconmap.list.php:33
msgid "Create icon map"
-msgstr ""
+msgstr "Izveidot ikonu karti"
#: include/views/configuration.item.list.php:38
msgid "Create item"
-msgstr ""
+msgstr "Izveidot vienumu"
#: include/views/configuration.item.list.php:46
msgid "Create item (select host first)"
-msgstr ""
+msgstr "Izveidot vienumu (vispirms izvÄ“lieties iekÄrtu)"
#: include/views/configuration.item.list.php:47
msgid "Create item (select template first)"
-msgstr ""
+msgstr "Izveidot vienumu (vispirms izvēlieties veidni)"
#: include/views/configuration.item.prototype.list.php:36
msgid "Create item prototype"
@@ -4757,15 +5062,15 @@ msgstr "Izveidot veidni"
#: include/views/configuration.item.prototype.list.php:206
msgid "Create items from selected prototypes as disabled?"
-msgstr ""
+msgstr "Vai izveidot vienumus no atlasÄ«tajiem prototipiem kÄ atspÄ“jotus?"
#: include/views/configuration.item.prototype.list.php:203
msgid "Create items from selected prototypes as enabled?"
-msgstr ""
+msgstr "Vai izveidot vienumus no atlasÄ«tajiem prototipiem kÄ iespÄ“jotus?"
#: include/views/configuration.maintenance.list.php:33
msgid "Create maintenance period"
-msgstr ""
+msgstr "Izveidot apkopes periodu"
#: include/views/monitoring.sysmap.list.php:33
msgid "Create map"
@@ -4773,11 +5078,11 @@ msgstr "Izveidot karti"
#: app/views/administration.mediatype.list.php:35
msgid "Create media type"
-msgstr ""
+msgstr "Izveidot mēdiju veidu"
#: app/views/popup.import.php:147 jsLoader.php:356
msgid "Create new"
-msgstr ""
+msgstr "Izveidot jaunu"
#: app/views/administration.proxy.list.php:38
msgid "Create proxy"
@@ -4785,7 +5090,7 @@ msgstr "Izveidot starpniekserveri"
#: app/views/reports.scheduledreport.list.php:36
msgid "Create report"
-msgstr ""
+msgstr "Izveidot atskaiti"
#: app/views/administration.script.list.php:35
msgid "Create script"
@@ -4793,7 +5098,7 @@ msgstr "Izveidot skriptu"
#: app/views/service.list.edit.php:129
msgid "Create service"
-msgstr ""
+msgstr "Izveidot servisu"
#: include/views/configuration.template.list.php:91
msgid "Create template"
@@ -4802,7 +5107,7 @@ msgstr "Izveidot veidni"
#: app/views/configuration.templategroup.list.php:33
#: app/views/configuration.templategroup.list.php:35
msgid "Create template group"
-msgstr ""
+msgstr "Izveidot veidņu grupu"
#: include/views/configuration.triggers.list.php:153 jsLoader.php:357
msgid "Create trigger"
@@ -4810,11 +5115,11 @@ msgstr "Izveidot trigeri"
#: include/views/configuration.triggers.list.php:161
msgid "Create trigger (select host first)"
-msgstr ""
+msgstr "Izveidot trigeri (vispirms izvÄ“lieties iekÄrtu)"
#: include/views/configuration.triggers.list.php:162
msgid "Create trigger (select template first)"
-msgstr ""
+msgstr "Izveidot trigeri (vispirms izvēlieties veidni)"
#: include/views/configuration.trigger.prototype.list.php:36
msgid "Create trigger prototype"
@@ -4838,66 +5143,66 @@ msgstr "Izveidot lietotÄju gupu"
#: app/views/administration.userrole.list.php:35
msgid "Create user role"
-msgstr ""
+msgstr "Izveidot lietotÄju lomu"
#: include/views/configuration.httpconf.list.php:99
msgid "Create web scenario"
-msgstr ""
+msgstr "Izveidot tÄ«mekļa scenÄriju"
#: include/views/configuration.httpconf.list.php:107
msgid "Create web scenario (select host first)"
-msgstr ""
+msgstr "Izveidot tÄ«mekļa scenÄriju (vispirms izvÄ“lieties iekÄrtu)"
#: include/views/configuration.httpconf.list.php:108
msgid "Create web scenario (select template first)"
-msgstr ""
+msgstr "Izveidot tÄ«mekļa scenÄriju (vispirms izvÄ“lieties veidni)"
#: app/partials/service.list.edit.php:57 app/partials/service.list.php:54
#: app/views/administration.token.list.php:137
#: app/views/administration.user.token.list.php:98
#: app/views/popup.service.edit.php:146
msgid "Created at"
-msgstr ""
+msgstr "Izveidots kad"
#: app/views/monitoring.dashboard.list.php:67
#: app/views/reports.scheduledreport.list.php:56
msgid "Created by me"
-msgstr ""
+msgstr "Manis veidots"
#: app/views/administration.token.list.php:138
msgid "Created by user"
-msgstr ""
+msgstr "Izveidojis lietotÄjs"
#: app/views/administration.token.list.php:73
msgid "Created by users"
-msgstr ""
+msgstr "IzveidojuÅ¡i lietotÄji"
#: app/controllers/CControllerPopupMediatypeTestSend.php:172
#: include/items.inc.php:41
msgid "Critical"
-msgstr ""
+msgstr "Kritisks"
#: app/views/proxy.list.php:66
msgid "Current"
-msgstr ""
+msgstr "Pašreizējais"
#: app/partials/popup.operations.php:172
msgid "Current host"
-msgstr ""
+msgstr "PaÅ¡reizÄ“jÄ iekÄrta"
#: app/views/popup.scheduledreport.subscription.php:103
msgid "Current user"
-msgstr ""
+msgstr "PaÅ¡reizÄ“jais lietotÄjs"
#: include/classes/setup/CSetupWizard.php:423
msgid "Current value"
-msgstr ""
+msgstr "PaÅ¡reizÄ“jÄ vÄ“rtÄ«ba"
#: app/views/administration.mediatype.edit.php:329
#: app/views/popup.sla.edit.php:101 include/classes/helpers/CSlaHelper.php:254
#: include/views/configuration.host.prototype.edit.php:253
msgid "Custom"
-msgstr ""
+msgstr "PielÄgots"
#: app/controllers/CControllerPopupLldOverride.php:84
#: app/views/configuration.correlation.edit.php:121
@@ -4905,67 +5210,67 @@ msgstr ""
#: include/views/configuration.action.edit.php:129
#: include/views/configuration.host.discovery.edit.php:754
msgid "Custom expression"
-msgstr ""
+msgstr "PielÄgota izteiksme"
#: app/controllers/CControllerChartsView.php:156
msgid "Custom graphs"
-msgstr ""
+msgstr "PielÄgoti grafiki"
#: app/views/popup.lldoperation.php:169 app/views/popup.massupdate.item.php:275
#: include/views/configuration.host.discovery.edit.php:703
#: include/views/configuration.item.edit.php:817
#: include/views/configuration.item.prototype.edit.php:777
msgid "Custom intervals"
-msgstr ""
+msgstr "PielÄgoti intervÄli"
#: include/maps.inc.php:50
msgid "Custom label"
-msgstr ""
+msgstr "PielÄgota etiÄ·ete"
#: include/classes/api/services/CMap.php:889
#: include/classes/api/services/CMap.php:1361
#, c-format
msgid "Custom label for map \"%2$s\" elements of type \"%1$s\" may not be empty."
-msgstr ""
+msgstr "PielÄgota iezÄ«me kartes \"%2$s\" elementiem, kuru tips ir \"%1$s\", nedrÄ«kst bÅ«t tukÅ¡s."
#: app/controllers/CControllerActionOperationValidate.php:121
#: app/partials/popup.operations.php:145
msgid "Custom message"
-msgstr ""
+msgstr "PielÄgots ziņojums"
#: include/items.inc.php:1836
msgid "Custom multiplier"
-msgstr ""
+msgstr "PielÄgots reizinÄtÄjs"
#: app/views/js/popup.itemtestedit.view.js.php:381 include/forms.inc.php:1262
#: include/forms.inc.php:1502 include/views/js/item.preprocessing.js.php:64
msgid "Custom on fail"
-msgstr ""
+msgstr "PielÄgots neveiksmes gadÄ«jumÄ"
#: include/classes/helpers/CSlaHelper.php:247
msgid "Custom schedule"
-msgstr ""
+msgstr "PielÄgots grafiks"
#: include/items.inc.php:1859
msgid "Custom scripts"
-msgstr ""
+msgstr "PielÄgoti skripti"
#: app/views/administration.trigdisplay.edit.php:156
msgid "Custom severity names affect all locales and require manual translation!"
-msgstr ""
+msgstr "PielÄgoti smaguma nosaukumi ietekmÄ“ visas lokalizÄcijas, un tiem ir nepiecieÅ¡ama manuÄla tulkoÅ¡ana!"
#: include/views/js/monitoring.sysmaps.js.php:118
msgid "Custom size"
-msgstr ""
+msgstr "PielÄgots izmÄ“rs"
#: app/views/administration.miscconfig.edit.php:104
#: include/classes/setup/CSetupWizard.php:563
msgid "CyberArk Vault"
-msgstr ""
+msgstr "CyberArk Vault"
#: app/partials/scheduledreport.formgrid.html.php:95
msgid "Cycle"
-msgstr ""
+msgstr "Cikls"
#: include/locales.inc.php:38
msgid "Czech (cs_CZ)"
@@ -4974,17 +5279,17 @@ msgstr "ÄŒehu (cs_CZ)"
#: jsLoader.php:400
msgctxt "Default color option"
msgid "D"
-msgstr ""
+msgstr "D"
#: jsLoader.php:183
msgctxt "abbreviation of severity level"
msgid "D"
-msgstr ""
+msgstr "D"
#: include/classes/import/validators/C10XmlValidator.php:323
msgctxt "XML date format"
msgid "DD.MM.YY"
-msgstr ""
+msgstr "DD.MM.YY"
#: app/partials/monitoring.host.filter.php:108
#: app/views/configuration.host.list.php:109 app/views/search.php:35
@@ -5008,7 +5313,7 @@ msgstr "Ik dienu"
#: include/classes/core/ZBase.php:359
msgid "Dark"
-msgstr ""
+msgstr "Tumšs"
#: app/controllers/CControllerAuditLogList.php:214
#: app/controllers/CControllerDashboardPrint.php:71
@@ -5024,7 +5329,7 @@ msgstr "Infopanelis"
#: include/classes/api/services/CTemplateDashboard.php:431
#, c-format
msgid "Dashboard \"%1$s\" already exists."
-msgstr ""
+msgstr "InformÄcijas panelis \"%1$s\" jau pastÄv."
#: include/classes/api/services/CDashboardGeneral.php:91
#, c-format
@@ -5034,33 +5339,33 @@ msgstr ""
#: app/controllers/CControllerDashboardUpdate.php:145
#: app/controllers/CControllerTemplateDashboardUpdate.php:139
msgid "Dashboard created"
-msgstr ""
+msgstr "InformÄcijas panelis izveidots"
#: app/controllers/CControllerDashboardDelete.php:60
#: app/controllers/CControllerTemplateDashboardDelete.php:58
msgid "Dashboard deleted"
msgid_plural "Dashboards deleted"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "InformÄcijas panelis izdzÄ“sts"
+msgstr[1] "InformÄcijas paneļi izdzÄ“sti"
+msgstr[2] "InformÄcijas paneļi izdzÄ“sti"
#: app/views/dashboard.page.properties.edit.php:60
msgid "Dashboard page properties"
-msgstr ""
+msgstr "InformÄcijas paneļa lapas Ä«paÅ¡Ä«bas"
#: app/views/dashboard.properties.edit.php:88
msgid "Dashboard properties"
-msgstr ""
+msgstr "InformÄcijas paneļa Ä«paÅ¡Ä«bas"
#: app/views/popup.dashboard.share.edit.php:151
msgid "Dashboard sharing"
-msgstr ""
+msgstr "InformÄcijas paneļa kopÄ«goÅ¡ana"
#: app/controllers/CControllerDashboardShareUpdate.php:94
#: app/controllers/CControllerDashboardUpdate.php:140
#: app/controllers/CControllerTemplateDashboardUpdate.php:134
msgid "Dashboard updated"
-msgstr ""
+msgstr "InformÄcijas panelis atjauninÄts"
#: include/classes/api/services/CReport.php:277
#, c-format
@@ -5084,7 +5389,7 @@ msgstr ""
#: include/views/inventory.host.view.php:168
#: include/views/inventory.host.view.php:172 jsLoader.php:360
msgid "Dashboards"
-msgstr ""
+msgstr "InformÄcijas paneļi"
#: include/graphs.inc.php:63 include/views/js/monitoring.sysmaps.js.php:806
#: include/views/js/monitoring.sysmaps.js.php:896
@@ -5095,12 +5400,12 @@ msgstr "PÄrtraukta lÄ«nija"
#: app/views/popup.tophosts.column.edit.php:58
#: include/classes/widgets/CWidgetHelper.php:587
msgid "Data"
-msgstr ""
+msgstr "Dati"
#: include/classes/helpers/CMenuHelper.php:215
#: include/classes/helpers/CRoleHelper.php:337
msgid "Data collection"
-msgstr ""
+msgstr "Datu vÄkÅ¡ana"
#: include/classes/graphdraw/CLineGraphDraw.php:2214
#: include/classes/graphdraw/CPieGraphDraw.php:770
@@ -5110,7 +5415,7 @@ msgstr "Dati no %1$s. Uzģenerēti %2$s sek."
#: include/views/js/configuration.httpconf.edit.js.php:175
msgid "Data is not properly encoded."
-msgstr ""
+msgstr "Dati nav pareizi kodēti."
#: include/classes/widgets/CWidgetConfig.php:54
msgid "Data overview"
@@ -5120,7 +5425,7 @@ msgstr "Datu pÄrskats"
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:34
#: include/classes/widgets/views/widget.svggraph.form.view.php:304
msgid "Data set"
-msgstr ""
+msgstr "Datu kopa"
#: app/views/administration.audit.settings.edit.php:52
#: app/views/administration.housekeeping.edit.php:102
@@ -5128,40 +5433,40 @@ msgstr ""
#: app/views/administration.housekeeping.edit.php:132
#: app/views/administration.housekeeping.edit.php:149
msgid "Data storage period"
-msgstr ""
+msgstr "Datu uzglabÄÅ¡anas periods"
#: include/classes/setup/CSetupWizard.php:565
#: include/classes/setup/CSetupWizard.php:717
#: include/classes/setup/CSetupWizard.php:976
msgid "Database TLS CA file"
-msgstr ""
+msgstr "Datu bÄzes TLS CA fails"
#: include/classes/setup/CFrontendSetup.php:668
#: include/classes/setup/CSetupWizard.php:575
#: include/classes/setup/CSetupWizard.php:725
#: include/classes/setup/CSetupWizard.php:984
msgid "Database TLS certificate file"
-msgstr ""
+msgstr "Datu bÄzes TLS sertifikÄta fails"
#: include/classes/setup/CFrontendSetup.php:672
msgid "Database TLS certificate files must be read-only"
-msgstr ""
+msgstr "Datu bÄzes TLS sertifikÄtu failiem jÄbÅ«t tikai lasÄmiem"
#: include/classes/setup/CSetupWizard.php:585
#: include/classes/setup/CSetupWizard.php:735
msgid "Database TLS cipher list"
-msgstr ""
+msgstr "Datu bÄzes TLS Å¡ifru saraksts"
#: include/classes/setup/CSetupWizard.php:548
#: include/classes/setup/CSetupWizard.php:710
msgid "Database TLS encryption"
-msgstr ""
+msgstr "Datu bÄzes TLS Å¡ifrÄ“Å¡ana"
#: include/classes/setup/CSetupWizard.php:570
#: include/classes/setup/CSetupWizard.php:721
#: include/classes/setup/CSetupWizard.php:980
msgid "Database TLS key file"
-msgstr ""
+msgstr "Datu bÄzes TLS atslÄ“gas fails"
#: app/partials/administration.system.info.php:121
msgid "Database history tables upgraded"
@@ -5173,12 +5478,12 @@ msgstr ""
#: include/classes/setup/CSetupWizard.php:486
msgid "Database host"
-msgstr ""
+msgstr "Datu bÄzes iekÄrta"
#: include/classes/setup/CSetupWizard.php:580
#: include/classes/setup/CSetupWizard.php:729
msgid "Database host verification"
-msgstr ""
+msgstr "Datu bÄzes iekÄrtas verifikÄcija"
#: include/items.inc.php:94
msgid "Database monitor"
@@ -5239,7 +5544,7 @@ msgstr "Datums, kad aparatÅ«ra iegÄdÄta"
#: app/views/popup.triggerexpr.php:111
msgid "Date and time functions"
-msgstr ""
+msgstr "Datuma un laika funkcijas"
#: app/controllers/CControllerPopupTriggerExpr.php:119
#: include/classes/helpers/CSlaHelper.php:58 report4.php:177
@@ -5249,11 +5554,11 @@ msgstr "Diena"
#: include/classes/helpers/CSlaHelper.php:68
msgctxt "compact table header"
msgid "Day"
-msgstr ""
+msgstr "Diena"
#: include/func.inc.php:2467
msgid "Day before yesterday"
-msgstr ""
+msgstr "Aizvakar"
#: app/views/popup.maintenance.period.php:114
#: app/views/popup.maintenance.period.php:141
@@ -5301,11 +5606,11 @@ msgstr "Decembris"
#: app/controllers/CControllerPopupTriggerExpr.php:1154
#: include/classes/widgets/forms/CWidgetFormItem.php:150
msgid "Decimal places"
-msgstr ""
+msgstr "Cipari aiz komata"
#: include/classes/helpers/CServiceHelper.php:150
msgid "Decrease by"
-msgstr ""
+msgstr "SamazinÄt par"
#: app/views/administration.iconmap.edit.php:109
#: include/classes/widgets/forms/CWidgetForm.php:54 include/hosts.inc.php:31
@@ -5320,7 +5625,7 @@ msgstr "Noklusētais"
#: app/views/dashboard.page.properties.edit.php:48
#, c-format
msgid "Default (%1$s)"
-msgstr ""
+msgstr "Noklusējums (%1$s)"
#: app/controllers/CControllerAuthenticationUpdate.php:134
msgid "Default LDAP server must be specified."
@@ -5328,15 +5633,15 @@ msgstr ""
#: app/views/administration.userrole.edit.php:123
msgid "Default access to new UI elements"
-msgstr ""
+msgstr "NoklusÄ“juma piekļuve jauniem lietotÄja saskarnes elementiem"
#: app/views/administration.userrole.edit.php:343
msgid "Default access to new actions"
-msgstr ""
+msgstr "NoklusÄ“juma piekļuve jaunÄm darbÄ«bÄm"
#: app/views/administration.userrole.edit.php:262
msgid "Default access to new modules"
-msgstr ""
+msgstr "Noklusējuma piekļuve jauniem moduļiem"
#: app/views/administration.authentication.edit.php:30
msgid "Default authentication"
@@ -5344,28 +5649,28 @@ msgstr "NoklusÄ“tÄ autentifikÄcija"
#: app/views/administration.miscconfig.edit.php:58
msgid "Default host inventory mode"
-msgstr ""
+msgstr "NoklusÄ“juma iekÄrtas krÄjumu režīms"
#: app/views/administration.gui.edit.php:73
#: include/classes/setup/CSetupWizard.php:413
msgid "Default language"
-msgstr ""
+msgstr "Noklusējuma valoda"
#: app/views/administration.authentication.edit.php:115
msgid "Default login form"
-msgstr ""
+msgstr "NoklusÄ“juma pieteikÅ¡anÄs forma"
#: app/partials/popup.operations.php:126
msgid "Default media type"
-msgstr ""
+msgstr "Noklusējuma mēdija veids"
#: actionconf.php:52 include/views/configuration.action.edit.php:161
msgid "Default operation step duration"
-msgstr ""
+msgstr "Noklusējuma darbības soļa ilgums"
#: app/views/dashboard.properties.edit.php:79
msgid "Default page display period"
-msgstr ""
+msgstr "NoklusÄ“juma lapas parÄdÄ«Å¡anas periods"
#: app/views/administration.gui.edit.php:85
#: include/classes/setup/CSetupWizard.php:628
@@ -5375,7 +5680,7 @@ msgstr "Noklusētais dizains"
#: app/views/administration.gui.edit.php:78
#: include/classes/setup/CSetupWizard.php:621
msgid "Default time zone"
-msgstr ""
+msgstr "Noklusējuma laika josla"
#: app/views/popup.lldoperation.php:105 app/views/popup.massupdate.item.php:217
msgid "Delay"
@@ -5440,37 +5745,37 @@ msgstr "Dzēst"
#: app/views/js/popup.import.js.php:48
msgid "Delete all elements that are not present in the import file?"
-msgstr ""
+msgstr "Vai dzÄ“st visus elementus, kas nav iekļauti importÄ“Å¡anas failÄ?"
#: include/views/configuration.template.edit.php:226
#: include/views/configuration.template.list.php:293
msgid "Delete and clear"
-msgstr ""
+msgstr "Dzēst un notīrīt"
#: include/views/configuration.template.list.php:294
msgid "Delete and clear selected templates? (Warning: all linked hosts will be cleared!)"
-msgstr ""
+msgstr "Vai dzÄ“st un notÄ«rÄ«t atlasÄ«tÄs veidnes? (BrÄ«dinÄjums: visas saistÄ«tÄs iekÄrtas tiks notÄ«rÄ«tas!)"
#: include/views/configuration.template.edit.php:227
msgid "Delete and clear template? (Warning: all linked hosts will be cleared!)"
-msgstr ""
+msgstr "Vai dzÄ“st un notÄ«rÄ«t veidni? (BrÄ«dinÄjums: visas saistÄ«tÄs iekÄrtas tiks notÄ«rÄ«tas!)"
#: include/views/configuration.action.edit.php:503
msgid "Delete current action?"
-msgstr ""
+msgstr "Vai dzēst pašreizējo darbību?"
#: app/views/configuration.correlation.edit.php:188
msgid "Delete current correlation?"
-msgstr ""
+msgstr "Vai dzÄ“st paÅ¡reizÄ“jo korelÄciju?"
#: jsLoader.php:362
msgid "Delete dashboard?"
-msgstr ""
+msgstr "Vai dzÄ“st informÄcijas paneli?"
#: app/views/configuration.discovery.edit.php:161
#: include/views/configuration.host.discovery.edit.php:1000
msgid "Delete discovery rule?"
-msgstr ""
+msgstr "Vai dzÄ“st atklÄÅ¡anas noteikumu?"
#: include/views/configuration.trigger.prototype.edit.php:252
#: include/views/configuration.trigger.prototype.edit.php:452
@@ -5481,7 +5786,7 @@ msgstr "Dzēst izteiksmi?"
#: include/views/configuration.graph.edit.php:457
msgid "Delete graph prototype?"
-msgstr ""
+msgstr "Vai dzēst grafika prototipu?"
#: include/views/configuration.graph.edit.php:457
msgid "Delete graph?"
@@ -5489,43 +5794,43 @@ msgstr "Dzēst grafiku?"
#: include/views/configuration.item.list.php:302
msgid "Delete history of selected items?"
-msgstr ""
+msgstr "Vai dzēst atlasīto vienumu vēsturi?"
#: include/views/configuration.httpconf.list.php:222
msgid "Delete history of selected web scenarios?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«to tÄ«mekļa scenÄriju vÄ“sturi?"
#: app/views/administration.iconmap.edit.php:144
msgid "Delete icon map?"
-msgstr ""
+msgstr "Vai dzēst ikonu karti?"
#: include/views/configuration.item.prototype.edit.php:923
msgid "Delete item prototype?"
-msgstr ""
+msgstr "Vai dzēst vienuma prototipu?"
#: include/views/configuration.item.edit.php:1078
msgid "Delete item?"
-msgstr ""
+msgstr "Vai dzēst vienumu?"
#: jsLoader.php:286
msgid "Delete links between selected elements?"
-msgstr ""
+msgstr "Vai dzēst saites starp atlasītajiem elementiem?"
#: include/views/configuration.maintenance.edit.php:269
msgid "Delete maintenance period?"
-msgstr ""
+msgstr "Vai dzēst uzturēšanas periodu?"
#: app/views/administration.mediatype.edit.php:368
msgid "Delete media type?"
-msgstr ""
+msgstr "Vai dzēst mēdija veidu?"
#: app/views/popup.import.php:148
msgid "Delete missing"
-msgstr ""
+msgstr "Dzēst trūkstošo"
#: app/views/administration.proxy.edit.php:166
msgid "Delete proxy?"
-msgstr ""
+msgstr "Vai dzēst starpniekserveri?"
#: app/views/administration.regex.edit.php:154
msgid "Delete regular expression?"
@@ -5537,33 +5842,33 @@ msgstr "Vai dzēst skriptu?"
#: app/views/popup.token.edit.php:141
msgid "Delete selected API token?"
-msgstr ""
+msgstr "Vai dzēst atlasīto API talonu?"
#: app/views/js/sla.list.js.php:130 app/views/popup.sla.edit.php:274
msgid "Delete selected SLA?"
-msgstr ""
+msgstr "Vai dzēst atlasīto SLA?"
#: app/views/js/sla.list.js.php:129
msgid "Delete selected SLAs?"
-msgstr ""
+msgstr "Vai dzēst atlasītos SLA?"
#: include/views/configuration.action.list.php:172
msgid "Delete selected actions?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«tÄs darbÄ«bas?"
#: app/views/configuration.correlation.list.php:150
msgid "Delete selected correlations?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«tÄs korelÄcijas?"
#: app/views/configuration.dashboard.list.php:68
#: app/views/monitoring.dashboard.list.php:125
msgid "Delete selected dashboards?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«tos informÄcijas paneļus?"
#: app/views/configuration.discovery.list.php:123
#: include/views/configuration.host.discovery.list.php:337
msgid "Delete selected discovery rules?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«tos atklÄÅ¡anas noteikumus?"
#: jsLoader.php:273
msgid "Delete selected elements?"
@@ -5571,7 +5876,7 @@ msgstr "Vai dzēst iezīmētos elementus?"
#: include/views/configuration.graph.list.php:251
msgid "Delete selected graph prototypes?"
-msgstr ""
+msgstr "Vai dzēst atlasītos grafiku prototipus?"
#: include/views/configuration.graph.list.php:252
msgid "Delete selected graphs?"
@@ -5590,15 +5895,15 @@ msgstr "Vai dzÄ“st iezÄ«mÄ“tÄs grupas?"
#: app/views/js/configuration.hostgroup.list.js.php:104
#: app/views/popup.hostgroup.edit.php:50
msgid "Delete selected host group?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«to iekÄrtu grupu?"
#: include/views/configuration.hostgroups.list.php:205
msgid "Delete selected host groups?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«tÄs iekÄrtu grupas?"
#: include/views/configuration.host.prototype.edit.php:424
msgid "Delete selected host prototype?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«to iekÄrtu prototipu?"
#: include/views/configuration.host.prototype.list.php:200
msgid "Delete selected host prototypes?"
@@ -5688,15 +5993,15 @@ msgstr ""
#: app/views/js/configuration.templategroup.list.js.php:70
#: app/views/popup.templategroup.edit.php:50
msgid "Delete selected template group?"
-msgstr ""
+msgstr "Vai dzēst atlasīto veidņu grupu?"
#: app/views/js/configuration.templategroup.list.js.php:69
msgid "Delete selected template groups?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«tÄs veidņu grupas?"
#: include/views/configuration.template.list.php:292
msgid "Delete selected templates?"
-msgstr ""
+msgstr "Vai dzÄ“st atlasÄ«tÄs veidnes?"
#: app/views/js/administration.token.list.js.php:78
#: app/views/js/administration.user.token.list.js.php:78
@@ -6398,7 +6703,7 @@ msgstr ""
#: include/classes/setup/CSetupWizard.php:884
msgid "Download the configuration file"
-msgstr ""
+msgstr "LejupielÄdÄ“jiet konfigurÄcijas failu"
#: app/partials/service.info.php:61
#: app/views/monitoring.widget.slareport.view.php:100
@@ -6502,7 +6807,7 @@ msgstr ""
#: include/classes/widgets/CWidgetHelper.php:1322
msgid "Each item"
-msgstr ""
+msgstr "Katrs vienums"
#: app/partials/service.list.edit.php:126
#: app/views/administration.user.edit.php:359
@@ -6529,31 +6834,31 @@ msgstr "Rediģēt"
#: app/views/monitoring.dashboard.view.php:114
msgid "Edit dashboard"
-msgstr ""
+msgstr "Rediģēt informÄcijas paneli"
#: app/views/monitoring.map.view.php:59
msgid "Edit map"
-msgstr ""
+msgstr "Rediģēt karti"
#: app/controllers/CControllerPopupLldOperation.php:351
msgid "Edit operation"
-msgstr ""
+msgstr "Rediģēt darbību"
#: jsLoader.php:209
msgid "Edit tree element"
-msgstr ""
+msgstr "Rediģēt koka elementu"
#: app/views/monitoring.dashboard.widget.edit.php:35
msgid "Edit widget"
-msgstr ""
+msgstr "Rediģēt logrīku"
#: app/views/popup.sla.edit.php:113 app/views/sla.list.php:89
msgid "Effective date"
-msgstr ""
+msgstr "SpÄ“kÄ stÄÅ¡anÄs datums"
#: app/partials/hostmacros.inherited.list.html.php:49
msgid "Effective value"
-msgstr ""
+msgstr "SpÄ“kÄ stÄÅ¡anÄs vÄ“rtÄ«ba"
#: include/classes/api/managers/CHistoryManager.php:1376
#: include/classes/api/managers/CHistoryManager.php:1385
@@ -6579,7 +6884,7 @@ msgstr "Elementa vÄrds"
#: include/views/js/monitoring.sysmaps.js.php:372
#: include/views/js/monitoring.sysmaps.js.php:532
msgid "Ellipse"
-msgstr ""
+msgstr "Elipse"
#: include/media.inc.php:24
msgid "Email"
@@ -6587,11 +6892,11 @@ msgstr "E-pasts"
#: app/views/js/administration.mediatype.edit.js.php:397
msgid "Email and password"
-msgstr ""
+msgstr "E-pasts un parole"
#: app/views/administration.mediatype.edit.php:64
msgid "Email provider"
-msgstr ""
+msgstr "E-pasta pakalpojumu sniedzējs"
#: app/views/popup.generic.php:50
msgid "Empty"
@@ -6600,16 +6905,16 @@ msgstr "Tukšs"
#: include/classes/api/services/CHttpTest.php:1029
#, c-format
msgid "Empty SSL certificate file for web scenario \"%1$s\"."
-msgstr ""
+msgstr "TukÅ¡s SSL sertifikÄta fails tÄ«mekļa scenÄrijam \"%1$s\"."
#: include/classes/api/services/CHttpTest.php:1023
#, c-format
msgid "Empty SSL key file for web scenario \"%1$s\"."
-msgstr ""
+msgstr "TukÅ¡s SSL atslÄ“gas fails tÄ«mekļa scenÄrijam \"%1$s\"."
#: include/classes/validators/CColorValidator.php:33
msgid "Empty color."
-msgstr ""
+msgstr "TukÅ¡a krÄsa."
#: include/classes/api/services/CDiscoveryRule.php:1840
#, c-format
@@ -6619,7 +6924,7 @@ msgstr ""
#: include/classes/api/services/CDiscoveryRule.php:1832
#, c-format
msgid "Empty filter condition macro for discovery rule \"%1$s\"."
-msgstr ""
+msgstr "TukÅ¡s filtra nosacÄ«juma makro atklÄÅ¡anas noteikumam \"%1$s\"."
#: include/classes/api/services/CDRule.php:194
#: include/classes/api/services/CDRule.php:320
@@ -6633,11 +6938,11 @@ msgstr ""
#: include/classes/api/services/CMap.php:1034
#: include/classes/api/services/CTrigger.php:804
msgid "Empty input parameter."
-msgstr ""
+msgstr "Tukšs ievades parametrs."
#: include/classes/api/services/CMap.php:1042
msgid "Empty map ID."
-msgstr ""
+msgstr "Tukšs kartes ID."
#: app/views/administration.mediatype.list.php:181
#: app/views/administration.module.list.php:124
@@ -6654,35 +6959,35 @@ msgstr ""
#: include/views/configuration.item.list.php:295
#: include/views/configuration.triggers.list.php:345
msgid "Enable"
-msgstr ""
+msgstr "Iespējot"
#: app/views/administration.authentication.edit.php:110
msgid "Enable HTTP authentication"
-msgstr ""
+msgstr "IespÄ“jot HTTP autentifikÄciju"
#: app/views/administration.authentication.edit.php:156
msgid "Enable LDAP authentication"
-msgstr ""
+msgstr "IespÄ“jot LDAP autentifikÄciju"
#: app/views/administration.authentication.edit.php:215
msgid "Enable SAML authentication"
-msgstr ""
+msgstr "IespÄ“jot SAML autentifikÄciju"
#: app/views/administration.audit.settings.edit.php:44
msgid "Enable audit logging"
-msgstr ""
+msgstr "Iespējot auditēšanas pierakstu veidošanu"
#: app/views/administration.housekeeping.edit.php:161
msgid "Enable compression"
-msgstr ""
+msgstr "Iespējot saspiešanu"
#: app/views/administration.script.edit.php:251
msgid "Enable confirmation"
-msgstr ""
+msgstr "IespÄ“jot apstiprinÄjumu"
#: app/views/administration.usergroup.list.php:226
msgid "Enable debug mode"
-msgstr ""
+msgstr "Iespējot atkļūdošanas režīmu"
#: app/views/administration.usergroup.list.php:226
msgid "Enable debug mode in selected groups?"
@@ -6690,7 +6995,7 @@ msgstr "IespÄ“jot atkļūdoÅ¡anas režīmu iezÄ«mÄ“tajÄs grupÄs?"
#: include/actions.inc.php:694 include/actions.inc.php:1031
msgid "Enable host"
-msgstr ""
+msgstr "IespÄ“jot iekÄrtu"
#: include/classes/widgets/forms/CWidgetFormGraph.php:88
#: include/classes/widgets/forms/CWidgetFormGraphPrototype.php:88
@@ -6698,16 +7003,16 @@ msgstr ""
#: include/classes/widgets/forms/CWidgetFormPlainText.php:78
#: include/classes/widgets/forms/CWidgetFormUrl.php:42
msgid "Enable host selection"
-msgstr ""
+msgstr "IespÄ“jot iekÄrtu atlasi"
#: app/views/configuration.host.list.php:286
msgid "Enable host?"
-msgstr ""
+msgstr "Vai iespÄ“jot iekÄrtu?"
#: app/views/administration.proxy.list.php:184
#: include/views/configuration.hostgroups.list.php:201
msgid "Enable hosts"
-msgstr ""
+msgstr "IespÄ“jot iekÄrtas"
#: app/views/administration.proxy.list.php:185
msgid "Enable hosts monitored by selected proxies?"
@@ -6970,9 +7275,8 @@ msgid "Event ID"
msgstr "Notikuma ID"
#: include/actions.inc.php:61
-#, fuzzy
msgid "Event acknowledged"
-msgstr "Notikums apstiprinÄts"
+msgstr "Notikums atzīts"
#: app/controllers/CControllerAuditLogList.php:213
#: app/views/configuration.correlation.list.php:31
@@ -7115,7 +7419,7 @@ msgstr ""
#: include/actions.inc.php:2127
#: include/views/administration.auditacts.list.php:80
msgid "Executed"
-msgstr ""
+msgstr "Izpildīts"
#: include/items.inc.php:1765
#: include/views/configuration.host.discovery.edit.php:628
@@ -7139,37 +7443,37 @@ msgstr "Izpildes apstiprinÄÅ¡ana"
#: include/classes/widgets/CWidgetHelper.php:659
#: include/classes/widgets/CWidgetHelper.php:725
msgid "Exists"
-msgstr ""
+msgstr "PastÄv"
#: include/classes/html/CCollapsibleUiWidget.php:60
#: include/classes/widgets/CWidgetHelper.php:1152 jsLoader.php:309
#: jsLoader.php:312
msgid "Expand"
-msgstr ""
+msgstr "Izvērst"
#: include/views/monitoring.sysmap.constructor.php:49
msgid "Expand macros"
-msgstr ""
+msgstr "Izvērst makro"
#: app/partials/layout.htmlpage.aside.php:42
#: app/partials/layout.htmlpage.aside.php:44
msgid "Expand sidebar"
-msgstr ""
+msgstr "IzvÄ“rst sÄnjoslu"
#: include/views/monitoring.sysmap.edit.php:154
msgid "Expand single problem"
-msgstr ""
+msgstr "Izvērst vienu problēmu"
#: app/partials/scheduledreport.table.html.php:92
#: app/views/reports.scheduledreport.list.php:64
msgid "Expired"
-msgstr ""
+msgstr "Beidzies termiņš"
#: include/views/configuration.maintenance.list.php:72
#: include/views/configuration.maintenance.list.php:102
msgctxt "maintenance status"
msgid "Expired"
-msgstr ""
+msgstr "Beidzies termiņš"
#: app/partials/scheduledreport.table.html.php:95
#, c-format
@@ -7180,12 +7484,12 @@ msgstr ""
#: app/views/administration.user.token.list.php:93
#: app/views/popup.token.edit.php:102 app/views/popup.token.view.php:60
msgid "Expires at"
-msgstr ""
+msgstr "Termiņš beidzas plkst."
#: app/views/administration.token.list.php:59
#: app/views/administration.user.token.list.php:42
msgid "Expires in less than"
-msgstr ""
+msgstr "Termiņš beidzas pÄ“c mazÄk nekÄ"
#: app/views/popup.generic.php:503 include/graphs.inc.php:27
msgid "Exploded"
@@ -7193,11 +7497,11 @@ msgstr ""
#: include/classes/html/CButtonExport.php:32
msgid "Export"
-msgstr ""
+msgstr "Eksportēt"
#: app/controllers/CControllerExport.php:113
msgid "Export failed"
-msgstr ""
+msgstr "EksportÄ“Å¡ana neizdevÄs"
#: app/views/monitoring.problem.view.php:100
msgid "Export to CSV"
@@ -7275,39 +7579,39 @@ msgstr "FTP"
#: include/classes/setup/CSetupWizard.php:439
msgid "Fail"
-msgstr ""
+msgstr "NeizdevÄs"
#: app/partials/administration.ha.nodes.php:78
#: app/partials/administration.system.info.php:182
#, c-format
msgid "Fail-over delay: %1$s"
-msgstr ""
+msgstr "KļūmjpÄrejas aizkave: %1$s"
#: app/views/monitoring.widget.web.view.php:30 include/actions.inc.php:2139
#: include/views/administration.auditacts.list.php:90
msgid "Failed"
-msgstr ""
+msgstr "NeizdevÄs"
#: app/views/monitoring.widget.web.view.php:34
msgctxt "compact table header"
msgid "Failed"
-msgstr ""
+msgstr "NeizdevÄs"
#: app/controllers/CControllerAuditLogList.php:192
msgid "Failed login"
-msgstr ""
+msgstr "NeizdevÄs pieteikÅ¡anÄs"
#: app/controllers/CControllerDashboardUpdate.php:146
#: app/controllers/CControllerTemplateDashboardUpdate.php:140
#: app/views/js/configuration.dashboard.edit.js.php:155
#: app/views/js/monitoring.dashboard.view.js.php:219
msgid "Failed to create dashboard"
-msgstr ""
+msgstr "NeizdevÄs izveidot informÄcijas paneli"
#: include/views/js/common.item.edit.js.php:203
#: include/views/js/configuration.httpconf.edit.js.php:178
msgid "Failed to parse URL."
-msgstr ""
+msgstr "NeizdevÄs apstrÄdÄt URL."
#: jsLoader.php:137
msgid "Failed to paste dashboard page."
@@ -7355,11 +7659,11 @@ msgstr ""
#: include/classes/widgets/CWidgetConfig.php:56
msgid "Favorite graphs"
-msgstr ""
+msgstr "MīļÄkie grafiki"
#: include/classes/widgets/CWidgetConfig.php:57
msgid "Favorite maps"
-msgstr ""
+msgstr "MīļÄkÄs kartes"
#: include/func.inc.php:237
msgid "Feb"
@@ -7426,7 +7730,7 @@ msgstr ""
#: include/classes/import/readers/CYamlImportReader.php:52
msgid "File is empty"
-msgstr ""
+msgstr "Fails ir tukšs"
#: include/classes/helpers/CUploadFile.php:156
#, c-format
@@ -7459,7 +7763,7 @@ msgstr ""
#: include/classes/widgets/CWidgetHelper.php:995
#: include/classes/widgets/CWidgetHelper.php:1248
msgid "Fill"
-msgstr ""
+msgstr "Aizpildīt"
#: include/graphs.inc.php:57
msgid "Filled region"
@@ -7506,21 +7810,21 @@ msgstr "Filtrs"
#: app/views/js/popup.tabfilter.edit.js.php:57
msgid "Filter deleted"
-msgstr ""
+msgstr "Filtrs izdzēsts"
#: app/controllers/CControllerPopupTabFilterEdit.php:117
msgid "Filter properties"
-msgstr ""
+msgstr "Filtra īpašības"
#: app/controllers/CControllerServiceListGeneral.php:186
msgid "Filter results"
-msgstr ""
+msgstr "Filtra rezultÄti"
#: app/views/popup.lldoverride.php:183
#: include/views/configuration.host.discovery.edit.php:850
#: include/views/configuration.host.discovery.edit.php:979
msgid "Filters"
-msgstr ""
+msgstr "Filtri"
#: include/classes/data/CItemData.php:1182
msgid "Find string in a file. Returns 0 - match not found; 1 - found"
@@ -7550,11 +7854,11 @@ msgstr ""
#: app/controllers/CControllerPopupTriggerExpr.php:268
#: app/controllers/CControllerPopupTriggerExpr.php:297
msgid "Fit"
-msgstr ""
+msgstr "IetilpinÄt"
#: include/views/js/monitoring.sysmaps.js.php:117
msgid "Fit to map"
-msgstr ""
+msgstr "IetilpinÄt kartÄ“"
#: include/views/configuration.graph.edit.php:180
#: include/views/configuration.graph.edit.php:255
@@ -7574,37 +7878,37 @@ msgstr ""
#: include/views/js/common.item.edit.js.php:33
#: include/views/js/configuration.host.discovery.edit.overr.js.php:132
msgid "Flexible"
-msgstr ""
+msgstr "Elastīgs"
#: app/views/popup.httpstep.php:153
#: include/views/configuration.host.discovery.edit.php:390
#: include/views/configuration.item.edit.php:448
#: include/views/configuration.item.prototype.edit.php:426
msgid "Follow redirects"
-msgstr ""
+msgstr "Sekojiet novirzīšanai"
#: include/views/js/monitoring.sysmaps.js.php:384
#: include/views/js/monitoring.sysmaps.js.php:546
msgid "Font"
-msgstr ""
+msgstr "Fonts"
#: include/views/js/monitoring.sysmaps.js.php:558
msgid "Font color"
-msgstr ""
+msgstr "Fonta krÄsa"
#: include/views/js/monitoring.sysmaps.js.php:388
#: include/views/js/monitoring.sysmaps.js.php:552
msgid "Font size"
-msgstr ""
+msgstr "Fonta izmērs"
#: app/views/popup.httpstep.php:85
msgid "Form data"
-msgstr ""
+msgstr "Veidlapas dati"
#: include/classes/widgets/forms/CWidgetFormClock.php:182
#: include/classes/widgets/forms/CWidgetFormClock.php:242
msgid "Format"
-msgstr ""
+msgstr "FormÄts"
#: include/items.inc.php:1769 include/views/configuration.item.edit.php:734
#: include/views/configuration.item.prototype.edit.php:707
@@ -7732,16 +8036,16 @@ msgstr ""
#: app/views/popup.itemtestedit.view.php:251
msgid "Get value"
-msgstr ""
+msgstr "Iegūt vērtību"
#: app/views/js/popup.itemtestedit.view.js.php:503
#: app/views/popup.itemtestedit.view.php:432
msgid "Get value and test"
-msgstr ""
+msgstr "IegÅ«t vÄ“rtÄ«bu un pÄrbaudÄ«t"
#: app/views/popup.itemtestedit.view.php:94
msgid "Get value from host"
-msgstr ""
+msgstr "IegÅ«t vÄ“rtÄ«bu no iekÄrtas"
#: app/controllers/CControllerPopupTestTriggerExpr.php:48
#: include/triggers.inc.php:1143
@@ -8016,12 +8320,11 @@ msgid "Group added"
msgstr "Grupa pievienota"
#: hostgroups.php:134 hostgroups.php:155
-#, fuzzy
msgid "Group deleted"
msgid_plural "Groups deleted"
msgstr[0] "Grupa izdzēsta"
-msgstr[1] "Grupa izdzēsta"
-msgstr[2] "Grupa izdzēsta"
+msgstr[1] "Grupas izdzēstas"
+msgstr[2] "Grupas izdzēstas"
#: app/views/administration.miscconfig.edit.php:40
msgid "Group for discovered hosts"
@@ -8065,20 +8368,20 @@ msgstr ""
#: jsLoader.php:184
msgctxt "abbreviation of severity level"
msgid "H"
-msgstr ""
+msgstr "H"
#: include/translateDefines.inc.php:37
msgid "H:i"
-msgstr ""
+msgstr "H:i"
#: include/classes/graphdraw/CLineGraphDraw.php:960
#: include/translateDefines.inc.php:36
msgid "H:i:s"
-msgstr ""
+msgstr "H:i:s"
#: app/views/administration.mediatype.edit.php:209
msgid "HTML"
-msgstr ""
+msgstr "HTML"
#: include/discovery.inc.php:51
msgid "HTTP"
@@ -8086,7 +8389,7 @@ msgstr "HTTP"
#: include/items.inc.php:95
msgid "HTTP agent"
-msgstr ""
+msgstr "HTTP aģents"
#: include/views/configuration.host.discovery.edit.php:419
#: include/views/configuration.httpconf.edit.php:158
@@ -8097,7 +8400,7 @@ msgstr "HTTP autentifikÄcija"
#: app/views/administration.authentication.edit.php:121
msgid "HTTP login form"
-msgstr ""
+msgstr "HTTP pieteikÅ¡anÄs forma"
#: include/views/configuration.host.discovery.edit.php:409
#: include/views/configuration.httpconf.edit.php:107
@@ -8109,7 +8412,7 @@ msgstr "HTTP starpniekserveris"
#: app/views/administration.authentication.edit.php:335
msgid "HTTP settings"
-msgstr ""
+msgstr "HTTP iestatījumi"
#: include/discovery.inc.php:62
msgid "HTTPS"
@@ -8125,7 +8428,7 @@ msgstr "Aparatūra"
#: include/hosts.inc.php:169
msgid "Hardware (Full details)"
-msgstr ""
+msgstr "AparatÅ«ra (pilna informÄcija)"
#: include/classes/data/CItemData.php:1010
msgid "Hardware sensor reading. Returns float"
@@ -8133,7 +8436,7 @@ msgstr ""
#: include/classes/setup/CSetupWizard.php:513
msgid "HashiCorp Vault"
-msgstr ""
+msgstr "HashiCorp Vault"
#: app/views/popup.httpstep.php:133 app/views/popup.httpstep.php:161
#: app/views/popup.massupdate.item.php:115
@@ -8145,16 +8448,16 @@ msgstr ""
#: include/views/configuration.item.prototype.edit.php:375
#: include/views/configuration.item.prototype.edit.php:437
msgid "Headers"
-msgstr ""
+msgstr "Galvenes"
#: include/classes/helpers/CCookieHelper.php:68
#: include/classes/helpers/CCookieHelper.php:102
msgid "Headers already sent."
-msgstr ""
+msgstr "Galvenes jau nosūtītas."
#: include/locales.inc.php:45
msgid "Hebrew (he_IL)"
-msgstr ""
+msgstr "Ebreju (he_IL)"
#: graphs.php:45 include/views/configuration.graph.edit.php:104
#: include/views/configuration.graph.list.php:162
@@ -8178,7 +8481,7 @@ msgstr "Palīdzība"
#: include/items.inc.php:1856
msgid "Hexadecimal to decimal"
-msgstr ""
+msgstr "HeksadecimÄls uz decimÄlu"
#: include/views/monitoring.sysmap.constructor.php:57 jsLoader.php:263
msgid "Hidden"
@@ -8186,12 +8489,12 @@ msgstr "Slēpts"
#: jsLoader.php:392
msgid "Hide debug"
-msgstr ""
+msgstr "Slēpt atkļūdošanu"
#: include/classes/widgets/forms/CWidgetFormProblemHosts.php:112
#: include/classes/widgets/forms/CWidgetFormProblemsBySv.php:164
msgid "Hide groups without problems"
-msgstr ""
+msgstr "SlÄ“pt grupas bez problÄ“mÄm"
#: include/views/monitoring.history.php:174
msgid "Hide selected"
@@ -8200,12 +8503,12 @@ msgstr "Paslēpt atlasītos"
#: app/partials/layout.htmlpage.aside.php:45
#: app/partials/layout.htmlpage.aside.php:47
msgid "Hide sidebar"
-msgstr ""
+msgstr "SlÄ“pt sÄnjoslu"
#: include/classes/html/CBreadcrumbs.php:40
msgctxt "screen reader"
msgid "Hierarchy"
-msgstr ""
+msgstr "Hierarhija"
#: app/views/administration.trigdisplay.edit.php:137 jsLoader.php:180
msgid "High"
@@ -8214,27 +8517,27 @@ msgstr "Augsts"
#: app/partials/administration.system.info.php:180
#: app/partials/administration.system.info.php:187
msgid "High availability cluster"
-msgstr ""
+msgstr "Augstas pieejamības klasteris"
#: app/controllers/CControllerAuditLogList.php:218
msgid "High availability node"
-msgstr ""
+msgstr "Augstas pieejamības mezgls"
#: include/classes/widgets/forms/CWidgetFormSystemInfo.php:32
msgid "High availability nodes"
-msgstr ""
+msgstr "Augstas pieejamības mezgli"
#: include/classes/core/ZBase.php:361
msgid "High-contrast dark"
-msgstr ""
+msgstr "Augsta kontrasta tumšs"
#: include/classes/core/ZBase.php:360
msgid "High-contrast light"
-msgstr ""
+msgstr "Augsta kontrasta gaišs"
#: app/partials/monitoring.problem.filter.php:284
msgid "Highlight whole row"
-msgstr ""
+msgstr "Iezīmēt visu rindu"
#: app/partials/configuration.filter.items.php:152
#: app/partials/monitoring.latest.view.html.php:74
@@ -8264,7 +8567,7 @@ msgstr ""
#: app/controllers/CControllerAuditLogList.php:198
msgid "History clear"
-msgstr ""
+msgstr "Vēstures notīrīšana"
#: httpconf.php:189 httpconf.php:433 items.php:901 items.php:981
msgid "History cleared"
@@ -8277,7 +8580,7 @@ msgstr "VÄ“stures dzÄ“Å¡ana var aizņemt daudz laika. Vai turpinÄt?"
#: app/views/popup.tophosts.column.edit.php:159
msgid "History data"
-msgstr ""
+msgstr "VÄ“stures dati"
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:47
msgid "History data selection"
@@ -8300,7 +8603,7 @@ msgstr ""
#: app/views/administration.module.edit.php:44
msgid "Homepage"
-msgstr ""
+msgstr "MÄjas lapa"
#: include/classes/widgets/forms/CWidgetFormHostAvail.php:49
#: include/classes/widgets/forms/CWidgetFormProblemsBySv.php:122
@@ -8349,18 +8652,17 @@ msgstr ""
#: include/views/js/monitoring.sysmaps.js.php:167
#: include/views/reports.toptriggers.php:86 jsLoader.php:182 jsLoader.php:265
#: jsLoader.php:373 report2.php:509
-#, fuzzy
msgid "Host"
msgid_plural "Hosts"
msgstr[0] "IekÄrta"
-msgstr[1] "IekÄrta"
-msgstr[2] "IekÄrta"
+msgstr[1] "IekÄrtas"
+msgstr[2] "IekÄrtas"
#: app/views/monitoring.widget.problems.view.php:66
#: app/views/monitoring.widget.problems.view.php:67
msgctxt "compact table header"
msgid "Host"
-msgstr ""
+msgstr "IekÄrta"
#: include/classes/api/services/CHost.php:999
#: include/classes/import/importers/CHostImporter.php:71
@@ -8396,7 +8698,7 @@ msgstr "IekÄrta pievienota"
#: app/controllers/CControllerPopupItemTest.php:1303
#: app/views/popup.itemtestedit.view.php:99
msgid "Host address"
-msgstr ""
+msgstr "IekÄrtas adrese"
#: include/classes/widgets/CWidgetConfig.php:62
msgid "Host availability"
@@ -9176,21 +9478,21 @@ msgstr ""
#: app/controllers/CControllerDashboardWidgetEdit.php:135
#: app/controllers/CControllerWidgetNavTreeItemEdit.php:63
msgid "Inaccessible map"
-msgstr ""
+msgstr "Nepieejama karte"
#: app/controllers/CControllerDashboardWidgetEdit.php:362
msgid "Inaccessible service"
-msgstr ""
+msgstr "Nepieejams serviss"
#: httpconf.php:661 include/graphs.inc.php:274 include/hosts.inc.php:649
#: include/httptest.inc.php:222 include/items.inc.php:916
#: include/triggers.inc.php:2162
msgid "Inaccessible template"
-msgstr ""
+msgstr "Nepieejama veidne"
#: include/triggers.inc.php:2368 include/triggers.inc.php:2376
msgid "Inaccessible trigger"
-msgstr ""
+msgstr "Nepieejams trigeris"
#: app/controllers/CControllerPopupScheduledReportEdit.php:105
#: app/controllers/CControllerPopupScheduledReportList.php:77
@@ -9204,10 +9506,29 @@ msgstr ""
#: include/actions.inc.php:2037 include/classes/helpers/CDashboardHelper.php:39
#: include/events.inc.php:251 include/views/monitoring.sysmap.edit.php:83
msgid "Inaccessible user"
-msgstr ""
+msgstr "Nepieejams lietotÄjs"
#: app/controllers/CControllerScheduledReportEdit.php:231
msgid "Inaccessible user group"
+msgstr "Nepieejama lietotÄju grupa"
+
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
msgstr ""
#: app/partials/js/scheduledreport.subscription.js.php:165
@@ -9218,12 +9539,12 @@ msgstr "Iekļaut"
#: app/views/administration.mediatype.edit.php:242
msgid "Include event menu entry"
-msgstr ""
+msgstr "Iekļaut notikumu izvēlnes ierakstu"
#: app/views/administration.usergroup.edit.php:142
#: app/views/administration.usergroup.edit.php:193
msgid "Include subgroups"
-msgstr ""
+msgstr "Iekļaut apakšgrupas"
#: include/classes/data/CItemData.php:926
msgid "Incoming traffic statistics on network interface. Returns integer"
@@ -9237,7 +9558,7 @@ msgstr ""
#: app/controllers/CControllerMediatypeEnable.php:97
#: app/controllers/CControllerMediatypeEnable.php:108
msgid "Incomplete configuration"
-msgstr ""
+msgstr "NepilnÄ«ga konfigurÄcija"
#: include/classes/api/services/CMap.php:655
#: include/classes/api/services/CMap.php:1138
@@ -10014,16 +10335,16 @@ msgstr ""
#: include/classes/helpers/CServiceHelper.php:149
msgid "Increase by"
-msgstr ""
+msgstr "PalielinÄt par"
#: app/views/popup.acknowledge.edit.php:90 include/actions.inc.php:1774
#: include/actions.inc.php:2216 include/html.inc.php:978
msgid "Indefinitely"
-msgstr ""
+msgstr "Uz nenoteiktu laiku"
#: app/views/popup.tophosts.column.edit.php:152
msgid "Indicators"
-msgstr ""
+msgstr "RÄdÄ«tÄji"
#: include/locales.inc.php:47
msgid "Indonesian (id_ID)"
@@ -10031,7 +10352,7 @@ msgstr "Indonēziešu (id_ID)"
#: include/func.inc.php:1404 include/func.inc.php:1408
msgid "Infinity"
-msgstr ""
+msgstr "Bezgalība"
#: app/controllers/CControllerPopupMediatypeTestSend.php:172
#: app/partials/monitoring.latest.view.html.php:82
@@ -10056,13 +10377,13 @@ msgstr ""
#: include/views/configuration.triggers.edit.php:430
#: include/views/configuration.triggers.list.php:200
msgid "Info"
-msgstr ""
+msgstr "InformÄcija"
#: app/views/monitoring.widget.actionlog.view.php:48
#: app/views/monitoring.widget.problems.view.php:64
msgctxt "compact table header"
msgid "Info"
-msgstr ""
+msgstr "InformÄcija"
#: include/classes/data/CItemData.php:1429
msgid "Info about internal disks of hypervisor required for vmware.datastore.perfcounter, <url> - VMware service URL, <uuid> - VMware hypervisor host name. Returns JSON"
@@ -10083,12 +10404,12 @@ msgstr ""
#: include/views/configuration.host.prototype.edit.php:252
msgid "Inherit"
-msgstr ""
+msgstr "Mantot"
#: app/partials/configuration.filter.items.php:198
#: include/views/configuration.triggers.list.php:112
msgid "Inherited"
-msgstr ""
+msgstr "Mantots"
#: app/partials/configuration.host.edit.html.php:342
msgid "Inherited and host macros"
@@ -10139,7 +10460,7 @@ msgstr ""
#: include/classes/setup/CSetupWizard.php:890
#: include/classes/setup/CSetupWizard.php:913
msgid "Install"
-msgstr ""
+msgstr "UzstÄdÄ«t"
#: setup.php:159
msgid "Installation"
@@ -10151,7 +10472,7 @@ msgstr ""
#: include/classes/helpers/CMenuHelper.php:360
msgid "Integrations"
-msgstr ""
+msgstr "IntegrÄcijas"
#: app/partials/monitoring.host.view.html.php:35
#: app/views/administration.proxy.edit.php:78
@@ -10273,7 +10594,7 @@ msgstr ""
#: app/controllers/CControllerPopupLdapTestEdit.php:44
#: app/controllers/CControllerPopupLdapTestSend.php:50
msgid "Invalid LDAP configuration"
-msgstr ""
+msgstr "NederÄ«ga LDAP konfigurÄcija"
#: include/classes/import/readers/CYamlImportReader.php:55
msgid "Invalid YAML file contents"
@@ -10957,7 +11278,7 @@ msgstr "RÄdÄ«tÄju saraksts"
#: include/classes/widgets/forms/CWidgetFormPlainText.php:41
msgid "Items location"
-msgstr ""
+msgstr "Vienumu atraÅ¡anÄs vieta"
#: app/controllers/CControllerPopupMassupdateItem.php:321
msgid "Items updated"
@@ -10979,7 +11300,7 @@ msgstr "JMX aģents"
#: include/views/configuration.item.edit.php:671
#: include/views/configuration.item.prototype.edit.php:646
msgid "JMX endpoint"
-msgstr ""
+msgstr "JMX galapunkts"
#: include/views/inventory.host.view.php:66
msgid "JMX interfaces"
@@ -10987,37 +11308,37 @@ msgstr "JMX interfeisi"
#: include/classes/html/CButtonExport.php:75
msgid "JSON"
-msgstr ""
+msgstr "JSON"
#: include/classes/mvc/CController.php:231
msgid "JSON array input is expected."
-msgstr ""
+msgstr "Sadaida JSON masīva ievadi."
#: app/views/popup.massupdate.item.php:94
#: include/views/configuration.host.discovery.edit.php:300
#: include/views/configuration.item.edit.php:357
#: include/views/configuration.item.prototype.edit.php:343
msgid "JSON data"
-msgstr ""
+msgstr "JSON dati"
#: include/classes/api/services/CItemGeneral.php:2663
#: include/classes/api/services/CItemGeneral.php:2692
msgid "JSON is expected"
-msgstr ""
+msgstr "Sagaida JSON"
#: include/classes/validators/CNewValidator.php:113
msgid "JSON string is expected"
-msgstr ""
+msgstr "Sagaida JSON virkni"
#: include/classes/core/CJsonRpc.php:146
#, c-format
msgid "JSON-RPC error generation failed. No such error \"%1$s\"."
-msgstr ""
+msgstr "JSON-RPC kļūdu Ä£enerÄ“Å¡ana neizdevÄs. Nav Å¡Ädas kļūdas \"%1$s\"."
#: include/items.inc.php:1824
#: include/views/configuration.host.discovery.edit.php:866
msgid "JSONPath"
-msgstr ""
+msgstr "JSONPath"
#: include/func.inc.php:236
msgid "Jan"
@@ -11039,7 +11360,7 @@ msgstr "JapÄņu (ja_JP)"
#: include/views/configuration.item.prototype.edit.php:300
#: include/views/js/item.preprocessing.js.php:204
msgid "JavaScript"
-msgstr ""
+msgstr "JavaScript"
#: include/func.inc.php:242
msgid "Jul"
@@ -11064,7 +11385,7 @@ msgstr ""
#: include/httptest.inc.php:30
msgid "Kerberos"
-msgstr ""
+msgstr "Kerberos"
#: app/controllers/CControllerPopupGeneric.php:232
#: app/controllers/CControllerPopupGeneric.php:243
@@ -11088,7 +11409,7 @@ msgstr ""
#: include/html.inc.php:171
msgid "Kiosk mode"
-msgstr ""
+msgstr "Kioska režīms"
#: include/locales.inc.php:49
msgid "Korean (ko_KR)"
@@ -11102,7 +11423,7 @@ msgstr "LDAP"
#: app/views/administration.usergroup.edit.php:88
#: app/views/popup.ldap.edit.php:157
msgid "LDAP Server"
-msgstr ""
+msgstr "LDAP Serveris"
#: include/perm.inc.php:49
msgid "LDAP authentication"
@@ -11316,7 +11637,7 @@ msgstr "Latviešu (lv_LV)"
#: include/classes/widgets/forms/CWidgetFormHostAvail.php:48
#: include/classes/widgets/forms/CWidgetFormProblemsBySv.php:121
msgid "Layout"
-msgstr ""
+msgstr "IzkÄrtojums"
#: include/classes/widgets/CWidgetHelper.php:937
#: include/classes/widgets/CWidgetHelper.php:1012
@@ -11334,7 +11655,7 @@ msgstr ""
#: include/views/js/monitoring.sysmaps.js.php:684
#: include/views/monitoring.sysmap.edit.php:251
msgid "Left"
-msgstr ""
+msgstr "Pa kreisi"
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:112
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:125
@@ -11345,16 +11666,16 @@ msgstr ""
#: include/items.inc.php:1816
msgid "Left trim"
-msgstr ""
+msgstr "Apgriezt pa kreisi"
#: include/classes/widgets/views/widget.svggraph.form.view.php:308
msgid "Legend"
-msgstr ""
+msgstr "Leģenda"
#: app/controllers/CControllerPopupTriggerExpr.php:673
#: app/controllers/CControllerPopupTriggerExpr.php:792
msgid "Length"
-msgstr ""
+msgstr "Garums"
#: setup.php:182
msgid "Licensed under"
@@ -11408,39 +11729,39 @@ msgstr ""
#: include/views/js/monitoring.sysmaps.js.php:771
#: include/views/js/monitoring.sysmaps.js.php:812
msgid "Link indicators"
-msgstr ""
+msgstr "Saites indikatori"
#: app/controllers/CControllerPopupLldOperation.php:143
#: app/views/popup.lldoperation.php:238 app/views/popup.massupdate.host.php:74
#: app/views/popup.massupdate.template.php:78
msgid "Link templates"
-msgstr ""
+msgstr "Sasaistīt veidnes"
#: include/actions.inc.php:1035
msgid "Link to template"
-msgstr ""
+msgstr "Saite uz veidni"
#: include/actions.inc.php:736
msgid "Link to templates"
-msgstr ""
+msgstr "Saite uz veidnēm"
#: app/views/monitoring.widget.navtreeitem.edit.php:40
msgid "Linked map"
-msgstr ""
+msgstr "SaistÄ«tÄ karte"
#: include/views/configuration.template.list.php:64
#: include/views/configuration.template.list.php:127
msgid "Linked templates"
-msgstr ""
+msgstr "SaistÄ«tÄs veidnes"
#: include/views/configuration.template.list.php:128
msgid "Linked to templates"
-msgstr ""
+msgstr "Saistīts ar veidnēm"
#: include/views/js/monitoring.sysmaps.js.php:757
#: include/views/js/monitoring.sysmaps.js.php:768
msgid "Links"
-msgstr ""
+msgstr "Saites"
#: include/classes/html/CList.php:39
msgid "List is empty"
@@ -11526,15 +11847,15 @@ msgstr ""
#: include/classes/mvc/CControllerResponse.php:42
msgid "Loading..."
-msgstr ""
+msgstr "Notiek ielÄde..."
#: app/controllers/CControllerWidgetClockView.php:123
msgid "Local"
-msgstr ""
+msgstr "Vietējais"
#: include/classes/widgets/fields/CWidgetFieldTimeZone.php:58
msgid "Local default"
-msgstr ""
+msgstr "Vietējais noklusējuma"
#: include/classes/screens/CScreenHistory.php:267
#: include/classes/widgets/forms/CWidgetFormClock.php:32
@@ -11573,7 +11894,7 @@ msgstr ""
#: include/views/configuration.item.edit.php:902
#: include/views/configuration.item.prototype.edit.php:812
msgid "Log time format"
-msgstr ""
+msgstr "ŽurnÄla laika formÄts"
#: app/views/administration.miscconfig.edit.php:82
msgid "Log unmatched SNMP traps"
@@ -11588,23 +11909,23 @@ msgstr "Pieslēgties"
#: app/views/administration.miscconfig.edit.php:88
msgid "Login attempts"
-msgstr ""
+msgstr "PieteikÅ¡anÄs mÄ“Ä£inÄjumi"
#: app/views/administration.miscconfig.edit.php:94
msgid "Login blocking interval"
-msgstr ""
+msgstr "PieteikÅ¡anÄs bloÄ·Ä“Å¡anas intervÄls"
#: app/controllers/CControllerPopupLdapTestSend.php:86
msgid "Login failed"
-msgstr ""
+msgstr "PieteikÅ¡anÄs neizdevÄs"
#: include/classes/validators/CLdapAuthValidator.php:87
msgid "Login name or password is incorrect."
-msgstr ""
+msgstr "PieteikÅ¡anÄs vÄrds vai parole ir nepareiza."
#: app/controllers/CControllerPopupLdapTestSend.php:76
msgid "Login successful"
-msgstr ""
+msgstr "PieteikÅ¡anÄs veiksmÄ«ga"
#: app/controllers/CControllerAuditLogList.php:193
msgid "Logout"
@@ -11612,11 +11933,11 @@ msgstr "Atslēgties"
#: app/views/administration.authentication.edit.php:287
msgid "Logout requests"
-msgstr ""
+msgstr "AtteikÅ¡anÄs pieprasÄ«jumi"
#: app/views/administration.authentication.edit.php:293
msgid "Logout responses"
-msgstr ""
+msgstr "AtteikÅ¡anÄs atbildes"
#: include/discovery.inc.php:139
msgid "Lost"
@@ -11624,11 +11945,11 @@ msgstr "Pazaudēt"
#: include/actions.inc.php:1266
msgid "Low-level discovery rule in \"not supported\" state"
-msgstr ""
+msgstr "Zema lÄ«meņa atklÄÅ¡anas noteikums ir \"nav atbalstÄ«ts\" statusÄ"
#: include/classes/graphdraw/CLineGraphDraw.php:965
msgid "M"
-msgstr ""
+msgstr "M"
#: jsLoader.php:252
msgctxt "Monday short"
@@ -11638,7 +11959,7 @@ msgstr "P"
#: include/func.inc.php:592 jsLoader.php:226
msgctxt "month short"
msgid "M"
-msgstr ""
+msgstr "M"
#: include/hosts.inc.php:154 include/views/inventory.host.list.php:93
msgid "MAC address A"
@@ -11689,21 +12010,21 @@ msgstr ""
#: include/views/configuration.host.prototype.edit.php:334
#: include/views/configuration.template.edit.php:191
msgid "Macros"
-msgstr ""
+msgstr "Makro"
#: app/controllers/CControllerMacrosUpdate.php:129
msgid "Macros updated"
-msgstr ""
+msgstr "Makro atjauninÄti"
#: app/views/administration.user.list.php:39
#: app/views/monitoring.dashboard.view.php:80
#: app/views/monitoring.map.view.php:46 report2.php:200 report4.php:126
msgid "Main filter"
-msgstr ""
+msgstr "Galvenais filtrs"
#: app/partials/layout.htmlpage.aside.php:90
msgid "Main navigation"
-msgstr ""
+msgstr "GalvenÄ navigÄcija"
#: app/controllers/CControllerAuditLogList.php:229
#: include/classes/helpers/CMenuHelper.php:194
@@ -12143,7 +12464,7 @@ msgstr ""
#: include/classes/debug/CProfiler.php:165
#, c-format
msgid "Memory limit: %1$s"
-msgstr ""
+msgstr "Atmiņas ierobežojums: %1$s"
#: include/classes/data/CItemData.php:1433
msgid "Memory metrics of VMware Resource Pool, <url> - VMware service URL, <rpid> - VMware resource pool id, <mode> - consumed(default)/ballooned/overhead memory"
@@ -12159,11 +12480,11 @@ msgstr ""
#: app/views/administration.mediatype.edit.php:257
msgid "Menu entry URL"
-msgstr ""
+msgstr "Izvēlnes ieraksta URL"
#: app/views/administration.mediatype.edit.php:248
msgid "Menu entry name"
-msgstr ""
+msgstr "Izvēlnes ieraksta nosaukums"
#: include/views/configuration.trigger.prototype.edit.php:554
#: include/views/configuration.triggers.edit.php:576
@@ -12172,7 +12493,7 @@ msgstr ""
#: app/views/administration.script.edit.php:108
msgid "Menu path"
-msgstr ""
+msgstr "Izvēlnes ceļš"
#: app/partials/popup.operations.php:160
#: app/partials/scheduledreport.formgrid.html.php:178
@@ -12189,33 +12510,33 @@ msgstr "Ziņojums"
#: app/views/monitoring.widget.actionlog.view.php:44
msgctxt "compact table header"
msgid "Message"
-msgstr ""
+msgstr "Ziņojums"
#: app/views/administration.mediatype.edit.php:207
msgid "Message format"
-msgstr ""
+msgstr "Ziņojuma formÄts"
#: app/controllers/CControllerPopupMediatypeMessage.php:98
msgid "Message template"
-msgstr ""
+msgstr "Ziņojuma veidne"
#: app/views/administration.mediatype.edit.php:299
msgid "Message templates"
-msgstr ""
+msgstr "Ziņojumu veidnes"
#: app/views/administration.user.edit.php:660
#: app/views/administration.user.edit.php:672
msgid "Message timeout"
-msgstr ""
+msgstr "Ziņojuma noildze"
#: app/views/administration.mediatype.edit.php:281
#: app/views/popup.mediatype.message.php:44
msgid "Message type"
-msgstr ""
+msgstr "Ziņojuma veids"
#: include/actions.inc.php:1827 include/actions.inc.php:1921
msgid "Message/Command"
-msgstr ""
+msgstr "Ziņojums/Komanda"
#: app/views/administration.authentication.edit.php:269
#: include/classes/screens/CScreenProblem.php:1212
@@ -12224,7 +12545,7 @@ msgstr "Ziņojumi"
#: app/views/administration.user.edit.php:750
msgid "Messaging"
-msgstr ""
+msgstr "Ziņapmaiņa"
#: include/classes/core/CJsonRpc.php:181
msgid "Method not found."
@@ -12248,7 +12569,7 @@ msgstr "Pa vidu"
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:195
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:197
msgid "Min"
-msgstr ""
+msgstr "Min"
#: app/views/administration.authentication.edit.php:39
msgid "Minimum password length"
@@ -12262,12 +12583,12 @@ msgstr ""
#: include/classes/setup/CFrontendSetup.php:124
#, c-format
msgid "Minimum required PHP memory limit is %1$s (configuration option \"memory_limit\")."
-msgstr ""
+msgstr "MinimÄlais nepiecieÅ¡amais PHP atmiņas ierobežojums ir %1$s (konfigurÄcijas opcija \"memory_limit\")."
#: include/classes/setup/CFrontendSetup.php:162
#, c-format
msgid "Minimum required PHP upload filesize is %1$s (configuration option \"upload_max_filesize\")."
-msgstr ""
+msgstr "MinimÄlais nepiecieÅ¡amais PHP augÅ¡upielÄdes faila lielums ir %1$s (konfigurÄcijas opcija \"upload_max_filesize\")."
#: include/classes/setup/CFrontendSetup.php:106
#, c-format
@@ -12282,17 +12603,17 @@ msgstr ""
#: include/classes/setup/CFrontendSetup.php:193
#, c-format
msgid "Minimum required limit on execution time of PHP scripts is %1$s (configuration option \"max_execution_time\")."
-msgstr ""
+msgstr "MinimÄlais nepiecieÅ¡amais PHP skriptu izpildes laika ierobežojums ir %1$s (konfigurÄcijas opcija \"max_execution_time\")."
#: include/classes/setup/CFrontendSetup.php:216
#, c-format
msgid "Minimum required limit on input parse time for PHP scripts is %1$s (configuration option \"max_input_time\")."
-msgstr ""
+msgstr "MinimÄlais nepiecieÅ¡amais PHP skriptu ievades apstrÄdes laika ierobežojums ir %1$s (konfigurÄcijas opcija \"max_input_time\")."
#: include/classes/setup/CFrontendSetup.php:143
#, c-format
msgid "Minimum required size of PHP post is %1$s (configuration option \"post_max_size\")."
-msgstr ""
+msgstr "MinimÄlais nepiecieÅ¡amais PHP post lielums ir %1$s (konfigurÄcijas opcija \"post_max_size\")."
#: app/views/monitoring.map.view.php:49
#: include/views/monitoring.sysmap.edit.php:269
@@ -12334,7 +12655,7 @@ msgstr ""
#: include/classes/widgets/CWidgetHelper.php:1010
#: include/classes/widgets/CWidgetHelper.php:1263
msgid "Missing data"
-msgstr ""
+msgstr "Trūkst datu"
#: include/classes/api/services/CGraph.php:38
#, c-format
@@ -12355,7 +12676,7 @@ msgstr ""
#: app/views/administration.proxy.list.php:52
#: app/views/administration.proxy.list.php:78 report2.php:203
msgid "Mode"
-msgstr ""
+msgstr "Režīms"
#: include/hosts.inc.php:239
msgid "Model"
@@ -12364,7 +12685,7 @@ msgstr "Modelis"
#: app/controllers/CControllerAuditLogList.php:232
#: app/views/administration.module.edit.php:52
msgid "Module"
-msgstr ""
+msgstr "Modulis"
#: app/controllers/CControllerModuleScan.php:98
#, c-format
@@ -12419,11 +12740,11 @@ msgstr ""
#: app/views/administration.module.list.php:27
#: include/classes/helpers/CMenuHelper.php:270 include/html.inc.php:899
msgid "Modules"
-msgstr ""
+msgstr "Moduļi"
#: app/controllers/CControllerModuleScan.php:127
msgid "Modules updated"
-msgstr ""
+msgstr "Moduļi atjauninÄti"
#: include/func.inc.php:213
msgid "Mon"
@@ -12435,7 +12756,7 @@ msgstr "Pirmdiena"
#: app/views/configuration.host.list.php:129
msgid "Monitored by"
-msgstr ""
+msgstr "Uzrauga"
#: app/partials/configuration.host.edit.html.php:269
#: app/views/popup.massupdate.host.php:128
@@ -12445,7 +12766,7 @@ msgstr "Uzraudzība ar starpniekserveri"
#: include/classes/screens/CScreenDiscovery.php:119
msgid "Monitored host"
-msgstr ""
+msgstr "UzraudzÄ«tÄ iekÄrta"
#: app/views/search.php:36 app/views/search.php:192
#: include/classes/helpers/CMenuHelper.php:69
@@ -12467,7 +12788,7 @@ msgstr "MÄ“nesis"
#: include/classes/helpers/CSlaHelper.php:70
msgctxt "compact table header"
msgid "Month"
-msgstr ""
+msgstr "MÄ“nesis"
#: app/partials/scheduledreport.formgrid.html.php:100
#: app/partials/scheduledreport.table.html.php:51
@@ -12512,11 +12833,11 @@ msgstr "Mozilla Firefox"
#: include/views/configuration.trigger.prototype.edit.php:508
#: include/views/configuration.triggers.edit.php:537
msgid "Multiple"
-msgstr ""
+msgstr "VairÄki"
#: include/triggers.inc.php:987
msgid "Multiple PROBLEM events"
-msgstr ""
+msgstr "VairÄki PROBLEM notikumi"
#: jsLoader.php:294
msgid "Mute"
@@ -12529,23 +12850,23 @@ msgstr ""
#: include/classes/helpers/CServiceHelper.php:37
#: include/classes/helpers/CServiceHelper.php:47
msgid "N"
-msgstr ""
+msgstr "N"
#: jsLoader.php:188
msgctxt "abbreviation of severity level"
msgid "N"
-msgstr ""
+msgstr "N"
#: include/classes/helpers/CServiceHelper.php:42
#: include/classes/helpers/CServiceHelper.php:52
#: include/classes/helpers/CServiceHelper.php:62
#: include/classes/helpers/CServiceHelper.php:72
msgid "N%"
-msgstr ""
+msgstr "N%"
#: include/classes/helpers/CSlaHelper.php:183
msgid "N/A"
-msgstr ""
+msgstr "N/P"
#: include/discovery.inc.php:53
msgid "NNTP"
@@ -12553,7 +12874,7 @@ msgstr "NNTP"
#: include/httptest.inc.php:29
msgid "NTLM"
-msgstr ""
+msgstr "NTLM"
#: actionconf.php:36 app/controllers/CControllerPopupGeneric.php:117
#: app/controllers/CControllerPopupGeneric.php:129
@@ -12733,18 +13054,18 @@ msgstr "Nosaukums"
#: app/views/monitoring.widget.plaintext.view.php:49
msgctxt "compact table header"
msgid "Name"
-msgstr ""
+msgstr "Nosaukums"
#: app/controllers/CControllerPopupGeneric.php:218
#: app/views/administration.user.edit.php:77
#: app/views/administration.user.list.php:108
msgctxt "user first name"
msgid "Name"
-msgstr ""
+msgstr "VÄrds"
#: app/views/administration.authentication.edit.php:303
msgid "Name ID"
-msgstr ""
+msgstr "Nosaukuma ID"
#: include/views/js/configuration.httpconf.edit.js.php:176
msgid "Name of the form field should not exceed 255 characters."
@@ -12752,7 +13073,7 @@ msgstr ""
#: app/views/administration.module.edit.php:43
msgid "Namespace"
-msgstr ""
+msgstr "VÄrdtelpa"
#: jsLoader.php:189
msgid "Navigate to default view"
@@ -12901,7 +13222,7 @@ msgstr ""
#: app/views/configuration.templategroup.edit.php:52
#: app/views/popup.templategroup.edit.php:59
msgid "New template group"
-msgstr ""
+msgstr "Jauna veidņu grupa"
#: include/views/js/monitoring.sysmaps.js.php:187
msgid "New triggers"
@@ -13092,7 +13413,7 @@ msgstr ""
#: include/classes/api/services/CItemGeneral.php:420
msgid "No interface found."
-msgstr ""
+msgstr "Nav atrasts neviens interfeiss."
#: jsLoader.php:321
msgid "No interfaces are defined."
@@ -13118,7 +13439,7 @@ msgstr ""
#: app/partials/hostmacros.inherited.list.html.php:27
#: app/partials/hostmacros.list.html.php:27
msgid "No macros found."
-msgstr ""
+msgstr "Nav atrasts neviens makro."
#: app/views/monitoring.widget.favmaps.view.php:26
msgid "No maps added."
@@ -13498,7 +13819,7 @@ msgstr ""
#: include/classes/api/services/CTriggerPrototype.php:867
#, c-format
msgid "Not all templates are linked to \"%1$s\"."
-msgstr ""
+msgstr "Ne visas veidnes ir saistītas ar \"%1$s\"."
#: include/classes/api/services/CHostBase.php:1639
#: include/classes/api/services/CUserMacro.php:569
@@ -13668,15 +13989,15 @@ msgstr ""
#: include/classes/widgets/forms/CWidgetFormSvgGraph.php:283
msgid "Number of rows"
-msgstr ""
+msgstr "Rindu skaits"
#: app/controllers/CControllerPopupTriggerExpr.php:126
msgid "Number of seasons"
-msgstr ""
+msgstr "Sezonu skaits"
#: include/views/reports.toptriggers.php:86
msgid "Number of status changes"
-msgstr ""
+msgstr "Statusa izmaiņu skaits"
#: include/classes/screens/CScreenHttpTest.php:114
#: include/views/configuration.httpconf.list.php:139
@@ -13685,23 +14006,23 @@ msgstr "Soļu skaits"
#: app/partials/administration.system.info.php:50
msgid "Number of templates"
-msgstr ""
+msgstr "Veidņu skaits"
#: app/partials/administration.system.info.php:67
msgid "Number of triggers (enabled/disabled [problem/ok])"
-msgstr ""
+msgstr "Trigeru skaits (iespējots/atspējots [problem/ok])"
#: include/classes/data/CItemData.php:1682
msgid "Number of triggers in Zabbix database."
-msgstr ""
+msgstr "Trigeru skaits Zabbix datu bÄzÄ“."
#: include/classes/data/CItemData.php:1630
msgid "Number of unsupported items in Zabbix database."
-msgstr ""
+msgstr "NeatbalstÄ«to vienumu skaits Zabbix datu bÄzÄ“."
#: include/classes/data/CItemData.php:1606
msgid "Number of unsupported items on the host."
-msgstr ""
+msgstr "NeatbalstÄ«to vienumu skaits iekÄrtÄ."
#: app/partials/administration.system.info.php:84
msgid "Number of users (online)"
@@ -13722,7 +14043,7 @@ msgstr ""
#: include/items.inc.php:1847 include/items.inc.php:1851
#: include/items.inc.php:1855
msgid "Numeral systems"
-msgstr ""
+msgstr "Ciparu sistēmas"
#: app/partials/configuration.filter.items.php:138
#: app/views/popup.massupdate.item.php:156 include/items.inc.php:125
@@ -13733,14 +14054,14 @@ msgstr "Numurs (peldošais)"
#: include/triggers.inc.php:1591
msgid "Numeric (integer)"
-msgstr ""
+msgstr "Skaitlis (integer)"
#: app/partials/configuration.filter.items.php:137
#: app/views/popup.massupdate.item.php:155 include/items.inc.php:123
#: include/views/configuration.item.edit.php:119
#: include/views/configuration.item.prototype.edit.php:105
msgid "Numeric (unsigned)"
-msgstr ""
+msgstr "Skaitlis (unsigned)"
#: include/hosts.inc.php:36 include/hosts.inc.php:64
msgid "OEM"
@@ -13762,12 +14083,12 @@ msgstr "OK"
#: include/views/configuration.trigger.prototype.edit.php:512
#: include/views/configuration.triggers.edit.php:541
msgid "OK event closes"
-msgstr ""
+msgstr "OK notikums aizveras"
#: include/views/configuration.trigger.prototype.edit.php:303
#: include/views/configuration.triggers.edit.php:329
msgid "OK event generation"
-msgstr ""
+msgstr "OK notikumu ģenerēšana"
#: include/hosts.inc.php:299
msgid "OOB IP address"
@@ -13779,7 +14100,7 @@ msgstr "OOB marÅ¡rutÄ“tÄjs"
#: include/hosts.inc.php:304
msgid "OOB subnet mask"
-msgstr ""
+msgstr "OOB apakštīkla maska"
#: include/hosts.inc.php:119 include/views/inventory.host.list.php:90
msgid "OS"
@@ -13791,11 +14112,11 @@ msgstr "OS (Visas detaļas)"
#: include/hosts.inc.php:129
msgid "OS (Short)"
-msgstr ""
+msgstr "OS (Ä«ss)"
#: app/views/popup.lldoperation.php:46
msgid "Object"
-msgstr ""
+msgstr "Objekts"
#: include/func.inc.php:245
msgid "Oct"
@@ -13803,7 +14124,7 @@ msgstr "Okt"
#: include/items.inc.php:1852
msgid "Octal to decimal"
-msgstr ""
+msgstr "OktÄls uz decimÄlu"
#: include/func.inc.php:109 include/func.inc.php:262 jsLoader.php:242
msgid "October"
@@ -13813,7 +14134,7 @@ msgstr "Oktobris"
#: include/views/monitoring.sysmap.constructor.php:51
#: include/views/monitoring.sysmap.constructor.php:61 jsLoader.php:262
msgid "Off"
-msgstr ""
+msgstr "Izslēgts"
#: app/views/administration.user.list.php:148
#: app/views/js/popup.massupdate.js.php:428
@@ -13831,7 +14152,7 @@ msgstr "ApstiprinÄt"
#: app/views/monitoring.widget.web.view.php:33
msgctxt "compact table header"
msgid "Ok"
-msgstr ""
+msgstr "Labi"
#: include/classes/helpers/CCorrelationHelper.php:52
#: include/classes/helpers/CCorrelationHelper.php:117
@@ -13850,7 +14171,7 @@ msgstr ""
#: include/views/monitoring.sysmap.constructor.php:51
#: include/views/monitoring.sysmap.constructor.php:61 jsLoader.php:261
msgid "On"
-msgstr ""
+msgstr "Ieslēgts"
#: app/views/administration.trigdisplay.edit.php:95
msgid "On status change triggers blink for"
@@ -13862,11 +14183,11 @@ msgstr "Vienreiz"
#: app/views/administration.mediatype.edit.php:327
msgid "One"
-msgstr ""
+msgstr "Viens"
#: app/views/popup.maintenance.period.php:75 include/maintenances.inc.php:25
msgid "One time only"
-msgstr ""
+msgstr "Tikai vienu reizi"
#: include/classes/api/services/CDRule.php:488
msgid "Only Zabbix agent, SNMPv1, SNMPv2 and SNMPv3 checks can be made unique."
@@ -13935,7 +14256,7 @@ msgstr ""
#: app/views/popup.mediatypetest.edit.php:52 app/views/popup.scriptexec.php:40
msgid "Open log"
-msgstr ""
+msgstr "AtvÄ“rt žurnÄlu"
#: include/httptest.inc.php:421
msgid "Opera"
@@ -13974,7 +14295,7 @@ msgstr ""
#: app/controllers/CControllerActionOperationValidate.php:160
msgid "Operation has no template to operate."
-msgstr ""
+msgstr "OperÄcijai nav darbÄ«bas veidnes."
#: app/views/monitoring.widget.problems.view.php:64 include/blocks.inc.php:579
#: include/classes/screens/CScreenProblem.php:885
@@ -14064,15 +14385,15 @@ msgstr ""
#: include/views/configuration.triggers.edit.php:390
#: include/views/js/monitoring.sysmaps.js.php:243
msgid "Or"
-msgstr ""
+msgstr "Vai"
#: include/classes/widgets/forms/CWidgetFormTopHosts.php:131
msgid "Order"
-msgstr ""
+msgstr "KÄrtot"
#: include/classes/widgets/forms/CWidgetFormTopHosts.php:145
msgid "Order column"
-msgstr ""
+msgstr "KÄrtoÅ¡anas kolonna"
#: app/partials/massupdate.macros.tab.php:119
#: app/partials/massupdate.valuemaps.tab.php:89
@@ -14131,7 +14452,7 @@ msgstr ""
#: app/views/popup.massupdate.trigger.php:74
#: app/views/popup.massupdate.trigger.php:119
msgid "Original"
-msgstr ""
+msgstr "OriÄ£inÄls"
#: app/views/administration.geomaps.edit.php:72
#: include/classes/helpers/CMenuHelper.php:277 include/html.inc.php:901
@@ -14141,7 +14462,7 @@ msgstr "Cits"
#: app/controllers/CControllerMiscConfigEdit.php:134
#: app/views/administration.miscconfig.edit.php:29
msgid "Other configuration parameters"
-msgstr ""
+msgstr "Citi konfigurÄcijas parametri"
#: app/views/administration.miscconfig.edit.php:188
msgid "Other parameters"
@@ -14154,7 +14475,7 @@ msgstr "Citi"
#: app/views/proxy.list.php:67
msgid "Outdated"
-msgstr ""
+msgstr "Novecojis"
#: include/classes/data/CItemData.php:934
msgid "Outgoing traffic statistics on network interface. Returns integer"
@@ -14210,24 +14531,24 @@ msgstr "PÄrskats"
#: app/views/dashboard.properties.edit.php:58
#: include/views/monitoring.sysmap.edit.php:93
msgid "Owner"
-msgstr ""
+msgstr "Īpašnieks"
#: include/classes/setup/CFrontendSetup.php:530
msgid "PHP LDAP"
-msgstr ""
+msgstr "PHP LDAP"
#: include/classes/setup/CFrontendSetup.php:534
#: include/classes/validators/CLdapAuthValidator.php:76
msgid "PHP LDAP extension missing."
-msgstr ""
+msgstr "TrÅ«kst PHP LDAP paplaÅ¡inÄjuma."
#: include/classes/setup/CFrontendSetup.php:547
msgid "PHP OpenSSL"
-msgstr ""
+msgstr "PHP OpenSSL"
#: include/classes/setup/CFrontendSetup.php:551
msgid "PHP OpenSSL extension missing."
-msgstr ""
+msgstr "TrÅ«kst PHP OpenSSL paplaÅ¡inÄjuma."
#: include/classes/setup/CFrontendSetup.php:290
msgid "PHP bcmath"
@@ -14235,7 +14556,7 @@ msgstr "PHP bcmath"
#: include/classes/setup/CFrontendSetup.php:294
msgid "PHP bcmath extension missing (PHP configuration parameter --enable-bcmath)."
-msgstr ""
+msgstr "TrÅ«kst PHP bcmath paplaÅ¡inÄjuma (PHP konfigurÄcijas parametrs --enable-bcmath)."
#: include/classes/setup/CFrontendSetup.php:574
msgid "PHP ctype"
@@ -14243,7 +14564,7 @@ msgstr "PHP ctype"
#: include/classes/setup/CFrontendSetup.php:578
msgid "PHP ctype extension missing (PHP configuration parameter --enable-ctype)."
-msgstr ""
+msgstr "TrÅ«kst PHP ctype paplaÅ¡inÄjuma (PHP konfigurÄcijas parametrs --enable-ctype)."
#: include/classes/setup/CFrontendSetup.php:237
msgid "PHP databases support"
@@ -14259,19 +14580,19 @@ msgstr "PHP gd FreeType atbalsts"
#: include/classes/setup/CFrontendSetup.php:460
msgid "PHP gd FreeType support missing."
-msgstr ""
+msgstr "Trūkst PHP gd FreeType atbalsta."
#: include/classes/setup/CFrontendSetup.php:437
msgid "PHP gd GIF image support missing."
-msgstr ""
+msgstr "Trūkst PHP gd GIF attēla atbalsta."
#: include/classes/setup/CFrontendSetup.php:433
msgid "PHP gd GIF support"
-msgstr ""
+msgstr "PHP gd GIF atbalsts"
#: include/classes/setup/CFrontendSetup.php:420
msgid "PHP gd JPEG image support missing."
-msgstr ""
+msgstr "Trūkst PHP gd JPEG attēla atbalsta."
#: include/classes/setup/CFrontendSetup.php:416
msgid "PHP gd JPEG support"
@@ -14279,7 +14600,7 @@ msgstr "PHP gd JPEG atbalsts"
#: include/classes/setup/CFrontendSetup.php:397
msgid "PHP gd PNG image support missing."
-msgstr ""
+msgstr "Trūkst PHP gd PNG attēla atbalsta."
#: include/classes/setup/CFrontendSetup.php:393
msgid "PHP gd PNG support"
@@ -14287,7 +14608,7 @@ msgstr "PHP gd PNG atbalsts"
#: include/classes/setup/CFrontendSetup.php:374
msgid "PHP gd extension missing (PHP configuration parameter --with-gd)."
-msgstr ""
+msgstr "TrÅ«kst PHP gd paplaÅ¡inÄjuma (PHP konfigurÄcijas parametrs --with-gd)."
#: include/classes/setup/CFrontendSetup.php:625
msgid "PHP gettext"
@@ -14295,7 +14616,7 @@ msgstr "PHP gettext"
#: include/classes/setup/CFrontendSetup.php:629
msgid "PHP gettext extension missing (PHP configuration parameter --with-gettext). Translations will not be available."
-msgstr ""
+msgstr "TrÅ«kst PHP gettext paplaÅ¡inÄjuma (PHP konfigurÄcijas parametrs --with-gettext). Tulkojumi nebÅ«s pieejami."
#: include/classes/setup/CFrontendSetup.php:479
msgid "PHP libxml"
@@ -14303,7 +14624,7 @@ msgstr "PHP libxml"
#: include/classes/setup/CFrontendSetup.php:483
msgid "PHP libxml extension missing."
-msgstr ""
+msgstr "TrÅ«kst PHP libxml paplaÅ¡inÄjuma."
#: include/classes/setup/CFrontendSetup.php:307
msgid "PHP mbstring"
@@ -14311,7 +14632,7 @@ msgstr "PHP mbstring"
#: include/classes/setup/CFrontendSetup.php:311
msgid "PHP mbstring extension missing (PHP configuration parameter --enable-mbstring)."
-msgstr ""
+msgstr "TrÅ«kst PHP mbstring paplaÅ¡inÄjuma (PHP konfigurÄcijas parametrs --enable-mbstring)."
#: include/classes/setup/CFrontendSetup.php:120
#: include/classes/setup/CFrontendSetup.php:139
@@ -14323,12 +14644,12 @@ msgstr ""
#: include/classes/setup/CFrontendSetup.php:642
#, c-format
msgid "PHP option \"%1$s\""
-msgstr ""
+msgstr "PHP opcija \"%1$s\""
#: include/classes/setup/CFrontendSetup.php:646
#, c-format
msgid "PHP option \"%1$s\" must be set to \"%2$s\""
-msgstr ""
+msgstr "PHP opcijai \"%1$s\" jÄbÅ«t iestatÄ«tai uz \"%2$s\""
#: include/classes/setup/CFrontendSetup.php:591
msgid "PHP session"
@@ -14340,7 +14661,7 @@ msgstr ""
#: include/classes/setup/CFrontendSetup.php:595
msgid "PHP session extension missing (PHP configuration parameter --enable-session)."
-msgstr ""
+msgstr "TrÅ«kst PHP session paplaÅ¡inÄjuma (PHP konfigurÄcijas parametrs --enable-session)."
#: include/classes/setup/CFrontendSetup.php:345
msgid "PHP sockets"
@@ -14348,7 +14669,7 @@ msgstr "PHP ligzdas"
#: include/classes/setup/CFrontendSetup.php:349
msgid "PHP sockets extension missing (PHP configuration parameter --enable-sockets)."
-msgstr ""
+msgstr "TrÅ«kst PHP sockets paplaÅ¡inÄjuma (PHP konfigurÄcijas parametrs --enable-sockets)."
#: include/classes/setup/CFrontendSetup.php:332
msgid "PHP string function overloading must be disabled."
@@ -14415,33 +14736,37 @@ msgstr ""
#: include/views/configuration.host.prototype.edit.php:390
#: include/views/configuration.host.prototype.edit.php:398
msgid "PSK"
-msgstr ""
+msgstr "PSK"
#: app/partials/configuration.host.edit.html.php:473
#: app/views/administration.autoreg.edit.php:57
#: app/views/administration.proxy.edit.php:112
#: app/views/popup.massupdate.host.php:254
msgid "PSK identity"
-msgstr ""
+msgstr "PSK identitÄte"
#: jsLoader.php:142
#, c-format
msgid "Page %1$d"
-msgstr ""
+msgstr "Lapa %1$d"
#: app/views/dashboard.page.properties.edit.php:55
msgid "Page display period"
+msgstr "Lapas attēlošanas periods"
+
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
msgstr ""
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
-msgstr ""
+msgstr "Lapa saņēma nepareizus datus"
#: include/classes/helpers/CPagerHelper.php:159
msgctxt "page navigation"
msgid "Pager"
-msgstr ""
+msgstr "LapotÄjs"
#: app/partials/administration.system.info.php:30
#: app/views/administration.mediatype.edit.php:105
@@ -14478,7 +14803,7 @@ msgstr ""
#: include/views/configuration.item.edit.php:303
#: include/views/configuration.item.prototype.edit.php:289
msgid "Parameters"
-msgstr ""
+msgstr "Parametri"
#: app/controllers/CControllerActionOperationValidate.php:76
#: include/classes/api/services/CAction.php:2817
@@ -14492,30 +14817,30 @@ msgstr ""
#: include/views/configuration.graph.edit.php:68
msgid "Parent graphs"
-msgstr ""
+msgstr "Galvenie grafiki"
#: app/partials/hostmacros.inherited.list.html.php:52
msgid "Parent host value"
-msgstr ""
+msgstr "GalvenÄs iekÄrtas vÄ“rtÄ«ba"
#: include/views/configuration.item.edit.php:57
#: include/views/configuration.item.prototype.edit.php:55
msgid "Parent items"
-msgstr ""
+msgstr "Galvenie vienumi"
#: app/partials/service.info.php:111 app/partials/service.list.edit.php:41
#: app/partials/service.list.php:35 app/views/popup.service.edit.php:55
msgid "Parent services"
-msgstr ""
+msgstr "Galvenie servise"
#: app/partials/configuration.tags.tab.php:42
msgid "Parent templates"
-msgstr ""
+msgstr "GalvenÄs veidnes"
#: include/views/configuration.trigger.prototype.edit.php:69
#: include/views/configuration.triggers.edit.php:80
msgid "Parent triggers"
-msgstr ""
+msgstr "Galvenie trigeri"
#: include/views/configuration.httpconf.edit.php:59
msgid "Parent web scenarios"
@@ -14595,7 +14920,7 @@ msgstr ""
#: jsLoader.php:168 jsLoader.php:282
msgid "Paste"
-msgstr ""
+msgstr "Ielīmēt"
#: app/views/js/configuration.dashboard.edit.js.php:217
#: app/views/js/monitoring.dashboard.view.js.php:305
@@ -14630,7 +14955,7 @@ msgstr ""
#: app/controllers/CControllerPopupTriggerExpr.php:244
msgid "Percentage"
-msgstr ""
+msgstr "Procenti"
#: include/classes/data/CItemData.php:1490
msgid "Percentage of host physical memory that has been consumed, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
@@ -14668,7 +14993,7 @@ msgstr "Periods"
#: app/controllers/CControllerPopupTriggerExpr.php:109
#: app/controllers/CControllerPopupTriggerExpr.php:1096
msgid "Period shift"
-msgstr ""
+msgstr "Perioda pÄrbÄ«de"
#: app/views/popup.maintenance.period.php:69
#: include/views/configuration.maintenance.edit.php:47
@@ -14727,7 +15052,7 @@ msgstr "Atskaņot skaņu"
#: include/classes/setup/CSetupWizard.php:755
#, c-format
msgid "Please check configuration parameters. If all is correct, press \"%1$s\" button, or \"%2$s\" button to change configuration parameters."
-msgstr ""
+msgstr "LÅ«dzu, pÄrbaudiet konfigurÄcijas parametrus. Ja viss ir pareizi, nospiediet pogu \"%1$s\" vai pogu \"%2$s\", lai mainÄ«tu konfigurÄcijas parametrus."
#: app/views/js/popup.massupdate.js.php:414
msgid "Please confirm that you want to remove all macros."
@@ -14740,7 +15065,7 @@ msgstr ""
#: include/classes/setup/CSetupWizard.php:603
#, c-format
msgid "Please create database manually, and set the configuration parameters for connection to this database. Press \"%1$s\" button when done."
-msgstr ""
+msgstr "LÅ«dzu, izveidojiet datu bÄzi manuÄli un iestatiet konfigurÄcijas parametrus savienojumam ar Å¡o datu bÄzi. Kad esat pabeidzis, nospiediet pogu \"%1$s\"."
#: include/classes/setup/CSetupWizard.php:189
msgid "Please enable \"allow_url_fopen\" directive."
@@ -14763,14 +15088,14 @@ msgstr ""
#: include/classes/widgets/CWidgetHelper.php:1006
#: include/classes/widgets/CWidgetHelper.php:1231
msgid "Point size"
-msgstr ""
+msgstr "Punkta izmērs"
#: include/classes/widgets/CWidgetHelper.php:926
#: include/classes/widgets/CWidgetHelper.php:969
#: include/classes/widgets/CWidgetHelper.php:1217
#: include/views/js/monitoring.sysmaps.js.php:443
msgid "Points"
-msgstr ""
+msgstr "Punkti"
#: include/locales.inc.php:55
msgid "Polish (pl_PL)"
@@ -14809,7 +15134,7 @@ msgstr "PortugÄļu (pt_PT)"
#: include/classes/widgets/forms/CWidgetFormItem.php:249
msgid "Position"
-msgstr ""
+msgstr "Pozīcija"
#: include/classes/widgets/views/widget.item.form.view.php:143
msgid "Position is ignored for s, uptime and unixtime units."
@@ -14991,7 +15316,7 @@ msgstr "Problēma"
#: app/views/monitoring.widget.problems.view.php:71
msgctxt "compact table header"
msgid "Problem"
-msgstr ""
+msgstr "Problēma"
#: include/actions.inc.php:2059
msgid "Problem created"
@@ -15078,7 +15403,7 @@ msgstr ""
#: include/classes/helpers/CMenuHelper.php:394
msgid "Profile"
-msgstr ""
+msgstr "Profils"
#: include/items.inc.php:1899 include/items.inc.php:1903
msgid "Prometheus"
@@ -15095,7 +15420,7 @@ msgstr ""
#: include/views/monitoring.sysmap.list.php:82
#: include/views/monitoring.sysmap.list.php:83 jsLoader.php:144
msgid "Properties"
-msgstr ""
+msgstr "Īpašības"
#: include/classes/vaults/CVaultCyberArk.php:64
#: include/classes/vaults/CVaultHashiCorp.php:55
@@ -15209,7 +15534,7 @@ msgstr ""
#: app/views/popup.dashboard.share.edit.php:126
#: include/views/monitoring.sysmap.edit.php:401
msgid "Public"
-msgstr ""
+msgstr "Publisks"
#: app/views/administration.script.edit.php:138
#: app/views/popup.massupdate.item.php:175
@@ -15229,23 +15554,23 @@ msgstr "PubliskÄs atslÄ“gas fails"
#: include/classes/helpers/CSlaHelper.php:61
msgid "Quarter"
-msgstr ""
+msgstr "Ceturksnis"
#: include/classes/helpers/CSlaHelper.php:71
msgctxt "compact table header"
msgid "Quarter"
-msgstr ""
+msgstr "Ceturksnis"
#: app/views/popup.sla.edit.php:77 include/classes/helpers/CSlaHelper.php:42
msgid "Quarterly"
-msgstr ""
+msgstr "Reizi ceturksnī"
#: app/views/popup.httpstep.php:64
#: include/views/configuration.host.discovery.edit.php:182
#: include/views/configuration.item.edit.php:239
#: include/views/configuration.item.prototype.edit.php:225
msgid "Query fields"
-msgstr ""
+msgstr "VaicÄjuma lauki"
#: app/controllers/CControllerQueueDetails.php:108
#: app/controllers/CControllerQueueOverview.php:80
@@ -15261,7 +15586,7 @@ msgstr "Rinda"
#: app/views/administration.queue.overview.proxy.php:39
#: include/classes/helpers/CMenuHelper.php:322
msgid "Queue details"
-msgstr ""
+msgstr "SÄ«kÄka informÄcija par rindu"
#: app/views/administration.queue.details.php:33
#: app/views/administration.queue.overview.php:27
@@ -15269,7 +15594,7 @@ msgstr ""
#: app/views/administration.queue.overview.proxy.php:33
#: include/classes/helpers/CMenuHelper.php:318
msgid "Queue overview"
-msgstr ""
+msgstr "PÄrskats par rindu"
#: app/views/administration.queue.details.php:36
#: app/views/administration.queue.overview.php:36
@@ -15296,11 +15621,11 @@ msgstr "RMCP+"
#: include/views/configuration.item.edit.php:356
#: include/views/configuration.item.prototype.edit.php:342
msgid "Raw data"
-msgstr ""
+msgstr "NeapstrÄdÄti dati"
#: app/views/popup.httpstep.php:110
msgid "Raw post"
-msgstr ""
+msgstr "NeapstrÄdÄts ieraksts"
#: app/partials/administration.usergroup.grouprights.html.php:70
#: app/views/administration.script.edit.php:246
@@ -15325,7 +15650,7 @@ msgstr ""
#: app/views/administration.user.edit.php:550
#: app/views/administration.userrole.edit.php:181
msgid "Read-only access to services"
-msgstr ""
+msgstr "Tikai lasīšanas piekļuve servisiem"
#: app/views/administration.user.edit.php:559
#: app/views/administration.userrole.edit.php:205
@@ -15385,7 +15710,7 @@ msgstr "Saņēmējs"
#: app/views/monitoring.widget.actionlog.view.php:43
msgctxt "compact table header"
msgid "Recipient"
-msgstr ""
+msgstr "Saņēmējs"
#: app/controllers/CControllerPopupScheduledReportSubscriptionEdit.php:89
msgid "Recipient already exists."
@@ -15446,19 +15771,19 @@ msgstr ""
#: app/views/administration.user.edit.php:276
msgid "Refresh"
-msgstr ""
+msgstr "Atjaunot"
#: app/views/popup.proxy.edit.php:216 app/views/proxy.list.php:178
msgid "Refresh configuration"
-msgstr ""
+msgstr "AtsvaidzinÄt konfigurÄciju"
#: app/views/js/proxy.list.js.php:106
msgid "Refresh configuration of the selected proxies?"
-msgstr ""
+msgstr "Vai atsvaidzinÄt atlasÄ«to starpniekserveru konfigurÄciju?"
#: app/views/js/proxy.list.js.php:107 app/views/popup.proxy.edit.php:217
msgid "Refresh configuration of the selected proxy?"
-msgstr ""
+msgstr "Vai atsvaidzinÄt atlasÄ«tÄ starpniekservera konfigurÄciju?"
#: include/classes/widgets/forms/CWidgetForm.php:58 jsLoader.php:169
msgid "Refresh interval"
@@ -15717,18 +16042,18 @@ msgstr ""
#: app/partials/massupdate.valuemaps.tab.php:96
msgid "Rename"
-msgstr ""
+msgstr "PÄrsaukt"
#: app/controllers/CControllerPopupScheduledReportCreate.php:70
#: app/controllers/CControllerScheduledReportCreate.php:82
#: app/controllers/CControllerScheduledReportUpdate.php:86
#: app/partials/scheduledreport.formgrid.html.php:135
msgid "Repeat on"
-msgstr ""
+msgstr "AtkÄrtot"
#: app/partials/scheduledreport.table.html.php:41
msgid "Repeats"
-msgstr ""
+msgstr "AtkÄrtojas"
#: app/views/popup.massupdate.host.php:46
#: app/views/popup.massupdate.host.php:87
@@ -15790,7 +16115,7 @@ msgstr ""
#: app/partials/service.info.php:61 app/views/popup.sla.edit.php:71
#: app/views/sla.list.php:90
msgid "Reporting period"
-msgstr ""
+msgstr "PÄrskata periods"
#: include/classes/helpers/CMenuHelper.php:161
#: include/classes/helpers/CRoleHelper.php:308
@@ -15938,15 +16263,15 @@ msgstr ""
#: app/views/reports.auditlog.list.php:64
#: app/views/reports.auditlog.list.php:93
msgid "Resource"
-msgstr ""
+msgstr "Resurss"
#: app/views/reports.auditlog.list.php:67
msgid "Resource ID"
-msgstr ""
+msgstr "Resursa ID"
#: app/views/popup.mediatypetest.edit.php:46 app/views/popup.scriptexec.php:47
msgid "Response"
-msgstr ""
+msgstr "Atbilde"
#: include/classes/screens/CScreenHttpTestDetails.php:84
msgid "Response code"
@@ -15958,11 +16283,11 @@ msgstr "Atbildes laiks"
#: app/controllers/CControllerPopupMediatypeTestSend.php:162
msgid "Response type: JSON"
-msgstr ""
+msgstr "Atbildes veids: JSON"
#: app/controllers/CControllerPopupMediatypeTestSend.php:162
msgid "Response type: String"
-msgstr ""
+msgstr "Atbildes veids: virkne"
#: app/views/administration.regex.edit.php:124
#: app/views/administration.regex.edit.php:129
@@ -15977,17 +16302,17 @@ msgstr "RezultÄts"
#: app/controllers/CControllerPopupItemTestSend.php:418
#, c-format
msgid "Result converted to %1$s"
-msgstr ""
+msgstr "RezultÄts pÄrveidots par %1$s"
#: app/views/js/administration.regex.edit.js.php:176
#: include/classes/helpers/CRegexHelper.php:30
msgid "Result is FALSE"
-msgstr ""
+msgstr "RezultÄts ir FALSE"
#: app/views/js/administration.regex.edit.js.php:172
#: include/classes/helpers/CRegexHelper.php:29
msgid "Result is TRUE"
-msgstr ""
+msgstr "RezultÄts ir TRUE"
#: app/views/popup.testtriggerexpr.php:30
msgid "Result type"
@@ -15995,22 +16320,22 @@ msgstr "RezultÄta tips"
#: app/views/js/popup.itemtestedit.view.js.php:321
msgid "Result with value map applied"
-msgstr ""
+msgstr "RezultÄts ar lietoto vÄ“rtÄ«bu karti"
#: app/views/popup.httpstep.php:158
#: include/views/configuration.host.discovery.edit.php:398
#: include/views/configuration.item.edit.php:456
#: include/views/configuration.item.prototype.edit.php:434
msgid "Retrieve mode"
-msgstr ""
+msgstr "Izgūšanas režīms"
#: include/classes/data/CItemData.php:1154
msgid "Retrieving contents of a file. Returns text"
-msgstr ""
+msgstr "Faila satura izgūšana. Atgriež tekstu"
#: include/views/general.warning.php:32
msgid "Retry"
-msgstr ""
+msgstr "Mēģiniet vēlreiz"
#: include/classes/data/CItemData.php:862
msgid "Return a JSON array with LLD macros describing the MBean objects or their attributes. Can be used for LLD."
@@ -16111,7 +16436,7 @@ msgstr ""
#: app/views/administration.user.edit.php:406
#: app/views/administration.user.edit.php:416
msgid "Role"
-msgstr ""
+msgstr "Loma"
#: include/locales.inc.php:58
msgid "Romanian (ro_RO)"
@@ -16184,7 +16509,7 @@ msgstr ""
#: include/classes/helpers/CRoleHelper.php:356
#: include/classes/widgets/forms/CWidgetFormSlaReport.php:28
msgid "SLA"
-msgstr ""
+msgstr "SLA"
#: include/classes/api/services/CSla.php:555
#, c-format
@@ -16198,7 +16523,7 @@ msgstr ""
#: app/controllers/CControllerSlaReportList.php:229
msgid "SLA Report"
-msgstr ""
+msgstr "SLA Ziņojums"
#: app/controllers/CControllerSlaCreate.php:114
msgid "SLA created"
@@ -16207,9 +16532,9 @@ msgstr ""
#: app/controllers/CControllerSlaDelete.php:64
msgid "SLA deleted"
msgid_plural "SLAs deleted"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "SLA izdzēsts"
+msgstr[1] "SLA izdzēsti"
+msgstr[2] "SLA izdzēsti"
#: app/controllers/CControllerSlaDisable.php:73
msgid "SLA disabled"
@@ -16349,12 +16674,12 @@ msgstr ""
#: include/items.inc.php:1299
#, c-format
msgid "SNMPv%1$d"
-msgstr ""
+msgstr "SNMPv%1$d"
#: app/partials/configuration.host.interface.row.php:81
#: app/views/popup.itemtestedit.view.php:133
msgid "SNMPv1"
-msgstr ""
+msgstr "SNMPv1"
#: include/discovery.inc.php:57
msgid "SNMPv1 agent"
@@ -16363,7 +16688,7 @@ msgstr "SNMPv1 aģents"
#: app/partials/configuration.host.interface.row.php:82
#: app/views/popup.itemtestedit.view.php:134
msgid "SNMPv2"
-msgstr ""
+msgstr "SNMPv2"
#: include/discovery.inc.php:58
msgid "SNMPv2 agent"
@@ -16372,7 +16697,7 @@ msgstr "SNMPv2 aģents"
#: app/partials/configuration.host.interface.row.php:83
#: app/views/popup.itemtestedit.view.php:135
msgid "SNMPv3"
-msgstr ""
+msgstr "SNMPv3"
#: include/discovery.inc.php:59
msgid "SNMPv3 agent"
@@ -16429,14 +16754,14 @@ msgstr ""
#: include/views/configuration.item.edit.php:542
#: include/views/configuration.item.prototype.edit.php:519
msgid "SSL key file"
-msgstr ""
+msgstr "SSL atslēgas fails"
#: include/views/configuration.host.discovery.edit.php:487
#: include/views/configuration.httpconf.edit.php:189
#: include/views/configuration.item.edit.php:550
#: include/views/configuration.item.prototype.edit.php:527
msgid "SSL key password"
-msgstr ""
+msgstr "SSL atslēgas parole"
#: app/views/administration.mediatype.edit.php:89
#: include/views/configuration.host.discovery.edit.php:460
@@ -16444,7 +16769,7 @@ msgstr ""
#: include/views/configuration.item.edit.php:526
#: include/views/configuration.item.prototype.edit.php:503
msgid "SSL verify host"
-msgstr ""
+msgstr "SSL verificÄ“t iekÄrtu"
#: app/views/administration.mediatype.edit.php:88
#: include/views/configuration.host.discovery.edit.php:452
@@ -16452,19 +16777,19 @@ msgstr ""
#: include/views/configuration.item.edit.php:518
#: include/views/configuration.item.prototype.edit.php:495
msgid "SSL verify peer"
-msgstr ""
+msgstr "SSL verificēt līdzinieku"
#: app/views/administration.mediatype.edit.php:85
msgid "SSL/TLS"
-msgstr ""
+msgstr "SSL/TLS"
#: app/views/administration.authentication.edit.php:230
msgid "SSO service URL"
-msgstr ""
+msgstr "SSO servisa URL"
#: app/views/administration.mediatype.edit.php:84
msgid "STARTTLS"
-msgstr ""
+msgstr "STARTTLS"
#: include/httptest.inc.php:426
msgid "Safari"
@@ -16472,11 +16797,11 @@ msgstr "Safari"
#: include/views/js/monitoring.sysmaps.js.php:60
msgid "Sans-Serif"
-msgstr ""
+msgstr "Sans-Serif"
#: include/func.inc.php:218
msgid "Sat"
-msgstr ""
+msgstr "Ses"
#: include/func.inc.php:124 include/func.inc.php:230 jsLoader.php:250
msgid "Saturday"
@@ -16484,25 +16809,25 @@ msgstr "Sestdiena"
#: app/views/popup.tabfilter.edit.php:80
msgid "Save"
-msgstr ""
+msgstr "SaglabÄt"
#: include/classes/html/CTabFilter.php:100
msgid "Save as"
-msgstr ""
+msgstr "SaglabÄt kÄ"
#: app/views/configuration.dashboard.edit.php:68
#: app/views/monitoring.dashboard.view.php:148
msgid "Save changes"
-msgstr ""
+msgstr "SaglabÄt izmaiņas"
#: include/classes/setup/CSetupWizard.php:885
#, c-format
msgid "Save it as \"%1$s\""
-msgstr ""
+msgstr "SaglabÄt to kÄ \"%1$s\""
#: app/views/administration.module.list.php:35
msgid "Scan directory"
-msgstr ""
+msgstr "Skenēt direktoriju"
#: include/views/configuration.httpconf.edit.php:237
msgid "Scenario"
@@ -16672,7 +16997,7 @@ msgstr ""
#: app/controllers/CControllerPopupTriggerExpr.php:114
#: app/controllers/CControllerPopupTriggerExpr.php:1106
msgid "Season"
-msgstr ""
+msgstr "Sezona"
#: app/controllers/CControllerPopupTriggerExpr.php:1121
msgid "Season deviation window"
@@ -16815,7 +17140,7 @@ msgstr "Sūtīt tikai"
#: app/views/administration.user.edit.php:300 app/views/popup.media.php:72
#: app/views/popup.media.php:79 app/views/popup.mediatypetest.edit.php:61
msgid "Send to"
-msgstr ""
+msgstr "Nosūtīt"
#: jsLoader.php:278
msgid "Send to back"
@@ -16934,7 +17259,7 @@ msgstr[2] ""
#: app/views/administration.userrole.edit.php:146
#: app/views/administration.userrole.edit.php:187
msgid "Service list"
-msgstr ""
+msgstr "Servisu saraksts"
#: include/actions.inc.php:68
msgid "Service name"
@@ -17037,7 +17362,7 @@ msgstr ""
#: include/classes/html/CInputSecret.php:80 jsLoader.php:416
msgid "Set new value"
-msgstr ""
+msgstr "Iestatīt jaunu vērtību"
#: app/views/popup.service.statusrule.edit.php:39
msgid "Set status to"
@@ -17045,11 +17370,11 @@ msgstr ""
#: include/classes/helpers/CServiceHelper.php:28
msgid "Set status to OK"
-msgstr ""
+msgstr "Iestatī statusu uz OK"
#: jsLoader.php:173
msgid "Set this view as default"
-msgstr ""
+msgstr "IestatÄ«t Å¡o skatu kÄ noklusÄ“juma skatu"
#: app/views/js/popup.itemtestedit.view.js.php:365 include/forms.inc.php:1482
#: include/views/js/item.preprocessing.js.php:67
@@ -17351,43 +17676,43 @@ msgstr ""
#: include/views/configuration.trigger.prototype.edit.php:507
#: include/views/configuration.triggers.edit.php:536
msgid "Single"
-msgstr ""
+msgstr "Viens"
#: include/hosts.inc.php:364
msgid "Site ZIP / postal"
-msgstr ""
+msgstr "Vietnes ZIP / pasta"
#: include/hosts.inc.php:334
msgid "Site address A"
-msgstr ""
+msgstr "Vietnes adrese A"
#: include/hosts.inc.php:339
msgid "Site address B"
-msgstr ""
+msgstr "Vietnes adrese B"
#: include/hosts.inc.php:344
msgid "Site address C"
-msgstr ""
+msgstr "Vietnes adrese C"
#: include/hosts.inc.php:349
msgid "Site city"
-msgstr ""
+msgstr "Vietnes pilsēta"
#: include/hosts.inc.php:359
msgid "Site country"
-msgstr ""
+msgstr "Vietnes valsts"
#: include/hosts.inc.php:374
msgid "Site notes"
-msgstr ""
+msgstr "Vietnes piezīmes"
#: include/hosts.inc.php:369
msgid "Site rack location"
-msgstr ""
+msgstr "Vietnes plaukta atraÅ¡anÄs vieta"
#: include/hosts.inc.php:354
msgid "Site state / province"
-msgstr ""
+msgstr "Vietnes valsts / province"
#: include/classes/widgets/forms/CWidgetFormItem.php:120
#: include/classes/widgets/forms/CWidgetFormItem.php:160
@@ -17396,7 +17721,7 @@ msgstr ""
#: include/classes/widgets/forms/CWidgetFormItem.php:324
#: include/views/js/monitoring.sysmaps.js.php:466
msgid "Size"
-msgstr ""
+msgstr "Izmērs"
#: include/classes/server/CZabbixServer.php:530
#, c-format
@@ -17414,7 +17739,7 @@ msgstr "SlovÄku (sk_SK)"
#: jsLoader.php:298
msgid "Snooze"
-msgstr ""
+msgstr "Atlikt"
#: include/hosts.inc.php:174
msgid "Software"
@@ -17426,23 +17751,23 @@ msgstr "Programmatūra (Visas detaļas)"
#: include/hosts.inc.php:184
msgid "Software application A"
-msgstr ""
+msgstr "Programmatūra A"
#: include/hosts.inc.php:189
msgid "Software application B"
-msgstr ""
+msgstr "Programmatūra B"
#: include/hosts.inc.php:194
msgid "Software application C"
-msgstr ""
+msgstr "Programmatūra C"
#: include/hosts.inc.php:199
msgid "Software application D"
-msgstr ""
+msgstr "Programmatūra D"
#: include/hosts.inc.php:204
msgid "Software application E"
-msgstr ""
+msgstr "Programmatūra E"
#: include/classes/data/CItemData.php:1090
msgid "Software architecture information. Returns string"
@@ -17470,7 +17795,7 @@ msgstr ""
#: include/classes/widgets/forms/CWidgetFormGraph.php:31
#: include/classes/widgets/forms/CWidgetFormGraphPrototype.php:31
msgid "Source"
-msgstr ""
+msgstr "Avots"
#: include/classes/widgets/forms/CWidgetFormMap.php:40
msgid "Source type"
@@ -17693,7 +18018,7 @@ msgstr ""
#: include/classes/helpers/CMapHelper.php:283
msgid "Status ok"
-msgstr ""
+msgstr "Statuss ok"
#: include/maps.inc.php:48
msgid "Status only"
@@ -17921,18 +18246,18 @@ msgstr ""
#: app/controllers/CControllerGuiEdit.php:33
#: include/classes/setup/CSetupWizard.php:611
msgid "System"
-msgstr ""
+msgstr "Sistēma"
#: include/classes/data/CItemData.php:1030
msgid "System boot time. Returns integer (Unix timestamp)"
-msgstr ""
+msgstr "SistÄ“mas sÄknÄ“Å¡anas laiks. Atgriež veselu skaitli (Unix laikspiedols)"
#: app/controllers/CControllerUserEditGeneral.php:49
#: app/views/administration.user.edit.php:189
#: app/views/administration.user.edit.php:195 app/views/popup.sla.edit.php:91
#: app/views/sla.list.php:148 include/users.inc.php:81
msgid "System default"
-msgstr ""
+msgstr "Sistēmas noklusējuma"
#: include/func.inc.php:1745
msgid "System error occurred. Please contact Zabbix administrator."
@@ -18112,7 +18437,7 @@ msgstr ""
#: app/views/monitoring.widget.problems.view.php:83
msgctxt "compact table header"
msgid "Tags"
-msgstr ""
+msgstr "Tagi"
#: include/views/configuration.copy.elements.php:69
#: include/views/configuration.trigger.prototype.edit.php:202
@@ -18183,11 +18508,11 @@ msgstr ""
#: app/controllers/CControllerAuditLogList.php:241
msgid "Template dashboard"
-msgstr ""
+msgstr "Veidnes informÄcijas panelis"
#: app/views/popup.import.php:33
msgid "Template dashboards"
-msgstr ""
+msgstr "Veidņu informÄcijas paneļi"
#: templates.php:462 templates.php:476 templates.php:542
msgid "Template deleted"
@@ -18200,27 +18525,27 @@ msgstr "Å ablona grupa"
#: include/classes/api/services/CTemplateGroup.php:540
#, c-format
msgid "Template group \"%1$s\" already exists."
-msgstr ""
+msgstr "Veidņu grupa \"%1$s\" jau pastÄv."
#: app/controllers/CControllerTemplateGroupCreate.php:62
msgid "Template group added"
-msgstr ""
+msgstr "Veidņu grupa pievienota"
#: app/controllers/CControllerTemplateGroupDelete.php:60
msgid "Template group deleted"
msgid_plural "Template groups deleted"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Veidņu grupa izdzēsta"
+msgstr[1] "Veidņu grupas izdzēstas"
+msgstr[2] "Veidņu grupas izdzēstas"
#: app/controllers/CControllerTemplateGroupUpdate.php:86
msgid "Template group updated"
-msgstr ""
+msgstr "Veidņu grupa atjauninÄta"
#: include/classes/api/services/CUserGroup.php:487
#, c-format
msgid "Template group with ID \"%1$s\" is not available."
-msgstr ""
+msgstr "Veidņu grupa ar ID \"%1$s\" nav pieejama."
#: app/controllers/CControllerPopupGeneric.php:197
#: app/controllers/CControllerPopupImportCompare.php:168
@@ -18238,7 +18563,7 @@ msgstr ""
#: include/views/configuration.template.list.php:45
#: include/views/configuration.triggers.list.php:33
msgid "Template groups"
-msgstr ""
+msgstr "Veidņu grupas"
#: app/views/popup.import.php:34
msgid "Template linkage"
@@ -18246,7 +18571,7 @@ msgstr "Šablonu saistīšana"
#: include/views/configuration.template.edit.php:194
msgid "Template macros"
-msgstr ""
+msgstr "Veidņu makro"
#: include/views/configuration.template.edit.php:56 templates.php:41
msgid "Template name"
@@ -18254,7 +18579,7 @@ msgstr "Å ablonu nosaukums"
#: app/views/administration.usergroup.edit.php:273
msgid "Template permissions"
-msgstr ""
+msgstr "Veidnes atļaujas"
#: report2.php:396
msgid "Template trigger"
@@ -18266,7 +18591,7 @@ msgstr "Å ablons atjaunots"
#: app/partials/hostmacros.inherited.list.html.php:54
msgid "Template value"
-msgstr ""
+msgstr "Veidnes vērtība"
#: include/classes/api/services/CHostGeneral.php:126
#, c-format
@@ -18283,12 +18608,12 @@ msgstr ""
#: include/classes/api/services/CHost.php:2361
#, c-format
msgid "Template with the same visible name \"%1$s\" already exists."
-msgstr ""
+msgstr "Veidne ar tÄdu paÅ¡u redzamo nosaukumu \"%1$s\" jau pastÄv."
#: include/classes/api/services/CHostGeneral.php:146
#, c-format
msgid "Template with visible name \"%1$s\" already exists."
-msgstr ""
+msgstr "Veidne ar redzamu nosaukumu \"%1$s\" jau pastÄv."
#: app/controllers/CControllerPopupGeneric.php:121
#: app/controllers/CControllerPopupImportCompare.php:132
@@ -18330,7 +18655,7 @@ msgstr ""
#: app/controllers/CControllerPopupMassupdateTemplate.php:358
msgid "Templates updated"
-msgstr ""
+msgstr "Veidnes atjauninÄtas"
#: app/controllers/CControllerPopupTestTriggerExpr.php:212
#: app/partials/scheduledreport.formgrid.html.php:211
@@ -18807,7 +19132,7 @@ msgstr "KopÄ"
#: app/views/monitoring.widget.problemhosts.view.php:35
msgctxt "compact table header"
msgid "Total"
-msgstr ""
+msgstr "KopÄ"
#: include/classes/debug/CProfiler.php:153
#, c-format
@@ -18884,7 +19209,7 @@ msgstr ""
#: disc_prototypes.php:139 include/views/configuration.item.edit.php:885
#: include/views/configuration.item.prototype.edit.php:797 items.php:84
msgid "Trend storage period"
-msgstr ""
+msgstr "TendenÄu uzglabÄÅ¡anas periods"
#: app/partials/configuration.filter.items.php:156
#: app/partials/monitoring.latest.view.html.php:75
@@ -18894,7 +19219,7 @@ msgstr ""
#: include/forms.inc.php:587 include/views/configuration.item.list.php:94
#: include/views/configuration.item.prototype.list.php:69 items.php:260
msgid "Trends"
-msgstr ""
+msgstr "Tendences"
#: app/controllers/CControllerAuditLogList.php:242
#: app/views/popup.massupdate.trigger.php:148 include/actions.inc.php:46
@@ -19029,9 +19354,9 @@ msgstr ""
#: triggers.php:486
msgid "Trigger enabled"
msgid_plural "Triggers enabled"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Trigeris iespējots"
+msgstr[1] "Trigeri iespējoti"
+msgstr[2] "Trigeri iespējoti"
#: include/classes/api/services/CHostBase.php:1189
#, c-format
@@ -19438,11 +19763,11 @@ msgstr "Ukraiņu (uk_UA)"
#: include/classes/core/CConfigFile.php:252
msgid "Unable to change configuration file permissions to 0600."
-msgstr ""
+msgstr "Nevar mainÄ«t konfigurÄcijas faila atļaujas uz 0600."
#: include/classes/core/CConfigFile.php:261
msgid "Unable to create the configuration file."
-msgstr ""
+msgstr "Nevar izveidot konfigurÄcijas failu."
#: include/classes/db/MysqlDbBackend.php:35
#: include/classes/db/OracleDbBackend.php:36
@@ -19469,7 +19794,7 @@ msgstr ""
#: include/classes/core/CConfigFile.php:257
msgid "Unable to overwrite the existing configuration file."
-msgstr ""
+msgstr "Nevar pÄrrakstÄ«t esoÅ¡o konfigurÄcijas failu."
#: app/views/administration.housekeeping.edit.php:160
msgid "Unable to retrieve TimescaleDB compression support status."
@@ -19485,7 +19810,7 @@ msgstr ""
#: include/classes/db/DbBackend.php:147
msgid "Unable to select configuration."
-msgstr ""
+msgstr "Nevar izvÄ“lÄ“ties konfigurÄciju."
#: include/classes/helpers/CUploadFile.php:57
msgid "Unable to upload file because \"file_uploads\" is disabled."
@@ -19593,7 +19918,7 @@ msgstr "Nav zinÄms"
#: app/views/monitoring.widget.web.view.php:35
msgctxt "compact table header"
msgid "Unknown"
-msgstr ""
+msgstr "NezinÄms"
#: app/views/reports.auditlog.list.php:119
msgid "Unknown action"
@@ -19605,7 +19930,7 @@ msgstr "NezinÄma darbÄ«ba"
#: include/classes/screens/CScreenHttpTest.php:128
#: include/views/configuration.httpconf.list.php:176
msgid "Unknown error"
-msgstr ""
+msgstr "NezinÄma kļūda"
#: app/controllers/CControllerPopupTestTriggerExpr.php:47
#: app/controllers/CControllerPopupTriggerExpr.php:1347
@@ -19638,7 +19963,7 @@ msgstr "NezinÄms vÄ“rtÄ«bas tips"
#: app/views/administration.mediatype.edit.php:328
msgid "Unlimited"
-msgstr ""
+msgstr "Neierobežots"
#: app/partials/configuration.host.edit.html.php:171
#: app/views/popup.massupdate.host.php:47
@@ -19740,7 +20065,7 @@ msgstr ""
#: app/controllers/CControllerPopupTabFilterEdit.php:98
#: include/classes/services/CTabFilterProfile.php:95
msgid "Untitled"
-msgstr ""
+msgstr "Bez nosaukuma"
#: app/views/monitoring.widget.discovery.view.php:33
msgctxt "discovery results in dashboard"
@@ -19899,7 +20224,7 @@ msgstr ""
#: app/partials/configuration.host.edit.html.php:188
msgid "Use host prototype configuration form to remove automatically linked templates on upcoming discovery."
-msgstr ""
+msgstr "Izmantojiet iekÄrtu prototipa konfigurÄcijas veidlapu, lai noņemtu automÄtiski saistÄ«tÄs veidnes gaidÄmajÄ atklÄjumÄ."
#: app/views/administration.user.edit.php:300 app/views/popup.media.php:88
msgid "Use if severity"
@@ -19969,7 +20294,7 @@ msgstr ""
#: include/actions.inc.php:1976
msgid "User action"
-msgstr ""
+msgstr "LietotÄja darbÄ«ba"
#: app/controllers/CControllerUserCreate.php:112
msgid "User added"
@@ -19977,32 +20302,32 @@ msgstr "LietotÄjs pievienots"
#: include/views/configuration.httpconf.edit.php:100
msgid "User agent string"
-msgstr ""
+msgstr "LietotÄja aÄ£enta virkne"
#: include/classes/api/services/CUserGroup.php:534
#: include/classes/api/services/CUser.php:979
msgid "User cannot add himself to a disabled group or a group with disabled GUI access."
-msgstr ""
+msgstr "LietotÄjs nevar pievienot sevi atspÄ“jotajai grupai vai grupai ar atspÄ“jotu GUI piekļuvi."
#: app/views/administration.user.edit.php:409
#: include/classes/api/services/CUser.php:966
msgid "User cannot change own role."
-msgstr ""
+msgstr "LietotÄjs nevar mainÄ«t savu lomu."
#: app/views/administration.userrole.edit.php:63
msgid "User cannot change the user type of own role."
-msgstr ""
+msgstr "LietotÄjs nevar mainÄ«t savas lomas lietotÄja veidu."
#: app/controllers/CControllerUserDelete.php:56
msgid "User deleted"
msgid_plural "Users deleted"
msgstr[0] "LietotÄjs izdzÄ“sts"
-msgstr[1] ""
-msgstr[2] ""
+msgstr[1] "LietotÄji izdzÄ“sti"
+msgstr[2] "LietotÄji izdzÄ“sti"
#: app/controllers/CControllerAuditLogList.php:246
msgid "User directory"
-msgstr ""
+msgstr "LietotÄju direktorija"
#: include/classes/api/services/CUserDirectory.php:330
#, c-format
@@ -20037,7 +20362,7 @@ msgstr ""
#: include/classes/api/services/CUserGroup.php:963
#, c-format
msgid "User group \"%1$s\" is used in configuration for database down messages."
-msgstr ""
+msgstr "LietotÄju grupa \"%1$s\" tiek izmantota konfigurÄcijÄ ziņojumiem par datu bÄzes darbÄ«bu."
#: include/classes/api/services/CUserGroup.php:955
#, c-format
@@ -20069,7 +20394,7 @@ msgstr ""
#: app/controllers/CControllerUsergroupUpdate.php:98
msgid "User group updated"
msgid_plural "User groups updated"
-msgstr[0] ""
+msgstr[0] "LietotÄju grupa atjauninÄta"
msgstr[1] ""
msgstr[2] ""
@@ -20080,7 +20405,7 @@ msgstr[2] ""
#: include/classes/api/services/CUser.php:741
#, c-format
msgid "User group with ID \"%1$s\" is not available."
-msgstr ""
+msgstr "LietotÄju grupa ar ID \"%1$s\" nav pieejama."
#: app/controllers/CControllerPopupGeneric.php:197
#: app/views/administration.usergroup.edit.php:29
@@ -20098,11 +20423,11 @@ msgstr "LietotÄjam nav atļauts dzÄ“st sevi."
#: include/classes/widgets/views/widget.item.form.view.php:64
msgid "User macros"
-msgstr ""
+msgstr "LietotÄju makro"
#: app/partials/layout.htmlpage.aside.php:94
msgid "User menu"
-msgstr ""
+msgstr "LietotÄju izvÄ“lne"
#: app/views/popup.massupdate.item.php:181 disc_prototypes.php:82
#: host_discovery.php:79
@@ -20129,7 +20454,7 @@ msgstr "LietotÄja profils"
#: app/views/administration.userrole.edit.php:387
#: app/views/administration.userrole.edit.php:389
msgid "User role"
-msgstr ""
+msgstr "LietotÄju loma"
#: include/classes/api/services/CRole.php:414
#, c-format
@@ -20138,14 +20463,14 @@ msgstr ""
#: app/controllers/CControllerUserroleCreate.php:144
msgid "User role created"
-msgstr ""
+msgstr "LietotÄju loma izveidota"
#: app/controllers/CControllerUserroleDelete.php:56
msgid "User role deleted"
msgid_plural "User roles deleted"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "LietotÄju loma izdzÄ“sta"
+msgstr[1] "LietotÄju lomas izdzÄ“stas"
+msgstr[2] "LietotÄju lomas izdzÄ“stas"
#: app/controllers/CControllerUserroleUpdate.php:168
msgid "User role updated"
@@ -20189,9 +20514,9 @@ msgstr "LietotÄja tips"
#: app/controllers/CControllerUserUnblock.php:65
msgid "User unblocked"
msgid_plural "Users unblocked"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "LietotÄjs atbloÄ·Ä“ts"
+msgstr[1] "LietotÄji atbloÄ·Ä“ti"
+msgstr[2] "LietotÄji atbloÄ·Ä“ti"
#: app/controllers/CControllerUserProfileUpdate.php:118
#: app/controllers/CControllerUserUpdate.php:124
@@ -20214,7 +20539,7 @@ msgstr ""
#: include/actions.inc.php:1827 include/actions.inc.php:1921
msgid "User/Recipient"
-msgstr ""
+msgstr "LietotÄjs/SaņēmÄ“js"
#: app/controllers/CControllerPopupGeneric.php:217
#: app/partials/configuration.host.edit.html.php:314
@@ -20232,7 +20557,7 @@ msgstr "LietotÄjvÄrds"
#: app/views/administration.mediatype.edit.php:93
msgid "Username and password"
-msgstr ""
+msgstr "LietotÄjvÄrds un parole"
#: include/classes/vaults/CVaultCyberArk.php:112
msgid "Username and password must be stored in Vault secret keys \"UserName\" and \"Content\"."
@@ -20245,7 +20570,7 @@ msgstr ""
#: app/views/administration.authentication.edit.php:241
msgid "Username attribute"
-msgstr ""
+msgstr "LietotÄjvÄrda atribÅ«ts"
#: app/controllers/CControllerPopupGeneric.php:209
#: app/views/administration.token.list.php:42
@@ -21204,6 +21529,11 @@ msgstr "Darba laiks"
msgid "Write"
msgstr "Rakstīšana"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21535,6 +21865,9 @@ msgid ""
"1. Incorrect \"NodeAddress\" or \"ListenPort\" in the \"zabbix_server.conf\" or server IP/DNS override in the \"zabbix.conf.php\";\n"
"2. Incorrect network configuration.\n"
msgstr ""
+"Zabbix serveri \"%1$s\" nevar sasniegt. Iespējamie iemesli:\n"
+"1. Nepareizs \"NodeAddress\" vai \"ListenPort\" failÄ \"zabbix_server.conf\" vai servera IP/DNS pÄrņemÅ¡ana failÄ \"zabbix.conf.php\";\n"
+"2. Nepareiza tÄ«kla konfigurÄcija.\n"
#: include/classes/server/CZabbixServer.php:601
#, c-format
@@ -21543,6 +21876,9 @@ msgid ""
"1. Incorrect server IP/DNS in the \"zabbix.conf.php\";\n"
"2. Incorrect network configuration.\n"
msgstr ""
+"Zabbix serveri \"%1$s\" nevar sasniegt. Iespējamie iemesli:\n"
+"1. Nepareizs servera IP/DNS failÄ \"zabbix.conf.php\";\n"
+"2. Nepareiza tÄ«kla konfigurÄcija.\n"
#: app/views/administration.script.edit.php:126
msgid "Zabbix server (proxy)"
@@ -21745,6 +22081,14 @@ msgstr "visi"
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21814,6 +22158,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21967,6 +22323,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -22067,6 +22439,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22078,6 +22454,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -22086,6 +22466,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22513,6 +22901,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22898,6 +23290,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22987,6 +23387,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23062,6 +23466,11 @@ msgstr ""
msgid "on"
msgstr "uz"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23375,6 +23784,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "veidne ID \"%1$s\" ir nodota %2$s reizes"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23619,6 +24040,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/nb_NO/LC_MESSAGES/frontend.po b/ui/locale/nb_NO/LC_MESSAGES/frontend.po
index 803b8836d94..d27ce405301 100644
--- a/ui/locale/nb_NO/LC_MESSAGES/frontend.po
+++ b/ui/locale/nb_NO/LC_MESSAGES/frontend.po
@@ -275,6 +275,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -901,6 +906,10 @@ msgstr "Legg til ny widget"
msgid "Add child element"
msgstr "Legg til barnelement"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1228,6 +1237,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2128,10 +2167,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Kan ikke legge til webscenario"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2203,6 +2256,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "Kan ikke kopiere element"
msgstr[1] "Kan ikke kopiere elementer"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2812,6 +2875,16 @@ msgstr "Kan ikke finne vertsgruppe \"%1$s\" for vertsprototype \"%2$s\" av oppda
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Kan ikke finne vertsgrensesnitt på \"%1$s\" for elementstasten \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2929,6 +3002,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Kan ikke importere mal \"%1$s\", koblet mal \"%2$s\" eksisterer ikke."
msgstr[1] "Kan ikke importere mal \"%1$s\", koblete maler \"%2$s\" eksisterer ikke."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Kan ikke sette inn trigger-uttrykk"
@@ -3065,6 +3317,10 @@ msgstr "Kan ikke masse oppdatere synlig vertsnavn."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3151,6 +3407,46 @@ msgstr "Kan ikke angi \"%1$s\" for graf prototype \"%2$s\"."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Kan ikke angi \"%1$s\" for elementet \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9118,6 +9414,25 @@ msgstr "Utilgjengelig bruker"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14322,6 +14637,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21069,6 +21388,11 @@ msgstr "Jobbe tid"
msgid "Write"
msgstr "Skriv"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21610,6 +21934,14 @@ msgstr "alle"
msgid "all media"
msgstr "alle medier"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21679,6 +22011,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21832,6 +22176,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "kan ikke endres"
@@ -21932,6 +22292,10 @@ msgstr "kan ikke endres"
msgid "cannot be empty"
msgstr "kan ikke være tomt"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21943,6 +22307,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21951,6 +22319,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22379,6 +22755,10 @@ msgctxt "event source"
msgid "internal"
msgstr "intern"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22764,6 +23144,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22853,6 +23241,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22928,6 +23320,11 @@ msgstr "av"
msgid "on"
msgstr "på"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23241,6 +23638,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "mal ID \"%1$s\" er passert %2$s ganger"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23485,6 +23894,11 @@ msgstr ""
msgid "unsupported version number"
msgstr "ikke-støttet versjonsnummer"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/nl/LC_MESSAGES/frontend.po b/ui/locale/nl/LC_MESSAGES/frontend.po
index 06b251ef33d..3ada2a8b757 100644
--- a/ui/locale/nl/LC_MESSAGES/frontend.po
+++ b/ui/locale/nl/LC_MESSAGES/frontend.po
@@ -273,6 +273,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -899,6 +904,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1226,6 +1235,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2126,10 +2165,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Kan web scenario niet toevoegen."
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2201,6 +2254,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2809,6 +2872,16 @@ msgstr "Kan gastheer groep \"%1$s\" niet vinden voor host prototype \"%2$s\" van
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Kan de host interface op \"%1$s\" voor item key \"%2$s\" niet vinden."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2926,6 +2999,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Kan sjabloon niet importeren \"%1$s\", gekoppeld sjabloon \"%2$s\" bestaat niet."
msgstr[1] "Kan sjabloon niet importeren \"%1$s\", gekoppelde sjablonen \"%2$s\" bestaan niet."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Kan trigger-expressie niet invoegen"
@@ -3062,6 +3314,10 @@ msgstr "Kan de zichtbare hostnaam niet in bulk bijwerken."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3148,6 +3404,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "\"%1$s\" kan niet ingesteld worden voor item \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9117,6 +9413,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14321,6 +14636,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21068,6 +21387,11 @@ msgstr "Werktijd"
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21609,6 +21933,14 @@ msgstr "alle"
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21678,6 +22010,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21831,6 +22175,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21931,6 +22291,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21942,6 +22306,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21950,6 +22318,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22377,6 +22753,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22762,6 +23142,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22851,6 +23239,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22926,6 +23318,11 @@ msgstr ""
msgid "on"
msgstr "op"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23239,6 +23636,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "template ID \"%1$s\" is %2$s keer verwerkt"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23483,6 +23892,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/pl/LC_MESSAGES/frontend.po b/ui/locale/pl/LC_MESSAGES/frontend.po
index 881d0188b22..59d59ad9fc5 100644
--- a/ui/locale/pl/LC_MESSAGES/frontend.po
+++ b/ui/locale/pl/LC_MESSAGES/frontend.po
@@ -287,6 +287,11 @@ msgstr "%1$s, wybrano"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr "%1$s. %2$s: %3$s. %4$s."
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -920,6 +925,10 @@ msgstr "Dodaj nowy widżet"
msgid "Add child element"
msgstr "Dodaj element potomny"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Dodaj usługę podrzędną"
@@ -1247,6 +1256,36 @@ msgstr "Ilość fizycznej pamięci, która jest zamieniona na przestrzeń pliku
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Ilość fizycznej pamięci zyżytej na kopie stron fizycznej pamięci, <url> - URL usługi VMware, <uuid> - nazwa hosta wirtualnej maszyny VMware "
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "Analogowy"
@@ -2152,10 +2191,24 @@ msgstr "Nie można dodać użytkownika grupy"
msgid "Cannot add web scenario"
msgstr "Nie można dodać scenariusza sieci www"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "Nie można dodać widżetu: za mało miejsca na panelu."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2229,6 +2282,16 @@ msgstr[0] "Nie można skopiować pozycji"
msgstr[1] "Nie można skopiować pozycji"
msgstr[2] "Nie można skopiować pozycji"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2880,6 +2943,16 @@ msgstr "Nie można znaleźć grupy hostów \"%1$s\" dla prototypu hosta \"%2$s\"
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Nie można znaleźć interfejsu hosta \"%1$s\" dla klucza pozycji \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2998,6 +3071,185 @@ msgstr[0] "Nie można zaimportować szablonu \"%1$s\", nie istnieje podłączony
msgstr[1] "Nie można zaimportować szablonu \"%1$s\", nie istnieją podłączone szablony \"%2$s\"."
msgstr[2] "Nie można zaimportować szablonu \"%1$s\", nie istnieją podłączone szablony \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Nie można dodać wyrażenia wyzwalacza"
@@ -3135,6 +3387,10 @@ msgstr "Nie można masowo zmienić widocznej nazwy hosta."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "Nie można przekazać zduplikowanych identyfikatorów szablonów dla powiązania: %1$s."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3221,6 +3477,46 @@ msgstr "Nie można ustawić \"%1$s\" dla prototypu wykresu \"%2$s\"."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Nie można ustawić \"%1$s\" dla pozycji \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9230,6 +9526,25 @@ msgstr "Niedostępny użytkownik"
msgid "Inaccessible user group"
msgstr "Niedostępna grupa użytkowników"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14453,6 +14768,10 @@ msgstr "Strona %1$d"
msgid "Page display period"
msgstr "Czas wyświetlania strony"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21224,6 +21543,11 @@ msgstr "Czas pracy"
msgid "Write"
msgstr "Zapis"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21771,6 +22095,14 @@ msgstr "Wszystkie"
msgid "all media"
msgstr "wszystkie media"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "oczeiwano adresu IP"
@@ -21840,6 +22172,18 @@ msgstr "identyfikator nie jest zdefiniowany w formule"
msgid "an integer is expected"
msgstr "oczekiwano liczby całkowitej"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21993,6 +22337,22 @@ msgstr "obliczony"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "może zostać użyty by dodać \"@2x\" do adresu URL celem załadowania kafelków retina."
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "nie może być zmieniony"
@@ -22093,6 +22453,10 @@ msgstr "nie może być zmieniony"
msgid "cannot be empty"
msgstr "nie może być puste"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22104,6 +22468,10 @@ msgstr "musi być większy niż wartość parametru \"%1$s\""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "nie można ustawić wartości parametru \"%1$s\""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "nie można odłączyć"
@@ -22112,6 +22480,14 @@ msgstr "nie można odłączyć"
msgid "cannot convert to JSON, result value too long"
msgstr "nie można przekonwertować JSON, wynik wartości za długi"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr "nie można usunąć prototypu hosta pochodzącego z szablonu"
@@ -22539,6 +22915,10 @@ msgctxt "event source"
msgid "internal"
msgstr "wewnętrzny"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22924,6 +23304,14 @@ msgstr "musi zawierać przynajmniej jedną małą i dużą literę alfabetu łac
msgid "must contain at least one special character"
msgstr "musi zawierać przynajmniej jeden znak specjalny"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -23013,6 +23401,10 @@ msgstr "brak uprawnień do wyłączenia tłumienia problemów"
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr "nodata() - Nie odebrano danych podczas okresu czasu T (1 - prawda, 0- fałśz), Tryb (ścisły - ignoruj czas opóźenienia proxy w wysyłanych danych)"
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23088,6 +23480,11 @@ msgstr "wyłączone"
msgid "on"
msgstr "włączone"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "tylko jedna jednostka czasu jest dozwolona"
@@ -23401,6 +23798,18 @@ msgstr "tan() - Tangens z wartości"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "szablon o ID \"%1$s\" został przekazany %2$s razy"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "brakuje ostatniego znaku końca linii"
@@ -23645,6 +24054,11 @@ msgstr "niewspierany przyrostek czasu"
msgid "unsupported version number"
msgstr "niewspierany numer wersji"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "spodziewano się identyfikatora pisanego dużymi literami"
diff --git a/ui/locale/pt_BR/LC_MESSAGES/frontend.po b/ui/locale/pt_BR/LC_MESSAGES/frontend.po
index 50d6cda4583..377acd4092a 100644
--- a/ui/locale/pt_BR/LC_MESSAGES/frontend.po
+++ b/ui/locale/pt_BR/LC_MESSAGES/frontend.po
@@ -272,6 +272,11 @@ msgstr "%1$s, selecionado"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -898,6 +903,10 @@ msgstr "Adicionar um novo widget"
msgid "Add child element"
msgstr "Adicionar elemento filho"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1226,6 +1235,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2128,10 +2167,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Não foi possível adicionar a apresentação de telas"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2203,6 +2256,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "Não foi possível copiar o item"
msgstr[1] "Não foi possível copiar os itens"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2812,6 +2875,16 @@ msgstr "Não foi possível localizar o grupo de host \"%1$s\" para o protótipo
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Não foi possível encontrar interface \"%1$s\" no host para a chave do item \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2929,6 +3002,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Não foi possível importar o template \"%1$s\", vinculado com o template \"%2$s\" que não existe."
msgstr[1] "Não foi possível importar o template \"%1$s\", vinculado com os templates \"%2$s\" que não existem."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Não foi possível incluir a expressão de trigger"
@@ -3065,6 +3317,10 @@ msgstr "Não é possível atualizar em massa o nome visível do host."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3151,6 +3407,46 @@ msgstr "Não foi possível definir \"%1$s\" para o protótipo de gráfico \"%2$s
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Não é possível configurar \"%1$s\" para o item \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9119,6 +9415,25 @@ msgstr "Usuário inacessível"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14327,6 +14642,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21074,6 +21393,11 @@ msgstr "Horário comercial"
msgid "Write"
msgstr "Escrita"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21615,6 +21939,14 @@ msgstr "todos"
msgid "all media"
msgstr "todas as mídias"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21684,6 +22016,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21837,6 +22181,22 @@ msgstr "calculado"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "não pode ser modificado"
@@ -21937,6 +22297,10 @@ msgstr "não pode ser modificado"
msgid "cannot be empty"
msgstr "não pode ser vazio"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21948,6 +22312,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21956,6 +22324,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr "não é possível converter para JSON, o valor resultante é muito longo"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22384,6 +22760,10 @@ msgctxt "event source"
msgid "internal"
msgstr "interno"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22769,6 +23149,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22858,6 +23246,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22933,6 +23325,11 @@ msgstr "off"
msgid "on"
msgstr "em"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23246,6 +23643,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "template ID \"%1$s\" foi definido %2$s vezes"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23490,6 +23899,11 @@ msgstr ""
msgid "unsupported version number"
msgstr "número de versão não suportado"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/pt_PT/LC_MESSAGES/frontend.po b/ui/locale/pt_PT/LC_MESSAGES/frontend.po
index 4e318c86475..dadfa608767 100644
--- a/ui/locale/pt_PT/LC_MESSAGES/frontend.po
+++ b/ui/locale/pt_PT/LC_MESSAGES/frontend.po
@@ -271,6 +271,11 @@ msgstr "%1$s, selecionado"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr "%1$s. %2$s: %3$s. %4$s."
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -897,6 +902,10 @@ msgstr "Adicionar novo widget"
msgid "Add child element"
msgstr "Adicionar elemento filho"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Adicionar serviço dependente"
@@ -1224,6 +1233,36 @@ msgstr "Quantidade de memória física da VM que é trocada fora do espaço swap
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Quantidade de memória física da VM consumida para fazer backup de páginas de memória física do servidor, <url> - URL de serviço VMware, <uuid> - nome do servidor virtual VMware"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "Analógico"
@@ -2126,10 +2165,24 @@ msgstr "Não foi possível adicionar o grupo de utilizador"
msgid "Cannot add web scenario"
msgstr "Não foi possível adicionar a apresentação de ecrãs"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "Não é possível adicionar widget: não há espaço livre suficiente no painel."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2201,6 +2254,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "Não foi possível copiar o item"
msgstr[1] "Não foi possível copiar os itens"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2807,6 +2870,16 @@ msgstr "Não foi possível localizar o grupo de host \"%1$s\" para o protótipo
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Não foi possível encontrar interface do host em \"%1$s\" para a chave do item \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2924,6 +2997,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "Não foi possível importar o template \"%1$s\", vinculado com o template \"%2$s\" que não existe."
msgstr[1] "Não foi possível importar o template \"%1$s\", vinculado com os templates \"%2$s\" que não existem."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Não foi possível incluir a expressão de trigger"
@@ -3060,6 +3312,10 @@ msgstr "Não foi possível actualizar em massa o nome visível do host."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "Não é possível passar o ID do modelo duplicado para a ligação: %1$s."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3146,6 +3402,46 @@ msgstr "Não foi possível definir \"%1$s\" para o protótipo de gráfico \"%2$s
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Não é possível configurar \"%1$s\" para o item \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9122,6 +9418,25 @@ msgstr "Utilizador inacessível"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14326,6 +14641,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21072,6 +21391,11 @@ msgstr "Horário de trabalho"
msgid "Write"
msgstr "Escrever"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21613,6 +21937,14 @@ msgstr "tudo"
msgid "all media"
msgstr "todas as mídias"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21682,6 +22014,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21835,6 +22179,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "não pode ser modificado"
@@ -21935,6 +22295,10 @@ msgstr "não pode ser modificado"
msgid "cannot be empty"
msgstr "não pode ser vazio"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21946,6 +22310,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21954,6 +22322,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22382,6 +22758,10 @@ msgctxt "event source"
msgid "internal"
msgstr "interno"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22767,6 +23147,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22856,6 +23244,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22931,6 +23323,11 @@ msgstr "off"
msgid "on"
msgstr "sobre"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23244,6 +23641,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "o ID de template \"%1$s\" é passado %2$s vezes"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23488,6 +23897,11 @@ msgstr ""
msgid "unsupported version number"
msgstr "número de versão não suportado"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/ro/LC_MESSAGES/frontend.po b/ui/locale/ro/LC_MESSAGES/frontend.po
index 39f1c3adb26..ec9286a1d12 100644
--- a/ui/locale/ro/LC_MESSAGES/frontend.po
+++ b/ui/locale/ro/LC_MESSAGES/frontend.po
@@ -1,19 +1,20 @@
+#
msgid ""
msgstr ""
"Project-Id-Version: Zabbix 6.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-17 15:53+0200\n"
-"PO-Revision-Date: 2013-09-08 17:57+0300\n"
+"PO-Revision-Date: 2022-03-21 12:43+0000\n"
"Last-Translator: altmir <rmircea@birotec.ro>\n"
"Language-Team: Zabbix <info@zabbix.com>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);;\n"
-"X-Generator: Pootle 2.5.1.3\n"
-"X-Poedit-Basepath: ../../\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);\n"
+"X-Generator: Pontoon\n"
"X-POOTLE-MTIME: 1378655867.000000\n"
+"X-Poedit-Basepath: ../../\n"
#: app/controllers/CControllerSlaReportList.php:181
#: include/classes/widgets/forms/CWidgetFormSlaReport.php:104
@@ -286,6 +287,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -919,6 +925,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1246,6 +1256,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -1407,12 +1447,16 @@ msgstr "Eticheta activului"
msgid "At %1$s:%2$s %3$s of every week"
msgid_plural "At %1$s:%2$s %3$s of every %4$s weeks"
msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
#: include/maintenances.inc.php:50
#, c-format
msgid "At %1$s:%2$s every day"
msgid_plural "At %1$s:%2$s every %3$s days"
msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
#: include/maintenances.inc.php:112
#, c-format
@@ -2147,10 +2191,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Nu se pate adăuga scenariul web"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2224,6 +2282,16 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2358,12 +2426,11 @@ msgid "Cannot delete dependency"
msgstr "Nu se poate șterge dependința"
#: app/controllers/CControllerDiscoveryDelete.php:69 host_discovery.php:416
-#, fuzzy
msgid "Cannot delete discovery rule"
msgid_plural "Cannot delete discovery rules"
msgstr[0] "Nu se poate șterge regula de detecție"
msgstr[1] "Nu se poate șterge regula de detecție"
-msgstr[2] "Nu se poate șterge regula de detecție"
+msgstr[2] ""
#: host_discovery.php:780
msgid "Cannot delete discovery rules"
@@ -2386,12 +2453,11 @@ msgid "Cannot delete graphs"
msgstr "Nu se pot șterge graficele"
#: hostgroups.php:134 hostgroups.php:156
-#, fuzzy
msgid "Cannot delete group"
msgid_plural "Cannot delete groups"
msgstr[0] "Nu se poate șterge grupul"
-msgstr[1] "Nu se poate șterge grupul"
-msgstr[2] "Nu se poate șterge grupul"
+msgstr[1] ""
+msgstr[2] ""
#: app/controllers/CControllerHostMassDelete.php:74
msgid "Cannot delete host"
@@ -2467,12 +2533,11 @@ msgid "Cannot delete maintenance"
msgstr "Nu se poate șterge mentenanța"
#: app/controllers/CControllerMediatypeDelete.php:69
-#, fuzzy
msgid "Cannot delete media type"
msgid_plural "Cannot delete media types"
msgstr[0] "Nu se poate șterge tipul media"
-msgstr[1] "Nu se poate șterge tipul media"
-msgstr[2] "Nu se poate șterge tipul media"
+msgstr[1] ""
+msgstr[2] ""
#: app/controllers/CControllerModuleScan.php:118
#, c-format
@@ -2491,12 +2556,11 @@ msgid "Cannot delete proxies"
msgstr ""
#: app/controllers/CControllerProxyDelete.php:69
-#, fuzzy
msgid "Cannot delete proxy"
msgid_plural "Cannot delete proxies"
msgstr[0] "Nu se poate șterge proxy-ul"
-msgstr[1] "Nu se poate șterge proxy-ul"
-msgstr[2] "Nu se poate șterge proxy-ul"
+msgstr[1] ""
+msgstr[2] ""
#: include/classes/api/services/CRole.php:369
#, c-format
@@ -2518,12 +2582,11 @@ msgstr[1] ""
msgstr[2] ""
#: app/controllers/CControllerScriptDelete.php:69
-#, fuzzy
msgid "Cannot delete script"
msgid_plural "Cannot delete scripts"
msgstr[0] "Nu se poate șterge scriptul"
-msgstr[1] "Nu se poate șterge scriptul"
-msgstr[2] "Nu se poate șterge scriptul"
+msgstr[1] ""
+msgstr[2] ""
#: include/classes/api/services/CScript.php:877
#, c-format
@@ -2535,12 +2598,11 @@ msgid "Cannot delete selected actions"
msgstr "Nu se pot șterge acțiunile selectate"
#: app/controllers/CControllerServiceDelete.php:78
-#, fuzzy
msgid "Cannot delete service"
msgid_plural "Cannot delete services"
msgstr[0] "Nu se poate șterge serviciul"
-msgstr[1] "Nu se poate șterge serviciul"
-msgstr[2] "Nu se poate șterge serviciul"
+msgstr[1] ""
+msgstr[2] ""
#: include/classes/api/services/CService.php:455
#: include/classes/api/services/CService.php:470
@@ -2881,6 +2943,16 @@ msgstr "Nu se poate gasi grupul server \"%1$s\" pentru serverul prototip \"%2$s\
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Nu se poate găsi interfața serverului în \"%1$s\" pentru elementul \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2999,6 +3071,185 @@ msgstr[0] "Nu se poate importa template-ul \"%1$s\", șablonul corelat \"%2$s\"
msgstr[1] "Nu se poate importa template-ul \"%1$s\", șabloanele corelate \"%2$s\" nu există."
msgstr[2] "Nu se poate importa template-ul \"%1$s\", șabloanele corelate \"%2$s\" nu există."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Nu se poate introduce expresia trigger"
@@ -3136,6 +3387,10 @@ msgstr "Nu se poate face actualizare în masă a numelui vizibil al serverului."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3222,6 +3477,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Nu se poate seta \"%1$s\" pentru elementul \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -6219,12 +6514,11 @@ msgid "Discovery rule created"
msgstr "Regulă de detecție creată"
#: app/controllers/CControllerDiscoveryDelete.php:66 host_discovery.php:416
-#, fuzzy
msgid "Discovery rule deleted"
msgid_plural "Discovery rules deleted"
msgstr[0] "Regulă de detecție ștearsă"
-msgstr[1] "Regulă de detecție ștearsă"
-msgstr[2] "Regulă de detecție ștearsă"
+msgstr[1] ""
+msgstr[2] ""
#: app/controllers/CControllerDiscoveryDisable.php:71 host_discovery.php:767
msgid "Discovery rule disabled"
@@ -6976,7 +7270,6 @@ msgid "Event ID"
msgstr "Eveniment ID"
#: include/actions.inc.php:61
-#, fuzzy
msgid "Event acknowledged"
msgstr "Eveniment confirmat"
@@ -8022,12 +8315,11 @@ msgid "Group added"
msgstr "Grup adăugat"
#: hostgroups.php:134 hostgroups.php:155
-#, fuzzy
msgid "Group deleted"
msgid_plural "Groups deleted"
msgstr[0] "Grup șters"
-msgstr[1] "Grup șters"
-msgstr[2] "Grup șters"
+msgstr[1] ""
+msgstr[2] ""
#: app/views/administration.miscconfig.edit.php:40
msgid "Group for discovered hosts"
@@ -9217,6 +9509,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -12081,12 +12392,11 @@ msgid "Media type added"
msgstr "Tipul media adăugat"
#: app/controllers/CControllerMediatypeDelete.php:66
-#, fuzzy
msgid "Media type deleted"
msgid_plural "Media types deleted"
msgstr[0] "Tipul media șters"
-msgstr[1] "Tipul media șters"
-msgstr[2] "Tipul media șters"
+msgstr[1] ""
+msgstr[2] ""
#: app/controllers/CControllerMediatypeDisable.php:72
msgid "Media type disabled"
@@ -14442,6 +14752,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -15187,12 +15501,11 @@ msgid "Proxy address"
msgstr ""
#: app/controllers/CControllerProxyDelete.php:66
-#, fuzzy
msgid "Proxy deleted"
msgid_plural "Proxies deleted"
msgstr[0] "Proxy șters"
-msgstr[1] "Proxy șters"
-msgstr[2] "Proxy șters"
+msgstr[1] ""
+msgstr[2] ""
#: app/views/administration.proxy.edit.php:72
msgid "Proxy mode"
@@ -16623,12 +16936,11 @@ msgid "Script added"
msgstr "Script adăugat"
#: app/controllers/CControllerScriptDelete.php:66
-#, fuzzy
msgid "Script deleted"
msgid_plural "Scripts deleted"
msgstr[0] "Script șters"
-msgstr[1] "Script șters"
-msgstr[2] "Script șters"
+msgstr[1] ""
+msgstr[2] ""
#: app/views/js/popup.scriptexec.js.php:47
msgid "Script execution log"
@@ -16936,12 +17248,11 @@ msgid "Service data storage period"
msgstr ""
#: app/controllers/CControllerServiceDelete.php:63
-#, fuzzy
msgid "Service deleted"
msgid_plural "Services deleted"
msgstr[0] "Serviciu șters"
-msgstr[1] "Serviciu șters"
-msgstr[2] "Serviciu șters"
+msgstr[1] ""
+msgstr[2] ""
#: app/views/administration.userrole.edit.php:146
#: app/views/administration.userrole.edit.php:187
@@ -21217,6 +21528,11 @@ msgstr "Timp de lucru"
msgid "Write"
msgstr "Scriere"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21758,6 +22074,14 @@ msgstr "toți"
msgid "all media"
msgstr "toata media"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21827,6 +22151,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21980,6 +22316,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -22080,6 +22432,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22091,6 +22447,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -22099,6 +22459,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22526,6 +22894,10 @@ msgctxt "event source"
msgid "internal"
msgstr "intern"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22911,6 +23283,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -23000,6 +23380,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23075,6 +23459,11 @@ msgstr "închis"
msgid "on"
msgstr "pornit"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23388,6 +23777,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "ID șablon \"%1$s\" este trecut %2$s ori"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23632,6 +24033,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/ru/LC_MESSAGES/frontend.po b/ui/locale/ru/LC_MESSAGES/frontend.po
index 5029b869254..b4ef5fd67fb 100644
--- a/ui/locale/ru/LC_MESSAGES/frontend.po
+++ b/ui/locale/ru/LC_MESSAGES/frontend.po
@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: Zabbix 6.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-03-17 15:53+0200\n"
-"PO-Revision-Date: 2022-09-29 11:41+0000\n"
-"Last-Translator: sergejs.maklakovs <sergejs.maklakovs@zabbix.com>\n"
+"PO-Revision-Date: 2022-11-04 09:12+0000\n"
+"Last-Translator: Mikhail Grigorev <sleuthhound@gmail.com>\n"
"Language-Team: Zabbix translation team\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
@@ -287,6 +287,11 @@ msgstr "%1$s, выбрано"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -920,6 +925,10 @@ msgstr "Добавить новый виджет"
msgid "Add child element"
msgstr "Добавить Ñлемент потомка"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Добавить дочернюю уÑлугу"
@@ -1247,6 +1256,36 @@ msgstr "КоличеÑтво физичеÑкой памÑти гоÑÑ‚Ñ, коÑ
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Общее количеÑтво потреблÑемой физичеÑкой памÑти хоÑта на резервное копирование Ñтраниц физичеÑкой памÑти гоÑÑ‚Ñ, <url> - URL Ñлужбы VMware, <uuid> - Ð¸Ð¼Ñ Ñ…Ð¾Ñта виртуальной машины VMware"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "Ðналоговый"
@@ -2152,10 +2191,24 @@ msgstr "Ðе удалоÑÑŒ добавить группу пользовател
msgid "Cannot add web scenario"
msgstr "Ðе удалоÑÑŒ добавить веб-Ñценарий"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "Ðе удалоÑÑŒ добавить виджет: не хватает Ñвободного меÑта на ПÐÐЕЛИ."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2229,6 +2282,16 @@ msgstr[0] "Ðе удалоÑÑŒ Ñкопировать Ñлемент даных"
msgstr[1] "Ðе удалоÑÑŒ Ñкопировать Ñлементы даных"
msgstr[2] "Ðе удалоÑÑŒ Ñкопировать Ñлементы даных"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2490,7 +2553,7 @@ msgstr "Ðе удалоÑÑŒ удалить карту Ñети"
#: app/controllers/CControllerProxyDelete.php:39
msgid "Cannot delete proxies"
-msgstr ""
+msgstr "Ðе удалоÑÑŒ удалить прокÑи"
#: app/controllers/CControllerProxyDelete.php:69
msgid "Cannot delete proxy"
@@ -2554,7 +2617,7 @@ msgstr "Ðе удалоÑÑŒ удалить шаблон"
#: app/controllers/CControllerTemplateGroupDelete.php:75
msgid "Cannot delete template group"
msgid_plural "Cannot delete template groups"
-msgstr[0] ""
+msgstr[0] "Ðе удалоÑÑŒ удалить группу шаблонов"
msgstr[1] ""
msgstr[2] ""
@@ -2880,6 +2943,16 @@ msgstr "Ðе удалоÑÑŒ найти группу узлов Ñети \"%1$s\"
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Ðе удалоÑÑŒ найти Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñƒ узла Ñети \"%1$s\" Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° Ñлемента данных \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2998,6 +3071,185 @@ msgstr[0] "Ðе удалоÑÑŒ импортировать шаблон \"%1$s\",
msgstr[1] "Ðе удалоÑÑŒ импортировать шаблон \"%1$s\", Ñоединенные шаблоны \"%2$s\" не ÑущеÑтвуют."
msgstr[2] "Ðе удалоÑÑŒ импортировать шаблон \"%1$s\", Ñоединенные шаблоны \"%2$s\" не ÑущеÑтвуют."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Ðе удалоÑÑŒ вÑтавить выражение триггера"
@@ -3135,6 +3387,10 @@ msgstr "Ðевозможно маÑÑово обновить видимое им
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "Ðевозможно передать дубликаты ID шаблонов Ð´Ð»Ñ ÑоединениÑ: %1$s."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3221,6 +3477,46 @@ msgstr "Ðе удалоÑÑŒ уÑтановить \"%1$s\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾Ñ‚Ð¸Ð
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Ðе удалоÑÑŒ уÑтановить \"%1$s\" Ð´Ð»Ñ Ñлемента данных \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9219,6 +9515,25 @@ msgstr "ÐедоÑтупный пользователь"
msgid "Inaccessible user group"
msgstr "ÐедоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° пользователей"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14442,6 +14757,10 @@ msgstr "Страница %1$d"
msgid "Page display period"
msgstr "Период Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñтраницы"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21213,6 +21532,11 @@ msgstr "Рабочее времÑ"
msgid "Write"
msgstr "ЗапиÑÑŒ"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21757,6 +22081,14 @@ msgstr "вÑе"
msgid "all media"
msgstr "вÑе ÑпоÑобы оповещениÑ"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "ожидаетÑÑ IP адреÑ"
@@ -21826,6 +22158,18 @@ msgstr "идентификатор не задан в формуле"
msgid "an integer is expected"
msgstr "ожидаетÑÑ Ñ†ÐµÐ»Ð¾Ðµ чиÑло"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21979,6 +22323,22 @@ msgstr "вычиÑлÑемое"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "можно иÑпользовать Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ \"@2x\" в URL Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ retina плитки."
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ"
@@ -22079,6 +22439,10 @@ msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ"
msgid "cannot be empty"
msgstr "не может быть пуÑтым"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22090,6 +22454,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "невозможно указать значение параметра \"%1$s\""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "не удалоÑÑŒ отÑоединить"
@@ -22098,6 +22466,14 @@ msgstr "не удалоÑÑŒ отÑоединить"
msgid "cannot convert to JSON, result value too long"
msgstr "не удалоÑÑŒ Ñконвертировать в JSON, значение результата Ñлишком длинное"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22525,6 +22901,10 @@ msgctxt "event source"
msgid "internal"
msgstr "внутренний"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22910,6 +23290,14 @@ msgstr "должен Ñодержать по крайней мере одну л
msgid "must contain at least one special character"
msgstr "должен Ñодержать по крайней мере один ÑпецÑимвол"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22999,6 +23387,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr "nodata() - ОтÑутÑтвие данных полученных за период времени T (1 - правда, 0 - ложь), Режим (strict - игнорировать задержку прокÑи при отправке данных)"
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23074,6 +23466,11 @@ msgstr "выкл"
msgid "on"
msgstr "в"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "разрешено только одно преобразование времени"
@@ -23387,6 +23784,18 @@ msgstr "tan() - Ð¢Ð°Ð½Ð³ÐµÐ½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "шаблон Ñ ID \"%1$s\" был вÑтречен %2$s раз"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "поÑледний перевод на новую Ñтроку отÑутÑтвует"
@@ -23631,6 +24040,11 @@ msgstr "неподдерживаемый ÑÑƒÑ„Ñ„Ð¸ÐºÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸"
msgid "unsupported version number"
msgstr "неподдерживаемый номер верÑии"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "ожидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ в верхнем региÑтре"
diff --git a/ui/locale/sk/LC_MESSAGES/frontend.po b/ui/locale/sk/LC_MESSAGES/frontend.po
index fc23609a3cc..17167152c9a 100644
--- a/ui/locale/sk/LC_MESSAGES/frontend.po
+++ b/ui/locale/sk/LC_MESSAGES/frontend.po
@@ -288,6 +288,11 @@ msgstr "%1$s, vybraté"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -921,6 +926,10 @@ msgstr "Pridajte nový widget"
msgid "Add child element"
msgstr "Pridať podradený element"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "Pridajte podradenú službu"
@@ -1248,6 +1257,36 @@ msgstr "Množstvo fyzickej pamäte hosta, ktorá je vymenená do swapu, <url> -
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "Množstvo fyzickej pamäte hostiteľa spotrebovanej na zálohovanie stránok fyzickej pamäte hosta, <url> – URL služby VMware, <uuid> – názov hosta virtuálneho poÄítaÄa VMware"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "Analógové"
@@ -2153,10 +2192,24 @@ msgstr "Nie je možné pridať skupinu používateľov"
msgid "Cannot add web scenario"
msgstr "Nie je možné pridať scenár"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "Nie je možné pridať widget: na dashboarde nie je dostatok voľného miesta."
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2230,6 +2283,16 @@ msgstr[0] "Nie je možné skopírovat položku"
msgstr[1] "Nie je možné skopírovat položky"
msgstr[2] "Nie je možné skopírovat položky"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2881,6 +2944,16 @@ msgstr "Nemôžem nájsť skupinu \"%1$s\" pre prototyp hosta \"%2$s\" zisťovac
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Nemôžem nájsÅ¥ hostiteľské rozhranie na \"%1$s\" pre kÄ¾ÃºÄ položky \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2999,6 +3072,185 @@ msgstr[0] "Nie je možné importovať šablónu \"%1$s\", prepojená šablóna \
msgstr[1] "Nie je možné importovať šablónu \"%1$s\", prepojené šablóny \"%2$s\" neexistujú."
msgstr[2] "Nie je možné importovať šablónu \"%1$s\", prepojené šablóny \"%2$s\" neexistujú."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Nie je možné vložiÅ¥ výraz spúšťaÄa"
@@ -3136,6 +3388,10 @@ msgstr "Nie je možné hromadne aktualizovať zobrazované meno hosta."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "Nie je možné vykonať viacnásobné linkovanie templatov s ID: %1$s."
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3222,6 +3478,46 @@ msgstr "Nemožno nastaviť \"%1$s\" pre prototyp grafu \"%2$s\"."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Nie je možné nastaviť \"%1$s\" pre položku \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9220,6 +9516,25 @@ msgstr "Nedostupný používateľ"
msgid "Inaccessible user group"
msgstr "Neprístupná skupina používateľov"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14443,6 +14758,10 @@ msgstr "Stránka %1$d"
msgid "Page display period"
msgstr "Obdobie zobrazenia stránky"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21214,6 +21533,11 @@ msgstr "Pracovný Äas"
msgid "Write"
msgstr "Zápis"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21758,6 +22082,14 @@ msgstr "všetky"
msgid "all media"
msgstr "všetky médiá"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "oÄakáva sa IP adresa"
@@ -21827,6 +22159,18 @@ msgstr "vo vzorci nie je definovaný identifikátor"
msgid "an integer is expected"
msgstr "oÄakáva sa integer"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21980,6 +22324,22 @@ msgstr "vypoÄítané"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "možno použiÅ¥ na pridanie „@2x“ k adrese URL na naÄítanie dlaždíc sietnice."
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "nemožno zmeniť"
@@ -22080,6 +22440,10 @@ msgstr "nemožno zmeniť"
msgid "cannot be empty"
msgstr "nemôže byť prázdny"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22091,6 +22455,10 @@ msgstr "nemôže byť menšia alebo rovná hodnote parametra \"%1$s\""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "nemožno zadať hodnotu parametra \"%1$s\""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "nemožno odpojiť"
@@ -22099,6 +22467,14 @@ msgstr "nemožno odpojiť"
msgid "cannot convert to JSON, result value too long"
msgstr "nemožno konvertovať na JSON, výsledná hodnota je príliš dlhá"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr "nemôže odstrániť template prototyp hosta"
@@ -22526,6 +22902,10 @@ msgctxt "event source"
msgid "internal"
msgstr "interný"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22911,6 +23291,14 @@ msgstr "musí obsahovať aspoň jedno malé a jedno veľké latinské písmeno"
msgid "must contain at least one special character"
msgstr "musí obsahovať aspoň jeden špeciálny znak"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -23000,6 +23388,10 @@ msgstr "žiadne povolenia na deaktiváciu problémov"
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr "nodata() - PoÄas Äasového obdobia T neboli prijaté žiadne údaje (1 - pravda, 0 - nepravda), Režim (prísny - ignorovanie Äasového oneskorenia proxy pri odosielaní údajov)"
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23075,6 +23467,11 @@ msgstr "off"
msgid "on"
msgstr "v"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "je povolená iba jedna Äasová jednotka"
@@ -23388,6 +23785,18 @@ msgstr "tan() – tangens hodnoty"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "šablóna ID \"%1$s\" je použitá %2$s krát"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "chýba posledný nový riadok"
@@ -23632,6 +24041,11 @@ msgstr "nepodporovaná Äasová prípona"
msgid "unsupported version number"
msgstr "nepodporované Äíslo verzie"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "oÄakáva sa veľký identifikátor"
diff --git a/ui/locale/sv_SE/LC_MESSAGES/frontend.po b/ui/locale/sv_SE/LC_MESSAGES/frontend.po
index a9537906b44..8ddefd7c188 100644
--- a/ui/locale/sv_SE/LC_MESSAGES/frontend.po
+++ b/ui/locale/sv_SE/LC_MESSAGES/frontend.po
@@ -272,6 +272,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -898,6 +903,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1225,6 +1234,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2127,10 +2166,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr ""
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2202,6 +2255,16 @@ msgid_plural "Cannot copy items"
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2808,6 +2871,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2925,6 +2998,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] ""
msgstr[1] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr ""
@@ -3061,6 +3313,10 @@ msgstr ""
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3147,6 +3403,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9111,6 +9407,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14314,6 +14629,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21060,6 +21379,11 @@ msgstr "Arbetstid"
msgid "Write"
msgstr ""
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21601,6 +21925,14 @@ msgstr "alla"
msgid "all media"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21670,6 +22002,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21823,6 +22167,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21923,6 +22283,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21934,6 +22298,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21942,6 +22310,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22369,6 +22745,10 @@ msgctxt "event source"
msgid "internal"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22754,6 +23134,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22843,6 +23231,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22918,6 +23310,11 @@ msgstr ""
msgid "on"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23231,6 +23628,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23475,6 +23884,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/tr/LC_MESSAGES/frontend.po b/ui/locale/tr/LC_MESSAGES/frontend.po
index 6788a4f8049..2023411879a 100644
--- a/ui/locale/tr/LC_MESSAGES/frontend.po
+++ b/ui/locale/tr/LC_MESSAGES/frontend.po
@@ -271,6 +271,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -899,6 +904,10 @@ msgstr "Yeni bir parçacık ekle"
msgid "Add child element"
msgstr "Alt öğe ekle"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1226,6 +1235,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2127,10 +2166,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Web senaryosu eklenemiyor"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2202,6 +2255,16 @@ msgid_plural "Cannot copy items"
msgstr[0] "Öğe kopyalanamıyor"
msgstr[1] "Öğeler kopyalanamıyor"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2811,6 +2874,16 @@ msgstr "\"%4$s\" üzerindeki \"%3$s\" keşif kuralının ana makine prototipi \"
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "\"%2$s\" öğe anahtarı için \"%1$s\" üzerinde ana makine arayüzü bulunamadı."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2928,6 +3001,185 @@ msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not
msgstr[0] "\"%1$s\" şablonu içe aktarılamıyor, \"%2$s\" bağlantılı şablonu mevcut değil."
msgstr[1] "\"%1$s\" şablonu içe aktarılamıyor, \"%2$s\" bağlantılı şablonları mevcut değil."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Tetikleyici ifadesi eklenemiyor"
@@ -3064,6 +3316,10 @@ msgstr "Görünür ana makine adına toplu güncelleme yapılamıyor."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3150,6 +3406,46 @@ msgstr "\"%2$s\" grafik prototipi için \"%1$s\" ayarlanamıyor."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "\"%2$s\" öğesi için \"%1$s\" ayarlanamıyor."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9116,6 +9412,25 @@ msgstr "Erişilemeyen kullanıcı"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14319,6 +14634,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21067,6 +21386,11 @@ msgstr "Çalışma süresi"
msgid "Write"
msgstr "Yaz"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21608,6 +21932,14 @@ msgstr "hepsi"
msgid "all media"
msgstr "bütün medyalar"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21677,6 +22009,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21830,6 +22174,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "deÄŸiÅŸtirilemez"
@@ -21930,6 +22290,10 @@ msgstr "deÄŸiÅŸtirilemez"
msgid "cannot be empty"
msgstr "boÅŸ olamaz"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21941,6 +22305,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21949,6 +22317,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22376,6 +22752,10 @@ msgctxt "event source"
msgid "internal"
msgstr "dahili"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22761,6 +23141,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22850,6 +23238,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22925,6 +23317,11 @@ msgstr "kapalı"
msgid "on"
msgstr "de"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23238,6 +23635,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "\"%1$s\" şablon ID'si %2$s defa geçti"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23482,6 +23891,11 @@ msgstr ""
msgid "unsupported version number"
msgstr "desteklenmeyen sürüm numarası"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/uk/LC_MESSAGES/frontend.po b/ui/locale/uk/LC_MESSAGES/frontend.po
index bb79a052f4c..f30f50a492c 100644
--- a/ui/locale/uk/LC_MESSAGES/frontend.po
+++ b/ui/locale/uk/LC_MESSAGES/frontend.po
@@ -286,6 +286,11 @@ msgstr "%1$s, обрано"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -919,6 +924,10 @@ msgstr "Додати новий віджет"
msgid "Add child element"
msgstr "Додати підлеглий елемент"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1246,6 +1255,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2151,10 +2190,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ веб Ñценарій"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2228,6 +2281,16 @@ msgstr[0] "Ðе вдалоÑÑ Ñкопіювати елемент даних"
msgstr[1] "Ðе вдалоÑÑ Ñкопіювати елементи даних"
msgstr[2] "Ðе вдалоÑÑ Ñкопіювати елементи даних"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2882,6 +2945,16 @@ msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ групу вузлів мережі \"
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²ÑƒÐ·Ð»Ð° мережі \"%1$s\" Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° елемента даних \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -3000,6 +3073,185 @@ msgstr[0] "Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ шаблон \"%1$s\", пÑ
msgstr[1] "Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ шаблон \"%1$s\", приєднані шаблони \"%2$s\" не Ñ–Ñнують."
msgstr[2] "Ðе вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ шаблон \"%1$s\", приєднані шаблони \"%2$s\" не Ñ–Ñнують."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Ðе вдалоÑÑ Ð²Ñтавити вираз тригера"
@@ -3137,6 +3389,10 @@ msgstr "Ðеможливо маÑово оновити видиме ім'Ñ Ð²Ñƒ
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3223,6 +3479,46 @@ msgstr "Ðе вдалоÑÑ Ð²Ñтановити \"%1$s\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾Ñ‚Ð¸Ð
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð´Ð°Ñ‚Ð¸ \"%1$s\" Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° даних \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9212,6 +9508,25 @@ msgstr "ÐедоÑтупний кориÑтувач"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14435,6 +14750,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -21207,6 +21526,11 @@ msgstr "Робочий чаÑ"
msgid "Write"
msgstr "ЗапиÑ"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21748,6 +22072,14 @@ msgstr "вÑÑ–"
msgid "all media"
msgstr "вÑÑ– методи повідомлень"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21817,6 +22149,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21970,6 +22314,22 @@ msgstr "вираховуване"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "неможливо змінити"
@@ -22070,6 +22430,10 @@ msgstr "неможливо змінити"
msgid "cannot be empty"
msgstr "не може бути пуÑтим"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -22081,6 +22445,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -22089,6 +22457,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr "не вдалоÑÑ ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ в JSON, результативне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ довге"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22516,6 +22892,10 @@ msgctxt "event source"
msgid "internal"
msgstr "внутрішній"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22901,6 +23281,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22990,6 +23378,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -23065,6 +23457,11 @@ msgstr "вимк"
msgid "on"
msgstr "в"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "дозволÑєтьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ одна Ð¾Ð´Ð¸Ð½Ð¸Ñ†Ñ Ñ‡Ð°Ñу"
@@ -23378,6 +23775,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "шаблон з ID \"%1$s\" передано %2$s разів"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23622,6 +24031,11 @@ msgstr "непідтримуваний ÑÑƒÑ„Ñ–ÐºÑ Ñ‡Ð°Ñу"
msgid "unsupported version number"
msgstr "непідтримуваний номер верÑÑ–Ñ—"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/vi/LC_MESSAGES/frontend.po b/ui/locale/vi/LC_MESSAGES/frontend.po
index c6b3321d7b7..22a765c9568 100644
--- a/ui/locale/vi/LC_MESSAGES/frontend.po
+++ b/ui/locale/vi/LC_MESSAGES/frontend.po
@@ -256,6 +256,11 @@ msgstr "%1$s, chá»n"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -875,6 +880,10 @@ msgstr "Thêm má»™t ô Ä‘iá»u khiển má»›i"
msgid "Add child element"
msgstr "Thêm phần tử con"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1202,6 +1211,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2105,10 +2144,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "Không thể thêm web scenario"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2178,6 +2231,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] "Không thể sao chép item"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2742,6 +2805,16 @@ msgstr "Không thể tiÌ€m thâÌy nhoÌm host \"%1$s\" cho kiểu host \"%2$s
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "Không thể tiÌ€m thâÌt host interface trên \"%1$s\" cho item key \"%2$s\"."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2858,6 +2931,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] "Không thể nhập template \"%1$s\", template được liên kết \"%2$s\" không tồn tại."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "Không thể cheÌ€n biểu thÆ°Ìc trigger"
@@ -2993,6 +3245,10 @@ msgstr "Không thể cập nhật cuÌ€ng một luÌc visible host name."
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3079,6 +3335,46 @@ msgstr "Không thể đặt \"%1$s\" cho kiểu đồ thị \"%2$s\"."
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "Không thể đặt lại \"%1$s\" cho item \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9022,6 +9318,25 @@ msgstr " NgÆ°á»i dùng không thể truy cập"
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14205,6 +14520,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20927,6 +21246,11 @@ msgstr "Thời gian làm việc"
msgid "Write"
msgstr "Ghi"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21468,6 +21792,14 @@ msgstr "TâÌt cả"
msgid "all media"
msgstr "TâÌt cả media"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21537,6 +21869,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21690,6 +22034,22 @@ msgstr "Tính toán"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "Không thể thay đổi"
@@ -21790,6 +22150,10 @@ msgstr "Không thể thay đổi"
msgid "cannot be empty"
msgstr "Không thể để trống"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21801,6 +22165,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21809,6 +22177,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr "không thể chuyển đổi sang JSON, giá trị kết quả quá dài"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22236,6 +22612,10 @@ msgctxt "event source"
msgid "internal"
msgstr "internal"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22621,6 +23001,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22710,6 +23098,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22785,6 +23177,11 @@ msgstr "off"
msgid "on"
msgstr "on"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23098,6 +23495,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "ID template \"%1$s\" được thông qua %2$s lần"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23342,6 +23751,11 @@ msgstr ""
msgid "unsupported version number"
msgstr "Số phiên bản không được hỗ trợ"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/locale/zh_CN/LC_MESSAGES/frontend.po b/ui/locale/zh_CN/LC_MESSAGES/frontend.po
index c3b81061806..f2af43d9ff8 100644
--- a/ui/locale/zh_CN/LC_MESSAGES/frontend.po
+++ b/ui/locale/zh_CN/LC_MESSAGES/frontend.po
@@ -260,6 +260,11 @@ msgstr "%1$s, 已选择"
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr "%1$s. %2$s: %3$s. %4$s."
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -879,6 +884,10 @@ msgstr "添加新部件"
msgid "Add child element"
msgstr "添加å­èŠ‚点元素"
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr "添加å­æœåŠ¡"
@@ -1206,6 +1215,36 @@ msgstr "æ¢å‡ºåˆ°ç¼“存空间的客户机物ç†å†…å­˜é‡, <url> - VMwareæœåŠ¡UR
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr "用于备份客户物ç†å†…存页é¢çš„主机物ç†å†…å­˜é‡, <url> - VMwareæœåŠ¡URL, <uuid> - VMware虚机主机å"
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr "指针å¼æ—¶é’Ÿ"
@@ -2105,10 +2144,24 @@ msgstr "无法添加用户组"
msgid "Cannot add web scenario"
msgstr "无法添加web场景"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr "无法添加部件:仪表盘上的å¯ç”¨ç©ºé—´ä¸è¶³ã€‚"
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2178,6 +2231,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] "无法å¤åˆ¶ç›‘控项"
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2739,6 +2802,16 @@ msgstr "在 \"%4$s\"上无法针对自动å‘现规则 \"%3$s\"上的\"%2$s\"主æ
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "在 \"%1$s\" 找ä¸åˆ°ç”¨äºŽç›‘控项 key\"%2$s\" 的主机接å£."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2855,6 +2928,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] "æ— æ³•å¯¼å…¥æ¨¡æ¿ \"%1$s\",被关è”的模æ¿\"%2$s\"ä¸å­˜åœ¨."
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "ä¸èƒ½æ’入触å‘器表达å¼"
@@ -2990,6 +3242,10 @@ msgstr "无法大é‡æ›´æ–°å¯è§ä¸»æœºå称。"
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr "无法为链接传递é‡å¤çš„æ¨¡æ¿ ID:%1$s。"
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3076,6 +3332,46 @@ msgstr "åœ¨æ¨¡æ¿ \"%2$s\" 中无法设置 \"%1$s\""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr "无法设置 \"%1$s\" 为监控项 \"%2$s\"."
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9040,6 +9336,25 @@ msgstr "用户无法访问"
msgid "Inaccessible user group"
msgstr "无法访问用户组"
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14223,6 +14538,10 @@ msgstr "页 %1$d"
msgid "Page display period"
msgstr "页é¢æ˜¾ç¤ºå‘¨æœŸ"
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20944,6 +21263,11 @@ msgstr "工作时间"
msgid "Write"
msgstr "写"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21491,6 +21815,14 @@ msgstr "所有"
msgid "all media"
msgstr "所有介质"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr "应为 IP 地å€"
@@ -21560,6 +21892,18 @@ msgstr "å…¬å¼ä¸­æœªå®šä¹‰æ ‡è¯†ç¬¦"
msgid "an integer is expected"
msgstr "应为整数"
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21713,6 +22057,22 @@ msgstr "计算的"
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr "å¯ç”¨äºŽå°†â€œ@2xâ€æ·»åŠ åˆ° URL 以加载高清瓦片地图。"
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr "ä¸èƒ½å˜æ›´"
@@ -21813,6 +22173,10 @@ msgstr "ä¸èƒ½å˜æ›´"
msgid "cannot be empty"
msgstr "ä¸èƒ½ä¸ºç©º"
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21824,6 +22188,10 @@ msgstr "ä¸èƒ½å°äºŽæˆ–等于å‚数“%1$sâ€çš„值"
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr "无法指定å‚数“%1$sâ€çš„值"
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr "无法å–消链接"
@@ -21832,6 +22200,14 @@ msgstr "无法å–消链接"
msgid "cannot convert to JSON, result value too long"
msgstr "无法转æ¢åˆ° JSON,结果值太长"
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr "无法删除模æ¿ä¸­çš„主机原型"
@@ -22259,6 +22635,10 @@ msgctxt "event source"
msgid "internal"
msgstr "事件æº"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22644,6 +23024,14 @@ msgstr "必须至少包å«ä¸€ä¸ªå°å†™å’Œä¸€ä¸ªå¤§å†™å­—æ¯"
msgid "must contain at least one special character"
msgstr "必须至少包å«ä¸€ä¸ªç‰¹æ®Šå­—符"
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22733,6 +23121,10 @@ msgstr "æ— æƒå–消抑制问题"
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr "nodata() - 在时间段 T 内没有接收到数æ®ï¼ˆ1 - 真,0 - å‡ï¼‰ï¼Œæ¨¡å¼ï¼ˆstrict - 忽略å‘é€æ•°æ®çš„代ç†æ—¶é—´å»¶è¿Ÿï¼‰"
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22808,6 +23200,11 @@ msgstr "关闭"
msgid "on"
msgstr "于"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr "åªå…许一个时间å•ä½"
@@ -23121,6 +23518,18 @@ msgstr "tan() - 正切"
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "模æ¿ID\"%1$s\"已传é€%2$s次"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr "结尾缺少一个æ¢è¡Œç¬¦"
@@ -23365,6 +23774,11 @@ msgstr "ä¸æ”¯æŒçš„时间åŽç¼€"
msgid "unsupported version number"
msgstr "这个版本已ç»ä¸è¢«æ”¯æŒ"
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr "应为大写标识符"
diff --git a/ui/locale/zh_TW/LC_MESSAGES/frontend.po b/ui/locale/zh_TW/LC_MESSAGES/frontend.po
index 29cc8219957..ef30efd8631 100644
--- a/ui/locale/zh_TW/LC_MESSAGES/frontend.po
+++ b/ui/locale/zh_TW/LC_MESSAGES/frontend.po
@@ -259,6 +259,11 @@ msgstr ""
msgid "%1$s. %2$s: %3$s. %4$s."
msgstr ""
+#: include/classes/core/CModuleManager.php:153
+#, c-format
+msgid "%1$s.php class must extend %2$s for module located at %3$s."
+msgstr ""
+
#: app/controllers/CControllerMediatypeEnable.php:108
#, c-format
msgid "%1$s: %2$s"
@@ -878,6 +883,10 @@ msgstr ""
msgid "Add child element"
msgstr ""
+#: widgets/navtree/Widget.php:39
+msgid "Add child elements"
+msgstr ""
+
#: app/partials/service.list.edit.php:120
msgid "Add child service"
msgstr ""
@@ -1205,6 +1214,36 @@ msgstr ""
msgid "Amount of host physical memory consumed for backing up guest physical memory pages, <url> - VMware service URL, <uuid> - VMware virtual machine host name"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1544
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1543
+#, c-format
+msgid "An LLD rule with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1538
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1537
+#, c-format
+msgid "An item prototype with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1532
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the host \"%2$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1531
+#, c-format
+msgid "An item with key \"%1$s\" already exists on the template \"%2$s\"."
+msgstr ""
+
#: include/classes/widgets/forms/CWidgetFormClock.php:73
msgid "Analog"
msgstr ""
@@ -2104,10 +2143,24 @@ msgstr ""
msgid "Cannot add web scenario"
msgstr "無法新增網é æª¢æ¸¬"
+#: jsLoader.php:129
+msgid "Cannot add widget: no widgets available."
+msgstr ""
+
#: jsLoader.php:134
msgid "Cannot add widget: not enough free space on the dashboard."
msgstr ""
+#: include/classes/api/services/CItem.php:1532
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of host \"%3$s\", because it is already populated by the item with key \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1531
+#, c-format
+msgid "Cannot assign the inventory field \"%1$s\" to the item with key \"%2$s\" of template \"%3$s\", because it is already populated by the item with key \"%4$s\""
+msgstr ""
+
#: jsLoader.php:343
msgctxt "screen reader"
msgid "Cannot be removed"
@@ -2177,6 +2230,16 @@ msgid "Cannot copy item"
msgid_plural "Cannot copy items"
msgstr[0] ""
+#: include/classes/api/services/CDiscoveryRule.php:2475
+#, c-format
+msgid "Cannot copy item prototype with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:590
+#, c-format
+msgid "Cannot copy item with key \"%1$s\" without its master item with key \"%2$s\"."
+msgstr ""
+
#: triggers.php:538
msgid "Cannot copy trigger"
msgid_plural "Cannot copy triggers"
@@ -2743,6 +2806,16 @@ msgstr ""
msgid "Cannot find host interface on \"%1$s\" for item key \"%2$s\"."
msgstr "找ä¸åˆ°ç”¨æ–¼é …ç›®éµ\"%2$s\"的主機介é¢æ–¼ \"%1$s\" ."
+#: include/classes/api/services/CDiscoveryRule.php:2517
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item prototype with key \"%2$s\"."
+msgstr ""
+
+#: include/items.inc.php:640
+#, c-format
+msgid "Cannot find host interface on \"%1$s\" for item with key \"%2$s\"."
+msgstr ""
+
#: include/classes/import/importers/CMapImporter.php:207
#, c-format
msgid "Cannot find icon \"%1$s\" used in map \"%2$s\"."
@@ -2859,6 +2932,185 @@ msgid "Cannot import template \"%1$s\", linked template \"%2$s\" does not exist.
msgid_plural "Cannot import template \"%1$s\", linked templates \"%2$s\" do not exist."
msgstr[0] ""
+#: include/classes/api/services/CItemGeneral.php:588
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:589
+#, c-format
+msgid "Cannot inherit LDD rules with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:704
+#: include/classes/api/services/CItemGeneral.php:716
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1030
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:710
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:769
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:705
+#: include/classes/api/services/CItemGeneral.php:717
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:711
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:770
+#, c-format
+msgid "Cannot inherit LLD rule with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1230
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to host \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:1231
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" and LLD rule \"%3$s\" to template \"%4$s\", because an item prototype with the same key already belongs to LLD rule \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:725
+#: include/classes/api/services/CItemGeneral.php:737
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1034
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:731
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:775
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:726
+#: include/classes/api/services/CItemGeneral.php:738
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:732
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:776
+#, c-format
+msgid "Cannot inherit item prototype with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:582
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:583
+#, c-format
+msgid "Cannot inherit item prototypes with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1455
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to host \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1454
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" and item with key \"%3$s\" of template \"%4$s\" to template \"%5$s\", because they would populate the same inventory field \"%6$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:695
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1026
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because a host interface of type \"%4$s\" is required."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:683
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:689
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:763
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1509
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to host \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:696
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because a discovered item with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:684
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an LLD rule with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:690
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item prototype with the same key already exists."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:764
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because an item with the same key is already inherited from template \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItem.php:1508
+#, c-format
+msgid "Cannot inherit item with key \"%1$s\" of template \"%2$s\" to template \"%3$s\", because its inventory field \"%4$s\" is already populated by the item with key \"%5$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:576
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on host \"%4$s\"."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:577
+#, c-format
+msgid "Cannot inherit items with key \"%1$s\" of both \"%2$s\" and \"%3$s\" templates, because the key must be unique on template \"%4$s\"."
+msgstr ""
+
#: app/controllers/CControllerPopupTriggerExpr.php:1581
msgid "Cannot insert trigger expression"
msgstr "無法æ’入觸發器表示å¼"
@@ -2994,6 +3246,10 @@ msgstr "ä¸èƒ½å¤§é‡æ›´æ–°å¯è¦‹ä¸»æ©Ÿå稱"
msgid "Cannot pass duplicate template IDs for the linkage: %1$s."
msgstr ""
+#: jsLoader.php:130
+msgid "Cannot paste inaccessible widget."
+msgstr ""
+
#: include/classes/db/DB.php:958
#, c-format
msgid "Cannot perform delete statement on table \"%1$s\" without where condition."
@@ -3080,6 +3336,46 @@ msgstr ""
msgid "Cannot set \"%1$s\" for item \"%2$s\"."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2237
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2236
+#, c-format
+msgid "Cannot set dependency for LLD rule with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2231
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2230
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item prototype with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2226
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2225
+#, c-format
+msgid "Cannot set dependency for item prototype with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2220
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the host \"%3$s\": %4$s."
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:2219
+#, c-format
+msgid "Cannot set dependency for item with key \"%1$s\" on the master item with key \"%2$s\" on the template \"%3$s\": %4$s."
+msgstr ""
+
#: include/classes/api/services/CHost.php:1037
#: include/classes/api/services/CHost.php:2015
#: include/classes/api/services/CHost.php:2218
@@ -9024,6 +9320,25 @@ msgstr ""
msgid "Inaccessible user group"
msgstr ""
+#: jsLoader.php:147 jsLoader.php:175
+msgid "Inaccessible widget"
+msgstr ""
+
+#: app/controllers/CControllerDashboardWidgetCheck.php:52
+#: app/controllers/CControllerDashboardWidgetEdit.php:65
+#: include/classes/helpers/CDashboardHelper.php:453
+#: include/classes/helpers/CDashboardHelper.php:461
+msgid "Inaccessible widget type."
+msgstr ""
+
+#: jsLoader.php:138
+msgid "Inaccessible widgets were not copied."
+msgstr ""
+
+#: jsLoader.php:139
+msgid "Inaccessible widgets were not pasted."
+msgstr ""
+
#: app/partials/js/scheduledreport.subscription.js.php:165
#: app/partials/js/scheduledreport.subscription.js.php:181
#: app/views/popup.scheduledreport.subscription.php:117
@@ -14209,6 +14524,10 @@ msgstr ""
msgid "Page display period"
msgstr ""
+#: include/classes/core/ZBase.php:565
+msgid "Page not found"
+msgstr ""
+
#: app/controllers/CControllerWidgetIteratorGraphPrototypeView.php:46
#: include/validate.inc.php:435
msgid "Page received incorrect data"
@@ -20931,6 +21250,11 @@ msgstr "工作時間"
msgid "Write"
msgstr "寫"
+#: include/classes/core/CModuleManager.php:136
+#, c-format
+msgid "Wrong %1$s.php class name for module located at %2$s."
+msgstr ""
+
#: include/classes/core/CModuleManager.php:203
#, c-format
msgid "Wrong Module.php class name for module located at %1$s."
@@ -21472,6 +21796,14 @@ msgstr "所有"
msgid "all media"
msgstr "所有媒體"
+#: include/classes/api/services/CItemGeneral.php:1877
+msgid "allowed count of dependency levels would be exceeded"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1888
+msgid "allowed count of dependent items would be exceeded"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2259
msgid "an IP address is expected"
msgstr ""
@@ -21541,6 +21873,18 @@ msgstr ""
msgid "an integer is expected"
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1806
+#: include/classes/api/services/CItemGeneral.php:1827
+#: include/classes/api/services/CItemGeneral.php:1930
+msgid "an item ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1805
+#: include/classes/api/services/CItemGeneral.php:1826
+#: include/classes/api/services/CItemGeneral.php:1929
+msgid "an item/item prototype ID is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:716
#: include/classes/validators/CApiInputValidator.php:2882
msgid "an unsigned integer is expected"
@@ -21694,6 +22038,22 @@ msgstr ""
msgid "can be used to add \"@2x\" to the URL to load retina tiles."
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:2383
+msgid "cannot be a value map ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1942
+msgid "cannot be an item ID from another host or template"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1956
+msgid "cannot be an item prototype ID from another LLD rule"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1941
+msgid "cannot be an item/item prototype ID from another host or template"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:229
msgid "cannot be changed"
msgstr ""
@@ -21794,6 +22154,10 @@ msgstr ""
msgid "cannot be empty"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3560
+msgid "cannot be equal to zero without custom intervals"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2982
#, c-format
msgid "cannot be less than or equal to the value of parameter \"%1$s\""
@@ -21805,6 +22169,10 @@ msgstr ""
msgid "cannot be specified the value of parameter \"%1$s\""
msgstr ""
+#: include/classes/api/services/CItemGeneral.php:1658
+msgid "cannot be the host interface ID from another host"
+msgstr ""
+
#: include/classes/api/services/CHostBase.php:111
msgid "cannot be unlinked"
msgstr ""
@@ -21813,6 +22181,14 @@ msgstr ""
msgid "cannot convert to JSON, result value too long"
msgstr ""
+#: include/classes/api/services/CItem.php:899
+msgid "cannot delete inherited item"
+msgstr ""
+
+#: include/classes/api/services/CItemPrototype.php:810
+msgid "cannot delete inherited item prototype"
+msgstr ""
+
#: include/classes/api/services/CHostPrototype.php:2167
msgid "cannot delete templated host prototype"
msgstr ""
@@ -22240,6 +22616,10 @@ msgctxt "event source"
msgid "internal"
msgstr "內部的"
+#: include/classes/validators/CApiInputValidator.php:4155
+msgid "invalid Prometheus label"
+msgstr ""
+
#: include/classes/api/services/CItemGeneral.php:1535
#: include/classes/api/services/CItemGeneral.php:1545
msgid "invalid Prometheus output"
@@ -22625,6 +23005,14 @@ msgstr ""
msgid "must contain at least one special character"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3818
+msgid "must have a polling interval not blocked by non-active interval periods"
+msgstr ""
+
+#: include/classes/validators/CApiInputValidator.php:3653
+msgid "must have at least one interval greater than 0"
+msgstr ""
+
#: app/views/administration.authentication.edit.php:98
#: app/views/administration.user.edit.php:150
#: include/classes/validators/CPasswordComplexityValidator.php:108
@@ -22714,6 +23102,10 @@ msgstr ""
msgid "nodata() - No data received during period of time T (1 - true, 0 - false), Mode (strict - ignore proxy time delay in sending data)"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3681
+msgid "non-active intervals cannot fill the entire time"
+msgstr ""
+
#: app/views/popup.tophosts.column.edit.php:113
#: app/views/popup.tophosts.column.edit.php:125
#: include/classes/widgets/CWidgetHelper.php:1285 include/graphs.inc.php:74
@@ -22789,6 +23181,11 @@ msgstr "關閉"
msgid "on"
msgstr "æ–¼"
+#: include/classes/validators/CApiInputValidator.php:2388
+#, c-format
+msgid "only one object can exist within the combinations of %1$s"
+msgstr ""
+
#: app/controllers/CControllerPopupItemTestSend.php:182
msgid "only one time unit is allowed"
msgstr ""
@@ -23102,6 +23499,18 @@ msgstr ""
msgid "template ID \"%1$s\" is passed %2$s times"
msgstr "模æ¿ID\"%1$s\"已傳é€%2$s次"
+#: include/classes/api/services/CItemGeneral.php:1577
+#: include/classes/api/services/CItemGeneral.php:1594
+#: include/classes/api/services/CItemGeneral.php:1612
+#: include/classes/api/services/CItemGeneral.php:1652
+msgid "the host interface ID is expected"
+msgstr ""
+
+#: include/classes/api/services/CItemGeneral.php:1668
+#, c-format
+msgid "the host interface ID of type \"%1$s\" is expected"
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:2813
msgid "the last new line feed is missing"
msgstr ""
@@ -23346,6 +23755,11 @@ msgstr ""
msgid "unsupported version number"
msgstr ""
+#: include/classes/validators/CApiInputValidator.php:3626
+#, c-format
+msgid "update interval \"%1$s\" is longer than period \"%2$s\""
+msgstr ""
+
#: include/classes/validators/CApiInputValidator.php:509
msgid "uppercase identifier expected"
msgstr ""
diff --git a/ui/report2.php b/ui/report2.php
index 808fae031df..032bc9c9cef 100644
--- a/ui/report2.php
+++ b/ui/report2.php
@@ -156,7 +156,7 @@ $triggerData = isset($_REQUEST['triggerid'])
])
: null;
-$reportWidget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Availability report'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORT2));
@@ -167,7 +167,7 @@ if ($triggerData) {
$triggerData['hostid'] = $host['hostid'];
$triggerData['hostname'] = $host['name'];
- $reportWidget->setControls((new CTag('nav', true,
+ $html_page->setControls((new CTag('nav', true,
(new CList())
->addItem(new CLink($triggerData['hostname'], (new CUrl('report2.php'))
->setArgument('page', CPagerHelper::loadPage('report2.php', null))
@@ -180,7 +180,7 @@ if ($triggerData) {
$table = (new CTableInfo())
->addRow(new CImg('chart4.php?triggerid='.$_REQUEST['triggerid']));
- $reportWidget->addItem(BR())
+ $html_page->addItem(BR())
->addItem($table)
->show();
}
@@ -195,7 +195,7 @@ else {
->addOption(new CSelectOption(AVAILABILITY_REPORT_BY_HOST, _('By host')))
->addOption(new CSelectOption(AVAILABILITY_REPORT_BY_TEMPLATE, _('By trigger template')));
- $reportWidget->setControls((new CForm('get'))
+ $html_page->setControls((new CForm('get'))
->cleanItems()
->setAttribute('aria-label', _('Main filter'))
->addItem((new CList())
@@ -494,7 +494,7 @@ else {
}
unset($trigger);
- $reportWidget->addItem(
+ $html_page->addItem(
(new CFilter())
->setResetUrl(new CUrl('report2.php'))
->setProfile($data['filter']['timeline']['profileIdx'])
@@ -563,7 +563,7 @@ else {
);
zbx_add_post_js('timeControl.processObjects();');
- $reportWidget
+ $html_page
->addItem([$triggerTable, $paging])
->show();
}
diff --git a/ui/report4.php b/ui/report4.php
index 9fa0c9f2cd6..281cb753a75 100644
--- a/ui/report4.php
+++ b/ui/report4.php
@@ -61,7 +61,7 @@ CArrayHelper::sort($db_media_types, ['name']);
$media_types = array_column($db_media_types, 'name', 'mediatypeid');
-$widget = (new CWidget())
+$html_page = (new CHtmlPage())
->setTitle(_('Notifications'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORT4));
@@ -121,7 +121,7 @@ if ($media_types) {
]);
}
- $widget->setControls((new CForm('get'))
+ $html_page->setControls((new CForm('get'))
->cleanItems()
->setAttribute('aria-label', _('Main filter'))
->addItem($controls)
@@ -258,7 +258,7 @@ else {
$table = new CTableInfo();
}
-$widget
+$html_page
->addItem($table)
->show();
diff --git a/ui/setup.php b/ui/setup.php
index 2174a12a028..6a3dc3a8209 100644
--- a/ui/setup.php
+++ b/ui/setup.php
@@ -160,8 +160,11 @@ DBclose();
$setup_wizard = new CSetupWizard();
// page title
-(new CPageHeader(_('Installation'), substr($default_lang, 0, strpos($default_lang, '_'))))
- ->addCssFile('assets/styles/'.CHtml::encode($default_theme).'.css')
+$page_header = (new CHtmlPageHeader(_('Installation'), substr($default_lang, 0, strpos($default_lang, '_'))));
+
+$page_header
+ ->setTheme($default_theme)
+ ->addCssFile('assets/styles/'.$page_header->getTheme().'.css')
->addJsFile((new CUrl('js/browsers.js'))->getUrl())
->addJsFile((new CUrl('jsLoader.php'))
->setArgument('ver', ZABBIX_VERSION)
@@ -174,7 +177,7 @@ $setup_wizard = new CSetupWizard();
->setArgument('files', ['setup.js'])
->getUrl()
)
- ->display();
+ ->show();
/*
* Displaying
diff --git a/ui/templates.php b/ui/templates.php
index 7b9038f30bb..604a122d48e 100644
--- a/ui/templates.php
+++ b/ui/templates.php
@@ -333,7 +333,7 @@ elseif (hasRequest('add') || hasRequest('update')) {
throw new Exception();
}
- if (!copyItems($cloneTemplateId, $input_templateid, true)) {
+ if (!copyItemsToHosts('templateids', [$cloneTemplateId], true, [$input_templateid])) {
throw new Exception();
}
diff --git a/ui/tests/api_json/ApiJsonTests.php b/ui/tests/api_json/ApiJsonTests.php
index 34a47cba88e..b58891a4837 100644
--- a/ui/tests/api_json/ApiJsonTests.php
+++ b/ui/tests/api_json/ApiJsonTests.php
@@ -55,7 +55,7 @@ require_once dirname(__FILE__).'/testValuemap.php';
require_once dirname(__FILE__).'/testWebScenario.php';
require_once dirname(__FILE__).'/testMap.php';
require_once dirname(__FILE__).'/testDiscoveryRule.php';
-require_once dirname(__FILE__).'/testDependentItems.php';
+// require_once dirname(__FILE__).'/testDependentItems.php';
require_once dirname(__FILE__).'/testAuthentication.php';
require_once dirname(__FILE__).'/testAuditlogAction.php';
require_once dirname(__FILE__).'/testAuditlogAutoregistration.php';
@@ -81,7 +81,7 @@ class ApiJsonTests {
$suite->addTestSuite('testAPIInfo');
$suite->addTestSuite('testAction');
$suite->addTestSuite('testConfiguration');
-// $suite->addTestSuite('testDependentItems'); TODO: To be fixed later
+ // $suite->addTestSuite('testDependentItems');
$suite->addTestSuite('testCorrelation');
$suite->addTestSuite('testDRule');
$suite->addTestSuite('testGraphPrototype');
diff --git a/ui/tests/api_json/common/testAuditlogCommon.php b/ui/tests/api_json/common/testAuditlogCommon.php
index 9c4547c8c67..9c4547c8c67 100755..100644
--- a/ui/tests/api_json/common/testAuditlogCommon.php
+++ b/ui/tests/api_json/common/testAuditlogCommon.php
diff --git a/ui/tests/api_json/data/data_test.sql b/ui/tests/api_json/data/data_test.sql
index 6018f00553e..63d1b9602bc 100644
--- a/ui/tests/api_json/data/data_test.sql
+++ b/ui/tests/api_json/data/data_test.sql
@@ -212,15 +212,15 @@ INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,his
INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150148, 50009, 1, 9, 0,'Download speed for scenario "Api web scenario for delete1".','web.test.in[Webtest key_name,,bps]','2m','30d',0,'','',0,'','');
INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150149, 50009, 1, 9, 0,'Download speed for scenario "Api step for delete0".','web.test.in[Webtest key_name,,bps]','2m','30d',0,'','',0,'','');
INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150150, 50009, 1, 9, 0,'Download speed for scenario "Api web scenario for delete0".','web.test.in[Webtest key_name,,bps]','2m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150151, 50009, 1, 9, 0,'Download speed for scenario "$1".','web.test.in[Webtest key_name,,bps]','2m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150152, 50009, 1, 9, 3,'Failed step of scenario "$1".','web.test.fail[Webtest key_name]','2m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150153, 50009, 1, 9, 1,'Last error message of scenario "$1".','web.test.error[Webtest key_name]','2m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150154, 50009, 1, 9, 0,'Download speed for step "$2" of scenario "$1".','web.test.in[Webtest key_name,Webstep name 1,bps]','1m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150155, 50009, 1, 9, 0,'Response time for step "$2" of scenario "$1".','web.test.time[Webtest key_name,Webstep name 1,resp]','1m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150156, 50009, 1, 9, 3,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Webtest key_name,Webstep name 1]','1m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150157, 50009, 1, 9, 0,'Download speed for step "$2" of scenario "$1".','web.test.in[Webtest key_name,Webstep name 2,bps]','1m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150158, 50009, 1, 9, 0,'Response time for step "$2" of scenario "$1".','web.test.time[Webtest key_name,Webstep name 2,resp]','1m','30d',0,'','',0,'','');
-INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150159, 50009, 1, 9, 3,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Webtest key_name,Webstep name 2]','1m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150151, 50009, 1, 9, 0,'Download speed for scenario "Webtest key_name".','web.test.in[Webtest key_name,,bps]','2m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150152, 50009, 1, 9, 3,'Failed step of scenario "Webtest key_name".','web.test.fail[Webtest key_name]','2m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150153, 50009, 1, 9, 1,'Last error message of scenario "Webtest key_name".','web.test.error[Webtest key_name]','2m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150154, 50009, 1, 9, 0,'Download speed for step "Webstep name 1" of scenario "Webtest key_name".','web.test.in[Webtest key_name,Webstep name 1,bps]','1m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150155, 50009, 1, 9, 0,'Response time for step "Webstep name 1" of scenario "Webtest key_name".','web.test.time[Webtest key_name,Webstep name 1,resp]','1m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150156, 50009, 1, 9, 3,'Response code for step "Webstep name 1" of scenario "Webtest key_name".','web.test.rspcode[Webtest key_name,Webstep name 1]','1m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150157, 50009, 1, 9, 0,'Download speed for step "Webstep name 2" of scenario "Webtest key_name".','web.test.in[Webtest key_name,Webstep name 2,bps]','1m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150158, 50009, 1, 9, 0,'Response time for step "Webstep name 2" of scenario "Webtest key_name".','web.test.time[Webtest key_name,Webstep name 2,resp]','1m','30d',0,'','',0,'','');
+INSERT INTO items (itemid,hostid,interfaceid,type,value_type,name,key_,delay,history,status,params,description,flags,posts,headers) VALUES (150159, 50009, 1, 9, 3,'Response code for step "Webstep name 2" of scenario "Webtest key_name".','web.test.rspcode[Webtest key_name,Webstep name 2]','1m','30d',0,'','',0,'','');
INSERT INTO httpstepitem (httpstepitemid, httpstepid, itemid, type) VALUES (150143, 15010, 150143, 2);
INSERT INTO httptestitem (httptestitemid, httptestid, itemid, type) VALUES (150144, 15010, 150144, 4);
INSERT INTO httpstepitem (httpstepitemid, httpstepid, itemid, type) VALUES (150145, 15005, 150145, 2);
diff --git a/ui/tests/api_json/testAuditlogAction.php b/ui/tests/api_json/testAuditlogAction.php
index 6972da9d5a8..6972da9d5a8 100755..100644
--- a/ui/tests/api_json/testAuditlogAction.php
+++ b/ui/tests/api_json/testAuditlogAction.php
diff --git a/ui/tests/api_json/testAuditlogAutoregistration.php b/ui/tests/api_json/testAuditlogAutoregistration.php
index b6a7aeea425..b6a7aeea425 100755..100644
--- a/ui/tests/api_json/testAuditlogAutoregistration.php
+++ b/ui/tests/api_json/testAuditlogAutoregistration.php
diff --git a/ui/tests/api_json/testAuditlogDashboard.php b/ui/tests/api_json/testAuditlogDashboard.php
index 87e5d49c3b0..87e5d49c3b0 100755..100644
--- a/ui/tests/api_json/testAuditlogDashboard.php
+++ b/ui/tests/api_json/testAuditlogDashboard.php
diff --git a/ui/tests/api_json/testAuditlogEventCorrelation.php b/ui/tests/api_json/testAuditlogEventCorrelation.php
index 3cb13136666..3cb13136666 100755..100644
--- a/ui/tests/api_json/testAuditlogEventCorrelation.php
+++ b/ui/tests/api_json/testAuditlogEventCorrelation.php
diff --git a/ui/tests/api_json/testAuditlogIconMap.php b/ui/tests/api_json/testAuditlogIconMap.php
index e11c8796ad4..e11c8796ad4 100755..100644
--- a/ui/tests/api_json/testAuditlogIconMap.php
+++ b/ui/tests/api_json/testAuditlogIconMap.php
diff --git a/ui/tests/api_json/testAuditlogMaintenance.php b/ui/tests/api_json/testAuditlogMaintenance.php
index 8fabc9eca59..8fabc9eca59 100755..100644
--- a/ui/tests/api_json/testAuditlogMaintenance.php
+++ b/ui/tests/api_json/testAuditlogMaintenance.php
diff --git a/ui/tests/api_json/testAuditlogMediaType.php b/ui/tests/api_json/testAuditlogMediaType.php
index d0f0d48fb44..d0f0d48fb44 100755..100644
--- a/ui/tests/api_json/testAuditlogMediaType.php
+++ b/ui/tests/api_json/testAuditlogMediaType.php
diff --git a/ui/tests/api_json/testAuditlogProxy.php b/ui/tests/api_json/testAuditlogProxy.php
index 5a7905d0a41..5a7905d0a41 100755..100644
--- a/ui/tests/api_json/testAuditlogProxy.php
+++ b/ui/tests/api_json/testAuditlogProxy.php
diff --git a/ui/tests/api_json/testAuditlogScheduledReport.php b/ui/tests/api_json/testAuditlogScheduledReport.php
index 4365e1111f6..4dd96f8861a 100755..100644
--- a/ui/tests/api_json/testAuditlogScheduledReport.php
+++ b/ui/tests/api_json/testAuditlogScheduledReport.php
@@ -101,7 +101,6 @@ class testAuditlogScheduledReport extends testAuditlogCommon {
'report.users['.self::$before_user['reportuserid'].'].reportuserid' => ['add', self::$before_user['reportuserid']],
'report.user_groups['.self::$before_usrgrp['reportusrgrpid'].']' => ['add'],
'report.user_groups['.self::$before_usrgrp['reportusrgrpid'].'].usrgrpid' => ['add', '7'],
- 'report.user_groups['.self::$before_usrgrp['reportusrgrpid'].'].access_userid' => ['add', '0'],
'report.user_groups['.self::$before_usrgrp['reportusrgrpid'].'].reportusrgrpid'
=> ['add', self::$before_usrgrp['reportusrgrpid']],
'report.reportid' => ['add', self::$resourceid]
@@ -167,7 +166,6 @@ class testAuditlogScheduledReport extends testAuditlogCommon {
'report.status' => ['update', '0', '1'],
'report.description' => ['update', 'Updated description', 'Report description'],
'report.users['.$user['reportuserid'].'].userid' => ['add', '2'],
- 'report.users['.$user['reportuserid'].'].access_userid' => ['add', '0'],
'report.users['.$user['reportuserid'].'].exclude' => ['add', '1'],
'report.users['.$user['reportuserid'].'].reportuserid' => ['add', $user['reportuserid']],
'report.user_groups['.$usrgrp['reportusrgrpid'].'].usrgrpid' => ['add', '8'],
diff --git a/ui/tests/api_json/testAuditlogSettings.php b/ui/tests/api_json/testAuditlogSettings.php
index d70ab51396e..d70ab51396e 100755..100644
--- a/ui/tests/api_json/testAuditlogSettings.php
+++ b/ui/tests/api_json/testAuditlogSettings.php
diff --git a/ui/tests/api_json/testAuditlogToken.php b/ui/tests/api_json/testAuditlogToken.php
index 84636f20a38..84636f20a38 100755..100644
--- a/ui/tests/api_json/testAuditlogToken.php
+++ b/ui/tests/api_json/testAuditlogToken.php
diff --git a/ui/tests/api_json/testAuditlogUser.php b/ui/tests/api_json/testAuditlogUser.php
index a4abc22839f..a4abc22839f 100755..100644
--- a/ui/tests/api_json/testAuditlogUser.php
+++ b/ui/tests/api_json/testAuditlogUser.php
diff --git a/ui/tests/api_json/testAuditlogUserGroups.php b/ui/tests/api_json/testAuditlogUserGroups.php
index 0aa6deeaec2..0aa6deeaec2 100755..100644
--- a/ui/tests/api_json/testAuditlogUserGroups.php
+++ b/ui/tests/api_json/testAuditlogUserGroups.php
diff --git a/ui/tests/api_json/testDependentItems.php b/ui/tests/api_json/testDependentItems.php
index 878f03c631d..56d510d1af3 100644
--- a/ui/tests/api_json/testDependentItems.php
+++ b/ui/tests/api_json/testDependentItems.php
@@ -33,9 +33,9 @@ class testDependentItems extends CAPITest {
$items[] = [
'hostid' => $hostid,
'name' => $prefix.'.'.$i,
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'key_' => $prefix.'.'.$i,
- 'value_type' => 1, // ITEM_VALUE_TYPE_STR
+ 'value_type' => ITEM_VALUE_TYPE_STR,
'master_itemid' => $master_itemid
];
}
@@ -51,9 +51,9 @@ class testDependentItems extends CAPITest {
'hostid' => $hostid,
'ruleid' => $ruleid,
'name' => $prefix.'.'.$i,
- 'type' => 18, // ITEM_TYPE_DEPENDENT
- 'key_' => $prefix.'.'.$i,
- 'value_type' => 1, // ITEM_VALUE_TYPE_STR
+ 'type' => ITEM_TYPE_DEPENDENT,
+ 'key_' => $prefix.'.'.$i.'[{#LLD}]',
+ 'value_type' => ITEM_VALUE_TYPE_STR,
'master_itemid' => $master_itemid
];
}
@@ -68,9 +68,9 @@ class testDependentItems extends CAPITest {
$items[] = [
'hostid' => $hostid,
'name' => $prefix.'.'.$i,
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'key_' => $prefix.'.'.$i,
- 'value_type' => 1, // ITEM_VALUE_TYPE_STR
+ 'value_type' => ITEM_VALUE_TYPE_STR,
'master_itemid' => $master_itemid
];
}
@@ -79,252 +79,224 @@ class testDependentItems extends CAPITest {
}
public static function getTestCases() {
+ $dep_count_overflow = ZBX_DEPENDENT_ITEM_MAX_COUNT + 1;
+
return [
- // Simple update master item.
- [
+ 'Simple update master item.' => [
'error' => null,
'method' => 'item.update',
'request_data' => [
'itemid' => 1001 // dependent.items.template.1:master.item.1
]
],
- // Simple update master item prototype.
- [
+ 'Simple update master item prototype.' => [
'error' => null,
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 1018 // dependent.items.template.1:master.item.proto.1
]
],
- // Simple update discovered master item.
- [
+ 'Simple update discovered master item.' => [
'error' => null,
'method' => 'item.update',
'request_data' => [
'itemid' => 2304 // dependent.items.host.7:net.if[eth0]
]
],
- // Simple update dependent item.
- [
+ 'Simple update dependent item.' => [
'error' => null,
'method' => 'item.update',
'request_data' => [
'itemid' => 1015 // dependent.items.template.1:dependent.item.1.2.2.2
]
],
- // Simple update dependent item prototype.
- [
+ 'Simple update dependent item prototype.' => [
'error' => null,
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 1032 // dependent.items.template.1:dependent.item.proto.1.2.2.2
]
],
- // Simple update discovered dependent item.
- [
+ 'Simple update discovered dependent item.' => [
'error' => null,
'method' => 'item.update',
'request_data' => [
'itemid' => 2305 // dependent.items.host.7:net.if.in[eth0]
]
],
- // Simple update dependent discovery rule.
- [
+ 'Simple update dependent discovery rule.' => [
'error' => null,
'method' => 'discoveryrule.update',
'request_data' => [
'itemid' => 1034 // dependent.items.template.1:dependent.discovery.rule.1.1
]
],
- // Set incorrect master_itemid for item (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": Item "2499" does not exist or you have no access to this item.',
+ 'Set incorrect master_itemid for item (create).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": an item ID is expected.',
'method' => 'item.create',
// 1015: dependent.items.host.8
- // 2499: this ID does not exists in the DB
+ // 2499: this ID does not exist in the DB
'request_data' => self::getItems(1015, 2499, 'dependent.item.1', 2, 2)
],
- // Set incorrect master_itemid for item (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": Item "2499" does not exist or you have no access to this item.',
+ 'Set incorrect master_itemid for item (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": an item ID is expected.',
'method' => 'item.update',
'request_data' => [
'itemid' => 2402, // dependent.items.host.8:dependent.item.1.1
- 'master_itemid' => 2499 // this ID does not exists in the DB
+ 'master_itemid' => 2499 // this ID does not exist in the DB
]
],
- // Set incorrect master_itemid for item prototype (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": Item "2499" does not exist or you have no access to this item.',
+ 'Set incorrect master_itemid for item prototype (create).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": an item/item prototype ID is expected.',
'method' => 'itemprototype.create',
// 1015: dependent.items.host.8
// 2403: dependent.items.host.8:discovery.rule.1
- // 2499: this ID does not exists in the DB
+ // 2499: this ID does not exist in the DB
'request_data' => self::getItemPrototypes(1015, 2403, 2499, 'dependent.item.proto.1', 2, 2)
],
- // Set incorrect master_itemid for item prototype (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": Item "2499" does not exist or you have no access to this item.',
+ 'Set incorrect master_itemid for item prototype (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": an item/item prototype ID is expected.',
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 2405, // dependent.items.host.8:dependent.item.proto.1.1
- 'master_itemid' => 2499 // this ID does not exists in the DB
+ 'master_itemid' => 2499 // this ID does not exist in the DB
]
],
- // Set incorrect master_itemid for discovery rule (create).
- [
+ 'Set incorrect master_itemid for discovery rule (create).' => [
'error' => 'Incorrect value for field "master_itemid": Item "2499" does not exist or you have no access to this item.',
'method' => 'discoveryrule.create',
// 1015: dependent.items.host.8
- // 2499: this ID does not exists in the DB
+ // 2499: this ID does not exist in the DB
'request_data' => self::getDiscoveryRule(1015, 2499, 'dependent.discovery.rule.1', 2, 2)
],
- // Set incorrect master_itemid for discovery rule (update).
- [
+ 'Set incorrect master_itemid for discovery rule (update).' => [
'error' => 'Incorrect value for field "master_itemid": Item "2499" does not exist or you have no access to this item.',
'method' => 'discoveryrule.update',
'request_data' => [
'itemid' => 2409, // dependent.items.host.8:dependent.discovery.rule.1.1
- 'master_itemid' => 2499 // this ID does not exists in the DB
+ 'master_itemid' => 2499 // this ID does not exist in the DB
]
],
- // Set master_itemid from other host for item (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": hostid of dependent item and master item should match.',
+ 'Set master_itemid from other host for item (create).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": cannot be an item ID from another host or template.',
'method' => 'item.create',
// 1015: dependent.items.host.8
// 2501: dependent.items.host.9:master.item.1
'request_data' => self::getItems(1015, 2501, 'dependent.item.1', 2, 2)
],
- // Set master_itemid from other host for item (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": hostid of dependent item and master item should match.',
+ 'Set master_itemid from other host for item (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": cannot be an item ID from another host or template.',
'method' => 'item.update',
'request_data' => [
'itemid' => 2402, // dependent.items.host.8:dependent.item.1.1
'master_itemid' => 2501 // dependent.items.host.9:master.item.1
]
],
- // Set master_itemid from other host for item prototype (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": hostid of dependent item and master item should match.',
+ 'Set master_itemid from other host for item prototype (create).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": cannot be an item/item prototype ID from another host or template.',
'method' => 'itemprototype.create',
// 1015: dependent.items.host.8
// 2403: dependent.items.host.8:discovery.rule.1
// 2504: dependent.items.host.9:master.item.proto.1
'request_data' => self::getItemPrototypes(1015, 2403, 2504, 'dependent.item.proto.1', 2, 2)
],
- // Set master_itemid from other host for item prototype (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": hostid of dependent item and master item should match.',
+ 'Set master_itemid from other host for item prototype (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": cannot be an item/item prototype ID from another host or template.',
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 2405, // dependent.items.host.8:dependent.item.proto.1.1
'master_itemid' => 2504 // dependent.items.host.9:master.item.proto.1
]
],
- // Set master_itemid from other discovery rule (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": ruleid of dependent item and master item should match.',
+ 'Set master_itemid from other discovery rule (create).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": cannot be an item prototype ID from another LLD rule.',
'method' => 'itemprototype.create',
// 1015: dependent.items.host.8
// 2403: dependent.items.host.8:discovery.rule.1
// 2407: dependent.items.host.8:master.item.proto.2
'request_data' => self::getItemPrototypes(1015, 2403, 2407, 'dependent.item.proto.1', 2, 2)
],
- // Set master_itemid from other discovery rule (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": ruleid of dependent item and master item should match.',
+ 'Set master_itemid from other discovery rule (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": cannot be an item prototype ID from another LLD rule.',
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 2405, // dependent.items.host.8:dependent.item.proto.1.1
'master_itemid' => 2407 // dependent.items.host.8:master.item.proto.2
]
],
- // Set master_itemid from other host for discovery rule (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": hostid of dependent item and master item should match.',
+ 'Set master_itemid from other host for discovery rule (create).' => [
+ 'error' => 'Incorrect value for field "master_itemid": "hostid" of dependent item and master item should match.',
'method' => 'discoveryrule.create',
// 1015: dependent.items.host.8
// 2501: dependent.items.host.9:master.item.1
'request_data' => self::getDiscoveryRule(1015, 2501, 'dependent.discovery.rule.1', 2, 2)
],
- // Set master_itemid from other host for discovery rule (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": hostid of dependent item and master item should match.',
+ 'Set master_itemid from other host for discovery rule (update).' => [
+ 'error' => 'Incorrect value for field "master_itemid": "hostid" of dependent item and master item should match.',
'method' => 'discoveryrule.update',
'request_data' => [
'itemid' => 2409, // dependent.items.host.8:dependent.discovery.rule.1.1
'master_itemid' => 2501 // dependent.items.host.9:master.item.1
]
],
- // Create dependent item, which depends on discovered item.
- [
- 'error' => 'Incorrect value for field "master_itemid": Item "2304" does not exist or you have no access to this item.',
+ 'Create dependent item, which depends on discovered item.' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": an item ID is expected.',
'method' => 'item.create',
// 1014: dependent.items.host.7
// 2304: dependent.items.host.7:net.if[eth0]
'request_data' => self::getItems(1014, 2304, 'item', 1, 1)
],
- // Create dependent item prototype, which depends on discovered item.
- [
- 'error' => 'Incorrect value for field "master_itemid": Item "2304" does not exist or you have no access to this item.',
+ 'Create dependent item prototype, which depends on discovered item.' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": an item/item prototype ID is expected.',
'method' => 'itemprototype.create',
// 1014: dependent.items.host.7
// 2301: dependent.items.host.7:net.if.discovery
// 2304: dependent.items.host.7:net.if[eth0]
'request_data' => self::getItemPrototypes(1014, 2301, 2304, 'item.proto', 1, 1)
],
- // Create dependent discovery rule, which depends on discovered item.
- [
+ 'Create dependent discovery rule, which depends on discovered item.' => [
'error' => 'Incorrect value for field "master_itemid": Item "2304" does not exist or you have no access to this item.',
'method' => 'discoveryrule.create',
// 1014: dependent.items.host.7
// 2304: dependent.items.host.7:net.if[eth0]
'request_data' => self::getDiscoveryRule(1014, 2304, 'discovery.rule', 1, 1)
],
- // Simple update templated master item.
- [
+ 'Simple update templated master item.' => [
'error' => null,
'method' => 'item.update',
'request_data' => [
'itemid' => 1301 // dependent.items.host.1:master.item.1
]
],
- // Simple update templated master item prototype.
- [
+ 'Simple update templated master item prototype.' => [
'error' => null,
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 1318 // dependent.items.host.1:master.item.proto.1
]
],
- // Simple update templated dependent item.
- [
+ 'Simple update templated dependent item.' => [
'error' => null,
'method' => 'item.update',
'request_data' => [
'itemid' => 1315 // dependent.items.host.1:dependent.item.1.2.2.2
]
],
- // Simple update templated dependent item prototype.
- [
+ 'Simple update templated dependent item prototype.' => [
'error' => null,
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 1332 // dependent.items.host.1:dependent.item.proto.1.2.2.2
]
],
- // Simple update templated dependent discovery rule.
- [
+ 'Simple update templated dependent discovery rule.' => [
'error' => null,
'method' => 'discoveryrule.update',
'request_data' => [
'itemid' => 1334 // dependent.items.host.1:dependent.discovery.rule.1.1
]
],
- // Circular dependency to itself (update).
- [
+ 'Circular dependency to itself (update).' => [
'error' => 'Incorrect value for field "master_itemid": circular item dependency is not allowed.',
'method' => 'item.update',
'request_data' => [
@@ -332,8 +304,7 @@ class testDependentItems extends CAPITest {
'master_itemid' => 1015
]
],
- // Circular dependency to itself (update).
- [
+ 'Circular dependency to itself (update).' => [
'error' => 'Incorrect value for field "master_itemid": circular item dependency is not allowed.',
'method' => 'itemprototype.update',
'request_data' => [
@@ -341,8 +312,7 @@ class testDependentItems extends CAPITest {
'master_itemid' => 1032
]
],
- // Circular dependency to itself (update).
- [
+ 'Circular dependency to itself (update).' => [
'error' => 'Incorrect value for field "master_itemid": Item "1034" does not exist or you have no access to this item.',
'method' => 'discoveryrule.update',
'request_data' => [
@@ -350,53 +320,48 @@ class testDependentItems extends CAPITest {
'master_itemid' => 1034
]
],
- // Circular dependency to between several items (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": circular item dependency is not allowed.',
+ 'Circular dependency to between several items (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": circular item dependency is not allowed.',
'method' => 'item.update',
'request_data' => [
'itemid' => 1003, // dependent.items.template.1:dependent.item.1.2
'master_itemid' => 1015
]
],
- // Circular dependency to between several item prototypes (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": circular item dependency is not allowed.',
+ 'Circular dependency to between several item prototypes (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": circular item dependency is not allowed.',
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 1020, // dependent.items.template.1:dependent.item.proto.1.2
'master_itemid' => 1032
]
],
- // Set "master_itemid" for not-dependent item (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": should be empty.',
+ 'Set "master_itemid" for not-dependent item (create).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": value must be 0.',
'method' => 'item.create',
'request_data' => [
'hostid' => 1001, // dependent.items.template.1
'name' => 'trap.2',
- 'type' => 2, // ITEM_TYPE_TRAPPER
+ 'type' => ITEM_TYPE_TRAPPER,
'key_' => 'trap.2',
- 'value_type' => 1, // ITEM_VALUE_TYPE_STR
+ 'value_type' => ITEM_VALUE_TYPE_STR,
'master_itemid' => 1001 // dependent.items.template.1:master.item.1
]
],
- // Set "master_itemid" for not-dependent item prototype (create).
- [
- 'error' => 'Incorrect value for field "master_itemid": should be empty.',
+ 'Set "master_itemid" for not-dependent item prototype (create).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": value must be 0.',
'method' => 'itemprototype.create',
'request_data' => [
'hostid' => 1001, // dependent.items.template.1
'ruleid' => 1017, // dependent.items.template.1:discovery.rule.1
'name' => 'item.proto.2',
- 'type' => 2, // ITEM_TYPE_TRAPPER
- 'key_' => 'item.proto.2',
- 'value_type' => 1, // ITEM_VALUE_TYPE_STR
+ 'type' => ITEM_TYPE_TRAPPER,
+ 'key_' => 'item.proto.2[{#LLD}]',
+ 'value_type' => ITEM_VALUE_TYPE_STR,
'master_itemid' => 1001 // dependent.items.template.1:master.item.1
]
],
- // Set "master_itemid" for not-dependent discovery rule (create).
- [
+ 'Set "master_itemid" for not-dependent discovery rule (create).' => [
'error' => 'Incorrect value for field "master_itemid": should be empty.',
'method' => 'discoveryrule.create',
'request_data' => [
@@ -407,26 +372,23 @@ class testDependentItems extends CAPITest {
'master_itemid' => 1001 // dependent.items.template.1:master.item.1
]
],
- // Set "master_itemid" for not-dependent item (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": should be empty.',
+ 'Set "master_itemid" for not-dependent item (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": value must be 0.',
'method' => 'item.update',
'request_data' => [
'itemid' => 1016, // dependent.items.template.1:trap.1
'master_itemid' => 1001 // dependent.items.template.1:master.item.1
]
],
- // Set "master_itemid" for not-dependent item prototype (update).
- [
- 'error' => 'Incorrect value for field "master_itemid": should be empty.',
+ 'Set "master_itemid" for not-dependent item prototype (update).' => [
+ 'error' => 'Invalid parameter "/1/master_itemid": value must be 0.',
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 1033, // dependent.items.template.1:item.proto.1
'master_itemid' => 1001 // dependent.items.template.1:master.item.1
]
],
- // Set "master_itemid" for not-dependent discovery rule (update).
- [
+ 'Set "master_itemid" for not-dependent discovery rule (update).' => [
'error' => 'Incorrect value for field "master_itemid": should be empty.',
'method' => 'discoveryrule.update',
'request_data' => [
@@ -434,290 +396,295 @@ class testDependentItems extends CAPITest {
'master_itemid' => 1001 // dependent.items.template.1:master.item.1
]
],
- // Check for maximum depth for the items tree (create). Add 4th level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
+ 'Check for maximum depth for the items tree (create). Add 4th level.' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.1.1.1.1" on the master item with key "dependent.item.1.1.1.1" on the template "dependent.items.template.1": allowed count of dependency levels would be exceeded.',
'method' => 'item.create',
// 1001: dependent.items.template.1
// 1008: dependent.items.template.1:dependent.item.1.1.1.1
'request_data' => self::getItems(1001, 1008, 'dependent.item.1.1.1.1', 1, 1)
],
- // Check for maximum depth for the item prototypes tree (create). Add 4th level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
+ 'Check for maximum depth for the item prototypes tree (create). Add 4th level.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "dependent.item.1.1.1.1.1[{#LLD}]" on the master item prototype with key "dependent.item.proto.1.1.1.1" on the template "dependent.items.template.1": allowed count of dependency levels would be exceeded.',
'method' => 'itemprototype.create',
// 1001: dependent.items.template.1
// 1017: dependent.items.template.1:discovery.rule.1
// 1025: dependent.items.template.1:dependent.item.proto.1.1.1.1
'request_data' => self::getItemPrototypes(1001, 1017, 1025, 'dependent.item.1.1.1.1', 1, 1)
],
- // Check for maximum depth of the discovery rule tree (create). Add 4th level.
- [
+ 'Check for maximum depth of the discovery rule tree (create). Add 4th level.' => [
'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
'method' => 'discoveryrule.create',
// 1001: dependent.items.template.1
// 1008: dependent.items.template.1:dependent.item.1.1.1.1
'request_data' => self::getDiscoveryRule(1001, 1008, 'dependent.discovery.rule.1.1.1.1', 1, 1)
],
- // Check for maximum depth of the items tree (update). Add 4th level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
+ 'Check for maximum depth of the items tree (update). Add 4th level.' => [
+ 'error' => 'Cannot set dependency for item with key "trap.1" on the master item with key "dependent.item.1.1.1.1" on the template "dependent.items.template.1": allowed count of dependency levels would be exceeded.',
'method' => 'item.update',
'request_data' => [
'itemid' => 1016, // dependent.items.template.1:trap.1
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'master_itemid' => 1008 // dependent.items.template.1:dependent.item.1.1.1.1
]
],
- // Check for maximum depth of the item prototypes tree (update). Add 4th level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
+ 'Check for maximum depth of the item prototypes tree (update). Add 4th level.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "item.proto.1" on the master item prototype with key "dependent.item.proto.1.1.1.1" on the template "dependent.items.template.1": allowed count of dependency levels would be exceeded.',
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 1033, // dependent.items.template.1:item.proto.1
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'master_itemid' => 1025 // dependent.items.template.1:dependent.item.proto.1.1.1.1
]
],
- // Check for maximum depth of the discovery rule tree (update). Add 4th level.
- [
+ 'Check for maximum depth of the discovery rule tree (update). Add 4th level.' => [
'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
'method' => 'discoveryrule.update',
'request_data' => [
'itemid' => 1017, // dependent.items.template.1:discovery.rule.1
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'master_itemid' => 1008 // dependent.items.template.1:dependent.item.1.1.1.1
]
],
- // Check for maximum depth of the items tree (update). Add 4th level at the top.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
+ 'Check for maximum depth of the items tree (update). Add 4th level at the top.' => [
+ 'error' => 'Cannot set dependency for item with key "item.2" on the master item with key "item.1" on the host "dependent.items.host.4": allowed count of dependency levels would be exceeded.',
'method' => 'item.update',
'request_data' => [
'itemid' => 1702, // dependent.items.template.4:item.2
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'master_itemid' => 1701 // dependent.items.template.4:item.1
]
],
- // Check for maximum depth of the mixed tree (update). Add 4th level at the top.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
+ 'Check for maximum depth of the mixed tree (update). Add 4th level at the top.' => [
+ 'error' => 'Cannot set dependency for item with key "item.2" on the master item with key "item.1" on the host "dependent.items.host.5": allowed count of dependency levels would be exceeded.',
'method' => 'item.update',
'request_data' => [
'itemid' => 1902, // dependent.items.template.5:item.2
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'master_itemid' => 1901 // dependent.items.template.5:item.1
]
],
- // Check for maximum depth of the item prototypes tree (update). Add 4th level at the top.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
+ 'Check for maximum depth of the item prototypes tree (update). Add 4th level at the top.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "item.proto.2" on the master item prototype with key "item.proto.1" on the host "dependent.items.host.6": allowed count of dependency levels would be exceeded.',
'method' => 'itemprototype.update',
'request_data' => [
'itemid' => 2103, // dependent.items.template.6:item.proto.2
- 'type' => 18, // ITEM_TYPE_DEPENDENT
+ 'type' => ITEM_TYPE_DEPENDENT,
'master_itemid' => 2102 // dependent.items.template.6:item.proto.1
]
],
- // Check for maximum depth of the items tree (link a template).
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
- 'method' => 'template.update',
+ 'Check for maximum depth of the items tree (link a template).' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.1" on the master item with key "master.item.1" on the host "dependent.items.host.2": allowed count of dependency levels would be exceeded.',
+ 'method' => 'host.update',
'request_data' => [
- 'templateid' => 1005, // dependent.items.template.2
- 'hosts' => [
- ['hostid' => 1006] // dependent.items.host.2
+ 'hostid' => 1006, // dependent.items.host.2
+ 'templates' => [
+ 'templateid' => 1005 // dependent.items.template.2
]
]
],
- // Check for maximum depth of the mixed tree (link a template).
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum number of dependency levels reached.',
- 'method' => 'template.update',
+ 'Check for maximum depth of the mixed tree (link a template).' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.1" on the master item with key "master.item.1" on the host "dependent.items.host.3": allowed count of dependency levels would be exceeded.',
+ 'method' => 'host.update',
'request_data' => [
- 'templateid' => 1005, // dependent.items.template.2
- 'hosts' => [
- ['hostid' => 1007] // dependent.items.host.3
+ 'hostid' => 1007, // dependent.items.host.3
+ 'templates' => [
+ 'templateid' => 1005 // dependent.items.template.2
]
]
],
- // Check for maximum count of items in the tree on the template level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of items in the tree on the template level.' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.3" on the master item with key "master.item.1" on the template "dependent.items.template.1": allowed count of dependent items would be exceeded.',
'method' => 'item.create',
// 1001: dependent.items.template.1
// 1001: dependent.items.template.1:master.item.1
- 'request_data' => self::getItems(1001, 1001, 'dependent.item.1', 3, 9987)
+ 'request_data' => self::getItems(1001, 1001, 'dependent.item.1', 3, $dep_count_overflow - 3)
],
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of items in the tree on the template level, combination.' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.2.3" on the master item with key "dependent.item.1.2" on the template "dependent.items.template.1": allowed count of dependent items would be exceeded.',
'method' => 'item.create',
// 1001: dependent.items.template.1
// 1002: dependent.items.template.1:dependent.item.1.1
// 1003: dependent.items.template.1:dependent.item.1.2
'request_data' => array_merge(
- self::getItems(1001, 1002, 'dependent.item.1.1', 3, 5495),
- self::getItems(1001, 1003, 'dependent.item.1.2', 3, 4494)
+ self::getItems(1001, 1002, 'dependent.item.1.1', 3, floor($dep_count_overflow / 2) - 3),
+ self::getItems(1001, 1003, 'dependent.item.1.2', 3, ceil($dep_count_overflow / 2) - 3)
)
],
- // Check for maximum count of discovery rule in the tree on the template level.
- [
+ 'Check for maximum count of discovery rule in the tree on the template level.' => [
'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
'method' => 'discoveryrule.create',
// 1001: dependent.items.template.1
// 1001: dependent.items.template.1:master.item.1
- 'request_data' => self::getDiscoveryRule(1001, 1001, 'dependent.discovery.rule.1', 2, 9986)
+ 'request_data' => self::getDiscoveryRule(1001, 1001, 'dependent.discovery.rule.1', 2, $dep_count_overflow - 2)
],
- // Check for maximum count of discovery rule in the tree on the template level.
- [
+ 'Check for maximum count of discovery rule in the tree on the template level.' => [
'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
'method' => 'discoveryrule.create',
// 1001: dependent.items.template.1
// 1002: dependent.items.template.1:dependent.item.1.1
// 1003: dependent.items.template.1:dependent.item.1.2
'request_data' => array_merge(
- self::getDiscoveryRule(1001, 1002, 'dependent.discovery.rule.1.1', 1, 5493),
- self::getDiscoveryRule(1001, 1003, 'dependent.discovery.rule.1.2', 1, 4492)
+ self::getDiscoveryRule(1001, 1002, 'dependent.discovery.rule.1.1', 1, floor($dep_count_overflow / 2) - 6),
+ self::getDiscoveryRule(1001, 1003, 'dependent.discovery.rule.1.2', 1, ceil($dep_count_overflow / 2))
)
],
- // Check for maximum count of items in the tree on the host level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of items in the tree on the host level.' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.3" on the master item with key "master.item.1" on the host "dependent.items.host.1": allowed count of dependent items would be exceeded.',
'method' => 'item.create',
// 1004: dependent.items.host.1
// 1301: dependent.items.host.1:master.item.1
- 'request_data' => self::getItems(1004, 1301, 'dependent.item.1', 3, 9987)
+ 'request_data' => self::getItems(1004, 1301, 'dependent.item.1', 3, $dep_count_overflow - 3 - 6)
],
- // Check for maximum count of items in the tree on the host level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of items in the tree on the host level, combination.' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.2.3" on the master item with key "dependent.item.1.2" on the host "dependent.items.host.1": allowed count of dependent items would be exceeded.',
'method' => 'item.create',
// 1004: dependent.items.host.1
// 1302: dependent.items.host.1:dependent.item.1.1
// 1303: dependent.items.host.1:dependent.item.1.2
'request_data' => array_merge(
- self::getItems(1004, 1302, 'dependent.item.1.1', 3, 5495),
- self::getItems(1004, 1303, 'dependent.item.1.2', 3, 4494)
+ self::getItems(1004, 1302, 'dependent.item.1.1', 3, floor($dep_count_overflow / 2) - 3),
+ self::getItems(1004, 1303, 'dependent.item.1.2', 3, ceil($dep_count_overflow / 2) - 3)
)
],
- // Check for maximum count of discovery rule in the tree on the host level.
- [
+ 'Check for maximum count of discovery rule in the tree on the host level.' => [
'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
'method' => 'discoveryrule.create',
// 1004: dependent.items.host.1
// 1301: dependent.items.host.1:master.item.1
- 'request_data' => self::getDiscoveryRule(1004, 1301, 'dependent.discovery.rule.1', 2, 9986)
+ 'request_data' => self::getDiscoveryRule(1004, 1301, 'dependent.discovery.rule.1', 2, $dep_count_overflow - 2 - 6)
],
- [
+ 'Check for maximum count of discovery rule in the tree on the host level 2.' => [
'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
'method' => 'discoveryrule.create',
// 1004: dependent.items.host.1
// 1302: dependent.items.host.1:dependent.item.1.1
// 1303: dependent.items.host.1:dependent.item.1.2
'request_data' => array_merge(
- self::getDiscoveryRule(1004, 1302, 'dependent.discovery.rule.1.1', 1, 5493),
- self::getDiscoveryRule(1004, 1303, 'dependent.discovery.rule.1.2', 1, 4492)
+ self::getDiscoveryRule(1004, 1302, 'dependent.discovery.rule.1.1', 1, floor($dep_count_overflow / 2) - 6),
+ self::getDiscoveryRule(1004, 1303, 'dependent.discovery.rule.1.2', 1, ceil($dep_count_overflow / 2))
)
],
- // Check for maximum count of items in the tree on the template level.
- [
+ 'Check for maximum count of items in the tree on the template level, fill to max.' => [
'error' => null,
'method' => 'item.create',
// 1001: dependent.items.template.1
- // 1002: dependent.items.template.1:dependent.item.1.1
- // 1003: dependent.items.template.1:dependent.item.1.2
+ // 1002: dependent.items.template.1:dependent.item.1.1 (2 dependents)
+ // 1003: dependent.items.template.1:dependent.item.1.2 (2 dependents)
'request_data' => array_merge(
- self::getItems(1001, 1002, 'dependent.item.1.1', 3, 9494),
- self::getItems(1001, 1003, 'dependent.item.1.2', 3, 494)
+ self::getItems(1001, 1002, 'dependent.item.1.1', 3, floor($dep_count_overflow / 2) - 3),
+ self::getItems(1001, 1003, 'dependent.item.1.2', 3, ceil($dep_count_overflow / 2) - 3 - 6 /* 4 existing dependents + parent dependent items */)
)
],
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of items in the tree on the template level, adding overflow via 2nd item.' => [
+ 'error' => 'Cannot set dependency for item with key "dependent.item.1.2.30" on the master item with key "dependent.item.1.2" on the template "dependent.items.template.1": allowed count of dependent items would be exceeded.',
'method' => 'item.create',
// 1001: dependent.items.template.1
// 1003: dependent.items.template.1:dependent.item.1.2
- 'request_data' => array_merge(self::getItems(1001, 1003, 'dependent.item.1.2', 495, 9495))
+ 'request_data' => self::getItems(1001, 1003, 'dependent.item.1.2', ceil($dep_count_overflow), ceil($dep_count_overflow) + 1)
],
- [
+ 'Check for maximum count of items in the tree on the template level, master item.' => [
'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
'method' => 'discoveryrule.create',
// 1001: dependent.items.template.1
// 1001: dependent.items.template.1:master.item.1
- 'request_data' => self::getDiscoveryRule(1001, 1001, 'dependent.discovery.rule.1', 2, 2)
+ 'request_data' => self::getDiscoveryRule(1001, 1001, 'dependent.discovery.rule.1', 2, $dep_count_overflow - 2 - 6)
],
- // Check for maximum count of item prototypes in the tree on the template level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of item prototypes in the tree on the template level.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "dependent.item.proto.1.3[{#LLD}]" on the master item prototype with key "master.item.proto.1" on the template "dependent.items.template.1": allowed count of dependent items would be exceeded.',
'method' => 'itemprototype.create',
// 1001: dependent.items.template.1
// 1017: dependent.items.template.1:discovery.rule.1
// 1018: dependent.items.template.1:master.item.proto.1
- 'request_data' => self::getItemPrototypes(1001, 1017, 1018, 'dependent.item.proto.1', 3, 9988)
+ 'request_data' => self::getItemPrototypes(1001, 1017, 1018, 'dependent.item.proto.1', 3, $dep_count_overflow - 3)
],
- // Check for maximum count of item prototypes in the tree on the template level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of item prototypes in the tree on the template level, combination, fail.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "dependent.item.proto.1.2.3[{#LLD}]" on the master item prototype with key "dependent.item.proto.1.2" on the template "dependent.items.template.1": allowed count of dependent items would be exceeded.',
'method' => 'itemprototype.create',
// 1001: dependent.items.template.1
// 1017: dependent.items.template.1:discovery.rule.1
// 1019: dependent.items.template.1:dependent.item.proto.1.1
// 1020: dependent.items.template.1:dependent.item.proto.1.2
'request_data' => array_merge(
- self::getItemPrototypes(1001, 1017, 1019, 'dependent.item.proto.1.1', 3, 5495),
- self::getItemPrototypes(1001, 1017, 1020, 'dependent.item.proto.1.2', 3, 4495)
+ self::getItemPrototypes(1001, 1017, 1019, 'dependent.item.proto.1.1', 3, floor($dep_count_overflow / 2) - 3),
+ self::getItemPrototypes(1001, 1017, 1020, 'dependent.item.proto.1.2', 3, ceil($dep_count_overflow / 2) - 3)
)
],
- // Check for maximum count of item prototypes in the tree on the host level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of item prototypes in the tree on the host level.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "dependent.item.proto.1.3[{#LLD}]" on the master item prototype with key "master.item.proto.1" on the host "dependent.items.host.1": allowed count of dependent items would be exceeded.',
'method' => 'itemprototype.create',
// 1004: dependent.items.host.1
// 1317: dependent.items.template.1:discovery.rule.1
// 1318: dependent.items.host.1:master.item.proto.1
- 'request_data' => self::getItemPrototypes(1004, 1317, 1318, 'dependent.item.proto.1', 3, 9988)
+ 'request_data' => self::getItemPrototypes(1004, 1317, 1318, 'dependent.item.proto.1', 3, $dep_count_overflow - 3)
],
- // Check for maximum count of item prototypes in the tree on the host level.
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of item prototypes in the tree on the host level, combination.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "dependent.item.proto.1.2.3[{#LLD}]" on the master item prototype with key "dependent.item.proto.1.2" on the host "dependent.items.host.1": allowed count of dependent items would be exceeded.',
'method' => 'itemprototype.create',
// 1004: dependent.items.host.1
// 1317: dependent.items.template.1:discovery.rule.1
// 1319: dependent.items.host.1:dependent.item.proto.1.1
// 1320: dependent.items.host.1:dependent.item.proto.1.2
'request_data' => array_merge(
- self::getItemPrototypes(1004, 1317, 1319, 'dependent.item.proto.1.1', 3, 5495),
- self::getItemPrototypes(1004, 1317, 1320, 'dependent.item.proto.1.2', 3, 4495)
+ self::getItemPrototypes(1004, 1317, 1319, 'dependent.item.proto.1.1', 3, floor($dep_count_overflow / 2) - 3),
+ self::getItemPrototypes(1004, 1317, 1320, 'dependent.item.proto.1.2', 3, ceil($dep_count_overflow / 2) - 3)
)
],
- // Check for maximum count of item prototypes in the tree on the template level.
- [
+ 'Check for maximum count of item prototypes in the tree on the template level, combination, success.' => [
'error' => null,
'method' => 'itemprototype.create',
- // 1001: dependent.items.template.1
+ // 1001: dependent.items.template.1 (max occupancy checked here)
// 1017: dependent.items.template.1:discovery.rule.1
- // 1019: dependent.items.template.1:dependent.item.proto.1.1
- // 1020: dependent.items.template.1:dependent.item.proto.1.2
+ // 1019: dependent.items.template.1:dependent.item.proto.1.1 (2 dependents)
+ // 1020: dependent.items.template.1:dependent.item.proto.1.2 (2 dependents)
'request_data' => array_merge(
- self::getItemPrototypes(1001, 1017, 1019, 'dependent.item.proto.1.1', 3, 5495),
- self::getItemPrototypes(1001, 1017, 1020, 'dependent.item.proto.1.2', 3, 4494)
+ self::getItemPrototypes(1001, 1017, 1019, 'dependent.item.proto.1.1', 3, floor($dep_count_overflow / 2) - 3 - 2 /* dependents */),
+ self::getItemPrototypes(1001, 1017, 1020, 'dependent.item.proto.1.2', 3, ceil($dep_count_overflow / 2) - 3 - 2 /* dependents */ - 1 /*rule itself*/)
)
],
- [
- 'error' => 'Incorrect value for field "master_itemid": maximum dependent items count reached.',
+ 'Check for maximum count of item prototypes in the tree on the template.' => [
+ 'error' => 'Cannot set dependency for item prototype with key "dependent.item.proto.1.2.11[{#LLD}]" on the master item prototype with key "dependent.item.proto.1.2" on the template "dependent.items.template.1": allowed count of dependent items would be exceeded.',
'method' => 'itemprototype.create',
// 1001: dependent.items.template.1
// 1017: dependent.items.template.1:discovery.rule.1
// 1020: dependent.items.template.1:dependent.item.proto.1.2
'request_data' => array_merge(
- self::getItemPrototypes(1001, 1017, 1020, 'dependent.item.proto.1.2', 4495, 5494)
+ self::getItemPrototypes(1001, 1017, 1020, 'dependent.item.proto.1.2', floor($dep_count_overflow / 2) - 5 + 1 /* from last above */, floor($dep_count_overflow / 2) - 4 + 1)
)
]
];
}
+
/**
* @dataProvider getTestCases
*/
- public function testDependentItems_Update($error, $method, $request_data) {
- $this->call($method, $request_data, $error);
+ public function testDependentItems_main($expected_error, $method, $request_data) {
+ static $reg_child_number = '/("dependent[^"]+\.)(\d*)([^"]*")/';
+
+ if ($expected_error === null || strrpos($expected_error, 'allowed count of dependent') === false) {
+ return $this->call($method, $request_data, $expected_error);
+ }
+
+ if (CAPIHelper::getSessionId() === null) {
+ $this->authorize(PHPUNIT_LOGIN_NAME, PHPUNIT_LOGIN_PWD);
+ }
+
+ $response = CAPIHelper::call($method, $request_data);
+
+ $this->assertArrayNotHasKey('result', $response);
+ $this->assertArrayHasKey('error', $response);
+
+ /*
+ To allow for varying ZBX_DEPENDENT_ITEM_MAX_COUNT, replace specific dependent "child" numbers, e.g.
+ dependent.item.proto.1.2.46[{#LLD}] becomes
+ dependent.item.proto.1.2.x[{#LLD}].
+ */
+ $expected_error = preg_replace($reg_child_number, '$1x$3', $expected_error);
+ $received_error = $response['error']['data'];
+
+ if (strrpos($received_error, 'allowed count of dependent') !== false) {
+ $received_error = preg_replace($reg_child_number, '$1x$3', $received_error);
+ }
+
+ $this->assertSame($expected_error, $received_error);
}
}
diff --git a/ui/tests/api_json/testIconMap.php b/ui/tests/api_json/testIconMap.php
index fc9ec09d4f3..5c61f3667eb 100644
--- a/ui/tests/api_json/testIconMap.php
+++ b/ui/tests/api_json/testIconMap.php
@@ -466,21 +466,7 @@ class testIconMap extends CAPITest {
]],
[[
'iconmap' => [
- 'name' => 'invalid regular expression',
- 'default_iconid' => '2',
- 'mappings' =>[
- [
- 'inventory_link' => '2',
- 'expression' => '\//',
- 'iconid' => '1'
- ]
- ]
- ],
- 'expected_error' => 'Invalid parameter "/1/mappings/1/expression": invalid regular expression.'
- ]],
- [[
- 'iconmap' => [
- 'name' => 'invalid regular expression',
+ 'name' => 'invalid regular expression 1',
'default_iconid' => '2',
'mappings' =>[
[
@@ -494,7 +480,7 @@ class testIconMap extends CAPITest {
]],
[[
'iconmap' => [
- 'name' => 'invalid regular expression',
+ 'name' => 'invalid regular expression 2',
'default_iconid' => '2',
'mappings' =>[
[
@@ -508,7 +494,7 @@ class testIconMap extends CAPITest {
]],
[[
'iconmap' => [
- 'name' => 'invalid regular expression',
+ 'name' => 'invalid regular expression 3',
'default_iconid' => '2',
'mappings' =>[
[
diff --git a/ui/tests/api_json/testItem.php b/ui/tests/api_json/testItem.php
index 28eb5073f54..f6a0699c3cb 100644
--- a/ui/tests/api_json/testItem.php
+++ b/ui/tests/api_json/testItem.php
@@ -47,62 +47,93 @@ class testItem extends CAPITest {
ITEM_TYPE_DEPENDENT => null,
ITEM_TYPE_HTTPAGENT => '50022',
ITEM_TYPE_SNMP => '50029',
- ITEM_TYPE_SCRIPT => '50022'
+ ITEM_TYPE_SCRIPT => null
];
-
$item_type_tests = [];
+
foreach ($valid_item_types as $type => $interfaceid) {
switch ($type) {
+ case ITEM_TYPE_ZABBIX:
+ case ITEM_TYPE_SIMPLE:
+ case ITEM_TYPE_INTERNAL:
+ case ITEM_TYPE_ZABBIX_ACTIVE:
+ case ITEM_TYPE_EXTERNAL:
+ $params = [
+ 'delay' => '30s'
+ ];
+ break;
+
+ case ITEM_TYPE_DB_MONITOR:
+ $params = [
+ 'params' => 'SELECT * FROM table',
+ 'delay' => '30s'
+ ];
+ break;
+
case ITEM_TYPE_IPMI:
$params = [
- 'ipmi_sensor' => '1.2.3'
+ 'ipmi_sensor' => '1.2.3',
+ 'delay' => '30s'
];
break;
- case ITEM_TYPE_TRAPPER:
+ case ITEM_TYPE_SSH:
$params = [
- 'delay' => '0'
+ 'username' => 'username',
+ 'authtype' => ITEM_AUTHTYPE_PASSWORD,
+ 'params' => 'return true;',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_TELNET:
- case ITEM_TYPE_SSH:
$params = [
'username' => 'username',
- 'authtype' => ITEM_AUTHTYPE_PASSWORD
+ 'params' => 'return true;',
+ 'delay' => '30s'
];
break;
- case ITEM_TYPE_DEPENDENT:
+ case ITEM_TYPE_CALCULATED:
$params = [
- 'master_itemid' => '150151',
- 'delay' => '0'
+ 'params' => '1+1',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_JMX:
$params = [
'username' => 'username',
- 'password' => 'password'
+ 'password' => 'password',
+ 'delay' => '30s'
+ ];
+ break;
+
+ case ITEM_TYPE_DEPENDENT:
+ $params = [
+ 'master_itemid' => '150151'
];
break;
case ITEM_TYPE_HTTPAGENT:
$params = [
- 'url' => 'http://0.0.0.0'
+ 'url' => 'http://0.0.0.0',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_SNMP:
$params = [
- 'snmp_oid' => '1.2.3'
+ 'snmp_oid' => '1.2.3',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_SCRIPT:
$params = [
'params' => 'script',
- 'timeout' => '30s'
+ 'timeout' => '30s',
+ 'delay' => '30s'
];
break;
@@ -121,8 +152,7 @@ class testItem extends CAPITest {
'key_' => 'item_of_type_'.$type,
'hostid' => '50009',
'type' => (string) $type,
- 'value_type' => ITEM_VALUE_TYPE_UINT64,
- 'delay' => '30s'
+ 'value_type' => ITEM_VALUE_TYPE_UINT64
],
'expected_error' => null
];
@@ -135,16 +165,30 @@ class testItem extends CAPITest {
foreach ($item_type_tests as $item_type_test) {
if (in_array($item_type_test['request_data']['type'], $optional)) {
unset($item_type_test['request_data']['interfaceid']);
- $interfaces_tests[] = $item_type_test;
+
+ $request_data = [
+ 'name' => $item_type_test['request_data']['name'].' missing',
+ 'key_' => $item_type_test['request_data']['key_'].'_missing'
+ ] + $item_type_test['request_data'];
+
+ $interfaces_tests[] = ['request_data' => $request_data] + $item_type_test;
+
+ $request_data = [
+ 'name' => $item_type_test['request_data']['name'].' zero',
+ 'key_' => $item_type_test['request_data']['key_'].'_zero',
+ 'interfaceid' => '0'
+ ] + $item_type_test['request_data'];
+
+ $interfaces_tests[] = ['request_data' => $request_data] + $item_type_test;
}
else if (in_array($item_type_test['request_data']['type'], $required)) {
unset($item_type_test['request_data']['interfaceid']);
- $item_type_test['expected_error'] = 'No interface found.';
+ $item_type_test['expected_error'] = 'Invalid parameter "/1": the parameter "interfaceid" is missing.';
$interfaces_tests[] = $item_type_test;
}
}
- return [
+ return array_merge([
[
'request_data' => [
'hostid' => '50009',
@@ -184,7 +228,7 @@ class testItem extends CAPITest {
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX
],
- 'expected_error' => 'Incorrect arguments passed to function.'
+ 'expected_error' => 'Invalid parameter "/1": the parameter "delay" is missing.'
],
[
'request_data' => [
@@ -196,7 +240,7 @@ class testItem extends CAPITest {
'type' => ITEM_TYPE_ZABBIX,
'delay' => '0'
],
- 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
],
// Test update interval for mqtt key of the Active agent type.
[
@@ -204,7 +248,6 @@ class testItem extends CAPITest {
'hostid' => '50009',
'name' => 'Test mqtt key for active agent',
'key_' => 'mqtt.get[3]',
- 'interfaceid' => '50022',
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX_ACTIVE
],
@@ -215,10 +258,8 @@ class testItem extends CAPITest {
'hostid' => '50009',
'name' => 'Test mqtt key with 0 delay for active agent',
'key_' => 'mqtt.get[4]',
- 'interfaceid' => '50022',
'value_type' => ITEM_VALUE_TYPE_UINT64,
- 'type' => ITEM_TYPE_ZABBIX_ACTIVE,
- 'delay' => '0'
+ 'type' => ITEM_TYPE_ZABBIX_ACTIVE
],
'expected_error' => null
],
@@ -229,7 +270,6 @@ class testItem extends CAPITest {
'key_' => 'trapper_item_1',
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_TRAPPER,
- 'delay' => '0',
'tags' => [
[
'tag' => 'tag',
@@ -248,12 +288,11 @@ class testItem extends CAPITest {
'hostid' => '50009',
'name' => 'Test mqtt with wrong key and 0 delay',
'key_' => 'mqt.get[5]',
- 'interfaceid' => '50022',
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX_ACTIVE,
'delay' => '0'
],
- 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
],
// Item preprocessing.
[
@@ -264,19 +303,17 @@ class testItem extends CAPITest {
'interfaceid' => '50022',
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX_ACTIVE,
- 'delay' => '0',
'preprocessing' => [
[
'type' => ZBX_PREPROC_VALIDATE_NOT_SUPPORTED,
- 'params' => '',
'error_handler' => ZBX_PREPROC_FAIL_DEFAULT,
'error_handler_params' => ''
]
]
],
- 'expected_error' => 'Incorrect value for field "error_handler": unexpected value "0".'
+ 'expected_error' => 'Invalid parameter "/1/preprocessing/1/error_handler": value must be one of 1, 2, 3.'
]
- ] + $item_type_tests + $interfaces_tests;
+ ], $item_type_tests, $interfaces_tests);
}
/**
@@ -290,6 +327,10 @@ class testItem extends CAPITest {
$request_data['delay'] = CTestArrayHelper::get($request_data, 'delay', '0');
}
+ if (!array_key_exists('delay', $request_data)) {
+ $request_data['delay'] = 0;
+ }
+
foreach ($result['result']['itemids'] as $id) {
$db_item = CDBHelper::getRow('SELECT hostid, name, key_, type, delay FROM items WHERE itemid='.zbx_dbstr($id));
@@ -366,7 +407,7 @@ class testItem extends CAPITest {
'key_' => 'mqtt.get[00]',
'delay' => '0'
],
- 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
],
// Test update interval for wrong mqtt key of the Active agent item type.
[
@@ -376,15 +417,14 @@ class testItem extends CAPITest {
'type' => ITEM_TYPE_ZABBIX,
'delay' => '0'
],
- 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
],
// Change type to active agent and check update interval for mqtt key.
[
'request_data' => [
'item' => 'testItem_Update:agent.ping',
'key_' => 'mqtt.get[22]',
- 'type' => ITEM_TYPE_ZABBIX_ACTIVE,
- 'delay' => '0'
+ 'type' => ITEM_TYPE_ZABBIX_ACTIVE
],
'expected_error' => null
],
@@ -411,6 +451,7 @@ class testItem extends CAPITest {
if ($expected_error === null) {
if ($request_data['type'] === ITEM_TYPE_ZABBIX_ACTIVE && substr($request_data['key_'], 0, 8) === 'mqtt.get') {
+
$request_data['delay'] = CTestArrayHelper::get($request_data, 'delay', '0');
}
diff --git a/ui/tests/api_json/testItemPrototype.php b/ui/tests/api_json/testItemPrototype.php
index 1332ab75ed8..3315bf649ed 100644
--- a/ui/tests/api_json/testItemPrototype.php
+++ b/ui/tests/api_json/testItemPrototype.php
@@ -43,62 +43,93 @@ class testItemPrototype extends CAPITest {
ITEM_TYPE_DEPENDENT => null,
ITEM_TYPE_HTTPAGENT => '50022',
ITEM_TYPE_SNMP => '50029',
- ITEM_TYPE_SCRIPT => '50022'
+ ITEM_TYPE_SCRIPT => null
];
$item_type_tests = [];
foreach ($valid_item_types as $type => $interfaceid) {
switch ($type) {
+ case ITEM_TYPE_ZABBIX:
+ case ITEM_TYPE_SIMPLE:
+ case ITEM_TYPE_INTERNAL:
+ case ITEM_TYPE_ZABBIX_ACTIVE:
+ case ITEM_TYPE_EXTERNAL:
+ $params = [
+ 'delay' => '30s'
+ ];
+ break;
+
+ case ITEM_TYPE_DB_MONITOR:
+ $params = [
+ 'params' => 'SELECT * FROM table',
+ 'delay' => '30s'
+ ];
+ break;
+
case ITEM_TYPE_IPMI:
$params = [
- 'ipmi_sensor' => '1.2.3'
+ 'ipmi_sensor' => '1.2.3',
+ 'delay' => '30s'
];
break;
- case ITEM_TYPE_TRAPPER:
+ case ITEM_TYPE_SSH:
$params = [
- 'delay' => '0'
+ 'username' => 'username',
+ 'authtype' => ITEM_AUTHTYPE_PASSWORD,
+ 'params' => 'return true;',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_TELNET:
- case ITEM_TYPE_SSH:
$params = [
'username' => 'username',
- 'authtype' => ITEM_AUTHTYPE_PASSWORD
+ 'params' => 'return true;',
+ 'delay' => '30s'
];
break;
- case ITEM_TYPE_DEPENDENT:
+ case ITEM_TYPE_CALCULATED:
$params = [
- 'master_itemid' => '150151',
- 'delay' => '0'
+ 'params' => '1+1',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_JMX:
$params = [
'username' => 'username',
- 'password' => 'password'
+ 'password' => 'password',
+ 'delay' => '30s'
+ ];
+ break;
+
+ case ITEM_TYPE_DEPENDENT:
+ $params = [
+ 'master_itemid' => '150151'
];
break;
case ITEM_TYPE_HTTPAGENT:
$params = [
- 'url' => 'http://0.0.0.0'
+ 'url' => 'http://0.0.0.0',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_SNMP:
$params = [
- 'snmp_oid' => '1.2.3'
+ 'snmp_oid' => '1.2.3',
+ 'delay' => '30s'
];
break;
case ITEM_TYPE_SCRIPT:
$params = [
'params' => 'script',
- 'timeout' => '30s'
+ 'timeout' => '30s',
+ 'delay' => '30s'
];
break;
@@ -116,16 +147,45 @@ class testItemPrototype extends CAPITest {
'hostid' => '50009',
'ruleid' => '400660',
'name' => 'Test item prototype of type '.$type,
- 'key_' => 'test_item_prototype_of_type_'.$type,
+ 'key_' => 'test_item_prototype_of_type_'.$type.'[{#LLD_MACRO}]',
'value_type' => ITEM_VALUE_TYPE_UINT64,
- 'type' => (string) $type,
- 'delay' => '30s'
+ 'type' => (string) $type
],
'expected_error' => null
];
}
- return [
+ $interfaces_tests = [];
+ $optional = [ITEM_TYPE_SIMPLE, ITEM_TYPE_EXTERNAL, ITEM_TYPE_SSH, ITEM_TYPE_TELNET, ITEM_TYPE_HTTPAGENT];
+ $required = [ITEM_TYPE_SNMP, ITEM_TYPE_SNMPTRAP, ITEM_TYPE_IPMI, ITEM_TYPE_ZABBIX, ITEM_TYPE_JMX];
+
+ foreach ($item_type_tests as $item_type_test) {
+ if (in_array($item_type_test['request_data']['type'], $optional)) {
+ unset($item_type_test['request_data']['interfaceid']);
+
+ $request_data = [
+ 'name' => $item_type_test['request_data']['name'].' missing',
+ 'key_' => substr($item_type_test['request_data']['key_'], 0, -1).', missing]'
+ ] + $item_type_test['request_data'];
+
+ $interfaces_tests[] = ['request_data' => $request_data] + $item_type_test;
+
+ $request_data = [
+ 'name' => $item_type_test['request_data']['name'].' zero',
+ 'key_' => substr($item_type_test['request_data']['key_'], 0, -1).', zero]',
+ 'interfaceid' => '0'
+ ] + $item_type_test['request_data'];
+
+ $interfaces_tests[] = ['request_data' => $request_data] + $item_type_test;
+ }
+ else if (in_array($item_type_test['request_data']['type'], $required)) {
+ unset($item_type_test['request_data']['interfaceid']);
+ $item_type_test['expected_error'] = 'Invalid parameter "/1": the parameter "interfaceid" is missing.';
+ $interfaces_tests[] = $item_type_test;
+ }
+ }
+
+ return array_merge([
[
'request_data' => [
'hostid' => '50009',
@@ -167,7 +227,7 @@ class testItemPrototype extends CAPITest {
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX
],
- 'expected_error' => 'Incorrect arguments passed to function.'
+ 'expected_error' => 'Invalid parameter "/1": the parameter "ruleid" is missing.'
],
[
'request_data' => [
@@ -180,7 +240,7 @@ class testItemPrototype extends CAPITest {
'type' => ITEM_TYPE_ZABBIX,
'delay' => '0'
],
- 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
],
// Test update interval for mqtt key of the Active agent type.
[
@@ -189,7 +249,6 @@ class testItemPrototype extends CAPITest {
'ruleid' => '400660',
'name' => 'Test mqtt key for active agent',
'key_' => 'mqtt.get[{#3}]',
- 'interfaceid' => '50022',
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX_ACTIVE
],
@@ -201,7 +260,6 @@ class testItemPrototype extends CAPITest {
'ruleid' => '400660',
'name' => 'Test mqtt key with 0 delay for active agent',
'key_' => 'mqtt.get[{#4}]',
- 'interfaceid' => '50022',
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX_ACTIVE,
'delay' => '0'
@@ -214,14 +272,13 @@ class testItemPrototype extends CAPITest {
'ruleid' => '400660',
'name' => 'Test mqtt with wrong key and 0 delay',
'key_' => 'mqt.get[{#5}]',
- 'interfaceid' => '50022',
'value_type' => ITEM_VALUE_TYPE_UINT64,
'type' => ITEM_TYPE_ZABBIX_ACTIVE,
'delay' => '0'
],
- 'expected_error' => 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'expected_error' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
]
- ] + $item_type_tests;
+ ], $item_type_tests, $interfaces_tests);
}
/**
@@ -231,9 +288,13 @@ class testItemPrototype extends CAPITest {
$result = $this->call('itemprototype.create', $request_data, $expected_error);
if ($expected_error === null) {
- if ($request_data['type'] === ITEM_TYPE_ZABBIX_ACTIVE && substr($request_data['key_'], 0, 8) === 'mqtt.get') {
- $request_data['delay'] = CTestArrayHelper::get($request_data, 'delay', '0');
- }
+ if ($request_data['type'] === ITEM_TYPE_ZABBIX_ACTIVE && substr($request_data['key_'], 0, 8) === 'mqtt.get') {
+ $request_data['delay'] = CTestArrayHelper::get($request_data, 'delay', '0');
+ }
+
+ if (!array_key_exists('delay', $request_data)) {
+ $request_data['delay'] = 0;
+ }
foreach ($result['result']['itemids'] as $id) {
$db_item = CDBHelper::getRow('SELECT hostid, name, key_, type, delay FROM items WHERE itemid='.zbx_dbstr($id));
diff --git a/ui/tests/api_json/testWebScenario.php b/ui/tests/api_json/testWebScenario.php
index f0524bc84f8..2fda9c0da3c 100644
--- a/ui/tests/api_json/testWebScenario.php
+++ b/ui/tests/api_json/testWebScenario.php
@@ -1588,12 +1588,6 @@ class testWebScenario extends CAPITest {
]
]
], null);
-
- $itemids = array_keys(array_fill(150151, 9, 0));
-
- DBexecute('UPDATE items SET name=REPLACE(name, '.zbx_dbstr('"Webtest key_name"').', '.zbx_dbstr('"$1"').') WHERE '.dbConditionInt('itemid', $itemids));
- DBexecute('UPDATE items SET name=REPLACE(name, '.zbx_dbstr('"Webstep name 1"').', '.zbx_dbstr('"$2"').') WHERE '.dbConditionInt('itemid', $itemids));
- DBexecute('UPDATE items SET name=REPLACE(name, '.zbx_dbstr('"Webstep name 2"').', '.zbx_dbstr('"$2"').') WHERE '.dbConditionInt('itemid', $itemids));
}
/**
diff --git a/ui/tests/api_json/xml/testDiscoveredHostGroupsAfterImportParentHost.xml b/ui/tests/api_json/xml/testDiscoveredHostGroupsAfterImportParentHost.xml
index b18e006e3e3..ad91665d7b9 100644
--- a/ui/tests/api_json/xml/testDiscoveredHostGroupsAfterImportParentHost.xml
+++ b/ui/tests/api_json/xml/testDiscoveredHostGroupsAfterImportParentHost.xml
@@ -325,7 +325,7 @@
<type>2</type>
<snmp_community/>
<snmp_oid/>
- <key>12348</key>
+ <key>12348[{#LLD_MACRO}]</key>
<delay>0</delay>
<history>90d</history>
<trends>365d</trends>
@@ -385,7 +385,7 @@
<type>2</type>
<snmp_community/>
<snmp_oid/>
- <key>12349</key>
+ <key>12349[{#LLD_MACRO}]</key>
<delay>0</delay>
<history>90d</history>
<trends>365d</trends>
@@ -443,7 +443,7 @@
</item_prototypes>
<trigger_prototypes>
<trigger_prototype>
- <expression>{12345:12348.last()}</expression>
+ <expression>{12345:12348[{#LLD_MACRO}].last()}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>12348</name>
@@ -459,7 +459,7 @@
<tags/>
</trigger_prototype>
<trigger_prototype>
- <expression>{12345:12348.last()} or {12345:12349.last()}</expression>
+ <expression>{12345:12348[{#LLD_MACRO}].last()} or {12345:12349[{#LLD_MACRO}].last()}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>12348</name>
@@ -475,7 +475,7 @@
<tags/>
</trigger_prototype>
<trigger_prototype>
- <expression>{12345:12349.last()}</expression>
+ <expression>{12345:12349[{#LLD_MACRO}].last()}</expression>
<recovery_mode>0</recovery_mode>
<recovery_expression/>
<name>12349</name>
@@ -519,7 +519,7 @@
<type>0</type>
<item>
<host>12345</host>
- <key>12348</key>
+ <key>12348[{#LLD_MACRO}]</key>
</item>
</graph_item>
<graph_item>
@@ -531,7 +531,7 @@
<type>0</type>
<item>
<host>12345</host>
- <key>12349</key>
+ <key>12349[{#LLD_MACRO}]</key>
</item>
</graph_item>
</graph_items>
diff --git a/ui/tests/include/helpers/CDataHelper.php b/ui/tests/include/helpers/CDataHelper.php
index 0202c8cf031..c6c25eb5896 100644
--- a/ui/tests/include/helpers/CDataHelper.php
+++ b/ui/tests/include/helpers/CDataHelper.php
@@ -226,8 +226,11 @@ class CDataHelper extends CAPIHelper {
if (array_key_exists($host, $interfaces['default_interfaces'])) {
$interface_type = null;
switch (CTestArrayHelper::get($item, 'type')) {
- case ITEM_TYPE_ZABBIX:
case ITEM_TYPE_ZABBIX_ACTIVE:
+ $interface_type = 0;
+ break;
+
+ case ITEM_TYPE_ZABBIX:
$interface_type = 1;
break;
diff --git a/ui/tests/include/web/CPage.php b/ui/tests/include/web/CPage.php
index cc2abc0f9fa..eab84952c98 100644
--- a/ui/tests/include/web/CPage.php
+++ b/ui/tests/include/web/CPage.php
@@ -219,7 +219,6 @@ class CPage {
self::$cookie = [
'name' => 'zbx_session',
'value' => base64_encode(json_encode($data)),
- 'domain' => parse_url(PHPUNIT_URL, PHP_URL_HOST),
'path' => rtrim(substr($path, 0, strrpos($path, '/')), '/')
];
diff --git a/ui/tests/include/web/elements/CWidgetElement.php b/ui/tests/include/web/elements/CWidgetElement.php
index 8933d2dbdd9..beb333f7861 100644
--- a/ui/tests/include/web/elements/CWidgetElement.php
+++ b/ui/tests/include/web/elements/CWidgetElement.php
@@ -33,7 +33,7 @@ class CWidgetElement extends CElement {
* @return integer
*/
public function getRefreshInterval() {
- $this->query('xpath:.//button[@class="btn-widget-action"]')->waitUntilPresent()->one()->click(true);
+ $this->query('xpath:.//button[contains(@class, "btn-widget-action")]')->waitUntilPresent()->one()->click(true);
$selected = $this->query('xpath://ul[@role="menu"]//a[contains(@aria-label, "selected")]')->one();
$aria_label = explode(', ', $selected->getAttribute('aria-label'), 3);
@@ -66,7 +66,7 @@ class CWidgetElement extends CElement {
* @return boolean
*/
public function isEditable() {
- return $this->query('xpath:.//button[@class="btn-widget-edit"]')->one()->isPresent();
+ return $this->query('xpath:.//button[contains(@class, "btn-widget-edit")]')->one()->isPresent();
}
/**
@@ -76,8 +76,8 @@ class CWidgetElement extends CElement {
*/
public function edit() {
// Edit can sometimes fail so we have to retry this operation.
- for ($i = 0; $i < 2; $i++) {
- $this->query('xpath:.//button[@class="btn-widget-edit"]')->waitUntilPresent()->one()->click(true);
+ for ($i = 0; $i < 4; $i++) {
+ $this->query('xpath:.//button[contains(@class, "btn-widget-edit")]')->waitUntilPresent()->one()->click(true);
try {
return $this->query('xpath://div[@data-dialogueid="widget_properties"]//form')->waitUntilVisible()->asForm()->one();
diff --git a/ui/tests/integration/data/confsync_hosts.xml b/ui/tests/integration/data/confsync_hosts.xml
index 76642623235..568275d600f 100644
--- a/ui/tests/integration/data/confsync_hosts.xml
+++ b/ui/tests/integration/data/confsync_hosts.xml
@@ -191,6 +191,7 @@
<name>Hostname</name>
<key>agent.hostname</key>
<trends>0</trends>
+ <delay>15s</delay>
<value_type>CHAR</value_type>
<inventory_link>NAME</inventory_link>
<interface_ref>if1</interface_ref>
@@ -271,11 +272,11 @@
<item_prototype>
<name>ItemProto</name>
<type>CALCULATED</type>
- <key>proto</key>
+ <key>proto[{#X}]</key>
<params>1</params>
<trigger_prototypes>
<trigger_prototype>
- <expression>last(/HostWithDiscovery/proto)=1</expression>
+ <expression>last(/HostWithDiscovery/proto[{#X}])=1</expression>
<name>TriggerPrototype</name>
<priority>DISASTER</priority>
<manual_close>YES</manual_close>
diff --git a/ui/tests/integration/data/confsync_hosts_updated.xml b/ui/tests/integration/data/confsync_hosts_updated.xml
index faf353b00dc..3382bd9071c 100644
--- a/ui/tests/integration/data/confsync_hosts_updated.xml
+++ b/ui/tests/integration/data/confsync_hosts_updated.xml
@@ -188,7 +188,7 @@
</interfaces>
<items>
<item>
- <name>Hostname</name>
+ <name>Hostname1</name>
<key>agent.hostname</key>
<trends>0</trends>
<delay>25s</delay>
@@ -197,7 +197,7 @@
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>Chassis</name>
+ <name>Chassis1</name>
<key>system.hw.chassis[model]</key>
<trends>0</trends>
<delay>25s</delay>
@@ -206,7 +206,7 @@
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>Uname</name>
+ <name>Uname1</name>
<key>system.uname</key>
<trends>0</trends>
<delay>25s</delay>
@@ -238,9 +238,9 @@
</interfaces>
<items>
<item>
- <name>ItemWithMultilevelMacros</name>
- <key>vfs.dir.count[/{$UU},{$CHLDTMPLMACRO},{$PRNTTMPLMACRO}]</key>
- <delay>{$PRNTTMPLMACRO}</delay>
+ <name>ItemWithMultilevelMacros1</name>
+ <key>vfs.dir.count[/tmp/{$UU},{$CHLDTMPLMACRO},{$PRNTTMPLMACRO}]</key>
+ <delay>{$CHLDTMPLMACRO}</delay>
<interface_ref>if1</interface_ref>
</item>
</items>
@@ -272,13 +272,13 @@
</filter>
<item_prototypes>
<item_prototype>
- <name>ItemProto</name>
+ <name>ItemProtoo</name>
<type>CALCULATED</type>
- <key>proto</key>
+ <key>proto[{#X}]</key>
<params>1</params>
<trigger_prototypes>
<trigger_prototype>
- <expression>last(/HostWithDiscovery/proto)=2</expression>
+ <expression>last(/HostWithDiscovery/proto[{#X}])=2</expression>
<name>TriggerPrototype</name>
<priority>HIGH</priority>
<manual_close>YES</manual_close>
@@ -371,7 +371,7 @@
</interfaces>
<items>
<item>
- <name>NormalItemPreproc</name>
+ <name>NormalItemPreproc1</name>
<key>agent.hostmetadata</key>
<trends>0</trends>
<delay>20s</delay>
@@ -388,7 +388,7 @@
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>Agent ping (active)</name>
+ <name>Agent ping (active)1</name>
<type>ZABBIX_ACTIVE</type>
<key>agent.ping</key>
<delay>20s</delay>
@@ -408,7 +408,7 @@
</triggers>
</item>
<item>
- <name>Agent version (passive)</name>
+ <name>Agent version (passive)1</name>
<key>agent.version</key>
<delay>20s</delay>
<trends>0</trends>
@@ -416,7 +416,7 @@
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>Calculated</name>
+ <name>Calculated1</name>
<type>CALCULATED</type>
<key>calc</key>
<params>1+1+1</params>
@@ -465,13 +465,13 @@
</triggers>
</item>
<item>
- <name>CalculatedAsAggregated</name>
+ <name>CalculatedAsAggregated1b</name>
<type>CALCULATED</type>
<key>calc_as_aggr</key>
<params>sum(last_foreach(/*/agent.version?[group=&quot;HG1&quot;]))</params>
</item>
<item>
- <name>CalculatedPreproc</name>
+ <name>CalculatedPreproc1b</name>
<type>CALCULATED</type>
<key>calc_preproc</key>
<params>1</params>
@@ -486,25 +486,25 @@
</preprocessing>
</item>
<item>
- <name>ODBC monitor</name>
+ <name>ODBC monitor1</name>
<type>ODBC</type>
<key>db.odbc.select[x,y,z]</key>
<params>select null from dual;</params>
</item>
<item>
- <name>Dependent item</name>
+ <name>Dependent itemm</name>
<type>DEPENDENT</type>
<key>depitem</key>
- <delay>10s</delay>
+ <delay>0</delay>
<master_item>
<key>calc</key>
</master_item>
</item>
<item>
- <name>DepItemOnCalcPreproc</name>
+ <name>DepItemOnCalcPreprocc</name>
<type>DEPENDENT</type>
<key>depitem_calc_preproc</key>
- <delay>10s</delay>
+ <delay>0</delay>
<preprocessing>
<step>
<type>STR_REPLACE</type>
@@ -519,10 +519,10 @@
</master_item>
</item>
<item>
- <name>DepItemOnDepCalcItem</name>
+ <name>DepItemOnDepCalcItemm</name>
<type>DEPENDENT</type>
<key>depitem_depitem</key>
- <delay>10s</delay>
+ <delay>0</delay>
<preprocessing>
<step>
<type>STR_REPLACE</type>
@@ -537,10 +537,10 @@
</master_item>
</item>
<item>
- <name>DepItemOnNormalDepItem</name>
+ <name>DepItemOnNormalDepItemm</name>
<type>DEPENDENT</type>
<key>depitem_depitem_normal</key>
- <delay>10s</delay>
+ <delay>0</delay>
<preprocessing>
<step>
<type>STR_REPLACE</type>
@@ -555,15 +555,15 @@
</master_item>
</item>
<item>
- <name>Zabbix internal</name>
+ <name>Zabbix internall</name>
<type>INTERNAL</type>
<key>zabbix[boottime]</key>
</item>
<item>
- <name>DepItemOnInternalItem</name>
+ <name>DepItemOnInternalItemm</name>
<type>DEPENDENT</type>
<key>depitem_internal</key>
- <delay>30s</delay>
+ <delay>0</delay>
<preprocessing>
<step>
<type>STR_REPLACE</type>
@@ -578,10 +578,10 @@
</master_item>
</item>
<item>
- <name>DepItemOnNormalItem</name>
+ <name>DepItemOnNormalItemm</name>
<type>DEPENDENT</type>
<key>depitem_normalitem</key>
- <delay>30s</delay>
+ <delay>0</delay>
<preprocessing>
<step>
<type>REGEX</type>
@@ -596,10 +596,10 @@
</master_item>
</item>
<item>
- <name>DepItemOnInternalItemPreproc</name>
+ <name>DepItemOnInternalItemPreprocc</name>
<type>DEPENDENT</type>
<key>depitem_normal_preproc</key>
- <delay>10s</delay>
+ <delay>0</delay>
<preprocessing>
<step>
<type>STR_REPLACE</type>
@@ -614,13 +614,13 @@
</master_item>
</item>
<item>
- <name>External check</name>
+ <name>External checkk</name>
<type>EXTERNAL</type>
<key>extcheck</key>
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>HTTP agent</name>
+ <name>HTTP agentt</name>
<type>HTTP_AGENT</type>
<key>httpagent</key>
<authtype>BASIC</authtype>
@@ -646,22 +646,22 @@
<allow_traps>YES</allow_traps>
</item>
<item>
- <name>Simple check</name>
+ <name>Simple checkk</name>
<type>SIMPLE</type>
<key>icmpping[127.1.0.1]</key>
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>IPMI agent</name>
+ <name>IPMI agentt</name>
<type>IPMI</type>
<key>ipmi.get</key>
<trends>0</trends>
<value_type>TEXT</value_type>
- <ipmi_sensor>1234</ipmi_sensor>
+ <ipmi_sensor>12134</ipmi_sensor>
<interface_ref>if3</interface_ref>
</item>
<item>
- <name>ItemPreproc</name>
+ <name>ItemPreprocc</name>
<type>CALCULATED</type>
<key>preproc</key>
<params>1</params>
@@ -678,7 +678,7 @@
</preprocessing>
</item>
<item>
- <name>Script</name>
+ <name>Scripyt</name>
<type>SCRIPT</type>
<key>script</key>
<params>return &quot;1&quot;;</params>
@@ -691,21 +691,21 @@
</parameters>
</item>
<item>
- <name>SNMP trap</name>
+ <name>SNMP trapq</name>
<type>SNMP_TRAP</type>
<key>snmptrap.fallback</key>
- <delay>10s</delay>
+ <delay>0</delay>
<interface_ref>if2</interface_ref>
</item>
<item>
- <name>SNMP agent</name>
+ <name>SNMP agentt</name>
<type>SNMP_AGENT</type>
<snmp_oid>SNMPv2-MIB::sysContact.0</snmp_oid>
<key>snmp_test</key>
<interface_ref>if2</interface_ref>
</item>
<item>
- <name>SSH agent</name>
+ <name>SSH agentt</name>
<type>SSH</type>
<key>ssh.run[x,localhost]</key>
<params>echo</params>
@@ -714,7 +714,7 @@
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>Telnet agent</name>
+ <name>Telnet agentt</name>
<type>TELNET</type>
<key>telnet.run[a,localhost]</key>
<params>echo</params>
@@ -722,14 +722,15 @@
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>Zabbix trapper</name>
+ <name>Zabbix trappero</name>
<type>TRAP</type>
<key>trap</key>
- <delay>10s</delay>
+ <delay>0</delay>
+ <units>MB</units>
</item>
<item>
- <name>delay_globmacro</name>
- <key>vfs.file.get[{$UU}]</key>
+ <name>delay_globmacro1</name>
+ <key>vfs.file.get[/tmp/{$UU}]</key>
<delay>{$GLOBDELAY}</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
@@ -754,7 +755,7 @@
</interfaces>
<items>
<item>
- <name>item1</name>
+ <name>item11</name>
<type>CALCULATED</type>
<key>itm</key>
<trends>0</trends>
@@ -769,15 +770,16 @@
</triggers>
</item>
<item>
- <name>ItemWithGlobalAndHostMacro</name>
- <key>sensor[{$HM1},{$UU}]</key>
- <delay>{$GLOBDELAY}</delay>
+ <name>ItemWithGlobalAndHostMacro1</name>
+ <key>sensor[{$UU},{$HM1}]</key>
+ <delay>1s</delay>
+ <units>MB</units>
<value_type>FLOAT</value_type>
<interface_ref>if1</interface_ref>
</item>
<item>
- <name>ItemWithMacro</name>
- <key>vfs.file.get[/{$HM1}]</key>
+ <name>ItemWithMacro1</name>
+ <key>vfs.file.get[/tmp/{$HM1}]</key>
<trends>0</trends>
<value_type>TEXT</value_type>
<interface_ref>if1</interface_ref>
@@ -846,10 +848,11 @@
</groups>
<items>
<item>
- <name>DepItemOnWebScenario</name>
+ <name>DepItemOnWebScenarioo</name>
<type>DEPENDENT</type>
<key>dep_webscenario</key>
- <delay>20s</delay>
+ <delay>0</delay>
+ <units>MB</units>
<master_item>
<key>web.test.in[WebScenario,,bps]</key>
</master_item>
diff --git a/ui/tests/integration/data/confsync_tmpl.xml b/ui/tests/integration/data/confsync_tmpl.xml
index fdc9f194fcc..8fe30e4e2a1 100644
--- a/ui/tests/integration/data/confsync_tmpl.xml
+++ b/ui/tests/integration/data/confsync_tmpl.xml
@@ -83,7 +83,7 @@
<uuid>f988e57fcdc541668c3c32919d3cfa60</uuid>
<name>DepItemProtoDependsOnNormalItem</name>
<type>DEPENDENT</type>
- <key>depitemproto_deponnormal</key>
+ <key>depitemproto_deponnormal[{#LLDMACRO}]</key>
<delay>0</delay>
<master_item>
<key>tmpltrap</key>
@@ -91,12 +91,12 @@
<trigger_prototypes>
<trigger_prototype>
<uuid>ebc83aff113846518d3e1c88532274e1</uuid>
- <expression>last(/SampleTemplate/depitemproto_deponnormal)=0</expression>
+ <expression>last(/SampleTemplate/depitemproto_deponnormal[{#LLDMACRO}])=0</expression>
<name>proto_dep {#LLDMACRO}</name>
<dependencies>
<dependency>
<name>proto {#LLDMACRO}</name>
- <expression>last(/SampleTemplate/depitemproto_deponnormal)=1</expression>
+ <expression>last(/SampleTemplate/depitemproto_deponnormal[{#LLDMACRO}])=1</expression>
</dependency>
</dependencies>
<tags>
@@ -108,7 +108,7 @@
</trigger_prototype>
<trigger_prototype>
<uuid>6032b6444698467c8f41587858f089e5</uuid>
- <expression>last(/SampleTemplate/depitemproto_deponnormal)=1</expression>
+ <expression>last(/SampleTemplate/depitemproto_deponnormal[{#LLDMACRO}])=1</expression>
<name>proto {#LLDMACRO}</name>
<tags>
<tag>
@@ -592,7 +592,7 @@
<uuid>d94160c34be4455bba660b1b18c0fb0e</uuid>
<name>ItemWithGlobalAndHostMacro1</name>
<key>sensor[{$UU},{$HM1}]</key>
- <delay>{$GLOBDELAY}</delay>
+ <delay>11s</delay>
<value_type>FLOAT</value_type>
</item>
<item>
@@ -600,7 +600,7 @@
<name>SNMP trap1</name>
<type>SNMP_TRAP</type>
<key>snmptrap.fallback</key>
- <delay>10s</delay>
+ <delay>0</delay>
</item>
<item>
<uuid>0106d4d9fba64066a66fbfe2d2340602</uuid>
@@ -659,6 +659,7 @@
<uuid>381db19a280a4c27a1ad86693ea535bc</uuid>
<name>ItemWithMacro1</name>
<key>vfs.file.get[/tmp/{$HM1}]</key>
+ <delay>2s</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
</item>
diff --git a/ui/tests/integration/data/confsync_tmpl_updated.xml b/ui/tests/integration/data/confsync_tmpl_updated.xml
index e6a62ecf22c..94491db8cda 100644
--- a/ui/tests/integration/data/confsync_tmpl_updated.xml
+++ b/ui/tests/integration/data/confsync_tmpl_updated.xml
@@ -81,22 +81,22 @@
<item_prototypes>
<item_prototype>
<uuid>4d34d26d2480480c862261b1b9e9d99d</uuid>
- <name>DepItemProtoDependsOnNormalItem</name>
+ <name>DepItemProtoDependsOnNormalItem1</name>
<type>DEPENDENT</type>
<key>depitemproto_deponnormal</key>
- <delay>10s</delay>
+ <delay>0</delay>
<master_item>
<key>tmpltrap</key>
</master_item>
<trigger_prototypes>
<trigger_prototype>
<uuid>c64594a285b64df79b137eeaec10e52b</uuid>
- <expression>last(/SampleTemplate/depitemproto_deponnormal)=10</expression>
+ <expression>last(/SampleTemplate/depitemproto_deponnormal[WA])=10</expression>
<name>proto_dep {#LLDMACRO}</name>
<dependencies>
<dependency>
<name>proto {#LLDMACRO}</name>
- <expression>last(/SampleTemplate/depitemproto_deponnormal)=110</expression>
+ <expression>last(/SampleTemplate/depitemproto_deponnormal[WA])=110</expression>
</dependency>
</dependencies>
<tags>
@@ -108,7 +108,7 @@
</trigger_prototype>
<trigger_prototype>
<uuid>1f2fbda374544b0cb77869c6f1d88314</uuid>
- <expression>last(/SampleTemplate/depitemproto_deponnormal)=10</expression>
+ <expression>last(/SampleTemplate/depitemproto_deponnormal[WA])=10</expression>
<name>proto {#LLDMACRO}</name>
<tags>
<tag>
@@ -179,7 +179,7 @@
<items>
<item>
<uuid>9a1082526795476ab429acd9caafc920</uuid>
- <name>NormalItemPreproc1</name>
+ <name>NormalItemPreproc11</name>
<key>agent.hostmetadata</key>
<delay>23s</delay>
<trends>0</trends>
@@ -196,7 +196,7 @@
</item>
<item>
<uuid>79a3b0eca3764c64abc7c53b83c0ce83</uuid>
- <name>Hostname1</name>
+ <name>Hostname11</name>
<key>agent.hostname</key>
<delay>23s</delay>
<trends>0</trends>
@@ -285,13 +285,13 @@
</item>
<item>
<uuid>16e297773b8d48958ebd4da74918687c</uuid>
- <name>CalculatedItemPreprocStepTest1</name>
+ <name>CalculatedItemPreprocStepTest11</name>
<type>CALCULATED</type>
<key>calculateditempreprocsteptest</key>
<delay>23s</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
- <params>1+1</params>
+ <params>1+1+1</params>
<preprocessing>
<step>
<type>REGEX</type>
@@ -349,7 +349,7 @@
</item>
<item>
<uuid>34693044a4b84f269f829c92b8e6888f</uuid>
- <name>CalculatedAsAggregated1</name>
+ <name>CalculatedAsAggregated11</name>
<type>CALCULATED</type>
<key>calc_as_aggr</key>
<delay>23s</delay>
@@ -357,7 +357,7 @@
</item>
<item>
<uuid>489114fec8b44645b96b9c463ea54f22</uuid>
- <name>CalculatedPreproc1</name>
+ <name>CalculatedPreproc11</name>
<type>CALCULATED</type>
<key>calc_preproc</key>
<delay>23s</delay>
@@ -366,15 +366,15 @@
<step>
<type>STR_REPLACE</type>
<parameters>
- <parameter>3</parameter>
- <parameter>4</parameter>
+ <parameter>31</parameter>
+ <parameter>41</parameter>
</parameters>
</step>
</preprocessing>
</item>
<item>
<uuid>de2c2812f00240ec84359fb3c0165ff6</uuid>
- <name>ODBC monitor1</name>
+ <name>ODBC monitor11</name>
<type>ODBC</type>
<key>db.odbc.select[x,y,z]</key>
<delay>23s</delay>
@@ -382,10 +382,11 @@
</item>
<item>
<uuid>2012d2c4562340d990eebfac680cc1da</uuid>
- <name>Dependent item1</name>
+ <name>Dependent item11</name>
<type>DEPENDENT</type>
<key>depitem</key>
<delay>0</delay>
+ <units>MB</units>
<inventory_link>TYPE</inventory_link>
<master_item>
<key>calc</key>
@@ -393,7 +394,7 @@
</item>
<item>
<uuid>d8def5fedd5a42a7b9a910c805a56899</uuid>
- <name>DepItemOnCalcPreproc1</name>
+ <name>DepItemOnCalcPreproc11</name>
<type>DEPENDENT</type>
<key>depitem_calc_preproc</key>
<delay>0</delay>
@@ -413,7 +414,7 @@
</item>
<item>
<uuid>10741348d10842d5a2888c7c3ebe4063</uuid>
- <name>DepItemOnDepCalcItem1</name>
+ <name>DepItemOnDepCalcItem11</name>
<type>DEPENDENT</type>
<key>depitem_depitem</key>
<delay>0</delay>
@@ -433,7 +434,7 @@
</item>
<item>
<uuid>d3e8a08190584da2a79f0c2c665a62ee</uuid>
- <name>DepItemOnNormalDepItem1</name>
+ <name>DepItemOnNormalDepItem11</name>
<type>DEPENDENT</type>
<key>depitem_depitem_normal</key>
<delay>0</delay>
@@ -453,7 +454,7 @@
</item>
<item>
<uuid>fd462776884943c08b6998bff03d5267</uuid>
- <name>DepItemOnInternalItem1</name>
+ <name>DepItemOnInternalItem11</name>
<type>DEPENDENT</type>
<key>depitem_internal</key>
<delay>0</delay>
@@ -473,7 +474,7 @@
</item>
<item>
<uuid>a1baaaa5e7af48578a749c5380426ed6</uuid>
- <name>DepItemOnNormalItem1</name>
+ <name>DepItemOnNormalItem11</name>
<type>DEPENDENT</type>
<key>depitem_normalitem</key>
<delay>0</delay>
@@ -493,7 +494,7 @@
</item>
<item>
<uuid>0a65fd6e155747ad9768e1c48c874264</uuid>
- <name>DepItemOnInternalItemPreproc1</name>
+ <name>DepItemOnInternalItemPreproc11</name>
<type>DEPENDENT</type>
<key>depitem_normal_preproc</key>
<delay>0</delay>
@@ -513,14 +514,14 @@
</item>
<item>
<uuid>e2b844f2d30440ef88deff5f3a596e1b</uuid>
- <name>External check1</name>
+ <name>External check11</name>
<type>EXTERNAL</type>
<key>extcheck</key>
<delay>23s</delay>
</item>
<item>
<uuid>2644c18c42864249a4be85871879af30</uuid>
- <name>HTTP agent1</name>
+ <name>HTTP agent11</name>
<type>HTTP_AGENT</type>
<key>httpagent</key>
<delay>23s</delay>
@@ -547,14 +548,14 @@
</item>
<item>
<uuid>352e9f1baba8491f9fcf4e0e8d968f4d</uuid>
- <name>Simple check1</name>
+ <name>Simple check11</name>
<type>SIMPLE</type>
<key>icmpping[127.0.0.1]</key>
<delay>23s</delay>
</item>
<item>
<uuid>f219f82b5f2f41d0a72f718684476638</uuid>
- <name>IPMI agent1</name>
+ <name>IPMI agent11</name>
<type>IPMI</type>
<key>ipmi.get</key>
<delay>23s</delay>
@@ -564,7 +565,7 @@
</item>
<item>
<uuid>5184862f271d4f8ebec44ef6526c1da1</uuid>
- <name>item11</name>
+ <name>item111</name>
<type>CALCULATED</type>
<key>itm</key>
<delay>23s</delay>
@@ -582,7 +583,7 @@
</item>
<item>
<uuid>3ce4f0ce210148cdb778a05e00bbdc81</uuid>
- <name>ItemPreproc1</name>
+ <name>ItemPreproc11</name>
<type>CALCULATED</type>
<key>preproc</key>
<delay>23s</delay>
@@ -601,7 +602,7 @@
</item>
<item>
<uuid>74db5c8a26b447468c2f2590af135878</uuid>
- <name>Script1</name>
+ <name>Script11</name>
<type>SCRIPT</type>
<key>script</key>
<delay>23s</delay>
@@ -616,14 +617,14 @@
</item>
<item>
<uuid>d94160c34be4455bba660b1b18c0fb0e</uuid>
- <name>ItemWithGlobalAndHostMacro1</name>
+ <name>ItemWithGlobalAndHostMacro11</name>
<key>sensor[{$UU},{$HM1}]</key>
- <delay>{$GLOBDELAY}</delay>
+ <delay>12s</delay>
<value_type>FLOAT</value_type>
</item>
<item>
<uuid>5861cb498c044908a7aa5b225500ba3d</uuid>
- <name>SNMP trap1</name>
+ <name>SNMP trap11</name>
<type>SNMP_TRAP</type>
<key>snmptrap.fallback</key>
<delay>0</delay>
@@ -631,7 +632,7 @@
</item>
<item>
<uuid>0106d4d9fba64066a66fbfe2d2340602</uuid>
- <name>SNMP agent1</name>
+ <name>SNMP agent11</name>
<type>SNMP_AGENT</type>
<snmp_oid>SNMPv2-MIB::sysContact.0</snmp_oid>
<key>snmp_test</key>
@@ -639,7 +640,7 @@
</item>
<item>
<uuid>49db5d3e8da84948a543801129a84b99</uuid>
- <name>SSH agent1</name>
+ <name>SSH agent11</name>
<type>SSH</type>
<key>ssh.run[x,localhost]</key>
<delay>23s</delay>
@@ -649,7 +650,7 @@
</item>
<item>
<uuid>74939b6a93294881ac5ec83d885920c9</uuid>
- <name>Chassis1</name>
+ <name>Chassis11</name>
<key>system.hw.chassis[model]</key>
<delay>23s</delay>
<trends>0</trends>
@@ -658,7 +659,7 @@
</item>
<item>
<uuid>8d311f6a4fb44a4ab325600539f8398e</uuid>
- <name>Uname1</name>
+ <name>Uname11</name>
<key>system.uname</key>
<delay>23s</delay>
<trends>0</trends>
@@ -667,7 +668,7 @@
</item>
<item>
<uuid>dca59a5058074e9f96a3d81f973bba75</uuid>
- <name>Telnet agent1</name>
+ <name>Telnet agent11</name>
<type>TELNET</type>
<key>telnet.run[a,localhost]</key>
<delay>23s</delay>
@@ -676,7 +677,7 @@
</item>
<item>
<uuid>aaaff64eee7e47589a6b6a329a1060a3</uuid>
- <name>Zabbix trapper1</name>
+ <name>Zabbix trapper11</name>
<type>TRAP</type>
<key>trap</key>
<delay>0</delay>
@@ -684,14 +685,14 @@
</item>
<item>
<uuid>a1dfb8d4a8004159979dff4f884f5d89</uuid>
- <name>ItemWithMultilevelMacros1</name>
- <key>vfs.dir.count[/{$UU},{$CHLDTMPLMACRO},{$PRNTTMPLMACRO}]</key>
+ <name>ItemWithMultilevelMacros11</name>
+ <key>vfs.dir.count[/tmp/{$UU},{$CHLDTMPLMACRO},{$PRNTTMPLMACRO}]</key>
<delay>{$PRNTTMPLMACRO}</delay>
<units>MB</units>
</item>
<item>
<uuid>381db19a280a4c27a1ad86693ea535bc</uuid>
- <name>ItemWithMacro1</name>
+ <name>ItemWithMacro11</name>
<key>vfs.file.get[/tmp/{$HM1}]</key>
<delay>23s</delay>
<trends>0</trends>
@@ -699,15 +700,15 @@
</item>
<item>
<uuid>ec8e28d9728f4418af7847db9ce17612</uuid>
- <name>delay_globmacro1</name>
- <key>vfs.file.get[/{$UU}]</key>
+ <name>delay_globmacro11</name>
+ <key>vfs.file.get[/tmp/{$UU}]</key>
<delay>{$GLOBDELAY}</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
</item>
<item>
<uuid>2a562bcf814343afb9c5cc4e9619e307</uuid>
- <name>Zabbix internal1</name>
+ <name>Zabbix internal11</name>
<type>INTERNAL</type>
<key>zabbix[boottime]</key>
<delay>23s</delay>
diff --git a/ui/tests/integration/testActiveAvailability.php b/ui/tests/integration/testActiveAvailability.php
index 9b8e919a4f2..b1bb805a535 100644
--- a/ui/tests/integration/testActiveAvailability.php
+++ b/ui/tests/integration/testActiveAvailability.php
@@ -154,7 +154,7 @@ class testActiveAvailability extends CIntegrationTest {
'hostid' => self::$hostid,
'name' => "act1",
'key_' => 'vfs.dir.size['.self::ACT_FILE_NAME.']',
- 'interfaceid' => self::$interfaceid,
+ 'interfaceid' => 0,
'type' => ITEM_TYPE_ZABBIX_ACTIVE,
'value_type' => ITEM_VALUE_TYPE_TEXT,
'delay' => '1s'
diff --git a/ui/tests/integration/testAgentItems.php b/ui/tests/integration/testAgentItems.php
index e1c0813c8ca..af4aad83063 100644
--- a/ui/tests/integration/testAgentItems.php
+++ b/ui/tests/integration/testAgentItems.php
@@ -36,6 +36,7 @@ class testAgentItems extends CIntegrationTest {
const TEST_FILE_BASE_NAME = 'test_file';
const TEST_LINK_BASE_NAME = 'test_link';
const TEST_FILE_NAME = '/tmp/'.self::TEST_FILE_BASE_NAME;
+ const TEST_FILE_NAME_ACCESS = '/tmp/'.self::TEST_FILE_BASE_NAME.'_access_test';
const TEST_LINK_NAME = '/tmp/'.self::TEST_LINK_BASE_NAME;
const TEST_LINK_NAME2 = '/tmp/'.self::TEST_LINK_BASE_NAME.'2';
const TEST_DIR_NAME = '/tmp/dir';
@@ -196,7 +197,7 @@ class testAgentItems extends CIntegrationTest {
'result' => 'b73a96d498012c84fc2ffa1df3c4461689cb90456ee300654723205c26ec4988'
],
[
- 'key' => 'vfs.file.get['.self::TEST_FILE_NAME.']',
+ 'key' => 'vfs.file.get['.self::TEST_FILE_NAME_ACCESS.']',
'type' => ITEM_TYPE_ZABBIX,
'component' => self::COMPONENT_AGENT,
'valueType' => ITEM_VALUE_TYPE_TEXT,
@@ -204,24 +205,24 @@ class testAgentItems extends CIntegrationTest {
'fields_exec' => ['permissions', 'user', 'group', 'uid', 'gid', 'access', 'change'],
'result' => [
'type' => 'file',
- 'permissions' => 'stat -c %04a '.self::TEST_FILE_NAME,
- 'user' => 'stat -c %U '.self::TEST_FILE_NAME,
- 'group' => 'stat -c %G '.self::TEST_FILE_NAME,
- 'uid' => 'stat -c %u '.self::TEST_FILE_NAME,
- 'gid' => 'stat -c %g '.self::TEST_FILE_NAME,
+ 'permissions' => 'stat -c %04a '.self::TEST_FILE_NAME_ACCESS,
+ 'user' => 'stat -c %U '.self::TEST_FILE_NAME_ACCESS,
+ 'group' => 'stat -c %G '.self::TEST_FILE_NAME_ACCESS,
+ 'uid' => 'stat -c %u '.self::TEST_FILE_NAME_ACCESS,
+ 'gid' => 'stat -c %g '.self::TEST_FILE_NAME_ACCESS,
'size' => 27,
'time' => [
'modify' => '2021-03-29T14:59:09+0300'
],
'timestamp' => [
- 'access' => 'stat -c %X '.self::TEST_FILE_NAME,
+ 'access' => 'stat -c %X '.self::TEST_FILE_NAME_ACCESS,
'modify' => self::TEST_MOD_TIMESTAMP,
- 'change' => 'stat -c %Z '.self::TEST_FILE_NAME
+ 'change' => 'stat -c %Z '.self::TEST_FILE_NAME_ACCESS
]
]
],
[
- 'key' => 'vfs.file.get['.self::TEST_FILE_NAME.']',
+ 'key' => 'vfs.file.get['.self::TEST_FILE_NAME_ACCESS.']',
'type' => ITEM_TYPE_ZABBIX,
'component' => self::COMPONENT_AGENT2,
'valueType' => ITEM_VALUE_TYPE_TEXT,
@@ -229,19 +230,19 @@ class testAgentItems extends CIntegrationTest {
'fields_exec' => ['permissions', 'user', 'group', 'uid', 'gid', 'access', 'change'],
'result' => [
'type' => 'file',
- 'permissions' => 'stat -c %04a '.self::TEST_FILE_NAME,
- 'user' => 'stat -c %U '.self::TEST_FILE_NAME,
- 'group' => 'stat -c %G '.self::TEST_FILE_NAME,
- 'uid' => 'stat -c %u '.self::TEST_FILE_NAME,
- 'gid' => 'stat -c %g '.self::TEST_FILE_NAME,
+ 'permissions' => 'stat -c %04a '.self::TEST_FILE_NAME_ACCESS,
+ 'user' => 'stat -c %U '.self::TEST_FILE_NAME_ACCESS,
+ 'group' => 'stat -c %G '.self::TEST_FILE_NAME_ACCESS,
+ 'uid' => 'stat -c %u '.self::TEST_FILE_NAME_ACCESS,
+ 'gid' => 'stat -c %g '.self::TEST_FILE_NAME_ACCESS,
'size' => 27,
'time' => [
'modify' => '2021-03-29T14:59:09+03:00'
],
'timestamp' => [
- 'access' => 'stat -c %X '.self::TEST_FILE_NAME,
+ 'access' => 'stat -c %X '.self::TEST_FILE_NAME_ACCESS,
'modify' => self::TEST_MOD_TIMESTAMP,
- 'change' => 'stat -c %Z '.self::TEST_FILE_NAME
+ 'change' => 'stat -c %Z '.self::TEST_FILE_NAME_ACCESS
]
]
],
@@ -708,6 +709,8 @@ class testAgentItems extends CIntegrationTest {
// Write test file
$this->assertTrue(@file_put_contents(self::TEST_FILE_NAME, "1st line\n2nd line\n3rd line\n") !== false);
$this->assertTrue(@touch(self::TEST_FILE_NAME, self::TEST_MOD_TIMESTAMP));
+ $this->assertTrue(@file_put_contents(self::TEST_FILE_NAME_ACCESS, "1st line\n2nd line\n3rd line\n") !== false);
+ $this->assertTrue(@touch(self::TEST_FILE_NAME_ACCESS, self::TEST_MOD_TIMESTAMP));
$this->assertTrue(@file_put_contents(self::TEST_DIR_FILE_NAME, "1st line\n2nd line\n3rd line\n") !== false);
$this->assertTrue(@touch(self::TEST_DIR_FILE_NAME, self::TEST_MOD_TIMESTAMP));
@@ -727,6 +730,8 @@ class testAgentItems extends CIntegrationTest {
$this->assertTrue(@touch(self::TEST_DIR_DIR1_NAME, self::TEST_MOD_TIMESTAMP));
+ $this->assertTrue(@exec('touch -h -a -m -t 202103291459.09 '.self::TEST_FILE_NAME_ACCESS) !== false);
+
return true;
}
diff --git a/ui/tests/integration/testGoAgentDataCollection.php b/ui/tests/integration/testGoAgentDataCollection.php
index 907ecb321e3..45a34f555e7 100644
--- a/ui/tests/integration/testGoAgentDataCollection.php
+++ b/ui/tests/integration/testGoAgentDataCollection.php
@@ -220,31 +220,31 @@ class testGoAgentDataCollection extends CIntegrationTest {
'key' => 'system.cpu.util[,,avg1]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 0.5
+ 'threshold' => 0.9
],
[
'key' => 'system.cpu.load[,avg1]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 0.5
+ 'threshold' => 0.9
],
[
'key' => 'vfs.dev.read[,operations]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_UINT64,
- 'threshold' => 10
+ 'threshold' => 1000
],
[
'key' => 'vfs.dev.write[,operations]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_UINT64,
- 'threshold' => 100
+ 'threshold' => 10000
],
[
'key' => 'proc.cpu.util[,,,,avg1]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 10.0,
+ 'threshold' => 90.0,
'compareType' => self::COMPARE_AVERAGE
],
[
@@ -258,60 +258,60 @@ class testGoAgentDataCollection extends CIntegrationTest {
'key' => 'system.swap.out[,pages]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_UINT64,
- 'threshold' => 100,
+ 'threshold' => 10000,
'compareType' => self::COMPARE_AVERAGE
],
[
'key' => 'proc.mem[zabbix_server,zabbix,avg]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 100.0
+ 'threshold' => 10000.0
],
[
'key' => 'web.page.perf[http://localhost]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 1.0,
+ 'threshold' => 100.0,
'compareType' => self::COMPARE_AVERAGE
],
[
'key' => 'net.tcp.service.perf[ssh]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 0.05
+ 'threshold' => 5.00
],
[
'key' => 'net.udp.service.perf[ntp]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 0.05
+ 'threshold' => 5.00
],
[
'key' => 'system.swap.size[,total]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_UINT64,
- 'threshold' => 100,
+ 'threshold' => 10000,
'compareType' => self::COMPARE_AVERAGE
],
[
'key' => 'vfs.fs.inode[/,pfree]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_FLOAT,
- 'threshold' => 0.1,
+ 'threshold' => 0.9,
'compareType' => self::COMPARE_AVERAGE
],
[
'key' => 'vfs.fs.size[/tmp,free]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_UINT64,
- 'threshold' => 10000000,
+ 'threshold' => 100000000,
'compareType' => self::COMPARE_AVERAGE
],
[
'key' => 'vm.memory.size[free]',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_UINT64,
- 'threshold' => 10000000,
+ 'threshold' => 100000000,
'compareType' => self::COMPARE_AVERAGE
],
[// Should be treated as a special case, since this metric returns JSON object.
@@ -319,7 +319,7 @@ class testGoAgentDataCollection extends CIntegrationTest {
'key' => 'zabbix.stats[127.0.0.1,'.PHPUNIT_PORT_PREFIX.self::SERVER_PORT_SUFFIX.']',
'type' => ITEM_TYPE_ZABBIX,
'valueType' => ITEM_VALUE_TYPE_TEXT,
- 'threshold' => 50
+ 'threshold' => 500
]
];
@@ -381,12 +381,18 @@ class testGoAgentDataCollection extends CIntegrationTest {
'value_type' => $item['valueType'],
'delay' => '1s'
];
-
foreach ([self::COMPONENT_AGENT, self::COMPONENT_AGENT2] as $component) {
- $items[] = array_merge($data, [
- 'hostid' => self::$hostids[$component],
- 'interfaceid' => $interfaceids[$component]
- ]);
+ $host_if_props = [
+ 'hostid' => self::$hostids[$component]
+ ];
+
+ if ($data['type'] == ITEM_TYPE_ZABBIX_ACTIVE) {
+ $host_if_props['interfaceid'] = 0;
+ } else {
+ $host_if_props['interfaceid'] = $interfaceids[$component];
+ }
+
+ $items[] = array_merge($data, $host_if_props);
}
}
diff --git a/ui/tests/integration/testInitialConfSync.php b/ui/tests/integration/testInitialConfSync.php
index a1e7d7f222b..1f28d058f59 100644
--- a/ui/tests/integration/testInitialConfSync.php
+++ b/ui/tests/integration/testInitialConfSync.php
@@ -25,7 +25,7 @@ require_once dirname(__FILE__) . '/../include/CIntegrationTest.php';
*
* @required-components server
* @configurationDataProvider serverConfigurationProvider
- * @backup actions, config, functions, globalmacro
+ * @backup actions, config, config_autoreg_tls, functions, globalmacro
* @backup group_prototype, host_discovery, host_inventory, hostmacro, host_rtdata, hosts, hosts_groups, hosts_templates
* @backup host_tag, hstgrp, interface, item_condition, item_discovery, item_parameter, item_preproc, item_rtdata, items
* @backup item_tag, lld_macro_path, lld_override, lld_override_condition, lld_override_opdiscover, lld_override_operation
@@ -396,7 +396,7 @@ class testInitialConfSync extends CIntegrationTest
"insert" =>
"0",
"update" =>
- "72",
+ "70",
"delete" =>
"0"
]
@@ -594,7 +594,7 @@ class testInitialConfSync extends CIntegrationTest
"insert" =>
"0",
"update" =>
- "10",
+ "12",
"delete" =>
"0"
]
diff --git a/ui/tests/integration/testItemState.php b/ui/tests/integration/testItemState.php
index 25c70bf4d49..3d8c610bc5a 100644
--- a/ui/tests/integration/testItemState.php
+++ b/ui/tests/integration/testItemState.php
@@ -100,7 +100,7 @@ class testItemState extends CIntegrationTest {
// Create items
foreach (self::$items as $key => $item) {
- $items[] = [
+ $new_item = [
'name' => $key,
'key_' => $item['key'],
'type' => $item['type'],
@@ -110,6 +110,14 @@ class testItemState extends CIntegrationTest {
'delay' => '1s',
'status' => ITEM_STATUS_DISABLED
];
+
+ if ($new_item['type'] == ITEM_TYPE_ZABBIX_ACTIVE) {
+ $new_item['interfaceid'] = 0;
+ } else {
+ $new_item['interfaceid'] = self::$interfaceid;
+ }
+
+ $items[] = $new_item;
}
$response = $this->call('item.create', $items);
diff --git a/ui/tests/selenium/SeleniumTests.php b/ui/tests/selenium/SeleniumTests.php
index 027d75ff686..5c0c62b5ecd 100644
--- a/ui/tests/selenium/SeleniumTests.php
+++ b/ui/tests/selenium/SeleniumTests.php
@@ -21,14 +21,167 @@
require_once dirname(__FILE__).'/testDocumentationLinks.php';
require_once dirname(__FILE__).'/testGeneric.php';
-require_once dirname(__FILE__).'/testExecuteNow.php';
-require_once dirname(__FILE__).'/testGraphAxis.php';
-require_once dirname(__FILE__).'/testPageDashboardWidgets.php';
-require_once dirname(__FILE__).'/testPageLatestData.php';
-require_once dirname(__FILE__).'/testPageWeb.php';
+
+// Actions.
+require_once dirname(__FILE__).'/actions/testFormAction.php';
+require_once dirname(__FILE__).'/actions/testPageActions.php';
+
+// Api tokens.
+require_once dirname(__FILE__).'/apiTokens/testPageApiTokensAdministrationGeneral.php';
+require_once dirname(__FILE__).'/apiTokens/testPageApiTokensUserSettings.php';
+require_once dirname(__FILE__).'/apiTokens/testFormApiTokensAdministrationGeneral.php';
+require_once dirname(__FILE__).'/apiTokens/testFormApiTokensUserSettings.php';
+
+// Dashboards.
+require_once dirname(__FILE__).'/dashboard/testDashboardCopyWidgets.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardDynamicItemWidgets.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardFavoriteGraphsWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardFavoriteMapsWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardForm.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardGeomapWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardGraphPrototypeWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardGraphWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardHostAvailabilityWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardItemValueWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardPages.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardProblemsBySeverityWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardSlaReportWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardSystemInformationWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardTopHostsWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardTriggerOverviewWidget.php';
+require_once dirname(__FILE__).'/dashboard/testDashboardViewMode.php';
+require_once dirname(__FILE__).'/dashboard/testFormTemplateDashboards.php';
+require_once dirname(__FILE__).'/dashboard/testPageDashboardList.php';
+require_once dirname(__FILE__).'/dashboard/testPageDashboardWidgets.php';
+require_once dirname(__FILE__).'/dashboard/testPageTemplateDashboards.php';
+
+// Filter tabs.
+require_once dirname(__FILE__).'/filterTabs/testFormFilterHosts.php';
+require_once dirname(__FILE__).'/filterTabs/testFormFilterLatestData.php';
+require_once dirname(__FILE__).'/filterTabs/testFormFilterProblems.php';
+
+// Geomaps.
+require_once dirname(__FILE__).'/geomaps/testFormAdministrationGeneralGeomaps.php';
+require_once dirname(__FILE__).'/geomaps/testGeomapWidgetScreenshots.php';
+
+// Graphs.
+require_once dirname(__FILE__).'/graphs/testFormGraph.php';
+require_once dirname(__FILE__).'/graphs/testFormGraphPrototype.php';
+require_once dirname(__FILE__).'/graphs/testGraphAxis.php';
+require_once dirname(__FILE__).'/graphs/testInheritanceGraph.php';
+require_once dirname(__FILE__).'/graphs/testInheritanceGraphPrototype.php';
+require_once dirname(__FILE__).'/graphs/testPageGraphPrototypes.php';
+require_once dirname(__FILE__).'/graphs/testPageHostGraph.php';
+
+// Hosts.
+require_once dirname(__FILE__).'/hosts/testFormHostFromConfiguration.php';
+require_once dirname(__FILE__).'/hosts/testFormHostFromMonitoring.php';
+require_once dirname(__FILE__).'/hosts/testFormHostFromStandalone.php';
+require_once dirname(__FILE__).'/hosts/testFormHostLinkTemplates.php';
+require_once dirname(__FILE__).'/hosts/testFormHostPrototype.php';
+require_once dirname(__FILE__).'/hosts/testPageHostInterfaces.php';
+require_once dirname(__FILE__).'/hosts/testPageHostPrototypes.php';
+require_once dirname(__FILE__).'/hosts/testPageHosts.php';
+require_once dirname(__FILE__).'/hosts/testPageMonitoringHosts.php';
+
+// Items.
+require_once dirname(__FILE__).'/items/testFormItem.php';
+require_once dirname(__FILE__).'/items/testFormItemHttpAgent.php';
+require_once dirname(__FILE__).'/items/testFormItemPrototype.php';
+require_once dirname(__FILE__).'/items/testFormTestItem.php';
+require_once dirname(__FILE__).'/items/testFormTestItemPrototype.php';
+require_once dirname(__FILE__).'/items/testFormulaCalculatedItem.php';
+require_once dirname(__FILE__).'/items/testFormulaCalculatedItemPrototype.php';
+require_once dirname(__FILE__).'/items/testInheritanceItem.php';
+require_once dirname(__FILE__).'/items/testInheritanceItemPrototype.php';
+require_once dirname(__FILE__).'/items/testItemTypeSelection.php';
+require_once dirname(__FILE__).'/items/testPageItemPrototypes.php';
+require_once dirname(__FILE__).'/items/testPageItems.php';
+
+// LLD.
+require_once dirname(__FILE__).'/lld/testFormLowLevelDiscovery.php';
+require_once dirname(__FILE__).'/lld/testFormLowLevelDiscoveryOverrides.php';
+require_once dirname(__FILE__).'/lld/testFormTestLowLevelDiscovery.php';
+require_once dirname(__FILE__).'/lld/testInheritanceDiscoveryRule.php';
+require_once dirname(__FILE__).'/lld/testPageLowLevelDiscovery.php';
+
+// Macros.
+require_once dirname(__FILE__).'/macros/testFormMacrosAdministrationGeneral.php';
+require_once dirname(__FILE__).'/macros/testFormMacrosHost.php';
+require_once dirname(__FILE__).'/macros/testFormMacrosHostPrototype.php';
+require_once dirname(__FILE__).'/macros/testFormMacrosTemplate.php';
+
+// Monitoring.
+require_once dirname(__FILE__).'/monitoring/testPageMonitoringLatestData.php';
+
+// Preprocessing.
+require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingCloneHost.php';
+require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingCloneTemplate.php';
+require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingItem.php';
+require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingItemPrototype.php';
+require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingLowLevelDiscovery.php';
+require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingTest.php';
+
+// Problems.
require_once dirname(__FILE__).'/problems/testFormUpdateProblem.php';
require_once dirname(__FILE__).'/problems/testPageProblems.php';
-require_once dirname(__FILE__).'/testPageActions.php';
+
+// Proxies.
+require_once dirname(__FILE__).'/proxies/testFormAdministrationProxies.php';
+require_once dirname(__FILE__).'/proxies/testPageAdministrationProxies.php';
+
+// Reports.
+require_once dirname(__FILE__).'/reports/testFormScheduledReport.php';
+require_once dirname(__FILE__).'/reports/testPageAvailabilityReport.php';
+require_once dirname(__FILE__).'/reports/testPageReportsActionLog.php';
+require_once dirname(__FILE__).'/reports/testPageReportsAudit.php';
+require_once dirname(__FILE__).'/reports/testPageReportsNotifications.php';
+require_once dirname(__FILE__).'/reports/testPageReportsSystemInformation.php';
+require_once dirname(__FILE__).'/reports/testPageReportsTriggerTop.php';
+require_once dirname(__FILE__).'/reports/testPageScheduledReport.php';
+require_once dirname(__FILE__).'/reports/testScheduledReportPermissions.php';
+
+// Roles.
+require_once dirname(__FILE__).'/roles/testFormUserRoles.php';
+require_once dirname(__FILE__).'/roles/testPageUserRoles.php';
+require_once dirname(__FILE__).'/roles/testUserRolesPermissions.php';
+
+// Services.
+require_once dirname(__FILE__).'/services/testFormServicesServices.php';
+require_once dirname(__FILE__).'/services/testPageServicesServices.php';
+require_once dirname(__FILE__).'/services/testPageServicesServicesMassUpdate.php';
+
+// SLA.
+require_once dirname(__FILE__).'/sla/testFormServicesSla.php';
+require_once dirname(__FILE__).'/sla/testPageServicesSla.php';
+require_once dirname(__FILE__).'/sla/testPageServicesSlaReport.php';
+
+// Tags.
+require_once dirname(__FILE__).'/tags/testFormTagsHost.php';
+require_once dirname(__FILE__).'/tags/testFormTagsHostPrototype.php';
+require_once dirname(__FILE__).'/tags/testFormTagsServices.php';
+require_once dirname(__FILE__).'/tags/testFormTagsServicesProblemTags.php';
+require_once dirname(__FILE__).'/tags/testFormTagsItem.php';
+require_once dirname(__FILE__).'/tags/testFormTagsItemPrototype.php';
+require_once dirname(__FILE__).'/tags/testFormTagsTemplate.php';
+require_once dirname(__FILE__).'/tags/testFormTagsTrigger.php';
+require_once dirname(__FILE__).'/tags/testFormTagsTriggerPrototype.php';
+require_once dirname(__FILE__).'/tags/testFormTagsWeb.php';
+
+// Templates.
+require_once dirname(__FILE__).'/templates/testFormTemplate.php';
+require_once dirname(__FILE__).'/templates/testPageTemplates.php';
+
+// Users.
+require_once dirname(__FILE__).'/users/testFormUser.php';
+require_once dirname(__FILE__).'/users/testFormUserMedia.php';
+require_once dirname(__FILE__).'/users/testFormUserPermissions.php';
+require_once dirname(__FILE__).'/users/testFormUserProfile.php';
+require_once dirname(__FILE__).'/users/testPageUsers.php';
+
+require_once dirname(__FILE__).'/testExecuteNow.php';
+require_once dirname(__FILE__).'/testPageWeb.php';
+
require_once dirname(__FILE__).'/testFormAdministrationGeneralAutoregistration.php';
require_once dirname(__FILE__).'/testPageAdministrationGeneralIconMapping.php';
require_once dirname(__FILE__).'/testPageAdministrationGeneralImages.php';
@@ -36,20 +189,9 @@ require_once dirname(__FILE__).'/testPageAdministrationGeneralModules.php';
require_once dirname(__FILE__).'/testPageAdministrationGeneralRegexp.php';
require_once dirname(__FILE__).'/testPageAdministrationMediaTypes.php';
require_once dirname(__FILE__).'/testPageAdministrationScripts.php';
-require_once dirname(__FILE__).'/apiTokens/testPageApiTokensAdministrationGeneral.php';
-require_once dirname(__FILE__).'/apiTokens/testPageApiTokensUserSettings.php';
-require_once dirname(__FILE__).'/testPageAvailabilityReport.php';
-require_once dirname(__FILE__).'/testPageDashboardList.php';
require_once dirname(__FILE__).'/testPageEventCorrelation.php';
-require_once dirname(__FILE__).'/testPageGraphPrototypes.php';
require_once dirname(__FILE__).'/testPageHistory.php';
-require_once dirname(__FILE__).'/testPageHostGraph.php';
-require_once dirname(__FILE__).'/testPageHostInterfaces.php';
-require_once dirname(__FILE__).'/testPageHostPrototypes.php';
-require_once dirname(__FILE__).'/testPageHosts.php';
require_once dirname(__FILE__).'/testPageInventory.php';
-require_once dirname(__FILE__).'/items/testPageItems.php';
-require_once dirname(__FILE__).'/items/testPageItemPrototypes.php';
require_once dirname(__FILE__).'/testPageTriggers.php';
require_once dirname(__FILE__).'/testPageTriggerUrl.php';
require_once dirname(__FILE__).'/testPageTriggerPrototypes.php';
@@ -57,9 +199,7 @@ require_once dirname(__FILE__).'/testPageMaintenance.php';
require_once dirname(__FILE__).'/testPageMaps.php';
require_once dirname(__FILE__).'/testPageMassUpdateItems.php';
require_once dirname(__FILE__).'/testPageMassUpdateItemPrototypes.php';
-require_once dirname(__FILE__).'/testPageMonitoringHosts.php';
require_once dirname(__FILE__).'/testPageNetworkDiscovery.php';
-require_once dirname(__FILE__).'/lld/testPageLowLevelDiscovery.php';
require_once dirname(__FILE__).'/testPasswordComplexity.php';
/*
require_once dirname(__FILE__).'/testPageQueueDetails.php';
@@ -68,17 +208,12 @@ require_once dirname(__FILE__).'/testPageQueueOverviewByProxy.php';
*/
require_once dirname(__FILE__).'/testPageSearch.php';
require_once dirname(__FILE__).'/testPageStatusOfZabbix.php';
-require_once dirname(__FILE__).'/testPageTemplates.php';
require_once dirname(__FILE__).'/testPageTriggerDescription.php';
require_once dirname(__FILE__).'/testPageUserGroups.php';
-require_once dirname(__FILE__).'/users/testPageUsers.php';
require_once dirname(__FILE__).'/testExpandExpressionMacros.php';
-require_once dirname(__FILE__).'/testFormAction.php';
require_once dirname(__FILE__).'/testFormAdministrationAuthenticationHttp.php';
require_once dirname(__FILE__).'/testFormAdministrationAuthenticationLdap.php';
require_once dirname(__FILE__).'/testFormAdministrationAuthenticationSaml.php';
-require_once dirname(__FILE__).'/proxies/testFormAdministrationProxies.php';
-require_once dirname(__FILE__).'/proxies/testPageAdministrationProxies.php';
require_once dirname(__FILE__).'/testFormAdministrationGeneralAuditLog.php';
require_once dirname(__FILE__).'/testFormAdministrationGeneralGUI.php';
require_once dirname(__FILE__).'/testFormAdministrationGeneralIconMapping.php';
@@ -92,87 +227,28 @@ require_once dirname(__FILE__).'/testFormAdministrationMediaTypeMessageTemplates
require_once dirname(__FILE__).'/testFormAdministrationMediaTypeWebhook.php';
require_once dirname(__FILE__).'/testFormAdministrationScripts.php';
require_once dirname(__FILE__).'/testFormAdministrationUserGroups.php';
-require_once dirname(__FILE__).'/apiTokens/testFormApiTokensAdministrationGeneral.php';
-require_once dirname(__FILE__).'/apiTokens/testFormApiTokensUserSettings.php';
require_once dirname(__FILE__).'/testFormEventCorrelation.php';
require_once dirname(__FILE__).'/filterTabs/testFormFilterHosts.php';
require_once dirname(__FILE__).'/filterTabs/testFormFilterLatestData.php';
require_once dirname(__FILE__).'/filterTabs/testFormFilterProblems.php';
-require_once dirname(__FILE__).'/testFormGraph.php';
-require_once dirname(__FILE__).'/testFormGraphPrototype.php';
-require_once dirname(__FILE__).'/hosts/testFormHostConfiguration.php';
-require_once dirname(__FILE__).'/hosts/testFormHostMonitoring.php';
-require_once dirname(__FILE__).'/hosts/testFormHostStandalone.php';
require_once dirname(__FILE__).'/testFormHostGroup.php';
-require_once dirname(__FILE__).'/testFormHostLinkTemplates.php';
-require_once dirname(__FILE__).'/testFormHostPrototype.php';
-require_once dirname(__FILE__).'/items/testFormItem.php';
-require_once dirname(__FILE__).'/items/testFormItemHttpAgent.php';
-require_once dirname(__FILE__).'/items/testFormItemPrototype.php';
-require_once dirname(__FILE__).'/items/testFormTestItem.php';
-require_once dirname(__FILE__).'/items/testFormTestItemPrototype.php';
-require_once dirname(__FILE__).'/lld/testFormTestLowLevelDiscovery.php';
require_once dirname(__FILE__).'/testFormLogin.php';
-require_once dirname(__FILE__).'/lld/testFormLowLevelDiscovery.php';
-require_once dirname(__FILE__).'/lld/testFormLowLevelDiscoveryOverrides.php';
-require_once dirname(__FILE__).'/macros/testFormMacrosAdministrationGeneral.php';
-require_once dirname(__FILE__).'/macros/testFormMacrosDiscoveredHost.php';
-require_once dirname(__FILE__).'/macros/testFormMacrosHost.php';
-require_once dirname(__FILE__).'/macros/testFormMacrosHostPrototype.php';
-require_once dirname(__FILE__).'/macros/testFormMacrosTemplate.php';
require_once dirname(__FILE__).'/testFormMaintenance.php';
require_once dirname(__FILE__).'/testFormMap.php';
require_once dirname(__FILE__).'/testFormNetworkDiscovery.php';
-require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingCloneHost.php';
-require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingCloneTemplate.php';
-require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingItem.php';
-require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingItemPrototype.php';
-require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingLowLevelDiscovery.php';
-require_once dirname(__FILE__).'/preprocessing/testFormPreprocessingTest.php';
-require_once dirname(__FILE__).'/services/testFormServicesServices.php';
-require_once dirname(__FILE__).'/services/testPageServicesServices.php';
-require_once dirname(__FILE__).'/services/testPageServicesServicesMassUpdate.php';
-require_once dirname(__FILE__).'/sla/testFormServicesSla.php';
-require_once dirname(__FILE__).'/sla/testPageServicesSla.php';
-require_once dirname(__FILE__).'/sla/testPageServicesSlaReport.php';
require_once dirname(__FILE__).'/testFormSetup.php';
require_once dirname(__FILE__).'/testFormSysmap.php';
require_once dirname(__FILE__).'/testFormTabIndicators.php';
-require_once dirname(__FILE__).'/tags/testFormTagsDiscoveredHost.php';
-require_once dirname(__FILE__).'/tags/testFormTagsHost.php';
-require_once dirname(__FILE__).'/tags/testFormTagsHostPrototype.php';
-require_once dirname(__FILE__).'/tags/testFormTagsServices.php';
-require_once dirname(__FILE__).'/tags/testFormTagsServicesProblemTags.php';
-require_once dirname(__FILE__).'/tags/testFormTagsItem.php';
-require_once dirname(__FILE__).'/tags/testFormTagsItemPrototype.php';
-require_once dirname(__FILE__).'/tags/testFormTagsTemplate.php';
-require_once dirname(__FILE__).'/tags/testFormTagsTrigger.php';
-require_once dirname(__FILE__).'/tags/testFormTagsTriggerPrototype.php';
-require_once dirname(__FILE__).'/tags/testFormTagsWeb.php';
require_once dirname(__FILE__).'/testFormTrigger.php';
-require_once dirname(__FILE__).'/testFormTemplate.php';
require_once dirname(__FILE__).'/testFormTriggerPrototype.php';
-require_once dirname(__FILE__).'/users/testFormUser.php';
-require_once dirname(__FILE__).'/users/testFormUserMedia.php';
-require_once dirname(__FILE__).'/users/testFormUserProfile.php';
-require_once dirname(__FILE__).'/users/testFormUserPermissions.php';
require_once dirname(__FILE__).'/testFormValueMappingsHost.php';
require_once dirname(__FILE__).'/testFormValueMappingsTemplate.php';
-require_once dirname(__FILE__).'/roles/testFormUserRoles.php';
require_once dirname(__FILE__).'/testFormWeb.php';
require_once dirname(__FILE__).'/testFormWebStep.php';
-require_once dirname(__FILE__).'/items/testFormulaCalculatedItem.php';
-require_once dirname(__FILE__).'/items/testFormulaCalculatedItemPrototype.php';
require_once dirname(__FILE__).'/testPageBrowserWarning.php';
-require_once dirname(__FILE__).'/items/testInheritanceItem.php';
require_once dirname(__FILE__).'/testInheritanceTrigger.php';
-require_once dirname(__FILE__).'/testInheritanceGraph.php';
require_once dirname(__FILE__).'/testInheritanceWeb.php';
-require_once dirname(__FILE__).'/lld/testInheritanceDiscoveryRule.php';
-require_once dirname(__FILE__).'/items/testInheritanceItemPrototype.php';
-require_once dirname(__FILE__).'/items/testItemTypeSelection.php';
require_once dirname(__FILE__).'/testInheritanceTriggerPrototype.php';
-require_once dirname(__FILE__).'/testInheritanceGraphPrototype.php';
require_once dirname(__FILE__).'/testInheritanceHostPrototype.php';
require_once dirname(__FILE__).'/testLanguage.php';
require_once dirname(__FILE__).'/testMultiselect.php';
@@ -186,37 +262,6 @@ require_once dirname(__FILE__).'/testUrlParameters.php';
require_once dirname(__FILE__).'/testUrlUserPermissions.php';
require_once dirname(__FILE__).'/testZBX6648.php';
require_once dirname(__FILE__).'/testZBX6663.php';
-require_once dirname(__FILE__).'/roles/testPageUserRoles.php';
-require_once dirname(__FILE__).'/roles/testUserRolesPermissions.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardCopyWidgets.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardGraphPrototypeWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardGeomapWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardDynamicItemWidgets.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardFavoriteGraphsWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardFavoriteMapsWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardForm.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardViewMode.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardGraphWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardHostAvailabilityWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardProblemsBySeverityWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardItemValueWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardSlaReportWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardSystemInformationWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardTopHostsWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardTriggerOverviewWidget.php';
-require_once dirname(__FILE__).'/dashboard/testDashboardPages.php';
-require_once dirname(__FILE__).'/dashboard/testFormTemplateDashboards.php';
-require_once dirname(__FILE__).'/dashboard/testPageTemplateDashboards.php';
-require_once dirname(__FILE__).'/geomaps/testFormAdministrationGeneralGeomaps.php';
-require_once dirname(__FILE__).'/geomaps/testGeomapWidgetScreenshots.php';
-require_once dirname(__FILE__).'/reports/testPageReportsActionLog.php';
-require_once dirname(__FILE__).'/reports/testPageReportsAudit.php';
-require_once dirname(__FILE__).'/reports/testPageReportsNotifications.php';
-require_once dirname(__FILE__).'/reports/testPageReportsSystemInformation.php';
-require_once dirname(__FILE__).'/reports/testPageReportsTriggerTop.php';
-require_once dirname(__FILE__).'/reports/testFormScheduledReport.php';
-require_once dirname(__FILE__).'/reports/testPageScheduledReport.php';
-require_once dirname(__FILE__).'/reports/testScheduledReportPermissions.php';
require_once dirname(__FILE__).'/testSID.php';
use PHPUnit\Framework\TestSuite;
@@ -227,73 +272,198 @@ class SeleniumTests {
$suite->addTestSuite('testDocumentationLinks');
$suite->addTestSuite('testGeneric');
- $suite->addTestSuite('testExecuteNow');
- $suite->addTestSuite('testGraphAxis');
+
+ // Actions.
+ $suite->addTestSuite('testFormAction');
$suite->addTestSuite('testPageActions');
- $suite->addTestSuite('testFormAdministrationGeneralAutoregistration');
- $suite->addTestSuite('testPageAdministrationGeneralIconMapping');
- $suite->addTestSuite('testPageAdministrationGeneralImages');
- $suite->addTestSuite('testPageAdministrationGeneralModules');
- $suite->addTestSuite('testPageAdministrationGeneralRegexp');
- $suite->addTestSuite('testPageAdministrationMediaTypes');
- $suite->addTestSuite('testPageAdministrationScripts');
+
+ // Api tokens.
+ $suite->addTestSuite('testFormApiTokensAdministrationGeneral');
+ $suite->addTestSuite('testFormApiTokensUserSettings');
$suite->addTestSuite('testPageApiTokensAdministrationGeneral');
$suite->addTestSuite('testPageApiTokensUserSettings');
- $suite->addTestSuite('testPageAvailabilityReport');
+
+ // Dashboards.
+ $suite->addTestSuite('testDashboardCopyWidgets');
+ $suite->addTestSuite('testDashboardDynamicItemWidgets');
+ $suite->addTestSuite('testDashboardFavoriteGraphsWidget');
+ $suite->addTestSuite('testDashboardFavoriteMapsWidget');
+ $suite->addTestSuite('testDashboardForm');
+ $suite->addTestSuite('testDashboardGeomapWidget');
+ $suite->addTestSuite('testDashboardGraphPrototypeWidget');
+ $suite->addTestSuite('testDashboardGraphWidget');
+ $suite->addTestSuite('testDashboardHostAvailabilityWidget');
+ $suite->addTestSuite('testDashboardItemValueWidget');
+ $suite->addTestSuite('testDashboardPages');
+ $suite->addTestSuite('testDashboardProblemsBySeverityWidget');
+ $suite->addTestSuite('testDashboardSlaReportWidget');
+ $suite->addTestSuite('testDashboardSystemInformationWidget');
+ $suite->addTestSuite('testDashboardTopHostsWidget');
+ $suite->addTestSuite('testDashboardTriggerOverviewWidget');
+ $suite->addTestSuite('testDashboardViewMode');
+ $suite->addTestSuite('testFormTemplateDashboards');
$suite->addTestSuite('testPageDashboardList');
$suite->addTestSuite('testPageDashboardWidgets');
- $suite->addTestSuite('testPageEventCorrelation');
+ $suite->addTestSuite('testPageTemplateDashboards');
+
+ // Filter tabs.
+ $suite->addTestSuite('testFormFilterHosts');
+ $suite->addTestSuite('testFormFilterLatestData');
+ $suite->addTestSuite('testFormFilterProblems');
+
+ // Geomaps.
+ $suite->addTestSuite('testFormAdministrationGeneralGeomaps');
+ $suite->addTestSuite('testGeomapWidgetScreenshots');
+
+ // Graphs.
+ $suite->addTestSuite('testFormGraph');
+ $suite->addTestSuite('testFormGraphPrototype');
+ $suite->addTestSuite('testGraphAxis');
+ $suite->addTestSuite('testInheritanceGraph');
+ $suite->addTestSuite('testInheritanceGraphPrototype');
$suite->addTestSuite('testPageGraphPrototypes');
- $suite->addTestSuite('testPageProblems');
- $suite->addTestSuite('testFormUpdateProblem');
- $suite->addTestSuite('testPageHistory');
$suite->addTestSuite('testPageHostGraph');
+
+ // Hosts.
+ $suite->addTestSuite('testFormHostFromConfiguration');
+ $suite->addTestSuite('testFormHostFromMonitoring');
+ $suite->addTestSuite('testFormHostFromStandalone');
+ $suite->addTestSuite('testFormHostLinkTemplates');
+ $suite->addTestSuite('testFormHostPrototype');
$suite->addTestSuite('testPageHostInterfaces');
$suite->addTestSuite('testPageHostPrototypes');
$suite->addTestSuite('testPageHosts');
- $suite->addTestSuite('testPageInventory');
- $suite->addTestSuite('testPageItems');
+ $suite->addTestSuite('testPageMonitoringHosts');
+
+ // Items.
+ $suite->addTestSuite('testFormItem');
+ $suite->addTestSuite('testFormItemHttpAgent');
+ $suite->addTestSuite('testFormItemPrototype');
+ $suite->addTestSuite('testFormTestItem');
+ $suite->addTestSuite('testFormTestItemPrototype');
+ $suite->addTestSuite('testFormulaCalculatedItem');
+ $suite->addTestSuite('testFormulaCalculatedItemPrototype');
+ $suite->addTestSuite('testInheritanceItem');
+ $suite->addTestSuite('testInheritanceItemPrototype');
+ $suite->addTestSuite('testItemTypeSelection');
$suite->addTestSuite('testPageItemPrototypes');
+ $suite->addTestSuite('testPageItems');
+
+ // LLD.
+ $suite->addTestSuite('testFormLowLevelDiscovery');
+ $suite->addTestSuite('testFormLowLevelDiscoveryOverrides');
+ $suite->addTestSuite('testFormTestLowLevelDiscovery');
+ $suite->addTestSuite('testInheritanceDiscoveryRule');
+ $suite->addTestSuite('testPageLowLevelDiscovery');
+
+ // Macros.
+ $suite->addTestSuite('testFormMacrosAdministrationGeneral');
+ $suite->addTestSuite('testFormMacrosHost');
+ $suite->addTestSuite('testFormMacrosHostPrototype');
+ $suite->addTestSuite('testFormMacrosTemplate');
+
+ // Monitoring.
+ $suite->addTestSuite('testPageMonitoringLatestData');
+
+ // Preprocessing.
+ $suite->addTestSuite('testFormPreprocessingCloneHost');
+ $suite->addTestSuite('testFormPreprocessingCloneTemplate');
+ $suite->addTestSuite('testFormPreprocessingItem');
+ $suite->addTestSuite('testFormPreprocessingItemPrototype');
+ $suite->addTestSuite('testFormPreprocessingLowLevelDiscovery');
+ $suite->addTestSuite('testFormPreprocessingTest');
+
+ // Problems.
+ $suite->addTestSuite('testPageProblems');
+ $suite->addTestSuite('testFormUpdateProblem');
+
+ // Proxies.
+ $suite->addTestSuite('testFormAdministrationProxies');
+ $suite->addTestSuite('testPageAdministrationProxies');
+
+ // Reports.
+ $suite->addTestSuite('testFormScheduledReport');
+ $suite->addTestSuite('testPageAvailabilityReport');
+ $suite->addTestSuite('testPageReportsActionLog');
+ $suite->addTestSuite('testPageReportsAudit');
+ $suite->addTestSuite('testPageReportsNotifications');
+ $suite->addTestSuite('testPageReportsSystemInformation');
+ $suite->addTestSuite('testPageReportsTriggerTop');
+ $suite->addTestSuite('testPageScheduledReport');
+ $suite->addTestSuite('testScheduledReportPermissions');
+
+ // Roles.
+ $suite->addTestSuite('testFormUserRoles');
+ $suite->addTestSuite('testPageUserRoles');
+ $suite->addTestSuite('testUserRolesPermissions');
+
+ // Services.
+ $suite->addTestSuite('testFormServicesServices');
+ $suite->addTestSuite('testPageServicesServices');
+ $suite->addTestSuite('testPageServicesServicesMassUpdate');
+
+ // SLA.
+ $suite->addTestSuite('testFormServicesSla');
+ $suite->addTestSuite('testPageServicesSla');
+ $suite->addTestSuite('testPageServicesSlaReport');
+
+ // Tags.
+ $suite->addTestSuite('testFormTagsHost');
+ $suite->addTestSuite('testFormTagsHostPrototype');
+ $suite->addTestSuite('testFormTagsServices');
+ $suite->addTestSuite('testFormTagsServicesProblemTags');
+ $suite->addTestSuite('testFormTagsItem');
+ $suite->addTestSuite('testFormTagsItemPrototype');
+ $suite->addTestSuite('testFormTagsTemplate');
+ $suite->addTestSuite('testFormTagsTrigger');
+ $suite->addTestSuite('testFormTagsTriggerPrototype');
+ $suite->addTestSuite('testFormTagsWeb');
+
+ // Templates.
+ $suite->addTestSuite('testFormTemplate');
+ $suite->addTestSuite('testPageTemplates');
+
+ // Users.
+ $suite->addTestSuite('testFormUser');
+ $suite->addTestSuite('testFormUserMedia');
+ $suite->addTestSuite('testFormUserPermissions');
+ $suite->addTestSuite('testFormUserProfile');
+ $suite->addTestSuite('testPageUsers');
+
+ $suite->addTestSuite('testExecuteNow');
+ $suite->addTestSuite('testFormAdministrationGeneralAutoregistration');
+ $suite->addTestSuite('testPageAdministrationGeneralIconMapping');
+ $suite->addTestSuite('testPageAdministrationGeneralImages');
+ $suite->addTestSuite('testPageAdministrationGeneralModules');
+ $suite->addTestSuite('testPageAdministrationGeneralRegexp');
+ $suite->addTestSuite('testPageAdministrationMediaTypes');
+ $suite->addTestSuite('testPageAdministrationScripts');
+ $suite->addTestSuite('testPageEventCorrelation');
+ $suite->addTestSuite('testPageHistory');
+ $suite->addTestSuite('testPageInventory');
$suite->addTestSuite('testPageTriggers');
$suite->addTestSuite('testPageTriggerDescription');
$suite->addTestSuite('testPageTriggerUrl');
$suite->addTestSuite('testPageTriggerPrototypes');
- $suite->addTestSuite('testPageLatestData');
- $suite->addTestSuite('testPageLowLevelDiscovery');
$suite->addTestSuite('testPageMaintenance');
$suite->addTestSuite('testPageMaps');
$suite->addTestSuite('testPageMassUpdateItems');
$suite->addTestSuite('testPageMassUpdateItemPrototypes');
- $suite->addTestSuite('testPageMonitoringHosts');
$suite->addTestSuite('testPageNetworkDiscovery');
/*
$suite->addTestSuite('testPageQueueDetails');
$suite->addTestSuite('testPageQueueOverview');
$suite->addTestSuite('testPageQueueOverviewByProxy');
*/
- $suite->addTestSuite('testPageReportsActionLog');
- $suite->addTestSuite('testPageReportsAudit');
- $suite->addTestSuite('testPageReportsNotifications');
- $suite->addTestSuite('testPageReportsSystemInformation');
- $suite->addTestSuite('testPageReportsTriggerTop');
$suite->addTestSuite('testPageSearch');
- $suite->addTestSuite('testPageServicesServices');
- $suite->addTestSuite('testPageServicesServicesMassUpdate');
- $suite->addTestSuite('testPageServicesSla');
- $suite->addTestSuite('testPageServicesSlaReport');
$suite->addTestSuite('testPageStatusOfZabbix');
- $suite->addTestSuite('testPageTemplates');
$suite->addTestSuite('testPageUserGroups');
- $suite->addTestSuite('testPageUsers');
$suite->addTestSuite('testPageWeb');
$suite->addTestSuite('testPasswordComplexity');
$suite->addTestSuite('testExpandExpressionMacros');
- $suite->addTestSuite('testFormAction');
$suite->addTestSuite('testFormAdministrationAuthenticationSaml');
$suite->addTestSuite('testFormAdministrationAuthenticationHttp');
$suite->addTestSuite('testFormAdministrationAuthenticationLdap');
- $suite->addTestSuite('testFormAdministrationProxies');
- $suite->addTestSuite('testPageAdministrationProxies');
$suite->addTestSuite('testFormAdministrationGeneralAuditLog');
$suite->addTestSuite('testFormAdministrationGeneralGUI');
$suite->addTestSuite('testFormAdministrationGeneralIconMapping');
@@ -307,85 +477,25 @@ class SeleniumTests {
$suite->addTestSuite('testFormAdministrationMediaTypeWebhook');
$suite->addTestSuite('testFormAdministrationScripts');
$suite->addTestSuite('testFormAdministrationUserGroups');
- $suite->addTestSuite('testFormApiTokensAdministrationGeneral');
- $suite->addTestSuite('testFormApiTokensUserSettings');
$suite->addTestSuite('testFormEventCorrelation');
- $suite->addTestSuite('testFormFilterHosts');
- $suite->addTestSuite('testFormFilterLatestData');
- $suite->addTestSuite('testFormFilterProblems');
- $suite->addTestSuite('testFormAdministrationGeneralGeomaps');
- $suite->addTestSuite('testGeomapWidgetScreenshots');
- $suite->addTestSuite('testFormGraph');
- $suite->addTestSuite('testFormGraphPrototype');
- $suite->addTestSuite('testFormHostConfiguration');
- $suite->addTestSuite('testFormHostMonitoring');
- $suite->addTestSuite('testFormHostStandalone');
$suite->addTestSuite('testFormHostGroup');
- $suite->addTestSuite('testFormHostLinkTemplates');
- $suite->addTestSuite('testFormHostPrototype');
- $suite->addTestSuite('testFormItem');
- $suite->addTestSuite('testFormItemHttpAgent');
- $suite->addTestSuite('testFormItemPrototype');
- $suite->addTestSuite('testFormTestItem');
- $suite->addTestSuite('testFormTestItemPrototype');
- $suite->addTestSuite('testFormTestLowLevelDiscovery');
$suite->addTestSuite('testFormLogin');
- $suite->addTestSuite('testFormLowLevelDiscovery');
- $suite->addTestSuite('testFormLowLevelDiscoveryOverrides');
- $suite->addTestSuite('testFormMacrosAdministrationGeneral');
- $suite->addTestSuite('testFormMacrosDiscoveredHost');
- $suite->addTestSuite('testFormMacrosHost');
- $suite->addTestSuite('testFormMacrosHostPrototype');
- $suite->addTestSuite('testFormMacrosTemplate');
$suite->addTestSuite('testFormMaintenance');
$suite->addTestSuite('testFormMap');
$suite->addTestSuite('testFormNetworkDiscovery');
- $suite->addTestSuite('testFormPreprocessingCloneHost');
- $suite->addTestSuite('testFormPreprocessingCloneTemplate');
- $suite->addTestSuite('testFormPreprocessingItem');
- $suite->addTestSuite('testFormPreprocessingItemPrototype');
- $suite->addTestSuite('testFormPreprocessingLowLevelDiscovery');
- $suite->addTestSuite('testFormPreprocessingTest');
- $suite->addTestSuite('testFormServicesServices');
- $suite->addTestSuite('testFormServicesSla');
$suite->addTestSuite('testFormSetup');
$suite->addTestSuite('testFormSysmap');
$suite->addTestSuite('testFormTabIndicators');
- $suite->addTestSuite('testFormTagsDiscoveredHost');
- $suite->addTestSuite('testFormTagsHost');
- $suite->addTestSuite('testFormTagsHostPrototype');
- $suite->addTestSuite('testFormTagsServices');
- $suite->addTestSuite('testFormTagsServicesProblemTags');
- $suite->addTestSuite('testFormTagsItem');
- $suite->addTestSuite('testFormTagsItemPrototype');
- $suite->addTestSuite('testFormTagsTemplate');
- $suite->addTestSuite('testFormTagsTrigger');
- $suite->addTestSuite('testFormTagsTriggerPrototype');
- $suite->addTestSuite('testFormTagsWeb');
- $suite->addTestSuite('testFormTemplate');
$suite->addTestSuite('testFormTrigger');
$suite->addTestSuite('testFormTriggerPrototype');
- $suite->addTestSuite('testFormUser');
- $suite->addTestSuite('testFormUserMedia');
- $suite->addTestSuite('testFormUserProfile');
- $suite->addTestSuite('testFormUserPermissions');
$suite->addTestSuite('testFormValueMappingsHost');
$suite->addTestSuite('testFormValueMappingsTemplate');
- $suite->addTestSuite('testFormUserRoles');
$suite->addTestSuite('testFormWeb');
$suite->addTestSuite('testFormWebStep');
- $suite->addTestSuite('testFormulaCalculatedItem');
- $suite->addTestSuite('testFormulaCalculatedItemPrototype');
$suite->addTestSuite('testPageBrowserWarning');
- $suite->addTestSuite('testInheritanceItem');
$suite->addTestSuite('testInheritanceTrigger');
- $suite->addTestSuite('testInheritanceGraph');
- $suite->addTestSuite('testInheritanceGraphPrototype');
$suite->addTestSuite('testInheritanceWeb');
- $suite->addTestSuite('testInheritanceDiscoveryRule');
$suite->addTestSuite('testInheritanceHostPrototype');
- $suite->addTestSuite('testInheritanceItemPrototype');
- $suite->addTestSuite('testItemTypeSelection');
$suite->addTestSuite('testInheritanceTriggerPrototype');
$suite->addTestSuite('testLanguage');
$suite->addTestSuite('testMultiselect');
@@ -399,30 +509,6 @@ class SeleniumTests {
$suite->addTestSuite('testUrlUserPermissions');
$suite->addTestSuite('testZBX6648');
$suite->addTestSuite('testZBX6663');
- $suite->addTestSuite('testPageUserRoles');
- $suite->addTestSuite('testUserRolesPermissions');
- $suite->addTestSuite('testDashboardCopyWidgets');
- $suite->addTestSuite('testDashboardGraphPrototypeWidget');
- $suite->addTestSuite('testDashboardGeomapWidget');
- $suite->addTestSuite('testDashboardDynamicItemWidgets');
- $suite->addTestSuite('testDashboardFavoriteGraphsWidget');
- $suite->addTestSuite('testDashboardFavoriteMapsWidget');
- $suite->addTestSuite('testDashboardForm');
- $suite->addTestSuite('testDashboardGraphWidget');
- $suite->addTestSuite('testDashboardHostAvailabilityWidget');
- $suite->addTestSuite('testDashboardProblemsBySeverityWidget');
- $suite->addTestSuite('testDashboardItemValueWidget');
- $suite->addTestSuite('testDashboardSlaReportWidget');
- $suite->addTestSuite('testDashboardSystemInformationWidget');
- $suite->addTestSuite('testDashboardTopHostsWidget');
- $suite->addTestSuite('testDashboardTriggerOverviewWidget');
- $suite->addTestSuite('testDashboardPages');
- $suite->addTestSuite('testDashboardViewMode');
- $suite->addTestSuite('testFormTemplateDashboards');
- $suite->addTestSuite('testPageTemplateDashboards');
- $suite->addTestSuite('testFormScheduledReport');
- $suite->addTestSuite('testPageScheduledReport');
- $suite->addTestSuite('testScheduledReportPermissions');
$suite->addTestSuite('testSID');
return $suite;
diff --git a/ui/tests/selenium/testFormAction.php b/ui/tests/selenium/actions/testFormAction.php
index cd64730c8e1..cd962117b58 100644
--- a/ui/tests/selenium/testFormAction.php
+++ b/ui/tests/selenium/actions/testFormAction.php
@@ -19,9 +19,9 @@
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
-require_once dirname(__FILE__).'/../include/helpers/CDataHelper.php';
-require_once dirname(__FILE__).'/behaviors/CMessageBehavior.php';
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
+require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
define('ACTION_GOOD', 0);
define('ACTION_BAD', 1);
diff --git a/ui/tests/selenium/testPageActions.php b/ui/tests/selenium/actions/testPageActions.php
index b12e0550af3..8890040cd98 100644
--- a/ui/tests/selenium/testPageActions.php
+++ b/ui/tests/selenium/actions/testPageActions.php
@@ -18,7 +18,7 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
class testPageActions extends CLegacyWebTest {
diff --git a/ui/tests/selenium/common/testCalculatedFormula.php b/ui/tests/selenium/common/testCalculatedFormula.php
index e7fec0ba368..b8843a89f3c 100644
--- a/ui/tests/selenium/common/testCalculatedFormula.php
+++ b/ui/tests/selenium/common/testCalculatedFormula.php
@@ -3453,7 +3453,7 @@ class testCalculatedFormula extends CWebTest {
$this->page->login()->open($this->url)->waitUntilReady();
$form = $this->query('name:itemForm')->asForm()->waitUntilVisible()->one();
- $key = 'calc'.microtime(true);
+ $key = 'calc'.microtime(true).'[{#KEY}]';
$form->fill([
'Name' => 'Calc',
diff --git a/ui/tests/selenium/common/testFormGraphs.php b/ui/tests/selenium/common/testFormGraphs.php
new file mode 100644
index 00000000000..aaf63d77173
--- /dev/null
+++ b/ui/tests/selenium/common/testFormGraphs.php
@@ -0,0 +1,1066 @@
+<?php
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+require_once dirname(__FILE__).'/../../include/CWebTest.php';
+require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
+require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
+
+class testFormGraphs extends CWebTest {
+
+ const HOST = 'Simple form test host'; // Host id = 40001.
+ const HOSTID = 40001; // Simple form test host.
+ const LLDID = 133800; // testFormDiscoveryRule on Simple form test host.
+ const SQL = 'SELECT * FROM graphs ORDER BY graphid';
+
+ /**
+ * Flag for graph prototype.
+ */
+ protected $prototype = false;
+
+ /**
+ * URL for opening graph or graph prototype form.
+ */
+ protected $url;
+
+ /**
+ * Name of graph for update scenario.
+ *
+ */
+ protected static $update_graph;
+
+ /**
+ * Id for item used in graph prototype.
+ *
+ * @var integer
+ */
+ protected static $itemid;
+
+ /**
+ * Ids of items for creating graphs.
+ *
+ * @var array
+ */
+ protected static $items = [
+ 'items' => [
+ 'graph_trap_int' => ['value_type' => ITEM_VALUE_TYPE_UINT64, 'itemid' => null],
+ 'graph_trap_float' => ['value_type' => ITEM_VALUE_TYPE_FLOAT, 'itemid' => null],
+ 'graph_trap_text' => ['value_type' => ITEM_VALUE_TYPE_TEXT, 'itemid' => null],
+ 'graph_trap_log' => ['value_type' => ITEM_VALUE_TYPE_LOG, 'itemid' => null]
+ ],
+ 'item_prototypes' => [
+ 'graph_prototype_trap_int' => ['value_type' => ITEM_VALUE_TYPE_UINT64, 'itemid' => null],
+ 'graph_prototype_trap_float' => ['value_type' => ITEM_VALUE_TYPE_FLOAT, 'itemid' => null],
+ 'graph_prototype_trap_text' => ['value_type' => ITEM_VALUE_TYPE_TEXT, 'itemid' => null],
+ 'graph_prototype_trap_char' => ['value_type' => ITEM_VALUE_TYPE_STR, 'itemid' => null]
+ ]
+ ];
+
+ /**
+ * Attach MessageBehavior to the test.
+ *
+ * @return array
+ */
+ public function getBehaviors() {
+ return [CMessageBehavior::class];
+ }
+
+ private function getGraphSuffix() {
+ return $this->prototype ? ' prototype' : '';
+ }
+
+ public function getLayoutData() {
+ return [
+ [
+ [
+ 'check_defaults' => true,
+ 'set_fields' => [
+ 'Graph type' => 'Normal'
+ ],
+ 'check_fields' => [
+ 'id:name' => ['value' => '', 'maxlength' => 255],
+ 'id:width' => ['value' => '900', 'maxlength' => 5],
+ 'id:height' => ['value' => '200', 'maxlength' => 5],
+ 'id:graphtype' => ['value' => 'Normal'],
+ 'id:show_legend' => ['value' => true],
+ 'id:show_work_period' => ['value' => true],
+ 'id:show_triggers' => ['value' => true],
+ 'id:visible_percent_left' => ['value' => false], // Percentile line (left) checkbox.
+ 'id:visible_percent_right' => ['value' => false], // Percentile line (right) checkbox.
+ 'id:percent_left' => ['visible' => false], // Percentile line (left) input.
+ 'id:percent_right' => ['visible' => false], // Percentile line (right) input.
+ 'id:ymin_type' => ['value' => 'Calculated'], // Y axis MIN value dropdown.
+ 'id:ymax_type' => ['value' => 'Calculated'], // Y axis MAX value dropdown.
+ 'id:yaxismin' => ['visible' => false], // Y axis MIN fixed value input.
+ 'id:yaxismax' => ['visible' => false], // Y axis MAX fixed value input.
+ 'id:ymin_name' => ['visible' => false], // Y axis MIN item input.
+ 'id:ymax_name' => ['visible' => false], // Y axis MAX item input.
+ 'id:itemsTable' => ['visible' => true]
+ ],
+ 'items' => [
+ 'item_columns' => ['', '', 'Name', 'Function', 'Draw style', 'Y axis side', 'Color', 'Action'],
+ 'dropdowns' => [
+ 'calc_fnc' => ['all', 'min', 'avg', 'max'],
+ 'drawtype' => ['Line', 'Filled region', 'Bold line', 'Dot', 'Dashed line', 'Gradient line'],
+ 'yaxisside' => ['Left', 'Right']
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'set_fields' => [
+ 'Graph type' => 'Stacked'
+ ],
+ 'check_fields' => [
+ 'id:name' => ['value' => ''],
+ 'id:width' => ['value' => '900'],
+ 'id:height' => ['value' => '200'],
+ 'id:graphtype' => ['value' => 'Stacked'],
+ 'id:show_legend' => ['value' => true],
+ 'id:show_work_period' => ['value' => true],
+ 'id:show_triggers' => ['value' => true],
+ 'id:visible_percent_left' => ['exists' => false], // Percentile line (left) checkbox.
+ 'id:visible_percent_right' => ['exists' => false], // Percentile line (right) checkbox.
+ 'id:percent_left' => ['exists' => false], // Percentile line (left) input.
+ 'id:percent_right' => ['exists' => false], // Percentile line (right) input.
+ 'id:ymin_type' => ['value' => 'Calculated'], // Y axis MIN value dropdown.
+ 'id:ymax_type' => ['value' => 'Calculated'], // Y axis MAX value dropdown.
+ 'id:yaxismin' => ['visible' => false], // Y axis MIN fixed value input.
+ 'id:yaxismax' => ['visible' => false], // Y axis MAX fixed value input.
+ 'id:ymin_name' => ['visible' => false], // Y axis MIN item input.
+ 'id:ymax_name' => ['visible' => false], // Y axis MAX item input.
+ 'id:itemsTable' => ['visible' => true]
+ ],
+ 'items' => [
+ 'item_columns' => ['', '', 'Name', 'Function', 'Y axis side', 'Color', 'Action'],
+ 'dropdowns' => [
+ 'calc_fnc' => ['min', 'avg', 'max'],
+ 'yaxisside' => ['Left', 'Right']
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'set_fields' => [
+ 'Graph type' => 'Pie'
+ ],
+ 'check_fields' => [
+ 'id:name' => ['value' => ''],
+ 'id:width' => ['value' => '900'],
+ 'id:height' => ['value' => '200'],
+ 'id:graphtype' => ['value' => 'Pie'],
+ 'id:show_legend' => ['value' => true],
+ 'id:show_work_period' => ['exists' => false],
+ 'id:show_triggers' => ['exists' => false],
+ 'id:visible_percent_left' => ['exists' => false], // Percentile line (left) checkbox.
+ 'id:visible_percent_right' => ['exists' => false], // Percentile line (right) checkbox.
+ 'id:percent_left' => ['exists' => false], // Percentile line (left) input.
+ 'id:percent_right' => ['exists' => false], // Percentile line (right) input.
+ 'id:ymin_type' => ['exists' => false], // Y axis MIN value dropdown.
+ 'id:ymax_type' => ['exists' => false], // Y axis MAX value dropdown.
+ 'id:yaxismin' => ['exists' => false], // Y axis MIN fixed value input.
+ 'id:yaxismax' => ['exists' => false], // Y axis MAX fixed value input.
+ 'id:ymin_name' => ['exists' => false], // Y axis MIN item input.
+ 'id:ymax_name' => ['exists' => false], // Y axis MAX item input.
+ 'id:show_3d' => ['value' => false],
+ 'id:itemsTable' => ['visible' => true]
+ ],
+ 'items' => [
+ 'item_columns' => ['', '', 'Name', 'Type', 'Function', 'Color', 'Action'],
+ 'dropdowns' => [
+ 'type' => ['Simple', 'Graph sum'],
+ 'calc_fnc' => ['min', 'avg', 'max', 'last']
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'set_fields' => [
+ 'Graph type' => 'Exploded'
+ ],
+ 'check_fields' => [
+ 'id:name' => ['value' => ''],
+ 'id:width' => ['value' => '900'],
+ 'id:height' => ['value' => '200'],
+ 'id:graphtype' => ['value' => 'Exploded'],
+ 'id:show_legend' => ['value' => true],
+ 'id:show_work_period' => ['exists' => false],
+ 'id:show_triggers' => ['exists' => false],
+ 'id:visible_percent_left' => ['exists' => false], // Percentile line (left) checkbox.
+ 'id:visible_percent_right' => ['exists' => false], // Percentile line (right) checkbox.
+ 'id:percent_left' => ['exists' => false], // Percentile line (left) input.
+ 'id:percent_right' => ['exists' => false], // Percentile line (right) input.
+ 'id:ymin_type' => ['exists' => false], // Y axis MIN value dropdown.
+ 'id:ymax_type' => ['exists' => false], // Y axis MAX value dropdown.
+ 'id:yaxismin' => ['exists' => false], // Y axis MIN fixed value input.
+ 'id:yaxismax' => ['exists' => false], // Y axis MAX fixed value input.
+ 'id:ymin_name' => ['exists' => false], // Y axis MIN item input.
+ 'id:ymax_name' => ['exists' => false], // Y axis MAX item input.
+ 'id:show_3d' => ['value' => false],
+ 'id:itemsTable' => ['visible' => true]
+ ],
+ 'items' => [
+ 'item_columns' => ['', '', 'Name', 'Type', 'Function', 'Color', 'Action'],
+ 'dropdowns' => [
+ 'type' => ['Simple', 'Graph sum'],
+ 'calc_fnc' => ['min', 'avg', 'max', 'last']
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'set_fields' => [
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Normal'),
+ 'id:visible_percent_left' => true, // Percentile line (left) checkbox.
+ 'id:visible_percent_right' => true // Percentile line (right) checkbox.
+ ],
+ 'check_fields' => [
+ 'id:percent_left' => ['value' => 0, 'visible' => true], // Percentile line (left) input.
+ 'id:percent_right' => ['value' => 0, 'visible' => true] // Percentile line (right) input.
+ ]
+ ]
+ ],
+ [
+ [
+ 'set_fields' => [
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Normal'),
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'), // Y axis MIN value dropdown.
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed') // Y axis MAX value dropdown.
+ ],
+ 'check_fields' => [
+ 'id:yaxismin' => ['value' => 0, 'visible' => true], // Y axis MIN fixed value input.
+ 'id:yaxismax' => ['value' => 100, 'visible' => true] // Y axis MAX fixed value input.
+ ]
+ ]
+ ],
+ [
+ [
+ 'set_fields' => [
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Normal'),
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'), // Y axis MIN value dropdown.
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item') // Y axis MAX value dropdown.
+ ],
+ 'check_fields' => [
+ 'id:ymin_itemid' => ['value' => '', 'visible' => true], // Y axis MIN item input.
+ 'id:ymax_itemid' => ['value' => '', 'visible' => true] // Y axis MAX item input.
+ ]
+ ]
+ ]
+ ];
+ }
+
+ public function checkGraphFormLayout($data) {
+ $this->page->login()->open($this->url)->waitUntilReady();
+ $object = 'Graph'.$this->getGraphSuffix();
+ $this->query('button', 'Create '.lcfirst($object))->waitUntilClickable()->one()->click();
+ $this->page->assertTitle('Configuration of '.lcfirst($object).'s');
+ $form = $this->query('name:graphForm')->waitUntilVisible()->asForm()->one();
+
+ // Check default fields only for first case.
+ if (CTestArrayHelper::get($data, 'check_defaults', false)) {
+ $this->assertEquals([$object, 'Preview'], $form->getTabs());
+ $this->assertFalse($form->query('xpath:.//table[@id="itemsTable"]//div[@class="drag-icon"]')->exists());
+
+ $items_container = $form->getFieldContainer('Items');
+ $this->assertTrue($items_container->query('button:Add')->one()->isClickable());
+
+ if ($this->prototype) {
+ $this->assertTrue($items_container->query('button:Add prototype')->one()->isClickable());
+ $discover_field = $form->getField('Discover');
+ $this->assertTrue($discover_field->isVisible());
+ $this->assertEquals(true, $discover_field->getValue());
+ }
+ else {
+ $this->assertFalse($items_container->query('button:Add prototype')->exists());
+ $this->assertFalse($form->query('id:discover')->exists());
+ }
+
+ $form->selectTab('Preview');
+ $this->page->waitUntilReady();
+ $this->assertTrue($this->query('xpath://div[@id="previewChart"]/img')->waitUntilPresent()->one()->isVisible());
+
+ $form->selectTab($object);
+ $this->page->waitUntilReady();
+ }
+
+ $form->fill($data['set_fields']);
+
+ foreach ($data['check_fields'] as $field => $attribute) {
+ if (array_key_exists('exists', $attribute)) {
+ $this->assertEquals($attribute['exists'], $form->query($field)->exists());
+ }
+
+ if (array_key_exists('visible', $attribute)) {
+ $this->assertTrue($form->query($field)->one(false)->isVisible($attribute['visible']));
+ }
+
+ if (array_key_exists('value', $attribute)) {
+ $this->assertEquals($attribute['value'], $form->getField($field)->getValue());
+ }
+
+ if (array_key_exists('maxlength', $attribute)) {
+ $this->assertEquals($attribute['maxlength'], $form->getField($field)->getAttribute('maxlength'));
+ }
+ };
+
+ // Check items functions fields depending on graph type.
+ if (array_key_exists('items', $data)) {
+ $form->invalidate();
+ $items_container = $form->getFieldContainer('Items');
+
+ $item = ($this->prototype)
+ ? ['button' => 'Add prototype', 'name' => 'testFormItemPrototype1']
+ : ['button' => 'Add', 'name' => 'testFormItem'];
+
+ $items_container->query('button', $item['button'])->waitUntilClickable()->one()->click();
+ $dialog = COverlayDialogElement::find()->one();
+ $dialog->query('link', $item['name'])->waitUntilClickable()->one()->click();
+ $dialog->ensureNotPresent();
+
+ $this->assertEquals($data['items']['item_columns'], $form->query('id:itemsTable')->asTable()->one()->getHeadersText());
+
+ // Check items functions dropdown options depending on graph type.
+ foreach ($data['items']['dropdowns'] as $function => $options) {
+ $dropdown = $items_container->query('xpath:.//z-select[@name="items[0]['.$function.']"]')->asDropdown()->one();
+ $this->assertEquals($options, $dropdown->getOptions()->asText());
+
+ // Check default selected option.
+ $this->assertEquals($options[0], $dropdown->getValue());
+ }
+ }
+ }
+
+ public function getCommonGraphData() {
+ return [
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => '',
+ 'Width' => '',
+ 'Height' => ''
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Incorrect value for field "Name": cannot be empty.',
+ 'Incorrect value "0" for "Width" field: must be between 20 and 65535.',
+ 'Incorrect value "0" for "Height" field: must be between 20 and 65535.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Fractional width and height'.($this->prototype ? ' {#KEY}' : NULL),
+ 'Width' => 1.2,
+ 'Height' => 15.5
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Field "Width" is not integer.',
+ 'Field "Height" is not integer.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Negative and empty inputs'.($this->prototype ? ' {#KEY}' : NULL),
+ 'Width' => -100,
+ 'Height' => -1,
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => -2,
+ 'id:percent_right' => -200,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => '',
+ 'id:yaxismax' => ''
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Incorrect value "-100" for "Width" field: must be between 20 and 65535.',
+ 'Incorrect value "-1" for "Height" field: must be between 20 and 65535.',
+ 'Field "yaxismin" is mandatory.',
+ 'Field "yaxismax" is mandatory.',
+ 'Incorrect value "-2" for "Percentile line (left)" field: must be between 0 and 100, and have no more than 4 digits after the decimal point.',
+ 'Incorrect value "-200" for "Percentile line (right)" field: must be between 0 and 100, and have no more than 4 digits after the decimal point.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Commas in inputs'.($this->prototype ? ' {#KEY}' : NULL),
+ 'Width' => '20,5',
+ 'Height' => '50,9',
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => '1,3',
+ 'id:percent_right' => '5,6',
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => '88,9',
+ 'id:yaxismax' => '0,1'
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Field "yaxismin" is not correct: a number is expected',
+ 'Field "yaxismax" is not correct: a number is expected',
+ 'Field "Percentile line (left)" is not correct: a number is expected',
+ 'Field "Percentile line (right)" is not correct: a number is expected'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Too large inputs'.($this->prototype ? ' {#KEY}' : NULL),
+ 'Width' => 65536,
+ 'Height' => 65536,
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => 101,
+ 'id:percent_right' => 101,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 12345678999999998,
+ 'id:yaxismax' => 12345678999999998
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Incorrect value "65536" for "Width" field: must be between 20 and 65535.',
+ 'Incorrect value "65536" for "Height" field: must be between 20 and 65535.',
+ 'Field "yaxismin" is not correct: a number is too large',
+ 'Field "yaxismax" is not correct: a number is too large',
+ 'Incorrect value "101" for "Percentile line (left)" field: must be between 0 and 100, and have no more than 4 digits after the decimal point.',
+ 'Incorrect value "101" for "Percentile line (right)" field: must be between 0 and 100, and have no more than 4 digits after the decimal point.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Text in inputs'.($this->prototype ? ' {#KEY}' : NULL),
+ 'Width' => 'test',
+ 'Height' => 'value',
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => 'letters',
+ 'id:percent_right' => 'symbols',
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 'text',
+ 'id:yaxismax' => 'value'
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Incorrect value "0" for "Width" field: must be between 20 and 65535.',
+ 'Incorrect value "0" for "Height" field: must be between 20 and 65535.',
+ 'Field "yaxismin" is not correct: a number is expected',
+ 'Field "yaxismax" is not correct: a number is expected',
+ 'Field "Percentile line (left)" is not correct: a number is expected',
+ 'Field "Percentile line (right)" is not correct: a number is expected'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Low width and height and too many fractional digits in percentile and axis'.
+ ($this->prototype ? ' {#KEY}' : NULL),
+ 'Width' => 1,
+ 'Height' => 19,
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => 1.99999,
+ 'id:percent_right' => 2.12345,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 1.12345,
+ 'id:yaxismax' => 1.999999999
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Incorrect value "1" for "Width" field: must be between 20 and 65535.',
+ 'Incorrect value "19" for "Height" field: must be between 20 and 65535.',
+ 'Field "yaxismin" is not correct: a number has too many fractional digits',
+ 'Field "yaxismax" is not correct: a number has too many fractional digits',
+ 'Field "Percentile line (left)" is not correct: a number has too many fractional digits',
+ 'Field "Percentile line (right)" is not correct: a number has too many fractional digits'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Too large negative numbers'.($this->prototype ? ' {#KEY}' : NULL),
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => -900000,
+ 'id:percent_right' => -900000,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => -90000000000000000,
+ 'id:yaxismax' => -90000000000000000
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Field "yaxismin" is not correct: a number is too large',
+ 'Field "yaxismax" is not correct: a number is too large',
+ 'Incorrect value "-900000" for "Percentile line (left)" field: must be between 0 and 100, and have no more than 4 digits after the decimal point.',
+ 'Incorrect value "-900000" for "Percentile line (right)" field: must be between 0 and 100, and have no more than 4 digits after the decimal point.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Empty item'.($this->prototype ? ' {#KEY}' : NULL)
+ ],
+ 'details' => [
+ 'Missing items for graph'.$this->getGraphSuffix().' "Empty item'.
+ ($this->prototype ? ' {#KEY}' : NULL).'".'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Empty Y MIN and MAX itmes',
+ 'Width' => 200,
+ 'Height' => 400,
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Normal'),
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item')
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem',
+ 'color'=> 'BBDEFB',
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'drawtype' => 'Bold line',
+ 'yaxisside' => 'Right'
+ ]
+ ]
+ ],
+ 'error' => 'Page received incorrect data',
+ 'details' => [
+ 'Field "ymin_itemid" is mandatory.',
+ 'Field "ymax_itemid" is mandatory.'
+ ]
+ ]
+ ]
+ ];
+ }
+
+ public function checkGraphForm($data, $update = false) {
+ if (CTestArrayHelper::get($data, 'expected', TEST_GOOD) === TEST_BAD) {
+ $old_hash = CDBHelper::getHash(self::SQL);
+ }
+
+ $this->page->login()->open($this->url)->waitUntilReady();
+
+ if ($update) {
+ $this->query('link', self::$update_graph)->waitUntilClickable()->one()->click();
+ }
+ else {
+ $this->query('button', 'Create graph'.$this->getGraphSuffix())->waitUntilClickable()->one()->click();
+ }
+
+ $form = $this->query('name:graphForm')->waitUntilVisible()->asForm()->one();
+
+ // Clear all items from graph to change them to new ones from data provider.
+ if ($update) {
+ $items_container = $form->getFieldContainer('Items');
+ $items_count = $items_container->query('xpath:.//tr[contains(@id, "items_")]')->count();
+
+ for ($i = 0; $i < $items_count; $i++) {
+ // After each deletion item buttons reset their position, so upper items locator is always 0.
+ $remove_button = $items_container->query('xpath:.//button[@id="items_0_remove"]')->one();
+ $remove_button->waitUntilClickable()->click();
+ $remove_button->waitUntilNotPresent();
+ }
+ }
+
+ if ($update && !CTestArrayHelper::get($data, 'expected')) {
+ $data['fields']['Name'] = $data['fields']['Name'].' update';
+ }
+
+ $form->fill($data['fields']);
+ $items_container = $form->getFieldContainer('Items');
+
+ // Fill Y axis Item values separately.
+ if (array_key_exists('yaxis_items', $data)) {
+ foreach ($data['yaxis_items'] as $y => $yaxis_item) {
+ if ($this->prototype) {
+ $form->query('xpath:.//button[@id="yaxis_'.$y.'_prototype"]')->waitUntilClickable()->one()->click();
+ $dialog = COverlayDialogElement::find()->one();
+ $dialog->query('link', $yaxis_item)->waitUntilClickable()->one()->click();
+ $dialog->ensureNotPresent();
+ }
+ else {
+ $form->query('xpath:.//div[@id="y'.$y.'_itemid"]/..')->asMultiselect()->one()
+ ->setFillMode(CMultiselectElement::MODE_TYPE)->fill($yaxis_item);
+ }
+ }
+ }
+
+ // Add items or item prototypes to graph.
+ if (array_key_exists('items', $data)) {
+ foreach ($data['items'] as $i => $item) {
+ $items_container->query('button', CTestArrayHelper::get($item, 'prototype', false) ? 'Add prototype' : 'Add')
+ ->waitUntilClickable()->one()->click();
+ $dialog = COverlayDialogElement::find()->one();
+ $dialog->query('link', $item['item'])->waitUntilClickable()->one()->click();
+ $dialog->ensureNotPresent();
+
+ // Check that added item link appeared.
+ $item_row = $items_container->query('xpath:.//tr[@id="items_'.$i.'"]')->one()->waitUntilPresent();
+ $this->assertTrue($item_row->query('link', self::HOST.': '.$item['item'])->one()->isClickable());
+
+ // Add line styling functions.
+ if (array_key_exists('functions', $item)) {
+ foreach ($item['functions'] as $function => $value) {
+ $item_row->query('xpath:.//z-select[@name="items['.$i.']['.$function.']"]')->asDropdown()->one()->fill($value);
+ }
+ }
+
+ // Add line color.
+ if (array_key_exists('color', $item)) {
+ $item_row->query('xpath:.//div[@class="color-picker"]')->asColorPicker()->one()->fill($item['color']);
+ }
+ }
+ }
+
+ $form->submit();
+ $this->page->waitUntilReady();
+
+ if (CTestArrayHelper::get($data, 'expected', TEST_GOOD) === TEST_BAD) {
+ if (CTestArrayHelper::get($data, 'error')) {
+ $error = $data['error'];
+ }
+ else {
+ $error = $update
+ ? 'Cannot update graph'.$this->getGraphSuffix()
+ : 'Cannot add graph'.$this->getGraphSuffix();
+ }
+
+ $this->assertMessage(TEST_BAD, $error, $data['details']);
+ $this->assertEquals($old_hash, CDBHelper::getHash(self::SQL));
+ }
+ else {
+ // Write new name to update graph for next case, but if it's last case return to initial name 'Graph for update'.
+ if ($update) {
+ self::$update_graph = $data['fields']['Name'];
+ }
+
+ $message = $update
+ ? 'Graph'.$this->getGraphSuffix().' updated'
+ : 'Graph'.$this->getGraphSuffix().' added';
+
+ $this->assertMessage(TEST_GOOD, $message);
+ $this->assertEquals(1, CDBHelper::getCount('SELECT * FROM graphs WHERE name='.
+ zbx_dbstr($data['fields']['Name']))
+ );
+
+ // Open just created graph and check that all fields present correctly in form.
+ $this->query('xpath://form[@name="graphForm"]/table')->asTable()->one()->waitUntilPresent()
+ ->query('link', $data['fields']['Name'])->waitUntilClickable()->one()->click();
+ $form->invalidate();
+ $form->checkValue($data['fields']);
+
+ // Check Y axis Item values multiselects.
+ if (array_key_exists('yaxis_items', $data)) {
+ foreach ($data['yaxis_items'] as $y => $yaxis_item) {
+ $this->assertEquals([self::HOST.': '.$yaxis_item], $form->query('xpath:.//div[@id="y'.$y.'_itemid"]/..')
+ ->asMultiselect()->one()->getValue()
+ );
+ }
+ }
+
+ // Check saved items count.
+ $items_container = $form->getFieldContainer('Items');
+ $this->assertEquals(count($data['items']),
+ $items_container->query('xpath:.//tr[@class="sortable"]')->all()->count()
+ );
+
+ // Check saved items names.
+ foreach ($data['items'] as $i => $item) {
+ $item_row = $items_container->query('xpath:.//tr[@id="items_'.$i.'"]')->one()->waitUntilPresent();
+ $this->assertTrue($item_row->query('link', self::HOST.': '.$item['item'])->one()->isClickable());
+
+ // Check lines styling functions.
+ if (array_key_exists('functions', $item)) {
+ foreach ($item['functions'] as $function => $value) {
+ $this->assertEquals($value, $item_row->query('xpath:.//z-select[@name="items['.$i.']['.$function.']"]')
+ ->asDropdown()->one()->getValue()
+ );
+ }
+ }
+
+ // Check lines color.
+ if (array_key_exists('color', $item)) {
+ $this->assertEquals($item['color'],
+ $item_row->query('xpath:.//div[@class="color-picker"]')->asColorPicker()->one()->getValue()
+ );
+ }
+ }
+ }
+ }
+
+ public static function getCloneData() {
+ return [
+ [
+ [
+ 'fields' => [
+ 'Name' => 'New Cloned graph name with no changes'
+ ],
+ 'check_buttons' => true
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'New Cloned graph name with Items in Y axis',
+ 'Width' => 205,
+ 'Height' => 399,
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Stacked'),
+ 'Show legend' => false,
+ 'Show working time' => false,
+ 'Show triggers' => false,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item')
+ ],
+ 'yaxis_items' => [
+ 'min' => 'Failed step of scenario "testFormWeb3".',
+ 'max' => 'Download speed for scenario "testFormWeb4".'
+ ],
+ 'items' => [
+ [
+ 'color'=> 'B39DDB',
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'yaxisside' => 'Right'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'New Cloned graph name with Fixed Y axis',
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => 3,
+ 'id:percent_right' => 20,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 1,
+ 'id:yaxismax' => 99
+ ],
+ 'items' => [
+ [
+ 'color'=> '1B5E20',
+ 'functions' => [
+ 'calc_fnc' => 'max',
+ 'drawtype' => 'Bold line',
+ 'yaxisside' => 'Right'
+ ]
+ ]
+ ]
+ ]
+ ]
+ ];
+ }
+
+ public function checkClone($data) {
+ $this->page->login()->open($this->url)->waitUntilReady();
+ $name = 'Graph'.$this->getGraphSuffix().' for clone';
+ $this->query('link', $name)->waitUntilClickable()->one()->click();
+ $form = $this->query('name:graphForm')->waitUntilVisible()->asForm()->one();
+ $form->query('button:Clone')->waitUntilClickable()->one()->click();
+ $form->invalidate();
+
+ if (CTestArrayHelper::get($data, 'check_buttons')) {
+ foreach (['Update', 'Clone', 'Delete'] as $button) {
+ $this->assertFalse($form->query('button', $button)->exists());
+ }
+ }
+
+ $form->fill($data['fields']);
+
+ // Fill Y axis Item values separately because field is not real multiselect.
+ if (array_key_exists('yaxis_items', $data)) {
+ foreach ($data['yaxis_items'] as $y => $yaxis_item) {
+ $form->query('xpath:.//div[@id="y'.$y.'_itemid"]/..')->asMultiselect()->one()
+ ->setFillMode(CMultiselectElement::MODE_TYPE)->fill($yaxis_item);
+ }
+ }
+
+ $items_container = $form->getFieldContainer('Items');
+
+ // Add items or item prototypes to graph.
+ if (array_key_exists('items', $data)) {
+ // Check that added item link appeared.
+ $item_row = $items_container->query('xpath:.//tr[@id="items_0"]')->one()->waitUntilPresent();
+
+ // Add line styling functions.
+ foreach ($data['items'][0]['functions'] as $function => $value) {
+ $item_row->query('xpath:.//z-select[@name="items[0]['.$function.']"]')->asDropdown()->one()->fill($value);
+ }
+
+ // Add line color.
+ $item_row->query('xpath:.//div[@class="color-picker"]')->asColorPicker()->one()->fill($data['items'][0]['color']);
+ }
+
+ $form->submit();
+ $this->assertMessage(TEST_GOOD, 'Graph'.$this->getGraphSuffix().' added');
+
+ // Check that both original graph and clone exist in DB.
+ foreach ([$name, $data['fields']['Name']] as $graph_name) {
+ $this->assertEquals(1, CDBHelper::getCount('SELECT * FROM graphs WHERE name='.zbx_dbstr($graph_name)));
+ }
+
+ $this->query('xpath://form[@name="graphForm"]/table')->asTable()->one()->waitUntilPresent()
+ ->query('link', $data['fields']['Name'])->waitUntilClickable()->one()->click();
+
+ $form->invalidate();
+ $form->checkValue($data['fields']);
+
+ // Check Y axis Item values multiselects.
+ if (array_key_exists('yaxis_items', $data)) {
+ foreach ($data['yaxis_items'] as $y => $yaxis_item) {
+ $this->assertEquals([self::HOST.': '.$yaxis_item], $form->query('xpath:.//div[@id="y'.$y.'_itemid"]/..')
+ ->asMultiselect()->one()->getValue()
+ );
+ }
+ }
+
+ if (array_key_exists('items', $data)) {
+ $item_row = $form->getFieldContainer('Items')->query('xpath:.//tr[@id="items_0"]')->one()->waitUntilPresent();
+
+ // Check lines styling functions.
+ foreach ($data['items'][0]['functions'] as $function => $value) {
+ $this->assertEquals($value, $item_row->query('xpath:.//z-select[@name="items[0]['.$function.']"]')
+ ->asDropdown()->one()->getValue()
+ );
+ }
+
+ // Check lines color.
+ $this->assertEquals($data['items'][0]['color'],
+ $item_row->query('xpath:.//div[@class="color-picker"]')->asColorPicker()->one()->getValue()
+ );
+ }
+ }
+
+ public static function getNoChangesData() {
+ return [
+ [
+ [
+ 'case' => 'simple_update'
+ ]
+ ],
+ [
+ [
+ 'case' => 'Create'
+ ]
+ ],
+ [
+ [
+ 'case' => 'Update'
+ ]
+ ],
+ [
+ [
+ 'case' => 'Clone'
+ ]
+ ],
+ [
+ [
+ 'case' => 'Delete'
+ ]
+ ]
+ ];
+ }
+
+ /**
+ * Function for checking Cancel button in all actions, as well as update graph form without any changes.
+ */
+ public function checkNoChanges($data) {
+ $old_hash = CDBHelper::getHash(self::SQL);
+ $this->page->login()->open($this->url)->waitUntilReady();
+
+ if ($data['case'] === 'Create') {
+ $this->query('button', 'Create graph'.$this->getGraphSuffix())->waitUntilClickable()->one()->click();
+ }
+ else {
+ $this->query('link', self::$update_graph)->waitUntilClickable()->one()->click();
+ }
+
+ $form = $this->query('name:graphForm')->waitUntilVisible()->asForm()->one();
+
+ if ($data['case'] === 'Clone' || $data['case'] === 'Delete') {
+ $form->query('button', $data['case'])->waitUntilClickable()->one()->click();
+ }
+
+ if ($data['case'] === 'Delete') {
+ $this->page->dismissAlert();
+ }
+
+ if ($data['case'] === 'simple_update') {
+ $form->submit();
+ $this->assertMessage(TEST_GOOD, 'Graph'.$this->getGraphSuffix().' updated');
+ }
+ else {
+ $form->query('button:Cancel')->waitUntilClickable()->one()->click();
+ }
+
+ $this->assertTrue($this->query('button', 'Create graph'.$this->getGraphSuffix())->exists());
+
+ // Check that DB hash is not changed.
+ $this->assertEquals($old_hash, CDBHelper::getHash(self::SQL));
+ }
+
+ /**
+ * Function for checking changes functions and color in existing item only.
+ */
+ public function changeItemSettings($data) {
+ $this->page->login()->open($this->url)->waitUntilReady();
+ $this->query('link:Graph for items change')->waitUntilClickable()->one()->click();
+ $form = $this->query('name:graphForm')->waitUntilVisible()->asForm()->one();
+ $item_number = $this->prototype ? 1 : 0;
+ $item_row = $form->getFieldContainer('Items')->query('xpath:.//tr[@id="items_'.$item_number.'"]')
+ ->one()->waitUntilPresent();
+
+ // Change line styling functions.
+ if (array_key_exists('functions', $data['change'])) {
+ foreach ($data['change']['functions'] as $function => $value) {
+ $item_row->query('xpath:.//z-select[@name="items['.$item_number.']['.$function.']"]')
+ ->asDropdown()->one()->fill($value);
+ }
+ }
+
+ // Change line color.
+ if (array_key_exists('color', $data['change'])) {
+ $item_row->query('xpath:.//div[@class="color-picker"]')->asColorPicker()->one()->fill($data['change']['color']);
+ }
+
+ $form->submit();
+ $this->assertMessage(TEST_GOOD, 'Graph'.$this->getGraphSuffix().' updated');
+ $this->query('xpath://form[@name="graphForm"]/table')->asTable()->one()->waitUntilPresent()
+ ->query('link:Graph for items change')->waitUntilClickable()->one()->click();
+ $item_row = $form->getFieldContainer('Items')->query('xpath:.//tr[@id="items_'.$item_number.'"]')
+ ->one()->waitUntilPresent();
+
+ // Check lines styling functions.
+ foreach ($data['expected']['functions'] as $function => $value) {
+ $this->assertEquals($value, $item_row->query('xpath:.//z-select[@name="items['.$item_number.']['.$function.']"]')
+ ->asDropdown()->one()->getValue()
+ );
+ }
+
+ $this->assertEquals($data['expected']['color'],
+ $item_row->query('xpath:.//div[@class="color-picker"]')->asColorPicker()->one()->getValue()
+ );
+ }
+
+ public function checkDelete() {
+ $this->page->login()->open($this->url)->waitUntilReady();
+ $name = 'Graph'.$this->getGraphSuffix().' for delete';
+ $this->query('link', $name)->waitUntilClickable()->one()->click();
+ $form = $this->query('name:graphForm')->waitUntilVisible()->asForm()->one();
+ $form->query('button:Delete')->waitUntilClickable()->one()->click();
+ $this->assertEquals('Delete graph'.$this->getGraphSuffix().'?', $this->page->getAlertText());
+ $this->page->acceptAlert();
+ $this->assertMessage(TEST_GOOD, 'Graph'.$this->getGraphSuffix().' deleted');
+ $this->assertEquals(0, CDBHelper::getCount('SELECT * FROM graphs WHERE name='.zbx_dbstr($name)));
+ }
+
+ /**
+ * Function for asserting that text, log and char items are not eligible for graph creating.
+ */
+ public function checkTextItems($data) {
+ $this->page->login()->open($this->url)->waitUntilReady();
+ $this->query('button', 'Create graph'.$this->getGraphSuffix())->waitUntilClickable()->one()->click();
+ $form = $this->query('name:graphForm')->waitUntilVisible()->asForm()->one();
+ $form->fill($data['fields']);
+ $items_container = $form->getFieldContainer('Items');
+
+ // Assert that text items are not suggested in multiselect.
+ foreach ($data['yaxis_items'] as $y => $yaxis_item) {
+ if ($this->prototype) {
+ $form->query('xpath:.//button[@id="yaxis_'.$y.'_prototype"]')->waitUntilClickable()->one()->click();
+ $dialog = COverlayDialogElement::find()->one();
+ $this->assertFalse($dialog->query('link', $yaxis_item)->exists());
+ $dialog->close();
+ }
+ else {
+ $form->query('xpath:.//div[@id="y'.$y.'_itemid"]/..')->asMultiselect()->one()->query('tag:input')
+ ->one()->type($yaxis_item);
+ $this->assertTrue($this->query('xpath://div[@class="multiselect-matches" and text()="No matches found"]')
+ ->waitUntilVisible()->one()->isVisible()
+ );
+ }
+ }
+
+ $items_container->query('button', 'Add'.$this->getGraphSuffix())->waitUntilClickable()->one()->click();
+ $dialog = COverlayDialogElement::find()->one();
+
+ // Assert that text items are not present in dialog.
+ foreach ($data['items'] as $item) {
+ $this->assertFalse($dialog->query('link', $item)->exists());
+ }
+
+ $dialog->close();
+ }
+
+ public function clearData() {
+ // Delete items.
+ CDataHelper::call('item.delete', [
+ self::$items['graph_trap_int']['itemid'],
+ self::$items['graph_trap_float']['itemid'],
+ self::$items['graph_trap_text']['itemid'],
+ self::$itemid
+ ]);
+
+ // Delete item prototypes.
+ CDataHelper::call('itemprototype.delete', [
+ self::$items['graph_prototype_trap_int']['itemid'],
+ self::$items['graph_prototype_trap_float']['itemid'],
+ self::$items['graph_prototype_trap_text']['itemid']
+ ]);
+ }
+}
diff --git a/ui/tests/selenium/common/testFormHost.php b/ui/tests/selenium/common/testFormHost.php
index 1fdd4b8b8bb..fd16255599e 100644
--- a/ui/tests/selenium/common/testFormHost.php
+++ b/ui/tests/selenium/common/testFormHost.php
@@ -1692,7 +1692,7 @@ class testFormHost extends CWebTest {
// Get values from form.
$form->fill($data['fields']);
- $original = $form->getFields()->asValues();
+ $original = $form->getFields()->filter(new CElementFilter(CElementFilter::VISIBLE))->asValues();
// Clone host.
$this->query('button', $button)->waitUntilClickable()->one()->click();
@@ -2020,7 +2020,7 @@ class testFormHost extends CWebTest {
['name' => 'Host name', 'value' => self::DISCOVERED_HOST, 'maxlength' => 128, 'enabled' => false],
['name' => 'Visible name', 'value' => '', 'maxlength' => 128, 'enabled' => false],
['name' => 'id:add_templates_', 'value' => '', 'enabled' => true],
- ['name' => 'Host groups', 'value' => ['Zabbix servers'], 'enabled' => false],
+ ['name' => 'Host groups', 'value' => ['Group for discovered host test'], 'enabled' => false],
['name' => 'id:interfaces_'.$discovered_interface_id.'_ip', 'value' => '127.0.0.1',
'maxlength' => 64, 'enabled' => false],
['name' => 'id:interfaces_'.$discovered_interface_id.'_dns', 'value' => '',
diff --git a/ui/tests/selenium/common/testFormPreprocessing.php b/ui/tests/selenium/common/testFormPreprocessing.php
index 0b1c5449f1a..91794f6cf8a 100644
--- a/ui/tests/selenium/common/testFormPreprocessing.php
+++ b/ui/tests/selenium/common/testFormPreprocessing.php
@@ -191,12 +191,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Right trim',
- 'Key' => 'empty-right-trim'
+ 'Key' => 'empty-right-trim[{#KEY}]'
],
'preprocessing' => [
['type' => 'Right trim']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
[
@@ -204,12 +204,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Left trim',
- 'Key' => 'empty-left-trim'
+ 'Key' => 'empty-left-trim[{#KEY}]'
],
'preprocessing' => [
['type' => 'Left trim']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
[
@@ -217,12 +217,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Trim',
- 'Key' => 'empty-trim'
+ 'Key' => 'empty-trim[{#KEY}]'
],
'preprocessing' => [
['type' => 'Trim']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
// Arithmetic. Custom multiplier.
@@ -231,12 +231,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Empty multiplier',
- 'Key' => 'empty-multiplier'
+ 'Key' => 'empty-multiplier[{#KEY}]'
],
'preprocessing' => [
['type' => 'Custom multiplier']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
[
@@ -244,12 +244,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'String multiplier',
- 'Key' => 'string-multiplier'
+ 'Key' => 'string-multiplier[{#KEY}]'
],
'preprocessing' => [
['type' => 'Custom multiplier', 'parameter_1' => 'abc']
],
- 'error' => 'Incorrect value for field "params": a numeric value is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
[
@@ -257,12 +257,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Multiplier comma',
- 'Key' => 'comma-multiplier'
+ 'Key' => 'comma-multiplier[{#KEY}]'
],
'preprocessing' => [
['type' => 'Custom multiplier', 'parameter_1' => '0,0']
],
- 'error' => 'Incorrect value for field "params": a numeric value is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
[
@@ -270,12 +270,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Multiplier symbols',
- 'Key' => 'symbols-multiplier'
+ 'Key' => 'symbols-multiplier[{#KEY}]'
],
'preprocessing' => [
['type' => 'Custom multiplier', 'parameter_1' => '1a!@#$%^&*()-=']
],
- 'error' => 'Incorrect value for field "params": a numeric value is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
// Change. Simple change, Change per second
@@ -284,13 +284,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Two delta',
- 'Key' => 'two-delta'
+ 'Key' => 'two-delta[{#KEY}]'
],
'preprocessing' => [
['type' => 'Simple change'],
['type' => 'Simple change']
],
- 'error' => 'Only one change step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within '.
+ 'the combinations of (type)=((9, 10)).'
]
],
[
@@ -298,13 +299,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Two delta per second',
- 'Key' => 'two-delta-per-second'
+ 'Key' => 'two-delta-per-second[{#KEY}]'
],
'preprocessing' => [
['type' => 'Change per second'],
['type' => 'Change per second']
],
- 'error' => 'Only one change step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within '.
+ 'the combinations of (type)=((9, 10)).'
]
],
[
@@ -312,13 +314,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Two different delta',
- 'Key' => 'two-different-delta'
+ 'Key' => 'two-different-delta[{#KEY}]'
],
'preprocessing' => [
['type' => 'Simple change'],
['type' => 'Change per second']
],
- 'error' => 'Only one change step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within '.
+ 'the combinations of (type)=((9, 10)).'
]
],
// Validation. In range.
@@ -327,12 +330,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'In range empty',
- 'Key' => 'in-range-empty'
+ 'Key' => 'in-range-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'In range']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params": cannot be empty.'
]
],
[
@@ -340,12 +343,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'In range letters string',
- 'Key' => 'in-range-letters-string'
+ 'Key' => 'in-range-letters-string[{#KEY}]'
],
'preprocessing' => [
['type' => 'In range', 'parameter_1' => 'abc', 'parameter_2' => 'def']
],
- 'error' => 'Incorrect value for field "params": a numeric value is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
[
@@ -353,12 +356,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'In range symbols',
- 'Key' => 'in-range-symbols'
+ 'Key' => 'in-range-symbols[{#KEY}]'
],
'preprocessing' => [
['type' => 'In range', 'parameter_1' => '1a!@#$%^&*()-=', 'parameter_2' => '2b!@#$%^&*()-=']
],
- 'error' => 'Incorrect value for field "params": a numeric value is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
[
@@ -366,12 +369,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'In range comma',
- 'Key' => 'in-range-comma'
+ 'Key' => 'in-range-comma[{#KEY}]'
],
'preprocessing' => [
['type' => 'In range', 'parameter_1' => '1,5', 'parameter_2' => '-3,5']
],
- 'error' => 'Incorrect value for field "params": a numeric value is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
[
@@ -379,12 +382,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'In range wrong interval',
- 'Key' => 'in-range-wrong-interval'
+ 'Key' => 'in-range-wrong-interval[{#KEY}]'
],
'preprocessing' => [
['type' => 'In range', 'parameter_1' => '8', 'parameter_2' => '-8']
],
- 'error' => 'Incorrect value for field "params": "min" value must be less than or equal to "max" value.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/2": cannot be less than or equal '.
+ 'to the value of parameter "/1/preprocessing/1/params/1".'
]
],
// Validation. Matches regular expression.
@@ -393,12 +397,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Matches regular expression empty',
- 'Key' => 'matches-regular-expression-empty'
+ 'Key' => 'matches-regular-expression-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Matches regular expression']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
// Validation. Check for error in XML.
@@ -407,12 +411,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item error XML empty',
- 'Key' => 'item-error-xml-empty'
+ 'Key' => 'item-error-xml-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Check for error in XML']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
// Validation. Check for error using regular expression.
@@ -421,12 +425,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item error REGEXP both params empty',
- 'Key' => 'item-error-regexp-both-empty'
+ 'Key' => 'item-error-regexp-both-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Check for error using regular expression']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
[
@@ -434,12 +438,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item error REGEXP first parameter empty',
- 'Key' => 'item-error-regexp-first-empty'
+ 'Key' => 'item-error-regexp-first-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Check for error using regular expression', 'parameter_2' => 'test']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
[
@@ -447,12 +451,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item error REGEXP second parameter empty',
- 'Key' => 'item-error-regexp-second-empty'
+ 'Key' => 'item-error-regexp-second-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Check for error using regular expression', 'parameter_1' => 'test']
],
- 'error' => 'Incorrect value for field "params": second parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/2": cannot be empty.'
]
],
// Throttling. Discard unchanged.
@@ -461,13 +465,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item two discard unchanged',
- 'Key' => 'item-two-discard-unchanged'
+ 'Key' => 'item-two-discard-unchanged[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged'],
['type' => 'Discard unchanged']
],
- 'error' => 'Only one throttling step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within '.
+ 'the combinations of (type)=((19, 20)).'
]
],
[
@@ -475,13 +480,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item two different throttlings',
- 'Key' => 'item-two-different-throttlings'
+ 'Key' => 'item-two-different-throttlings[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged'],
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1']
],
- 'error' => 'Only one throttling step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within '.
+ 'the combinations of (type)=((19, 20)).'
]
]
]);
@@ -498,12 +504,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Empty regular expression',
- 'Key' => 'Empty-both-parameters'
+ 'Key' => 'Empty-both-parameters[{#KEY}]'
],
'preprocessing' => [
['type' => 'Regular expression']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": first parameter is expected.'
]
],
[
@@ -511,12 +518,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Empty pattern of regular expression',
- 'Key' => 'empty-first-parameter'
+ 'Key' => 'empty-first-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Regular expression', 'parameter_2' => 'test output']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": first parameter is expected.'
]
],
[
@@ -524,12 +532,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Empty output of regular expression',
- 'Key' => 'empty-second-parameter'
+ 'Key' => 'empty-second-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Regular expression', 'parameter_1' => 'expression']
],
- 'error' => 'Incorrect value for field "params": second parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/2": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": second parameter is expected.'
]
],
// Structured data. XML XPath.
@@ -538,12 +547,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'XML XPath',
- 'Key' => 'empty-xpath'
+ 'Key' => 'empty-xpath[{#KEY}]'
],
'preprocessing' => [
['type' => 'XML XPath']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": cannot be empty.'
]
],
// Structured data. JSONPath.
@@ -552,12 +562,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'JSONPath empty',
- 'Key' => 'empty-jsonpath'
+ 'Key' => 'empty-jsonpath[{#KEY}]'
],
'preprocessing' => [
['type' => 'JSONPath']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": cannot be empty.'
]
],
// Custom scripts. JavaScript.
@@ -566,12 +577,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Empty JavaScript',
- 'Key' => 'item-empty-javascript'
+ 'Key' => 'item-empty-javascript[{#KEY}]'
],
'preprocessing' => [
['type' => 'JavaScript']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": cannot be empty.'
]
],
// Validation. Does not match regular expression
@@ -580,12 +592,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Does not match regular expression empty',
- 'Key' => 'does-not-match-regular-expression-empty'
+ 'Key' => 'does-not-match-regular-expression-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Does not match regular expression']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": cannot be empty.'
]
],
// Validation. Check for error in JSON.
@@ -594,12 +607,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Error JSON empty',
- 'Key' => 'error-json-empty'
+ 'Key' => 'error-json-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Check for error in JSON']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": cannot be empty.'
]
],
// Throttling. Discard unchanged with heartbeat
@@ -608,13 +622,15 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Two equal discard unchanged with heartbeat',
- 'Key' => 'two-equal-discard-unchanged-with-heartbeat'
+ 'Key' => 'two-equal-discard-unchanged-with-heartbeat[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1'],
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1']
],
- 'error' => 'Only one throttling step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist '.
+ 'within the combinations of (type)=((19, 20)).',
+ 'lld_error' => 'Only one throttling step is allowed'
]
],
[
@@ -622,13 +638,15 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Two different discard unchanged with heartbeat',
- 'Key' => 'two-different-discard-unchanged-with-heartbeat'
+ 'Key' => 'two-different-discard-unchanged-with-heartbeat[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1'],
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '2']
],
- 'error' => 'Only one throttling step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist '.
+ 'within the combinations of (type)=((19, 20)).',
+ 'lld_error' => 'Only one throttling step is allowed'
]
],
[
@@ -636,12 +654,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discard unchanged with heartbeat empty',
- 'Key' => 'discard-unchanged-with-heartbeat-empty'
+ 'Key' => 'discard-unchanged-with-heartbeat-empty[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat']
],
- 'error' => 'Invalid parameter "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.',
+ 'lld_error' => 'Invalid parameter "params": cannot be empty.'
]
],
[
@@ -649,12 +668,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discard unchanged with heartbeat symbols',
- 'Key' => 'discard-unchanged-with-heartbeat-symbols'
+ 'Key' => 'discard-unchanged-with-heartbeat-symbols[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '3g!@#$%^&*()-=']
],
- 'error' => 'Invalid parameter "params": a time unit is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a time unit is expected.',
+ 'lld_error' => 'Invalid parameter "params": a time unit is expected.'
]
],
[
@@ -662,12 +682,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discardunchanged with heartbeat letters string',
- 'Key' => 'discard-unchanged-with-heartbeat-letters-string'
+ 'Key' => 'discard-unchanged-with-heartbeat-letters-string[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => 'abc']
],
- 'error' => 'Invalid parameter "params": a time unit is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a time unit is expected.',
+ 'lld_error' => 'Invalid parameter "params": a time unit is expected.'
]
],
[
@@ -675,12 +696,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discard unchanged with heartbeat comma',
- 'Key' => 'discard-unchanged-with-heartbeat-comma'
+ 'Key' => 'discard-unchanged-with-heartbeat-comma[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1,5']
],
- 'error' => 'Invalid parameter "params": a time unit is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a time unit is expected.',
+ 'lld_error' => 'Invalid parameter "params": a time unit is expected.'
]
],
[
@@ -688,12 +710,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discard unchanged with heartbeat dot',
- 'Key' => 'discard-unchanged-with-heartbeat-dot'
+ 'Key' => 'discard-unchanged-with-heartbeat-dot[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1.5']
],
- 'error' => 'Invalid parameter "params": a time unit is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": a time unit is expected.',
+ 'lld_error' => 'Invalid parameter "params": a time unit is expected.'
]
],
[
@@ -701,12 +724,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discard unchanged with heartbeat negative',
- 'Key' => 'discard-unchanged-with-heartbeat-negative'
+ 'Key' => 'discard-unchanged-with-heartbeat-negative[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '-3']
],
- 'error' => 'Invalid parameter "params": value must be one of 1-788400000.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": value must be one of 1-788400000.',
+ 'lld_error' => 'Invalid parameter "params": value must be one of 1-788400000.'
]
],
[
@@ -714,12 +738,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discard unchanged with heartbeat zero',
- 'Key' => 'discard-unchanged-with-heartbeat-zero'
+ 'Key' => 'discard-unchanged-with-heartbeat-zero[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '0']
],
- 'error' => 'Invalid parameter "params": value must be one of 1-788400000.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": value must be one of 1-788400000.',
+ 'lld_error' => 'Invalid parameter "params": value must be one of 1-788400000.'
]
],
[
@@ -727,12 +752,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Discard unchanged with heartbeat maximum',
- 'Key' => 'unchanged-with-heartbeat-max'
+ 'Key' => 'unchanged-with-heartbeat-max[{#KEY}]'
],
'preprocessing' => [
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '788400001']
],
- 'error' => 'Invalid parameter "params": value must be one of 1-788400000.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": value must be one of 1-788400000.',
+ 'lld_error' => 'Invalid parameter "params": value must be one of 1-788400000.'
]
]
];
@@ -749,7 +775,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'CSV to JSON empty parameters',
- 'Key' => 'csv-to-json-empty-parameters'
+ 'Key' => 'csv-to-json-empty-parameters[{#KEY}]'
],
'preprocessing' => [
['type' => 'CSV to JSON']
@@ -761,7 +787,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'CSV to JSON with default parameters',
- 'Key' => 'csv-to-json-with-default-parameters'
+ 'Key' => 'csv-to-json-with-default-parameters[{#KEY}]'
],
'preprocessing' => [
['type' => 'CSV to JSON', 'parameter_1' => ',', 'parameter_2' => '"', 'parameter_3' => true]
@@ -773,7 +799,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'CSV to JSON custom parameters',
- 'Key' => 'csv-to-json-custom-parameters'
+ 'Key' => 'csv-to-json-custom-parameters[{#KEY}]'
],
'preprocessing' => [
['type' => 'CSV to JSON', 'parameter_1' => ' ', 'parameter_2' => "'", 'parameter_3' => false]
@@ -786,7 +812,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'In range negative float',
- 'Key' => 'in-range-negative-float'
+ 'Key' => 'in-range-negative-float[{#KEY}]'
],
'preprocessing' => [
['type' => 'In range', 'parameter_1' => '-3.5', 'parameter_2' => '-1.5']
@@ -799,7 +825,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Not supported step',
- 'Key' => 'check-for-not-supported'
+ 'Key' => 'check-for-not-supported[{#KEY}]'
],
'preprocessing' => [
['type' => 'Check for not supported value']
@@ -811,10 +837,10 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'In range zero',
- 'Key' => 'in-range-zero'
+ 'Key' => 'in-range-zero[{#KEY}]'
],
'preprocessing' => [
- ['type' => 'In range', 'parameter_1' => '0', 'parameter_2' => '0']
+ ['type' => 'In range', 'parameter_1' => '0', 'parameter_2' => '1']
]
]
],
@@ -823,7 +849,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Add all preprocessing',
- 'Key' => 'item.all.preprocessing'
+ 'Key' => 'item.all.preprocessing[{#KEY}]'
],
'preprocessing' => [
['type' => 'Check for not supported value'],
@@ -852,7 +878,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Add symbols preprocessing',
- 'Key' => 'item.symbols.preprocessing'
+ 'Key' => 'item.symbols.preprocessing[{#KEY}]'
],
'preprocessing' => [
['type' => 'Replace', 'parameter_1' => '1a!@#$%^&*()-=', 'parameter_2' => '1a!@#$%^&*()-='],
@@ -861,7 +887,7 @@ abstract class testFormPreprocessing extends CWebTest {
['type' => 'Trim', 'parameter_1' => '3c!@#$%^&*()-='],
['type' => 'XML XPath', 'parameter_1' => '3c!@#$%^&*()-='],
['type' => 'JSONPath', 'parameter_1' => '3c!@#$%^&*()-='],
- ['type' => 'Custom multiplier', 'parameter_1' => '4e+10'],
+ ['type' => 'Custom multiplier', 'parameter_1' => '4.0E+14'],
['type' => 'Regular expression', 'parameter_1' => '5d!@#$%^&*()-=', 'parameter_2' => '6e!@#$%^&*()-='],
['type' => 'JavaScript', 'parameter_1' => '5d!@#$%^&*()-='],
['type' => 'Matches regular expression', 'parameter_1' => '7f!@#$%^&*()-='],
@@ -877,7 +903,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Add the same preprocessing',
- 'Key' => 'item.theSamePpreprocessing'
+ 'Key' => 'item.theSamePpreprocessing[{#KEY}]'
],
'preprocessing' => [
['type' => 'Replace', 'parameter_1' => 'текÑÑ‚', 'parameter_2' => 'замена'],
@@ -929,7 +955,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item with preprocessing rule with user macro',
- 'Key' => 'item-user-macro'
+ 'Key' => 'item-user-macro[{#KEY}]'
],
'preprocessing' => [
['type' => 'Replace', 'parameter_1' => '{$TEST1}', 'parameter_2' => '{$MACRO2}'],
@@ -957,7 +983,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item with spaces in preprocessing',
- 'Key' => 'item-spaces-preprocessing'
+ 'Key' => 'item-spaces-preprocessing[{#KEY}]'
],
'preprocessing' => [
['type' => 'Replace', 'parameter_1' => ' test text ', 'parameter_2' => ' replacement 1 '],
@@ -990,12 +1016,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameter starts with digits',
- 'Key' => 'json-prometeus-digits-first-parameter'
+ 'Key' => 'json-prometeus-digits-first-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '1name_of_metric']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1003,12 +1030,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON wrong equals operator',
- 'Key' => 'json-prometeus-wrong-equals-operator'
+ 'Key' => 'json-prometeus-wrong-equals-operator[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__=~"<regex>"}=1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1016,12 +1044,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON unsupported operator >',
- 'Key' => 'json-prometeus-unsupported-operator-1'
+ 'Key' => 'json-prometeus-unsupported-operator-1[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__=~"<regex>"}>1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1029,12 +1058,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON unsupported operator <',
- 'Key' => 'json-prometeus-unsupported-operator-2'
+ 'Key' => 'json-prometeus-unsupported-operator-2[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__=~"<regex>"}<1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1042,12 +1072,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON unsupported operator !==',
- 'Key' => 'json-prometeus-unsupported-operator-3'
+ 'Key' => 'json-prometeus-unsupported-operator-3[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__=~"<regex>"}!==1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1055,12 +1086,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON unsupported operator >=',
- 'Key' => 'json-prometeus-unsupported-operator-4'
+ 'Key' => 'json-prometeus-unsupported-operator-4[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__=~"<regex>"}>=1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1068,12 +1100,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON unsupported operator =<',
- 'Key' => 'json-prometeus-unsupported-operator-5'
+ 'Key' => 'json-prometeus-unsupported-operator-5[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__=~"<regex>"}=<1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1081,12 +1114,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON duplicate metric condition',
- 'Key' => 'json-duplicate-metric-condition'
+ 'Key' => 'json-duplicate-metric-condition[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => 'cpu_system{__name__="metric_name"}']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1094,12 +1128,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON wrong parameter - space',
- 'Key' => 'json-wrong-parameter-space'
+ 'Key' => 'json-wrong-parameter-space[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => 'cpu usage_system']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1107,13 +1142,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus to JSON wrong parameter - slash',
- 'Key' => 'json-wrong-parameter-slash'
+ 'Key' => 'json-wrong-parameter-slash[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => 'cpu\\']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1121,13 +1157,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometheus to JSON wrong parameter - digits',
- 'Key' => 'json-wrong-parameter-digits'
+ 'Key' => 'json-wrong-parameter-digits[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '123']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1135,13 +1172,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometheus to JSON wrong first parameter - pipe',
- 'Key' => 'json-wrong-parameter-pipe'
+ 'Key' => 'json-wrong-parameter-pipe[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => 'metric==1e|5']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1149,13 +1187,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometheus to JSON wrong first parameter - slash',
- 'Key' => 'json-wrong-parameter-slash'
+ 'Key' => 'json-wrong-parameter-slash[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label="value\"}']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
],
[
@@ -1163,27 +1202,28 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item duplicate Prometeus to JSON steps',
- 'Key' => 'duplicate-prometheus-to-json-steps'
+ 'Key' => 'duplicate-prometheus-to-json-steps[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => 'cpu_usage_system_1'],
['type' => 'Prometheus to JSON', 'parameter_1' => 'cpu_usage_system_1']
],
- 'error' => 'Only one Prometheus step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within '.
+ 'the combinations of (type)=((22, 23)).',
+ 'lld_error' => 'Only one Prometheus step is allowed.'
]
],
- // Successful Prometheus to JSON creation.
[
[
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON empty first parameter',
- 'Key' => 'json-prometeus-empty-first-parameter'
+ 'Key' => 'json-prometeus-empty-first-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1191,7 +1231,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameter +inf',
- 'Key' => 'json-prometeus-plus-inf'
+ 'Key' => 'json-prometeus-plus-inf[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => 'cpu_usage_system==+inf']
@@ -1203,7 +1243,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameter inf',
- 'Key' => 'json-prometeus-inf'
+ 'Key' => 'json-prometeus-inf[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__="metric_name"}==inf']
@@ -1215,7 +1255,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameter -inf',
- 'Key' => 'json-prometeus-negative-inf'
+ 'Key' => 'json-prometeus-negative-inf[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__=~"<regex>"}==-inf']
@@ -1227,7 +1267,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameter nan',
- 'Key' => 'json-prometeus-nan'
+ 'Key' => 'json-prometeus-nan[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__="metric_name"}==nan']
@@ -1239,7 +1279,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameter exp',
- 'Key' => 'json-prometeus-exp'
+ 'Key' => 'json-prometeus-exp[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => 'cpu_usage_system==3.5180e+11']
@@ -1251,7 +1291,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameter ==1',
- 'Key' => 'json-prometeus-neutral-digit'
+ 'Key' => 'json-prometeus-neutral-digit[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__="metric_name"}==1']
@@ -1263,7 +1303,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameters ==+1',
- 'Key' => 'json-prometeus-positive-digit'
+ 'Key' => 'json-prometeus-positive-digit[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__="metric_name"}==+1']
@@ -1275,7 +1315,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON first parameters ==-1',
- 'Key' => 'json-prometeus-negative-digit'
+ 'Key' => 'json-prometeus-negative-digit[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__="metric_name"}==-1']
@@ -1287,7 +1327,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON label operator =',
- 'Key' => 'json-prometeus-label-operator-equal-strong'
+ 'Key' => 'json-prometeus-label-operator-equal-strong[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label_name="name"}']
@@ -1299,7 +1339,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON label operator =~',
- 'Key' => 'json-prometeus-label-operator-contains'
+ 'Key' => 'json-prometeus-label-operator-contains[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label_name=~"name"}']
@@ -1311,7 +1351,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON slashes in pattern',
- 'Key' => 'json-prometeus-slashes-pattern'
+ 'Key' => 'json-prometeus-slashes-pattern[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label="value\\\\"}']
@@ -1323,7 +1363,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON user macros in parameter',
- 'Key' => 'json-prometeus-macros-1'
+ 'Key' => 'json-prometeus-macros-1[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{$METRIC_NAME}==1']
@@ -1335,7 +1375,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON user macros in parameter',
- 'Key' => 'json-prometeus-macros-2'
+ 'Key' => 'json-prometeus-macros-2[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{__name__="{$METRIC_NAME}"}']
@@ -1347,7 +1387,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON user macros in parameters',
- 'Key' => 'json-prometeus-macros-3'
+ 'Key' => 'json-prometeus-macros-3[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{{$LABEL_NAME}="<label value>"}']
@@ -1359,7 +1399,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON user macros in parameters',
- 'Key' => 'json-prometeus-macros-4'
+ 'Key' => 'json-prometeus-macros-4[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label_name="{$LABEL_VALUE}"}']
@@ -1371,7 +1411,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON unsupported label operator !=',
- 'Key' => 'json-prometeus-unsupported-label-operator-1'
+ 'Key' => 'json-prometeus-unsupported-label-operator-1[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label_name!="regex_pattern"}']
@@ -1383,7 +1423,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus to JSON unsupported label operator !~',
- 'Key' => 'json-prometeus-unsupported-label-operator-2'
+ 'Key' => 'json-prometeus-unsupported-label-operator-2[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label_name!~"<regex>"}']
@@ -1404,12 +1444,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus empty first parameter',
- 'Key' => 'prometeus-empty-first-parameter'
+ 'Key' => 'prometeus-empty-first-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
[
@@ -1417,12 +1457,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Prometheus space in pattern',
- 'Key' => 'prometheus-space-in-pattern'
+ 'Key' => 'prometheus-space-in-pattern[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => 'cpu usage_metric']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1430,12 +1470,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Prometheus only digits in pattern',
- 'Key' => 'prometheus-digits-in-pattern'
+ 'Key' => 'prometheus-digits-in-pattern[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '1223']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1443,12 +1483,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus first parameter starts with digits',
- 'Key' => 'prometeus-digits-first-parameter'
+ 'Key' => 'prometeus-digits-first-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '1name_of_metric']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1456,12 +1496,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong equals operator',
- 'Key' => 'rometeus-wrong-equals-operator'
+ 'Key' => 'rometeus-wrong-equals-operator[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__=~"<regex>"}=1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1469,12 +1509,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus unsupported operator >',
- 'Key' => 'prometeus-unsupported-operator-1'
+ 'Key' => 'prometeus-unsupported-operator-1[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__=~"<regex>"}>1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1482,12 +1522,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus unsupported operator <',
- 'Key' => 'prometeus-unsupported-operator-2'
+ 'Key' => 'prometeus-unsupported-operator-2[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__=~"<regex>"}<1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1495,12 +1535,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus unsupported operator !==',
- 'Key' => 'prometeus-unsupported-operator-3'
+ 'Key' => 'prometeus-unsupported-operator-3[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__=~"<regex>"}!==1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1508,12 +1548,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus unsupported operator >=',
- 'Key' => 'prometeus-unsupported-operator-4'
+ 'Key' => 'prometeus-unsupported-operator-4[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__=~"<regex>"}>=1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1521,12 +1561,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus unsupported operator =<',
- 'Key' => 'prometeus-unsupported-operator-5'
+ 'Key' => 'prometeus-unsupported-operator-5[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__=~"<regex>"}=<1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1534,12 +1574,12 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus duplicate metric condition',
- 'Key' => 'duplicate-metric-condition'
+ 'Key' => 'duplicate-metric-condition[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => 'cpu_system{__name__="metric_name"}']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1547,13 +1587,14 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item duplicate Prometeus steps',
- 'Key' => 'duplicate-prometheus-steps'
+ 'Key' => 'duplicate-prometheus-steps[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => 'cpu_usage_system'],
['type' => 'Prometheus pattern', 'parameter_1' => 'cpu_usage_system']
],
- 'error' => 'Only one Prometheus step is allowed.'
+ 'error' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within '.
+ 'the combinations of (type)=((22, 23)).'
]
],
[
@@ -1561,7 +1602,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong second parameter - space',
- 'Key' => 'wrong-second-parameter-space'
+ 'Key' => 'wrong-second-parameter-space[{#KEY}]'
],
'preprocessing' => [
[
@@ -1571,7 +1612,7 @@ abstract class testFormPreprocessing extends CWebTest {
'parameter_3' => 'label name'
]
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus output.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/3": invalid Prometheus label.'
]
],
[
@@ -1579,7 +1620,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong second parameter - quotes',
- 'Key' => 'wrong-second-parameter-quotes'
+ 'Key' => 'wrong-second-parameter-quotes[{#KEY}]'
],
'preprocessing' => [
[
@@ -1589,7 +1630,7 @@ abstract class testFormPreprocessing extends CWebTest {
'parameter_3' => '"label_name"'
]
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus output.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/3": invalid Prometheus label.'
]
],
[
@@ -1597,7 +1638,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong second parameter - triangle quotes',
- 'Key' => 'wrong-second-parameter-triangle-quotes'
+ 'Key' => 'wrong-second-parameter-triangle-quotes[{#KEY}]'
],
'preprocessing' => [
[
@@ -1607,7 +1648,7 @@ abstract class testFormPreprocessing extends CWebTest {
'parameter_3' => '<label_name>'
]
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus output.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/3": invalid Prometheus label.'
]
],
[
@@ -1615,7 +1656,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong second parameter - slash',
- 'Key' => 'wrong-second-parameter-slash'
+ 'Key' => 'wrong-second-parameter-slash[{#KEY}]'
],
'preprocessing' => [
[
@@ -1625,7 +1666,7 @@ abstract class testFormPreprocessing extends CWebTest {
'parameter_3' => '\0'
]
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus output.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/3": invalid Prometheus label.'
]
],
[
@@ -1633,7 +1674,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong second parameter - digits',
- 'Key' => 'wrong-second-parameter-digits'
+ 'Key' => 'wrong-second-parameter-digits[{#KEY}]'
],
'preprocessing' => [
[
@@ -1643,7 +1684,7 @@ abstract class testFormPreprocessing extends CWebTest {
'parameter_3' => '123'
]
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus output.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/3": invalid Prometheus label.'
]
],
[
@@ -1651,13 +1692,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong first parameter - pipe',
- 'Key' => 'wrong-second-parameter-pipe'
+ 'Key' => 'wrong-second-parameter-pipe[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => 'metric==1e|5']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1665,13 +1706,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong first parameter - slash',
- 'Key' => 'wrong-second-parameter-slash'
+ 'Key' => 'wrong-second-parameter-slash[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label="value\"}']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1679,13 +1720,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong first parameter =!',
- 'Key' => 'wrong-second-parameter-equals-exlamation'
+ 'Key' => 'wrong-second-parameter-equals-exlamation[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name=!"name"}']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -1693,13 +1734,13 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Item Prometeus wrong first parameter ~!',
- 'Key' => 'wrong-second-parameter-tilda-exclamation'
+ 'Key' => 'wrong-second-parameter-tilda-exclamation[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name~!"name"}']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
// Successful Prometheus pattern creation.
@@ -1708,7 +1749,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus empty second parameter',
- 'Key' => 'prometeus-empty-second-parameter'
+ 'Key' => 'prometeus-empty-second-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => 'cpu_usage_system']
@@ -1720,7 +1761,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus both parameters present',
- 'Key' => 'prometeus-both-parameters-present'
+ 'Key' => 'prometeus-both-parameters-present[{#KEY}]'
],
'preprocessing' => [
[
@@ -1737,7 +1778,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameter +inf',
- 'Key' => 'prometeus-plus-inf'
+ 'Key' => 'prometeus-plus-inf[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => 'cpu_usage_system==+inf']
@@ -1749,7 +1790,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameter inf',
- 'Key' => 'prometeus-inf'
+ 'Key' => 'prometeus-inf[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__="metric_name"}==inf']
@@ -1761,7 +1802,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameter -inf',
- 'Key' => 'prometeus-negative-inf'
+ 'Key' => 'prometeus-negative-inf[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__=~"<regex>"}==-inf']
@@ -1773,7 +1814,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameter nan',
- 'Key' => 'prometeus-nan'
+ 'Key' => 'prometeus-nan[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__="metric_name"}==nan']
@@ -1785,7 +1826,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameter exp',
- 'Key' => 'prometeus-exp'
+ 'Key' => 'prometeus-exp[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => 'cpu_usage_system==3.5180e+11']
@@ -1797,7 +1838,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameter ==1',
- 'Key' => 'prometeus-neutral-digit'
+ 'Key' => 'prometeus-neutral-digit[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__="metric_name"}==1']
@@ -1809,7 +1850,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameters ==+1',
- 'Key' => 'prometeus-positive-digit'
+ 'Key' => 'prometeus-positive-digit[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__="metric_name"}==+1']
@@ -1821,7 +1862,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus first parameters ==-1',
- 'Key' => 'prometeus-negative-digit'
+ 'Key' => 'prometeus-negative-digit[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__="metric_name"}==-1']
@@ -1833,7 +1874,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus label operator =',
- 'Key' => 'prometeus-label-operator-equal-strong'
+ 'Key' => 'prometeus-label-operator-equal-strong[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name="name"}']
@@ -1845,7 +1886,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus label operator =~',
- 'Key' => 'prometeus-label-operator-contains'
+ 'Key' => 'prometeus-label-operator-contains[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name=~"name"}']
@@ -1857,7 +1898,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus label operator !=',
- 'Key' => 'prometeus-label-operator-exclamation-equals'
+ 'Key' => 'prometeus-label-operator-exclamation-equals[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name!="name"}']
@@ -1869,7 +1910,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus label operator !~',
- 'Key' => 'prometeus-label-operator-exclamation-tilda'
+ 'Key' => 'prometeus-label-operator-exclamation-tilda[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name!~"name"}']
@@ -1881,7 +1922,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus slashes in pattern',
- 'Key' => 'prometeus-slashes-pattern'
+ 'Key' => 'prometeus-slashes-pattern[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label="value\\\\"}']
@@ -1893,7 +1934,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus user macros in parameters',
- 'Key' => 'prometeus-macros-1'
+ 'Key' => 'prometeus-macros-1[{#KEY}]'
],
'preprocessing' => [
[
@@ -1909,7 +1950,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus user macros in parameters',
- 'Key' => 'prometeus-macros-2'
+ 'Key' => 'prometeus-macros-2[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{__name__="{$METRIC_NAME}"}']
@@ -1921,7 +1962,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus user macros in parameters',
- 'Key' => 'prometeus-macros-3'
+ 'Key' => 'prometeus-macros-3[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{{$LABEL_NAME}="<label value>"}']
@@ -1933,7 +1974,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus user macros in parameters',
- 'Key' => 'prometeus-macros-4'
+ 'Key' => 'prometeus-macros-4[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name="{$LABEL_VALUE}"}']
@@ -1945,7 +1986,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus unsupported label operator !=',
- 'Key' => 'prometeus-unsupported-label-operator-1'
+ 'Key' => 'prometeus-unsupported-label-operator-1[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name!="regex_pattern"}']
@@ -1957,7 +1998,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus unsupported label operator !~',
- 'Key' => 'prometeus-unsupported-label-operator-2'
+ 'Key' => 'prometeus-unsupported-label-operator-2[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus pattern', 'parameter_1' => '{label_name!~"<regex>"}']
@@ -1969,7 +2010,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus function sum',
- 'Key' => 'prometeus-function-sum'
+ 'Key' => 'prometeus-function-sum[{#KEY}]'
],
'preprocessing' => [
[
@@ -1985,7 +2026,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus function min',
- 'Key' => 'prometeus-function-min'
+ 'Key' => 'prometeus-function-min[{#KEY}]'
],
'preprocessing' => [
[
@@ -2001,7 +2042,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus function max',
- 'Key' => 'prometeus-function-max'
+ 'Key' => 'prometeus-function-max[{#KEY}]'
],
'preprocessing' => [
[
@@ -2017,7 +2058,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus function avg',
- 'Key' => 'prometeus-function-avg'
+ 'Key' => 'prometeus-function-avg[{#KEY}]'
],
'preprocessing' => [
[
@@ -2033,7 +2074,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Item Prometeus function count',
- 'Key' => 'prometeus-function-count'
+ 'Key' => 'prometeus-function-count[{#KEY}]'
],
'preprocessing' => [
[
@@ -2090,23 +2131,21 @@ abstract class testFormPreprocessing extends CWebTest {
$form->submit();
$this->page->waitUntilReady();
- switch ($data['expected']) {
- case TEST_GOOD:
- $this->assertMessage(TEST_GOOD, $this->success_message);
+ if ($data['expected'] === TEST_GOOD) {
+ $this->assertMessage(TEST_GOOD, $this->success_message);
- // Check result in frontend form.
- $id = CDBHelper::getValue('SELECT itemid FROM items WHERE key_='.zbx_dbstr($data['fields']['Key']));
- $this->page->open($this->ready_link.$id);
- $form->selectTab('Preprocessing');
- $this->assertPreprocessingSteps($data['preprocessing']);
- break;
-
- case TEST_BAD:
- $this->assertMessage(TEST_BAD, $this->fail_message, $data['error']);
+ // Check result in frontend form.
+ $id = CDBHelper::getValue('SELECT itemid FROM items WHERE key_='.zbx_dbstr($data['fields']['Key']));
+ $this->page->open($this->ready_link.$id);
+ $form->selectTab('Preprocessing');
+ $this->assertPreprocessingSteps($data['preprocessing']);
+ }
+ else {
+ $error_message = ($lld) ? $data['lld_error'] : $data['error'];
+ $this->assertMessage(TEST_BAD, $this->fail_message, $error_message);
- // Check that DB hash is not changed.
- $this->assertEquals($old_hash, CDBHelper::getHash($sql_items));
- break;
+ // Check that DB hash is not changed.
+ $this->assertEquals($old_hash, CDBHelper::getHash($sql_items));
}
}
@@ -2119,7 +2158,7 @@ abstract class testFormPreprocessing extends CWebTest {
[
'fields' => [
'Name' => 'Prometheus to JSON trailing spaces',
- 'Key' => 'json-prometeus-space-in-parameter'
+ 'Key' => 'json-prometeus-space-in-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => ' metric ']
@@ -2138,7 +2177,7 @@ abstract class testFormPreprocessing extends CWebTest {
[
'fields' => [
'Name' => 'Prometheus pattern trailing spaces',
- 'Key' => 'prometeus-space-in-parameters'
+ 'Key' => 'prometeus-space-in-parameters[{#KEY}]'
],
'preprocessing' => [
[
@@ -2154,7 +2193,7 @@ abstract class testFormPreprocessing extends CWebTest {
[
'fields' => [
'Name' => 'Custom multiplier trailing spaces',
- 'Key' => 'Custom-multiplier-spaces-in-parameter'
+ 'Key' => 'Custom-multiplier-spaces-in-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'Custom multiplier', 'parameter_1' => ' 2 ']
@@ -2165,7 +2204,7 @@ abstract class testFormPreprocessing extends CWebTest {
[
'fields' => [
'Name' => 'In range trailing spaces',
- 'Key' => 'in-range-spaces-in-parameter'
+ 'Key' => 'in-range-spaces-in-parameter[{#KEY}]'
],
'preprocessing' => [
['type' => 'In range', 'parameter_1' => ' 5 ', 'parameter_2' => ' 10 ']
@@ -2242,7 +2281,7 @@ abstract class testFormPreprocessing extends CWebTest {
$case = [
'fields' => [
'Name' => 'Preprocessing '.$label,
- 'Key' => 'preprocessing-steps-discard-on-fail'.$value
+ 'Key' => 'preprocessing-steps-discard-on-fail'.$value.'[{#KEY}]'
],
'preprocessing' => [
[
@@ -2461,7 +2500,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Set value empty',
- 'Key' => 'set-value-empty'
+ 'Key' => 'set-value-empty[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set value to',
@@ -2472,7 +2511,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Set value number',
- 'Key' => 'set-value-number'
+ 'Key' => 'set-value-number[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set value to',
@@ -2483,7 +2522,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Set value string',
- 'Key' => 'set-value-string'
+ 'Key' => 'set-value-string[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set error to',
@@ -2494,7 +2533,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Set value special-symbols',
- 'Key' => 'set-value-special-symbols'
+ 'Key' => 'set-value-special-symbols[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set value to',
@@ -2506,19 +2545,20 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_BAD,
'fields' => [
'Name' => 'Set error empty',
- 'Key' => 'set-error-empty'
+ 'Key' => 'set-error-empty[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set error to',
'error_handler_params' => ''
],
- 'error' => 'Incorrect value for field "error_handler_params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/error_handler_params": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "error_handler_params": cannot be empty.'
],
[
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Set error string',
- 'Key' => 'set-error-string'
+ 'Key' => 'set-error-string[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set error to',
@@ -2529,7 +2569,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Set error number',
- 'Key' => 'set-error-number'
+ 'Key' => 'set-error-number[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set error to',
@@ -2540,7 +2580,7 @@ abstract class testFormPreprocessing extends CWebTest {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Set error special symbols',
- 'Key' => 'set-error-special-symbols'
+ 'Key' => 'set-error-special-symbols[{#KEY}]'
],
'custom_on_fail' => [
'error_handler' => 'Set error to',
@@ -2590,7 +2630,7 @@ abstract class testFormPreprocessing extends CWebTest {
[
'fields' => [
'Name' => 'Templated Preprocessing steps',
- 'Key' => 'templated-preprocessing-steps'
+ 'Key' => 'templated-preprocessing-steps[{#KEY}]'
],
'preprocessing' => [
[
@@ -2776,7 +2816,7 @@ abstract class testFormPreprocessing extends CWebTest {
protected function checkCloneItem($link, $item, $templated = false) {
$cloned_values = [
'Name' => 'Cloned_testInheritancePreprocessingSteps'.time(),
- 'Key' => 'cloned-preprocessing'.time()
+ 'Key' => 'cloned-preprocessing'.time().'[{#KEY}]'
];
// Open original item on host and get its' preprocessing steps.
diff --git a/ui/tests/selenium/common/testFormTags.php b/ui/tests/selenium/common/testFormTags.php
index fa306fb1ea0..e951c7efaab 100644
--- a/ui/tests/selenium/common/testFormTags.php
+++ b/ui/tests/selenium/common/testFormTags.php
@@ -257,7 +257,7 @@ class testFormTags extends CWebTest {
case 'item prototype':
$sql = 'SELECT * FROM items ORDER BY itemid';
$locator = 'name:itemForm';
- $fields = ['Name' => $data['name'], 'Key' => 'itemtag_'.microtime(true), 'Type' => 'Zabbix trapper'];
+ $fields = ['Name' => $data['name'], 'Key' => 'itemtag_'.microtime(true).'[{#KEY}]', 'Type' => 'Zabbix trapper'];
break;
case 'web scenario':
@@ -621,7 +621,7 @@ class testFormTags extends CWebTest {
case 'item':
case 'item prototype':
$form = $this->query('name:itemForm')->asForm()->waitUntilPresent()->one();
- $form->fill(['Name' => $new_name, 'Key' => 'newkey_'.microtime(true)]);
+ $form->fill(['Name' => $new_name, 'Key' => 'newkey_'.microtime(true).'[{#KEY}]']);
$sql_old_name = 'SELECT NULL FROM items WHERE name='.zbx_dbstr($this->clone_name);
$sql_new_name = 'SELECT NULL FROM items WHERE name='.zbx_dbstr($new_name);
break;
diff --git a/ui/tests/selenium/common/testItemTest.php b/ui/tests/selenium/common/testItemTest.php
index eecaad2af7e..080b89e54db 100644
--- a/ui/tests/selenium/common/testItemTest.php
+++ b/ui/tests/selenium/common/testItemTest.php
@@ -58,10 +58,10 @@ class testItemTest extends CWebTest {
['Type' => 'Database monitor', 'SQL query' => 'query'],
['Type' => 'HTTP agent', 'URL' => 'https://www.zabbix.com'],
['Type' => 'IPMI agent', 'IPMI sensor' => 'Sensor'],
- ['Type' => 'SSH agent', 'Key' => 'ssh.run[Description,127.0.0.1,50]', 'User name' => 'Name', 'Executed script' => 'Script'],
- ['Type' => 'TELNET agent', 'Key' => 'telnet'],
- ['Type' => 'JMX agent', 'Key' => 'jmx','JMX endpoint' => 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi', 'User name' => ''],
- ['Type' => 'Dependent item', 'Key'=>'dependent', 'Master item' => 'Master item']
+ ['Type' => 'SSH agent', 'Key' => 'ssh.run[Description,127.0.0.1,50,[{#KEY}]]', 'User name' => 'Name', 'Executed script' => 'Script'],
+ ['Type' => 'TELNET agent', 'Key' => 'telnet[{#KEY}]'],
+ ['Type' => 'JMX agent', 'Key' => 'jmx[{#KEY}]','JMX endpoint' => 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi', 'User name' => ''],
+ ['Type' => 'Dependent item', 'Key'=>'dependent[{#KEY}]', 'Master item' => 'Master item']
];
}
@@ -70,7 +70,7 @@ class testItemTest extends CWebTest {
*/
public function getItemTestButtonStateData() {
return array_merge($this->getCommonTestButtonStateData(), [
- ['Type' => 'SNMP trap', 'Key' => 'snmptrap.fallback'],
+ ['Type' => 'SNMP trap', 'Key' => 'snmptrap.fallback[{#KEY}]'],
['Type' => 'Calculated', 'Formula' => '"formula"']
]);
}
@@ -103,7 +103,7 @@ class testItemTest extends CWebTest {
$item_form->fill([
'Name' => $item_name,
'Type' => 'Zabbix agent',
- 'Key' => 'key'
+ 'Key' => 'key[{#KEY}]'
]);
// Check Test item button.
$this->checkTestButtonInPreprocessing($item_type);
@@ -387,7 +387,8 @@ class testItemTest extends CWebTest {
'Type' => 'Zabbix agent',
'Key' => ''
],
- 'error' => 'Incorrect value for field "key_": key is empty.'
+ 'error' => 'Incorrect value for field "key_": key is empty.',
+ 'lld_error' => 'Incorrect value for field "key_": key is empty.'
]
],
[
@@ -397,7 +398,8 @@ class testItemTest extends CWebTest {
'Type' => 'Zabbix agent',
'Key' => 'key space'
],
- 'error' => 'Incorrect value for field "key_": incorrect syntax near " space".'
+ 'error' => 'Incorrect value for field "key_": incorrect syntax near " space".',
+ 'lld_error' => 'Incorrect value for field "key_": incorrect syntax near " space".'
]
],
[
@@ -410,7 +412,8 @@ class testItemTest extends CWebTest {
'preprocessing' => [
['type' => 'Regular expression', 'parameter_1' => '', 'parameter_2' => '2']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": first parameter is expected.'
]
],
[
@@ -423,7 +426,8 @@ class testItemTest extends CWebTest {
'preprocessing' => [
['type' => 'Regular expression', 'parameter_1' => '1', 'parameter_2' => '']
],
- 'error' => 'Incorrect value for field "params": second parameter is expected.'
+ 'error' => 'Invalid parameter "/1/params/2": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": second parameter is expected.'
]
],
[
@@ -436,7 +440,8 @@ class testItemTest extends CWebTest {
'preprocessing' => [
['type' => 'XML XPath', 'parameter_1' => '']
],
- 'error' => 'Incorrect value for field "params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/params/1": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "params": cannot be empty.'
]
],
[
@@ -454,7 +459,8 @@ class testItemTest extends CWebTest {
'error_handler' => 'Set error to',
'error_handler_params' => '']
],
- 'error' => 'Incorrect value for field "error_handler_params": cannot be empty.'
+ 'error' => 'Invalid parameter "/1/error_handler_params": cannot be empty.',
+ 'lld_error' => 'Incorrect value for field "error_handler_params": cannot be empty.'
]
],
[
@@ -740,6 +746,7 @@ class testItemTest extends CWebTest {
foreach ($elements as $name => $selector) {
$elements[$name] = $test_form->query($selector)->one()->detect();
}
+
$proxy = CDBHelper::getValue("SELECT host FROM hosts WHERE hostid IN ".
"(SELECT proxy_hostid FROM hosts WHERE host = 'Test item host')");
@@ -1021,7 +1028,8 @@ class testItemTest extends CWebTest {
}
break;
case TEST_BAD:
- $this->assertMessage(TEST_BAD, null, $data['error']);
+ $error_message = ($lld) ? $data['lld_error'] : $data['error'];
+ $this->assertMessage(TEST_BAD, null, $error_message);
$overlay->close();
break;
}
diff --git a/ui/tests/selenium/common/testMassUpdateItems.php b/ui/tests/selenium/common/testMassUpdateItems.php
index a3b9c6790ef..c41f87b3816 100644
--- a/ui/tests/selenium/common/testMassUpdateItems.php
+++ b/ui/tests/selenium/common/testMassUpdateItems.php
@@ -111,7 +111,7 @@ class testMassUpdateItems extends CWebTest{
'change' => [
'Type' => ['id' => 'type', 'value' => 'SNMP agent']
],
- 'details' => 'Item uses incorrect interface type.'
+ 'details' => 'Invalid parameter "/1/snmp_oid": cannot be empty.'
]
],
[
@@ -124,7 +124,7 @@ class testMassUpdateItems extends CWebTest{
'change' => [
'Type' => ['id' => 'type', 'value' => 'TELNET agent']
],
- 'details' => 'No authentication user name specified.'
+ 'details' => 'Invalid parameter "/2/username": cannot be empty.'
]
],
[
@@ -138,7 +138,7 @@ class testMassUpdateItems extends CWebTest{
'Type' => ['id' => 'type', 'value' => 'TELNET agent'],
'Host interface' => ['id' => 'interface-select', 'value' => '127.0.5.1:10051']
],
- 'details' => 'No authentication user name specified.'
+ 'details' => 'Invalid parameter "/1/username": cannot be empty.'
]
],
[
@@ -153,7 +153,7 @@ class testMassUpdateItems extends CWebTest{
'Authentication method' => ['id' => 'authtype', 'value' => 'Password'],
'User name' => ['id' => 'username', 'value' => '']
],
- 'details' => 'No authentication user name specified.'
+ 'details' => 'Invalid parameter "/1/username": cannot be empty.'
]
],
[
@@ -170,7 +170,7 @@ class testMassUpdateItems extends CWebTest{
'Public key file' => ['id' => 'publickey', 'value' => '/path/file1'],
'Private key file' => ['id' => 'privatekey', 'value' => '/path/file2']
],
- 'details' => 'No authentication user name specified.'
+ 'details' => 'Invalid parameter "/1/username": cannot be empty.'
]
],
[
@@ -187,7 +187,7 @@ class testMassUpdateItems extends CWebTest{
'Public key file' => ['id' => 'publickey', 'value' => ''],
'Private key file' => ['id' => 'privatekey', 'value' => '/path/file2']
],
- 'details' => 'No public key file specified.'
+ 'details' => 'Invalid parameter "/1/publickey": cannot be empty.'
]
],
[
@@ -204,7 +204,7 @@ class testMassUpdateItems extends CWebTest{
'Public key file' => ['id' => 'publickey', 'value' => '/path/file1'],
'Private key file' => ['id' => 'privatekey', 'value' => '']
],
- 'details' => 'No private key file specified.'
+ 'details' => 'Invalid parameter "/1/privatekey": cannot be empty.'
]
],
[
@@ -222,7 +222,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'history', 'value' => '3599']
]
],
- 'details' => 'Incorrect value for field "history": value must be one of 0, 3600-788400000.'
+ 'details' => 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
],
[
@@ -240,7 +240,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'history', 'value' => '1']
]
],
- 'details' => 'Incorrect value for field "history": value must be one of 0, 3600-788400000.'
+ 'details' => 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
],
[
@@ -258,7 +258,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'history', 'value' => '']
]
],
- 'details' => 'Incorrect value for field "history": a time unit is expected.'
+ 'details' => 'Invalid parameter "/1/history": cannot be empty.'
]
],
[
@@ -276,7 +276,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'history', 'value' => '25y']
]
],
- 'details' => 'Incorrect value for field "history": a time unit is expected.'
+ 'details' => 'Invalid parameter "/1/history": a time unit is expected.'
]
],
[
@@ -294,7 +294,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'trends', 'value' => '']
]
],
- 'details' => 'Incorrect value for field "trends": a time unit is expected.'
+ 'details' => 'Invalid parameter "/1/trends": cannot be empty.'
]
],
[
@@ -312,7 +312,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'trends', 'value' => '86399']
]
],
- 'details' => 'Incorrect value for field "trends": value must be one of 0, 86400-788400000.'
+ 'details' => 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
],
[
@@ -330,7 +330,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'trends', 'value' => '1']
]
],
- 'details' => 'Incorrect value for field "trends": value must be one of 0, 86400-788400000.'
+ 'details' => 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
],
[
@@ -348,7 +348,7 @@ class testMassUpdateItems extends CWebTest{
'input' => ['id' => 'trends', 'value' => '25y']
]
],
- 'details' => 'Incorrect value for field "trends": a time unit is expected.'
+ 'details' => 'Invalid parameter "/1/trends": a time unit is expected.'
]
],
[
@@ -362,7 +362,7 @@ class testMassUpdateItems extends CWebTest{
'Type' => ['id' => 'type', 'value' => 'Zabbix trapper'],
'Allowed hosts' => ['id' => 'trapper_hosts', 'value' => 'Zabbix server']
],
- 'details' => 'Incorrect value for field "trapper_hosts": invalid address range "Zabbix server".'
+ 'details' => 'Invalid parameter "/1/trapper_hosts": invalid address range "Zabbix server".'
]
],
[
@@ -376,7 +376,7 @@ class testMassUpdateItems extends CWebTest{
'Type' => ['id' => 'type', 'value' => 'Zabbix agent'],
'Update interval' => ['Delay' => '']
],
- 'details' => 'Incorrect value for field "delay": invalid delay.'
+ 'details' => 'Invalid parameter "/1/delay": cannot be empty.'
]
],
[
@@ -390,8 +390,7 @@ class testMassUpdateItems extends CWebTest{
'Type' => ['id' => 'type', 'value' => 'Zabbix agent'],
'Update interval' => ['Delay' => '0']
],
- 'details' => 'Item will not be refreshed. Specified update interval requires having at least '.
- 'one either flexible or scheduling interval.'
+ 'details' => 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
]
],
[
@@ -405,8 +404,7 @@ class testMassUpdateItems extends CWebTest{
'Type' => ['id' => 'type', 'value' => 'Zabbix agent'],
'Update interval' => ['Delay' => '86401']
],
- 'details' => 'Item will not be refreshed. Update interval should be between 1s and 1d. '.
- 'Also Scheduled/Flexible intervals can be used.'
+ 'details' => 'Invalid parameter "/1/delay": value must be one of 0-86400.'
]
],
[
@@ -497,7 +495,7 @@ class testMassUpdateItems extends CWebTest{
]
]
],
- 'details' => 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'details' => 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
],
[
@@ -520,7 +518,7 @@ class testMassUpdateItems extends CWebTest{
]
]
],
- 'details' => 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'details' => 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
],
[
@@ -537,7 +535,7 @@ class testMassUpdateItems extends CWebTest{
'Request body type' => ['id' => 'post_type', 'value' => 'JSON data'],
'Request body' => ['id' => 'posts', 'value' => '"request": "active checks", "host": "host"']
],
- 'details' => 'Invalid parameter "posts": JSON is expected.'
+ 'details' => 'Invalid parameter "/1/posts": JSON is expected.'
]
],
[
@@ -554,7 +552,7 @@ class testMassUpdateItems extends CWebTest{
'Request body type' => ['id' => 'post_type', 'value' => 'XML data'],
'Request body' => ['id' => 'posts', 'value' => 'xml version="1.0" encoding="UTF-8"?<zabbix_export></zabbix_export>']
],
- 'details' => 'Invalid parameter "posts": (4) Start tag expected, \'<\' not found [Line: 1 | Column: 1].'
+ 'details' => 'Invalid parameter "/1/posts": (4) Start tag expected, \'<\' not found [Line: 1 | Column: 1].'
]
],
[
@@ -571,7 +569,7 @@ class testMassUpdateItems extends CWebTest{
'Request body type' => ['id' => 'post_type', 'value' => 'XML data'],
'Request body' => ['id' => 'posts', 'value' => '']
],
- 'details' => 'Invalid parameter "posts": XML is expected.'
+ 'details' => 'Invalid parameter "/1/posts": cannot be empty.'
]
],
[
@@ -586,7 +584,7 @@ class testMassUpdateItems extends CWebTest{
'Host interface' => ['id' => 'interface-select', 'value' => '127.0.5.1:10051'],
'URL' => ['id' => 'url', 'value' => '']
],
- 'details' => 'Invalid parameter "/url": cannot be empty.'
+ 'details' => 'Invalid parameter "/1/url": cannot be empty.'
]
],
[
@@ -601,7 +599,7 @@ class testMassUpdateItems extends CWebTest{
'Host interface' => ['id' => 'interface-select', 'value' => '127.0.5.4:10054'],
'JMX endpoint' => ['id' => 'jmx_endpoint', 'value' => '']
],
- 'details' => 'Incorrect value for field "jmx_endpoint": cannot be empty.'
+ 'details' => 'Invalid parameter "/1/jmx_endpoint": cannot be empty.'
]
],
[
@@ -621,7 +619,7 @@ class testMassUpdateItems extends CWebTest{
'User name' => ['id' => 'username', 'value' => 'new_test_name'],
'Password' => ['id' => 'password', 'value' => '']
],
- 'details' => 'Incorrect value for field "username": both username and password should be either present or empty.'
+ 'details' => 'Invalid parameter "/1": both username and password should be either present or empty.'
]
],
[
@@ -641,7 +639,7 @@ class testMassUpdateItems extends CWebTest{
'User name' => ['id' => 'username', 'value' => ''],
'Password' => ['id' => 'password', 'value' => 'new_test_password']
],
- 'details' => 'Incorrect value for field "username": both username and password should be either present or empty.'
+ 'details' => 'Invalid parameter "/1": both username and password should be either present or empty.'
]
],
[
@@ -655,7 +653,7 @@ class testMassUpdateItems extends CWebTest{
'Type' => ['id' => 'type', 'value' => 'SNMP agent'],
'Host interface' => ['id' => 'interface-select', 'value' => '127.0.5.5:10055']
],
- 'details' => 'No SNMP OID specified.',
+ 'details' => 'Invalid parameter "/1/snmp_oid": cannot be empty.',
'interface_text_part' => 'SNMPv3, Context name: zabbix'
]
],
@@ -663,19 +661,6 @@ class testMassUpdateItems extends CWebTest{
[
'expected' => TEST_BAD,
'names' => [
- '1_Item',
- '2_Item'
- ],
- 'change' => [
- 'Type' => ['id' => 'type', 'value' => 'Dependent item']
- ],
- 'details' => 'Incorrect value for field "master_itemid": cannot be empty.'
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'names' => [
'17_Script',
'18_Script'
],
@@ -1126,31 +1111,32 @@ class testMassUpdateItems extends CWebTest{
]
]
],
- [
- [
- 'names' => [
- '1_Item',
- '2_Item'
- ],
- 'change' => [
- 'Type' => ['id' => 'type', 'value' => 'TELNET agent'],
- 'User name' => ['id' => 'username', 'value' => 'telnet_name'],
- 'Password' => ['id' => 'password', 'value' => 'telnet_password']
- ]
- ]
- ],
- [
- [
- 'names' => [
- '1_Item',
- '2_Item'
- ],
- 'change' => [
- 'Type' => ['id' => 'type', 'value' => 'Calculated'],
- 'Type of information' => ['id' => 'value_type', 'value' => 'Numeric (float)']
- ]
- ]
- ],
+ // TODO: uncomment or delete after discussion
+// [
+// [
+// 'names' => [
+// '1_Item',
+// '2_Item'
+// ],
+// 'change' => [
+// 'Type' => ['id' => 'type', 'value' => 'TELNET agent'],
+// 'User name' => ['id' => 'username', 'value' => 'telnet_name'],
+// 'Password' => ['id' => 'password', 'value' => 'telnet_password']
+// ]
+// ]
+// ],
+// [
+// [
+// 'names' => [
+// '1_Item',
+// '2_Item'
+// ],
+// 'change' => [
+// 'Type' => ['id' => 'type', 'value' => 'Calculated'],
+// 'Type of information' => ['id' => 'value_type', 'value' => 'Numeric (float)']
+// ]
+// ]
+// ],
[
[
'names' => [
@@ -1510,7 +1496,7 @@ class testMassUpdateItems extends CWebTest{
'Preprocessing steps' => [
['type' => 'Custom multiplier', 'parameter_1' => 'abc']
],
- 'details' => 'Incorrect value for field "params": a numeric value is expected.'
+ 'details' => 'Invalid parameter "/1/preprocessing/1/params/1": a floating point value is expected.'
]
],
[
@@ -1524,7 +1510,8 @@ class testMassUpdateItems extends CWebTest{
['type' => 'Simple change'],
['type' => 'Simple change']
],
- 'details' => 'Only one change step is allowed.'
+ 'details' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within the '.
+ 'combinations of (type)=((9, 10)).'
]
],
[
@@ -1537,7 +1524,8 @@ class testMassUpdateItems extends CWebTest{
'Preprocessing steps' => [
['type' => 'In range', 'parameter_1' => '8', 'parameter_2' => '-8']
],
- 'details' => 'Incorrect value for field "params": "min" value must be less than or equal to "max" value.'
+ 'details' => 'Invalid parameter "/1/preprocessing/1/params/2": cannot be less than or equal to '.
+ 'the value of parameter "/1/preprocessing/1/params/1".'
]
],
[
@@ -1550,7 +1538,7 @@ class testMassUpdateItems extends CWebTest{
'Preprocessing steps' => [
['type' => 'Check for error using regular expression', 'parameter_1' => 'test']
],
- 'details' => 'Incorrect value for field "params": second parameter is expected.'
+ 'details' => 'Invalid parameter "/1/preprocessing/1/params/2": cannot be empty.'
]
],
[
@@ -1564,7 +1552,8 @@ class testMassUpdateItems extends CWebTest{
['type' => 'Discard unchanged'],
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1']
],
- 'details' => 'Only one throttling step is allowed.'
+ 'details' => 'Invalid parameter "/1/preprocessing/2": only one object can exist within the '.
+ 'combinations of (type)=((19, 20)).'
]
],
[
@@ -1577,7 +1566,7 @@ class testMassUpdateItems extends CWebTest{
'Preprocessing steps' => [
['type' => 'Regular expression']
],
- 'details' => 'Incorrect value for field "params": first parameter is expected.'
+ 'details' => 'Invalid parameter "/1/preprocessing/1/params/1": cannot be empty.'
]
],
[
@@ -1595,7 +1584,7 @@ class testMassUpdateItems extends CWebTest{
'error_handler' => 'Set error to'
]
],
- 'details' => 'Incorrect value for field "error_handler_params": cannot be empty.'
+ 'details' => 'Invalid parameter "/1/preprocessing/1/error_handler_params": cannot be empty.'
]
],
[
diff --git a/ui/tests/selenium/dashboard/testDashboardItemValueWidget.php b/ui/tests/selenium/dashboard/testDashboardItemValueWidget.php
index 025c8314dcb..3a987bf1516 100644
--- a/ui/tests/selenium/dashboard/testDashboardItemValueWidget.php
+++ b/ui/tests/selenium/dashboard/testDashboardItemValueWidget.php
@@ -1350,8 +1350,9 @@ class testDashboardItemValueWidget extends CWebTest {
CDataHelper::addItemData(42244, $index, time() + $index);
$this->page->refresh()->waitUntilReady();
$rgb = implode(', ', sscanf($threshold['color'], "%02x%02x%02x"));
- $this->assertEquals('rgba('.$rgb.', 1)', $dashboard->getWidget($data['fields']['Name'])->getContent()
- ->query('class:dashboard-widget-item')->one()->getCSSValue('background-color')
+
+ $this->assertEquals('rgba('.$rgb.', 1)', $dashboard->getWidget($data['fields']['Name'])
+ ->query('xpath:.//div[contains(@class, "dashboard-widget-item")]/div')->one()->getCSSValue('background-color')
);
$index++;
}
diff --git a/ui/tests/selenium/dashboard/testDashboardPages.php b/ui/tests/selenium/dashboard/testDashboardPages.php
index cc0165bec87..4ccbca0c1cb 100644
--- a/ui/tests/selenium/dashboard/testDashboardPages.php
+++ b/ui/tests/selenium/dashboard/testDashboardPages.php
@@ -456,6 +456,7 @@ class testDashboardPages extends CWebTest {
$dashboard->addPage();
$page_dialog = COverlayDialogElement::find()->waitUntilReady()->one();
$page_dialog->query('name:dashboard_page_properties_form')->asForm()->one()->fill($data['fields'])->submit();
+ $page_dialog->ensureNotPresent();
$dashboard->waitUntilReady();
$title = $data['fields']['Name'];
diff --git a/ui/tests/selenium/dashboard/testDashboardSlaReportWidget.php b/ui/tests/selenium/dashboard/testDashboardSlaReportWidget.php
index 175f4cec5b2..39dfebc40f4 100644
--- a/ui/tests/selenium/dashboard/testDashboardSlaReportWidget.php
+++ b/ui/tests/selenium/dashboard/testDashboardSlaReportWidget.php
@@ -1951,16 +1951,17 @@ class testDashboardSlaReportWidget extends testSlaReport {
]
]
],
+ // Months are excluded as strtotime() calculates month substraction incorrectly on he last days on the month.
[
[
'fields' => [
'SLA' => 'SLA Daily',
- 'From' => 'now-1d-1w-1M-1y',
+ 'From' => 'now-1d-1w-1y',
'Show periods' => 3
],
'reporting_period' => 'Daily',
'equivalent_timestamps' => [
- 'From' => 'today - 1 day - 1 week - 1 month - 1 year'
+ 'From' => 'today - 1 day - 1 week - 1 year'
]
]
],
@@ -2030,16 +2031,17 @@ class testDashboardSlaReportWidget extends testSlaReport {
]
]
],
+ // Months are excluded as strtotime() calculates month substraction incorrectly on he last days on the month.
[
[
'fields' => [
'SLA' => 'SLA Daily',
- 'To' => 'now-1d-1w-1M-1y',
+ 'To' => 'now-1d-1w-1y',
'Show periods' => 3
],
'reporting_period' => 'Daily',
'equivalent_timestamps' => [
- 'To' => 'today - 1 day - 1 week - 1 month - 1 year'
+ 'To' => 'now - 1 day - 1 week - 1 year'
]
]
],
@@ -2284,8 +2286,6 @@ class testDashboardSlaReportWidget extends testSlaReport {
// By default the last 20 periods are displayed.
$show_periods = (array_key_exists('Show periods', $data['fields'])) ? $data['fields']['Show periods'] : 20;
-
-
if (array_key_exists('To', $data['fields'])) {
$to_date = $data['fields']['To'];
}
diff --git a/ui/tests/selenium/dashboard/testDashboardTopHostsWidget.php b/ui/tests/selenium/dashboard/testDashboardTopHostsWidget.php
index 6ec8aee7f49..64f26453c8c 100644
--- a/ui/tests/selenium/dashboard/testDashboardTopHostsWidget.php
+++ b/ui/tests/selenium/dashboard/testDashboardTopHostsWidget.php
@@ -25,7 +25,9 @@ require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
/**
* @dataSource TopHostsWidget
*
- * @backup widget, profiles, dashboard, items
+ * @backup widget, profiles
+ *
+ * @onAfter clearData
*/
class testDashboardTopHostsWidget extends CWebTest {
@@ -1789,7 +1791,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_text'
+ 'Item' => 'top_hosts_trap_text'
]
],
'text' => 'Text for text item'
@@ -1804,7 +1806,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_text',
+ 'Item' => 'top_hosts_trap_text',
'History data' => 'Trends'
]
],
@@ -1820,7 +1822,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_text',
+ 'Item' => 'top_hosts_trap_text',
'Display' => 'Bar'
]
]
@@ -1835,7 +1837,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_text',
+ 'Item' => 'top_hosts_trap_text',
'Display' => 'Indicators'
]
]
@@ -1850,7 +1852,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_text',
+ 'Item' => 'top_hosts_trap_text',
'Aggregation function' => 'max'
]
]
@@ -1865,7 +1867,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_text',
+ 'Item' => 'top_hosts_trap_text',
'Thresholds' => [
[
'threshold' => '10'
@@ -1884,7 +1886,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_log'
+ 'Item' => 'top_hosts_trap_log'
]
],
'text' => 'Logs for text item'
@@ -1899,7 +1901,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_log',
+ 'Item' => 'top_hosts_trap_log',
'History data' => 'Trends'
]
],
@@ -1915,7 +1917,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_log',
+ 'Item' => 'top_hosts_trap_log',
'Display' => 'Bar'
]
]
@@ -1930,7 +1932,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_log',
+ 'Item' => 'top_hosts_trap_log',
'Display' => 'Indicators'
]
]
@@ -1945,7 +1947,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_log',
+ 'Item' => 'top_hosts_trap_log',
'Aggregation function' => 'max'
]
]
@@ -1960,7 +1962,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_log',
+ 'Item' => 'top_hosts_trap_log',
'Thresholds' => [
[
'threshold' => '10'
@@ -1979,7 +1981,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_char'
+ 'Item' => 'top_hosts_trap_char'
]
],
'text' => 'characters_here'
@@ -1994,7 +1996,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_char',
+ 'Item' => 'top_hosts_trap_char',
'History data' => 'Trends'
]
],
@@ -2010,7 +2012,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_char',
+ 'Item' => 'top_hosts_trap_char',
'Display' => 'Bar'
]
]
@@ -2025,7 +2027,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_char',
+ 'Item' => 'top_hosts_trap_char',
'Display' => 'Indicators'
]
]
@@ -2040,7 +2042,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_char',
+ 'Item' => 'top_hosts_trap_char',
'Aggregation function' => 'max'
]
]
@@ -2055,7 +2057,7 @@ class testDashboardTopHostsWidget extends CWebTest {
'column_fields' => [
[
'Data' => 'Item value',
- 'Item' => 'trap_char',
+ 'Item' => 'top_hosts_trap_char',
'Thresholds' => [
[
'threshold' => '10'
@@ -2104,4 +2106,15 @@ class testDashboardTopHostsWidget extends CWebTest {
$dashboard->save();
$this->assertMessage(TEST_GOOD, 'Dashboard updated');
}
+
+ /**
+ * Delete all created data after test.
+ */
+ public static function clearData() {
+ $dashboardids = CDBHelper::getColumn("SELECT * from dashboard where name LIKE 'top_host_%'", 'dashboardid');
+ CDataHelper::call('dashboard.delete', $dashboardids);
+
+ $itemids = CDBHelper::getColumn("SELECT * FROM items WHERE name LIKE 'top_hosts_trap%'", 'itemid');
+ CDataHelper::call('item.delete', $itemids);
+ }
}
diff --git a/ui/tests/selenium/dashboard/testDashboardTriggerOverviewWidget.php b/ui/tests/selenium/dashboard/testDashboardTriggerOverviewWidget.php
index 6b424d030c1..658d2921f36 100644
--- a/ui/tests/selenium/dashboard/testDashboardTriggerOverviewWidget.php
+++ b/ui/tests/selenium/dashboard/testDashboardTriggerOverviewWidget.php
@@ -415,21 +415,6 @@ class testDashboardTriggerOverviewWidget extends CWebTest {
[
[
'fields' => [
- 'Name' => 'Filter triggers by tag with default operator'
- ],
- 'tags' => [
- ['name' => 'server', 'operator' => 'Contains', 'value' => 'sel']
- ],
- 'expected' => [
- 'Host for triggers filtering' => [
- 'Inheritance trigger with tags'
- ]
- ]
- ]
- ],
- [
- [
- 'fields' => [
'Name' => 'Filter triggers by 2 tags with Or operator',
'Tags' => 'Or'
],
@@ -795,7 +780,6 @@ class testDashboardTriggerOverviewWidget extends CWebTest {
$widget_name = (array_key_exists('fields', $data)) ? $data['fields']['Name'] : 'Trigger overview';
$widget = $dashboard->getWidget($widget_name);
- $widget->query('xpath://div[contains(@class, "is-loading")]')->waitUntilNotPresent();
$dashboard->save();
$this->assertMessage(TEST_GOOD, 'Dashboard updated');
diff --git a/ui/tests/selenium/testPageDashboardList.php b/ui/tests/selenium/dashboard/testPageDashboardList.php
index fae8bd0fd72..52b5f5bda5f 100644
--- a/ui/tests/selenium/testPageDashboardList.php
+++ b/ui/tests/selenium/dashboard/testPageDashboardList.php
@@ -18,9 +18,9 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CWebTest.php';
-require_once dirname(__FILE__).'/behaviors/CMessageBehavior.php';
-require_once dirname(__FILE__).'/traits/TableTrait.php';
+require_once dirname(__FILE__).'/../../include/CWebTest.php';
+require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
+require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
* @backup dashboard, dashboard_user, dashboard_usrgrp
diff --git a/ui/tests/selenium/testPageDashboardWidgets.php b/ui/tests/selenium/dashboard/testPageDashboardWidgets.php
index 7be54df9925..2862cc86117 100644
--- a/ui/tests/selenium/testPageDashboardWidgets.php
+++ b/ui/tests/selenium/dashboard/testPageDashboardWidgets.php
@@ -18,8 +18,7 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-
-require_once dirname(__FILE__) . '/../include/CWebTest.php';
+require_once dirname(__FILE__) . '/../../include/CWebTest.php';
/**
* @backup dashboard, profiles
@@ -106,21 +105,22 @@ class testPageDashboardWidgets extends CWebTest {
$default_form->fill(['Type' => 'Clock']);
$default_form->waitUntilReloaded();
$overlay->close();
- // Check that widget type is remembered as Clock.
- $this->checkLastSelectedWidgetType('Clock', 'clock');
+ // Check that widget type is not remembered without submitting the form.
+ $this->checkLastSelectedWidgetType();
// Save edit widget form without changing widget type.
$sys_info_form = $dashboard->getWidget('System information')->edit();
$this->assertEquals('System information', $sys_info_form->getField('Type')->getValue());
$sys_info_form->submit();
$this->page->waitUntilReady();
- // Check that widget type is still remembered as Clock.
- $this->checkLastSelectedWidgetType('Clock', 'clock');
+ // Check that widget type is still unchanged.
+ $this->checkLastSelectedWidgetType();
// Opening edit widget form and change widget type.
$change_form = $dashboard->getWidget('System information')->edit();
$change_form->fill(['Type' => 'Data overview']);
- $overlay->close();
+ $change_form->waitUntilReloaded();
+ $change_form->submit();
// Check that widget type inherited from previous widget.
$this->checkLastSelectedWidgetType('Data overview', 'dataover');
@@ -187,7 +187,7 @@ class testPageDashboardWidgets extends CWebTest {
// Change dashboard owner.
$owner = $configuration->getField('Owner');
$owner->clear();
- $owner->select('test-user');
+ $owner->fill('test-user');
// Change dashboard name.
$configuration->getField('Name')->clear()->type('Dashboard create test');
$configuration->submit();
diff --git a/ui/tests/selenium/data/data_test.sql b/ui/tests/selenium/data/data_test.sql
index a7b29c76302..3f583a56344 100644
--- a/ui/tests/selenium/data/data_test.sql
+++ b/ui/tests/selenium/data/data_test.sql
@@ -511,18 +511,18 @@ INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params,
INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15082, 15001, 0, 'testInheritanceDiscoveryRule5', 'discovery-rule-inheritance5', 3600, 4, '', '', 1, 15000, 15081, '', '');
-- testInheritanceItemPrototype.SimpleUpdate and testInheritanceItemPrototype.SimpleCreate
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15021, 15000, 0, 'itemDiscovery' , 'item-discovery-prototype', '30s', 3, 1, '', '', 2, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15022, 15000, 0, 'testInheritanceItemPrototype1', 'item-prototype-test1' , '30s', 3, 1, '', '', 2, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15023, 15000, 0, 'testInheritanceItemPrototype2', 'item-prototype-test2' , '30s', 3, 1, '', '', 2, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15024, 15000, 0, 'testInheritanceItemPrototype3', 'item-prototype-test3' , '30s', 3, 1, '', '', 2, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15025, 15000, 0, 'testInheritanceItemPrototype4', 'item-prototype-test4' , '30s', 3, 1, '', '', 2, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, posts, headers) VALUES (15095, 15000, 0, 'testInheritanceItemPrototypePreprocessing', 'item-prototype-preprocessing' , 30, 3,'', '', 2, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15026, 15001, 0, 'itemDiscovery' , 'item-discovery-prototype', '30s', 3, '', '', 2, 15000, 15021, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15027, 15001, 0, 'testInheritanceItemPrototype1', 'item-prototype-test1' , '30s', 3, '', '', 2, 15000, 15022, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15028, 15001, 0, 'testInheritanceItemPrototype2', 'item-prototype-test2' , '30s', 3, '', '', 2, 15000, 15023, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15029, 15001, 0, 'testInheritanceItemPrototype3', 'item-prototype-test3' , '30s', 3, '', '', 2, 15000, 15024, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15030, 15001, 0, 'testInheritanceItemPrototype4', 'item-prototype-test4' , '30s', 3, '', '', 2, 15000, 15025, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15096, 15001, 0, 'testInheritanceItemPrototypePreprocessing', 'item-prototype-preprocessing' , '30s', 3, '', '', 2, 15000, 15095, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15021, 15000, 0, 'itemDiscovery' , 'item-discovery-prototype[{#KEY}]', '30s', 3, 1, '', '', 2, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15022, 15000, 0, 'testInheritanceItemPrototype1', 'item-prototype-test1[{#KEY}]' , '30s', 3, 1, '', '', 2, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15023, 15000, 0, 'testInheritanceItemPrototype2', 'item-prototype-test2[{#KEY}]' , '30s', 3, 1, '', '', 2, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15024, 15000, 0, 'testInheritanceItemPrototype3', 'item-prototype-test3[{#KEY}]' , '30s', 3, 1, '', '', 2, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, formula, params, description, flags, posts, headers) VALUES (15025, 15000, 0, 'testInheritanceItemPrototype4', 'item-prototype-test4[{#KEY}]' , '30s', 3, 1, '', '', 2, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, posts, headers) VALUES (15095, 15000, 0, 'testInheritanceItemPrototypePreprocessing', 'item-prototype-preprocessing[{#KEY}]' , 30, 3,'', '', 2, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15026, 15001, 0, 'itemDiscovery' , 'item-discovery-prototype[{#KEY}]', '30s', 3, '', '', 2, 15000, 15021, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15027, 15001, 0, 'testInheritanceItemPrototype1', 'item-prototype-test1[{#KEY}]' , '30s', 3, '', '', 2, 15000, 15022, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15028, 15001, 0, 'testInheritanceItemPrototype2', 'item-prototype-test2[{#KEY}]' , '30s', 3, '', '', 2, 15000, 15023, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15029, 15001, 0, 'testInheritanceItemPrototype3', 'item-prototype-test3[{#KEY}]' , '30s', 3, '', '', 2, 15000, 15024, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15030, 15001, 0, 'testInheritanceItemPrototype4', 'item-prototype-test4[{#KEY}]' , '30s', 3, '', '', 2, 15000, 15025, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15096, 15001, 0, 'testInheritanceItemPrototypePreprocessing', 'item-prototype-preprocessing[{#KEY}]', '30s', 3, '', '', 2, 15000, 15095, '', '');
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (15021, 15021, 15011);
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (15022, 15022, 15011);
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (15023, 15023, 15011);
@@ -536,8 +536,8 @@ INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (1503
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (15031, 15095, 15011);
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (15032, 15096, 15016);
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, posts, headers) VALUES (15083, 15002, 0, 'testInheritanceItemPrototype5', 'item-prototype-test5' , '30s', 3, '', '', 2, '', '');
-INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15084, 15001, 0, 'testInheritanceItemPrototype5', 'item-prototype-test5' , '30s', 3, '', '', 2, 15000, 15083, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, posts, headers) VALUES (15083, 15002, 0, 'testInheritanceItemPrototype5', 'item-prototype-test5[{#KEY}]', '30s', 3, '', '', 2, '', '');
+INSERT INTO items (itemid, hostid, type, name, key_, delay, value_type, params, description, flags, interfaceid, templateid, posts, headers) VALUES (15084, 15001, 0, 'testInheritanceItemPrototype5', 'item-prototype-test5[{#KEY}]', '30s', 3, '', '', 2, 15000, 15083, '', '');
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (15083, 15083, 15081);
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (15084, 15084, 15082);
@@ -797,17 +797,17 @@ INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params,
INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormDiscoveryRule', 'discovery-rule-form', 40001, 4, 133800, 1, 50, '', '', 40011, '', '');
-- testFormItemPrototype.SimpleUpdate
-INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype1', 'item-prototype-form1', 40001, 3, 23800, 2, 5, '', '', 40011, '', '');
+INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype1', 'item-prototype-form1[{#KEY}]', 40001, 3, 23800, 2, 5, '', '', 40011, '', '');
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (501, 23800, 133800);
-INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype2', 'item-prototype-form2', 40001, 3, 23801, 2, 5, '', '', 40011, '', '');
+INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype2', 'item-prototype-form2[{#KEY}]', 40001, 3, 23801, 2, 5, '', '', 40011, '', '');
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (502, 23801, 133800);
-INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype3', 'item-prototype-form3', 40001, 3, 23802, 2, 5, '', '', 40011, '', '');
+INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype3', 'item-prototype-form3[{#KEY}]', 40001, 3, 23802, 2, 5, '', '', 40011, '', '');
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (503, 23802, 133800);
-INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype4', 'item-prototype-form4', 40001, 3, 23803, 2, 5, '', '', 40011, '', '');
+INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemPrototype4', 'item-prototype-form4[{#KEY}]', 40001, 3, 23803, 2, 5, '', '', 40011, '', '');
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (504, 23803, 133800);
-- testFormTriggerPrototype.SimpleCreate
-INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemReuse', 'item-prototype-reuse', 40001, 3, 23804, 2, 5, '', '', 40011, '', '');
+INSERT INTO items (name, key_, hostid, value_type, itemid, flags, delay, params, description, interfaceid, posts, headers) VALUES ('testFormItemReuse', 'item-prototype-reuse[{#KEY}]', 40001, 3, 23804, 2, 5, '', '', 40011, '', '');
INSERT INTO item_discovery (itemdiscoveryid, itemid, parent_itemid) values (505, 23804, 133800);
-- testFormTriggerPrototype.SimpleUpdate
@@ -904,51 +904,51 @@ INSERT INTO hosts_groups (hostgroupid, hostid, groupid) VALUES (50002, 50001, 4)
INSERT INTO hosts_templates (hosttemplateid, hostid, templateid) VALUES (50000, 50001, 50002);
INSERT INTO hosts_templates (hosttemplateid, hostid, templateid) VALUES (50002, 50000, 50002);
INSERT INTO interface (type, ip, dns, useip, port, main, hostid, interfaceid) VALUES (1, '127.0.7.1', '', '1', '10071', '1', 50001, 50015);
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400080,9,50000,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 First,,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400090,9,50000,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 First]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400100,9,50000,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 First]','60s','30d','90d',0,1,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400110,9,50000,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 First,Web ZBX6663 First Step,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400120,9,50000,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 First,Web ZBX6663 First Step,resp]','60s','30d','90d',0,0,'','s','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400130,9,50000,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 First,Web ZBX6663 First Step]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400140,9,50002,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 Second,,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400150,9,50002,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 Second]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400160,9,50002,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 Second]','60s','30d','90d',0,1,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400170,9,50002,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 Second,Web ZBX6663 Second Step,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400180,9,50002,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 Second,Web ZBX6663 Second Step,resp]','60s','30d','90d',0,0,'','s','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400190,9,50002,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 Second,Web ZBX6663 Second Step]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400200,9,50001,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 Second,,bps]','60s','30d','90d',0,0,'','Bps','',400140,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400210,9,50001,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 Second]','60s','30d','90d',0,3,'','','',400150,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400220,9,50001,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 Second]','60s','30d','90d',0,1,'','','',400160,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400230,9,50001,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 Second,Web ZBX6663 Second Step,bps]','60s','30d','90d',0,0,'','Bps','',400170,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400240,9,50001,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 Second,Web ZBX6663 Second Step,resp]','60s','30d','90d',0,0,'','s','',400180,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400250,9,50001,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 Second,Web ZBX6663 Second Step]','60s','30d','90d',0,3,'','','',400190,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400260,9,50000,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 Second,,bps]','60s','30d','90d',0,0,'','Bps','',400140,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400270,9,50000,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 Second]','60s','30d','90d',0,3,'','','',0400150,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400280,9,50000,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 Second]','60s','30d','90d',0,1,'','','',400160,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400290,9,50000,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 Second,Web ZBX6663 Second Step,bps]','60s','30d','90d',0,0,'','Bps','',400170,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400300,9,50000,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 Second,Web ZBX6663 Second Step,resp]','60s','30d','90d',0,0,'','s','',400180,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400310,9,50000,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 Second,Web ZBX6663 Second Step]','60s','30d','90d',0,3,'','','',400190,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400320,9,50001,'Download speed for scenario "$1".','web.test.in[Web ZBX6663,,bps]','60s','30s','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400330,9,50001,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400340,9,50001,'Last error message of scenario "$1".','web.test.error[Web ZBX6663]','60s','30d','90d',0,1,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400350,9,50001,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663,Web ZBX6663 Step,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400360,9,50001,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663,Web ZBX6663 Step,resp]','60s','30d','90d',0,0,'','s','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400370,9,50001,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663,Web ZBX6663 Step]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400380,0,50002,'Item ZBX6663 Second','item-ZBX6663-second','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400390,0,50001,'Item ZBX6663 Second','item-ZBX6663-second','30s','90d','365d',0,3,'','','',400380,NULL,'','',0,'','','','',0,50015,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400400,0,50000,'Item ZBX6663 Second','item-ZBX6663-second','30s','90d','365d',0,3,'','','',400380,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400410,0,50000,'Item ZBX6663 First','item-ZBX6663-first','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400420,0,50001,'Item ZBX6663','item-ZBX6663','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,50015,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400430,0,50001,'DiscoveryRule ZBX6663','drule-zbx6663','30s','90d','365d',0,4,'','','',NULL,NULL,'','',0,'','','','',1,50015,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400450,0,50002,'DiscoveryRule ZBX6663 Second','drule-ZBX6663-second','30s','90d','365d',0,4,'','','',NULL,NULL,'','',0,'','','','',1,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400460,0,50001,'DiscoveryRule ZBX6663 Second','drule-ZBX6663-second','30s','90d','365d',0,4,'','','',400450,NULL,'','',0,'','','','',1,50015,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400470,0,50000,'DiscoveryRule ZBX6663 Second','drule-ZBX6663-second','30s','90d','365d',0,4,'','','',400450,NULL,'','',0,'','','','',1,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400480,0,50002,'ItemProto ZBX6663 Second','item-proto-zbx6663-second','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',2,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400490,0,50001,'ItemProto ZBX6663 Second','item-proto-zbx6663-second','30s','90d','365d',0,3,'','','',400480,NULL,'','',0,'','','','',2,50015,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400500,0,50000,'ItemProto ZBX6663 Second','item-proto-zbx6663-second','30s','90d','365d',0,3,'','','',400480,NULL,'','',0,'','','','',2,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400510,0,50000,'DiscoveryRule ZBX6663 First','drule-zbx6663-first','30s','90d','365d',0,4,'','','',NULL,NULL,'','',0,'','','','',1,NULL,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400520,0,50001,'ItemProto ZBX6663 HSecond','item-proto-zbx6663-hsecond','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',2,50015,'',0,'30','','');
-INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400540,0,50000,'ItemProto ZBX6663 TSecond','item-proto-zbx6663-tsecond','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',2,NULL,'',0,'30','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400080,9,50000,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 First,,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400090,9,50000,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 First]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400100,9,50000,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 First]','60s','30d','90d',0,1,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400110,9,50000,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 First,Web ZBX6663 First Step,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400120,9,50000,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 First,Web ZBX6663 First Step,resp]','60s','30d','90d',0,0,'','s','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400130,9,50000,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 First,Web ZBX6663 First Step]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400140,9,50002,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 Second,,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400150,9,50002,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 Second]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400160,9,50002,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 Second]','60s','30d','90d',0,1,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400170,9,50002,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 Second,Web ZBX6663 Second Step,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400180,9,50002,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 Second,Web ZBX6663 Second Step,resp]','60s','30d','90d',0,0,'','s','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400190,9,50002,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 Second,Web ZBX6663 Second Step]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400200,9,50001,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 Second,,bps]','60s','30d','90d',0,0,'','Bps','',400140,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400210,9,50001,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 Second]','60s','30d','90d',0,3,'','','',400150,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400220,9,50001,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 Second]','60s','30d','90d',0,1,'','','',400160,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400230,9,50001,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 Second,Web ZBX6663 Second Step,bps]','60s','30d','90d',0,0,'','Bps','',400170,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400240,9,50001,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 Second,Web ZBX6663 Second Step,resp]','60s','30d','90d',0,0,'','s','',400180,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400250,9,50001,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 Second,Web ZBX6663 Second Step]','60s','30d','90d',0,3,'','','',400190,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400260,9,50000,'Download speed for scenario "$1".','web.test.in[Web ZBX6663 Second,,bps]','60s','30d','90d',0,0,'','Bps','',400140,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400270,9,50000,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663 Second]','60s','30d','90d',0,3,'','','',0400150,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400280,9,50000,'Last error message of scenario "$1".','web.test.error[Web ZBX6663 Second]','60s','30d','90d',0,1,'','','',400160,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400290,9,50000,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663 Second,Web ZBX6663 Second Step,bps]','60s','30d','90d',0,0,'','Bps','',400170,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400300,9,50000,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663 Second,Web ZBX6663 Second Step,resp]','60s','30d','90d',0,0,'','s','',400180,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400310,9,50000,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663 Second,Web ZBX6663 Second Step]','60s','30d','90d',0,3,'','','',400190,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400320,9,50001,'Download speed for scenario "$1".','web.test.in[Web ZBX6663,,bps]','60s','30s','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400330,9,50001,'Failed step of scenario "$1".','web.test.fail[Web ZBX6663]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400340,9,50001,'Last error message of scenario "$1".','web.test.error[Web ZBX6663]','60s','30d','90d',0,1,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400350,9,50001,'Download speed for step "$2" of scenario "$1".','web.test.in[Web ZBX6663,Web ZBX6663 Step,bps]','60s','30d','90d',0,0,'','Bps','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400360,9,50001,'Response time for step "$2" of scenario "$1".','web.test.time[Web ZBX6663,Web ZBX6663 Step,resp]','60s','30d','90d',0,0,'','s','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400370,9,50001,'Response code for step "$2" of scenario "$1".','web.test.rspcode[Web ZBX6663,Web ZBX6663 Step]','60s','30d','90d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400380,0,50002,'Item ZBX6663 Second','item-ZBX6663-second','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400390,0,50001,'Item ZBX6663 Second','item-ZBX6663-second','30s','90d','365d',0,3,'','','',400380,NULL,'','',0,'','','','',0,50015,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400400,0,50000,'Item ZBX6663 Second','item-ZBX6663-second','30s','90d','365d',0,3,'','','',400380,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400410,0,50000,'Item ZBX6663 First','item-ZBX6663-first','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400420,0,50001,'Item ZBX6663','item-ZBX6663','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',0,50015,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400430,0,50001,'DiscoveryRule ZBX6663','drule-zbx6663','30s','90d','365d',0,4,'','','',NULL,NULL,'','',0,'','','','',1,50015,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400450,0,50002,'DiscoveryRule ZBX6663 Second','drule-ZBX6663-second','30s','90d','365d',0,4,'','','',NULL,NULL,'','',0,'','','','',1,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400460,0,50001,'DiscoveryRule ZBX6663 Second','drule-ZBX6663-second','30s','90d','365d',0,4,'','','',400450,NULL,'','',0,'','','','',1,50015,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400470,0,50000,'DiscoveryRule ZBX6663 Second','drule-ZBX6663-second','30s','90d','365d',0,4,'','','',400450,NULL,'','',0,'','','','',1,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400480,0,50002,'ItemProto ZBX6663 Second','item-proto-zbx6663-second[{#KEY}]','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',2,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400490,0,50001,'ItemProto ZBX6663 Second','item-proto-zbx6663-second[{#KEY}]','30s','90d','365d',0,3,'','','',400480,NULL,'','',0,'','','','',2,50015,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400500,0,50000,'ItemProto ZBX6663 Second','item-proto-zbx6663-second[{#KEY}]','30s','90d','365d',0,3,'','','',400480,NULL,'','',0,'','','','',2,NULL,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400510,0,50000,'DiscoveryRule ZBX6663 First','drule-zbx6663-first','30s','90d','365d',0,4,'','','',NULL,NULL,'','',0,'','','','',1,NULL,'',0,'3600','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400520,0,50001,'ItemProto ZBX6663 HSecond','item-proto-zbx6663-hsecond[{#KEY}]','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',2,50015,'',0,'30d','','');
+INSERT INTO items (itemid,type,hostid,name,key_,delay,history,trends,status,value_type,trapper_hosts,units,logtimefmt,templateid,valuemapid,params,ipmi_sensor,authtype,username,password,publickey,privatekey,flags,interfaceid,description,inventory_link,lifetime,posts,headers) VALUES (400540,0,50000,'ItemProto ZBX6663 TSecond','item-proto-zbx6663-tsecond[{#KEY}]','30s','90d','365d',0,3,'','','',NULL,NULL,'','',0,'','','','',2,NULL,'',0,'30d','','');
INSERT INTO item_discovery (itemdiscoveryid,itemid,parent_itemid,key_,lastcheck,ts_delete) VALUES (507,400480,400450,'',0,0);
INSERT INTO item_discovery (itemdiscoveryid,itemid,parent_itemid,key_,lastcheck,ts_delete) VALUES (508,400490,400460,'',0,0);
INSERT INTO item_discovery (itemdiscoveryid,itemid,parent_itemid,key_,lastcheck,ts_delete) VALUES (509,400500,400470,'',0,0);
@@ -1004,21 +1004,37 @@ INSERT INTO httpstep (httpstepid, httptestid, name, no, url, timeout, posts, req
INSERT INTO httpstep (httpstepid, httptestid, name, no, url, timeout, posts, required, status_codes) VALUES (100, 100, 'Web ZBX6663 Second Step', 1, 'Web ZBX6663 Second Url', 15, '', '', '');
INSERT INTO httpstep (httpstepid, httptestid, name, no, url, timeout, posts, required, status_codes) VALUES (101, 101, 'Web ZBX6663 Second Step', 1, 'Web ZBX6663 Second Url', 15, '', '', '');
INSERT INTO httpstep (httpstepid, httptestid, name, no, url, timeout, posts, required, status_codes) VALUES (102, 102, 'Web ZBX6663 Step', 1, 'Web ZBX6663 Url', 15, '', '', '');
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (922,98,40008,2);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (923,98,40009,3);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (924,98,40010,4);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (925,99,40014,2);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (926,99,40015,3);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (927,99,40016,4);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (928,100,40020,2);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (929,100,40021,3);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (930,100,40022,4);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (931,101,40026,2);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (932,101,40027,3);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (933,101,40028,4);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (934,102,40032,2);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (935,102,40033,3);
-INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (936,102,40034,4);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (922,98,400080,2);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (923,98,400090,3);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (924,98,400100,4);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (925,99,400140,2);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (926,99,400150,3);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (927,99,400160,4);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (928,100,400200,2);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (929,100,400210,3);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (930,100,400220,4);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (931,101,400260,2);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (932,101,400270,3);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (933,101,400280,4);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (934,102,400320,2);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (935,102,400330,3);
+INSERT INTO httptestitem (httptestitemid,httptestid,itemid,type) VALUES (936,102,400340,4);
+
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (922,98,400110,0);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (923,98,400120,1);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (924,98,400130,2);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (925,99,400170,0);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (926,99,400180,1);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (927,99,400190,2);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (928,100,400230,0);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (929,100,400240,1);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (930,100,400250,2);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (931,101,400290,0);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (932,101,400300,1);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (933,101,400310,2);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (934,102,400350,0);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (935,102,400360,1);
+INSERT INTO httpstepitem (httpstepitemid,httpstepid,itemid,type) VALUES (936,102,400370,2);
-- testZBX6648.eventsFilter
INSERT INTO hstgrp (groupid,name,type) VALUES (50000,'ZBX6648 Group No Hosts',0);
diff --git a/ui/tests/selenium/data/sources/CopyWidgetsDashboards.php b/ui/tests/selenium/data/sources/CopyWidgetsDashboards.php
index 8d7d016f864..4aa259216e7 100644
--- a/ui/tests/selenium/data/sources/CopyWidgetsDashboards.php
+++ b/ui/tests/selenium/data/sources/CopyWidgetsDashboards.php
@@ -170,7 +170,7 @@ class CopyWidgetsDashboards {
]
],
[
- 'name' => 'Test copy Favourite graphs',
+ 'name' => 'Test copy Favorite graphs',
'type' => 'favgraphs',
'x' => 20,
'y' => 7,
@@ -186,7 +186,7 @@ class CopyWidgetsDashboards {
]
],
[
- 'name' => 'Test copy Favourite maps',
+ 'name' => 'Test copy Favorite maps',
'type' => 'favmaps',
'x' => 14,
'y' => 10,
diff --git a/ui/tests/selenium/data/sources/DiscoveredHosts.php b/ui/tests/selenium/data/sources/DiscoveredHosts.php
index a50e6fedb54..fe14fa83cd7 100644
--- a/ui/tests/selenium/data/sources/DiscoveredHosts.php
+++ b/ui/tests/selenium/data/sources/DiscoveredHosts.php
@@ -42,10 +42,18 @@ class DiscoveredHosts {
* @return array
*/
public static function load() {
+ // Create hostgroup for discovered host test.
+ $hostgroups = CDataHelper::call('hostgroup.create', [
+ [
+ 'name' => 'Group for discovered host test'
+ ]
+ ]);
+ $hostgroupid = $hostgroups['groupids'][0];
+
$hosts = CDataHelper::call('host.create', [
'host' => 'Test of discovered host',
'groups' => [
- ['groupid' => 4]
+ ['groupid' => $hostgroupid]
],
'interfaces' => [
'type'=> 1,
@@ -76,7 +84,7 @@ class DiscoveredHosts {
$host_prototypes = CDataHelper::call('hostprototype.create', [
'host' => 'Host created from host prototype {#KEY}',
'ruleid' => $lldid,
- 'groupLinks' => [['groupid' => 4]],
+ 'groupLinks' => [['groupid' => $hostgroupid]],
'tags' => [
'tag' => 'prototype',
'value' => 'true'
@@ -102,7 +110,7 @@ class DiscoveredHosts {
zbx_dbstr(self::DISCOVERED_INTERFACEID).",".zbx_dbstr(self::DISCOVERED_HOSTID).", 1, 1, 1, '127.0.0.1', '', '10050')"
);
DBexecute("INSERT INTO hosts_groups (hostgroupid, hostid, groupid) VALUES (".zbx_dbstr(self::DISCOVERED_HOST_GROUPID).
- ", ".zbx_dbstr(self::DISCOVERED_HOSTID).", 4)"
+ ", ".zbx_dbstr(self::DISCOVERED_HOSTID).", ".$hostgroupid.")"
);
DBexecute("INSERT INTO hosts_groups (hostgroupid, hostid, groupid) VALUES (".zbx_dbstr(self::DISCOVERED_HOST_GROUPID2).
", ".zbx_dbstr(self::DISCOVERED_HOSTID2).", 4)"
diff --git a/ui/tests/selenium/data/sources/TopHostsWidget.php b/ui/tests/selenium/data/sources/TopHostsWidget.php
index 7c855522401..6d6fa221121 100644
--- a/ui/tests/selenium/data/sources/TopHostsWidget.php
+++ b/ui/tests/selenium/data/sources/TopHostsWidget.php
@@ -37,22 +37,22 @@ class TopHostsWidget {
// Create items with value type - text, log, character.
CDataHelper::call('item.create', [
[
- 'name' => 'trap_text',
- 'key_' => 'trap_text',
+ 'name' => 'top_hosts_trap_text',
+ 'key_' => 'top_hosts_trap_text',
'hostid' => 10084,
'type' => 2,
'value_type' => 4
],
[
- 'name' => 'trap_log',
- 'key_' => 'trap_log',
+ 'name' => 'top_hosts_trap_log',
+ 'key_' => 'top_hosts_trap_log',
'hostid' => 10084,
'type' => 2,
'value_type' => 2
],
[
- 'name' => 'trap_char',
- 'key_' => 'trap_char',
+ 'name' => 'top_hosts_trap_char',
+ 'key_' => 'top_hosts_trap_char',
'hostid' => 10084,
'type' => 2,
'value_type' => 1
@@ -63,9 +63,9 @@ class TopHostsWidget {
// Add value to item displayed in Top Hosts widget.
CDataHelper::addItemData(99086, 1000);
- CDataHelper::addItemData(self::$itemids['trap_text'], 'Text for text item');
- CDataHelper::addItemData(self::$itemids['trap_log'], 'Logs for text item');
- CDataHelper::addItemData(self::$itemids['trap_char'], 'characters_here');
+ CDataHelper::addItemData(self::$itemids['top_hosts_trap_text'], 'Text for text item');
+ CDataHelper::addItemData(self::$itemids['top_hosts_trap_log'], 'Logs for text item');
+ CDataHelper::addItemData(self::$itemids['top_hosts_trap_char'], 'characters_here');
// Create dashboards for Top host widget testing.
CDataHelper::call('dashboard.create', [
@@ -129,7 +129,7 @@ class TopHostsWidget {
[
'type' => 0,
'name' => 'column',
- 'value' => 0
+ 'value' => 1
],
[
'type' => 1,
diff --git a/ui/tests/selenium/graphs/testFormGraph.php b/ui/tests/selenium/graphs/testFormGraph.php
new file mode 100644
index 00000000000..8c57d3dc884
--- /dev/null
+++ b/ui/tests/selenium/graphs/testFormGraph.php
@@ -0,0 +1,572 @@
+<?php
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+require_once dirname(__FILE__).'/../common/testFormGraphs.php';
+
+/**
+ * @backup graphs
+ *
+ * @onBefore prepareGraphsData
+ *
+ * @onAfter clearData
+ */
+class testFormGraph extends testFormGraphs {
+
+ protected $url = 'graphs.php?filter_set=1&filter_hostids%5B0%5D='.self::HOSTID.'&context=host';
+
+ public function prepareGraphsData() {
+ self::$update_graph = 'Graph for update';
+
+ // Create items on given host.
+ $items_data = [];
+ foreach (self::$items['items'] as $name => $fields) {
+ $items_data[] = [
+ 'hostid' => self::HOSTID,
+ 'name' => $name,
+ 'key_' => $name,
+ 'type' => ITEM_TYPE_TRAPPER,
+ 'value_type' => $fields['value_type']
+ ];
+ }
+
+ $items = CDataHelper::call('item.create', $items_data);
+ $this->assertArrayHasKey('itemids', $items);
+ $itemids = CDataHelper::getIds('name');
+
+ foreach (['int', 'float', 'text', 'log'] as $suffix) {
+ $field = 'graph_trap_'.$suffix;
+ self::$items[$field]['itemid'] = $itemids[$field];
+ }
+
+ // Create graphs with previously created items.
+ $prepared_graphs = [
+ [
+ 'name' => 'Graph for update',
+ 'itemid' => self::$items['graph_trap_int']['itemid']
+ ],
+ [
+ 'name' => 'Graph for delete',
+ 'itemid' => self::$items['graph_trap_float']['itemid']
+ ],
+ [
+ 'name' => 'Duplicated graph',
+ 'itemid' => self::$items['graph_trap_float']['itemid']
+ ],
+ [
+ 'name' => 'Graph for clone',
+ 'itemid' => self::$items['graph_trap_int']['itemid']
+ ],
+ [
+ 'name' => 'Graph for items change',
+ 'itemid' => self::$items['graph_trap_int']['itemid']
+ ]
+ ];
+
+ $graphs_data = [];
+ foreach ($prepared_graphs as $graph) {
+ $graphs_data[] = [
+ 'name' => $graph['name'],
+ 'width' => 850,
+ 'height' => 335,
+ 'gitems' => [
+ [
+ 'itemid' => $graph['itemid'],
+ 'color'=> 'FDD835'
+ ]
+ ]
+ ];
+ }
+
+ CDataHelper::call('graph.create', $graphs_data);
+ }
+
+ /**
+ * @dataProvider getLayoutData
+ */
+ public function testFormGraph_Layout($data) {
+ $this->checkGraphFormLayout($data);
+ }
+
+ public function getGraphData() {
+ return [
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Empty color'
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem',
+ 'color' => ''
+ ]
+ ],
+ 'details' => [
+ 'Empty color.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Duplicated graph'
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem'
+ ]
+ ],
+ 'details' => [
+ 'Graph with name "Duplicated graph" already exists in graphs or graph prototypes.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Exploded graph duplicated Graph sum type',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Exploded'),
+ 'Show legend' => false,
+ '3D view' => true
+ ],
+ 'items' => [
+ [
+ 'item' => 'Response code for step "testFormWeb1" of scenario "testFormWeb1".',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb2" of scenario "testFormWeb2".',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'avg'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb3" of scenario "testFormWeb3".',
+ 'color'=> 'FFA001',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'last'
+ ]
+ ]
+ ],
+ 'details' => [
+ 'Cannot add more than one item with type "Graph sum" on graph "Exploded graph duplicated Graph sum type".'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Max equals min value'.($this->prototype ? ' {#KEY}' : NULL),
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 0.1,
+ 'id:yaxismax' => 0.1
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem'
+ ]
+ ],
+ 'details' => [
+ 'Y axis MAX value must be greater than Y axis MIN value.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Max less than min'.($this->prototype ? ' {#KEY}' : NULL),
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 0.2,
+ 'id:yaxismax' => 0.1
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem'
+ ]
+ ],
+ 'details' => [
+ 'Y axis MAX value must be greater than Y axis MIN value.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Normal graph items in Y axis values',
+ 'Width' => 65535,
+ 'Height' => 65535,
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Normal'),
+ 'Show legend' => false,
+ 'Show working time' => false,
+ 'Show triggers' => false,
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => 5.5,
+ 'id:percent_right' => 99.9,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item')
+ ],
+ 'yaxis_items' => [
+ 'min' => 'Failed step of scenario "testFormWeb1".',
+ 'max' => 'Download speed for scenario "testFormWeb1".'
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem',
+ 'color'=> 'BBDEFB',
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'drawtype' => 'Bold line',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'item' => 'testFormItem2',
+ 'color'=> 'FBC02D',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Filled region',
+ 'yaxisside' => 'Left'
+ ]
+ ],
+ [
+ 'item' => 'testFormItem3',
+ 'color'=> '7B1FA2',
+ 'functions' => [
+ 'calc_fnc' => 'max',
+ 'drawtype' => 'Dot',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'item' => 'testFormItem3',
+ 'color'=> 'FFE082',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Dashed line',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'item' => 'testFormItem4',
+ 'color'=> '7F3700',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Gradient line',
+ 'yaxisside' => 'Left'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Stacked graph fixed Y axis values',
+ 'Width' => 20,
+ 'Height' => 20,
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Stacked'),
+ 'Show legend' => true,
+ 'Show working time' => true,
+ 'Show triggers' => true,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 0.1,
+ 'id:yaxismax' => 0.99
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem',
+ 'color'=> '00897B',
+ 'functions' => [
+ 'calc_fnc' => 'max',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'item' => 'testFormItem',
+ 'color'=> 'C3C3C3',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'yaxisside' => 'Left'
+ ]
+ ],
+ [
+ 'item' => 'testFormItem',
+ 'color'=> '00897B',
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'yaxisside' => 'Right'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Pie graph 3D false',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Pie'),
+ 'Show legend' => true,
+ '3D view' => false
+ ],
+ 'items' => [
+ [
+ 'item' => 'Failed step of scenario "testFormWeb1".',
+ 'color'=> 'D2D2D2',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'item' => 'Failed step of scenario "testFormWeb2".',
+ 'color'=> 'C0CA33',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'avg'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Pie graph 3D true',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Pie'),
+ 'Show legend' => false,
+ '3D view' => true
+ ],
+ 'items' => [
+ [
+ 'item' => 'Failed step of scenario "testFormWeb3".',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'max'
+ ]
+ ],
+ [
+ 'item' => 'Failed step of scenario "testFormWeb4".',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'last'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Exploded graph 3D true',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Exploded'),
+ 'Show legend' => false,
+ '3D view' => true
+ ],
+ 'items' => [
+ [
+ 'item' => 'Response code for step "testFormWeb1" of scenario "testFormWeb1".',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb2" of scenario "testFormWeb2".',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'avg'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Exploded graph 3D false',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Exploded'),
+ 'Show legend' => true,
+ '3D view' => false
+ ],
+ 'items' => [
+ [
+ 'item' => 'Response code for step "testFormWeb3" of scenario "testFormWeb3".',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'max'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb4" of scenario "testFormWeb4".',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'last'
+ ]
+ ]
+ ]
+ ]
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider getCommonGraphData
+ * @dataProvider getGraphData
+ */
+ public function testFormGraph_Create($data) {
+ $this->checkGraphForm($data);
+ }
+
+ /**
+ * @dataProvider getCommonGraphData
+ * @dataProvider getGraphData
+ */
+ public function testFormGraph_Update($data) {
+ $this->checkGraphForm($data, true);
+ }
+
+ /**
+ * @dataProvider getCloneData
+ */
+ public function testFormGraph_Clone($data) {
+ $this->checkClone($data);
+ }
+
+ /**
+ * @dataProvider getNoChangesData
+ */
+ public function testFormGraph_NoChanges($data) {
+ $this->checkNoChanges($data);
+ }
+
+ public static function getItemSettingsData() {
+ return [
+ [
+ [
+ 'change' => [
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'drawtype' => 'Dashed line',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ 'expected' => [
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'drawtype' => 'Dashed line',
+ 'yaxisside' => 'Right'
+ ],
+ 'color' => 'FDD835'
+ ]
+ ]
+ ],
+ [
+ [
+ 'change' => [
+ 'color' => 'BBDEFB'
+ ],
+ 'expected' => [
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'drawtype' => 'Dashed line',
+ 'yaxisside' => 'Right'
+ ],
+ 'color' => 'BBDEFB'
+ ]
+ ]
+ ],
+ [
+ [
+ 'change' => [
+ 'functions' => [
+ 'calc_fnc' => 'all',
+ 'drawtype' => 'Dot',
+ 'yaxisside' => 'Left'
+ ],
+ 'color' => '891515'
+ ],
+ 'expected' => [
+ 'functions' => [
+ 'calc_fnc' => 'all',
+ 'drawtype' => 'Dot',
+ 'yaxisside' => 'Left'
+ ],
+ 'color' => '891515'
+ ]
+ ]
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider getItemSettingsData
+ */
+ public function testFormGraph_ChangeItemSettings($data) {
+ $this->changeItemSettings($data);
+ }
+
+ public function testFormGraph_Delete() {
+ $this->checkDelete();
+ }
+
+ public function testFormGraph_TextItems() {
+ $data = [
+ 'fields' => [
+ 'Name' => 'Graph of text items',
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item')
+ ],
+ 'yaxis_items' => [
+ 'min' => 'graph_trap_text',
+ 'max' => 'graph_trap_log'
+ ],
+ 'items' => [
+ [
+ 'item' => 'graph_trap_text',
+ 'item' => 'graph_trap_log'
+ ]
+ ]
+ ];
+
+ $this->checkTextItems($data);
+ }
+}
diff --git a/ui/tests/selenium/graphs/testFormGraphPrototype.php b/ui/tests/selenium/graphs/testFormGraphPrototype.php
new file mode 100644
index 00000000000..66ed6a75791
--- /dev/null
+++ b/ui/tests/selenium/graphs/testFormGraphPrototype.php
@@ -0,0 +1,727 @@
+<?php
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+require_once dirname(__FILE__).'/../common/testFormGraphs.php';
+
+/**
+ * @backup graphs
+ *
+ * @onBefore prepareGraphPrototypesData
+ *
+ * @onAfter clearData
+ */
+class testFormGraphPrototype extends testFormGraphs {
+
+ protected $prototype = true;
+ protected $url = 'graphs.php?parent_discoveryid='.self::LLDID.'&context=host';
+
+ public function prepareGraphPrototypesData() {
+ self::$update_graph = 'Graph for update';
+
+ // Create item on given host.
+ $items = CDataHelper::call('item.create', [
+ 'hostid' => self::HOSTID,
+ 'name' => 'item_graph_ptototype_test',
+ 'key_' => 'item_graph_ptototype_test',
+ 'type' => ITEM_TYPE_TRAPPER,
+ 'value_type' => ITEM_VALUE_TYPE_FLOAT
+ ]);
+ $this->assertArrayHasKey('itemids', $items);
+ self::$itemid = $items['itemids'][0];
+
+ // Create item prototypes on given host with given LLD.
+ foreach (self::$items['item_prototypes'] as $name => $fields) {
+ $item_prototypes_data[] = [
+ 'hostid' => self::HOSTID,
+ 'ruleid' => self::LLDID,
+ 'name' => $name,
+ 'key_' => $name.'[{#KEY}]',
+ 'type' => ITEM_TYPE_TRAPPER,
+ 'value_type' => $fields['value_type']
+ ];
+ }
+
+ $item_prototypes = CDataHelper::call('itemprototype.create', $item_prototypes_data);
+ $this->assertArrayHasKey('itemids', $item_prototypes);
+ $item_prototype_ids = CDataHelper::getIds('name');
+
+ foreach (['int', 'float', 'text', 'char'] as $suffix) {
+ $field = 'graph_prototype_trap_'.$suffix;
+ self::$items[$field]['itemid'] = $item_prototype_ids[$field];
+ }
+
+ // Create graphs with previously created items.
+ $prepared_graph_prototypes = [
+ [
+ 'name' => 'Graph for update',
+ 'itemid' => self::$items['graph_prototype_trap_int']['itemid']
+ ],
+ [
+ 'name' => 'Duplicated graph prototype',
+ 'itemid' => self::$items['graph_prototype_trap_int']['itemid']
+ ],
+ [
+ 'name' => 'Graph prototype for delete',
+ 'itemid' => self::$items['graph_prototype_trap_float']['itemid']
+ ],
+ [
+ 'name' => 'Graph prototype for clone',
+ 'itemid' => self::$items['graph_prototype_trap_int']['itemid']
+ ],
+ [
+ 'name' => 'Graph for items change',
+ 'itemid' => self::$items['graph_prototype_trap_int']['itemid']
+ ]
+ ];
+
+ $graph_prototypes_data = [];
+ foreach ($prepared_graph_prototypes as $graph_prototype) {
+ $graph_prototypes_data[] = [
+ 'name' => $graph_prototype['name'],
+ 'width' => 999,
+ 'height' => 222,
+ 'gitems' => [
+ [
+ 'itemid' => $graph_prototype['itemid'],
+ 'color'=> '5C6BC0'
+ ],
+ [
+ 'itemid' => self::$itemid,
+ 'color'=> '66BB6A'
+ ]
+ ]
+ ];
+ }
+
+ CDataHelper::call('graphprototype.create', $graph_prototypes_data);
+ }
+
+ /**
+ * @dataProvider getLayoutData
+ */
+ public function testFormGraphPrototype_Layout($data) {
+ $this->checkGraphFormLayout($data);
+ }
+
+ public function getGraphPrototypeData() {
+ return [
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Empty item prototype {#KEY}'
+ ],
+ 'items' => [
+ [
+ 'item' => 'testFormItem'
+ ]
+ ],
+ 'details' => [
+ 'Graph prototype "Empty item prototype {#KEY}" must have at least one item prototype.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Empty color in item prototype {#KEY}'
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color' => ''
+ ]
+ ],
+ 'details' => [
+ 'Empty color.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Normal graph prototype without LLD macro'
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1'
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Duplicated graph prototype'
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1'
+ ]
+ ],
+ 'details' => [
+ 'Graph with name "Duplicated graph prototype" already exists in graphs or graph prototypes.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Exploded graph prototype duplicated Graph sum type',
+ 'Graph type' => 'Exploded'
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype2',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'avg'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype3',
+ 'color'=> 'FFA001',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'last'
+ ]
+ ]
+ ],
+ 'details' => [
+ 'Cannot add more than one item with type "Graph sum" on graph prototype "Exploded graph prototype'.
+ ' duplicated Graph sum type".'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Exploded graph prototype duplicated Graph sum type mixed',
+ 'Graph type' => 'Exploded'
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb3" of scenario "testFormWeb3".',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'avg'
+ ]
+ ]
+ ],
+ 'details' => [
+ 'Cannot add more than one item with type "Graph sum" on graph prototype "Exploded graph prototype '.
+ 'duplicated Graph sum type mixed".'
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Normal graph prototype with items in Y axis values {#KEY}',
+ 'Width' => 65535,
+ 'Height' => 65535,
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Normal'),
+ 'Show legend' => false,
+ 'Show working time' => false,
+ 'Show triggers' => false,
+ 'id:visible_percent_left' => true,
+ 'id:visible_percent_right' => true,
+ 'id:percent_left' => 5.5,
+ 'id:percent_right' => 99.9,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item')
+ ],
+ 'yaxis_items' => [
+ 'min' => 'testFormItemPrototype1',
+ 'max' => 'testFormItemPrototype2'
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color'=> 'BBDEFB',
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'drawtype' => 'Bold line',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype2',
+ 'color'=> 'FBC02D',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Filled region',
+ 'yaxisside' => 'Left'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype3',
+ 'color'=> '7B1FA2',
+ 'functions' => [
+ 'calc_fnc' => 'max',
+ 'drawtype' => 'Dot',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype4',
+ 'color'=> 'FFE082',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Dashed line',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemReuse',
+ 'color'=> '7F3700',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Gradient line',
+ 'yaxisside' => 'Left'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Stacked graph prototype fixed Y axis values',
+ 'Width' => 20,
+ 'Height' => 20,
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Stacked'),
+ 'Show legend' => true,
+ 'Show working time' => true,
+ 'Show triggers' => true,
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 0.1,
+ 'id:yaxismax' => 0.99
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color'=> '00897B',
+ 'functions' => [
+ 'calc_fnc' => 'max',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype2',
+ 'color'=> 'C3C3C3',
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'yaxisside' => 'Left'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype3',
+ 'color'=> '00897B',
+ 'functions' => [
+ 'calc_fnc' => 'min',
+ 'yaxisside' => 'Right'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Max equals min value'.($this->prototype ? ' {#KEY}' : NULL),
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 0.1,
+ 'id:yaxismax' => 0.1
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1'
+ ]
+ ],
+ 'details' => [
+ 'Y axis MAX value must be greater than Y axis MIN value.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'fields' => [
+ 'Name' => 'Max less than min'.($this->prototype ? ' {#KEY}' : NULL),
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Fixed'),
+ 'id:yaxismin' => 0.2,
+ 'id:yaxismax' => 0.1
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1'
+ ]
+ ],
+ 'details' => [
+ 'Y axis MAX value must be greater than Y axis MIN value.'
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Pie graph prototype 3D false',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Pie'),
+ 'Show legend' => true,
+ '3D view' => false
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color'=> 'D2D2D2',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype2',
+ 'color'=> 'C0CA33',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'avg'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Pie graph 3D true',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Pie'),
+ 'Show legend' => false,
+ '3D view' => true
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype3',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'max'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype4',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'last'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Exploded graph 3D true, mixed items',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Exploded'),
+ 'Show legend' => false,
+ '3D view' => true
+ ],
+ 'items' => [
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype2',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'avg'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb3" of scenario "testFormWeb3".',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'max'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb4" of scenario "testFormWeb4".',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'last'
+ ]
+ ]
+ ]
+ ]
+ ],
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Exploded graph 3D false, mixed items',
+ 'Graph type' => CFormElement::RELOADABLE_FILL('Exploded'),
+ 'Show legend' => true,
+ '3D view' => false
+ ],
+ 'items' => [
+ [
+ 'item' => 'Response code for step "testFormWeb3" of scenario "testFormWeb3".',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'max'
+ ]
+ ],
+ [
+ 'item' => 'Response code for step "testFormWeb4" of scenario "testFormWeb4".',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Graph sum',
+ 'calc_fnc' => 'last'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype1',
+ 'color'=> 'AB47BC',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'min'
+ ]
+ ],
+ [
+ 'prototype' => true,
+ 'item' => 'testFormItemPrototype2',
+ 'color'=> 'FFA000',
+ 'functions' => [
+ 'type' => 'Simple',
+ 'calc_fnc' => 'avg'
+ ]
+ ]
+ ]
+ ]
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider getCommonGraphData
+ * @dataProvider getGraphPrototypeData
+ */
+ public function testFormGraphPrototype_Create($data) {
+ $this->checkGraphForm($data);
+ }
+
+ /**
+ * @dataProvider getCommonGraphData
+ * @dataProvider getGraphPrototypeData
+ */
+ public function testFormGraphPrototype_Update($data) {
+ $this->checkGraphForm($data, true);
+ }
+
+ /**
+ * @dataProvider getCloneData
+ */
+ public function testFormGraphPrototype_Clone($data) {
+ $this->checkClone($data);
+ }
+
+ /**
+ * @dataProvider getNoChangesData
+ */
+ public function testFormGraphPrototype_NoChanges($data) {
+ $this->checkNoChanges($data);
+ }
+
+ public static function getItemPrototypeSettingsData() {
+ return [
+ [
+ [
+ 'change' => [
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Gradient line',
+ 'yaxisside' => 'Right'
+ ]
+ ],
+ 'expected' => [
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Gradient line',
+ 'yaxisside' => 'Right'
+ ],
+ 'color' => '66BB6A'
+ ]
+ ]
+ ],
+ [
+ [
+ 'change' => [
+ 'color' => 'FFBF00'
+ ],
+ 'expected' => [
+ 'functions' => [
+ 'calc_fnc' => 'avg',
+ 'drawtype' => 'Gradient line',
+ 'yaxisside' => 'Right'
+ ],
+ 'color' => 'FFBF00'
+ ]
+ ]
+ ],
+ [
+ [
+ 'change' => [
+ 'functions' => [
+ 'calc_fnc' => 'max',
+ 'drawtype' => 'Filled region',
+ 'yaxisside' => 'Left'
+ ],
+ 'color' => 'D7CCC8'
+ ],
+ 'expected' => [
+ 'functions' => [
+ 'calc_fnc' => 'max',
+ 'drawtype' => 'Filled region',
+ 'yaxisside' => 'Left'
+ ],
+ 'color' => 'D7CCC8'
+ ]
+ ]
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider getItemPrototypeSettingsData
+ */
+ public function testFormGraphPrototype_ChangeItemSettings($data) {
+ $this->changeItemSettings($data);
+ }
+
+ public function testFormGraphPrototype_Delete() {
+ $this->checkDelete();
+ }
+
+ public static function getTextItemPrototypesData() {
+ return [
+ [
+ [
+ 'fields' => [
+ 'Name' => 'Graph prototype of text items',
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item')
+ ],
+ 'yaxis_items' => [
+ 'min' => 'graph_prototype_trap_text',
+ 'max' => 'graph_prototype_trap_char'
+ ],
+ 'items' => [
+ [
+ 'item' => 'graph_prototype_trap_text',
+ 'item' => 'graph_prototype_trap_char'
+ ]
+ ]
+ ]
+ ]
+ ];
+ }
+
+ public function testFormGraphPrototype_TextItems() {
+ $data = [
+ 'fields' => [
+ 'Name' => 'Graph prototype of text items',
+ 'id:ymin_type' => CFormElement::RELOADABLE_FILL('Item'),
+ 'id:ymax_type' => CFormElement::RELOADABLE_FILL('Item')
+ ],
+ 'yaxis_items' => [
+ 'min' => 'graph_prototype_trap_text',
+ 'max' => 'graph_prototype_trap_char'
+ ],
+ 'items' => [
+ [
+ 'item' => 'graph_prototype_trap_text',
+ 'item' => 'graph_prototype_trap_char'
+ ]
+ ]
+ ];
+
+ $this->checkTextItems($data);
+ }
+}
diff --git a/ui/tests/selenium/testGraphAxis.php b/ui/tests/selenium/graphs/testGraphAxis.php
index 15248820d0c..e835f370cf2 100644
--- a/ui/tests/selenium/testGraphAxis.php
+++ b/ui/tests/selenium/graphs/testGraphAxis.php
@@ -18,7 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CWebTest.php';
+
+require_once dirname(__FILE__).'/../../include/CWebTest.php';
/**
* @backup profiles
diff --git a/ui/tests/selenium/testInheritanceGraph.php b/ui/tests/selenium/graphs/testInheritanceGraph.php
index 3d1e4675993..c90bc539b5d 100644
--- a/ui/tests/selenium/testInheritanceGraph.php
+++ b/ui/tests/selenium/graphs/testInheritanceGraph.php
@@ -18,7 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
/**
* Test the creation of inheritance of new objects on a previously linked template.
diff --git a/ui/tests/selenium/testInheritanceGraphPrototype.php b/ui/tests/selenium/graphs/testInheritanceGraphPrototype.php
index 59f5b8875e8..2126a0cdd7c 100644
--- a/ui/tests/selenium/testInheritanceGraphPrototype.php
+++ b/ui/tests/selenium/graphs/testInheritanceGraphPrototype.php
@@ -18,7 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
/**
* Test the creation of inheritance of new objects on a previously linked template.
diff --git a/ui/tests/selenium/testPageGraphPrototypes.php b/ui/tests/selenium/graphs/testPageGraphPrototypes.php
index 1c9f40db269..82277a29948 100644
--- a/ui/tests/selenium/testPageGraphPrototypes.php
+++ b/ui/tests/selenium/graphs/testPageGraphPrototypes.php
@@ -18,7 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
use Facebook\WebDriver\WebDriverBy;
@@ -78,7 +79,7 @@ class testPageGraphPrototypes extends CLegacyWebTest {
// Check table headers.
$this->assertEquals(['Name', 'Width', 'Height', 'Graph type', 'Discover'],
- $this->getTextOfElements('//form[@name="graphForm"]//thead/tr/th[not(@class)]')
+ $this->getTextOfElements("//form[@name=\"graphForm\"]//thead/tr/th[not(@class)]")
);
// Check graph prototype number in breadcrumb.
diff --git a/ui/tests/selenium/testPageHostGraph.php b/ui/tests/selenium/graphs/testPageHostGraph.php
index f9ee1ef3c0a..c56eacc9061 100644
--- a/ui/tests/selenium/testPageHostGraph.php
+++ b/ui/tests/selenium/graphs/testPageHostGraph.php
@@ -18,7 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
use Facebook\WebDriver\WebDriverBy;
diff --git a/ui/tests/selenium/hosts/testFormHostConfiguration.php b/ui/tests/selenium/hosts/testFormHostFromConfiguration.php
index 72e00701d96..db194fb4aa7 100644
--- a/ui/tests/selenium/hosts/testFormHostConfiguration.php
+++ b/ui/tests/selenium/hosts/testFormHostFromConfiguration.php
@@ -28,25 +28,25 @@ require_once dirname(__FILE__).'/../common/testFormHost.php';
*
* @onBefore prepareUpdateData
*/
-class testFormHostConfiguration extends testFormHost {
+class testFormHostFromConfiguration extends testFormHost {
public $link = 'zabbix.php?action=host.list';
- public function testFormHostConfiguration_Layout() {
+ public function testFormHostFromConfiguration_Layout() {
$this->checkHostLayout();
}
/**
* @dataProvider getCreateData
*/
- public function testFormHostConfiguration_Create($data) {
+ public function testFormHostFromConfiguration_Create($data) {
$this->checkHostCreate($data);
}
/**
* @dataProvider getValidationUpdateData
*/
- public function testFormHostConfiguration_ValidationUpdate($data) {
+ public function testFormHostFromConfiguration_ValidationUpdate($data) {
$this->checkHostUpdate($data);
}
@@ -55,21 +55,21 @@ class testFormHostConfiguration extends testFormHost {
*
* @dataProvider getUpdateData
*/
- public function testFormHostConfiguration_Update($data) {
+ public function testFormHostFromConfiguration_Update($data) {
$this->checkHostUpdate($data);
}
/**
* Update the host without any changes and check host and interfaces hashes.
*/
- public function testFormHostConfiguration_SimpleUpdate() {
+ public function testFormHostFromConfiguration_SimpleUpdate() {
$this->checkHostSimpleUpdate();
}
/**
* @dataProvider getCloneData
*/
- public function testFormHostConfiguration_Clone($data) {
+ public function testFormHostFromConfiguration_Clone($data) {
$this->cloneHost($data);
// Check that items aren't cloned from original host.
@@ -79,7 +79,7 @@ class testFormHostConfiguration extends testFormHost {
/**
* @dataProvider getCloneData
*/
- public function testFormHostConfiguration_FullClone($data) {
+ public function testFormHostFromConfiguration_FullClone($data) {
$this->cloneHost($data, 'Full clone');
// Check that items cloned from original host.
@@ -89,18 +89,18 @@ class testFormHostConfiguration extends testFormHost {
/**
* @dataProvider getCancelData
*/
- public function testFormHostConfiguration_Cancel($data) {
+ public function testFormHostFromConfiguration_Cancel($data) {
$this->checkCancel($data);
}
/**
* @dataProvider getDeleteData
*/
- public function testFormHostConfiguration_Delete($data) {
+ public function testFormHostFromConfiguration_Delete($data) {
$this->checkDelete($data);
}
- public function testFormHostConfiguration_DiscoveredHostLayout() {
+ public function testFormHostFromConfiguration_DiscoveredHostLayout() {
$this->checkDiscoveredHostLayout();
}
}
diff --git a/ui/tests/selenium/hosts/testFormHostMonitoring.php b/ui/tests/selenium/hosts/testFormHostFromMonitoring.php
index 793925ea1ca..30133c4024d 100644
--- a/ui/tests/selenium/hosts/testFormHostMonitoring.php
+++ b/ui/tests/selenium/hosts/testFormHostFromMonitoring.php
@@ -28,26 +28,26 @@ require_once dirname(__FILE__).'/../common/testFormHost.php';
*
* @onBefore prepareUpdateData
*/
-class testFormHostMonitoring extends testFormHost {
+class testFormHostFromMonitoring extends testFormHost {
public $monitoring = true;
public $link = 'zabbix.php?action=host.view';
- public function testFormHostMonitoring_Layout() {
+ public function testFormHostFromMonitoring_Layout() {
$this->checkHostLayout();
}
/**
* @dataProvider getCreateData
*/
- public function testFormHostMonitoring_Create($data) {
+ public function testFormHostFromMonitoring_Create($data) {
$this->checkHostCreate($data);
}
/**
* @dataProvider getValidationUpdateData
*/
- public function testFormHostMonitoring_ValidationUpdate($data) {
+ public function testFormHostFromMonitoring_ValidationUpdate($data) {
$this->checkHostUpdate($data);
}
@@ -56,21 +56,21 @@ class testFormHostMonitoring extends testFormHost {
*
* @dataProvider getUpdateData
*/
- public function testFormHostMonitoring_Update($data) {
+ public function testFormHostFromMonitoring_Update($data) {
$this->checkHostUpdate($data);
}
/**
* Update the host without any changes and check host and interfaces hashes.
*/
- public function testFormHostMonitoring_SimpleUpdate() {
+ public function testFormHostFromMonitoring_SimpleUpdate() {
$this->checkHostSimpleUpdate();
}
/**
* @dataProvider getCloneData
*/
- public function testFormHostMonitoring_Clone($data) {
+ public function testFormHostFromMonitoring_Clone($data) {
$this->cloneHost($data, 'Clone');
// Check that items aren't cloned from original host.
@@ -80,7 +80,7 @@ class testFormHostMonitoring extends testFormHost {
/**
* @dataProvider getCloneData
*/
- public function testFormHostMonitoring_FullClone($data) {
+ public function testFormHostFromMonitoring_FullClone($data) {
$this->cloneHost($data, 'Full clone');
// Check that items cloned from original host.
@@ -90,18 +90,18 @@ class testFormHostMonitoring extends testFormHost {
/**
* @dataProvider getCancelData
*/
- public function testFormHostMonitoring_Cancel($data) {
+ public function testFormHostFromMonitoring_Cancel($data) {
$this->checkCancel($data);
}
/**
* @dataProvider getDeleteData
*/
- public function testFormHostMonitoring_Delete($data) {
+ public function testFormHostFromMonitoring_Delete($data) {
$this->checkDelete($data);
}
- public function testFormHostMonitoring_DiscoveredHostLayout() {
+ public function testFormHostFromMonitoring_DiscoveredHostLayout() {
$this->checkDiscoveredHostLayout();
}
}
diff --git a/ui/tests/selenium/hosts/testFormHostStandalone.php b/ui/tests/selenium/hosts/testFormHostFromStandalone.php
index c63c499d74b..83b0f1728a2 100644
--- a/ui/tests/selenium/hosts/testFormHostStandalone.php
+++ b/ui/tests/selenium/hosts/testFormHostFromStandalone.php
@@ -28,19 +28,19 @@ require_once dirname(__FILE__).'/../common/testFormHost.php';
*
* @onBefore prepareUpdateData
*/
-class testFormHostStandalone extends testFormHost {
+class testFormHostFromStandalone extends testFormHost {
public $standalone = true;
public $link = 'zabbix.php?action=host.edit&hostid=';
- public function testFormHostStandalone_Layout() {
+ public function testFormHostFromStandalone_Layout() {
$this->checkHostLayout();
}
/**
* @dataProvider getCreateData
*/
- public function testFormHostStandalone_Create($data) {
+ public function testFormHostFromStandalone_Create($data) {
$this->link = 'zabbix.php?action=host.edit';
$this->checkHostCreate($data);
}
@@ -48,7 +48,7 @@ class testFormHostStandalone extends testFormHost {
/**
* @dataProvider getValidationUpdateData
*/
- public function testFormHostStandalone_ValidationUpdate($data) {
+ public function testFormHostFromStandalone_ValidationUpdate($data) {
$this->checkHostUpdate($data);
}
@@ -57,21 +57,21 @@ class testFormHostStandalone extends testFormHost {
*
* @dataProvider getUpdateData
*/
- public function testFormHostStandalone_Update($data) {
+ public function testFormHostFromStandalone_Update($data) {
$this->checkHostUpdate($data);
}
/**
* Update the host without any changes and check host and interfaces hashes.
*/
- public function testFormHostStandalone_SimpleUpdate() {
+ public function testFormHostFromStandalone_SimpleUpdate() {
$this->checkHostSimpleUpdate();
}
/**
* @dataProvider getCloneData
*/
- public function testFormHostStandalone_Clone($data) {
+ public function testFormHostFromStandalone_Clone($data) {
$this->cloneHost($data, 'Clone');
// Check that items aren't cloned from original host.
@@ -81,7 +81,7 @@ class testFormHostStandalone extends testFormHost {
/**
* @dataProvider getCloneData
*/
- public function testFormHostStandalone_FullClone($data) {
+ public function testFormHostFromStandalone_FullClone($data) {
$this->cloneHost($data, 'Full clone');
// Check that items cloned from original host.
@@ -91,7 +91,7 @@ class testFormHostStandalone extends testFormHost {
/**
* @dataProvider getCancelData
*/
- public function testFormHostStandalone_Cancel($data) {
+ public function testFormHostFromStandalone_Cancel($data) {
$this->link = 'zabbix.php?action=host.edit';
$this->checkCancel($data);
}
@@ -99,11 +99,11 @@ class testFormHostStandalone extends testFormHost {
/**
* @dataProvider getDeleteData
*/
- public function testFormHostStandalone_Delete($data) {
+ public function testFormHostFromStandalone_Delete($data) {
$this->checkDelete($data);
}
- public function testFormHostStandalone_DiscoveredHostLayout() {
+ public function testFormHostFromStandalone_DiscoveredHostLayout() {
$this->checkDiscoveredHostLayout();
}
@@ -111,7 +111,7 @@ class testFormHostStandalone extends testFormHost {
* Test for checking templated objects that are linked to a discovered host and for checking their unlinkage.
* This test is implemented only for Standalone scenario.
*/
- public function testFormHostStandalone_DiscoveredHostLinkedTemplates() {
+ public function testFormHostFromStandalone_DiscoveredHostLinkedTemplates() {
$filtered_results = [
[
'type' => 'items',
diff --git a/ui/tests/selenium/testFormHostLinkTemplates.php b/ui/tests/selenium/hosts/testFormHostLinkTemplates.php
index 77477017ce9..3fd15d0a343 100644
--- a/ui/tests/selenium/testFormHostLinkTemplates.php
+++ b/ui/tests/selenium/hosts/testFormHostLinkTemplates.php
@@ -18,7 +18,7 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
/**
* @backup hosts
diff --git a/ui/tests/selenium/testFormHostPrototype.php b/ui/tests/selenium/hosts/testFormHostPrototype.php
index a7b1aff43fe..4fa12a290ab 100644
--- a/ui/tests/selenium/testFormHostPrototype.php
+++ b/ui/tests/selenium/hosts/testFormHostPrototype.php
@@ -18,9 +18,9 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
-require_once dirname(__FILE__).'/traits/MacrosTrait.php';
-require_once dirname(__FILE__).'/behaviors/CMessageBehavior.php';
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../traits/MacrosTrait.php';
+require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
use Facebook\WebDriver\WebDriverBy;
diff --git a/ui/tests/selenium/testPageHostInterfaces.php b/ui/tests/selenium/hosts/testPageHostInterfaces.php
index dd1e25eec6b..8919b9570c3 100644
--- a/ui/tests/selenium/testPageHostInterfaces.php
+++ b/ui/tests/selenium/hosts/testPageHostInterfaces.php
@@ -18,8 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CWebTest.php';
-require_once dirname(__FILE__).'/../include/helpers/CDataHelper.php';
+require_once dirname(__FILE__).'/../../include/CWebTest.php';
+require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
/**
* @backup hosts
diff --git a/ui/tests/selenium/testPageHostPrototypes.php b/ui/tests/selenium/hosts/testPageHostPrototypes.php
index 62e0db5685a..10e0c5cfc0a 100644
--- a/ui/tests/selenium/testPageHostPrototypes.php
+++ b/ui/tests/selenium/hosts/testPageHostPrototypes.php
@@ -18,8 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
-require_once dirname(__FILE__).'/traits/TableTrait.php';
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
* @backup hosts
diff --git a/ui/tests/selenium/testPageHosts.php b/ui/tests/selenium/hosts/testPageHosts.php
index e1776cccfee..5aea0664dd6 100644
--- a/ui/tests/selenium/testPageHosts.php
+++ b/ui/tests/selenium/hosts/testPageHosts.php
@@ -18,10 +18,9 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
-require_once dirname(__FILE__).'/traits/TagTrait.php';
-require_once dirname(__FILE__).'/traits/TableTrait.php';
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../traits/TagTrait.php';
+require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
* @dataSource TagFilter, Proxies
diff --git a/ui/tests/selenium/testPageMonitoringHosts.php b/ui/tests/selenium/hosts/testPageMonitoringHosts.php
index 8f154111a42..2efb578265a 100644
--- a/ui/tests/selenium/testPageMonitoringHosts.php
+++ b/ui/tests/selenium/hosts/testPageMonitoringHosts.php
@@ -19,10 +19,10 @@
**/
-require_once dirname(__FILE__).'/../include/CWebTest.php';
-require_once dirname(__FILE__).'/traits/TableTrait.php';
-require_once dirname(__FILE__).'/traits/TagTrait.php';
-require_once dirname(__FILE__).'/../include/helpers/CDataHelper.php';
+require_once dirname(__FILE__).'/../../include/CWebTest.php';
+require_once dirname(__FILE__).'/../traits/TableTrait.php';
+require_once dirname(__FILE__).'/../traits/TagTrait.php';
+require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
/**
* @backup profiles
diff --git a/ui/tests/selenium/items/testFormItem.php b/ui/tests/selenium/items/testFormItem.php
index 416dee5306f..d23477c7214 100644
--- a/ui/tests/selenium/items/testFormItem.php
+++ b/ui/tests/selenium/items/testFormItem.php
@@ -979,7 +979,7 @@ class testFormItem extends CLegacyWebTest {
'key' => 'vfs.file.cksum[/sbin/shutdown]',
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item with key "vfs.file.cksum[/sbin/shutdown]" already exists on'
+ 'An item with key "vfs.file.cksum[/sbin/shutdown]" already exists on'
]
]
],
@@ -1014,7 +1014,7 @@ class testFormItem extends CLegacyWebTest {
'delay' => 0,
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
]
]
],
@@ -1040,7 +1040,7 @@ class testFormItem extends CLegacyWebTest {
'delay' => 86401,
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Update interval should be between 1s and 1d. Also Scheduled/Flexible intervals can be used.'
+ 'Invalid parameter "/1/delay": value must be one of 0-86400.'
]
]
],
@@ -1150,7 +1150,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
@@ -1189,7 +1189,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": must have at least one interval greater than 0.'
]
]
],
@@ -1220,7 +1220,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
@@ -1259,7 +1259,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
@@ -1288,7 +1288,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
@@ -1306,7 +1306,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
@@ -1322,7 +1322,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
@@ -1338,7 +1338,7 @@ class testFormItem extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
@@ -1422,7 +1422,7 @@ class testFormItem extends CLegacyWebTest {
'history' => ' ',
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "history": a time unit is expected.'
+ 'Invalid parameter "/1/history": cannot be empty'
]
]
],
@@ -1435,7 +1435,7 @@ class testFormItem extends CLegacyWebTest {
'history' => 3599,
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "history": value must be one of 0, 3600-788400000.'
+ 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
]
],
@@ -1448,7 +1448,7 @@ class testFormItem extends CLegacyWebTest {
'history' => 788400001,
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "history": value must be one of 0, 3600-788400000.'
+ 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
]
],
@@ -1461,7 +1461,7 @@ class testFormItem extends CLegacyWebTest {
'history' => '-1',
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "history": a time unit is expected.'
+ 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
]
],
@@ -1474,7 +1474,7 @@ class testFormItem extends CLegacyWebTest {
'trends' => ' ',
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "trends": a time unit is expected.'
+ 'Invalid parameter "/1/trends": cannot be empty.'
]
]
],
@@ -1487,7 +1487,7 @@ class testFormItem extends CLegacyWebTest {
'trends' => '-1',
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "trends": a time unit is expected.'
+ 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
]
],
@@ -1500,7 +1500,7 @@ class testFormItem extends CLegacyWebTest {
'trends' => 788400001,
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "trends": value must be one of 0, 86400-788400000.'
+ 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
]
],
@@ -1513,7 +1513,7 @@ class testFormItem extends CLegacyWebTest {
'trends' => 86399,
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "trends": value must be one of 0, 86400-788400000.'
+ 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
]
],
@@ -1705,7 +1705,7 @@ class testFormItem extends CLegacyWebTest {
'key' => 'item-ipmi-agent-error',
'error_msg' => 'Cannot add item',
'errors' => [
- 'Incorrect value for field "ipmi_sensor": cannot be empty.'
+ 'Invalid parameter "/1/ipmi_sensor": cannot be empty.'
]
]
],
@@ -2024,6 +2024,7 @@ class testFormItem extends CLegacyWebTest {
}
}
if (isset($data['formCheck'])) {
+ $this->page->waitUntilReady();
$this->zbxTestClickXpath("//form[@name='items']//a[text()='$name']");
$this->zbxTestWaitUntilElementVisible(WebDriverBy::id('name'));
$this->zbxTestAssertElementValue('name', $name);
diff --git a/ui/tests/selenium/items/testFormItemHttpAgent.php b/ui/tests/selenium/items/testFormItemHttpAgent.php
index a00b80eaa0a..231aae8a507 100644
--- a/ui/tests/selenium/items/testFormItemHttpAgent.php
+++ b/ui/tests/selenium/items/testFormItemHttpAgent.php
@@ -423,7 +423,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "query_fields": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/query_fields": nonempty key and value pair expected.'
]
]
],
@@ -440,7 +440,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "query_fields": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/query_fields": nonempty key and value pair expected.'
]
]
],
@@ -456,7 +456,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "query_fields": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/query_fields": nonempty key and value pair expected.'
]
]
],
@@ -473,7 +473,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -490,7 +490,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -507,7 +507,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -523,7 +523,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -538,7 +538,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
'request_type' => 'JSON data',
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "posts": JSON is expected.'
+ 'Invalid parameter "/1/posts": cannot be empty.'
]
]
],
@@ -553,7 +553,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
'request_type' => 'JSON data',
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "posts": JSON is expected.'
+ 'Invalid parameter "/1/posts": JSON is expected.'
]
]
],
@@ -567,7 +567,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
'request_type' => 'XML data',
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "posts": XML is expected.'
+ 'Invalid parameter "/1/posts": cannot be empty.'
]
]
],
@@ -582,7 +582,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
'request_type' => 'XML data',
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "posts": (4) Start tag expected, \'<\' not found'
+ 'Invalid parameter "/1/posts": (4) Start tag expected, \'<\' not found'
]
]
],
@@ -597,7 +597,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
'request_type' => 'XML data',
'error' => 'Cannot add item',
'error_details' => [
- 'Invalid parameter "posts": (73) expected \'>\''
+ 'Invalid parameter "/1/posts": (73) expected \'>\''
]
]
],
@@ -612,7 +612,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Incorrect value "*" for "status_codes" field.'
+ 'Invalid parameter "/1/status_codes": invalid range expression.'
]
]
],
@@ -626,7 +626,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'error' => 'Cannot add item',
'error_details' => [
- 'Incorrect value "test" for "status_codes" field.'
+ 'Invalid parameter "/1/status_codes": invalid range expression.'
]
]
]
@@ -667,7 +667,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
['name' => '', 'value' => 'admin', 'action' => 'update']
],
'error_details' => [
- 'Invalid parameter "query_fields": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/query_fields": nonempty key and value pair expected.'
]
]
],
@@ -678,7 +678,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
['value' => 'admin']
],
'error_details' => [
- 'Invalid parameter "query_fields": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/query_fields": nonempty key and value pair expected.'
]
]
],
@@ -689,7 +689,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
['name' => 'user update', 'value' => '', 'action' => 'update']
],
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -699,7 +699,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
['name' => '', 'value' => 'admin update', 'action' => 'update']
],
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -710,7 +710,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
['value' => 'admin']
],
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -721,7 +721,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
['name' => 'user']
],
'error_details' => [
- 'Invalid parameter "headers": nonempty key and value pair expected.'
+ 'Invalid parameter "/1/headers": nonempty key and value pair expected.'
]
]
],
@@ -730,7 +730,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
[
'request_type' => 'JSON data',
'error_details' => [
- 'Invalid parameter "posts": JSON is expected.'
+ 'Invalid parameter "/1/posts": cannot be empty.'
]
]
],
@@ -738,7 +738,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
[
'request_type' => 'XML data',
'error_details' => [
- 'Invalid parameter "posts": XML is expected.'
+ 'Invalid parameter "/1/posts": cannot be empty.'
]
]
],
@@ -749,7 +749,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
],
'request_type' => 'XML data',
'error_details' => [
- 'Invalid parameter "posts": (4) Start tag expected, \'<\' not found'
+ 'Invalid parameter "/1/posts": (4) Start tag expected, \'<\' not found [Line: 1 | Column: 1].'
]
]
],
@@ -760,7 +760,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
'Required status codes' => '*'
],
'error_details' => [
- 'Incorrect value "*" for "status_codes" field.'
+ 'Invalid parameter "/1/status_codes": invalid range expression.'
]
]
],
@@ -770,7 +770,7 @@ class testFormItemHttpAgent extends CLegacyWebTest {
'Required status codes' => 'test'
],
'error_details' => [
- 'Incorrect value "test" for "status_codes" field.'
+ 'Invalid parameter "/1/status_codes": invalid range expression.'
]
]
]
diff --git a/ui/tests/selenium/items/testFormItemPrototype.php b/ui/tests/selenium/items/testFormItemPrototype.php
index 2f9f6d42974..03b97358ce6 100644
--- a/ui/tests/selenium/items/testFormItemPrototype.php
+++ b/ui/tests/selenium/items/testFormItemPrototype.php
@@ -77,7 +77,7 @@ class testFormItemPrototype extends CLegacyWebTest {
[
[
'host' => 'Simple form test host',
- 'key' => 'item-prototype-form1'
+ 'key' => 'item-prototype-form1[{#KEY}]'
]
],
[
@@ -280,13 +280,13 @@ class testFormItemPrototype extends CLegacyWebTest {
[
[
'template' => 'Inheritance test template',
- 'key' => 'item-prototype-test1'
+ 'key' => 'item-prototype-test1[{#KEY}]'
]
],
[
[
'host' => 'Template inheritance test host',
- 'key' => 'item-prototype-test1'
+ 'key' => 'item-prototype-test1[{#KEY}]'
]
],
[
@@ -484,7 +484,7 @@ class testFormItemPrototype extends CLegacyWebTest {
[
'host' => 'Template inheritance test host',
'hostTemplate' => 'Inheritance test template',
- 'key' => 'item-prototype-preprocessing',
+ 'key' => 'item-prototype-preprocessing[{#KEY}]',
'preprocessing' => true
]
]
@@ -514,7 +514,6 @@ class testFormItemPrototype extends CLegacyWebTest {
' AND key_='.zbx_dbstr($data['key'])
);
$template_info = DBfetch($dbResult);
-
$this->assertNotEquals($template_info, null);
$itemid = $template_info['itemid'];
@@ -1074,17 +1073,18 @@ class testFormItemPrototype extends CLegacyWebTest {
// Returns create data
public static function create() {
return [
+ // #0
[
[
'expected' => TEST_GOOD,
'name' => 'Checksum of $1',
- 'key' => 'vfs.file.cksum[/sbin/shutdown]',
+ 'key' => 'vfs.file.cksum[/sbin/shutdown,{#KEY}]',
'dbName' => 'Checksum of $1',
'dbCheck' => true,
'formCheck' =>true
]
],
- // Duplicate item
+ // #1
[
[
'expected' => TEST_BAD,
@@ -1092,22 +1092,34 @@ class testFormItemPrototype extends CLegacyWebTest {
'key' => 'vfs.file.cksum[/sbin/shutdown]',
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item with key "vfs.file.cksum[/sbin/shutdown]" already exists on'
+ 'Invalid parameter "/1/key_": must contain at least one low-level discovery macro.'
+ ]
+ ]
+ ],
+ // #2 Duplicate item
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'name' => 'Checksum of $1',
+ 'key' => 'vfs.file.cksum[/sbin/shutdown,{#KEY}]',
+ 'error_msg' => 'Cannot add item prototype',
+ 'errors' => [
+ 'An item prototype with key "vfs.file.cksum[/sbin/shutdown,{#KEY}]" already exists on the host'
]
]
],
- // Item name is missing
+ // #3 Item name is missing
[
[
'expected' => TEST_BAD,
- 'key' =>'item-name-missing',
+ 'key' =>'item-name-missing[{#KEY}]',
'error_msg' => 'Page received incorrect data',
'errors' => [
'Incorrect value for field "Name": cannot be empty.'
]
]
],
- // Item key is missing
+ // #4 Item key is missing
[
[
'expected' => TEST_BAD,
@@ -1118,25 +1130,25 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Empty timedelay
+ // #5 Empty timedelay
[
[
'expected' => TEST_BAD,
'name' => 'Item delay',
- 'key' => 'item-delay-test',
+ 'key' => 'item-delay-test[{#KEY}]',
'delay' => 0,
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Specified update interval requires having at least one either flexible or scheduling interval.'
+ 'Invalid parameter "/1/delay": cannot be equal to zero without custom intervals.'
]
]
],
- // Incorrect timedelay
+ // #6 Incorrect timedelay
[
[
'expected' => TEST_BAD,
'name' => 'Item delay',
- 'key' => 'item-delay-test',
+ 'key' => 'item-delay-test[{#KEY}]',
'delay' => '-30',
'error_msg' => 'Page received incorrect data',
'errors' => [
@@ -1144,25 +1156,25 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Incorrect timedelay
+ // #7 Incorrect timedelay
[
[
'expected' => TEST_BAD,
'name' => 'Item delay',
- 'key' => 'item-delay-test',
+ 'key' => 'item-delay-test[{#KEY}]',
'delay' => 86401,
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Update interval should be between 1s and 1d. Also Scheduled/Flexible intervals can be used.'
+ 'Invalid parameter "/1/delay": value must be one of 0-86400.'
]
]
],
- // Empty time flex period
+ // #8 Empty time flex period
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-test',
+ 'key' => 'item-flex-test[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '']
],
@@ -1172,12 +1184,12 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Incorrect flex period
+ // #9 Incorrect flex period
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-test',
+ 'key' => 'item-flex-test[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-11,00:00-24:00']
],
@@ -1187,12 +1199,12 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Incorrect flex period
+ // #10 Incorrect flex period
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-test',
+ 'key' => 'item-flex-test[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-7,00:00-25:00', 'instantCheck' => true]
],
@@ -1202,12 +1214,12 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Incorrect flex period
+ // #11 Incorrect flex period
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-test',
+ 'key' => 'item-flex-test[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-7,24:00-00:00']
],
@@ -1217,12 +1229,12 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Incorrect flex period
+ // #12 Incorrect flex period
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-test',
+ 'key' => 'item-flex-test[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1,00:00-24:00;2,00:00-24:00']
],
@@ -1232,12 +1244,12 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Multiple flex periods
+ // #13 Multiple flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex',
- 'key' => 'item-flex-test',
+ 'key' => 'item-flex-test[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1,00:00-24:00'],
['flexDelay' => 50, 'flexTime' => '2,00:00-24:00'],
@@ -1246,12 +1258,12 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Delay combined with flex periods
+ // #14 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1,00:00-24:00'],
['flexDelay' => 0, 'flexTime' => '2,00:00-24:00'],
@@ -1263,16 +1275,16 @@ class testFormItemPrototype extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
- // Delay combined with flex periods
+ // #15 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex1',
- 'key' => 'item-flex-delay1',
+ 'key' => 'item-flex-delay1[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1,00:00-24:00'],
['flexDelay' => 50, 'flexTime' => '2,00:00-24:00'],
@@ -1284,12 +1296,12 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Delay combined with flex periods
+ // #16 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'delay' => 0,
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1,00:00-24:00'],
@@ -1302,16 +1314,16 @@ class testFormItemPrototype extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": must have at least one interval greater than 0.'
]
]
],
- // Delay combined with flex periods
+ // #17 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex2',
- 'key' => 'item-flex-delay2',
+ 'key' => 'item-flex-delay2[{#KEY}]',
'delay' => 0,
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-5,00:00-24:00'],
@@ -1321,78 +1333,78 @@ class testFormItemPrototype extends CLegacyWebTest {
'formCheck' => true
]
],
- // Delay combined with flex periods
+ // #18 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1-5,00:00-24:00'],
['flexDelay' => 0, 'flexTime' => '6-7,00:00-24:00']
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
- // Delay combined with flex periods
+ // #19 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay3',
+ 'key' => 'item-flex-delay3[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-5,00:00-24:00'],
['flexDelay' => 50, 'flexTime' => '6-7,00:00-24:00']
]
]
],
- // Delay combined with flex periods
+ // #20 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay4',
+ 'key' => 'item-flex-delay4[{#KEY}]',
'delay' => 0,
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-7,00:00-24:00']
]
]
],
- // Delay combined with flex periods
+ // #21 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1-7,00:00-24:00']
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
- // Delay combined with flex periods
+ // #22 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay5',
+ 'key' => 'item-flex-delay5[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-7,00:00-24:00']
]
]
],
- // Delay combined with flex periods
+ // #23 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1-5,00:00-24:00'],
['flexDelay' => 0, 'flexTime' => '6-7,00:00-24:00'],
@@ -1401,16 +1413,16 @@ class testFormItemPrototype extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
- // Delay combined with flex periods
+ // #24 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-5,00:00-24:00'],
['flexDelay' => 50, 'flexTime' => '6-7,00:00-24:00'],
@@ -1419,48 +1431,48 @@ class testFormItemPrototype extends CLegacyWebTest {
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
- // Delay combined with flex periods
+ // #25 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-7,00:00-24:00'],
['flexDelay' => 0, 'flexTime' => '1-7,00:00-24:00']
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
- // Delay combined with flex periods
+ // #26 Delay combined with flex periods
[
[
'expected' => TEST_BAD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay',
+ 'key' => 'item-flex-delay[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1-7,00:00-24:00'],
['flexDelay' => 50, 'flexTime' => '1-7,00:00-24:00']
],
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Item will not be refreshed. Please enter a correct update interval.'
+ 'Invalid parameter "/1/delay": non-active intervals cannot fill the entire time.'
]
]
],
- // Delay combined with flex periods
+ // #27 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay6',
+ 'key' => 'item-flex-delay6[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1,00:00-24:00', 'remove' => true],
['flexDelay' => 0, 'flexTime' => '2,00:00-24:00', 'remove' => true],
@@ -1479,24 +1491,24 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Delay combined with flex periods
+ // #28 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex',
- 'key' => 'item-flex-delay7',
+ 'key' => 'item-flex-delay7[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1-7,00:00-24:00', 'remove' => true],
['flexDelay' => 50, 'flexTime' => '1-7,00:00-24:00']
]
]
],
- // Delay combined with flex periods
+ // #29 Delay combined with flex periods
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex Check',
- 'key' => 'item-flex-delay8',
+ 'key' => 'item-flex-delay8[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 0, 'flexTime' => '1-5,00:00-24:00', 'remove' => true],
['flexDelay' => 0, 'flexTime' => '6-7,00:00-24:00', 'remove' => true],
@@ -1507,12 +1519,12 @@ class testFormItemPrototype extends CLegacyWebTest {
'formCheck' => true
]
],
- // Seven flexfields - save OK
+ // #30 Seven flexfields - save OK
[
[
'expected' => TEST_GOOD,
'name' => 'Item flex-maximum save OK',
- 'key' => 'item-flex-maximum-save',
+ 'key' => 'item-flex-maximum-save[{#KEY}]',
'flexPeriod' => [
['flexDelay' => 50, 'flexTime' => '1-7,00:00-24:00'],
['flexDelay' => 50, 'flexTime' => '1-7,00:00-24:00'],
@@ -1526,367 +1538,366 @@ class testFormItemPrototype extends CLegacyWebTest {
'formCheck' => true
]
],
- // History
+ // #31 History
[
[
'expected' => TEST_BAD,
'name' => 'Item history',
- 'key' => 'item-history-empty',
+ 'key' => 'item-history-empty[{#KEY}]',
'history' => ' ',
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "history": a time unit is expected.'
+ 'Invalid parameter "/1/history": cannot be empty.'
]
]
],
- // History
+ // #32 History
[
[
'expected' => TEST_BAD,
'name' => 'Item history',
- 'key' => 'item-history-test',
+ 'key' => 'item-history-test[{#KEY}]',
'history' => 3599,
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "history": value must be one of 0, 3600-788400000.'
+ 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
]
],
- // History
+ // #33 History
[
[
'expected' => TEST_BAD,
'name' => 'Item history',
- 'key' => 'item-history-test',
+ 'key' => 'item-history-test[{#KEY}]',
'history' => 788400001,
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "history": value must be one of 0, 3600-788400000.'
+ 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
]
],
- // History
+ // #34 History
[
[
'expected' => TEST_BAD,
'name' => 'Item history',
- 'key' => 'item-history-test',
+ 'key' => 'item-history-test[{#KEY}]',
'history' => '-1',
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "history": a time unit is expected.'
+ 'Invalid parameter "/1/history": value must be one of 0, 3600-788400000.'
]
]
],
- // Trends
+ // #35 Trends
[
[
'expected' => TEST_BAD,
'name' => 'Item trends',
- 'key' => 'item-trends-empty',
+ 'key' => 'item-trends-empty[{#KEY}]',
'trends' => ' ',
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "trends": a time unit is expected.'
+ 'Invalid parameter "/1/trends": cannot be empty.'
]
]
],
- // Trends
+ // #36 Trends
[
[
'expected' => TEST_BAD,
'name' => 'Item trends',
- 'key' => 'item-trends-test',
+ 'key' => 'item-trends-test[{#KEY}]',
'trends' => '-1',
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "trends": a time unit is expected.'
+ 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
]
],
- // Trends
+ // #37 Trends
[
[
'expected' => TEST_BAD,
'name' => 'Item trends',
- 'key' => 'item-trends-test',
+ 'key' => 'item-trends-test[{#KEY}]',
'trends' => 86399,
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "trends": value must be one of 0, 86400-788400000.'
+ 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
]
],
- // Trends
+ // #38 Trends
[
[
'expected' => TEST_BAD,
'name' => 'Item trends',
- 'key' => 'item-trends-test',
+ 'key' => 'item-trends-test[{#KEY}]',
'trends' => 788400001,
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "trends": value must be one of 0, 86400-788400000.'
+ 'Invalid parameter "/1/trends": value must be one of 0, 86400-788400000.'
]
]
],
+ // #39
[
[
'expected' => TEST_GOOD,
'name' => '!@#$%^&*()_+-=[]{};:"|,./<>?',
- 'key' => 'item-symbols-test',
+ 'key' => 'item-symbols-test[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #40
[
[
'expected' => TEST_GOOD,
'name' => 'itemSimple',
- 'key' => 'key-template-simple',
+ 'key' => 'key-template-simple[{#KEY}]',
'formCheck' => true,
'dbCheck' => true
]
],
+ // #41
[
[
'expected' => TEST_GOOD,
'name' => 'itemName',
- 'key' => 'key-template-item',
+ 'key' => 'key-template-item[{#KEY}]',
'formCheck' => true
]
],
+ //#42
[
[
'expected' => TEST_GOOD,
'name' => 'itemTrigger',
- 'key' => 'key-template-trigger',
+ 'key' => 'key-template-trigger[{#KEY}]',
'formCheck' => true,
'dbCheck' => true,
'remove' => true
]
],
+ // #43
[
[
'expected' => TEST_GOOD,
'name' => 'itemRemove',
- 'key' => 'key-template-remove',
+ 'key' => 'key-template-remove[{#KEY}]',
'formCheck' => true,
'dbCheck' => true,
'remove' => true]
],
- [
- [
- 'expected' => TEST_BAD,
- 'name' => 'itemInheritance',
- 'key' => 'test-item-reuse',
- 'error_msg' => 'Cannot add item prototype',
- 'errors' => [
- 'Item with key "test-item-reuse" already exists on "Simple form test host".'
- ]
- ]
- ],
- // List of all item types
+ // #44 List of all item types
[
[
'expected' => TEST_GOOD,
'type' => 'Zabbix agent',
'name' => 'Zabbix agent',
- 'key' => 'item-zabbix-agent',
+ 'key' => 'item-zabbix-agent[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
- // Update and custom intervals are hidden if item key is mqtt.get
+ // #45 Update and custom intervals are hidden if item key is mqtt.get
[
[
'expected' => TEST_GOOD,
'type' => 'Zabbix agent (active)',
'name' => 'Zabbix agent (active) mqtt',
- 'key' => 'mqtt.get[0]',
+ 'key' => 'mqtt.get[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #46
[
[
'expected' => TEST_GOOD,
'type' => 'Zabbix agent (active)',
'name' => 'Zabbix agent (active)',
- 'key' => 'item-zabbix-agent-active',
+ 'key' => 'item-zabbix-agent-active[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #47
[
[
'expected' => TEST_GOOD,
'type' => 'Simple check',
'name' => 'Simple check',
- 'key' => 'item-simple-check',
+ 'key' => 'item-simple-check[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #48
[
[
'expected' => TEST_GOOD,
'type' => 'SNMP agent',
'name' => 'SNMP agent',
- 'key' => 'item-snmp-agent',
+ 'key' => 'item-snmp-agent[{#KEY}]',
'snmp_oid' => '[IF-MIB::]ifInOctets.1',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #49
[
[
'expected' => TEST_GOOD,
'type' => 'SNMP trap',
'name' => 'SNMP trap',
- 'key' => 'snmptrap.fallback',
+ 'key' => 'snmptrap.fallback[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #50
[
[
'expected' => TEST_GOOD,
'type' => 'Zabbix internal',
'name' => 'Zabbix internal',
- 'key' => 'item-zabbix-internal',
+ 'key' => 'item-zabbix-internal[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #51
[
[
'expected' => TEST_GOOD,
'type' => 'Zabbix trapper',
'name' => 'Zabbix trapper',
- 'key' => 'item-zabbix-trapper',
+ 'key' => 'item-zabbix-trapper[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #52
[
[
'expected' => TEST_GOOD,
'type' => 'Zabbix trapper',
'name' => 'Zabbix trapper with macro in allowed hosts field',
- 'key' => 'item-zabbix-trapper-macro',
+ 'key' => 'item-zabbix-trapper-macro[{#KEY}]',
'allowed_hosts' => '{$TEST}',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #53
[
[
'expected' => TEST_GOOD,
'type' => 'Zabbix trapper',
'name' => 'Zabbix trapper with macro and ip in allowed hosts field',
- 'key' => 'item-zabbix-trapper-macro-ip',
+ 'key' => 'item-zabbix-trapper-macro-ip[{#KEY}]',
'allowed_hosts' => '{$MACRO},127.0.0.1',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #54
[
[
'expected' => TEST_GOOD,
'type' => 'External check',
'name' => 'External check',
- 'key' => 'item-external-check',
+ 'key' => 'item-external-check[{#KEY}]',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #55
[
[
'expected' => TEST_GOOD,
'type' => 'Database monitor',
'name' => 'Database monitor',
- 'key' => 'item-database-monitor',
+ 'key' => 'item-database-monitor[{#KEY}]',
'params_ap' => 'SELECT * FROM items',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #56
[
[
'expected' => TEST_GOOD,
'type' => 'IPMI agent',
'name' => 'IPMI agent',
- 'key' => 'item-ipmi-agent',
+ 'key' => 'item-ipmi-agent[{#KEY}]',
'ipmi_sensor' => 'ipmi_sensor',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #57
[
[
'expected' => TEST_GOOD,
'type' => 'IPMI agent',
'name' => 'IPMI agent with spaces',
- 'key' => 'item-ipmi-agent-spaces',
+ 'key' => 'item-ipmi-agent-spaces[{#KEY}]',
'ipmi_sensor' => ' ipmi_sensor ',
'dbCheck' => true,
'formCheck' => true
]
],
- // IPMI sensor is optional if item key is ipmi.get
- [
- [
- 'expected' => TEST_GOOD,
- 'type' => 'IPMI agent',
- 'name' => 'IPMI agent with ipmi.get',
- 'key' => 'ipmi.get',
- 'dbCheck' => true,
- 'formCheck' => true
- ]
- ],
+ // #58
[
[
'expected' => TEST_GOOD,
'type' => 'SSH agent',
'name' => 'SSH agent',
- 'key' => 'item-ssh-agent',
+ 'key' => 'item-ssh-agent[{#KEY}]',
'username' => 'zabbix',
'params_es' => 'executed script',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #59
[
[
'expected' => TEST_GOOD,
'type' => 'TELNET agent',
'name' => 'TELNET agent',
- 'key' => 'item-telnet-agent',
+ 'key' => 'item-telnet-agent[{#KEY}]',
'username' => 'zabbix',
'params_es' => 'executed script',
'dbCheck' => true,
'formCheck' => true
]
],
+ // #60
[
[
'expected' => TEST_BAD,
'type' => 'IPMI agent',
'name' => 'IPMI agent error',
- 'key' => 'item-ipmi-agent-error',
+ 'key' => 'item-ipmi-agent-error[{#KEY}]',
'error_msg' => 'Cannot add item prototype',
'errors' => [
- 'Incorrect value for field "ipmi_sensor": cannot be empty.'
+ 'Invalid parameter "/1/ipmi_sensor": cannot be empty.'
]
]
],
+ // #61
[
[
'expected' => TEST_BAD,
'type' => 'SSH agent',
'name' => 'SSH agent error',
- 'key' => 'item-ssh-agent-error',
+ 'key' => 'item-ssh-agent-error[{#KEY}]',
'error_msg' => 'Page received incorrect data',
'errors' => [
'Incorrect value for field "User name": cannot be empty.',
@@ -1894,12 +1905,13 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
+ // #62
[
[
'expected' => TEST_BAD,
'type' => 'TELNET agent',
'name' => 'TELNET agent error',
- 'key' => 'item-telnet-agent-error',
+ 'key' => 'item-telnet-agent-error[{#KEY}]',
'error_msg' => 'Page received incorrect data',
'errors' => [
'Incorrect value for field "User name": cannot be empty.',
@@ -1907,42 +1919,45 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
+ // #63
[
[
'expected' => TEST_GOOD,
'type' => 'JMX agent',
'name' => 'JMX agent',
- 'key' => 'proto-jmx-agent',
+ 'key' => 'proto-jmx-agent[{#KEY}]',
'dbCheck' => true,
'formCheck' => true,
'remove' => true
]
],
+ // #64
[
[
'expected' => TEST_GOOD,
'type' => 'Calculated',
'name' => 'Calculated',
- 'key' => 'item-calculated',
+ 'key' => 'item-calculated[{#KEY}]',
'params_f' => '"formula"',
'dbCheck' => true,
'formCheck' => true,
'remove' => true
]
],
+ // #65
[
[
'expected' => TEST_BAD,
'type' => 'Calculated',
'name' => 'Calculated',
- 'key' => 'item-calculated',
+ 'key' => 'item-calculated[{#KEY}]',
'error_msg' => 'Page received incorrect data',
'errors' => [
'Incorrect value for field "Formula": cannot be empty.'
]
]
],
- // Empty SQL query
+ // #66 Empty SQL query
[
[
'expected' => TEST_BAD,
@@ -1954,7 +1969,7 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Default
+ // #67 Default
[
[
'expected' => TEST_BAD,
@@ -1967,7 +1982,7 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Default
+ // #68 Default
[
[
'expected' => TEST_BAD,
@@ -1981,7 +1996,7 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Default
+ // #69 Default
[
[
'expected' => TEST_BAD,
@@ -1995,7 +2010,7 @@ class testFormItemPrototype extends CLegacyWebTest {
]
]
],
- // Default
+ // #70 Default
[
[
'expected' => TEST_BAD,
diff --git a/ui/tests/selenium/items/testFormTestItem.php b/ui/tests/selenium/items/testFormTestItem.php
index dc663970428..4ca6d8e5812 100644
--- a/ui/tests/selenium/items/testFormTestItem.php
+++ b/ui/tests/selenium/items/testFormTestItem.php
@@ -24,6 +24,8 @@ require_once dirname(__FILE__).'/../common/testItemTest.php';
/**
* "Test item" function tests.
*
+ * @dataSource Proxies
+ *
* @backup items
*/
class testFormTestItem extends testItemTest{
diff --git a/ui/tests/selenium/items/testFormTestItemPrototype.php b/ui/tests/selenium/items/testFormTestItemPrototype.php
index cf15739313e..bd114a4655b 100644
--- a/ui/tests/selenium/items/testFormTestItemPrototype.php
+++ b/ui/tests/selenium/items/testFormTestItemPrototype.php
@@ -24,6 +24,8 @@ require_once dirname(__FILE__).'/../common/testItemTest.php';
/**
* "Test item prototype" function tests.
*
+ * @dataSource Proxies
+ *
* @backup items
*/
class testFormTestItemPrototype extends testItemTest {
@@ -57,7 +59,7 @@ class testFormTestItemPrototype extends testItemTest {
* @depends testFormTestItemPrototype_CheckButtonStateHost
*/
public function testFormTestItemPrototype_TestItemHost($data) {
- $this->checkTestItem($data, true, self::HOST_LLD_ID, null, true);
+ $this->checkTestItem($data, true, self::HOST_LLD_ID, null, false);
}
/**
@@ -67,7 +69,7 @@ class testFormTestItemPrototype extends testItemTest {
*
* @depends testFormTestItemPrototype_CheckButtonStateTemplate
*/
- public function ttestFormTestItemPrototype_TestItemTemplate($data) {
- $this->checkTestItem($data, false, self::TEMPLATE_LLD_ID, null, true);
+ public function testFormTestItemPrototype_TestItemTemplate($data) {
+ $this->checkTestItem($data, false, self::TEMPLATE_LLD_ID, null, false);
}
}
diff --git a/ui/tests/selenium/items/testInheritanceItem.php b/ui/tests/selenium/items/testInheritanceItem.php
index 667e1582233..7eb539763e2 100644
--- a/ui/tests/selenium/items/testInheritanceItem.php
+++ b/ui/tests/selenium/items/testInheritanceItem.php
@@ -75,7 +75,8 @@ class testInheritanceItem extends CLegacyWebTest {
'name' => 'itemInheritance',
'key' => 'key-item-inheritance',
'errors' => [
- 'Item "key-item-inheritance" already exists on "Template inheritance test host", inherited from another template.'
+ 'Cannot inherit LLD rule with key "key-item-inheritance" of template "Inheritance test template" '.
+ 'to host "Template inheritance test host", because a discovered item with the same key already exists.'
]
]
]
diff --git a/ui/tests/selenium/items/testInheritanceItemPrototype.php b/ui/tests/selenium/items/testInheritanceItemPrototype.php
index 19e0689ac59..95046f2464c 100644
--- a/ui/tests/selenium/items/testInheritanceItemPrototype.php
+++ b/ui/tests/selenium/items/testInheritanceItemPrototype.php
@@ -69,16 +69,18 @@ class testInheritanceItemPrototype extends CLegacyWebTest {
[
'expected' => TEST_GOOD,
'name' => 'testInheritanceItemPrototype6',
- 'key' => 'item-prototype-test6'
+ 'key' => 'item-prototype-test6[{#KEY}]'
]
],
[
[
'expected' => TEST_BAD,
'name' => 'testInheritanceItemPrototype5',
- 'key' => 'item-prototype-test5',
+ 'key' => 'item-prototype-test5[{#KEY}]',
'errors' => [
- 'Item prototype "item-prototype-test5" already exists on "Template inheritance test host", inherited from another template'
+ 'Cannot inherit item prototype with key "item-prototype-test5[{#KEY}]" of template '.
+ '"Inheritance test template" to host "Template inheritance test host", because an item '.
+ 'with the same key is already inherited from template "Inheritance test template 2".'
]
]
]
diff --git a/ui/tests/selenium/items/testItemTypeSelection.php b/ui/tests/selenium/items/testItemTypeSelection.php
index 363f5a9960f..adb7d7140e6 100644
--- a/ui/tests/selenium/items/testItemTypeSelection.php
+++ b/ui/tests/selenium/items/testItemTypeSelection.php
@@ -49,7 +49,7 @@ class testItemTypeSelection extends CWebTest {
[
'fields' => [
'Name' => 'Character',
- 'Key' => 'agent.hostmetadata'
+ 'Key' => 'agent.hostmetadata[{#KEY}]'
],
'type' => 'Character'
]
@@ -58,7 +58,7 @@ class testItemTypeSelection extends CWebTest {
[
'fields' => [
'Name' => 'Numeric unsigned',
- 'Key' => 'agent.ping'
+ 'Key' => 'agent.ping[{#KEY}]'
],
'type' => 'Numeric (unsigned)'
]
@@ -68,7 +68,7 @@ class testItemTypeSelection extends CWebTest {
'fields' => [
'Name' => 'Numeric float',
- 'Key' => 'net.udp.service.perf[service]'
+ 'Key' => 'net.udp.service.perf[service,{#KEY}]'
],
'type' => 'Numeric (float)'
]
@@ -78,7 +78,7 @@ class testItemTypeSelection extends CWebTest {
'fields' => [
'Type' => 'Zabbix agent (active)',
'Name' => 'Log',
- 'Key' => 'eventlog[name]'
+ 'Key' => 'eventlog[name,{#KEY}]'
],
'type' => 'Log'
]
@@ -87,7 +87,7 @@ class testItemTypeSelection extends CWebTest {
[
'fields' => [
'Name' => 'Log',
- 'Key' => 'eventlog[agent]'
+ 'Key' => 'eventlog[agent,{#KEY}]'
],
'type' => 'Numeric (unsigned)'
]
@@ -96,7 +96,7 @@ class testItemTypeSelection extends CWebTest {
[
'fields' => [
'Name' => 'Text',
- 'Key' => 'net.if.discovery'
+ 'Key' => 'net.if.discovery[{#KEY}]'
],
'type' => 'Text'
]
@@ -105,7 +105,7 @@ class testItemTypeSelection extends CWebTest {
[
'fields' => [
'Name' => 'Custom key',
- 'Key' => 'custom.key'
+ 'Key' => 'custom.key[{#KEY}]'
],
'type' => 'Numeric (unsigned)'
]
@@ -114,7 +114,7 @@ class testItemTypeSelection extends CWebTest {
[
'fields' => [
'Name' => 'Custom key 2',
- 'Key' => 'custom.key2',
+ 'Key' => 'custom.key2[{#KEY}]',
'Type of information' => 'Text'
],
'type' => 'Text',
@@ -125,7 +125,7 @@ class testItemTypeSelection extends CWebTest {
[
'fields' => [
'Name' => 'Test Info Hint',
- 'Key' => 'net.if.list',
+ 'Key' => 'net.if.list[{#KEY}]',
'Type of information' => 'Log'
],
'hint' => true,
diff --git a/ui/tests/selenium/lld/testPageLowLevelDiscovery.php b/ui/tests/selenium/lld/testPageLowLevelDiscovery.php
index 801277e8ae1..de22fc2ce52 100644
--- a/ui/tests/selenium/lld/testPageLowLevelDiscovery.php
+++ b/ui/tests/selenium/lld/testPageLowLevelDiscovery.php
@@ -24,7 +24,8 @@ require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
/**
* @backup items
- * @dataSource ExecuteNowAction
+ *
+ * @dataSource ExecuteNowAction, DiscoveredHosts
*/
class testPageLowLevelDiscovery extends CWebTest {
@@ -422,8 +423,12 @@ class testPageLowLevelDiscovery extends CWebTest {
'I2-lvl1-trap-num: DR4-I2-dep-trap',
'Last error message of scenario "Web scenario for execute now".: DR5-web-dep',
'Zabbix server health: Zabbix stats cluster: High availability cluster node discovery',
+ 'LLD for Discovered host tests',
'Linux by Zabbix agent: Mounted filesystem discovery',
'Linux by Zabbix agent: Network interface discovery',
+ 'Test of discovered host 1 template for unlink: Template1 discovery rule',
+ 'Test of discovered host 2 template for clear: Template2 discovery rule',
+ 'Test of discovered host Template: Template discovery rule',
'Zabbix server health: Zabbix stats proxy: Zabbix proxy discovery'
]
]
diff --git a/ui/tests/selenium/modules/module_number_1/Module.php b/ui/tests/selenium/modules/module_number_1/Module.php
index 29ac7341018..7f2db59f59f 100644
--- a/ui/tests/selenium/modules/module_number_1/Module.php
+++ b/ui/tests/selenium/modules/module_number_1/Module.php
@@ -2,7 +2,7 @@
namespace Modules\Example_A;
-use Core\CModule,
+use Zabbix\Core\CModule,
APP,
CMenu;
diff --git a/ui/tests/selenium/modules/module_number_1/manifest.json b/ui/tests/selenium/modules/module_number_1/manifest.json
index a5a5d681f8a..24e4b4bd020 100644
--- a/ui/tests/selenium/modules/module_number_1/manifest.json
+++ b/ui/tests/selenium/modules/module_number_1/manifest.json
@@ -1,5 +1,5 @@
{
- "manifest_version": 1,
+ "manifest_version": 2,
"id": "1st module id",
"name": "1st Module name",
"author": "1st Module author",
diff --git a/ui/tests/selenium/modules/module_number_1/views/first.module.php b/ui/tests/selenium/modules/module_number_1/views/first.module.php
index 241c411bb00..253dfb54ba9 100644
--- a/ui/tests/selenium/modules/module_number_1/views/first.module.php
+++ b/ui/tests/selenium/modules/module_number_1/views/first.module.php
@@ -1,6 +1,6 @@
<?php
-(new CWidget())
+(new CHtmlPage())
->addItem(
(new CTag('h1', true, 'If You see this message - 1st module is working'))
)->show();
diff --git a/ui/tests/selenium/modules/module_number_2/Module.php b/ui/tests/selenium/modules/module_number_2/Module.php
index 749400799c7..4bf34ee290d 100644
--- a/ui/tests/selenium/modules/module_number_2/Module.php
+++ b/ui/tests/selenium/modules/module_number_2/Module.php
@@ -2,7 +2,7 @@
namespace Modules\Example_B;
-use Core\CModule,
+use Zabbix\Core\CModule,
APP,
CMenu;
diff --git a/ui/tests/selenium/modules/module_number_2/manifest.json b/ui/tests/selenium/modules/module_number_2/manifest.json
index 4039b0c3d18..fb444f702e0 100644
--- a/ui/tests/selenium/modules/module_number_2/manifest.json
+++ b/ui/tests/selenium/modules/module_number_2/manifest.json
@@ -1,5 +1,5 @@
{
- "manifest_version": 0.99,
+ "manifest_version": 2.0,
"id": "two",
"name": "2nd Module name !@#$%^&*()_+",
"author": "2nd Module author !@#$%^&*()_+",
diff --git a/ui/tests/selenium/modules/module_number_2/views/second.module.php b/ui/tests/selenium/modules/module_number_2/views/second.module.php
index 39b7f7acfb2..b16e7f3a6ef 100644
--- a/ui/tests/selenium/modules/module_number_2/views/second.module.php
+++ b/ui/tests/selenium/modules/module_number_2/views/second.module.php
@@ -1,6 +1,6 @@
<?php
-(new CWidget())
+(new CHtmlPage())
->addItem(
(new CTag('h1', true, '2nd module is also working'))
)->show();
diff --git a/ui/tests/selenium/modules/module_number_3/Module.php b/ui/tests/selenium/modules/module_number_3/Module.php
index ab32c67e4f5..62435cd5515 100644
--- a/ui/tests/selenium/modules/module_number_3/Module.php
+++ b/ui/tests/selenium/modules/module_number_3/Module.php
@@ -2,7 +2,7 @@
namespace Modules\Example_C;
-use Core\CModule,
+use Zabbix\Core\CModule,
APP,
CMenu;
diff --git a/ui/tests/selenium/modules/module_number_3/manifest.json b/ui/tests/selenium/modules/module_number_3/manifest.json
index 3266063c0b3..75117cee725 100644
--- a/ui/tests/selenium/modules/module_number_3/manifest.json
+++ b/ui/tests/selenium/modules/module_number_3/manifest.json
@@ -1,5 +1,5 @@
{
- "manifest_version": 1.01,
+ "manifest_version": 2.01,
"id": "3",
"name": "This module should not be loaded",
"author": "module author",
diff --git a/ui/tests/selenium/modules/module_number_3/views/third.module.php b/ui/tests/selenium/modules/module_number_3/views/third.module.php
index b3a60b195d0..085a1ee086e 100644
--- a/ui/tests/selenium/modules/module_number_3/views/third.module.php
+++ b/ui/tests/selenium/modules/module_number_3/views/third.module.php
@@ -1,6 +1,6 @@
<?php
-(new CWidget())
+(new CHtmlPage())
->addItem(
(new CTag('h1', true, 'You should not see this message'))
)->show();
diff --git a/ui/tests/selenium/modules/module_number_4/Module.php b/ui/tests/selenium/modules/module_number_4/Module.php
index dcd0bb13a90..52c472c3114 100644
--- a/ui/tests/selenium/modules/module_number_4/Module.php
+++ b/ui/tests/selenium/modules/module_number_4/Module.php
@@ -2,7 +2,7 @@
namespace Modules\Example_A;
-use Core\CModule,
+use Zabbix\Core\CModule,
APP,
CMenu;
diff --git a/ui/tests/selenium/modules/module_number_4/manifest.json b/ui/tests/selenium/modules/module_number_4/manifest.json
index e5a3450b197..249a5fb208b 100644
--- a/ui/tests/selenium/modules/module_number_4/manifest.json
+++ b/ui/tests/selenium/modules/module_number_4/manifest.json
@@ -1,5 +1,5 @@
{
- "manifest_version": 0.01,
+ "manifest_version": 2.00,
"id": "4",
"name": "4th Module",
"author": "",
diff --git a/ui/tests/selenium/modules/module_number_4/views/forth.module.php b/ui/tests/selenium/modules/module_number_4/views/forth.module.php
index bd1000cc1b6..f0ba934eaa8 100644
--- a/ui/tests/selenium/modules/module_number_4/views/forth.module.php
+++ b/ui/tests/selenium/modules/module_number_4/views/forth.module.php
@@ -1,6 +1,6 @@
<?php
-(new CWidget())
+(new CHtmlPage())
->addItem(
(new CTag('h1', true, '4th module - cannot be enabled together with 1st module'))
)->show();
diff --git a/ui/tests/selenium/modules/module_number_5/Module.php b/ui/tests/selenium/modules/module_number_5/Module.php
index 0f93a364c4e..f9120308bb5 100644
--- a/ui/tests/selenium/modules/module_number_5/Module.php
+++ b/ui/tests/selenium/modules/module_number_5/Module.php
@@ -2,7 +2,7 @@
namespace Modules\Example_E;
-use Core\CModule,
+use Zabbix\Core\CModule,
APP,
CMenu;
diff --git a/ui/tests/selenium/modules/module_number_5/manifest.json b/ui/tests/selenium/modules/module_number_5/manifest.json
index 7f1802f3548..442fbabae04 100644
--- a/ui/tests/selenium/modules/module_number_5/manifest.json
+++ b/ui/tests/selenium/modules/module_number_5/manifest.json
@@ -1,5 +1,5 @@
{
- "manifest_version": 0.01,
+ "manifest_version": 2,
"id": "5",
"name": "5th Module",
"author": "",
diff --git a/ui/tests/selenium/modules/module_number_5/views/fifth.module.php b/ui/tests/selenium/modules/module_number_5/views/fifth.module.php
index 5f702c5a5a5..5cd1eee6bea 100644
--- a/ui/tests/selenium/modules/module_number_5/views/fifth.module.php
+++ b/ui/tests/selenium/modules/module_number_5/views/fifth.module.php
@@ -1,6 +1,6 @@
<?php
-(new CWidget())
+(new CHtmlPage())
->addItem(
(new CTag('h1', true, 'ЕÑли Ñ‚Ñ‹ Ñто читаешь то 5ый модуль работает'))
)->show();
diff --git a/ui/tests/selenium/modules/module_number_6/Module.php b/ui/tests/selenium/modules/module_number_6/Module.php
index 4e19b0c8107..d5d5837f38e 100644
--- a/ui/tests/selenium/modules/module_number_6/Module.php
+++ b/ui/tests/selenium/modules/module_number_6/Module.php
@@ -2,7 +2,7 @@
namespace Modules\Example_F;
-use Core\CModule,
+use Zabbix\Core\CModule,
APP,
CMenu;
diff --git a/ui/tests/selenium/modules/module_number_6/manifest.json b/ui/tests/selenium/modules/module_number_6/manifest.json
index d0a79518577..474d69d8321 100644
--- a/ui/tests/selenium/modules/module_number_6/manifest.json
+++ b/ui/tests/selenium/modules/module_number_6/manifest.json
@@ -1,5 +1,5 @@
{
- "manifest_version": 0.01,
+ "manifest_version": 2.000,
"id": "6",
"name": "шеÑтой модуль",
"author": "Работник ЗаббикÑа",
diff --git a/ui/tests/selenium/testPageLatestData.php b/ui/tests/selenium/monitoring/testPageMonitoringLatestData.php
index f0f0db60635..53724698e92 100644
--- a/ui/tests/selenium/testPageLatestData.php
+++ b/ui/tests/selenium/monitoring/testPageMonitoringLatestData.php
@@ -18,16 +18,17 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CWebTest.php';
-require_once dirname(__FILE__).'/../include/helpers/CDataHelper.php';
-require_once dirname(__FILE__).'/traits/TableTrait.php';
+
+require_once dirname(__FILE__).'/../../include/CWebTest.php';
+require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
+require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
* @backup history_uint, profiles
*
* @onBefore prepareItemTagsData
*/
-class testPageLatestData extends CWebTest {
+class testPageMonitoringLatestData extends CWebTest {
use TableTrait;
@@ -108,7 +109,7 @@ class testPageLatestData extends CWebTest {
", ".zbx_dbstr($time).", 1, 0)");
}
- public function testPageLatestData_CheckLayout() {
+ public function testPageMonitoringLatestData_CheckLayout() {
$this->page->login()->open('zabbix.php?action=latest.view&filter_reset=1')->waitUntilReady();
$this->page->assertTitle('Latest data');
$this->page->assertHeader('Latest data');
@@ -460,7 +461,7 @@ class testPageLatestData extends CWebTest {
*
* @dataProvider getFilterData
*/
- public function testPageLatestData_Filter($data) {
+ public function testPageMonitoringLatestData_Filter($data) {
$this->page->login()->open('zabbix.php?action=latest.view')->waitUntilReady();
$form = $this->query('name:zbx_filter')->waitUntilPresent()->asForm()->one();
$table = $this->query('xpath://table[contains(@class, "overflow-ellipsis")]')->asTable()->waitUntilPresent()->one();
@@ -558,7 +559,7 @@ class testPageLatestData extends CWebTest {
*
* @dataProvider getSubfilterData
*/
- public function testPageLatestData_Subfilter($data) {
+ public function testPageMonitoringLatestData_Subfilter($data) {
$hostid = CDBHelper::getValue('SELECT hostid FROM hosts WHERE name='.zbx_dbstr(self::HOSTNAME));
$link = (CTestArrayHelper::get($data['subfilter'], 'Data'))
@@ -586,7 +587,7 @@ class testPageLatestData extends CWebTest {
/**
* Test for clicking on particular item tag in table and checking that items are filtered by this tag.
*/
- public function testPageLatestData_ClickTag() {
+ public function testPageMonitoringLatestData_ClickTag() {
$tag = ['tag' => 'component: ', 'value' => 'storage'];
$hostid = CDBHelper::getValue('SELECT hostid FROM hosts WHERE name='.zbx_dbstr('ЗÐББИКС Сервер'));
@@ -617,7 +618,7 @@ class testPageLatestData extends CWebTest {
/**
* Test that checks if host has visible name, it cannot be found by host name on Latest Data page.
*/
- public function testPageLatestData_NoHostNames() {
+ public function testPageMonitoringLatestData_NoHostNames() {
$result = [
CDBHelper::getRandom(
'SELECT host'.
@@ -756,7 +757,7 @@ class testPageLatestData extends CWebTest {
/**
* @dataProvider getItemDescription
*/
- public function testPageLatestData_checkItemDescription($data) {
+ public function testPageMonitoringLatestData_checkItemDescription($data) {
// Open Latest data for host 'testPageHistory_CheckLayout'
$this->page->login()->open('zabbix.php?&action=latest.view&show_details=0&hostids%5B%5D='.$data['hostid'])
->waitUntilReady();
@@ -792,7 +793,7 @@ class testPageLatestData extends CWebTest {
/**
* Maintenance icon hintbox.
*/
- public function testPageLatestData_checkMaintenanceIcon() {
+ public function testPageMonitoringLatestData_checkMaintenanceIcon() {
$this->page->login()->open('zabbix.php?action=latest.view')->waitUntilReady();
$form = $this->query('name:zbx_filter')->asForm()->one();
$form->fill(['Hosts' => 'Available host in maintenance']);
@@ -808,7 +809,7 @@ class testPageLatestData extends CWebTest {
/**
* Check hint text for Last check and Last value columns
*/
- public function testPageLatestData_checkHints() {
+ public function testPageMonitoringLatestData_checkHints() {
$itemid = CDBHelper::getValue('SELECT itemid FROM items WHERE name='.zbx_dbstr('4_item'));
$time = time();
$value = '15';
diff --git a/ui/tests/selenium/preprocessing/testFormPreprocessingItem.php b/ui/tests/selenium/preprocessing/testFormPreprocessingItem.php
index 0fbfb79a2d0..e3ac95f33a1 100644
--- a/ui/tests/selenium/preprocessing/testFormPreprocessingItem.php
+++ b/ui/tests/selenium/preprocessing/testFormPreprocessingItem.php
@@ -53,7 +53,7 @@ class testFormPreprocessingItem extends testFormPreprocessing {
['type' => 'Prometheus pattern', 'parameter_1' => '{#METRICNAME}==1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
],
[
@@ -71,7 +71,7 @@ class testFormPreprocessingItem extends testFormPreprocessing {
'parameter_3' => '{#LABELNAME}'
]
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus output.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/3": invalid Prometheus label.'
]
],
[
@@ -85,7 +85,7 @@ class testFormPreprocessingItem extends testFormPreprocessing {
['type' => 'Prometheus to JSON', 'parameter_1' => '{#METRICNAME}==1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.'
]
]
]);
diff --git a/ui/tests/selenium/preprocessing/testFormPreprocessingItemPrototype.php b/ui/tests/selenium/preprocessing/testFormPreprocessingItemPrototype.php
index f3eceba132d..e71735e60f1 100644
--- a/ui/tests/selenium/preprocessing/testFormPreprocessingItemPrototype.php
+++ b/ui/tests/selenium/preprocessing/testFormPreprocessingItemPrototype.php
@@ -48,7 +48,7 @@ class testFormPreprocessingItemPrototype extends testFormPreprocessing {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Prometeus LLD macro in parameters 1',
- 'Key' => 'parameters-macro-1'
+ 'Key' => 'parameters-macro-1[{#KEY}]'
],
'preprocessing' => [
[
@@ -64,7 +64,7 @@ class testFormPreprocessingItemPrototype extends testFormPreprocessing {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Prometeus LLD macro in parameters 2',
- 'Key' => 'parameters-macro-2'
+ 'Key' => 'parameters-macro-2[{#KEY}]'
],
'preprocessing' => [
[
@@ -80,7 +80,7 @@ class testFormPreprocessingItemPrototype extends testFormPreprocessing {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Prometheus to JSON LLD macro in parameter 1 ',
- 'Key' => 'json-parameter-macro-1'
+ 'Key' => 'json-parameter-macro-1[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{#METRICNAME}==1']
@@ -92,7 +92,7 @@ class testFormPreprocessingItemPrototype extends testFormPreprocessing {
'expected' => TEST_GOOD,
'fields' => [
'Name' => 'Prometeus to Json LLD macro in parameter 2',
- 'Key' => 'json-parameters-macro-2'
+ 'Key' => 'json-parameters-macro-2[{#KEY}]'
],
'preprocessing' => [
['type' => 'Prometheus to JSON', 'parameter_1' => '{label_name="{#LABELVALUE}"}']
diff --git a/ui/tests/selenium/preprocessing/testFormPreprocessingLowLevelDiscovery.php b/ui/tests/selenium/preprocessing/testFormPreprocessingLowLevelDiscovery.php
index fed4923de2b..08ac9a46626 100644
--- a/ui/tests/selenium/preprocessing/testFormPreprocessingLowLevelDiscovery.php
+++ b/ui/tests/selenium/preprocessing/testFormPreprocessingLowLevelDiscovery.php
@@ -262,7 +262,8 @@ class testFormPreprocessingLowLevelDiscovery extends testFormPreprocessing {
['type' => 'Prometheus to JSON', 'parameter_1' => '{#METRICNAME}==1']
],
- 'error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
+ 'error' => 'Invalid parameter "/1/preprocessing/1/params/1": invalid Prometheus pattern.',
+ 'lld_error' => 'Incorrect value for field "params": invalid Prometheus pattern.'
]
]
]);
diff --git a/ui/tests/selenium/preprocessing/testFormPreprocessingTest.php b/ui/tests/selenium/preprocessing/testFormPreprocessingTest.php
index 63c15dfdabb..9a326dbb1f0 100644
--- a/ui/tests/selenium/preprocessing/testFormPreprocessingTest.php
+++ b/ui/tests/selenium/preprocessing/testFormPreprocessingTest.php
@@ -162,9 +162,7 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Left trim', 'parameter_1' => ''],
['type' => 'XML XPath', 'parameter_1' => ''],
['type' => 'JSONPath', 'parameter_1' => ''],
- ['type' => 'Custom multiplier', 'parameter_1' => ''],
['type' => 'JavaScript', 'parameter_1' => ''],
- ['type' => 'In range', 'parameter_1' => '', 'parameter_2' => ''],
['type' => 'Matches regular expression', 'parameter_1' => ''],
['type' => 'Does not match regular expression', 'parameter_1' => ''],
['type' => 'Check for error in JSON', 'parameter_1' => ''],
@@ -173,7 +171,27 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => ''],
['type' => 'Prometheus pattern', 'parameter_1' => '', 'parameter_2' => 'value']
],
- 'error' => 'Incorrect value for field "params":'
+ 'error' => 'Invalid parameter "/1/params/1": cannot be empty.'
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'preprocessing' => [
+ ['type' => 'In range', 'parameter_1' => '', 'parameter_2' => '']
+
+ ],
+ 'error' => 'Invalid parameter "/1/params": cannot be empty.'
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'preprocessing' => [
+ ['type' => 'Custom multiplier', 'parameter_1' => '']
+
+ ],
+ 'error' => 'Invalid parameter "/1/params/1": a floating point value is expected.'
]
],
[
@@ -184,7 +202,7 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Check for error using regular expression', 'parameter_1' => 'path']
],
- 'error' => 'Incorrect value for field "params": second parameter is expected.'
+ 'error' => 'Invalid parameter "/1/params/2": cannot be empty.'
]
],
[
@@ -195,7 +213,7 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Regular expression', 'parameter_1' => '', 'parameter_2' => '1'],
['type' => 'Prometheus pattern', 'parameter_1' => '', 'parameter_2' => 'label', 'parameter_3' => 'label']
],
- 'error' => 'Incorrect value for field "params": first parameter is expected.'
+ 'error' => 'Invalid parameter "/1/params/1": cannot be empty.'
]
]
];
@@ -331,7 +349,8 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Simple change'],
['type' => 'Change per second']
],
- 'error' => 'Only one change step is allowed.'
+ 'error' => 'Invalid parameter "/2": only one object can exist within '.
+ 'the combinations of (type)=((9, 10)).'
]
],
[
@@ -341,7 +360,7 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Discard unchanged'],
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => '1']
],
- 'error' => 'Only one throttling step is allowed.'
+ 'error' => 'Invalid parameter "/2": only one object can exist within the combinations of (type)=((19, 20)).'
]
],
[
@@ -352,7 +371,7 @@ class testFormPreprocessingTest extends CWebTest {
'parameter_3' => 'label_name'],
['type' => 'Prometheus to JSON', 'parameter_1' => '']
],
- 'error' => 'Only one Prometheus step is allowed.'
+ 'error' => 'Invalid parameter "/2": only one object can exist within the combinations of (type)=((22, 23)).'
]
],
[
@@ -376,7 +395,7 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Discard unchanged with heartbeat', 'parameter_1' => ''],
['type' => 'Prometheus pattern', 'parameter_1' => '', 'parameter_2' => 'value']
],
- 'error' => 'Incorrect value for field "params":'
+ 'error' => 'Invalid parameter "/1/params/1": cannot be empty.'
]
],
[
@@ -386,7 +405,7 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'Regular expression', 'parameter_1' => 'expr', 'parameter_2' => 'output'],
['type' => 'Trim', 'parameter_1' => '']
],
- 'error' => 'Incorrect value for field "params":'
+ 'error' => 'Invalid parameter "/2/params/1": cannot be empty.'
]
],
[
@@ -399,7 +418,7 @@ class testFormPreprocessingTest extends CWebTest {
['type' => 'JavaScript', 'parameter_1' => 'Script'],
['type' => 'Check for error in XML', 'parameter_1' => '']
],
- 'error' => 'Incorrect value for field "params":'
+ 'error' => 'Invalid parameter "/5/params/1": cannot be empty.'
]
]
];
@@ -528,15 +547,6 @@ class testFormPreprocessingTest extends CWebTest {
case TEST_BAD:
$message = $dialog->query('tag:output')->asMessage()->waitUntilPresent()->one();
$this->assertTrue($message->isBad());
-
- // Workaround for single step which has different message.
- $this->assertTrue($message->hasLine(
- ($id !== null && $data['preprocessing'][$id]['type'] === 'Discard unchanged with heartbeat')
- ? 'Invalid parameter "params":'
- : $data['error']
- )
- );
-
$dialog->close();
break;
diff --git a/ui/tests/selenium/problems/testFormUpdateProblem.php b/ui/tests/selenium/problems/testFormUpdateProblem.php
index f7f283832e7..838536384ce 100644
--- a/ui/tests/selenium/problems/testFormUpdateProblem.php
+++ b/ui/tests/selenium/problems/testFormUpdateProblem.php
@@ -936,12 +936,12 @@ class testFormUpdateProblem extends CWebTest {
// Check Event details page.
$row->getColumn('Time')->query('tag:a')->waitUntilClickable()->one()->click();
$this->page->assertHeader('Event details');
- $this->checkHistoryTable($this->query("xpath://div[@id=\"hat_eventactions_widget\"]//table")->asTable()->one(),
+ $this->checkHistoryTable($this->query("xpath://section[@id=\"hat_eventactions\"]//table")->asTable()->one(),
'User/Recipient', 'Action'
);
// Check Actions hint in Event list.
- $event_list_table = $this->query('xpath://div[@id="hat_eventlist_widget"]//table')->asTable()->one();
+ $event_list_table = $this->query('xpath://section[@id="hat_eventlist"]//table')->asTable()->one();
$event_list_table->getRow(0)->getColumn('Actions')->query($unsuppress_button)->waitUntilClickable()->one()->click();
$hint->invalidate();
$this->checkHistoryTable($hint->query('class:list-table')->asTable()->one(), 'User', 'Action');
diff --git a/ui/tests/selenium/testPageAvailabilityReport.php b/ui/tests/selenium/reports/testPageAvailabilityReport.php
index 75e93cc281b..5f91672f7a8 100644
--- a/ui/tests/selenium/testPageAvailabilityReport.php
+++ b/ui/tests/selenium/reports/testPageAvailabilityReport.php
@@ -18,7 +18,7 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
use Facebook\WebDriver\WebDriverBy;
diff --git a/ui/tests/selenium/reports/testPageReportsAudit.php b/ui/tests/selenium/reports/testPageReportsAudit.php
index 864ca48aeb8..864ca48aeb8 100755..100644
--- a/ui/tests/selenium/reports/testPageReportsAudit.php
+++ b/ui/tests/selenium/reports/testPageReportsAudit.php
diff --git a/ui/tests/selenium/reports/testPageReportsTriggerTop.php b/ui/tests/selenium/reports/testPageReportsTriggerTop.php
index e855b7b4ae9..9b9c1f46f56 100644
--- a/ui/tests/selenium/reports/testPageReportsTriggerTop.php
+++ b/ui/tests/selenium/reports/testPageReportsTriggerTop.php
@@ -49,6 +49,7 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
*
* @var int
*/
+ protected static $time;
protected static $one_year_ago_approx;
protected static $two_years_ago_approx;
protected static $three_months_ago_approx;
@@ -87,67 +88,81 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
$this->assertArrayHasKey('itemids', $items);
// Create triggers based on items.
- $triggers_data = [];
- foreach ($item_names as $i => $item) {
- $triggers_data[] = [
- 'description' => 'Reports trigger '.$i,
- 'expression' => 'last(/Host for Reports Trigger/'.$item.')=0',
- 'priority' => $i
- ];
- }
+ $triggers = CDataHelper::call('trigger.create', [
+ [
+ 'description' => 'Problem 1 year ago',
+ 'expression' => 'last(/Host for Reports Trigger/float)=0',
+ 'priority' => 0
+ ],
+ [
+ 'description' => 'Problem 2 years ago',
+ 'expression' => 'last(/Host for Reports Trigger/char)=0',
+ 'priority' => 1
+ ],
+ [
+ 'description' => 'Problem 3 months ago',
+ 'expression' => 'last(/Host for Reports Trigger/log)=0',
+ 'priority' => 2
+ ],
+ [
+ 'description' => 'Problem 2 months ago',
+ 'expression' => 'last(/Host for Reports Trigger/unsigned)=0',
+ 'priority' => 3
+ ]
+ ]);
- $triggers = CDataHelper::call('trigger.create', $triggers_data);
$this->assertArrayHasKey('triggerids', $triggers);
self::$triggerids = CDataHelper::getIds('description');
+ self::$time = time();
// Make timestamp a little less 1 year ago.
- self::$one_year_ago_approx = time()-31449600;
+ self::$one_year_ago_approx = self::$time - 31556952;
// Make timestamp a little less than 2 years ago.
- self::$two_years_ago_approx = time()-62985600;
-
- // Make timestamp a little less than 3 months ago.
- self::$three_months_ago_approx = time()-7872000;
+ self::$two_years_ago_approx = self::$time - 62985600;
// Make timestamp a little less than 2 months ago.
- self::$two_months_ago_approx = time()-5184000;
+ self::$two_months_ago_approx = self::$time - 5097600;
+
+ // Make timestamp a little less than 3 months ago.
+ self::$three_months_ago_approx = self::$time - 7689600;
DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005500, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 0']).', '.self::$one_year_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 0').', 0)'
+ zbx_dbstr(self::$triggerids['Problem 1 year ago']).', '.self::$one_year_ago_approx.', 0, 1, '.zbx_dbstr('Problem 1 year ago').', 0)'
);
DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005501, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 1']).', '.self::$two_years_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 1').', 1)'
+ zbx_dbstr(self::$triggerids['Problem 2 years ago']).', '.self::$two_years_ago_approx.', 0, 1, '.zbx_dbstr('Problem 2 years ago').', 1)'
);
DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005502, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 2']).', '.self::$three_months_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 2').', 2)'
+ zbx_dbstr(self::$triggerids['Problem 3 months ago']).', '.self::$three_months_ago_approx.', 0, 1, '.zbx_dbstr('Problem 3 months ago').', 2)'
);
DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005503, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 3']).', '.self::$two_months_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 3').', 3)'
+ zbx_dbstr(self::$triggerids['Problem 2 months ago']).', '.self::$two_months_ago_approx.', 0, 1, '.zbx_dbstr('Problem 2 months ago').', 3)'
);
// Create problems.
DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005500, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 0']).', '.self::$one_year_ago_approx.', 0, '.zbx_dbstr('Reports trigger 0').', 0)'
+ zbx_dbstr(self::$triggerids['Problem 1 year ago']).', '.self::$one_year_ago_approx.', 0, '.zbx_dbstr('Problem 1 year ago').', 0)'
);
DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005501, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 1']).', '.self::$two_years_ago_approx.', 0, '.zbx_dbstr('Reports trigger 1').', 1)'
+ zbx_dbstr(self::$triggerids['Problem 2 years ago']).', '.self::$two_years_ago_approx.', 0, '.zbx_dbstr('Problem 2 years ago').', 1)'
);
DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005502, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 2']).', '.self::$three_months_ago_approx.', 0, '.zbx_dbstr('Reports trigger 2').', 2)'
+ zbx_dbstr(self::$triggerids['Problem 3 months ago']).', '.self::$three_months_ago_approx.', 0, '.zbx_dbstr('Problem 3 months ago').', 2)'
);
DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005503, 0, 0, '.
- zbx_dbstr(self::$triggerids['Reports trigger 3']).', '.self::$two_months_ago_approx.', 0, '.zbx_dbstr('Reports trigger 3').', 3)'
+ zbx_dbstr(self::$triggerids['Problem 2 months ago']).', '.self::$two_months_ago_approx.', 0, '.zbx_dbstr('Problem 2 months ago').', 3)'
);
// Change triggers' state to Problem.
- DBexecute('UPDATE triggers SET value = 1 WHERE description IN ('.zbx_dbstr('Reports trigger 0').', '.
- zbx_dbstr('Reports trigger 1').', '.zbx_dbstr('Reports trigger 2').', '.zbx_dbstr('Reports trigger 3').')'
+ DBexecute('UPDATE triggers SET value = 1 WHERE description IN ('.zbx_dbstr('Problem 1 year ago').', '.
+ zbx_dbstr('Problem 2 year ago').', '.zbx_dbstr('Problem 3 months ago').', '.zbx_dbstr('Problem 2 months ago').')'
);
}
@@ -187,8 +202,10 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
'to' => 'now'
],
'result' => [
- 'Reports trigger 0',
- 'Reports trigger 1'
+ 'Problem 1 year ago',
+ 'Problem 2 months ago',
+ 'Problem 2 years ago',
+ 'Problem 3 months ago'
]
]
],
@@ -210,12 +227,15 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
'host' => 'Host for Reports Trigger'
],
'date' => [
+ 'relative' => true,
// Time is now - 2 years exactly.
- 'from' => date('Y-m-d H:i', time()-62985600)
+ 'from' => 62985600
],
'result' => [
- 'Reports trigger 0',
- 'Reports trigger 1'
+ 'Problem 1 year ago',
+ 'Problem 2 months ago',
+ 'Problem 2 years ago',
+ 'Problem 3 months ago'
]
]
],
@@ -238,12 +258,13 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
'host' => 'Host for Reports Trigger'
],
'date' => [
+ 'relative' => true,
// Time around 1 year ago.
- 'from' => date('Y-m-d H:i', time()-31449700),
- 'to' => date('Y-m-d H:i', time()-31449500)
+ 'from' => 31556990,
+ 'to' => 31556900
],
'result' => [
- 'Reports trigger 0'
+ 'Problem 1 year ago'
]
]
],
@@ -254,7 +275,9 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
'host' => 'Host for Reports Trigger'
],
'date' => [
- 'from' => date('Y-m-d H:i', time()-5183000),
+ 'relative' => true,
+ // Less thant 2 month ago.
+ 'from' => 501120,
'to' => 'now-1d/d'
]
]
@@ -262,12 +285,13 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
[
[
'date' => [
+ 'relative' => true,
// Time around 3 months ago.
- 'from' => date('Y-m-d H:i', time()-7872400),
- 'to' => date('Y-m-d H:i', time()-7870800)
+ 'from' => 7689700,
+ 'to' => 7689500
],
'result' => [
- 'Reports trigger 2'
+ 'Problem 3 months ago'
]
]
],
@@ -284,7 +308,7 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
'from' => 'now-2y'
],
'result' => [
- 'Reports trigger 2'
+ 'Problem 3 months ago'
]
]
],
@@ -304,13 +328,14 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
[
[
'date' => [
- // Time interval 3 -2 months ago.
- 'from' => date('Y-m-d H:i', time()-7872400),
- 'to' => date('Y-m-d H:i', time()-5183000)
+ 'relative' => true,
+ // Time interval 3 - 2 months ago.
+ 'from' => 7872400,
+ 'to' => 5011200
],
'result' => [
- 'Reports trigger 2',
- 'Reports trigger 3'
+ 'Problem 2 months ago',
+ 'Problem 3 months ago'
]
]
]
@@ -353,6 +378,18 @@ class testPageReportsTriggerTop extends CLegacyWebTest {
// Fill in the date in filter.
if (array_key_exists('date', $data)) {
+ if (CTestArrayHelper::get($data['date'], 'relative')) {
+ if (array_key_exists('from', $data['date'])) {
+ $data['date']['from'] = date('Y-m-d H:i', self::$time - $data['date']['from']);
+ }
+
+ if (array_key_exists('to', $data['date']) && is_int($data['date']['to'])) {
+ $data['date']['to'] = date('Y-m-d H:i', self::$time - $data['date']['to']);
+ }
+
+ array_shift($data['date']);
+ }
+
$this->zbxTestExpandFilterTab('Time');
foreach ($data['date'] as $i => $full_date) {
$this->zbxTestInputTypeOverwrite($i, $full_date);
diff --git a/ui/tests/selenium/reports/testScheduledReportPermissions.php b/ui/tests/selenium/reports/testScheduledReportPermissions.php
index 90ba5d004b1..9b32f4971b1 100644
--- a/ui/tests/selenium/reports/testScheduledReportPermissions.php
+++ b/ui/tests/selenium/reports/testScheduledReportPermissions.php
@@ -18,6 +18,7 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
+
require_once dirname(__FILE__).'/../../include/CWebTest.php';
require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
diff --git a/ui/tests/selenium/roles/testFormUserRoles.php b/ui/tests/selenium/roles/testFormUserRoles.php
index dec88cfe49d..059407eaf8e 100644
--- a/ui/tests/selenium/roles/testFormUserRoles.php
+++ b/ui/tests/selenium/roles/testFormUserRoles.php
@@ -24,12 +24,11 @@ require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
- * @backup role, module, users
+ * @dataSource EntitiesTags, Services
*
- * @dataSource Services
+ * @backup role, module, users
*
- * @onBefore prepareRoleData
- * @onBefore prepareUserData
+ * @onBefore prepareRoleData, prepareUserData
*/
class testFormUserRoles extends CWebTest {
@@ -1346,12 +1345,19 @@ class testFormUserRoles extends CWebTest {
*/
public function testFormUserRoles_Modules() {
$this->page->login();
+
foreach ([true, false] as $enable_modules) {
$modules = ['4th Module', '5th Module'];
$this->page->open('zabbix.php?action=userrole.edit&roleid=2')->waitUntilReady();
$form = $this->query('id:userrole-form')->waitUntilPresent()->asForm()->one();
+
if ($enable_modules === true) {
- $this->assertTrue($form->query('xpath://label[text()="No enabled modules found."]')->one()->isDisplayed());
+ foreach ($modules as $module) {
+ $this->assertFalse($form->query("xpath:.//label[text()=".CXPathHelper::escapeQuotes($module)."]")
+ ->one(false)->isValid()
+ );
+ }
+
$this->page->open('zabbix.php?action=module.list')->waitUntilReady();
$this->query('button:Scan directory')->one()->click();
$table = $this->query('class:list-table')->asTable()->one();
@@ -1361,7 +1367,6 @@ class testFormUserRoles extends CWebTest {
$this->page->waitUntilReady();
}
else {
- $this->assertFalse($form->query('xpath://label[text()="No enabled modules found."]')->one($enable_modules)->isDisplayed());
foreach ($modules as $module) {
$form->getField($module)->isChecked();
}
diff --git a/ui/tests/selenium/roles/testPageUserRoles.php b/ui/tests/selenium/roles/testPageUserRoles.php
index b824adacd2d..dbfc8254281 100644
--- a/ui/tests/selenium/roles/testPageUserRoles.php
+++ b/ui/tests/selenium/roles/testPageUserRoles.php
@@ -25,7 +25,10 @@ require_once dirname(__FILE__).'/../../include/helpers/CDataHelper.php';
require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
+ * @dataSource ScheduledReports, ExecuteNowAction
+ *
* @backup role
+ *
* @onBefore prepareRoleData
* @dataSource LoginUsers, ExecuteNowAction
*/
@@ -144,8 +147,8 @@ class testPageUserRoles extends CWebTest {
],
[
'Name' => 'Admin role',
- '#' => 'Users 2',
- 'Users' => 'admin-zabbix, http-auth-admin'
+ '#' => 'Users 4',
+ 'Users' => 'admin-zabbix, admin user for testFormScheduledReport, http-auth-admin, user-recipient of the report'
],
[
'Name' => 'Guest role',
diff --git a/ui/tests/selenium/services/testFormServicesServices.php b/ui/tests/selenium/services/testFormServicesServices.php
index b12ba73624c..6296c181ce1 100644
--- a/ui/tests/selenium/services/testFormServicesServices.php
+++ b/ui/tests/selenium/services/testFormServicesServices.php
@@ -24,10 +24,11 @@ require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
- * @backup services
- *
+ * @dataSource EntitiesTags
* @dataSource Services
*
+ * @backup services
+ *
* @onBefore prepareServicesData
*/
class testFormServicesServices extends CWebTest {
@@ -330,8 +331,8 @@ class testFormServicesServices extends CWebTest {
$children_dialog->waitUntilReady();
// Check possible children count in table.
- $this->assertEquals(count(self::$serviceids), $children_dialog->query('class:list-table')->asTable()->one()
- ->getRows()->count()
+ $this->assertEquals(CDBHelper::getCount('SELECT null FROM services'), $children_dialog->query('class:list-table')
+ ->asTable()->one()->getRows()->count()
);
foreach (['Add', 'Cancel'] as $button) {
diff --git a/ui/tests/selenium/services/testPageServicesServices.php b/ui/tests/selenium/services/testPageServicesServices.php
index c3032ae8a1c..b9d87ec27e2 100644
--- a/ui/tests/selenium/services/testPageServicesServices.php
+++ b/ui/tests/selenium/services/testPageServicesServices.php
@@ -24,9 +24,10 @@ require_once dirname(__FILE__).'/../traits/TableTrait.php';
require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
/**
- * @backup services
- *
+ * @dataSource EntitiesTags
* @dataSource Services
+ *
+ * @backup services
*/
class testPageServicesServices extends CWebTest {
@@ -34,7 +35,7 @@ class testPageServicesServices extends CWebTest {
const EDIT = true;
- const SERVICE_COUNT = 16;
+ const SERVICE_COUNT = 19;
const LAYOUT_PARENT = 'Parent for 2 levels of child services';
const LAYOUT_CHILD = 'Child service with child service';
@@ -315,6 +316,7 @@ class testPageServicesServices extends CWebTest {
]
],
'result' => [
+ 'Service with tags for updating',
'Parent for 2 levels of child services 1',
'Service with multiple service tags',
'Simple actions service'
@@ -451,6 +453,7 @@ class testPageServicesServices extends CWebTest {
]
],
'result' => [
+ 'Service with tags for updating',
'Parent for 2 levels of child services 1',
'Service with multiple service tags',
'Simple actions service'
@@ -473,7 +476,7 @@ class testPageServicesServices extends CWebTest {
]
],
'result' => [
- 'Name' => 'Simple actions service'
+ 'Simple actions service'
]
]
],
@@ -521,6 +524,7 @@ class testPageServicesServices extends CWebTest {
]
],
'result' => [
+ 'Service with tags for updating',
'Parent for 2 levels of child services 1',
'Service with multiple service tags'
]
diff --git a/ui/tests/selenium/sla/testFormServicesSla.php b/ui/tests/selenium/sla/testFormServicesSla.php
index 98c96aa09ef..ae57994ba29 100644
--- a/ui/tests/selenium/sla/testFormServicesSla.php
+++ b/ui/tests/selenium/sla/testFormServicesSla.php
@@ -65,7 +65,7 @@ class testFormServicesSla extends CWebTest {
'Name' => '',
'SLO' => '',
'Reporting period' => 'Weekly',
- 'Time zone' => 'System default: (UTC+03:00) Europe/Riga',
+ 'Time zone' => CDateTimeHelper::getTimeZoneFormat('System default'),
'Schedule' => '24x7',
'Effective date' => date('Y-m-d'),
'Description' => '',
@@ -736,7 +736,7 @@ class testFormServicesSla extends CWebTest {
'Name' => 'All Mandatory and optional fields',
'SLO' => '33.33',
'Reporting period' => 'Quarterly',
- 'Time zone' => '(UTC-02:00) America/Nuuk',
+ 'Time zone' => 'America/Nuuk',
'Schedule' => 'Custom',
'id:service_tags_0_tag' => 'tag',
'name:service_tags[0][operator]' => 'Contains',
@@ -777,7 +777,7 @@ class testFormServicesSla extends CWebTest {
'Name' => ' Check trimming trailing and leading spaces ',
'SLO' => ' 7.77 ',
'Reporting period' => 'Quarterly',
- 'Time zone' => '(UTC-02:00) America/Nuuk',
+ 'Time zone' => 'America/Nuuk',
'Schedule' => 'Custom',
'id:service_tags_0_tag' => ' trim tag ',
'name:service_tags[0][operator]' => 'Contains',
@@ -916,7 +916,7 @@ class testFormServicesSla extends CWebTest {
'Name' => 'New name to Cancel',
'SLO' => '77.777',
'Reporting period' => 'Annually',
- 'Time zone' => '(UTC+01:00) Africa/Bangui',
+ 'Time zone' => CDateTimeHelper::getTimeZoneFormat('Africa/Bangui'),
'Effective date' => '2022-09-10',
'id:service_tags_0_tag' => 'tag',
'id:service_tags_0_value' => 'value',
@@ -982,6 +982,10 @@ class testFormServicesSla extends CWebTest {
private function checkAction($data, $update = false) {
$expected = CTestArrayHelper::get($data, 'expected', TEST_GOOD);
+ if (array_key_exists('Time zone', $data['fields'])) {
+ $data['fields']['Time zone'] = CDateTimeHelper::getTimeZoneFormat($data['fields']['Time zone']);
+ }
+
// Excluded downtimes dialog validation is made without attempting to save the SLA, so no hash needed.
if ($expected === TEST_BAD && array_key_exists('error', $data)) {
$old_hash = CDBHelper::getHash(self::$sla_sql);
diff --git a/ui/tests/selenium/testFormTemplate.php b/ui/tests/selenium/templates/testFormTemplate.php
index 70b117415c8..35e4ddbb2ab 100644
--- a/ui/tests/selenium/testFormTemplate.php
+++ b/ui/tests/selenium/templates/testFormTemplate.php
@@ -18,7 +18,8 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
+
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
use Facebook\WebDriver\Exception\NoSuchElementException;
use Facebook\WebDriver\WebDriverBy;
diff --git a/ui/tests/selenium/testPageTemplates.php b/ui/tests/selenium/templates/testPageTemplates.php
index 7f668478546..955ed33a658 100644
--- a/ui/tests/selenium/testPageTemplates.php
+++ b/ui/tests/selenium/templates/testPageTemplates.php
@@ -18,14 +18,15 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
-require_once dirname(__FILE__).'/traits/TagTrait.php';
-require_once dirname(__FILE__).'/traits/TableTrait.php';
+
+require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
+require_once dirname(__FILE__).'/../traits/TagTrait.php';
+require_once dirname(__FILE__).'/../traits/TableTrait.php';
/**
* @backup profiles
*
- * @dataSource TagFilter
+ * @dataSource TagFilter, EntitiesTags
*/
class testPageTemplates extends CLegacyWebTest {
@@ -179,7 +180,8 @@ class testPageTemplates extends CLegacyWebTest {
'expected_templates' => [
'Template for tags filtering',
'Template for tags filtering - clone',
- 'Template for tags filtering - update'
+ 'Template for tags filtering - update',
+ 'Template for tags testing'
]
]
],
@@ -193,7 +195,8 @@ class testPageTemplates extends CLegacyWebTest {
'expected_templates' => [
'Template for tags filtering',
'Template for tags filtering - clone',
- 'Template for tags filtering - update'
+ 'Template for tags filtering - update',
+ 'Template for tags testing'
]
]
],
@@ -204,7 +207,8 @@ class testPageTemplates extends CLegacyWebTest {
['name' => 'tag', 'operator' => 'Equals', 'value' => 'TEMPLATE']
],
'expected_templates' => [
- 'Template for tags filtering'
+ 'Template for tags filtering',
+ 'Template for tags testing'
]
]
],
@@ -217,7 +221,8 @@ class testPageTemplates extends CLegacyWebTest {
'expected_templates' => [
'Template for tags filtering',
'Template for tags filtering - clone',
- 'Template for tags filtering - update'
+ 'Template for tags filtering - update',
+ 'Template for tags testing'
]
]
],
@@ -251,12 +256,14 @@ class testPageTemplates extends CLegacyWebTest {
'expected_templates' => [
'Template for tags filtering',
'Template for tags filtering - clone',
- 'Template for tags filtering - update'
+ 'Template for tags filtering - update',
+ 'Template for tags testing'
]
]
],
[
[
+ 'Name' => 'template',
'evaluation_type' => 'And/Or',
'tags' => [
['name' => 'test', 'operator' => 'Does not exist'],
@@ -382,9 +389,14 @@ class testPageTemplates extends CLegacyWebTest {
* @dataProvider getFilterByTagsData
*/
public function testPageTemplates_FilterByTags($data) {
- $this->page->login()->open('templates.php?filter_name=template&filter_evaltype=0&filter_tags%5B0%5D%5Btag%5D='.
+ $this->page->login()->open('templates.php?filter_name=template+for+tags&filter_evaltype=0&filter_tags%5B0%5D%5Btag%5D='.
'&filter_tags%5B0%5D%5Boperator%5D=0&filter_tags%5B0%5D%5Bvalue%5D=&filter_set=1');
$form = $this->query('name:zbx_filter')->waitUntilPresent()->asForm()->one();
+
+ if (array_key_exists('Name', $data)) {
+ $form->fill(['Name' => $data['Name']]);
+ }
+
$form->fill(['id:filter_evaltype' => $data['evaluation_type']]);
$this->setTags($data['tags']);
$form->submit();
diff --git a/ui/tests/selenium/testDocumentationLinks.php b/ui/tests/selenium/testDocumentationLinks.php
index 741b7e50228..603a9067489 100644
--- a/ui/tests/selenium/testDocumentationLinks.php
+++ b/ui/tests/selenium/testDocumentationLinks.php
@@ -117,7 +117,7 @@ class testDocumentationLinks extends CWebTest {
'actions' => [
[
'callback' => 'openFormWithLink',
- 'element' => 'xpath:(//button[@class="btn-widget-edit"])[1]'
+ 'element' => 'xpath:(//button[contains(@class, "btn-widget-edit")])[1]'
]
]
]
@@ -687,7 +687,7 @@ class testDocumentationLinks extends CWebTest {
'actions' => [
[
'callback' => 'openFormWithLink',
- 'element' => 'xpath:(//button[@class="btn-widget-edit"])[1]'
+ 'element' => 'xpath:(//button[contains(@class, "btn-widget-edit")])[1]'
]
],
'doc_link' => '/en/manual/web_interface/frontend_sections/dashboards/widgets'
diff --git a/ui/tests/selenium/testFormAdministrationAuthenticationHttp.php b/ui/tests/selenium/testFormAdministrationAuthenticationHttp.php
index 25f25392ef0..35a433b6e1a 100644
--- a/ui/tests/selenium/testFormAdministrationAuthenticationHttp.php
+++ b/ui/tests/selenium/testFormAdministrationAuthenticationHttp.php
@@ -680,7 +680,7 @@ class testFormAdministrationAuthenticationHttp extends CLegacyWebTest {
/**
* Guest user needs to be out of "Disabled" group to have access to frontend.
*/
- public function removeGuestFromDisabledGroup() {
+ public function removeGuestFromDisabledGroup() {
DBexecute('DELETE FROM users_groups WHERE userid=2 AND usrgrpid=9');
}
diff --git a/ui/tests/selenium/testFormAdministrationGeneralAutoregistration.php b/ui/tests/selenium/testFormAdministrationGeneralAutoregistration.php
index 8ca1915656a..ea2e2a7bd55 100644
--- a/ui/tests/selenium/testFormAdministrationGeneralAutoregistration.php
+++ b/ui/tests/selenium/testFormAdministrationGeneralAutoregistration.php
@@ -18,6 +18,7 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
+
require_once dirname(__FILE__) . '/../include/CWebTest.php';
/**
@@ -162,7 +163,17 @@ class testFormAdministrationGeneralAutoregistration extends CWebTest {
// Check Audit record about autoregistration update.
$this->page->open('zabbix.php?action=auditlog.list');
+
+ // Click on Filter tab if it is not selected.
+ if ($this->query('xpath://li[@aria-labelledby="ui-id-2" and @aria-selected="false"]')->exists()) {
+ $this->query('id:ui-id-2')->one()->click();
+ }
+
+ // Reset filter to delete deependencies from previous tests.
+ $this->query('button:Reset')->waitUntilClickable()->one()->click();
+ $this->page->waitUntilReady();
$rows = $this->query('class:list-table')->asTable()->one()->getRows();
+
// Get first row data.
$row = $rows->get(0);
foreach ($data['audit'] as $column => $value) {
diff --git a/ui/tests/selenium/testFormGraph.php b/ui/tests/selenium/testFormGraph.php
deleted file mode 100644
index ab931e740ca..00000000000
--- a/ui/tests/selenium/testFormGraph.php
+++ /dev/null
@@ -1,1007 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
-require_once dirname(__FILE__).'/../../include/items.inc.php';
-
-use Facebook\WebDriver\WebDriverBy;
-
-/**
- * @backup graphs
- */
-class testFormGraph extends CLegacyWebTest {
-
- /**
- * The name of the host for the testing of the create function created in the test data set.
- *
- * @var string
- */
- protected $host = 'Simple form test host';
-
- /**
- * The name of the host group that the above host belongs to.
- *
- * @var string
- */
- protected $hostGroup = 'Zabbix servers';
-
- /**
- * The name of the host item for the testing of the layout of the graphs created in the test data set.
- *
- * @var string
- */
- protected $itemSimple = 'testFormItem';
-
- /**
- * The name of the inheritance item for the testing of the layout of the graphs created in the test data set.
- *
- * @var string
- */
- protected $itemInheritance = 'itemInheritance';
-
- // Returns layout data
- public static function layout() {
- return [
- [
- [
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed' ,
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Item',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Pie',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Exploded',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'host' => 'Simple form test host',
- 'form' => 'testFormGraph1'
- ]
- ],
- [
- [
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'template' => 'Inheritance test template',
- 'form' => 'testInheritanceGraph1'
- ]
- ],
- [
- [
- 'host' => 'Template inheritance test host',
- 'templatedHost' => 'Inheritance test template',
- 'form' => 'testInheritanceGraph1'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed' ,
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Item',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Pie',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Exploded',
- 'template' => 'Inheritance test template'
- ]
- ]
- ];
- }
-
- /**
- * @dataProvider layout
- */
- public function testFormGraph_CheckLayout($data) {
-
- if (isset($data['template'])) {
- $this->zbxTestLogin('templates.php');
- $this->query('button:Reset')->one()->click();
- $form = $this->query('name:zbx_filter')->asForm()->waitUntilReady()->one();
- $this->filterEntriesAndOpenGraph($data['template'], $form);
- $hostid = 30000;
- }
-
- if (isset($data['host'])) {
- $this->zbxTestLogin(self::HOST_LIST_PAGE);
- $this->query('button:Reset')->one()->click();
- $form = $this->query('name:zbx_filter')->asForm()->waitUntilReady()->one();
- $this->filterEntriesAndOpenGraph($data['host'], $form);
- if (isset($data['templatedHost'])) {
- $hostid = 30001;
- }
- else {
- $hostid = 40001;
- }
- }
-
- $this->zbxTestCheckTitle('Configuration of graphs');
- $this->zbxTestCheckHeader('Graphs');
-
- if (isset($data['form'])) {
- $this->zbxTestClickLinkTextWait($data['form']);
- }
- else {
- $this->zbxTestContentControlButtonClickTextWait('Create graph');
- }
-
- $this->zbxTestCheckTitle('Configuration of graphs');
- $this->zbxTestTextPresent('Graphs');
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestTextPresent('Parent graphs');
- if (isset($data['hostTemplate'])) {
- $this->zbxTestAssertElementPresentXpath("//a[text()='".$data['hostTemplate']."']");
- }
- }
- else {
- $this->zbxTestTextNotPresent('Parent graphs');
- }
-
- $this->zbxTestTextPresent('Name');
- $this->zbxTestAssertVisibleId('name');
- $this->zbxTestAssertAttribute("//input[@id='name']", 'maxlength', 255);
- $this->zbxTestAssertAttribute("//input[@id='name']", 'autofocus');
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='name']", 'readonly');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='name'][readonly]");
- }
-
- $this->zbxTestTextPresent('Width');
- $this->zbxTestAssertVisibleId('width');
- $this->zbxTestAssertAttribute("//input[@id='width']", 'maxlength', 5);
- $this->zbxTestAssertElementValue('width', 900);
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='width']", 'readonly');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='width'][readonly]");
- }
-
- $this->zbxTestTextPresent('Height');
- $this->zbxTestAssertVisibleId('height');
- $this->zbxTestAssertAttribute("//input[@id='height']", 'maxlength', 5);
- $this->zbxTestAssertElementValue('height', 200);
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='height']", 'readonly');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='height'][readonly]");
- }
-
- $this->zbxTestTextPresent('Graph type');
- $this->zbxTestAssertVisibleId('graphtype');
- $this->zbxTestDropdownHasOptions('graphtype', [
- 'Normal',
- 'Stacked',
- 'Pie',
- 'Exploded'
- ]);
- if (!isset($data['form'])) {
- $this->zbxTestDropdownAssertSelected('graphtype', 'Normal');
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//z-select[@id='graphtype']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//z-select[@id='graphtype'][@disabled]");
- }
-
- if (isset($data['graphtype'])) {
- $this->zbxTestDropdownSelectWait('graphtype', $data['graphtype']);
- }
- $graphtype = $this->zbxTestGetSelectedLabel('graphtype');
-
- if (isset($data['ymin_type'])) {
- $this->zbxTestDropdownSelectWait('ymin_type', $data['ymin_type']);
- }
-
- if (isset($data['ymax_type'])) {
- $this->zbxTestDropdownSelectWait('ymax_type', $data['ymax_type']);
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $ymin_type = $this->zbxTestGetSelectedLabel('ymin_type');
- $ymax_type = $this->zbxTestGetSelectedLabel('ymax_type');
- }
- else {
- $ymin_type = null;
- $ymax_type = null;
- }
-
- $this->zbxTestTextPresent('Show legend');
- $this->zbxTestAssertElementPresentId('show_legend');
- if (!isset($data['form'])) {
- $this->assertTrue($this->zbxTestCheckboxSelected('show_legend'));
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $this->zbxTestTextPresent('Show working time');
- $this->zbxTestAssertElementPresentId('show_work_period');
-
- if (!isset($data['form'])) {
- $this->assertTrue($this->zbxTestCheckboxSelected('show_work_period'));
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//*[@id='show_work_period']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//*[@id='show_work_period'][@disabled]");
- }
- }
- else {
- $this->zbxTestTextNotPresent('Show working time');
- $this->zbxTestAssertElementNotPresentId('show_work_period');
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $this->zbxTestTextPresent('Show triggers');
- $this->zbxTestAssertElementPresentId('show_triggers');
- if (!isset($data['form'])) {
- $this->assertTrue($this->zbxTestCheckboxSelected('show_triggers'));
- }
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//*[@id='show_triggers']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//*[@id='show_triggers'][@disabled]");
- }
- }
- else {
- $this->zbxTestTextNotPresent('Show triggers');
- $this->zbxTestAssertElementNotPresentId('show_triggers');
- }
-
- if ($graphtype == 'Normal') {
- $this->zbxTestTextPresent('Percentile line (left)');
- $this->zbxTestAssertElementPresentId('visible_percent_left');
- $this->zbxTestTextPresent('Percentile line (right)');
- $this->zbxTestAssertElementPresentId('visible_percent_right');
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='visible_percent_left']", 'disabled');
- $this->zbxTestAssertAttribute("//input[@id='visible_percent_right']", 'disabled');
- }
- }
- else {
- $this->zbxTestTextNotPresent('Percentile line (left)');
- $this->zbxTestAssertElementNotPresentId('visible_percent_left');
-
- $this->zbxTestTextNotPresent('Percentile line (right)');
- $this->zbxTestAssertElementNotPresentId('visible_percent_right');
- }
-
- if ($graphtype == 'Pie' || $graphtype == 'Exploded') {
- $this->zbxTestTextPresent('3D view');
- $this->zbxTestAssertElementPresentId('show_3d');
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='show_3d']/@disabled", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='show_3d'][@disabled]");
- }
- }
- else {
- $this->zbxTestTextNotPresent('3D view');
- $this->zbxTestAssertElementNotPresentId('show_3d');
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $this->zbxTestTextPresent('Y axis MIN value');
- $this->zbxTestAssertElementPresentId('ymin_type');
- $this->zbxTestDropdownHasOptions('ymin_type', [
- 'Calculated',
- 'Fixed',
- 'Item'
- ]);
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//z-select[@id='ymin_type']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//z-select[@id='ymin_type'][@disabled]");
- }
-
- if (!isset($data['form'])) {
- switch ($ymin_type) {
- case 'Calculated':
- case 'Fixed':
- case 'Item':
- $this->zbxTestDropdownAssertSelected('ymin_type', $ymin_type);
- break;
- }
- }
-
- $this->zbxTestTextPresent('Y axis MAX value');
- $this->zbxTestAssertElementPresentId('ymax_type');
- $this->zbxTestDropdownHasOptions('ymax_type', [
- 'Calculated',
- 'Fixed',
- 'Item'
- ]);
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//z-select[@id='ymax_type']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//z-select[@id='ymax_type'][@disabled]");
- }
-
- if (!isset($data['form'])) {
- switch ($ymax_type) {
- case 'Calculated':
- case 'Fixed':
- case 'Item':
- $this->zbxTestDropdownAssertSelected('ymax_type', $ymax_type);
- break;
- }
- }
- }
- else {
- $this->zbxTestTextNotPresent('Y axis MIN value');
- $this->zbxTestAssertElementNotPresentId('ymin_type');
-
- $this->zbxTestTextNotPresent('Y axis MAX value');
- $this->zbxTestAssertElementNotPresentId('ymax_type');
- }
-
- if (!isset($data['form'])) {
- // add general item
- $this->zbxTestClick('add_item');
- $this->zbxTestLaunchOverlayDialog('Items');
-
- if (isset($data['host'])) {
- $host = COverlayDialogElement::find()->one()->query('class:multiselect-control')->asMultiselect()->one();
- $host->fill($this->host);
- COverlayDialogElement::find()->one()->waitUntilReady();
- $this->zbxTestClickLinkText($this->itemSimple);
- }
-
- if (isset($data['template'])) {
- $this->zbxTestClickLinkText($this->itemInheritance);
- }
-
- switch($ymin_type) {
- case 'Fixed':
- $this->zbxTestAssertVisibleId('yaxismin');
- $this->zbxTestAssertElementValue('yaxismin', 0);
-
- $this->zbxTestAssertElementNotPresentId('ymin_itemid');
- break;
- case 'Calculated':
- $this->zbxTestAssertElementNotPresentId('ymin_itemid');
- $this->zbxTestAssertNotVisibleId('yaxismin');
- break;
- case 'Item':
- $this->zbxTestAssertElementPresentId('ymin_itemid');
- $this->zbxTestAssertElementText("//div[@id='ymin_itemid']//following-sibling::div/button", 'Select');
-
- $this->zbxTestAssertNotVisibleId('yaxismin');
- break;
- default:
- $this->zbxTestTextNotPresent('Add graph items first');
- $this->zbxTestAssertElementNotPresentId('ymin_itemid');
- $this->zbxTestAssertElementNotPresentId('yaxismin');
- break;
- }
-
- switch($ymax_type) {
- case 'Fixed':
- $this->zbxTestAssertVisibleId('yaxismax');
- $this->zbxTestAssertElementValue('yaxismax', 100);
-
- $this->zbxTestAssertElementNotPresentId('ymax_itemid');
- break;
- case 'Calculated':
- $this->zbxTestAssertElementNotPresentId('ymax_itemid');
- $this->zbxTestAssertNotVisibleId('yaxismax');
- break;
- case 'Item':
- $this->zbxTestDropdownSelectWait('ymax_type', 'Calculated');
- $this->zbxTestDropdownSelectWait('ymax_type', 'Item');
- $this->zbxTestAssertElementPresentId('ymax_itemid');
- $this->zbxTestAssertElementText("//div[@id='ymax_itemid']//following-sibling::div/button", 'Select');
-
- $this->zbxTestAssertNotVisibleId('yaxismax');
- break;
- default:
- $this->zbxTestTextNotPresent('Add graph items first');
- $this->zbxTestAssertElementNotPresentId('ymax_itemid');
- $this->zbxTestAssertElementNotPresentId('yaxismax');
- break;
- }
-
- switch ($graphtype) {
- case 'Normal':
- $this->zbxTestTextPresent(['Items', 'Name', 'Function', 'Draw style', 'Y axis side', 'Color', 'Action']);
- break;
- case 'Stacked':
- $this->zbxTestTextPresent(['Items', 'Name', 'Function', 'Y axis side', 'Color', 'Action']);
- break;
- case 'Pie':
- case 'Exploded':
- $this->zbxTestTextPresent(['Items', 'Name', 'Type', 'Function', 'Color', 'Action']);
- break;
- }
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertElementNotPresentId('add_item');
- }
- else {
- $this->zbxTestAssertVisibleId('add_item');
- $this->zbxTestAssertElementText("//button[@id='add_item']", 'Add');
- $this->zbxTestAssertElementNotPresentXpath("//button[@id='add_item'][@disabled]");
- }
-
- $this->zbxTestTabSwitch('Preview');
-
- $this->zbxTestAssertVisibleId('cancel');
- $this->zbxTestAssertElementText("//button[@id='cancel']", 'Cancel');
-
- if (isset($data['form'])) {
- $this->zbxTestAssertVisibleId('update');
- $this->zbxTestAssertElementValue('update', 'Update');
- $this->zbxTestAssertVisibleId('clone');
- $this->zbxTestAssertElementValue('clone', 'Clone');
- $this->zbxTestAssertVisibleId('delete');
- $this->zbxTestAssertElementValue('delete', 'Delete');
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//button[@id='update']", 'disabled');
- $this->zbxTestAssertAttribute("//button[@id='delete']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//button[@id='update'][@disabled]");
- $this->zbxTestAssertElementNotPresentXpath("//button[@id='delete'][@disabled]");
- }
- }
- else {
- $this->zbxTestAssertVisibleId('add');
- $this->zbxTestAssertElementValue('add', 'Add');
- $this->zbxTestAssertElementNotPresentId('clone');
- $this->zbxTestAssertElementNotPresentId('update');
- $this->zbxTestAssertElementNotPresentId('delete');
- }
- }
-
- // Returns update data
- public static function update() {
- return CDBHelper::getDataProvider(
- 'SELECT * FROM graphs g'.
- ' LEFT JOIN graphs_items gi'.
- ' ON gi.graphid=g.graphid'.
- ' WHERE g.graphid BETWEEN 300000 AND 300010'
- );
- }
-
- /**
- * @dataProvider update
- */
- public function testFormGraph_SimpleUpdate($data) {
- $sqlGraphs = 'SELECT * FROM graphs ORDER BY graphid';
- $oldHashGraphs = CDBHelper::getHash($sqlGraphs);
-
- $this->zbxTestLogin('graphs.php?form=update&graphid='.$data['graphid'].'&hostid=40001&context=host');
- $this->zbxTestClickWait('update');
- $this->zbxTestCheckTitle('Configuration of graphs');
- $this->zbxTestWaitUntilMessageTextPresent('msg-good', 'Graph updated');
- $filter = $this->query('name:zbx_filter')->asForm()->one();
- $filter->getField('Hosts')->clear()->fill('Simple form test host');
- $filter->submit();
- $this->zbxTestTextPresent([
- $data['name'],
- 'Graphs'
- ]);
-
- $this->assertEquals($oldHashGraphs, CDBHelper::getHash($sqlGraphs));
- }
-
- // Returns create data
- public static function create() {
- return [
- [
- [
- 'expected' => TEST_BAD,
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Incorrect value for field "Name": cannot be empty.'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphSaveCheck',
- 'addItems' => [
- ['itemName' => 'testFormItem', 'remove' => true],
- ['itemName' => 'testFormItem']
- ],
- 'dbCheck' => true,
- 'formCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'name' => 'testFormGraph1',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'error-msg' => 'Cannot add graph',
- 'errors' => [
- 'Graph with name "testFormGraph1" already exists in graphs or graph prototypes.'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'name' => 'graphSaveCheck',
- 'error-msg' => 'Cannot add graph',
- 'errors' => [
- 'Missing items for graph "graphSaveCheck".'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphNormal1',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'ymax_name' => 'testFormItem',
- 'dbCheck' => true,
- 'formCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphNormal2',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'ymin_type' => 'Item',
- 'ymin_name' => 'testFormItem',
- 'ymax_type' => 'Item',
- 'ymax_name' => 'testFormItem',
- 'dbCheck' => true,
- 'formCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphNormal3',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'ymax_name' => 'testFormItem',
- 'dbCheck' => true,
- 'formCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphNormal4',
- 'graphtype' => 'Normal',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphStacked1',
- 'graphtype' => 'Stacked',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphStacked2',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed' ,
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphStacked3',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymin_name' => 'testFormItem',
- 'ymax_type' => 'Fixed',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'name' => 'graphStacked',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Field "ymin_itemid" is mandatory.'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'name' => 'graphStacked',
- 'width' => '0',
- 'height' => '0',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed',
- 'yaxismin' => 'name',
- 'ymax_type' => 'Fixed',
- 'yaxismax' => 'name',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Incorrect value "0" for "Width" field: must be between 20 and 65535.',
- 'Incorrect value "0" for "Height" field: must be between 20 and 65535.',
- 'Field "yaxismin" is not correct: a number is expected',
- 'Field "yaxismax" is not correct: a number is expected'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'name' => 'graphStacked',
- 'width' => '65536',
- 'height' => '-22',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Fixed',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Incorrect value "65536" for "Width" field: must be between 20 and 65535.',
- 'Incorrect value "-22" for "Height" field: must be between 20 and 65535.'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphPie',
- 'graphtype' => 'Pie',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graphExploded',
- 'graphtype' => 'Exploded',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'name' => 'graph!@#$%^&*()><>?:"|{},./;',
- 'graphtype' => 'Exploded',
- 'addItems' => [
- ['itemName' => 'testFormItem']
- ],
- 'dbCheck' => true,
- 'formCheck' => true
- ]
- ]
- ];
- }
-
- /**
- * @dataProvider create
- */
- public function testFormGraph_SimpleCreate($data) {
- $this->zbxTestLogin('graphs.php?hostid=40001&context=host&form=Create+graph');
- $this->zbxTestCheckTitle('Configuration of graphs');
-
- if (isset($data['name'])) {
- $this->zbxTestInputTypeOverwrite('name', $data['name']);
- $this->zbxTestAssertElementValue('name', $data['name']);
- }
- $name = $this->zbxTestGetValue("//input[@id='name']");
-
- if (isset($data['graphtype'])) {
- $this->zbxTestDropdownSelectWait('graphtype', $data['graphtype']);
- }
- $graphtype = $this->zbxTestGetSelectedLabel('graphtype');
-
- if (isset($data['addItems'])) {
- foreach($data['addItems'] as $item) {
- $this->zbxTestClick('add_item');
- $this->zbxTestLaunchOverlayDialog('Items');
- $link = $item['itemName'];
- $overlay = COverlayDialogElement::find()->one()->waitUntilReady();
- $host = $overlay->query('class:multiselect-control')->asMultiselect()->one();
- $host->fill([
- 'values' => $this->host,
- 'context' => $this->hostGroup
- ]);
- $this->zbxTestClickLinkTextWait($link);
-
- $this->zbxTestWaitUntilElementVisible(WebDriverBy::id('items_0_name'));
- $this->zbxTestTextPresent($this->host . ': ' . $link);
-
- if(isset($item['remove'])) {
- $this->zbxTestClickWait('items_0_remove');
- $this->zbxTestTextNotPresent($link);
- }
- }
- }
-
- if (isset($data['width'])) {
- $this->zbxTestInputTypeOverwrite('width', $data['width']);
- }
- $width = $this->zbxTestGetValue("//input[@id='width']");
-
- if (isset($data['height'])) {
- $this->zbxTestInputTypeOverwrite('height', $data['height']);
- }
- $height = $this->zbxTestGetValue("//input[@id='height']");
-
- if (isset($data['ymin_type'])) {
- $this->zbxTestDropdownSelectWait('ymin_type', $data['ymin_type']);
- }
-
- if (isset($data['ymax_type'])) {
- $this->zbxTestDropdownSelectWait('ymax_type', $data['ymax_type']);
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $ymin_type = $this->zbxTestGetSelectedLabel('ymin_type');
- $ymax_type = $this->zbxTestGetSelectedLabel('ymax_type');
- }
- else {
- $ymin_type = null;
- $ymax_type = null;
- }
-
- if (isset($data['yaxismin'])) {
- $this->zbxTestInputType('yaxismin' ,$data['yaxismin']);
- $yaxismin = $this->zbxTestGetValue("//input[@id='yaxismin']");
- }
- elseif ($ymin_type == 'Fixed') {
- $yaxismin = $this->zbxTestGetValue("//input[@id='yaxismin']");
- }
- else {
- $yaxismin = null;
- }
-
- if (isset($data['yaxismax'])) {
- $this->zbxTestInputType('yaxismax' ,$data['yaxismax']);
- $yaxismin = $this->zbxTestGetValue("//input[@id='yaxismax']");
- }
- elseif ($ymax_type == 'Fixed') {
- $yaxismax = $this->zbxTestGetValue("//input[@id='yaxismax']");
- }
- else {
- $yaxismax = null;
- }
-
- if (isset($data['ymin_name'])) {
- $this->zbxTestClickXpath('//div[@id="ymin_itemid"]//following-sibling::div/button');
- $this->zbxTestLaunchOverlayDialog('Items');
- $host = COverlayDialogElement::find()->one()->query('class:multiselect-control')->asMultiselect()->one();
- $host->fill([
- 'values' => $this->host,
- 'context' => $this->hostGroup
- ]);
- $this->zbxTestClickLinkTextWait($this->itemSimple);
-
- $ymin_name = $data['ymin_name'];
- $ymin_nameValue = $this->zbxTestGetText('//div[@id="ymin_itemid"]');
- $this->assertEquals($ymin_nameValue, $this->host.": $ymin_name");
- }
-
- if (isset($data['ymax_name'])) {
- $this->zbxTestClickXpath('//div[@id="ymax_itemid"]//following-sibling::div/button');
- $this->zbxTestLaunchOverlayDialog('Items');
- $host = COverlayDialogElement::find()->one()->query('class:multiselect-control')->asMultiselect()->one();
- $host->fill([
- 'values' => $this->host,
- 'context' => $this->hostGroup
- ]);
- $this->zbxTestClickLinkTextWait($this->itemSimple);
-
- $ymax_name = $data['ymax_name'];
- $ymax_nameValue = $this->zbxTestGetText('//div[@id="ymax_itemid"]');
- $this->assertEquals($this->host.": $ymax_name", $ymax_nameValue);
- }
-
- $this->zbxTestClickWait('add');
- $expected = $data['expected'];
- switch ($expected) {
- case TEST_GOOD:
- $this->zbxTestTextNotPresent(['Page received incorrect data', 'Cannot add graph']);
- $this->zbxTestWaitUntilMessageTextPresent('msg-good', 'Graph added');
- $this->zbxTestCheckTitle('Configuration of graphs');
- $this->zbxTestCheckHeader('Graphs');
- break;
- case TEST_BAD:
- $this->zbxTestCheckTitle('Configuration of graphs');
- $this->zbxTestWaitUntilMessageTextPresent('msg-bad', $data['error-msg']);
- $this->zbxTestCheckHeader('Graphs');
- foreach ($data['errors'] as $msg) {
- $this->zbxTestTextPresent($msg);
- }
- $this->zbxTestTextPresent(['Name', 'Width', 'Height']);
- break;
- }
-
- if (isset($data['dbCheck'])) {
- $result = DBselect("SELECT name, width, height FROM graphs where name like '".$name."'");
- while ($row = DBfetch($result)) {
- $this->assertEquals($row['name'], $name);
- $this->assertEquals($row['width'], $width);
- $this->assertEquals($row['height'], $height);
- }
- }
-
- if (isset($data['formCheck'])) {
- $filter = $this->query('name:zbx_filter')->asForm()->one();
- $filter->getField('Hosts')->fill([
- 'values' => $this->host,
- 'context' => $this->hostGroup
- ]);
- $filter->submit();
-
- $this->zbxTestClickLinkTextWait($name);
- $this->zbxTestAssertElementValue('name', $name);
- $this->zbxTestDropdownAssertSelected('graphtype', $graphtype);
- $this->zbxTestAssertElementValue('width', $width);
- $this->zbxTestAssertElementValue('height', $height);
- }
- }
-
- /**
- * Function for filtering necessary hosts or templates and opening their Graphs.
- *
- * @param string $name name of a host
- * @param CFormELement $form filter form element
- */
- private function filterEntriesAndOpenGraph($name, $form) {
- $form->fill(['Name' => $name]);
- $this->query('button:Apply')->one()->waitUntilClickable()->click();
- $this->query('xpath://table[@class="list-table"]')->asTable()->one()->findRow('Name', $name)
- ->getColumn('Graphs')->query('link:Graphs')->one()->click();
- }
-}
diff --git a/ui/tests/selenium/testFormGraphPrototype.php b/ui/tests/selenium/testFormGraphPrototype.php
deleted file mode 100644
index b130bc09d3d..00000000000
--- a/ui/tests/selenium/testFormGraphPrototype.php
+++ /dev/null
@@ -1,1232 +0,0 @@
-<?php
-/*
-** Zabbix
-** Copyright (C) 2001-2022 Zabbix SIA
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation; either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-**/
-
-require_once dirname(__FILE__).'/../include/CLegacyWebTest.php';
-
-/**
- * Test the creation of inheritance of new objects on a previously linked template.
- *
- * @backup graphs
- */
-class testFormGraphPrototype extends CLegacyWebTest {
-
- /**
- * The name of the test template created in the test data set.
- *
- * @var string
- */
- protected $template = 'Inheritance test template';
-
- /**
- * The name of the test host created in the test data set.
- *
- * @var string
- */
- protected $host = 'Simple form test host';
-
- /**
- * The name of the host group that the above host belongs to.
- *
- * @var string
- */
- protected $hostGroup = 'Zabbix servers';
-
- /**
- * The name of the test discovery rule created in the test data set.
- *
- * @var string
- */
- protected $discoveryRule = 'testFormDiscoveryRule';
-
- /**
- * The name of the form test discovery rule created in the test data set.
- *
- * @var string
- */
- protected $discoveryRuleTemplate = 'testInheritanceDiscoveryRule';
-
- /**
- * The name of the test discovery rule key created in the test data set.
- *
- * @var string
- */
- protected $discoveryKey = 'discovery-rule-test';
-
- /**
- * The name of the test item created in the test data set.
- *
- * @var string
- */
- protected $itemSimple = 'testFormItem';
-
- /**
- * The name of the test item created in the test data set.
- *
- * @var string
- */
- protected $itemInheritance = 'itemInheritance';
-
- /**
- * The name of the test item created in the test data set.
- *
- * @var string
- */
- protected $itemDiscovery = 'itemDiscovery';
-
- /**
- * The name of the test item key created in the test data set.
- *
- * @var string
- */
- protected $itemKeySimple = 'test-item-reuse';
-
- /**
- * The name of the test item prototype within test discovery rule created in the test data set.
- *
- * @var string
- */
- protected $item = 'testFormItemReuse';
-
- /**
- * The name of the test item prototype key within test discovery rule created in the test data set.
- *
- * @var string
- */
- protected $testFormItemReuse = 'item-prototype-reuse';
-
- /**
- * The value of the yaxismin field to be created in the test data set.
- *
- * @var int
- */
- protected $yaxismin = 100;
-
- /**
- * The value of the yaxismax field to be created in the test data set.
- *
- * @var int
- */
- protected $yaxismax = 500;
-
- // Returns layout data
- public static function layout() {
- return [
- [
- [
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Item',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed' ,
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Item',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Pie',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'graphtype' => 'Exploded',
- 'host' => 'Simple form test host'
- ]
- ],
- [
- [
- 'host' => 'Simple form test host',
- 'form' => 'testFormGraphPrototype1'
- ]
- ],
- [
- [
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'template' => 'Inheritance test template',
- 'form' => 'testInheritanceGraphPrototype1'
- ]
- ],
- [
- [
- 'host' => 'Template inheritance test host',
- 'templatedHost' => 'Inheritance test template',
- 'form' => 'testInheritanceGraphPrototype1'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Item',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Normal',
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed' ,
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Item',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Pie',
- 'template' => 'Inheritance test template'
- ]
- ],
- [
- [
- 'graphtype' => 'Exploded',
- 'template' => 'Inheritance test template'
- ]
- ]
- ];
- }
-
- /**
- * @dataProvider layout
- */
- public function testFormGraphPrototype_CheckLayout($data) {
- if (isset($data['template'])) {
- $this->zbxTestLogin('templates.php');
- $this->query('button:Reset')->one()->click();
- $form = $this->query('name:zbx_filter')->asForm()->waitUntilReady()->one();
- $this->filterEntriesAndOpenDiscovery($form, $data['template']);
- $discoveryRule = $this->discoveryRuleTemplate;
- $hostid = 30000;
- }
-
- if (isset($data['host'])) {
- $this->zbxTestLogin(self::HOST_LIST_PAGE);
- $form = $this->query('name:zbx_filter')->asForm()->waitUntilReady()->one();
- $this->filterEntriesAndOpenDiscovery($form, $data['host']);
- if (!isset($data['templatedHost'])) {
- $discoveryRule = $this->discoveryRule;
- $hostid = 40001;
- }
- else {
- $discoveryRule = $this->discoveryRuleTemplate;
- $hostid = 30001;
- }
- }
-
- $this->zbxTestClickLinkTextWait($discoveryRule);
- $this->zbxTestClickLinkTextWait('Graph prototypes');
-
- $this->zbxTestCheckTitle('Configuration of graph prototypes');
- $this->zbxTestTextPresent(['Graph prototypes', $discoveryRule]);
-
- if (isset($data['form'])) {
- $this->zbxTestClickLinkTextWait($data['form']);
- }
- else {
- $this->zbxTestContentControlButtonClickTextWait('Create graph prototype');
- }
-
- $this->zbxTestCheckTitle('Configuration of graph prototypes');
- $this->zbxTestCheckHeader('Graph prototypes');
- $this->zbxTestAssertElementPresentXpath("//a[@id='tab_graphTab' and text()='Graph prototype']");
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestTextPresent('Parent graphs');
- if (isset($data['hostTemplate'])) {
- $this->zbxTestAssertElementPresentXpath("//a[text()='".$data['hostTemplate']."']");
- }
- }
- else {
- $this->zbxTestTextNotPresent('Parent graphs');
- }
-
- $this->zbxTestTextPresent('Name');
- $this->zbxTestAssertVisibleId('name');
- $this->zbxTestAssertAttribute("//input[@id='name']", 'maxlength', 255);
- $this->zbxTestAssertAttribute("//input[@id='name']", 'autofocus');
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='name']", 'readonly');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='name'][readonly]");
- }
-
- $this->zbxTestTextPresent('Width');
- $this->zbxTestAssertVisibleId('width');
- $this->zbxTestAssertAttribute("//input[@id='width']", 'maxlength', 5);
- $this->zbxTestAssertElementValue('width', 900);
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='width']", 'readonly');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='width'][readonly]");
- }
-
- $this->zbxTestTextPresent('Height');
- $this->zbxTestAssertVisibleId('height');
- $this->zbxTestAssertAttribute("//input[@id='height']", 'maxlength', 5);
- $this->zbxTestAssertElementValue('height', 200);
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='height']", 'readonly');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='height'][readonly]");
- }
-
- $this->zbxTestTextPresent('Graph type');
- $this->zbxTestAssertVisibleId('graphtype');
- $this->zbxTestDropdownHasOptions('graphtype', [
- 'Normal',
- 'Stacked',
- 'Pie',
- 'Exploded'
- ]);
- if (!isset($data['form'])) {
- $this->zbxTestDropdownAssertSelected('graphtype', 'Normal');
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//z-select[@id='graphtype']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//z-select[@id='graphtype'][@disabled]");
- }
-
- if (isset($data['graphtype'])) {
- $this->zbxTestDropdownSelectWait('graphtype', $data['graphtype']);
- }
- $graphtype = $this->zbxTestGetSelectedLabel('graphtype');
-
- if (isset($data['ymin_type'])) {
- $this->zbxTestAssertElementNotPresentId('ymin_name');
- $this->zbxTestAssertElementNotPresentId('yaxis_min');
- $this->zbxTestDropdownSelectWait('ymin_type', $data['ymin_type']);
- }
-
- if (isset($data['ymax_type'])) {
- $this->zbxTestAssertElementNotPresentId('ymax_name');
- $this->zbxTestAssertElementNotPresentId('yaxis_max');
- $this->zbxTestDropdownSelectWait('ymax_type', $data['ymax_type']);
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $ymin_type = $this->zbxTestGetSelectedLabel('ymin_type');
- $ymax_type = $this->zbxTestGetSelectedLabel('ymax_type');
- }
- else {
- $ymin_type = null;
- $ymax_type = null;
- }
-
- $this->zbxTestTextPresent('Show legend');
- $this->zbxTestAssertElementPresentId('show_legend');
- if (!isset($data['form'])) {
- $this->assertTrue($this->zbxTestCheckboxSelected('show_legend'));
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $this->zbxTestTextPresent('Show working time');
- $this->zbxTestAssertElementPresentId('show_work_period');
-
- if (!isset($data['form'])) {
- $this->assertTrue($this->zbxTestCheckboxSelected('show_work_period'));
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//*[@id='show_work_period']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//*[@id='show_work_period'][@disabled]");
- }
- }
- else {
- $this->zbxTestTextNotPresent('Show working time');
- $this->zbxTestAssertElementNotPresentId('show_work_period');
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $this->zbxTestTextPresent('Show triggers');
- $this->zbxTestAssertElementPresentId('show_triggers');
- if (!isset($data['form'])) {
- $this->assertTrue($this->zbxTestCheckboxSelected('show_triggers'));
- }
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//*[@id='show_triggers']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//*[@id='show_triggers'][@disabled]");
- }
- }
- else {
- $this->zbxTestTextNotPresent('Show triggers');
- $this->zbxTestAssertElementNotPresentId('show_triggers');
- }
-
- if ($graphtype == 'Normal') {
- $this->zbxTestTextPresent('Percentile line (left)');
- $this->zbxTestAssertElementPresentId('visible_percent_left');
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='visible_percent_left']", 'disabled');
- $this->zbxTestAssertAttribute("//input[@id='visible_percent_right']", 'disabled');
- }
- $this->zbxTestTextPresent('Percentile line (right)');
- $this->zbxTestAssertElementPresentId('visible_percent_right');
- }
- else {
- $this->zbxTestTextNotPresent('Percentile line (left)');
- $this->zbxTestAssertElementNotPresentId('visible_percent_left');
-
- $this->zbxTestTextNotPresent('Percentile line (right)');
- $this->zbxTestAssertElementNotPresentId('visible_percent_right');
- }
-
- if ($graphtype == 'Pie' || $graphtype == 'Exploded') {
- $this->zbxTestTextPresent('3D view');
- $this->zbxTestAssertElementPresentId('show_3d');
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//input[@id='show_3d']/@disabled", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//input[@id='show_3d'][@disabled]");
- }
- }
- else {
- $this->zbxTestTextNotPresent('3D view');
- $this->zbxTestAssertElementNotPresentId('show_3d');
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
- $this->zbxTestTextPresent('Y axis MIN value');
- $this->zbxTestAssertElementPresentId('ymin_type');
- $this->zbxTestDropdownHasOptions('ymin_type', [
- 'Calculated',
- 'Fixed',
- 'Item'
- ]);
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//z-select[@id='ymin_type']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//z-select[@id='ymin_type'][@disabled]");
- }
-
- if (!isset($data['form'])) {
- switch ($ymin_type) {
- case 'Calculated':
- case 'Fixed':
- case 'Item':
- $this->zbxTestDropdownAssertSelected('ymin_type', $ymin_type);
- break;
- }
- }
-
- $this->zbxTestTextPresent('Y axis MAX value');
- $this->zbxTestAssertElementPresentId('ymax_type');
- $this->zbxTestDropdownHasOptions('ymax_type', [
- 'Calculated',
- 'Fixed',
- 'Item'
- ]);
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//z-select[@id='ymax_type']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//z-select[@id='ymax_type'][@disabled]");
- }
-
- if (!isset($data['form'])) {
- switch ($ymax_type) {
- case 'Calculated':
- case 'Fixed':
- case 'Item':
- $this->zbxTestDropdownAssertSelected('ymax_type', $ymax_type);
- break;
- }
- }
- }
- else {
- $this->zbxTestTextNotPresent('Y axis MIN value');
- $this->zbxTestAssertElementNotPresentId('ymin_type');
-
- $this->zbxTestTextNotPresent('Y axis MAX value');
- $this->zbxTestAssertElementNotPresentId('ymax_type');
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertElementNotPresentId('add_item');
- $this->zbxTestAssertElementNotPresentId('add_protoitem');
- }
- else {
- $this->zbxTestAssertVisibleId('add_item');
- $this->zbxTestAssertElementText("//button[@id='add_item']", 'Add');
- $this->zbxTestAssertVisibleId('add_protoitem');
- $this->zbxTestAssertElementText("//button[@id='add_protoitem']", 'Add prototype');
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertElementNotPresentId('add_item');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//button[@id='add_item'][@disabled]");
- }
-
- if (!isset($data['form'])) {
- $this->zbxTestClick('add_item');
- $this->zbxTestLaunchOverlayDialog('Items');
-
- if (isset($data['host'])) {
- $host = COverlayDialogElement::find()->one()->query('class:multiselect-control')->asMultiselect()->one();
- $host->fill($this->host);
- $this->query('link', $this->itemSimple)->waitUntilClickable()->one()->click();
- }
-
- if (isset($data['template'])) {
- $this->zbxTestClickLinkText($this->itemInheritance);
- }
- }
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertElementNotPresentId('add_protoitem');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//button[@id='add_protoitem'][@disabled]");
- }
-
- if (!isset($data['form'])) {
- $this->zbxTestClick('add_protoitem');
- $this->zbxTestLaunchOverlayDialog('Item prototypes');
-
- if (isset($data['host'])) {
- $this->zbxTestClickLinkText($this->item);
- }
-
- if (isset($data['template'])) {
- $this->zbxTestClickLinkText($this->itemDiscovery);
- }
- }
-
- switch($ymin_type) {
- case 'Fixed':
- $this->zbxTestAssertVisibleId('yaxismin');
- $this->zbxTestAssertAttribute("//input[@id='yaxismin']", 'maxlength', 255);
- $this->zbxTestAssertElementValue('yaxismin', 0);
-
- $this->zbxTestAssertElementNotPresentId('ymin_itemid');
- break;
- case 'Calculated':
- $this->zbxTestAssertElementNotPresentId('ymin_itemid');
- $this->zbxTestAssertNotVisibleId('yaxismin');
- break;
- case 'Item':
- $this->zbxTestAssertElementPresentId('ymin_itemid');
- $this->zbxTestAssertElementText('//div[@id="ymin_itemid"]//following-sibling::div/button', 'Select');
- $this->zbxTestAssertElementPresentId('yaxis_min_prototype');
- $this->zbxTestAssertElementText("//button[@id='yaxis_min_prototype']", 'Select prototype');
- $this->zbxTestAssertNotVisibleId('yaxismin');
- break;
- default:
- $this->zbxTestTextNotPresent('Add graph items first');
- $this->zbxTestAssertElementNotPresentId('ymin_itemid');
- $this->zbxTestAssertElementNotPresentId('yaxismin');
- break;
- }
-
- switch($ymax_type) {
- case 'Fixed':
- $this->zbxTestAssertVisibleId('yaxismax');
- $this->zbxTestAssertAttribute("//input[@id='yaxismax']", 'maxlength', 255);
- $this->zbxTestAssertElementValue('yaxismax', 100);
-
- $this->zbxTestAssertElementNotPresentId('ymax_itemid');
- break;
- case 'Calculated':
- $this->zbxTestAssertElementNotPresentId('ymax_itemid');
- $this->zbxTestAssertNotVisibleId('yaxismax');
- break;
- case 'Item':
- $this->zbxTestAssertElementPresentId('ymax_itemid');
- $this->zbxTestAssertElementText('//div[@id="ymax_itemid"]//following-sibling::div/button', 'Select');
- $this->zbxTestAssertElementPresentId('yaxis_max_prototype');
- $this->zbxTestAssertElementText("//button[@id='yaxis_max_prototype']", 'Select prototype');
- $this->zbxTestAssertNotVisibleId('yaxismax');
- break;
- default:
- $this->zbxTestTextNotPresent('Add graph items first');
- $this->zbxTestAssertElementNotPresentId('ymax_itemid');
- $this->zbxTestAssertElementNotPresentId('yaxismax');
- break;
- }
-
- switch ($graphtype) {
- case 'Normal':
- $this->zbxTestTextPresent(['Items', 'Name', 'Function', 'Draw style', 'Y axis side', 'Color', 'Action']);
- break;
- case 'Stacked':
- $this->zbxTestTextPresent(['Items', 'Name', 'Function', 'Y axis side', 'Color', 'Action']);
- break;
- case 'Pie':
- case 'Exploded':
- $this->zbxTestTextPresent(['Items', 'Name', 'Type', 'Function', 'Color', 'Action']);
- break;
- }
-
- $this->zbxTestTabSwitch('Preview');
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//button[@id='update']", 'disabled');
- }
- else {
- $this->zbxTestAssertElementNotPresentXpath("//button[@id='update'][@disabled]");
- }
-
- $this->zbxTestAssertVisibleId('cancel');
- $this->zbxTestAssertElementText("//button[@id='cancel']", 'Cancel');
-
- if (isset($data['form'])) {
- $this->zbxTestAssertVisibleId('clone');
- $this->zbxTestAssertElementValue('clone', 'Clone');
- $this->zbxTestAssertVisibleId('update');
- $this->zbxTestAssertElementValue('update', 'Update');
- $this->zbxTestAssertVisibleId('delete');
- $this->zbxTestAssertElementValue('delete', 'Delete');
-
- if (isset($data['templatedHost'])) {
- $this->zbxTestAssertAttribute("//button[@id='delete']", 'disabled');
- }
- else {
-
- $this->zbxTestAssertElementNotPresentXpath("//button[@id='delete'][@disabled]");
- }
- }
- else {
- $this->zbxTestAssertVisibleId('add');
- $this->zbxTestAssertElementValue('add', 'Add');
- $this->zbxTestAssertElementNotPresentId('update');
- $this->zbxTestAssertElementNotPresentId('delete');
- $this->zbxTestAssertElementNotPresentId('clone');
- }
- }
-
- // Returns update data
- public static function update() {
- return CDBHelper::getDataProvider("select * from graphs where name LIKE 'testFormGraphPrototype%'");
- }
-
- /**
- * @dataProvider update
- */
- public function testFormGraphPrototype_SimpleUpdate($data) {
- $sqlGraphs = "select * from graphs ORDER BY graphid";
- $oldHashGraphs = CDBHelper::getHash($sqlGraphs);
-
- $this->zbxTestLogin('graphs.php?form=update&graphid='.$data['graphid'].'&parent_discoveryid=133800&hostid=40001&context=host');
- $this->zbxTestClickWait('update');
- $this->zbxTestCheckTitle('Configuration of graph prototypes');
- $this->zbxTestWaitUntilMessageTextPresent('msg-good', 'Graph prototype updated');
- $this->zbxTestTextPresent([
- $this->discoveryRule,
- 'Graph prototype updated',
- $data['name']
- ]);
-
- $this->assertEquals($oldHashGraphs, CDBHelper::getHash($sqlGraphs));
- }
-
- // Returns create data
- public static function create() {
- return [
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphSimple',
- 'hostCheck' => true,
- 'dbCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphName',
- 'hostCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphRemove',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphNotRemove',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphNormal1',
- 'graphtype' => 'Normal',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphNormal2',
- 'graphtype' => 'Normal',
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Calculated',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphNormal3',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphNormal4',
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphNormal5',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Item',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphStacked1',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphStacked2',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Fixed',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphStacked3',
- 'graphtype' => 'Stacked',
- 'ymax_type' => 'Fixed',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphStacked4',
- 'graphtype' => 'Stacked',
- 'ymax_type' => 'Item',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphStacked5',
- 'graphtype' => 'Stacked',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphPie',
- 'graphtype' => 'Pie',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphExploded',
- 'graphtype' => 'Exploded',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphSomeRemove',
- 'formCheck' => true,
- 'dbCheck' => true,
- 'remove' => true
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'graphName' => 'graphSimple',
- 'error-msg' => 'Cannot add graph prototype',
- 'errors' => [
- 'Graph with name "graphSimple" already exists in graphs or graph prototypes'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graph!@#$%^&*()><>?:"|{},./;',
- 'graphtype' => 'Exploded',
- 'formCheck' => true,
- 'dbCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'graphName' => 'graphSaveCheck',
- 'noItem' => true,
- 'error-msg' => 'Cannot add graph prototype',
- 'errors' => [
- 'Missing items for graph prototype "graphSaveCheck".'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Incorrect value for field "Name": cannot be empty.'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_GOOD,
- 'graphName' => 'graphRemoveAddItem',
- 'removeItem' => true,
- 'dbCheck' => true,
- 'formCheck' => true
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'graphName' => 'graphStackedNoMinAxisItem',
- 'graphtype' => 'Stacked',
- 'noAxisItem' => true,
- 'ymin_type' => 'Item',
- 'ymax_type' => 'Fixed',
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Field "ymin_itemid" is mandatory.'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'graphName' => 'graphStackedNoMaxAxisItem',
- 'graphtype' => 'Stacked',
- 'noAxisItem' => true,
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Item',
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Field "ymax_itemid" is mandatory.'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'graphName' => 'graphStackedMore',
- 'width' => '0',
- 'height' => '0',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed',
- 'yaxismin' => 'name',
- 'ymax_type' => 'Fixed',
- 'yaxismax' => 'name',
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Incorrect value "0" for "Width" field: must be between 20 and 65535.',
- 'Incorrect value "0" for "Height" field: must be between 20 and 65535.',
- 'Field "yaxismin" is not correct: a number is expected',
- 'Field "yaxismax" is not correct: a number is expected'
- ]
- ]
- ],
- [
- [
- 'expected' => TEST_BAD,
- 'graphName' => 'graphStackedError',
- 'width' => '65536',
- 'height' => '-22',
- 'graphtype' => 'Stacked',
- 'ymin_type' => 'Fixed',
- 'ymax_type' => 'Fixed',
- 'error-msg' => 'Page received incorrect data',
- 'errors' => [
- 'Incorrect value "65536" for "Width" field: must be between 20 and 65535.',
- 'Incorrect value "-22" for "Height" field: must be between 20 and 65535.'
- ]
- ]
- ]
- ];
- }
-
- /**
- * @dataProvider create
- */
- public function testFormGraphPrototype_SimpleCreate($data) {
- $this->zbxTestLogin('graphs.php?parent_discoveryid=133800&context=host&form=Create+graph+prototype');
-
- $this->zbxTestCheckTitle('Configuration of graph prototypes');
- $this->zbxTestCheckHeader('Graph prototypes');
- $this->zbxTestAssertElementPresentXpath("//a[@id='tab_graphTab' and text()='Graph prototype']");
-
- if (isset($data['graphtype'])) {
- $this->zbxTestDropdownSelectWait('graphtype', $data['graphtype']);
- }
- $graphtype = $this->zbxTestGetSelectedLabel('graphtype');
-
- if (isset($data['ymin_type'])) {
- $this->zbxTestDropdownSelectWait('ymin_type', $data['ymin_type']);
- }
-
- if (isset($data['ymax_type'])) {
- $this->zbxTestDropdownSelectWait('ymax_type', $data['ymax_type']);
- }
-
- if (!isset($data['noItem'])) {
- $this->zbxTestClick('add_protoitem');
- $this->zbxTestLaunchOverlayDialog('Item prototypes');
-
- $this->zbxTestClickLinkText($this->item);
-
- $this->zbxTestClick('add_item');
- $this->zbxTestLaunchOverlayDialog('Items');
-
- $host = COverlayDialogElement::find()->one()->waitUntilReady()->query('class:multiselect-control')->asMultiselect()->one();
- $host->fill([
- 'values' => $this->host,
- 'context' => $this->hostGroup
- ]);
- $this->query('link', $this->itemSimple)->waitUntilClickable()->one()->click();
-
- if (isset($data['removeItem'])) {
- $this->zbxTestClickWait('items_0_remove');
- $this->zbxTestTextNotPresent($this->item);
-
- $this->zbxTestClickWait('items_0_remove');
- $this->zbxTestTextNotPresent($this->itemSimple);
-
- $this->zbxTestClick('add_item');
- $this->zbxTestLaunchOverlayDialog('Items');
- $host = COverlayDialogElement::find()->one()->query('class:multiselect-control')->asMultiselect()->one();
- $host->fill([
- 'values' => $this->host,
- 'context' => $this->hostGroup
- ]);
- $this->query('link', $this->itemSimple)->waitUntilClickable()->one()->click();
-
- $this->zbxTestClick('add_protoitem');
- $this->zbxTestLaunchOverlayDialog('Item prototypes');
- $this->zbxTestClickLinkText($this->item);
- }
- }
- if (isset($data['width'])) {
- $this->zbxTestInputTypeOverwrite('width', $data['width']);
- }
-
- if (isset($data['height'])) {
- $this->zbxTestInputTypeOverwrite('height', $data['height']);
- }
-
- if (isset($data['graphName'])) {
- $graphName = $data['graphName'];
- $this->zbxTestInputType('name', $graphName);
- }
- else {
- $graphName = null;
- }
-
- if ($graphtype == 'Normal' || $graphtype == 'Stacked') {
-
- $ymin_type = $this->zbxTestGetSelectedLabel('ymin_type');
- $ymax_type = $this->zbxTestGetSelectedLabel('ymax_type');
-
- switch($ymin_type) {
- case 'Fixed':
- $this->zbxTestInputType('yaxismin', isset($data['yaxismin']) ? $data['yaxismin'] : $this->yaxismin);
- break;
- case 'Item':
- if (!isset($data['noAxisItem'])) {
- $this->zbxTestClick('yaxis_min_prototype');
- $this->zbxTestLaunchOverlayDialog('Item prototypes');
- $this->zbxTestClickLinkText($this->item);
- }
- break;
- case 'Calculated':
- break;
- }
-
- switch($ymax_type) {
- case 'Fixed':
- $this->zbxTestInputType('yaxismax', isset($data['yaxismax']) ? $data['yaxismax'] : $this->yaxismax);
- break;
- case 'Item':
- if (!isset($data['noAxisItem'])) {
- $this->zbxTestClick('yaxis_max_prototype');
- $this->zbxTestLaunchOverlayDialog('Item prototypes');
- $this->zbxTestClickLinkText($this->item);
- }
- break;
- case 'Calculated':
- break;
- }
- }
-
- $this->zbxTestClickWait('add');
-
- switch ($data['expected']) {
- case TEST_GOOD:
- $this->zbxTestWaitUntilMessageTextPresent('msg-good', 'Graph prototype added');
- $this->zbxTestCheckTitle('Configuration of graph prototypes');
- $this->zbxTestTextPresent(['Graph prototypes', $this->discoveryRule]);
- break;
-
- case TEST_BAD:
- $this->zbxTestCheckTitle('Configuration of graph prototypes');
- $this->zbxTestWaitUntilMessageTextPresent('msg-bad', $data['error-msg']);
- $this->zbxTestCheckHeader('Graph prototypes');
- foreach ($data['errors'] as $msg) {
- $this->zbxTestTextPresent($msg);
- }
- break;
- }
-
- if (isset($data['formCheck'])) {
- $this->zbxTestOpen(self::HOST_LIST_PAGE);
- $form = $this->query('name:zbx_filter')->asForm()->waitUntilReady()->one();
- $this->filterEntriesAndOpenDiscovery($form, $this->host);
- $this->zbxTestClickLinkTextWait($this->discoveryRule);
- $this->zbxTestClickLinkTextWait('Graph prototypes');
-
- $this->zbxTestClickLinkTextWait($graphName);
-
- $this->zbxTestAssertElementValue('name', $graphName);
- $this->zbxTestAssertElementPresentXpath("//span[text()='".$this->host.": ".$this->itemSimple."']");
- $this->zbxTestAssertElementPresentXpath("//span[text()='".$this->host.": ".$this->item."']");
- }
-
- if (isset($data['dbCheck'])) {
- $result = DBselect("SELECT name, graphid FROM graphs where name = '".$graphName."' limit 1");
- while ($row = DBfetch($result)) {
- $this->assertEquals($row['name'], $graphName);
- }
- }
-
- if (isset($data['remove'])) {
- $result = DBselect("SELECT graphid FROM graphs where name = '".$graphName."'");
- while ($row = DBfetch($result)) {
- $graphid = $row['graphid'];
- }
-
- $this->zbxTestOpen(self::HOST_LIST_PAGE);
- $form = $this->query('name:zbx_filter')->asForm()->waitUntilReady()->one();
- $this->filterEntriesAndOpenDiscovery($form, $this->host);
- $this->zbxTestClickLinkTextWait($this->discoveryRule);
- $this->zbxTestClickLinkTextWait('Graph prototypes');
-
- $this->zbxTestCheckboxSelect('group_graphid_'.$graphid);
- $this->zbxTestClickButton('graph.massdelete');
-
- $this->zbxTestAcceptAlert();
- $this->zbxTestWaitUntilMessageTextPresent('msg-good', 'Graph prototypes deleted');
- $this->zbxTestTextNotPresent($this->template.": $graphName");
- }
- }
-
- /**
- * Function for filtering necessary hosts or templates and opening their Discovery rules.
- *
- * @param string $name name of a host
- */
- private function filterEntriesAndOpenDiscovery($form, $name) {
- $form->fill(['Name' => $name]);
- $this->query('button:Apply')->one()->waitUntilClickable()->click();
- $this->query('xpath://table[@class="list-table"]')->asTable()->one()->findRow('Name', $name)
- ->getColumn('Discovery')->query('link:Discovery')->one()->click();
- }
-}
diff --git a/ui/tests/selenium/testFormTabIndicators.php b/ui/tests/selenium/testFormTabIndicators.php
index 69d191196b4..13f54ab8aac 100644
--- a/ui/tests/selenium/testFormTabIndicators.php
+++ b/ui/tests/selenium/testFormTabIndicators.php
@@ -25,8 +25,8 @@ require_once dirname(__FILE__).'/../include/helpers/CDataHelper.php';
/**
* @dataSource Services
+ * @dataSource EntitiesTags
*
- * @backup services
* @backup profiles
*/
class testFormTabIndicators extends CWebTest {
@@ -825,7 +825,7 @@ class testFormTabIndicators extends CWebTest {
$overlay->query('id:serviceid_all')->asCheckbox()->one()->check();
$overlay->query('button:Select')->one()->click();
$overlay->waitUntilNotVisible();
- $this->assertTabIndicator($tab_selector, count(CDataHelper::get('Services.serviceids')));
+ $this->assertTabIndicator($tab_selector, CDBHelper::getCount('SELECT null FROM services'));
// Remove all child services and check count indicator.
$child_services_tab->query('button:Remove')->all()->click();
diff --git a/ui/tests/selenium/testFormTriggerPrototype.php b/ui/tests/selenium/testFormTriggerPrototype.php
index 192cd641248..be6c96362f5 100644
--- a/ui/tests/selenium/testFormTriggerPrototype.php
+++ b/ui/tests/selenium/testFormTriggerPrototype.php
@@ -527,77 +527,77 @@ class testFormTriggerPrototype extends CLegacyWebTest {
[
'expected' => TEST_GOOD,
'description' => 'MyTrigger_sysUptime',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => '1234567890',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => 'a?aa+',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => '}aa]a{',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => '-aaa=%',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => 'aaa,;:',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => 'aaa><.',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => 'aaa*&_',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => 'aaa#@!',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => '([)$^',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0'
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0'
]
],
[
[
'expected' => TEST_GOOD,
'description' => 'MyTrigger_generalCheck',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<5',
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<5',
'type' => true,
'comments' => 'Trigger status (expression) is recalculated every time Zabbix server receives new value, if this value is part of this expression. If time based functions are used in the expression, it is recalculated every 30 seconds by a zabbix timer process. ',
'url_name' => 'Trigger context menu name for trigger URL.',
@@ -610,7 +610,7 @@ class testFormTriggerPrototype extends CLegacyWebTest {
[
'expected' => TEST_GOOD,
'description' => 'MyTrigger_CheckUrl',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<5',
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<5',
'url_name' => 'MyTrigger: menu name',
'url' => 'index.php'
]
@@ -653,10 +653,10 @@ class testFormTriggerPrototype extends CLegacyWebTest {
[
'expected' => TEST_BAD,
'description' => 'MyTrigger',
- 'expression' => 'last(/Simple form test host/item-prototype-reuse,#1)<0 or {#MACRO}',
+ 'expression' => 'last(/Simple form test host/item-prototype-reuse[{#KEY}],#1)<0 or {#MACRO}',
'constructor' => [
'text' => ['A or B', 'A', 'B'],
- 'elements' => ['expr_0_53', 'expr_58_65']
+ 'elements' => ['expr_0_61', 'expr_66_73']
]
]
],
@@ -812,7 +812,7 @@ class testFormTriggerPrototype extends CLegacyWebTest {
if (isset($data['expression'])) {
switch ($data['expression']) {
case 'default':
- $expression = 'last(/'.$this->host.'/'.$this->itemKey.',#1)=0';
+ $expression = 'last(/'.$this->host.'/'.$this->itemKey.'[{#KEY}],#1)=0';
$this->zbxTestInputType('expression', $expression);
break;
default:
diff --git a/ui/tests/selenium/testInheritanceHostPrototype.php b/ui/tests/selenium/testInheritanceHostPrototype.php
index 73a40bb3c99..57de3f86508 100644
--- a/ui/tests/selenium/testInheritanceHostPrototype.php
+++ b/ui/tests/selenium/testInheritanceHostPrototype.php
@@ -456,7 +456,7 @@ class testInheritanceHostPrototype extends CLegacyWebTest {
if (array_key_exists('template', $data)) {
$this->zbxTestClickButtonMultiselect('add_templates_');
$this->zbxTestLaunchOverlayDialog('Templates');
- COverlayDialogElement::find()->one()->setDataContext('Templates');
+ COverlayDialogElement::find()->waitUntilReady()->one()->setDataContext('Templates');
$this->zbxTestClickLinkTextWait($data['template']);
}
diff --git a/ui/tests/selenium/testInheritanceTriggerPrototype.php b/ui/tests/selenium/testInheritanceTriggerPrototype.php
index 3d2e5a5ae82..84b151ce684 100644
--- a/ui/tests/selenium/testInheritanceTriggerPrototype.php
+++ b/ui/tests/selenium/testInheritanceTriggerPrototype.php
@@ -78,7 +78,7 @@ class testInheritanceTriggerPrototype extends CLegacyWebTest {
[
'expected' => TEST_GOOD,
'description' => 'testInheritanceTriggerPrototype5',
- 'expression' => 'last(/Inheritance test template/item-discovery-prototype)<0'
+ 'expression' => 'last(/Inheritance test template/item-discovery-prototype[{#KEY}])<0'
]
],
[
diff --git a/ui/tests/selenium/testPageAdministrationGeneralModules.php b/ui/tests/selenium/testPageAdministrationGeneralModules.php
index fe488eecb37..ee3e5ba177d 100644
--- a/ui/tests/selenium/testPageAdministrationGeneralModules.php
+++ b/ui/tests/selenium/testPageAdministrationGeneralModules.php
@@ -41,6 +41,12 @@ class testPageAdministrationGeneralModules extends CWebTest {
];
}
+ private static $widget_names = ['Action log', 'Clock', 'Data overview', 'Discovery status', 'Favorite graphs',
+ 'Favorite maps','Geomap', 'Graph', 'Graph (classic)', 'Graph prototype', 'Host availability', 'Item value',
+ 'Map', 'Map navigation tree', 'Plain text', 'Problem hosts', 'Problems', 'Problems by severity', 'SLA report',
+ 'System information', 'Top hosts', 'Trigger overview', 'URL', 'Web monitoring'
+ ];
+
public function testPageAdministrationGeneralModules_Layout() {
$modules = [
[
@@ -79,6 +85,18 @@ class testPageAdministrationGeneralModules extends CWebTest {
'Status' => 'Disabled'
]
];
+
+ // Create an array with widgt modules that should be present by default.
+ $widget_modules = [];
+
+ foreach (self::$widget_names as $i => $name) {
+ $widget_modules[$i]['Name'] = $name;
+ $widget_modules[$i]['Version'] = '1.0';
+ $widget_modules[$i]['Author'] = 'Zabbix SIA';
+ $widget_modules[$i]['Description'] = '';
+ $widget_modules[$i]['Status'] = 'Enabled';
+ }
+
// Open modules page and check header.
$this->page->login()->open('zabbix.php?action=module.list');
$this->assertEquals('Modules', $this->query('tag:h1')->one()->getText());
@@ -87,12 +105,17 @@ class testPageAdministrationGeneralModules extends CWebTest {
foreach (['Scan directory' => true, 'Enable' => false, 'Disable' => false] as $button => $enabled) {
$this->assertTrue($this->query('button', $button)->one()->isEnabled($enabled));
}
- // Check that modules are not being loaded until the 'Scan directory' button is pressed.
- $this->assertEquals($this->query('class:nothing-to-show')->one()->getText(), 'No data found.');
- $this->assertEquals('Displaying 0 of 0 found', $this->query('class:table-stats')->one()->getText());
+
+ $table = $this->query('class:list-table')->asTable()->one();
+
+ // Check that only widget modules are present until the 'Scan directory' button is pressed.
+ $this->assertTableData($widget_modules);
+
+ $count = $table->getRows()->count();
+ $this->assertTableStats($count);
+
$this->assertEquals('0 selected', $this->query('id:selected_count')->one()->getText());
// Check modules table headers.
- $table = $this->query('class:list-table')->asTable()->one();
$headers = $table->getHeadersText();
// Remove empty element from headers array.
array_shift($headers);
@@ -101,8 +124,14 @@ class testPageAdministrationGeneralModules extends CWebTest {
// Load modules.
$this->loadModules();
+ $all_modules = array_merge($widget_modules, $modules);
+ // Sort column contents ascending.
+ usort($all_modules, function($a, $b) {
+ return strcmp($a['Name'], $b['Name']);
+ });
+
// Check parameters of modules in the modules table.
- $this->assertTableData($modules);
+ $this->assertTableData($all_modules);
$count = CDBHelper::getCount('SELECT moduleid FROM module');
$this->assertEquals('Displaying '.$count.' of '.$count.' found', $this->query('class:table-stats')->one()->getText());
@@ -121,8 +150,8 @@ class testPageAdministrationGeneralModules extends CWebTest {
'Version' => '1',
'Author' => '1st Module author',
'Description' => '1st Module description',
- 'Directory' => 'module_number_1',
- 'Namespace' => 'Example_A',
+ 'Directory' => 'modules/module_number_1',
+ 'Namespace' => 'Modules\Example_A',
'Homepage' => '1st module URL',
'Enabled' => false
]
@@ -134,8 +163,8 @@ class testPageAdministrationGeneralModules extends CWebTest {
'Version' => 'two !@#$%^&*()_+',
'Author' => '2nd Module author !@#$%^&*()_+',
'Description' => 'Module description !@#$%^&*()_+',
- 'Directory' => 'module_number_2',
- 'Namespace' => 'Example_B',
+ 'Directory' => 'modules/module_number_2',
+ 'Namespace' => 'Modules\Example_B',
'Homepage' => '!@#$%^&*()_+',
'Enabled' => false
]
@@ -147,8 +176,8 @@ class testPageAdministrationGeneralModules extends CWebTest {
'Version' => '',
'Author' => '-',
'Description' => '-',
- 'Directory' => 'module_number_4',
- 'Namespace' => 'Example_A',
+ 'Directory' => 'modules/module_number_4',
+ 'Namespace' => 'Modules\Example_A',
'Homepage' => '-',
'Enabled' => false
]
@@ -160,8 +189,8 @@ class testPageAdministrationGeneralModules extends CWebTest {
'Version' => '',
'Author' => '-',
'Description' => 'Adding top-level and sub-level menu',
- 'Directory' => 'module_number_5',
- 'Namespace' => 'Example_E',
+ 'Directory' => 'modules/module_number_5',
+ 'Namespace' => 'Modules\Example_E',
'Homepage' => '-',
'Enabled' => false
]
@@ -173,8 +202,8 @@ class testPageAdministrationGeneralModules extends CWebTest {
'Version' => 'бета 2',
'Author' => 'Работник ЗаббикÑа',
'Description' => 'Удалить "Reports" из меню верхнего уровнÑ, а так же удалить "Maps" из Ñекции "Monitoring".',
- 'Directory' => 'module_number_6',
- 'Namespace' => 'Example_F',
+ 'Directory' => 'modules/module_number_6',
+ 'Namespace' => 'Modules\Example_F',
'Homepage' => '-',
'Enabled' => false
]
@@ -277,9 +306,8 @@ class testPageAdministrationGeneralModules extends CWebTest {
'action' => 'forth.module'
]
],
-// 'error_title' => 'Cannot update module: 4th Module.',
- 'error_details' => 'Identical namespace (Example_A) is used by modules located at '.
- 'module_number_1, module_number_4.'
+ 'error_details' => 'Identical namespace (Modules\Example_A) is used by modules located at '.
+ 'modules/module_number_1, modules/module_number_4.'
]
]
],
@@ -409,9 +437,7 @@ class testPageAdministrationGeneralModules extends CWebTest {
'filter' => [
'Status' => 'Enabled'
],
- 'expected' => [
- '2nd Module name !@#$%^&*()_+'
- ]
+ 'expected' => array_merge(['2nd Module name !@#$%^&*()_+'], self::$widget_names)
]
],
// Retrieve only Disabled modules.
@@ -582,7 +608,7 @@ class testPageAdministrationGeneralModules extends CWebTest {
if (CTestArrayHelper::get($entry, 'check_disabled', true)) {
$this->page->open('zabbix.php?action='.$entry['action'])->waitUntilReady();
$message = CMessageElement::find()->one();
- $this->assertStringContainsString('Class not found', $message->getText());
+ $this->assertStringContainsString('Page not found', $message->getText());
$this->page->open('zabbix.php?action=module.list');
}
}
diff --git a/ui/tests/selenium/testPageMassUpdateItemPrototypes.php b/ui/tests/selenium/testPageMassUpdateItemPrototypes.php
index ab919b600aa..771140c9b07 100644
--- a/ui/tests/selenium/testPageMassUpdateItemPrototypes.php
+++ b/ui/tests/selenium/testPageMassUpdateItemPrototypes.php
@@ -62,8 +62,7 @@ class testPageMassUpdateItemPrototypes extends testMassUpdateItems {
'key_' => 'snmptrap[{#KEY1}]',
'type' => 17,
'value_type' => 0,
- 'interfaceid' => self::SNMP2_INTERFACE_ID,
- 'delay' => '3m'
+ 'interfaceid' => self::SNMP2_INTERFACE_ID
],
[
'hostid' => self::HOSTID,
@@ -72,8 +71,7 @@ class testPageMassUpdateItemPrototypes extends testMassUpdateItems {
'key_' => 'snmptrap[{#KEY2}]',
'type' => 17,
'value_type' => 1,
- 'interfaceid' => self::SNMP2_INTERFACE_ID,
- 'delay' => '4m'
+ 'interfaceid' => self::SNMP2_INTERFACE_ID
],
[
'hostid' => self::HOSTID,
@@ -136,7 +134,7 @@ class testPageMassUpdateItemPrototypes extends testMassUpdateItems {
'hostid' => self::HOSTID,
'ruleid' => self::RULEID,
'name' => '12_SSH_Agent',
- 'key_' => 'ssh.run[{#KEY}]',
+ 'key_' => 'ssh.run[{#KEY2}]',
'type' => 13,
'value_type' => 1,
'interfaceid' => self::AGENT_INTERFACE_ID,
@@ -169,7 +167,7 @@ class testPageMassUpdateItemPrototypes extends testMassUpdateItems {
'hostid' => self::HOSTID,
'ruleid' => self::RULEID,
'name' => '14_DB_Monitor',
- 'key_' => 'db.odbc.select[{#KEY}]',
+ 'key_' => 'db.odbc.select[{#KEY2}]',
'type' => 11,
'value_type' => 0,
'delay' => '90s',
@@ -223,7 +221,7 @@ class testPageMassUpdateItemPrototypes extends testMassUpdateItems {
'hostid' => self::HOSTID,
'ruleid' => self::RULEID,
'name' => '17_Script',
- 'key_' => 'script1',
+ 'key_' => 'script1[{#KEY}]',
'type' => 21,
'value_type' => 0,
'delay' => '15s',
@@ -234,7 +232,7 @@ class testPageMassUpdateItemPrototypes extends testMassUpdateItems {
'hostid' => self::HOSTID,
'ruleid' => self::RULEID,
'name' => '18_Script',
- 'key_' => 'script2',
+ 'key_' => 'script2[{#KEY}]',
'type' => 21,
'value_type' => 0,
'delay' => '14s',
@@ -276,6 +274,19 @@ class testPageMassUpdateItemPrototypes extends testMassUpdateItems {
'Discover' => ['id' => 'discover', 'value' => 'Yes']
]
]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'names' => [
+ '1_Item',
+ '2_Item'
+ ],
+ 'change' => [
+ 'Type' => ['id' => 'type', 'value' => 'Dependent item']
+ ],
+ 'details' => 'Invalid parameter "/1/master_itemid": an item/item prototype ID is expected.'
+ ]
]
];
}
diff --git a/ui/tests/selenium/testPageMassUpdateItems.php b/ui/tests/selenium/testPageMassUpdateItems.php
index 2d2ef309a49..8cc622417fb 100644
--- a/ui/tests/selenium/testPageMassUpdateItems.php
+++ b/ui/tests/selenium/testPageMassUpdateItems.php
@@ -59,8 +59,7 @@ class testPageMassUpdateItems extends testMassUpdateItems {
'key_' => 'snmptrap.fallback',
'type' => 17,
'value_type' => 0,
- 'interfaceid' => self::SNMP2_INTERFACE_ID,
- 'delay' => '3m'
+ 'interfaceid' => self::SNMP2_INTERFACE_ID
],
[
'hostid' => self::HOSTID,
@@ -68,8 +67,7 @@ class testPageMassUpdateItems extends testMassUpdateItems {
'key_' => 'snmptrap[regexp]',
'type' => 17,
'value_type' => 1,
- 'interfaceid' => self::SNMP2_INTERFACE_ID,
- 'delay' => '4m'
+ 'interfaceid' => self::SNMP2_INTERFACE_ID
],
[
'hostid' => self::HOSTID,
@@ -157,7 +155,7 @@ class testPageMassUpdateItems extends testMassUpdateItems {
[
'hostid' => self::HOSTID,
'name' => '14_DB_Monitor',
- 'key_' => 'db.odbc.select',
+ 'key_' => 'db.odbc.select[]',
'type' => 11,
'value_type' => 0,
'delay' => '90s',
@@ -242,7 +240,8 @@ class testPageMassUpdateItems extends testMassUpdateItems {
'change' => [
'Type' => ['id' => 'type', 'value' => 'Zabbix agent'],
'Host interface' => ['id' => 'interface-select', 'value' => '127.0.5.1:10051'],
- 'Status' => ['id' => 'status', 'value' => 'Disabled']
+ 'Status' => ['id' => 'status', 'value' => 'Disabled'],
+ 'Update interval' => ['Delay' => '1m']
]
]
],
@@ -255,9 +254,23 @@ class testPageMassUpdateItems extends testMassUpdateItems {
'change' => [
'Type' => ['id' => 'type', 'value' => 'Zabbix agent'],
'Host interface' => ['id' => 'interface-select', 'value' => '127.0.5.1:10051'],
- 'Status' => ['id' => 'status', 'value' => 'Enabled']
+ 'Status' => ['id' => 'status', 'value' => 'Enabled'],
+ 'Update interval' => ['Delay' => '1m']
]
]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'names' => [
+ '1_Item',
+ '2_Item'
+ ],
+ 'change' => [
+ 'Type' => ['id' => 'type', 'value' => 'Dependent item']
+ ],
+ 'details' => 'Invalid parameter "/1/master_itemid": an item ID is expected.'
+ ]
]
];
}
diff --git a/ui/tests/selenium/testSID.php b/ui/tests/selenium/testSID.php
index bc7f1c4a6ce..3669387d956 100644
--- a/ui/tests/selenium/testSID.php
+++ b/ui/tests/selenium/testSID.php
@@ -248,13 +248,6 @@ class testSID extends CWebTest {
'json_output' => true
]],
- // Dashboard widget configure.
- [[
- 'link' => 'zabbix.php?action=dashboard.widget.configure&type=actionlog&view_mode=0&fields=%7B%22rf_rate'.
- '%22%3A%22-1%22%2C%22sort_triggers%22%3A%224%22%2C%22show_lines%22%3A%2225%22%7D',
- 'json_output' => true
- ]],
-
// Dashboard widget refresh rate.
[[
'link' => 'zabbix.php?action=dashboard.widget.rfrate&widgetid=2002&rf_rate=120',
@@ -278,12 +271,6 @@ class testSID extends CWebTest {
'link' => 'zabbix.php?form_refresh=1&templateid=10076&dashboardids%5B146%5D=146&action=template.dashboard.delete'
]],
- // Template dashboard widget edit.
- [[
- 'link' => 'zabbix.php?action=dashboard.widget.edit&templateid=10076',
- 'json_output' => true
- ]],
-
// User token delete.
[[
'link' => 'zabbix.php?action=token.delete&action_src=user.token.list&tokenids%5B0%5D=1',
@@ -606,11 +593,11 @@ class testSID extends CWebTest {
// Export.
[['link' => 'zabbix.php?action=export.hosts&format=yaml&backurl=hosts.php&form_refresh=1&hosts%5B50011%5D=50011']],
- // Favourite create.
- [['link' => 'zabbix.php?action=favourite.create&object=screenid&objectid=200021']],
+ // Favorite create.
+ [['link' => 'zabbix.php?action=favorite.create&object=screenid&objectid=200021']],
- // Favourite delete.
- [['link' => 'zabbix.php?action=favourite.delete&object=screenid&objectid=200021']],
+ // Favorite delete.
+ [['link' => 'zabbix.php?action=favorite.delete&object=screenid&objectid=200021']],
// Host creation.
[[
diff --git a/ui/tests/selenium/testTemplateInheritance.php b/ui/tests/selenium/testTemplateInheritance.php
index adc66996cd9..ed9cb787136 100644
--- a/ui/tests/selenium/testTemplateInheritance.php
+++ b/ui/tests/selenium/testTemplateInheritance.php
@@ -83,8 +83,8 @@ class testTemplateInheritance extends CLegacyWebTest {
'testInheritance',
'key-item-inheritance',
[
- 'Item "key-item-inheritance" already exists on "Template inheritance test host", inherited from '.
- 'another template.'
+ 'Cannot inherit LLD rule with key "key-item-inheritance" of template "Inheritance test template" '.
+ 'to host "Template inheritance test host", because a discovered item with the same key already exists.'
]
],
// Item added to Template inheritance test host
@@ -346,7 +346,7 @@ class testTemplateInheritance extends CLegacyWebTest {
$this->zbxTestContentControlButtonClickTextWait('Create item prototype');
$this->zbxTestInputTypeWait('name', 'Test LLD item');
- $this->zbxTestInputType('key', 'test-lld-item');
+ $this->zbxTestInputType('key', 'test-lld-item[{#KEY}]');
$this->zbxTestDropdownSelect('type', 'Simple check');
$this->zbxTestDropdownSelect('value_type', 'Numeric (unsigned)');
$this->zbxTestInputType('units', 'units');
@@ -375,7 +375,7 @@ class testTemplateInheritance extends CLegacyWebTest {
$this->zbxTestClickLinkTextWait('Test LLD item');
$this->zbxTestAssertElementValue('name', 'Test LLD item');
- $this->zbxTestAssertElementValue('key', 'test-lld-item');
+ $this->zbxTestAssertElementValue('key', 'test-lld-item[{#KEY}]');
$this->zbxTestDropdownAssertSelected('type', 'Simple check');
$this->zbxTestDropdownAssertSelected('value_type', 'Numeric (unsigned)');
$this->zbxTestAssertElementValue('units', 'units');
@@ -407,7 +407,7 @@ class testTemplateInheritance extends CLegacyWebTest {
$this->zbxTestContentControlButtonClickTextWait('Create trigger prototype');
$this->zbxTestInputTypeByXpath("//input[@name='description']", 'Test LLD trigger');
- $this->zbxTestInputType('expression', 'last(/Inheritance test template/item-discovery-prototype,#1)=0');
+ $this->zbxTestInputType('expression', 'last(/Inheritance test template/item-discovery-prototype[{#KEY}],#1)=0');
$this->zbxTestCheckboxSelect('type_1');
$this->zbxTestInputType('comments', 'comments');
$this->zbxTestInputType('url', 'zabbix.php');
@@ -436,7 +436,7 @@ class testTemplateInheritance extends CLegacyWebTest {
$this->zbxTestWaitUntilElementVisible(WebDriverBy::id('description'));
$getName = $this->zbxTestGetValue("//input[@name='description']");
$this->assertEquals($getName, 'Test LLD trigger');
- $this->zbxTestAssertElementValue('expression', 'last(/Template inheritance test host/item-discovery-prototype,#1)=0');
+ $this->zbxTestAssertElementValue('expression', 'last(/Template inheritance test host/item-discovery-prototype[{#KEY}],#1)=0');
$this->assertTrue($this->zbxTestCheckboxSelected('recovery_mode_0'));
$this->zbxTestAssertElementPresentXpath("//input[@id='recovery_mode_0'][@disabled]");
$this->zbxTestAssertElementText('//*[@name="comments"]', 'comments');
diff --git a/ui/tests/selenium/users/testFormUserPermissions.php b/ui/tests/selenium/users/testFormUserPermissions.php
index 38b8e9ac8c7..99f0128f9b2 100644
--- a/ui/tests/selenium/users/testFormUserPermissions.php
+++ b/ui/tests/selenium/users/testFormUserPermissions.php
@@ -461,9 +461,20 @@ class testFormUserPermissions extends CWebTest {
* Check enabled/disabled module.
*/
public function testFormUserPermissions_Module() {
+ $widget_modules = ['Action log', 'Clock', 'Data overview', 'Discovery status', 'Favorite graphs', 'Favorite maps',
+ 'Geomap', 'Graph', 'Graph (classic)', 'Graph prototype', 'Host availability', 'Item value', 'Map',
+ 'Map navigation tree', 'Plain text', 'Problem hosts', 'Problems', 'Problems by severity', 'SLA report',
+ 'System information', 'Top hosts', 'Trigger overview', 'URL', 'Web monitoring'
+ ];
+
$this->page->login()->open('zabbix.php?action=user.edit&userid='.self::$admin_user)->waitUntilReady();
$this->query('xpath://form[@name="user_form"]')->waitUntilPresent()->one()->asForm()->selectTab('Permissions');
- $this->assertTrue($this->query('xpath://em[text()="No enabled modules found."]')->one()->isDisplayed());
+
+ // Check that the default modules are present in form.
+ $modules_selector = 'xpath://h4[text()="Access to modules"]/../../following::li[1]//span';
+ $modules = $this->query($modules_selector)->all()->asText();
+ $this->assertEquals($widget_modules, array_values($modules));
+
$this->page->open('zabbix.php?action=module.list')->waitUntilReady();
$this->query('button:Scan directory')->one()->click();
$table = $this->query('class:list-table')->asTable()->one();
@@ -471,20 +482,24 @@ class testFormUserPermissions extends CWebTest {
$this->query('button:Enable')->one()->click();
$this->page->acceptAlert();
$this->page->waitUntilReady();
- $selector = 'xpath://h4[text()="Access to modules"]/../../following::li/div/div/span[text()=';
+
foreach ([true, false] as $enable_modules) {
$this->page->open('zabbix.php?action=user.edit&userid='.self::$admin_user)->waitUntilReady();
$this->query('xpath://form[@name="user_form"]')->waitUntilPresent()->one()->asForm()->selectTab('Permissions');
if ($enable_modules) {
- $this->assertEquals('status-green', $this->query($selector.'"4"]')->one()->getAttribute('class'));
+ $this->assertEquals('status-green', $this->query($modules_selector.'[text()="4th Module"]')->one()
+ ->getAttribute('class')
+ );
$this->page->open('zabbix.php?action=userrole.edit&roleid='.self::$admin_roleid);
$form = $this->query('id:userrole-form')->waitUntilPresent()->asForm()->one();
$form->getField('4th Module')->uncheck();
$form->submit();
}
else {
- $this->assertEquals('status-grey', $this->query($selector.'"4"]')->one()->getAttribute('class'));
+ $this->assertEquals('status-grey', $this->query($modules_selector.'[text()="4th Module"]')->one()
+ ->getAttribute('class')
+ );
}
}
}
diff --git a/ui/tests/unit/bootstrap.php b/ui/tests/unit/bootstrap.php
index 3fbbcae5f04..3ee9b0a4d60 100644
--- a/ui/tests/unit/bootstrap.php
+++ b/ui/tests/unit/bootstrap.php
@@ -73,5 +73,6 @@ $autoloader->addNamespace('', [
__DIR__.'/include/classes/import/converters',
__DIR__.'/include/classes/include/classes/vaults'
]);
-$autoloader->addNamespace('Core', [__DIR__.'/../../include/classes/core']);
+$autoloader->addNamespace('Zabbix\\Core', [__DIR__.'/../../include/classes/core']);
+$autoloader->addNamespace('Zabbix\\Widgets', [__DIR__.'/../../include/classes/widgets']);
$autoloader->register();
diff --git a/ui/tests/unit/include/classes/import/CImportDataAdapterTest.php b/ui/tests/unit/include/classes/import/CImportDataAdapterTest.php
index d861b817d56..1119ecabcb7 100644
--- a/ui/tests/unit/include/classes/import/CImportDataAdapterTest.php
+++ b/ui/tests/unit/include/classes/import/CImportDataAdapterTest.php
@@ -980,7 +980,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -1030,7 +1029,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -1080,7 +1078,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [
[
'tag' => 'Application',
@@ -1385,7 +1382,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -1435,7 +1431,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -1485,7 +1480,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [
[
'tag' => 'Application',
@@ -3196,7 +3190,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -3298,7 +3291,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -3400,7 +3392,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -3994,7 +3985,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -4096,7 +4086,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -4198,7 +4187,6 @@ class CImportDataAdapterTest extends TestCase {
'publickey' => '',
'privatekey' => '',
'description' => '',
- 'inventory_link' => '0',
'tags' => [],
'valuemap' => [],
'logtimefmt' => '',
@@ -4291,9 +4279,7 @@ class CImportDataAdapterTest extends TestCase {
->setStrict(true)
->validate($source, '/');
- $versions = ['1.0', '2.0', '3.0', '3.2', '3.4', '4.0', '4.2', '4.4', '5.0', '5.2', '5.4', '6.0', '6.2'];
-
- foreach ($versions as $version) {
+ foreach ($import_converter_factory::getSequentialVersions() as $version) {
if ($source['zabbix_export']['version'] !== $version) {
continue;
}
diff --git a/ui/tests/unit/include/classes/parsers/CPrometheusOutputParserTest.php b/ui/tests/unit/include/classes/parsers/CPrometheusOutputParserTest.php
index 66ec545f8fe..6181a0e832d 100644
--- a/ui/tests/unit/include/classes/parsers/CPrometheusOutputParserTest.php
+++ b/ui/tests/unit/include/classes/parsers/CPrometheusOutputParserTest.php
@@ -64,6 +64,13 @@ class CPrometheusOutputParserTest extends TestCase {
'match' => '{#LLD}'
]
],
+ [
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}'
+ ]
+ ],
// partial success
[
'label1=', 0, [],
@@ -86,6 +93,27 @@ class CPrometheusOutputParserTest extends TestCase {
'match' => 'l1'
]
],
+ [
+ '{$MACRO} label1 ', 0, ['usermacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS_CONT,
+ 'match' => '{$MACRO}'
+ ]
+ ],
+ [
+ '{#LLD_MACRO} label1 ', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS_CONT,
+ 'match' => '{#LLD_MACRO}'
+ ]
+ ],
+ [
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)} label1 ', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS_CONT,
+ 'match' => '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}'
+ ]
+ ],
// fail
[
'', 0, [],
@@ -137,6 +165,20 @@ class CPrometheusOutputParserTest extends TestCase {
'rc' => CParser::PARSE_FAIL,
'match' => ''
]
+ ],
+ [
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
+ ],
+ [
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}', 0, [],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
]
];
}
diff --git a/ui/tests/unit/include/classes/parsers/CPrometheusPatternParserTest.php b/ui/tests/unit/include/classes/parsers/CPrometheusPatternParserTest.php
index 7dab378ef7d..80be830b43e 100644
--- a/ui/tests/unit/include/classes/parsers/CPrometheusPatternParserTest.php
+++ b/ui/tests/unit/include/classes/parsers/CPrometheusPatternParserTest.php
@@ -233,6 +233,62 @@ class CPrometheusPatternParserTest extends TestCase {
]
],
[
+ '{label1="{$MACRO}"}', 0, [],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{$MACRO}"}'
+ ]
+ ],
+ [
+ '{label1="{$MACRO} abc {$MACRO2}"}', 0, [],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{$MACRO} abc {$MACRO2}"}'
+ ]
+ ],
+ [
+ '{label1="{$MACRO}"}', 0, ['usermacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{$MACRO}"}'
+ ]
+ ],
+ [
+ '{label1="{$MACRO} abc {$MACRO2}"}', 0, ['usermacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{$MACRO} abc {$MACRO2}"}'
+ ]
+ ],
+ [
+ '{label1="{#LLD_MACRO}"}', 0, [],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{#LLD_MACRO}"}'
+ ]
+ ],
+ [
+ '{label1="{#LLD_MACRO} abc {#LLD_MACRO2}"}', 0, [],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{#LLD_MACRO} abc {#LLD_MACRO2}"}'
+ ]
+ ],
+ [
+ '{label1="{#LLD_MACRO}"}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{#LLD_MACRO}"}'
+ ]
+ ],
+ [
+ '{label1="{#LLD_MACRO} abc {#LLD_MACRO2}"}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{label1="{#LLD_MACRO} abc {#LLD_MACRO2}"}'
+ ]
+ ],
+ [
'{label1="value1"}==666', 0, [],
[
'rc' => CParser::PARSE_SUCCESS,
@@ -344,6 +400,34 @@ class CPrometheusPatternParserTest extends TestCase {
'match' => '{#LLD1}{{#LLD2}="value1"}=={#LLD3}'
]
],
+ [
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}'
+ ]
+ ],
+ [
+ 'metric == {{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => 'metric == {{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}'
+ ]
+ ],
+ [
+ 'metric{{#LLD_MACRO}="value1"} == Nan', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => 'metric{{#LLD_MACRO}="value1"} == Nan'
+ ]
+ ],
+ [
+ 'metric{{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)} = "value1"} == Nan', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => 'metric{{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)} = "value1"} == Nan'
+ ]
+ ],
// Label value can by anything, no user macro enabling flag is required.
[
'{label1="{$M}"}', 0, [],
@@ -382,6 +466,13 @@ class CPrometheusPatternParserTest extends TestCase {
'match' => '{label1!~"value1"}'
]
],
+ [
+ '{#LLD} {label1="value1"} == {{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1")}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS,
+ 'match' => '{#LLD} {label1="value1"} == {{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1")}'
+ ]
+ ],
// partial success
[
'metric=1.e1', 0, [],
@@ -559,12 +650,36 @@ class CPrometheusPatternParserTest extends TestCase {
'match' => 'metric'
]
],
- // Functional macros are not supported.
+ // Incorrect syntax of functional LLD macros in label.
[
- '{#LLD} {label1="value1"} == {{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1")}', 0, ['lldmacros' => true],
+ 'metric {{{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1")="value1"} == Nan', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS_CONT,
+ 'match' => 'metric'
+ ]
+ ],
+ // Multiple macros for metric.
+ [
+ '{#LLD_MACRO}{#LLD_MACRO2}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS_CONT,
+ 'match' => '{#LLD_MACRO}'
+ ]
+ ],
+ // Multiple macros for label.
+ [
+ 'metric{{#LLD_MACRO}{#LLD_MACRO2} = "value"}', 0, ['lldmacros' => true],
[
'rc' => CParser::PARSE_SUCCESS_CONT,
- 'match' => '{#LLD} {label1="value1"}'
+ 'match' => 'metric'
+ ]
+ ],
+ // Multiple macros for value.
+ [
+ 'metric{label = "value"} == {#LLD_MACRO}{#LLD_MACRO2}', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_SUCCESS_CONT,
+ 'match' => 'metric{label = "value"} == {#LLD_MACRO}'
]
],
// fail
@@ -759,6 +874,34 @@ class CPrometheusPatternParserTest extends TestCase {
'match' => ''
]
],
+ [
+ '{label1={$MACRO}}==""', 0, [],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
+ ],
+ [
+ '{label1={$MACRO}}==""', 0, ['usermacros' => true],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
+ ],
+ [
+ '{label1={#LLD_MACRO}}==""', 0, [],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
+ ],
+ [
+ '{label1={#LLD_MACRO}}==""', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
+ ],
// LLD macros are not enabled.
[
'{#LLD}{label1="value1"}=={#LLD}', 0, ['usermacros' => true],
@@ -767,9 +910,25 @@ class CPrometheusPatternParserTest extends TestCase {
'match' => ''
]
],
- // Functional macros are not supported.
+ // Multiple LLD macros in label.
+ [
+ '{{#LLD_MACRO}{#LLD_MACRO2}="value1"}==Inf', 0, ['usermacros' => true],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
+ ],
+ // Incorrect syntax of functional LLD macros in metric.
+ [
+ '{{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1") {label1="value1"} == value', 0, ['lldmacros' => true],
+ [
+ 'rc' => CParser::PARSE_FAIL,
+ 'match' => ''
+ ]
+ ],
+ // Incorrect syntax of functional LLD macros in metric.
[
- '{{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1")} {label1="value1"} == {{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1")}', 0, ['lldmacros' => true],
+ '{{{#LLD}.regsub("^([0-9]+)", "{#LLD}: \1")="value1"} == value', 0, ['lldmacros' => true],
[
'rc' => CParser::PARSE_FAIL,
'match' => ''
diff --git a/ui/tests/unit/include/classes/validators/CApiInputValidatorTest.php b/ui/tests/unit/include/classes/validators/CApiInputValidatorTest.php
index 832673f4b25..022d88c3591 100644
--- a/ui/tests/unit/include/classes/validators/CApiInputValidatorTest.php
+++ b/ui/tests/unit/include/classes/validators/CApiInputValidatorTest.php
@@ -960,12 +960,6 @@ class CApiInputValidatorTest extends TestCase {
'Invalid parameter "/1/int32_ranges": invalid range expression.'
],
[
- ['type' => API_INT32_RANGES],
- '{$MACRO},30-40',
- '/1/int32_ranges',
- 'Invalid parameter "/1/int32_ranges": invalid range expression.'
- ],
- [
['type' => API_INT32_RANGES, 'in' => '0:50'],
'10-20,30-40',
'/1/int32_ranges',
@@ -978,6 +972,54 @@ class CApiInputValidatorTest extends TestCase {
'Invalid parameter "/1/int32_ranges": value must be one of 20-30.'
],
[
+ ['type' => API_INT32_RANGES],
+ '{$MACRO}',
+ '/1/int32_ranges',
+ 'Invalid parameter "/1/int32_ranges": invalid range expression.'
+ ],
+ [
+ ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}',
+ '/1/int32_ranges',
+ '{$MACRO}'
+ ],
+ [
+ ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO1}-{$MACRO2}',
+ '/1/int32_ranges',
+ '{$MACRO1}-{$MACRO2}'
+ ],
+ [
+ ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_USER_MACRO, 'in' => '20:30'],
+ '{$MACRO}-20,30-40',
+ '/1/int32_ranges',
+ 'Invalid parameter "/1/int32_ranges": value must be one of 20-30.'
+ ],
+ [
+ ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_USER_MACRO, 'in' => '20:40'],
+ '{$MACRO}-20,30-40',
+ '/1/int32_ranges',
+ '{$MACRO}-20,30-40'
+ ],
+ [
+ ['type' => API_INT32_RANGES],
+ '{#LLD}',
+ '/1/int32_ranges',
+ 'Invalid parameter "/1/int32_ranges": invalid range expression.'
+ ],
+ [
+ ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD}',
+ '/1/int32_ranges',
+ '{#LLD}'
+ ],
+ [
+ ['type' => API_INT32_RANGES, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD1}-{#LLD2}',
+ '/1/int32_ranges',
+ '{#LLD1}-{#LLD2}'
+ ],
+ [
['type' => API_UINT64],
0,
'/1/int',
@@ -1278,6 +1320,228 @@ class CApiInputValidatorTest extends TestCase {
0.23E+11
],
[
+ ['type' => API_FLOAT, 'in' => '0.5,1,1.5,2'],
+ '0.5',
+ '/1/float',
+ 0.5
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5,1,1.5,2'],
+ 0.5,
+ '/1/float',
+ 0.5
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5,1,1.5,2'],
+ 1,
+ '/1/float',
+ 1.0
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5:3.5'],
+ 1,
+ '/1/float',
+ 1.0
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5:3.5'],
+ '1.3',
+ '/1/float',
+ 1.3
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5:3.5'],
+ '0.5',
+ '/1/float',
+ 0.5
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5:3.5'],
+ '3.5',
+ '/1/float',
+ 3.5
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5:3.5'],
+ '0',
+ '/1/float',
+ 'Invalid parameter "/1/float": value must be within the range of 0.5-3.5.'
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '0.5:3.5'],
+ 4.5,
+ '/1/float',
+ 'Invalid parameter "/1/float": value must be within the range of 0.5-3.5.'
+ ],
+ [
+ ['type' => API_FLOAT, 'in' => '-123,1,1.5,2'],
+ '-123',
+ '/1/float',
+ -123.0
+ ],
+ [
+ ['type' => API_FLOAT],
+ '{$MACRO}',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_FLOAT],
+ '{#LLD_MACRO}',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_USER_MACRO],
+ 108.108,
+ '/1/float',
+ 108.108
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_USER_MACRO],
+ '108.108',
+ '/1/float',
+ 108.108
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}',
+ '/1/float',
+ '{$MACRO}'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO: with context}',
+ '/1/float',
+ '{$MACRO: with context}'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_USER_MACRO],
+ 'Simple string',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}{$MACRO2}',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_USER_MACRO],
+ '{#LLD_MACRO}',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_LLD_MACRO],
+ 108.108,
+ '/1/float',
+ 108.108
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_LLD_MACRO],
+ '108.108',
+ '/1/float',
+ 108.108
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD_MACRO}',
+ '/1/float',
+ '{#LLD_MACRO}'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_LLD_MACRO],
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}',
+ '/1/float',
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_LLD_MACRO],
+ 'Simple string',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD_MACRO}{#LLD_MACRO2}',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_FLOAT, 'flags' => API_ALLOW_LLD_MACRO],
+ '{$MACRO}',
+ '/1/float',
+ 'Invalid parameter "/1/float": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
+ 'from' => ['type' => API_FLOAT],
+ 'to' => ['type' => API_FLOAT, 'compare' => ['operator' => '>', 'field' => 'from']]
+ ]],
+ [
+ 'from' => '107',
+ 'to' => '108'
+ ],
+ '/',
+ [
+ 'from' => 107.0,
+ 'to' => 108.0
+ ]
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
+ 'from' => ['type' => API_FLOAT],
+ 'to' => ['type' => API_FLOAT, 'compare' => ['operator' => '>', 'field' => 'from']]
+ ]],
+ [
+ 'from' => '108',
+ 'to' => '108.000108'
+ ],
+ '/',
+ [
+ 'from' => 108.0,
+ 'to' => 108.000108
+ ]
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
+ 'from' => ['type' => API_FLOAT],
+ 'to' => ['type' => API_FLOAT, 'compare' => ['operator' => '>', 'field' => 'from']]
+ ]],
+ [
+ 'from' => '108',
+ 'to' => '108'
+ ],
+ '/',
+ 'Invalid parameter "/to": cannot be less than or equal to the value of parameter "/from".'
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
+ 'from' => ['type' => API_FLOAT],
+ 'to' => ['type' => API_FLOAT, 'compare' => ['operator' => '>', 'field' => 'from']]
+ ]],
+ [
+ 'from' => 108.0,
+ 'to' => 108.0
+ ],
+ '/',
+ 'Invalid parameter "/to": cannot be less than or equal to the value of parameter "/from".'
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
+ 'from' => ['type' => API_FLOAT],
+ 'to' => ['type' => API_FLOAT, 'compare' => ['operator' => '>', 'field' => 'from']]
+ ]],
+ [
+ 'from' => '108.001',
+ 'to' => '108.0'
+ ],
+ '/',
+ 'Invalid parameter "/to": cannot be less than or equal to the value of parameter "/from".'
+ ],
+ [
['type' => API_FLOATS],
[0, 1],
'/output',
@@ -1446,6 +1710,66 @@ class CApiInputValidatorTest extends TestCase {
'Invalid parameter "/1/id": a number is expected.'
],
[
+ ['type' => API_ID, 'in' => '0'],
+ 0,
+ '/1/id',
+ '0'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ '0',
+ '/1/id',
+ '0'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ '000000',
+ '/1/id',
+ '0'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ true,
+ '/1/id',
+ 'Invalid parameter "/1/id": a number is expected.'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ null,
+ '/1/id',
+ 'Invalid parameter "/1/id": a number is expected.'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ [],
+ '/1/id',
+ 'Invalid parameter "/1/id": a number is expected.'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ 0.0,
+ '/1/id',
+ 'Invalid parameter "/1/id": a number is expected.'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ 1.23E+11,
+ '/1/id',
+ 'Invalid parameter "/1/id": a number is expected.'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ 108,
+ '/1/id',
+ 'Invalid parameter "/1/id": value must be 0.'
+ ],
+ [
+ ['type' => API_ID, 'in' => '0'],
+ '108',
+ '/1/id',
+ 'Invalid parameter "/1/id": value must be 0.'
+ ],
+ [
['type' => API_BOOLEAN],
true,
'/1/createMissing',
@@ -1589,6 +1913,34 @@ class CApiInputValidatorTest extends TestCase {
],
[
['type' => API_OBJECT, 'fields' => [
+ 'host' => ['type' => API_ANY],
+ 'name' => ['type' => API_STRING_UTF8]
+ ]],
+ [
+ 'host' => 'Zabbix server'
+ ],
+ '/',
+ [
+ 'host' => 'Zabbix server'
+ ]
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
+ 'host' => ['type' => API_ANY],
+ 'name' => ['type' => API_STRING_UTF8]
+ ]],
+ [
+ 'host' => 'Zabbix server',
+ 'name' => 'Zabbix server'
+ ],
+ '/',
+ [
+ 'host' => 'Zabbix server',
+ 'name' => 'Zabbix server'
+ ]
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
'host' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED],
'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
]],
@@ -3330,6 +3682,12 @@ class CApiInputValidatorTest extends TestCase {
],
[
['type' => API_REGEX],
+ 'Server: nginx\/(.+(?<!\r))',
+ '/1/expression',
+ 'Server: nginx\/(.+(?<!\r))'
+ ],
+ [
+ ['type' => API_REGEX],
'/',
'/1/expression',
'/'
@@ -4320,6 +4678,42 @@ class CApiInputValidatorTest extends TestCase {
'192.168.3.5,192.168.6.1-240'
],
[
+ ['type' => API_IP_RANGES],
+ '{$MACRO}',
+ '/1/ip_range',
+ 'Invalid parameter "/1/ip_range": invalid address range "{$MACRO}".'
+ ],
+ [
+ ['type' => API_IP_RANGES, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}',
+ '/1/ip_range',
+ '{$MACRO}'
+ ],
+ [
+ ['type' => API_IP_RANGES],
+ '{HOST.IP}',
+ '/1/ip_range',
+ 'Invalid parameter "/1/ip_range": invalid address range "{HOST.IP}".'
+ ],
+ [
+ ['type' => API_IP_RANGES, 'macros' => true],
+ '{HOST.IP}',
+ '/1/ip_range',
+ '{HOST.IP}'
+ ],
+ [
+ ['type' => API_IP_RANGES, 'macros' => ['{HOST.IP}']],
+ '{HOST.DNS}',
+ '/1/ip_range',
+ 'Invalid parameter "/1/ip_range": invalid address range "{HOST.DNS}".'
+ ],
+ [
+ ['type' => API_IP_RANGES, 'macros' => ['{HOST.IP}']],
+ '{HOST.IP}',
+ '/1/ip_range',
+ '{HOST.IP}'
+ ],
+ [
['type' => API_DNS],
'',
'/1/dns',
@@ -4706,6 +5100,247 @@ class CApiInputValidatorTest extends TestCase {
''
],
[
+ ['type' => API_JSON],
+ null,
+ '/1/json',
+ 'Invalid parameter "/1/json": a character string is expected.'
+ ],
+ [
+ ['type' => API_JSON],
+ true,
+ '/1/json',
+ 'Invalid parameter "/1/json": a character string is expected.'
+ ],
+ [
+ ['type' => API_JSON],
+ [],
+ '/1/json',
+ 'Invalid parameter "/1/json": a character string is expected.'
+ ],
+ [
+ ['type' => API_JSON],
+ 123,
+ '/1/json',
+ 'Invalid parameter "/1/json": a character string is expected.'
+ ],
+ [
+ ['type' => API_JSON],
+ '123',
+ '/1/json',
+ '123'
+ ],
+ [
+ ['type' => API_JSON],
+ '',
+ '/1/json',
+ ''
+ ],
+ [
+ ['type' => API_JSON, 'flags' => API_NOT_EMPTY],
+ '',
+ '/1/json',
+ 'Invalid parameter "/1/json": cannot be empty.'
+ ],
+ [
+ ['type' => API_JSON],
+ '{}',
+ '/1/json',
+ '{}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": "value"}',
+ '/1/json',
+ '{"key": "value"}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": false}',
+ '/1/json',
+ '{"key": false}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": null}',
+ '/1/json',
+ '{"key": null}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": NaN}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON, 'length' => 15],
+ '{"key": "value"}',
+ '/1/json',
+ 'Invalid parameter "/1/json": value is too long.'
+ ],
+ [
+ ['type' => API_JSON],
+ 'abc',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": value}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": 123}',
+ '/1/json',
+ '{"key": 123}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{$MACRO}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}',
+ '/1/json',
+ '{$MACRO}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": {$MACRO}}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON, 'flags' => API_ALLOW_USER_MACRO],
+ '{"key": {$MACRO}}',
+ '/1/json',
+ '{"key": {$MACRO}}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{#LLD}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD}',
+ '/1/json',
+ '{#LLD}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": {#LLD}}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON, 'flags' => API_ALLOW_LLD_MACRO],
+ '{"key": {#LLD}}',
+ '/1/json',
+ '{"key": {#LLD}}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{HOST.IP}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON, 'macros_n' => ['{HOST.IP}']],
+ '{HOST.IP}',
+ '/1/json',
+ '{HOST.IP}'
+ ],
+ [
+ ['type' => API_JSON, 'macros_n' => ['{HOST.IP}']],
+ '{HOST.IP2}',
+ '/1/json',
+ '{HOST.IP2}'
+ ],
+ [
+ ['type' => API_JSON],
+ '{"key": {HOST.IP}}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON, 'macros_n' => ['{HOST.IP}']],
+ '{"key1": {HOST.IP1}, "key2": {HOST.IP2}}',
+ '/1/json',
+ '{"key1": {HOST.IP1}, "key2": {HOST.IP2}}'
+ ],
+ [
+ ['type' => API_JSON],
+ '[]',
+ '/1/json',
+ '[]'
+ ],
+ [
+ ['type' => API_JSON],
+ '[[]]',
+ '/1/json',
+ '[[]]'
+ ],
+ [
+ ['type' => API_JSON],
+ '[[], []]',
+ '/1/json',
+ '[[], []]'
+ ],
+ [
+ ['type' => API_JSON],
+ '[[1]]',
+ '/1/json',
+ '[[1]]'
+ ],
+ [
+ ['type' => API_JSON],
+ '[1, 2, 3]',
+ '/1/json',
+ '[1, 2, 3]'
+ ],
+ [
+ ['type' => API_JSON],
+ '[[true]]',
+ '/1/json',
+ '[[true]]'
+ ],
+ [
+ ['type' => API_JSON],
+ '[[null]]',
+ '/1/json',
+ '[[null]]'
+ ],
+ [
+ ['type' => API_JSON],
+ '{null: "value"}',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+ [
+ ['type' => API_JSON],
+ '[{"key": "value"}]',
+ '/1/json',
+ '[{"key": "value"}]'
+ ],
+ [
+ ['type' => API_JSON],
+ '[{"key": "value"}, {"key": "value"}]',
+ '/1/json',
+ '[{"key": "value"}, {"key": "value"}]'
+ ],
+ [
+ ['type' => API_JSON],
+ '["key": "value"]',
+ '/1/json',
+ 'Invalid parameter "/1/json": JSON is expected.'
+ ],
+
+ [
['type' => API_JSONRPC_PARAMS],
[],
'/params',
@@ -5543,6 +6178,1654 @@ class CApiInputValidatorTest extends TestCase {
['type' => 3, 'name' => 2, 'value' => ['1', 2.5, '3', '4', '1']],
'/',
['type' => [3], 'name' => [2], 'value' => ['1', 2.5, '3', '4', '1']]
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'key',
+ '/1/item_key',
+ 'key'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key',
+ '/1/item_key',
+ 'super.key'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key[]',
+ '/1/item_key',
+ 'super.key[]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key[0]',
+ '/1/item_key',
+ 'super.key[0]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key[a, b, c]',
+ '/1/item_key',
+ 'super.key[a, b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key[{HOST.HOST}]',
+ '/1/item_key',
+ 'super.key[{HOST.HOST}]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key[abc{HOST.HOST}def]',
+ '/1/item_key',
+ 'super.key[abc{HOST.HOST}def]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key[{#LLD_MACRO}, b, c]',
+ '/1/item_key',
+ 'super.key[{#LLD_MACRO}, b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key[{#LLD_MACRO1}abc{#LLD_MACRO2}, b, c]',
+ '/1/item_key',
+ 'super.key[{#LLD_MACRO1}abc{#LLD_MACRO2}, b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key["{#LLD_MACRO}", "b b", "c\""]',
+ '/1/item_key',
+ 'super.key["{#LLD_MACRO}", "b b", "c\""]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'super.key["{#LLD_MACRO1} {#LLD_MACRO2}", b, c]',
+ '/1/item_key',
+ 'super.key["{#LLD_MACRO1} {#LLD_MACRO2}", b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[{#LLD_MACRO}, b, c]',
+ '/1/item_key',
+ 'super.key[{#LLD_MACRO}, b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[a, b, c{#LLD_MACRO}d]',
+ '/1/item_key',
+ 'super.key[a, b, c{#LLD_MACRO}d]'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[{{#LLD_MACRO}.fmtnum(2)}, b, c]',
+ '/1/item_key',
+ 'super.key[{{#LLD_MACRO}.fmtnum(2)}, b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[a, b, c{{#LLD_MACRO}.fmtnum(2)}d]',
+ '/1/item_key',
+ 'super.key[a, b, c{{#LLD_MACRO}.fmtnum(2)}d]'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key["{{#LLD_MACRO}.regsub(\"(.*)_([0-9]+)\", \1)}", b, c]',
+ '/1/item_key',
+ 'super.key["{{#LLD_MACRO}.regsub(\"(.*)_([0-9]+)\", \1)}", b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[a, b, "{{#LLD_MACRO}.regsub(\"(.*)_([0-9]+)\", \1)}"]',
+ '/1/item_key',
+ 'super.key[a, b, "{{#LLD_MACRO}.regsub(\"(.*)_([0-9]+)\", \1)}"]'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key["{{#LLD_MACRO}.regsub(\"(.*)_([0-9]+)\", \1)", b, c]',
+ '/1/item_key',
+ 'super.key["{{#LLD_MACRO}.regsub(\"(.*)_([0-9]+)\", \1)", b, c]'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ null,
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": a character string is expected.'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 123,
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": a character string is expected.'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ true,
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": a character string is expected.'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ [],
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": a character string is expected.'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ '',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": cannot be empty.'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'length' => 2],
+ 'key',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": value is too long.'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ '/key',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": incorrect syntax near "/key".'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ '{#LLD_MACRO}',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": incorrect syntax near "{#LLD_MACRO}".'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ '[{#LLD_MACRO}]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": incorrect syntax near "[{#LLD_MACRO}]".'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ '[key',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": incorrect syntax near "[key".'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'key]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": incorrect syntax near "]".'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ '[key]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": incorrect syntax near "[key]".'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'key[',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": unexpected end of key.'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'key[a',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": unexpected end of key.'
+ ],
+ [
+ ['type' => API_ITEM_KEY],
+ 'key[a, "]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": unexpected end of key.'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[a, b, c]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": must contain at least one low-level discovery macro.'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[a, {$MACRO}, c]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": must contain at least one low-level discovery macro.'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[{#LLD_MACRO, b, c]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": must contain at least one low-level discovery macro.'
+ ],
+ [
+ ['type' => API_ITEM_KEY, 'flags' => API_REQUIRED_LLD_MACRO],
+ 'super.key[{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}, b, c]',
+ '/1/item_key',
+ 'Invalid parameter "/1/item_key": incorrect syntax near "+)", \1)}, b, c]".'
+ ],
+ [
+ ['type' => API_ITEM_DELAY],
+ null,
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": a character string is expected.'
+ ],
+ [
+ ['type' => API_ITEM_DELAY],
+ 'abc',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": a time unit is expected.'
+ ],
+ [
+ ['type' => API_ITEM_DELAY],
+ 123,
+ '/1/item_delay',
+ '123'
+ ],
+ 'Delay less than zero' => [
+ ['type' => API_ITEM_DELAY],
+ -1,
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": a time unit is expected.'
+ ],
+ [
+ ['type' => API_ITEM_DELAY],
+ '1m',
+ '/1/item_delay',
+ '1m'
+ ],
+ [
+ ['type' => API_ITEM_DELAY, 'length' => 2],
+ '10m',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": value is too long.'
+ ],
+ 'Zero delay without intervals' => [
+ ['type' => API_ITEM_DELAY],
+ 0,
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": cannot be equal to zero without custom intervals.'
+ ],
+ 'Nonsense in flexible interval' => [
+ ['type' => API_ITEM_DELAY],
+ '0;1m/abc,10:00-18:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": incorrect syntax near ";1m/abc,10:00-18:00".'
+ ],
+ 'Nonsense in flexible period' => [
+ ['type' => API_ITEM_DELAY],
+ '0;1m/1-7,abc',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": incorrect syntax near ";1m/1-7,abc".'
+ ],
+ [
+ ['type' => API_ITEM_DELAY],
+ '0;1m/1-5,10:00-18:00',
+ '/1/item_delay',
+ '0;1m/1-5,10:00-18:00'
+ ],
+ 'Delay too big' => [
+ ['type' => API_ITEM_DELAY],
+ SEC_PER_DAY + 1,
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": value must be one of 0-'.SEC_PER_DAY.'.'
+ ],
+ [
+ ['type' => API_ITEM_DELAY],
+ '1m;30s/1-7,10:00-18:00',
+ '/1/item_delay',
+ '1m;30s/1-7,10:00-18:00'
+ ],
+ [
+ ['type' => API_ITEM_DELAY],
+ '1m;h9m/30',
+ '/1/item_delay',
+ '1m;h9m/30'
+ ],
+ 'No user macro flag' => [
+ ['type' => API_ITEM_DELAY],
+ '{$MACRO}',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": a time unit is expected.'
+ ],
+ 'User macro allowed' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}',
+ '/1/item_delay',
+ '{$MACRO}'
+ ],
+ 'User macro allowed, but LLD macro entered' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '{#LLD}',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": a time unit is expected.'
+ ],
+ 'No LLD macro flag' => [
+ ['type' => API_ITEM_DELAY],
+ '{#LLD}',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": a time unit is expected.'
+ ],
+ 'LLD macro allowed, but user macro entered' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_LLD_MACRO],
+ '{$MACRO}',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": a time unit is expected.'
+ ],
+ [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD}',
+ '/1/item_delay',
+ '{#LLD}'
+ ],
+ 'User macros in a flexible interval' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '0;{$M}/{$M}',
+ '/1/item_delay',
+ '0;{$M}/{$M}'
+ ],
+ 'User macros in a scheduled interval' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '0;{$M}',
+ '/1/item_delay',
+ '0;{$M}'
+ ],
+ 'Zero delay and blocking zero-interval' => [
+ ['type' => API_ITEM_DELAY],
+ '0;50s/1-6,09:00-18:00;0/1-6,00:00-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Zero delay and multiple combined blocking zero-intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '0;50s/1-6,09:00-18:00;0/1-3,00:00-24:00;0/4-7,00:00-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": non-active intervals cannot fill the entire time.'
+ ],
+ 'Non-convertible due to macro in period' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '0;50s/1-6,09:00-18:00;0/1-5,00:00-24:00;0/{$M}',
+ '/1/item_delay',
+ '0;50s/1-6,09:00-18:00;0/1-5,00:00-24:00;0/{$M}'
+ ],
+ 'Non-zero delay, but whole week consists of blocking interval' => [
+ ['type' => API_ITEM_DELAY],
+ '1m;0/1-7,00:00-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": non-active intervals cannot fill the entire time.'
+ ],
+ 'Non-zero delay, but whole week combined of blocking intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '1m;0/1-4,00:00-24:00;0/3-7,00:00-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": non-active intervals cannot fill the entire time.'
+ ],
+ 'Macro used, but delay and intervals are all zero-blocking' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '0;0/1-6,09:00-12:00;0/{$M}',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have at least one interval greater than 0.'
+ ],
+ 'Macro in Period, but zero-week block' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '0;0/1-7,00:00-24:00;1/{$M}',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": non-active intervals cannot fill the entire time.'
+ ],
+ 'Macro in Interval, but zero-week block' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '0;0/1-7,00:00-24:00;{$M}/1-7,00:00-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": non-active intervals cannot fill the entire time.'
+ ],
+ 'Non-zero delay, macro in Interval' => [
+ ['type' => API_ITEM_DELAY, 'flags' => API_ALLOW_USER_MACRO],
+ '1m;{$M}/1-4,00:00-24:00;0/3-7,00:00-23:00',
+ '/1/item_delay',
+ '1m;{$M}/1-4,00:00-24:00;0/3-7,00:00-23:00'
+ ],
+ 'Polling overlapped by zero-interval as a whole' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;5m/2-4,00:00-24:00;0/1-7,00:00-23:57',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Polling chunk overlapped by zero-interval as a whole, but has another active interval' => [
+ ['type' => API_ITEM_DELAY],
+ '1m;50s/2-4,00:00-24:00;0/1-5,00:00-24:00;50s/6,09:30-12:00',
+ '/1/item_delay',
+ '1m;50s/2-4,00:00-24:00;0/1-5,00:00-24:00;50s/6,09:30-12:00'
+ ],
+ 'Overlap by zero-interval, but polling window available before' => [
+ ['type' => API_ITEM_DELAY],
+ '1m;50s/1-6,09:00-12:00;0/2-6,00:00-24:00',
+ '/1/item_delay',
+ '1m;50s/1-6,09:00-12:00;0/2-6,00:00-24:00'
+ ],
+ 'Zero-interval, but polling active outside' => [
+ ['type' => API_ITEM_DELAY],
+ '1m;50s/1-6,09:00-12:00;0/2-3,00:00-24:00',
+ '/1/item_delay',
+ '1m;50s/1-6,09:00-12:00;0/2-3,00:00-24:00'
+ ],
+ 'Polling window available between side-overlapping zero chunks' => [
+ ['type' => API_ITEM_DELAY],
+ '1m;50s/1-6,09:00-12:00;0/1-3,00:00-24:00;0/5-6,00:00-24:00',
+ '/1/item_delay',
+ '1m;50s/1-6,09:00-12:00;0/1-3,00:00-24:00;0/5-6,00:00-24:00'
+ ],
+ 'Polling window available too small for interval' => [
+ ['type' => API_ITEM_DELAY],
+ '0;2h/1-6,09:00-12:00;0/1-6,09:00-10:30',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Polling window available equal to interval' => [
+ ['type' => API_ITEM_DELAY],
+ '0;90m/1-6,09:00-12:00;0/1-6,09:00-10:30',
+ '/1/item_delay',
+ '0;90m/1-6,09:00-12:00;0/1-6,09:00-10:30'
+ ],
+ 'Polling window just less than available interval (90m-1s)' => [
+ ['type' => API_ITEM_DELAY],
+ '0;5399/1-6,09:00-12:00;0/1-6,09:00-10:30',
+ '/1/item_delay',
+ '0;5399/1-6,09:00-12:00;0/1-6,09:00-10:30'
+ ],
+ 'Polling available via delay, before zero-blocks' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/2-7,00:00-24:00;0/1,00:05-24:00',
+ '/1/item_delay',
+ '5m;0/2-7,00:00-24:00;0/1,00:05-24:00'
+ ],
+ 'Polling available via delay, after zero-blocks' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/1-6,00:00-24:00;0/7,00:00-23:55',
+ '/1/item_delay',
+ '5m;0/1-6,00:00-24:00;0/7,00:00-23:55'
+ ],
+ 'Polling available via delay, between zero-blocks' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/1-3,00:00-24:00;0/4,00:05-24:00;0/5-7,00:00-24:00',
+ '/1/item_delay',
+ '5m;0/1-3,00:00-24:00;0/4,00:05-24:00;0/5-7,00:00-24:00'
+ ],
+ 'Polling possible via shorter of intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '0;0/1-6,00:00-24:00;20m/7,00:00-24:00;10m/7,00:00-24:00;0/7,00:00-01:35;0/7,01:45-24:00',
+ '/1/item_delay',
+ '0;0/1-6,00:00-24:00;20m/7,00:00-24:00;10m/7,00:00-24:00;0/7,00:00-01:35;0/7,01:45-24:00'
+ ],
+ 'Polling impossible via shorter of intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '0;0/1-6,00:00-24:00;20m/7,00:00-24:00;10m/7,00:00-24:00;0/7,00:00-01:35;0/7,01:44-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Polling possible via shorter of intervals, full window' => [
+ ['type' => API_ITEM_DELAY],
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:00-11:00',
+ '/1/item_delay',
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:00-11:00'
+ ],
+ 'Polling possible via shorter of intervals, end of window' => [
+ ['type' => API_ITEM_DELAY],
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:50-11:00',
+ '/1/item_delay',
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:50-11:00'
+ ],
+ 'Polling possible via shorter of intervals, start of window' => [
+ ['type' => API_ITEM_DELAY],
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:00-10:10',
+ '/1/item_delay',
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:00-10:10'
+ ],
+ 'Polling possible via shorter of intervals, with overlap of cut-off longer one' => [
+ ['type' => API_ITEM_DELAY],
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:40-10:50',
+ '/1/item_delay',
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:40-10:50'
+ ],
+ 'Interval shorter than period allowed' => [
+ ['type' => API_ITEM_DELAY],
+ '0;0/1-7,00:00-10:00;0/1-7,11:00-24:00;20m/1-7,10:45-24:00;10m/1-7,10:00-10:09',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": update interval "10m" is longer than period "1-7,10:00-10:09".'
+ ],
+ 'No window for delay' => [
+ ['type' => API_ITEM_DELAY],
+ '10m;0/1-7,00:05-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Window for delay OK' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/1-7,00:05-24:00',
+ '/1/item_delay',
+ '5m;0/1-7,00:05-24:00'
+ ],
+ 'Window for smaller delay OK' => [
+ ['type' => API_ITEM_DELAY],
+ '1m;0/1-7,00:05-24:00',
+ '/1/item_delay',
+ '1m;0/1-7,00:05-24:00'
+ ],
+ 'Polling via delay blocked by active flexible interval' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/1-7,00:05-24:00;10m/1-7,00:04-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Polling via delay not blocked by flexible intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/1-7,00:10-24:00;10m/1-7,05:00-24:00',
+ '/1/item_delay',
+ '5m;0/1-7,00:10-24:00;10m/1-7,05:00-24:00'
+ ],
+ 'Delay does not fit due to several flexible intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '10m;0/1-7,00:00-00:01;0/1-7,00:10-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Delay fits between blocking zero intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '10m;0/1-3,00:00-24:00;0/4,00:00-23:50;0/5-7,00:00-24:00',
+ '/1/item_delay',
+ '10m;0/1-3,00:00-24:00;0/4,00:00-23:50;0/5-7,00:00-24:00'
+ ],
+ 'Delay fits between blocking mixed intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/1-3,00:00-24:00;0/4,00:00-23:45;10m/4,23:50-24:00;0/5-7,00:00-24:00',
+ '/1/item_delay',
+ '5m;0/1-3,00:00-24:00;0/4,00:00-23:45;10m/4,23:50-24:00;0/5-7,00:00-24:00'
+ ],
+ 'Delay does not fit between blocking mixed intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '6m;0/1-3,00:00-24:00;0/4,00:00-23:45;5m/4,23:50-23:55;0/4,23:54-24:00;0/5-7,00:00-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Delay fits after blocking zero intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '10m;0/1-6,00:00-24:00;0/7,23:50-24:00',
+ '/1/item_delay',
+ '10m;0/1-6,00:00-24:00;0/7,23:50-24:00'
+ ],
+ 'Delay does not fit with after mixed intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '10m;0/1-6,00:00-24:00;0/7,23:50-24:00;20m/7,00:00-23:55;0/7,00:00-23:49',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ 'Delay fits at start of mixed intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '5m;0/1-7,00:10-24:00;10m/1-7,00:07-24:00',
+ '/1/item_delay',
+ '5m;0/1-7,00:10-24:00;10m/1-7,00:07-24:00'
+ ],
+ 'Delay does not fit at start of mixed intervals' => [
+ ['type' => API_ITEM_DELAY],
+ '8m;0/1-7,00:10-24:00;10m/1-7,00:07-24:00',
+ '/1/item_delay',
+ 'Invalid parameter "/1/item_delay": must have a polling interval not blocked by non-active interval periods.'
+ ],
+ [
+ ['type' => API_XML],
+ null,
+ '/1/xml',
+ 'Invalid parameter "/1/xml": a character string is expected.'
+ ],
+ [
+ ['type' => API_XML],
+ 123,
+ '/1/xml',
+ 'Invalid parameter "/1/xml": a character string is expected.'
+ ],
+ [
+ ['type' => API_XML],
+ '',
+ '/1/xml',
+ ''
+ ],
+ [
+ ['type' => API_XML, 'flags' => API_NOT_EMPTY],
+ '',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": cannot be empty.'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?>',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": (4) Start tag expected, \'<\' not found [Line: 1 | Column: 39].'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node>value</node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node>value</node>'
+ ],
+ [
+ ['type' => API_XML, 'length' => 10],
+ '<?xml version="1.0" encoding="UTF-8"?><node>value</node>',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": value is too long.'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="123">value</node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="123">value</node>'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="string">value</node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="string">value</node>'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node prop=string>value</node>',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": (39) AttValue: " or \' expected [Line: 1 | Column: 50].'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="string>value</node>',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": (38) Unescaped \'<\' not allowed in attributes values [Line: 1 | Column: 63].'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="<">value</node>',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": (38) Unescaped \'<\' not allowed in attributes values [Line: 1 | Column: 51].'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="&lt;">value</node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node prop="&lt;">value</node>'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node><script></node>',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": (76) Opening and ending tag mismatch: script line 1 and node [Line: 1 | Column: 60].'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node><script/></node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node><script/></node>'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node><script /></node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node><script /></node>'
+ ],
+ 'Opening and ending tag mismatch' => [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node></a></node>',
+ '/1/xml',
+ 'Invalid parameter "/1/xml": (76) Opening and ending tag mismatch: node line 1 and a [Line: 1 | Column: 49].'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node>/></node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node>/></node>'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node>/&gt;</node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node>/&gt;</node>'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node>"</node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node>"</node>'
+ ],
+ [
+ ['type' => API_XML],
+ '<?xml version="1.0" encoding="UTF-8"?><node>&quot;</node>',
+ '/1/xml',
+ '<?xml version="1.0" encoding="UTF-8"?><node>&quot;</node>'
+ ],
+
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER]],
+ '1',
+ '/1/params',
+ '1'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER]],
+ '1',
+ '/1/params',
+ '1'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER]],
+ '1.0',
+ '/1/params',
+ '1'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER]],
+ '1.08',
+ '/1/params',
+ '1.08'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER], 'length' => 2],
+ '1.08',
+ '/1/params',
+ 'Invalid parameter "/1/params": value is too long.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER]],
+ 'abc',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": a floating point value is expected.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER]],
+ "1.08\n",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_MULTIPLIER]],
+ "1.08\n1.08",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_RTRIM]],
+ ' ")',
+ '/1/params',
+ ' ")'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_LTRIM]],
+ ' "(',
+ '/1/params',
+ ' "('
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_TRIM]],
+ ' "()',
+ '/1/params',
+ ' "()'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_RTRIM]],
+ " \"(\n \")",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_LTRIM]],
+ " \"(\n \")",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_TRIM]],
+ " \"(\n \")",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_REGSUB]],
+ "^[a-z]$\n\\1",
+ '/1/params',
+ "^[a-z]$\n\\1"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_REGSUB]],
+ "{\$MACRO}\n\\1",
+ '/1/params',
+ "{\$MACRO}\n\\1"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_REGSUB]],
+ "{\#LLD_MACRO}\n\\1",
+ '/1/params',
+ "{\#LLD_MACRO}\n\\1"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_REGSUB]],
+ "^[a-z$\n\\1",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid regular expression.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_REGSUB]],
+ "^[a-z]$",
+ '/1/params',
+ 'Invalid parameter "/1/params": the parameter "2" is missing.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_REGSUB]],
+ "^[a-z]$\n\\1\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "3".'
+ ],
+ [
+ ['type' => API_OBJECT, 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => ZBX_PREPROC_REGSUB],
+ 'params' => ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['field' => 'type']]
+ ]],
+ [
+ 'type' => ZBX_PREPROC_REGSUB,
+ 'params' => "^[a-z]$\n\\1"
+ ],
+ '/',
+ [
+ 'type' => ZBX_PREPROC_REGSUB,
+ 'params' => "^[a-z]$\n\\1"
+ ]
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_XPATH]],
+ 'number(/document/item/@attribute)',
+ '/1/params',
+ 'number(/document/item/@attribute)'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_XPATH]],
+ '',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_XPATH]],
+ "number(/document/item/@attribute)\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_JSONPATH]],
+ '$.object.name',
+ '/1/params',
+ '$.object.name'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_JSONPATH]],
+ '',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_JSONPATH]],
+ "$.object.name\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_RANGE]],
+ "1\n",
+ '/1/params',
+ "1\n"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_RANGE]],
+ "\n10",
+ '/1/params',
+ "\n10"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_RANGE]],
+ "1\n10",
+ '/1/params',
+ "1\n10"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_RANGE]],
+ "\n",
+ '/1/params',
+ 'Invalid parameter "/1/params": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_RANGE]],
+ "10.01\n10",
+ '/1/params',
+ 'Invalid parameter "/1/params/2": cannot be less than or equal to the value of parameter "/1/params/1".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_RANGE]],
+ "10.01",
+ '/1/params',
+ 'Invalid parameter "/1/params": the parameter "2" is missing.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_RANGE]],
+ "1\n10\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "3".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_REGEX]],
+ "^[a-z]$",
+ '/1/params',
+ "^[a-z]$"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_REGEX]],
+ "^[a-z$",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid regular expression.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_REGEX]],
+ "@^[a-z$",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid regular expression.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_REGEX]],
+ "^[a-z$\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_NOT_REGEX]],
+ "^[a-z]$",
+ '/1/params',
+ "^[a-z]$"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_NOT_REGEX]],
+ "^[a-z$",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid regular expression.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_NOT_REGEX]],
+ "@^[a-z$",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid regular expression.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_VALIDATE_NOT_REGEX]],
+ "^[a-z$\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_JSON]],
+ '$.object.error',
+ '/1/params',
+ '$.object.error'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_JSON]],
+ '',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_JSON]],
+ "$.object.error\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_XML]],
+ 'number(/document/item/@error)',
+ '/1/params',
+ 'number(/document/item/@error)'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_XML]],
+ '',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_XML]],
+ "number(/document/item/@error)\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_REGEX]],
+ "^[a-z]$\n\\1",
+ '/1/params',
+ "^[a-z]$\n\\1"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_REGEX]],
+ "^[a-z$\n\\1",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid regular expression.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_REGEX]],
+ "^[a-z]$",
+ '/1/params',
+ 'Invalid parameter "/1/params": the parameter "2" is missing.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_ERROR_FIELD_REGEX]],
+ "^[a-z]$\n\\1\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "3".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '1',
+ '/1/params',
+ '1'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '30',
+ '/1/params',
+ '30'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '788400000', // 25 years
+ '/1/params',
+ '788400000'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '30s',
+ '/1/params',
+ '30s'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '10m',
+ '/1/params',
+ '10m'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '1h',
+ '/1/params',
+ '1h'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '1w',
+ '/1/params',
+ '1w'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '1.08',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": a time unit is expected.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '1M',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": a time unit is expected.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '1y',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": a time unit is expected.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '-1',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": value must be one of 1-788400000.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '0',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": value must be one of 1-788400000.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '788400001',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": value must be one of 1-788400000.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '788400001',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": value must be one of 1-788400000.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '-1m',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": value must be one of 1-788400000.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ '9126d', // 25 years and 1 day
+ '/1/params',
+ 'Invalid parameter "/1/params/1": value must be one of 1-788400000.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_THROTTLE_TIMED_VALUE]],
+ "30\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_SCRIPT]],
+ 'return true;',
+ '/1/params',
+ 'return true;'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_SCRIPT]],
+ '',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_SCRIPT]],
+ "let a = 'abc';\nreturn a;",
+ '/1/params',
+ "let a = 'abc';\nreturn a;"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nvalue",
+ '/1/params',
+ "metric{label1=\"value1\"}\nvalue\n"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nvalue\n",
+ '/1/params',
+ "metric{label1=\"value1\"}\nvalue\n"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "{\nvalue",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nvalue\n\n",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "4".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel\nlabel1",
+ '/1/params',
+ "metric{label1=\"value1\"}\nlabel\nlabel1"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'flags' => API_ALLOW_USER_MACRO, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel\n{\$MACRO}",
+ '/1/params',
+ "metric{label1=\"value1\"}\nlabel\n{\$MACRO}"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'flags' => API_ALLOW_LLD_MACRO, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel\n{#LLD_MACRO}",
+ '/1/params',
+ "metric{label1=\"value1\"}\nlabel\n{#LLD_MACRO}"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel\n",
+ '/1/params',
+ 'Invalid parameter "/1/params/3": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel\n-label1-",
+ '/1/params',
+ 'Invalid parameter "/1/params/3": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel\n",
+ '/1/params',
+ 'Invalid parameter "/1/params/3": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel",
+ '/1/params',
+ 'Invalid parameter "/1/params": the parameter "3" is missing.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nlabel\nlabel1\nabc",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "4".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction\nsum",
+ '/1/params',
+ "metric{label1=\"value1\"}\nfunction\nsum"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction\nmin",
+ '/1/params',
+ "metric{label1=\"value1\"}\nfunction\nmin"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction\nmax",
+ '/1/params',
+ "metric{label1=\"value1\"}\nfunction\nmax"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction\navg",
+ '/1/params',
+ "metric{label1=\"value1\"}\nfunction\navg"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction\ncount",
+ '/1/params',
+ "metric{label1=\"value1\"}\nfunction\ncount"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction\ncook",
+ '/1/params',
+ 'Invalid parameter "/1/params/3": value must be one of "sum", "min", "max", "avg", "count".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction\n",
+ '/1/params',
+ 'Invalid parameter "/1/params/3": value must be one of "sum", "min", "max", "avg", "count".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nfunction",
+ '/1/params',
+ 'Invalid parameter "/1/params": the parameter "3" is missing.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "metric{label1=\"value1\"}\nmystery",
+ '/1/params',
+ 'Invalid parameter "/1/params/2": value must be one of "value", "label", "function".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_PATTERN]],
+ "\nlabel\nlabel1",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_TO_JSON]],
+ '',
+ '/1/params',
+ ''
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_TO_JSON]],
+ 'metric{label1="value1"} == 123',
+ '/1/params',
+ 'metric{label1="value1"} == 123'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_TO_JSON]],
+ 'metric{%label1="value1"} == 123',
+ '/1/params',
+ 'Invalid parameter "/1/params/1": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_PROMETHEUS_TO_JSON]],
+ "metric{label1=\"value1\"} == 123\nvalue",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "2".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ "\n\n0",
+ '/1/params',
+ "\n\n0"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ ",\n\n0",
+ '/1/params',
+ ",\n\n0"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ ",\n\"\n0",
+ '/1/params',
+ ",\n\"\n0"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ ",\n\"\n1",
+ '/1/params',
+ ",\n\"\n1"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ '',
+ '/1/params',
+ 'Invalid parameter "/1/params": the parameter "2" is missing.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ "\n",
+ '/1/params',
+ 'Invalid parameter "/1/params": the parameter "3" is missing.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ "\n\n",
+ '/1/params',
+ 'Invalid parameter "/1/params/3": value must be one of "0", "1".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ "\n\n0\n",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "4".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_CSV_TO_JSON]],
+ ",\n\"\n2",
+ '/1/params',
+ 'Invalid parameter "/1/params/3": value must be one of "0", "1".'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_STR_REPLACE]],
+ "abc\n",
+ '/1/params',
+ "abc\n"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_STR_REPLACE]],
+ "abc",
+ '/1/params',
+ "abc\n"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_STR_REPLACE]],
+ "abc\ndef",
+ '/1/params',
+ "abc\ndef"
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_STR_REPLACE]],
+ "",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_STR_REPLACE]],
+ "\n",
+ '/1/params',
+ 'Invalid parameter "/1/params/1": cannot be empty.'
+ ],
+ [
+ ['type' => API_PREPROC_PARAMS, 'preproc_type' => ['value' => ZBX_PREPROC_STR_REPLACE]],
+ "\n\n",
+ '/1/params',
+ 'Invalid parameter "/1/params": unexpected parameter "3".'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ '',
+ '/1/prometheus_pattern',
+ ''
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ 'cpu_usage_system{cpu="cpu-total"}',
+ '/1/prometheus_pattern',
+ 'cpu_usage_system{cpu="cpu-total"}'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}{label1="value1"}==123',
+ '/1/prometheus_pattern',
+ '{$MACRO}{label1="value1"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_USER_MACRO],
+ 'metric{{$MACRO}="value1"}==123',
+ '/1/prometheus_pattern',
+ 'metric{{$MACRO}="value1"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ 'metric{label1="{$MACRO}"}==123',
+ '/1/prometheus_pattern',
+ 'metric{label1="{$MACRO}"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_USER_MACRO],
+ 'metric{label="value1"}=={$MACRO}',
+ '/1/prometheus_pattern',
+ 'metric{label="value1"}=={$MACRO}'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD_MACRO}{label1="value1"}==123',
+ '/1/prometheus_pattern',
+ '{#LLD_MACRO}{label1="value1"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_LLD_MACRO],
+ 'metric{{#LLD_MACRO}="value1"}==123',
+ '/1/prometheus_pattern',
+ 'metric{{#LLD_MACRO}="value1"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ 'metric{label1="{#LLD_MACRO}"}==123',
+ '/1/prometheus_pattern',
+ 'metric{label1="{#LLD_MACRO}"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_LLD_MACRO],
+ 'metric{label="value1"}=={#LLD_MACRO}',
+ '/1/prometheus_pattern',
+ 'metric{label="value1"}=={#LLD_MACRO}'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_LLD_MACRO],
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}{label1="value1"}==123',
+ '/1/prometheus_pattern',
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}{label1="value1"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_LLD_MACRO],
+ 'metric{{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}="value1"}==123',
+ '/1/prometheus_pattern',
+ 'metric{{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}="value1"}==123'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_LLD_MACRO],
+ 'metric{label="value1"}=={{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}',
+ '/1/prometheus_pattern',
+ 'metric{label="value1"}=={{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ null,
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": a character string is expected.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ 123,
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": a character string is expected.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_NOT_EMPTY],
+ '',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": cannot be empty.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ '{',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ '{$MACRO}',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ '{#LLD_MACRO}',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ '{$MACRO}{label1="value1"}==123',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN],
+ 'metric{label1="{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}"}==123',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}{$MACRO2}{label1="value1"}==123',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_PATTERN, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD_MACRO}{#LLD_MACRO2}{label1="value1"}==123',
+ '/1/prometheus_pattern',
+ 'Invalid parameter "/1/prometheus_pattern": invalid Prometheus pattern.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ 'label1',
+ '/1/prometheus_label',
+ 'label1'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ 'superLabel_1',
+ '/1/prometheus_label',
+ 'superLabel_1'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ '_superLabel_1',
+ '/1/prometheus_label',
+ '_superLabel_1'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ 'SuperLabel_1',
+ '/1/prometheus_label',
+ 'SuperLabel_1'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ null,
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": a character string is expected.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ 123,
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": a character string is expected.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ '',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": cannot be empty.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ '1_label',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ 'label}',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ '{$MACRO}',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}',
+ '/1/prometheus_label',
+ '{$MACRO}'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ '{#LLD_MACRO}',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD_MACRO}',
+ '/1/prometheus_label',
+ '{#LLD_MACRO}'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL, 'flags' => API_ALLOW_LLD_MACRO],
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}',
+ '/1/prometheus_label',
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL],
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL, 'flags' => API_ALLOW_USER_MACRO],
+ '{$MACRO}{$MACRO2}',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL, 'flags' => API_ALLOW_LLD_MACRO],
+ '{#LLD_MACRO}{#LLD_MACRO2}',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
+ ],
+ [
+ ['type' => API_PROMETHEUS_LABEL, 'flags' => API_ALLOW_LLD_MACRO],
+ '{{#LLD_MACRO}.regsub("(.*)_([0-9]+)", \1)}{{#LLD_MACRO2}.regsub("(.*)_([0-9]+)", \1)}',
+ '/1/prometheus_label',
+ 'Invalid parameter "/1/prometheus_label": invalid Prometheus label.'
]
];
}
@@ -6186,6 +8469,315 @@ class CApiInputValidatorTest extends TestCase {
'/',
false,
'Invalid parameter "/3/value/5": value (1) already exists.'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '3', 'name' => 'Test2'],
+ ['type' => '4', 'name' => 'Test3']
+ ],
+ '/',
+ true,
+ ''
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '3', 'name' => 'Test2'],
+ ['type' => '4', 'name' => 'Test3'],
+ ['type' => '1', 'name' => 'Test4']
+ ],
+ '/',
+ true,
+ ''
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '3', 'name' => 'Test2'],
+ ['type' => '4', 'name' => 'Test3'],
+ ['type' => '1', 'name' => 'Test4'],
+ ['type' => '1', 'name' => 'Test5']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/5": only one object can exist within the combinations of (type)=((1)).'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '3', 'name' => 'Test2'],
+ ['type' => '4', 'name' => 'Test3'],
+ ['type' => '1', 'name' => 'Test4']
+ ],
+ '/',
+ true,
+ ''
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '3', 'name' => 'Test2'],
+ ['type' => '4', 'name' => 'Test3'],
+ ['type' => '1', 'name' => 'Test4'],
+ ['type' => '1', 'name' => 'Test5']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/5": only one object can exist within the combinations of (type)=((1, 2)).'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '3', 'name' => 'Test2'],
+ ['type' => '4', 'name' => 'Test3'],
+ ['type' => '1', 'name' => 'Test4'],
+ ['type' => '2', 'name' => 'Test5']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/5": only one object can exist within the combinations of (type)=((1, 2)).'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [
+ ['type' => ['1', '2']],
+ ['type' => ['3']]
+ ],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '4', 'name' => 'Test3'],
+ ['type' => '1', 'name' => 'Test4']
+ ],
+ '/',
+ true,
+ ''
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [
+ ['type' => ['1', '2']],
+ ['type' => ['3']]
+ ],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED]
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1'],
+ ['type' => '3', 'name' => 'Test2'],
+ ['type' => '4', 'name' => 'Test3'],
+ ['type' => '1', 'name' => 'Test4']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/2": only one object can exist within the combinations of (type)=((3)).'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2'], 'method' => ['a']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED],
+ 'method' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => 'a,b,c,d']
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1', 'method' => 'a'],
+ ['type' => '3', 'name' => 'Test2', 'method' => 'a'],
+ ['type' => '4', 'name' => 'Test3', 'method' => 'c'],
+ ['type' => '1', 'name' => 'Test4', 'method' => 'a'],
+ ['type' => '1', 'name' => 'Test5', 'method' => 'b'],
+ ['type' => '2', 'name' => 'Test6', 'method' => 'b']
+ ],
+ '/',
+ true,
+ ''
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2'], 'method' => ['a']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED],
+ 'method' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => 'a,b,c,d']
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1', 'method' => 'a'],
+ ['type' => '3', 'name' => 'Test2', 'method' => 'a'],
+ ['type' => '4', 'name' => 'Test3', 'method' => 'c'],
+ ['type' => '1', 'name' => 'Test4', 'method' => 'a'],
+ ['type' => '1', 'name' => 'Test5', 'method' => 'b'],
+ ['type' => '2', 'name' => 'Test6', 'method' => 'b'],
+ ['type' => '2', 'name' => 'Test7', 'method' => 'a']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/7": only one object can exist within the combinations of (type, method)=((1, 2), (a)).'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2'], 'method' => ['a']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED],
+ 'method' => ['type' => API_INT32, 'in' => 'a,b,c,d']
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1', 'method' => 'a'],
+ ['type' => '3', 'name' => 'Test2', 'method' => 'a'],
+ ['type' => '4', 'name' => 'Test3', 'method' => 'c'],
+ ['type' => '1', 'name' => 'Test4', 'method' => 'a'],
+ ['type' => '1', 'name' => 'Test5', 'method' => 'b'],
+ ['type' => '2', 'name' => 'Test6'],
+ ['type' => '2', 'name' => 'Test7', 'method' => 'a']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/7": only one object can exist within the combinations of (type, method)=((1, 2), (a)).'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2'], 'method' => ['a', 'b']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED],
+ 'method' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => 'a,b,c,d']
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1', 'method' => 'a'],
+ ['type' => '3', 'name' => 'Test2', 'method' => 'a'],
+ ['type' => '4', 'name' => 'Test3', 'method' => 'c'],
+ ['type' => '1', 'name' => 'Test4', 'method' => 'a'],
+ ['type' => '1', 'name' => 'Test5', 'method' => 'c'],
+ ['type' => '2', 'name' => 'Test6', 'method' => 'c'],
+ ['type' => '2', 'name' => 'Test7', 'method' => 'd']
+ ],
+ '/',
+ true,
+ ''
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2'], 'method' => ['a', 'b']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED],
+ 'method' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => 'a,b,c,d']
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1', 'method' => 'a'],
+ ['type' => '3', 'name' => 'Test2', 'method' => 'a'],
+ ['type' => '4', 'name' => 'Test3', 'method' => 'c'],
+ ['type' => '1', 'name' => 'Test4', 'method' => 'a'],
+ ['type' => '1', 'name' => 'Test5', 'method' => 'c'],
+ ['type' => '1', 'name' => 'Test6', 'method' => 'b']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/6": only one object can exist within the combinations of (type, method)=((1, 2), (a, b)).'
+ ],
+ [
+ [
+ 'type' => API_OBJECTS,
+ 'uniq' => [['name']],
+ 'uniq_by_values' => [['type' => ['1', '2'], 'method' => ['a', 'b']]],
+ 'fields' => [
+ 'type' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => '1,2,3,4,5,6,7,8,9,10'],
+ 'name' => ['type' => API_STRING_UTF8, 'flags' => API_REQUIRED],
+ 'method' => ['type' => API_INT32, 'flags' => API_REQUIRED, 'in' => 'a,b,c,d']
+ ]
+ ],
+ [
+ ['type' => '3', 'name' => 'Test1', 'method' => 'a'],
+ ['type' => '3', 'name' => 'Test2', 'method' => 'a'],
+ ['type' => '4', 'name' => 'Test3', 'method' => 'c'],
+ ['type' => '1', 'name' => 'Test4', 'method' => 'a'],
+ ['type' => '1', 'name' => 'Test5', 'method' => 'c'],
+ ['type' => '2', 'name' => 'Test6', 'method' => 'c'],
+ ['type' => '2', 'name' => 'Test7', 'method' => 'b']
+ ],
+ '/',
+ false,
+ 'Invalid parameter "/7": only one object can exist within the combinations of (type, method)=((1, 2), (a, b)).'
]
];
}
diff --git a/ui/tr_events.php b/ui/tr_events.php
index d088c17f210..eba3cb67e86 100644
--- a/ui/tr_events.php
+++ b/ui/tr_events.php
@@ -37,20 +37,10 @@ require_once dirname(__FILE__).'/include/page_header.php';
// VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION
$fields = [
'triggerid' => [T_ZBX_INT, O_OPT, P_SYS, DB_ID, PAGE_TYPE_HTML.'=='.$page['type']],
- 'eventid' => [T_ZBX_INT, O_OPT, P_SYS, DB_ID, PAGE_TYPE_HTML.'=='.$page['type']],
- // Ajax
- 'widget' => [T_ZBX_STR, O_OPT, P_ACT, IN('"'.WIDGET_HAT_EVENTACTIONS.'","'.WIDGET_HAT_EVENTLIST.'"'), null],
- 'state' => [T_ZBX_INT, O_OPT, P_ACT, IN('0,1'), null]
+ 'eventid' => [T_ZBX_INT, O_OPT, P_SYS, DB_ID, PAGE_TYPE_HTML.'=='.$page['type']]
];
check_fields($fields);
-/*
- * Ajax
- */
-if (hasRequest('widget') && hasRequest('state')) {
- CProfile::update('web.tr_events.hats.'.getRequest('widget').'.state', getRequest('state'), PROFILE_TYPE_INT);
-}
-
if ($page['type'] == PAGE_TYPE_JS || $page['type'] == PAGE_TYPE_HTML_BLOCK) {
require_once dirname(__FILE__).'/include/page_footer.php';
exit;
@@ -171,35 +161,36 @@ require_once dirname(__FILE__).'/include/views/js/tr_events.js.php';
$event_tab = (new CDiv([
new CDiv([
- (new CUiWidget(WIDGET_HAT_TRIGGERDETAILS, make_trigger_details($trigger, $event['eventid'])))
- ->setHeader(_('Trigger details')),
- (new CUiWidget(WIDGET_HAT_EVENTDETAILS, make_event_details($event, $allowed)))
- ->setHeader(_('Event details'))
+ (new CSection(make_trigger_details($trigger, $event['eventid'])))
+ ->setId(SECTION_HAT_TRIGGERDETAILS)
+ ->setHeader(new CTag('h4', true, _('Trigger details'))),
+ (new CSection(make_event_details($event, $allowed)))
+ ->setId(SECTION_HAT_EVENTDETAILS)
+ ->setHeader(new CTag('h4', true, _('Event details')))
]),
new CDiv([
- (new CCollapsibleUiWidget(WIDGET_HAT_EVENTACTIONS,
- makeEventDetailsActionsTable($actions, $users, $mediatypes)
- ))
- ->setExpanded((bool) CProfile::get('web.tr_events.hats.'.WIDGET_HAT_EVENTACTIONS.'.state', true))
- ->setHeader(_('Actions'), [], 'web.tr_events.hats.'.WIDGET_HAT_EVENTACTIONS.'.state')
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FLUID),
- (new CCollapsibleUiWidget(WIDGET_HAT_EVENTLIST, make_small_eventlist($event, $allowed)))
- ->setExpanded((bool) CProfile::get('web.tr_events.hats.'.WIDGET_HAT_EVENTLIST.'.state', true))
- ->setHeader(_('Event list [previous 20]'), [], 'web.tr_events.hats.'.WIDGET_HAT_EVENTLIST.'.state')
- ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_FLUID)
+ (new CSectionCollapsible(makeEventDetailsActionsTable($actions, $users, $mediatypes)))
+ ->setId(SECTION_HAT_EVENTACTIONS)
+ ->setHeader(new CTag('h4', true, _('Actions')))
+ ->setProfileIdx('web.tr_events.hats.'.SECTION_HAT_EVENTACTIONS.'.state')
+ ->setExpanded((bool) CProfile::get('web.tr_events.hats.'.SECTION_HAT_EVENTACTIONS.'.state', true)),
+ (new CSectionCollapsible(make_small_eventlist($event, $allowed)))
+ ->setId(SECTION_HAT_EVENTLIST)
+ ->setHeader(new CTag('h4', true, _('Event list [previous 20]')))
+ ->setProfileIdx('web.tr_events.hats.'.SECTION_HAT_EVENTLIST.'.state')
+ ->setExpanded((bool) CProfile::get('web.tr_events.hats.'.SECTION_HAT_EVENTLIST.'.state', true))
])
]))
->addClass(ZBX_STYLE_COLUMNS)
->addClass(ZBX_STYLE_COLUMNS_2);
-(new CWidget())
+(new CHtmlPage())
->setTitle(_('Event details'))
->setWebLayoutMode($page['web_layout_mode'])
->setDocUrl(CDocHelper::getUrl(CDocHelper::TR_EVENTS))
->setControls(
(new CTag('nav', true,
- (new CList())
- ->addItem(get_icon('kioskmode', ['mode' => $page['web_layout_mode']]))
+ (new CList())->addItem(get_icon('kioskmode', ['mode' => $page['web_layout_mode']]))
))->setAttribute('aria-label', _('Content controls'))
)
->addItem($event_tab)
diff --git a/ui/widgets/actionlog/Widget.php b/ui/widgets/actionlog/Widget.php
new file mode 100644
index 00000000000..e1609372bbb
--- /dev/null
+++ b/ui/widgets/actionlog/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\ActionLog;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Action log');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetActionLogView.php b/ui/widgets/actionlog/actions/WidgetView.php
index 9c17ba7e272..494dce08606 100644
--- a/ui/app/controllers/CControllerWidgetActionLogView.php
+++ b/ui/widgets/actionlog/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,33 +19,27 @@
**/
-class CControllerWidgetActionLogView extends CControllerWidget {
+namespace Widgets\ActionLog\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData;
- $this->setType(WIDGET_ACTION_LOG);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
+class WidgetView extends CControllerDashboardWidgetView {
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
-
- list($sortfield, $sortorder) = self::getSorting($fields['sort_triggers']);
- $alerts = $this->getAlerts($sortfield, $sortorder, $fields['show_lines']);
+ protected function doAction(): void {
+ [$sortfield, $sortorder] = self::getSorting($this->fields_values['sort_triggers']);
+ $alerts = $this->getAlerts($sortfield, $sortorder, $this->fields_values['show_lines']);
$db_users = $this->getDbUsers($alerts);
$actions = API::Action()->get([
'output' => ['actionid', 'name'],
- 'actionids' => array_unique(zbx_objectValues($alerts, 'actionid')),
+ 'actionids' => array_unique(array_column($alerts, 'actionid')),
'preservekeys' => true
]);
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'actions' => $actions,
'alerts' => $alerts,
'db_users' => $db_users,
@@ -57,16 +51,7 @@ class CControllerWidgetActionLogView extends CControllerWidget {
]));
}
- /**
- * Get alerts.
- *
- * @param string $sortfield
- * @param string $sortorder
- * @param int $show_lines
- *
- * @return array
- */
- private function getAlerts($sortfield, $sortorder, $show_lines) {
+ private function getAlerts(string $sortfield, string $sortorder, $show_lines): array {
$alerts = API::Alert()->get([
'output' => ['clock', 'sendto', 'subject', 'message', 'status', 'retries', 'error', 'userid', 'actionid',
'mediatypeid', 'alerttype'
@@ -79,6 +64,7 @@ class CControllerWidgetActionLogView extends CControllerWidget {
foreach ($alerts as &$alert) {
$alert['description'] = '';
+
if ($alert['mediatypeid'] != 0 && array_key_exists(0, $alert['mediatypes'])) {
$alert['description'] = $alert['mediatypes'][0]['name'];
$alert['maxattempts'] = $alert['mediatypes'][0]['maxattempts'];
@@ -92,14 +78,7 @@ class CControllerWidgetActionLogView extends CControllerWidget {
return $alerts;
}
- /**
- * Get users.
- *
- * @param array $alerts
- *
- * @return array
- */
- private function getDbUsers(array $alerts) {
+ private function getDbUsers(array $alerts): array {
$userids = [];
foreach ($alerts as $alert) {
@@ -116,16 +95,7 @@ class CControllerWidgetActionLogView extends CControllerWidget {
: [];
}
- /**
- * Get sorting.
- *
- * @param int $sort_triggers
- *
- * @static
- *
- * @return array
- */
- private static function getSorting($sort_triggers) {
+ private static function getSorting(int $sort_triggers): array {
switch ($sort_triggers) {
case SCREEN_SORT_TRIGGERS_TIME_ASC:
return ['clock', ZBX_SORT_UP];
diff --git a/ui/widgets/actionlog/includes/WidgetForm.php b/ui/widgets/actionlog/includes/WidgetForm.php
new file mode 100644
index 00000000000..fa0d39fdfa8
--- /dev/null
+++ b/ui/widgets/actionlog/includes/WidgetForm.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\ActionLog\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldIntegerBox,
+ CWidgetFieldSelect
+};
+
+/**
+ * Action log widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldSelect('sort_triggers', _('Sort entries by'), [
+ SCREEN_SORT_TRIGGERS_TIME_DESC => _('Time').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_TIME_ASC => _('Time').' ('._('ascending').')',
+ SCREEN_SORT_TRIGGERS_TYPE_DESC => _('Type').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_TYPE_ASC => _('Type').' ('._('ascending').')',
+ SCREEN_SORT_TRIGGERS_STATUS_DESC => _('Status').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_STATUS_ASC => _('Status').' ('._('ascending').')',
+ SCREEN_SORT_TRIGGERS_RECIPIENT_DESC => _('Recipient').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_RECIPIENT_ASC => _('Recipient').' ('._('ascending').')'
+ ]))->setDefault(SCREEN_SORT_TRIGGERS_TIME_DESC)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('show_lines', _('Show lines'), ZBX_MIN_WIDGET_LINES, ZBX_MAX_WIDGET_LINES))
+ ->setDefault(ZBX_DEFAULT_WIDGET_LINES)
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ );
+ }
+}
diff --git a/ui/widgets/actionlog/manifest.json b/ui/widgets/actionlog/manifest.json
new file mode 100644
index 00000000000..c9c9c77e791
--- /dev/null
+++ b/ui/widgets/actionlog/manifest.json
@@ -0,0 +1,14 @@
+{
+ "manifest_version": 2.0,
+ "id": "actionlog",
+ "type": "widget",
+ "name": "Action log",
+ "namespace": "ActionLog",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "actions": {
+ "widget.actionlog.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/widgets/actionlog/views/widget.edit.php b/ui/widgets/actionlog/views/widget.edit.php
new file mode 100644
index 00000000000..677ee2cc440
--- /dev/null
+++ b/ui/widgets/actionlog/views/widget.edit.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Action log widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldSelectView($data['fields']['sort_triggers'])
+ )
+ ->addField(
+ new CWidgetFieldIntegerBoxView($data['fields']['show_lines'])
+ )
+ ->show();
diff --git a/ui/app/views/monitoring.widget.actionlog.view.php b/ui/widgets/actionlog/views/widget.view.php
index f45fe68e66b..68b683319f9 100644
--- a/ui/app/views/monitoring.widget.actionlog.view.php
+++ b/ui/widgets/actionlog/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,13 +20,14 @@
/**
+ * Action log widget view.
+ *
* @var CView $this
* @var array $data
*/
// indicator of sort field
-$sort_div = (new CSpan())
- ->addClass(($data['sortorder'] === ZBX_SORT_DOWN) ? ZBX_STYLE_ARROW_DOWN : ZBX_STYLE_ARROW_UP);
+$sort_div = (new CSpan())->addClass($data['sortorder'] === ZBX_SORT_DOWN ? ZBX_STYLE_ARROW_DOWN : ZBX_STYLE_ARROW_UP);
// create alert table
$table = (new CTableInfo())
@@ -59,7 +60,7 @@ foreach ($data['alerts'] as $alert) {
$info_icons = makeErrorIcon($alert['error']);
}
else {
- $info_icons = null;
+ $info_icons = [];
}
$message = ($alert['alerttype'] == ALERT_TYPE_MESSAGE)
@@ -84,18 +85,6 @@ foreach ($data['alerts'] as $alert) {
]);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/clock/Widget.php b/ui/widgets/clock/Widget.php
new file mode 100644
index 00000000000..c20635500d3
--- /dev/null
+++ b/ui/widgets/clock/Widget.php
@@ -0,0 +1,48 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Clock;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ // Clock type.
+ public const TYPE_ANALOG = 0;
+ public const TYPE_DIGITAL = 1;
+
+ // Clock time zone format.
+ public const TIMEZONE_SHORT = 0;
+ public const TIMEZONE_FULL = 1;
+
+ // Clock time format.
+ public const HOUR_24 = 0;
+ public const HOUR_12 = 1;
+
+ // Form blocks.
+ public const SHOW_DATE = 1;
+ public const SHOW_TIME = 2;
+ public const SHOW_TIMEZONE = 3;
+
+ public function getDefaultName(): string {
+ return _('Clock');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetClockView.php b/ui/widgets/clock/actions/WidgetView.php
index f3fb20a7210..62ce9a2f435 100644
--- a/ui/app/controllers/CControllerWidgetClockView.php
+++ b/ui/widgets/clock/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,24 +19,33 @@
**/
-class CControllerWidgetClockView extends CControllerWidget {
+namespace Widgets\Clock\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CTimezoneHelper,
+ DateTime,
+ DateTimeZone,
+ Exception,
+ Manager;
- $this->setType(WIDGET_CLOCK);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
+use Widgets\Clock\Widget;
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'dynamic_hostid' => 'db hosts.hostid'
]);
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
+ protected function doAction(): void {
$config_defaults = [
- 'name' => $this->getDefaultName(),
- 'type' => $fields['clock_type'],
+ 'name' => $this->widget->getDefaultName(),
+ 'type' => $this->fields_values['clock_type'],
'time' => null,
'time_zone_offset' => null,
'date' => date(ZBX_DATE),
@@ -45,35 +54,35 @@ class CControllerWidgetClockView extends CControllerWidget {
'critical_error' => null
];
- switch ($fields['time_type']) {
+ switch ($this->fields_values['time_type']) {
case TIME_TYPE_HOST:
- $clock_data = $this->configureHostTime($fields) + $config_defaults;
+ $clock_data = $this->configureHostTime() + $config_defaults;
break;
case TIME_TYPE_SERVER:
- $clock_data = $this->configureFields($fields) + $config_defaults;
+ $clock_data = $this->configureFields() + $config_defaults;
$clock_data['name'] = _('Server');
break;
default:
- $clock_data = $this->configureFields($fields) + $config_defaults;
+ $clock_data = $this->configureFields() + $config_defaults;
$clock_data['name'] = _('Local');
break;
}
- // Pass clock configiguration to browser script.
- if ($fields['clock_type'] === WIDGET_CLOCK_TYPE_DIGITAL) {
- $clock_data['show'] = $fields['show'];
- $clock_data['bg_color'] = $fields['bg_color'];
- $clock_data['time_format'] = $fields['time_format'];
- $clock_data['seconds'] = ($fields['time_sec'] == 1);
- $clock_data['tzone_format'] = $fields['tzone_format'];
+ // Pass clock configuration to browser script.
+ if ($this->fields_values['clock_type'] === Widget::TYPE_DIGITAL) {
+ $clock_data['show'] = $this->fields_values['show'];
+ $clock_data['bg_color'] = $this->fields_values['bg_color'];
+ $clock_data['time_format'] = $this->fields_values['time_format'];
+ $clock_data['seconds'] = ($this->fields_values['time_sec'] == 1);
+ $clock_data['tzone_format'] = $this->fields_values['tzone_format'];
}
$this->setResponse(new CControllerResponseData([
'name' => $this->getInput('name', $clock_data['name']),
'clock_data' => $clock_data,
- 'styles' => self::getFieldStyles($fields),
+ 'styles' => $this->getFieldStyles(),
'user' => [
'debug_mode' => $this->getDebugMode()
]
@@ -88,18 +97,14 @@ class CControllerWidgetClockView extends CControllerWidget {
*
* @return string Return time zone name from list or 'local' if time zone must be set via browser.
*/
- protected function makeTimeZoneValue(string $time_zone, int $format = WIDGET_CLOCK_TIMEZONE_SHORT): string {
+ private function makeTimeZoneValue(string $time_zone, int $format = Widget::TIMEZONE_SHORT): string {
if ($time_zone === TIMEZONE_DEFAULT_LOCAL) {
return $time_zone;
}
- elseif ($time_zone === ZBX_DEFAULT_TIMEZONE) {
- $zone = CTimezoneHelper::getSystemTimezone();
- }
- else {
- $zone = $time_zone;
- }
- if ($format === WIDGET_CLOCK_TIMEZONE_SHORT) {
+ $zone = $time_zone === ZBX_DEFAULT_TIMEZONE ? CTimezoneHelper::getSystemTimezone() : $time_zone;
+
+ if ($format === Widget::TIMEZONE_SHORT) {
if (($pos = strrpos($zone, '/')) !== false) {
$zone = substr($zone, $pos + 1);
}
@@ -111,37 +116,19 @@ class CControllerWidgetClockView extends CControllerWidget {
return str_replace('_', ' ', $zone);
}
- /**
- * @param array $fields
- *
- * @return boolean
- */
- protected function showDate(array $fields): bool {
- return ($fields['clock_type'] === WIDGET_CLOCK_TYPE_DIGITAL
- && in_array(WIDGET_CLOCK_SHOW_DATE, $fields['show'])
- );
+ private function showDate(): bool {
+ return $this->fields_values['clock_type'] === Widget::TYPE_DIGITAL
+ && in_array(Widget::SHOW_DATE, $this->fields_values['show']);
}
- /**
- * @param array $fields
- *
- * @return boolean
- */
- protected function showTime(array $fields): bool {
- return ($fields['clock_type'] === WIDGET_CLOCK_TYPE_ANALOG
- || in_array(WIDGET_CLOCK_SHOW_TIMEZONE, $fields['show'])
- );
+ private function showTime(): bool {
+ return $this->fields_values['clock_type'] === Widget::TYPE_ANALOG
+ || in_array(Widget::SHOW_TIME, $this->fields_values['show']);
}
- /**
- * @param array $fields
- *
- * @return boolean
- */
- protected function showTimeZone(array $fields): bool {
- return ($fields['clock_type'] === WIDGET_CLOCK_TYPE_DIGITAL
- && in_array(WIDGET_CLOCK_SHOW_TIMEZONE, $fields['show'])
- );
+ private function showTimeZone(): bool {
+ return $this->fields_values['clock_type'] === Widget::TYPE_DIGITAL
+ && in_array(Widget::SHOW_TIMEZONE, $this->fields_values['show']);
}
/**
@@ -149,7 +136,7 @@ class CControllerWidgetClockView extends CControllerWidget {
*
* @return array
*/
- protected function makeTimeFromDateTime(DateTime $date): array {
+ private function makeTimeFromDateTime(DateTime $date): array {
$time = [];
$time['time'] = $date->getTimestamp();
@@ -165,7 +152,7 @@ class CControllerWidgetClockView extends CControllerWidget {
*
* @return DateTime|null Returns created DateTime object or null if time zone is set by browser.
*/
- protected function makeDateTimeFromTimeZone(string $time_zone): ?DateTime {
+ private function makeDateTimeFromTimeZone(string $time_zone): ?DateTime {
if ($time_zone === TIMEZONE_DEFAULT_LOCAL) {
return null;
}
@@ -179,46 +166,15 @@ class CControllerWidgetClockView extends CControllerWidget {
return $now;
}
- /**
- * Create required clock field values both for analog and digital clock.
- *
- * @param array $fields Saved clock configuration.
- *
- * @return array Return prepared clock configuration.
- */
- protected function configureFields(array $fields): array {
- $clock = [];
-
- $date = $this->makeDateTimeFromTimeZone($fields['tzone_timezone']);
-
- if ($this->showDate($fields) && $date !== null) {
- $clock['date'] = $date->format(ZBX_DATE);
- }
-
- if ($this->showTime($fields) && $date !== null) {
- $clock = array_merge($clock, $this->makeTimeFromDateTime($date));
- }
-
- if ($this->showTimeZone($fields)) {
- $clock['time_zone'] = $this->makeTimeZoneValue($fields['tzone_timezone'], $fields['tzone_format']);
- }
-
- return $clock;
- }
-
- /**
- * @param array $fields Saved clock configuration.
- *
- * @return array
- */
- protected function configureHostTime(array $fields): array {
+ private function configureHostTime(): array {
+ $items = [];
$clock = ['is_enabled' => true];
- if ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD) {
+ if ($this->hasInput('templateid')) {
if ($this->hasInput('dynamic_hostid')) {
$template_items = API::Item()->get([
'output' => ['key_'],
- 'itemids' => $fields['itemid'],
+ 'itemids' => $this->fields_values['itemid'],
'webitems' => true
]);
@@ -233,9 +189,6 @@ class CControllerWidgetClockView extends CControllerWidget {
'webitems' => true
]);
}
- else {
- $items = [];
- }
}
// Editing template dashboard?
else {
@@ -246,7 +199,7 @@ class CControllerWidgetClockView extends CControllerWidget {
$items = API::Item()->get([
'output' => ['itemid', 'value_type'],
'selectHosts' => ['name'],
- 'itemids' => $fields['itemid'],
+ 'itemids' => $this->fields_values['itemid'],
'webitems' => true
]);
}
@@ -267,7 +220,7 @@ class CControllerWidgetClockView extends CControllerWidget {
try {
$now = new DateTime($last_value['value']);
- if ($this->showDate($fields)) {
+ if ($this->showDate()) {
$clock['date'] = $now->format(ZBX_DATE);
}
@@ -275,7 +228,7 @@ class CControllerWidgetClockView extends CControllerWidget {
$clock['time'] = time() - ($last_value['clock'] - $now->getTimestamp());
- if ($this->showTimeZone($fields)) {
+ if ($this->showTimeZone()) {
$clock['time_zone'] = 'UTC'.$now->format('P');
}
}
@@ -295,39 +248,62 @@ class CControllerWidgetClockView extends CControllerWidget {
}
/**
+ * Create required clock field values both for analog and digital clock.
+ */
+ private function configureFields(): array {
+ $clock = [];
+
+ $date = $this->makeDateTimeFromTimeZone($this->fields_values['tzone_timezone']);
+
+ if ($date !== null) {
+ if ($this->showDate()) {
+ $clock['date'] = $date->format(ZBX_DATE);
+ }
+
+ if ($this->showTime()) {
+ $clock = array_merge($clock, $this->makeTimeFromDateTime($date));
+ }
+ }
+
+ if ($this->showTimeZone()) {
+ $clock['time_zone'] = $this->makeTimeZoneValue($this->fields_values['tzone_timezone'],
+ $this->fields_values['tzone_format']
+ );
+ }
+
+ return $clock;
+ }
+
+ /**
* Groups enabled field styles by field name (Date, Time, Time zone).
- *
- * @param array $fields Saved clock configuration.
- *
- * @return array
*/
- protected static function getFieldStyles(array $fields): array {
+ private function getFieldStyles(): array {
$cells = [];
- if ($fields['clock_type'] === WIDGET_CLOCK_TYPE_DIGITAL) {
- $show = $fields['show'];
+ if ($this->fields_values['clock_type'] === Widget::TYPE_DIGITAL) {
+ $show = $this->fields_values['show'];
- if (in_array(WIDGET_CLOCK_SHOW_DATE, $show)) {
+ if (in_array(Widget::SHOW_DATE, $show)) {
$cells['date'] = [
- 'size' => $fields['date_size'],
- 'bold' => ($fields['date_bold'] == 1),
- 'color' => $fields['date_color']
+ 'size' => $this->fields_values['date_size'],
+ 'bold' => ($this->fields_values['date_bold'] == 1),
+ 'color' => $this->fields_values['date_color']
];
}
- if (in_array(WIDGET_CLOCK_SHOW_TIME, $show)) {
+ if (in_array(Widget::SHOW_TIME, $show)) {
$cells['time'] = [
- 'size' => $fields['time_size'],
- 'bold' => ($fields['time_bold'] == 1),
- 'color' => $fields['time_color']
+ 'size' => $this->fields_values['time_size'],
+ 'bold' => ($this->fields_values['time_bold'] == 1),
+ 'color' => $this->fields_values['time_color']
];
}
- if (in_array(WIDGET_CLOCK_SHOW_TIMEZONE, $show)) {
+ if (in_array(Widget::SHOW_TIMEZONE, $show)) {
$cells['timezone'] = [
- 'size' => $fields['tzone_size'],
- 'bold' => ($fields['tzone_bold'] == 1),
- 'color' => $fields['tzone_color']
+ 'size' => $this->fields_values['tzone_size'],
+ 'bold' => ($this->fields_values['tzone_bold'] == 1),
+ 'color' => $this->fields_values['tzone_color']
];
}
}
diff --git a/ui/js/widgets/class.widget.clock.js b/ui/widgets/clock/assets/js/class.widget.js
index 5c27ab4c20a..e93d59040ff 100644
--- a/ui/js/widgets/class.widget.clock.js
+++ b/ui/widgets/clock/assets/js/class.widget.js
@@ -258,4 +258,8 @@ class CWidgetClock extends CWidget {
clock_time_zone.textContent = timezone_text;
}
+
+ _hasPadding() {
+ return this._fields.clock_type === undefined || this._fields.clock_type == CWidgetClock.TYPE_ANALOG;
+ }
}
diff --git a/ui/widgets/clock/includes/WidgetForm.php b/ui/widgets/clock/includes/WidgetForm.php
new file mode 100644
index 00000000000..ac94bea7d6b
--- /dev/null
+++ b/ui/widgets/clock/includes/WidgetForm.php
@@ -0,0 +1,142 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Clock\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldCheckBoxList,
+ CWidgetFieldColor,
+ CWidgetFieldIntegerBox,
+ CWidgetFieldMultiSelectItem,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldSelect,
+ CWidgetFieldTimeZone
+};
+
+use Widgets\Clock\Widget;
+
+/**
+ * Clock widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ private const SIZE_PERCENT_MIN = 1;
+ private const SIZE_PERCENT_MAX = 100;
+
+ private const DEFAULT_DATE_SIZE = 20;
+ private const DEFAULT_TIME_SIZE = 30;
+ private const DEFAULT_TIMEZONE_SIZE = 20;
+
+ public function addFields(): self {
+ $time_type = array_key_exists('time_type', $this->values) ? $this->values['time_type'] : null;
+
+ return $this
+ ->addField(
+ (new CWidgetFieldSelect('time_type', _('Time type'), [
+ TIME_TYPE_LOCAL => _('Local time'),
+ TIME_TYPE_SERVER => _('Server time'),
+ TIME_TYPE_HOST => _('Host time')
+ ]))->setDefault(TIME_TYPE_LOCAL)
+ )
+ ->addField($time_type == TIME_TYPE_HOST
+ ? (new CWidgetFieldMultiSelectItem('itemid', _('Item'), $this->templateid))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ ->setMultiple(false)
+ : null
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('clock_type', _('Clock type'), [
+ Widget::TYPE_ANALOG => _('Analog'),
+ Widget::TYPE_DIGITAL => _('Digital')
+ ]))->setDefault(Widget::TYPE_ANALOG)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBoxList('show', _('Show'), [
+ Widget::SHOW_DATE => _('Date'),
+ Widget::SHOW_TIME => _('Time'),
+ Widget::SHOW_TIMEZONE => _('Time zone')
+ ]))
+ ->setDefault([Widget::SHOW_TIME])
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('adv_conf', _('Advanced configuration'))
+ )
+ ->addField(
+ (new CWidgetFieldColor('bg_color', _('Background color')))->allowInherited()
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('date_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_DATE_SIZE)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('date_bold', _('Bold'))
+ )
+ ->addField(
+ (new CWidgetFieldColor('date_color', _('Color')))->allowInherited()
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('time_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_TIME_SIZE)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('time_bold', _('Bold'))
+ )
+ ->addField(
+ (new CWidgetFieldColor('time_color', _('Color')))->allowInherited()
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('time_sec', _('Seconds')))->setDefault(1)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('time_format', _('Format'), [
+ Widget::HOUR_24 => _('24-hour'),
+ Widget::HOUR_12 => _('12-hour')
+ ]))->setDefault(Widget::HOUR_24)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('tzone_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_TIMEZONE_SIZE)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('tzone_bold', _('Bold'))
+ )
+ ->addField(
+ (new CWidgetFieldColor('tzone_color', _('Color')))->allowInherited()
+ )
+ ->addField(
+ (new CWidgetFieldTimeZone('tzone_timezone', _('Time zone')))
+ ->setDefault($time_type == TIME_TYPE_LOCAL ? TIMEZONE_DEFAULT_LOCAL : ZBX_DEFAULT_TIMEZONE)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('tzone_format', _('Format'), [
+ Widget::TIMEZONE_SHORT => _('Short'),
+ Widget::TIMEZONE_FULL => _('Full')
+ ]))->setDefault(Widget::TIMEZONE_SHORT)
+ );
+ }
+}
diff --git a/ui/widgets/clock/manifest.json b/ui/widgets/clock/manifest.json
new file mode 100644
index 00000000000..98ed4984247
--- /dev/null
+++ b/ui/widgets/clock/manifest.json
@@ -0,0 +1,26 @@
+{
+ "manifest_version": 2.0,
+ "id": "clock",
+ "type": "widget",
+ "name": "Clock",
+ "namespace": "Clock",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "template_support": true,
+ "size": {
+ "width": 4,
+ "height": 3
+ },
+ "js_class": "CWidgetClock",
+ "refresh_rate": 900
+ },
+ "actions": {
+ "widget.clock.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/widgets/clock/views/widget.edit.js.php b/ui/widgets/clock/views/widget.edit.js.php
new file mode 100644
index 00000000000..d6f548906b8
--- /dev/null
+++ b/ui/widgets/clock/views/widget.edit.js.php
@@ -0,0 +1,105 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Widgets\Clock\Widget;
+
+?>
+
+window.widget_clock_form = new class {
+
+ init() {
+ this._form = document.getElementById('widget-dialogue-form');
+ this._time_type = document.getElementById('time_type');
+ this._clock_type = document.getElementById('clock_type');
+
+ this._show_date = document.getElementById('show_1');
+ this._show_time = document.getElementById('show_2');
+ this._show_tzone = document.getElementById('show_3');
+
+ this._advanced_configuration = document.getElementById('adv_conf');
+
+ for (const colorpicker of this._form.querySelectorAll('.<?= ZBX_STYLE_COLOR_PICKER ?> input')) {
+ $(colorpicker).colorpicker({
+ appendTo: '.overlay-dialogue-body',
+ use_default: true,
+ onUpdate: window.setIndicatorColor
+ });
+ }
+
+ this._time_type.addEventListener('change', () => {
+ ZABBIX.Dashboard.reloadWidgetProperties();
+ this.updateForm();
+ });
+
+ for (const checkbox of this._clock_type.querySelectorAll('input')) {
+ checkbox.addEventListener('change', () => this.updateForm());
+ }
+
+ const show = [this._show_date, this._show_time, this._show_tzone];
+
+ for (const checkbox of show) {
+ checkbox.addEventListener('change', (e) => {
+ if (show.filter((checkbox) => checkbox.checked).length > 0) {
+ this.updateForm();
+ }
+ else {
+ e.target.checked = true;
+ }
+ });
+ }
+
+ this._advanced_configuration.addEventListener('change', () => this.updateForm());
+
+ this.updateForm();
+ }
+
+ updateForm() {
+ const is_digital = this._clock_type.querySelector('input:checked').value == <?= Widget::TYPE_DIGITAL ?>;
+
+ const show_date_row = is_digital && this._advanced_configuration.checked && this._show_date.checked;
+ const show_time_row = is_digital && this._advanced_configuration.checked && this._show_time.checked;
+ const show_tzone_row = is_digital && this._advanced_configuration.checked && this._show_tzone.checked;
+
+ for (const element of this._form.querySelectorAll('.js-row-show, .js-row-adv-conf')) {
+ element.style.display = is_digital ? '' : 'none';
+ }
+
+ for (const element of this._form.querySelectorAll('.js-row-bg-color')) {
+ element.style.display = is_digital && this._advanced_configuration.checked ? '' : 'none';
+ }
+
+ for (const element of this._form.querySelectorAll('.fields-group-date')) {
+ element.style.display = show_date_row ? '' : 'none';
+ }
+
+ for (const element of this._form.querySelectorAll('.fields-group-time')) {
+ element.style.display = show_time_row ? '' : 'none';
+ }
+
+ for (const element of this._form.querySelectorAll('.fields-group-tzone')) {
+ element.style.display = show_tzone_row ? '' : 'none';
+ }
+
+ for (const element of this._form.querySelectorAll('.field-tzone-timezone, .field-tzone-format')) {
+ element.style.display = this._time_type.value != <?= TIME_TYPE_HOST ?> ? '' : 'none';
+ }
+ }
+};
diff --git a/ui/widgets/clock/views/widget.edit.php b/ui/widgets/clock/views/widget.edit.php
new file mode 100644
index 00000000000..bc782d0cb08
--- /dev/null
+++ b/ui/widgets/clock/views/widget.edit.php
@@ -0,0 +1,130 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Clock widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$form = (new CWidgetFormView($data));
+
+$form
+ ->addField(
+ new CWidgetFieldSelectView($data['fields']['time_type'])
+ )
+ ->addField(array_key_exists('itemid', $data['fields'])
+ ? new CWidgetFieldMultiSelectItemView($data['fields']['itemid'], $data['captions']['ms']['items']['itemid'])
+ : null
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['clock_type'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxListView($data['fields']['show']),
+ 'js-row-show'
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['adv_conf']),
+ 'js-row-adv-conf'
+ )
+ ->addField(
+ new CWidgetFieldColorView($data['fields']['bg_color']),
+ 'js-row-bg-color'
+ )
+ ->addFieldsGroup(_('Date'), getDateFieldsGroupViews($form, $data['fields']), 'fields-group-date')
+ ->addFieldsGroup(_('Time'), getTimeFieldsGroupViews($form, $data['fields']), 'fields-group-time')
+ ->addFieldsGroup(_('Time zone'), getTimeZoneFieldsGroupViews($form, $data['fields']), 'fields-group-tzone')
+ ->includeJsFile('widget.edit.js.php')
+ ->addJavaScript('widget_clock_form.init();')
+ ->show();
+
+function getDateFieldsGroupViews(CWidgetFormView $form, array $fields): array {
+ $date_size = new CWidgetFieldIntegerBoxView($fields['date_size']);
+ $date_color = new CWidgetFieldColorView($fields['date_color']);
+
+ return [
+ $form->makeCustomField($date_size, [
+ $date_size->getLabel(),
+ (new CFormField([$date_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ new CWidgetFieldCheckBoxView($fields['date_bold']),
+
+ $form->makeCustomField($date_color, [
+ $date_color->getLabel()->addClass('offset-3'),
+ new CFormField($date_color->getView())
+ ])
+ ];
+}
+
+function getTimeFieldsGroupViews(CWidgetFormView $form, array $fields): array {
+ $time_size = new CWidgetFieldIntegerBoxView($fields['time_size']);
+ $time_color = new CWidgetFieldColorView($fields['time_color']);
+ $time_format = new CWidgetFieldRadioButtonListView($fields['time_format']);
+
+ return [
+ $form->makeCustomField($time_size, [
+ $time_size->getLabel(),
+ (new CFormField([$time_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ new CWidgetFieldCheckBoxView($fields['time_bold']),
+
+ $form->makeCustomField($time_color, [
+ $time_color->getLabel()->addClass('offset-3'),
+ new CFormField($time_color->getView())
+ ]),
+
+ new CWidgetFieldCheckBoxView($fields['time_sec']),
+
+ $form->makeCustomField($time_format, [
+ $time_format->getLabel(),
+ (new CFormField($time_format->getView()))->addClass('field-format')
+ ])
+ ];
+}
+
+function getTimeZoneFieldsGroupViews(CWidgetFormView $form, array $fields): array {
+ $tzone_size = new CWidgetFieldIntegerBoxView($fields['tzone_size']);
+ $tzone_color = new CWidgetFieldColorView($fields['tzone_color']);
+ $tzone_timezone = new CWidgetFieldTimeZoneView($fields['tzone_timezone']);
+ $tzone_format = new CWidgetFieldRadioButtonListView($fields['tzone_format']);
+
+ return [
+ $form->makeCustomField($tzone_size, [
+ $tzone_size->getLabel(),
+ (new CFormField([$tzone_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ new CWidgetFieldCheckBoxView($fields['tzone_bold']),
+
+ $form->makeCustomField($tzone_color, [
+ $tzone_color->getLabel()->addClass('offset-3'),
+ new CFormField($tzone_color->getView())
+ ]),
+
+ $form->makeCustomField($tzone_timezone, [], 'field-tzone-timezone'),
+
+ $form->makeCustomField($tzone_format, [], 'field-tzone-format')
+ ];
+}
diff --git a/ui/app/views/monitoring.widget.clock.view.php b/ui/widgets/clock/views/widget.view.php
index 89b4ef1fe98..482208fa6f6 100644
--- a/ui/app/views/monitoring.widget.clock.view.php
+++ b/ui/widgets/clock/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,20 +20,21 @@
/**
+ * Clock widget view.
+ *
* @var CView $this
* @var array $data
*/
-if ($data['clock_data']['critical_error'] !== null) {
- $item = (new CTableInfo())->setNoDataMessage($data['clock_data']['critical_error']);
+use Widgets\Clock\Widget;
+
+$view = new CWidgetView($data);
- $output = [
- 'name' => $data['name'],
- 'body' => $item->toString()
- ];
+if ($data['clock_data']['critical_error'] !== null) {
+ $body = (new CTableInfo())->setNoDataMessage($data['clock_data']['critical_error']);
}
else {
- if ($data['clock_data']['type'] == WIDGET_CLOCK_TYPE_DIGITAL) {
+ if ($data['clock_data']['type'] == Widget::TYPE_DIGITAL) {
$clock_data = $data['clock_data'];
$rows = [];
@@ -43,17 +44,17 @@ else {
$div = new CDiv();
switch ($show) {
- case WIDGET_CLOCK_SHOW_DATE:
+ case Widget::SHOW_DATE:
$div->addClass('clock-date');
$styles = $data['styles']['date'];
break;
- case WIDGET_CLOCK_SHOW_TIME:
+ case Widget::SHOW_TIME:
$div->addClass('clock-time');
$styles = $data['styles']['time'];
break;
- case WIDGET_CLOCK_SHOW_TIMEZONE:
+ case Widget::SHOW_TIMEZONE:
$div->addClass('clock-time-zone');
$styles = $data['styles']['timezone'];
break;
@@ -83,9 +84,7 @@ else {
->addClass('clock-disabled');
}
- $body = (new CDiv($rows))
- ->addClass('dashboard-widget-clock')
- ->addClass('clock-digital');
+ $body = (new CDiv($rows))->addClass('clock-digital');
if ($clock_data['bg_color'] !== '') {
$body->addStyle('background-color: #'.$clock_data['bg_color']);
@@ -95,22 +94,9 @@ else {
$body = (new CClock())->setEnabled($data['clock_data']['is_enabled']);
}
- $output = [
- 'name' => $data['name'],
- 'body' => $body->toString(),
- 'clock_data' => $data['clock_data']
- ];
-}
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()
- ->make()
- ->toString();
+ $view->setVar('clock_data', $data['clock_data']);
}
-echo json_encode($output);
+$view
+ ->addItem($body)
+ ->show();
diff --git a/ui/widgets/dataover/Widget.php b/ui/widgets/dataover/Widget.php
new file mode 100644
index 00000000000..f0805d55f12
--- /dev/null
+++ b/ui/widgets/dataover/Widget.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\DataOver;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Data overview');
+ }
+
+ public function isDeprecated(): bool {
+ return true;
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetDataOverView.php b/ui/widgets/dataover/actions/WidgetView.php
index abc140e7f1b..29f96642b5c 100644
--- a/ui/app/controllers/CControllerWidgetDataOverView.php
+++ b/ui/widgets/dataover/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,31 +19,24 @@
**/
-class CControllerWidgetDataOverView extends CControllerWidget {
+namespace Widgets\DataOver\Actions;
- public function __construct() {
- parent::__construct();
+use CControllerDashboardWidgetView,
+ CControllerResponseData;
- $this->setType(WIDGET_DATA_OVER);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
-
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
+class WidgetView extends CControllerDashboardWidgetView {
- $groupids = $fields['groupids'] ? getSubGroups($fields['groupids']) : null;
- $hostids = $fields['hostids'] ? $fields['hostids'] : null;
+ protected function doAction(): void {
+ $groupids = $this->fields_values['groupids'] ? getSubGroups($this->fields_values['groupids']) : null;
+ $hostids = $this->fields_values['hostids'] ?: null;
- [$items, $hosts, $has_hidden_data] = getDataOverview($groupids, $hostids, $fields);
+ [$items, $hosts, $has_hidden_data] = getDataOverview($groupids, $hostids, $this->fields_values);
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
- 'groupids' => getSubGroups($fields['groupids']),
- 'show_suppressed' => $fields['show_suppressed'],
- 'style' => $fields['style'],
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
+ 'groupids' => getSubGroups($this->fields_values['groupids']),
+ 'show_suppressed' => $this->fields_values['show_suppressed'],
+ 'style' => $this->fields_values['style'],
'items' => $items,
'hosts' => $hosts,
'has_hidden_data' => $has_hidden_data,
diff --git a/ui/widgets/dataover/includes/WidgetForm.php b/ui/widgets/dataover/includes/WidgetForm.php
new file mode 100644
index 00000000000..a0b7556bd83
--- /dev/null
+++ b/ui/widgets/dataover/includes/WidgetForm.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\DataOver\Includes;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldTags
+};
+
+/**
+ * Data overview widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags')
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('style', _('Hosts location'), [
+ STYLE_LEFT => _('Left'),
+ STYLE_TOP => _('Top')
+ ]))->setDefault(STYLE_LEFT)
+ );
+ }
+}
diff --git a/ui/widgets/dataover/manifest.json b/ui/widgets/dataover/manifest.json
new file mode 100644
index 00000000000..4336519af84
--- /dev/null
+++ b/ui/widgets/dataover/manifest.json
@@ -0,0 +1,14 @@
+{
+ "manifest_version": 2.0,
+ "id": "dataover",
+ "type": "widget",
+ "name": "Data overview",
+ "namespace": "DataOver",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "actions": {
+ "widget.dataover.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/widgets/dataover/views/widget.edit.php b/ui/widgets/dataover/views/widget.edit.php
new file mode 100644
index 00000000000..0e7acc85ecc
--- /dev/null
+++ b/ui/widgets/dataover/views/widget.edit.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Data overview widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+(new CWidgetFormView($data))
+ ->addField($groupids)
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_suppressed'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['style'])
+ )
+ ->show();
diff --git a/ui/widgets/dataover/views/widget.view.php b/ui/widgets/dataover/views/widget.view.php
new file mode 100644
index 00000000000..c9c3cb60eab
--- /dev/null
+++ b/ui/widgets/dataover/views/widget.view.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Data overview widget view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetView($data))
+ ->addItem($data['style'] == STYLE_TOP
+ ? (new CPartial('dataoverview.table.top', $data))->getOutput()
+ : (new CPartial('dataoverview.table.left', $data))->getOutput()
+ )
+ ->show();
diff --git a/ui/widgets/discovery/Widget.php b/ui/widgets/discovery/Widget.php
new file mode 100644
index 00000000000..e51d9b66a23
--- /dev/null
+++ b/ui/widgets/discovery/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Discovery;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Discovery status');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetDiscoveryView.php b/ui/widgets/discovery/actions/WidgetView.php
index 92e30c38eb9..58dad250854 100644
--- a/ui/app/controllers/CControllerWidgetDiscoveryView.php
+++ b/ui/widgets/discovery/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,21 +19,18 @@
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
+namespace Widgets\Discovery\Actions;
-class CControllerWidgetDiscoveryView extends CControllerWidget {
+use API,
+ CArrayHelper,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CRoleHelper,
+ CWebUser;
- public function __construct() {
- parent::__construct();
+class WidgetView extends CControllerDashboardWidgetView {
- $this->setType(WIDGET_DISCOVERY);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
-
- protected function doAction() {
+ protected function doAction(): void {
if ($this->getUserType() >= USER_TYPE_ZABBIX_ADMIN) {
$drules = API::DRule()->get([
'output' => ['druleid', 'name'],
@@ -65,7 +62,7 @@ class CControllerWidgetDiscoveryView extends CControllerWidget {
}
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'drules' => $drules,
'error' => $error,
'user' => [
diff --git a/ui/widgets/discovery/manifest.json b/ui/widgets/discovery/manifest.json
new file mode 100644
index 00000000000..c38f24500d1
--- /dev/null
+++ b/ui/widgets/discovery/manifest.json
@@ -0,0 +1,20 @@
+{
+ "manifest_version": 2.0,
+ "id": "discovery",
+ "type": "widget",
+ "name": "Discovery status",
+ "namespace": "Discovery",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "size": {
+ "width": 6,
+ "height": 3
+ }
+ },
+ "actions": {
+ "widget.discovery.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/app/views/monitoring.widget.discovery.view.php b/ui/widgets/discovery/views/widget.view.php
index 93946fb6e59..e6d825dce63 100644
--- a/ui/app/views/monitoring.widget.discovery.view.php
+++ b/ui/widgets/discovery/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * Discovery status widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -45,24 +47,12 @@ else {
->setArgument('filter_druleids', [$drule['druleid']])
)
: $drule['name'],
- ($drule['up'] != 0) ? (new CSpan($drule['up']))->addClass(ZBX_STYLE_GREEN) : '',
- ($drule['down'] != 0) ? (new CSpan($drule['down']))->addClass(ZBX_STYLE_RED) : ''
+ $drule['up'] != 0 ? (new CSpan($drule['up']))->addClass(ZBX_STYLE_GREEN) : '',
+ $drule['down'] != 0 ? (new CSpan($drule['down']))->addClass(ZBX_STYLE_RED) : ''
]);
}
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/favgraphs/Widget.php b/ui/widgets/favgraphs/Widget.php
new file mode 100644
index 00000000000..c27391cd799
--- /dev/null
+++ b/ui/widgets/favgraphs/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\FavGraphs;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Favorite graphs');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetFavGraphsView.php b/ui/widgets/favgraphs/actions/WidgetView.php
index aafc056e4a1..458729dbbb3 100644
--- a/ui/app/controllers/CControllerWidgetFavGraphsView.php
+++ b/ui/widgets/favgraphs/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,26 +19,23 @@
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
+namespace Widgets\FavGraphs\Actions;
-class CControllerWidgetFavGraphsView extends CControllerWidget {
+use API,
+ CArrayHelper,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CFavorite,
+ CRoleHelper;
- public function __construct() {
- parent::__construct();
+class WidgetView extends CControllerDashboardWidgetView {
- $this->setType(WIDGET_FAV_GRAPHS);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
-
- protected function doAction() {
+ protected function doAction(): void {
$graphs = [];
$itemids = [];
- foreach (CFavorite::get('web.favorite.graphids') as $favourite) {
- $itemids[$favourite['value']] = true;
+ foreach (CFavorite::get('web.favorite.graphids') as $favorite) {
+ $itemids[$favorite['value']] = true;
}
if ($itemids) {
@@ -60,7 +57,7 @@ class CControllerWidgetFavGraphsView extends CControllerWidget {
CArrayHelper::sort($graphs, ['label']);
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'graphs' => $graphs,
'user' => [
'debug_mode' => $this->getDebugMode()
diff --git a/ui/widgets/favgraphs/manifest.json b/ui/widgets/favgraphs/manifest.json
new file mode 100644
index 00000000000..4e2d82cbc1d
--- /dev/null
+++ b/ui/widgets/favgraphs/manifest.json
@@ -0,0 +1,21 @@
+{
+ "manifest_version": 2.0,
+ "id": "favgraphs",
+ "type": "widget",
+ "name": "Favorite graphs",
+ "namespace": "FavGraphs",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "size": {
+ "width": 4,
+ "height": 3
+ },
+ "refresh_rate": 900
+ },
+ "actions": {
+ "widget.favgraphs.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/app/views/monitoring.widget.favgraphs.view.php b/ui/widgets/favgraphs/views/widget.view.php
index c3e3b1b7e6b..a9db81a4202 100644
--- a/ui/app/views/monitoring.widget.favgraphs.view.php
+++ b/ui/widgets/favgraphs/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,7 +20,10 @@
/**
+ * Favorite graphs widget view.
+ *
* @var CView $this
+ * @var array $data
*/
$table = (new CTableInfo())->setNoDataMessage(_('No graphs added.'));
@@ -43,18 +46,6 @@ foreach ($data['graphs'] as $graph) {
]);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/favmaps/Widget.php b/ui/widgets/favmaps/Widget.php
new file mode 100644
index 00000000000..b1ddd4f5d80
--- /dev/null
+++ b/ui/widgets/favmaps/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\FavMaps;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Favorite maps');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetFavMapsView.php b/ui/widgets/favmaps/actions/WidgetView.php
index ca139c25f7f..3921422e912 100644
--- a/ui/app/controllers/CControllerWidgetFavMapsView.php
+++ b/ui/widgets/favmaps/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,26 +19,23 @@
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
+namespace Widgets\FavMaps\Actions;
-class CControllerWidgetFavMapsView extends CControllerWidget {
+use API,
+ CArrayHelper,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CFavorite,
+ CRoleHelper;
- public function __construct() {
- parent::__construct();
+class WidgetView extends CControllerDashboardWidgetView {
- $this->setType(WIDGET_FAV_MAPS);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
-
- protected function doAction() {
+ protected function doAction(): void {
$maps = [];
$mapids = [];
- foreach (CFavorite::get('web.favorite.sysmapids') as $favourite) {
- $mapids[$favourite['value']] = true;
+ foreach (CFavorite::get('web.favorite.sysmapids') as $favorite) {
+ $mapids[$favorite['value']] = true;
}
if ($mapids) {
@@ -58,7 +55,7 @@ class CControllerWidgetFavMapsView extends CControllerWidget {
CArrayHelper::sort($maps, ['label']);
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', CWidgetConfig::getKnownWidgetTypes($this->getContext())[WIDGET_FAV_MAPS]),
+ 'name' => $this->getInput('name', $this->widget !== null ? $this->widget->getDefaultName() : ''),
'maps' => $maps,
'user' => [
'debug_mode' => $this->getDebugMode()
diff --git a/ui/widgets/favmaps/manifest.json b/ui/widgets/favmaps/manifest.json
new file mode 100644
index 00000000000..ed5a7b5a358
--- /dev/null
+++ b/ui/widgets/favmaps/manifest.json
@@ -0,0 +1,21 @@
+{
+ "manifest_version": 2.0,
+ "id": "favmaps",
+ "type": "widget",
+ "name": "Favorite maps",
+ "namespace": "FavMaps",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "size": {
+ "width": 4,
+ "height": 3
+ },
+ "refresh_rate": 900
+ },
+ "actions": {
+ "widget.favmaps.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/app/views/monitoring.widget.favmaps.view.php b/ui/widgets/favmaps/views/widget.view.php
index c0ddad1e7f4..21e940cd8ff 100644
--- a/ui/app/views/monitoring.widget.favmaps.view.php
+++ b/ui/widgets/favmaps/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,7 +20,10 @@
/**
+ * Favorite maps widget view.
+ *
* @var CView $this
+ * @var array $data
*/
$table = (new CTableInfo())->setNoDataMessage(_('No maps added.'));
@@ -42,18 +45,6 @@ foreach ($data['maps'] as $map) {
]);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/geomap/Widget.php b/ui/widgets/geomap/Widget.php
new file mode 100644
index 00000000000..5a3c82ae937
--- /dev/null
+++ b/ui/widgets/geomap/Widget.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Geomap;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Geomap');
+ }
+
+ public function getTranslationStrings(): array {
+ return [
+ 'class.widget.js' => [
+ 'Actions' => _('Actions'),
+ 'Set this view as default' => _('Set this view as default'),
+ 'Reset to initial view' => _('Reset to initial view'),
+ 'No problems' => _('No problems'),
+ 'Not classified' => _('Not classified'),
+ 'Information' => _('Information'),
+ 'Warning' => _('Warning'),
+ 'Average' => _('Average'),
+ 'High' => _('High'),
+ 'Disaster' => _('Disaster'),
+ 'Host' => _('Host'),
+ 'D' => _x('D', 'abbreviation of severity level'),
+ 'H' => _x('H', 'abbreviation of severity level'),
+ 'A' => _x('A', 'abbreviation of severity level'),
+ 'W' => _x('W', 'abbreviation of severity level'),
+ 'I' => _x('I', 'abbreviation of severity level'),
+ 'N' => _x('N', 'abbreviation of severity level'),
+ 'Navigate to default view' => _('Navigate to default view'),
+ 'Navigate to initial view' => _('Navigate to initial view')
+ ]
+ ];
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetGeoMapView.php b/ui/widgets/geomap/actions/WidgetView.php
index a0264e2e9ea..895bd55d149 100644
--- a/ui/app/controllers/CControllerWidgetGeoMapView.php
+++ b/ui/widgets/geomap/actions/WidgetView.php
@@ -19,50 +19,45 @@
**/
-class CControllerWidgetGeoMapView extends CControllerWidget {
+namespace Widgets\Geomap\Actions;
- const NO_PROBLEMS_MARKER_COLOR = '#009900';
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CGeomapCoordinatesParser,
+ CParser,
+ CProfile,
+ CSettingsHelper,
+ CSeverityHelper;
- /**
- * Widget id.
- *
- * @param string
- */
- protected $widgetid;
+class WidgetView extends CControllerDashboardWidgetView {
- /**
- * Widget fields.
- *
- * @param array
- */
- protected $fields;
+ private const NO_PROBLEMS_MARKER_COLOR = '#009900';
+
+ protected string $widgetid;
/**
* Global geomap configuration.
*
* @param array
*/
- protected $geomap_config;
+ protected array $geomap_config;
- public function __construct() {
- parent::__construct();
+ protected function init(): void {
+ parent::init();
- $this->setType(WIDGET_GEOMAP);
- $this->setValidationRules([
- 'name' => 'string',
+ $this->addValidationRules([
'initial_load' => 'in 0,1',
'widgetid' => 'db widget.widgetid',
- 'unique_id' => 'required|string',
- 'fields' => 'json'
+ 'unique_id' => 'required|string'
]);
}
- protected function doAction() {
+ protected function doAction(): void {
$this->widgetid = $this->getInput('widgetid', 0);
- $this->fields = $this->getForm()->getFieldsData();
$data = [
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'hosts' => self::convertToRFC7946($this->getHosts()),
'user' => [
'debug_mode' => $this->getDebugMode()
@@ -83,39 +78,18 @@ class CControllerWidgetGeoMapView extends CControllerWidget {
}
/**
- * Create an array of problem severity colors.
- *
- * @static
- *
- * @return array
- */
- protected static function getSeveritySettings(): array {
- $severity_config = [
- -1 => self::NO_PROBLEMS_MARKER_COLOR
- ];
-
- for ($severity = TRIGGER_SEVERITY_NOT_CLASSIFIED; $severity < TRIGGER_SEVERITY_COUNT; $severity++) {
- $severity_config[$severity] = '#'.CSeverityHelper::getColor($severity);
- }
-
- return $severity_config;
- }
-
- /**
* Get hosts and their properties to show on the map as markers.
- *
- * @return array
*/
- protected function getHosts(): array {
- $filter_groupids = $this->fields['groupids'] ? getSubGroups($this->fields['groupids']) : null;
+ private function getHosts(): array {
+ $filter_groupids = $this->fields_values['groupids'] ? getSubGroups($this->fields_values['groupids']) : null;
$hosts = API::Host()->get([
'output' => ['hostid', 'name'],
'selectInventory' => ['location_lat', 'location_lon'],
'groupids' => $filter_groupids,
- 'hostids' => $this->fields['hostids'] ? $this->fields['hostids'] : null,
- 'evaltype' => $this->fields['evaltype'],
- 'tags' => $this->fields['tags'],
+ 'hostids' => $this->fields_values['hostids'] ?: null,
+ 'evaltype' => $this->fields_values['evaltype'],
+ 'tags' => $this->fields_values['tags'],
'filter' => [
'inventory_mode' => [HOST_INVENTORY_MANUAL, HOST_INVENTORY_AUTOMATIC]
],
@@ -123,7 +97,7 @@ class CControllerWidgetGeoMapView extends CControllerWidget {
'preservekeys' => true
]);
- $hosts = array_filter($hosts, function ($host) {
+ $hosts = array_filter($hosts, static function ($host) {
$lat = $host['inventory']['location_lat'];
$lng = $host['inventory']['location_lon'];
@@ -174,7 +148,7 @@ class CControllerWidgetGeoMapView extends CControllerWidget {
$severity_filter = ($severity_filter !== '') ? array_flip(explode(',', $severity_filter)) : [];
if ($severity_filter && count($severity_filter) != 7) {
- $hosts = array_filter($hosts, function ($host) use ($severity_filter, $problems_by_host) {
+ $hosts = array_filter($hosts, static function ($host) use ($severity_filter, $problems_by_host) {
return array_key_exists($host['hostid'], $problems_by_host)
? (bool) array_intersect_key(array_filter($problems_by_host[$host['hostid']]), $severity_filter)
: array_key_exists(-1, $severity_filter);
@@ -202,10 +176,8 @@ class CControllerWidgetGeoMapView extends CControllerWidget {
/**
* Get initial map center point, zoom level and coordinates to center when clicking on navigate home button.
- *
- * @return array
*/
- protected function getMapCenter(): array {
+ private function getMapCenter(): array {
$geoloc_parser = new CGeomapCoordinatesParser();
$home_coords = [];
$center = [];
@@ -217,9 +189,9 @@ class CControllerWidgetGeoMapView extends CControllerWidget {
$center['zoom'] = min($this->geomap_config['max_zoom'], $center['zoom']);
}
- if (array_key_exists('default_view', $this->fields)
- && $this->fields['default_view'] !== ''
- && $geoloc_parser->parse($this->fields['default_view']) == CParser::PARSE_SUCCESS) {
+ if (array_key_exists('default_view', $this->fields_values)
+ && $this->fields_values['default_view'] !== ''
+ && $geoloc_parser->parse($this->fields_values['default_view']) == CParser::PARSE_SUCCESS) {
$initial_view = $geoloc_parser->result;
if (array_key_exists('zoom', $initial_view)) {
@@ -242,56 +214,59 @@ class CControllerWidgetGeoMapView extends CControllerWidget {
];
return [
- 'center' => $center ? $center : $defaults,
+ 'center' => $center ?: $defaults,
'home_coords' => $home_coords
];
}
+ private function getUserProfileFilter(): array {
+ return [
+ 'severity' => CProfile::get('web.dashboard.widget.geomap.severity_filter', [], $this->widgetid)
+ ];
+ }
+
/**
* Get global map configuration.
- *
- * @static
- *
- * @return array
*/
- protected static function getMapConfig(): array {
+ private static function getMapConfig(): array {
if (CSettingsHelper::get(CSettingsHelper::GEOMAPS_TILE_PROVIDER) === '') {
- $config = [
+ return [
'tile_url' => CSettingsHelper::get(CSettingsHelper::GEOMAPS_TILE_URL),
'max_zoom' => CSettingsHelper::get(CSettingsHelper::GEOMAPS_MAX_ZOOM),
'attribution' => CSettingsHelper::get(CSettingsHelper::GEOMAPS_ATTRIBUTION)
];
}
- else {
- $tile_provider = getTileProviders()[CSettingsHelper::get(CSettingsHelper::GEOMAPS_TILE_PROVIDER)];
- $config = [
- 'tile_url' => $tile_provider['geomaps_tile_url'],
- 'max_zoom' => $tile_provider['geomaps_max_zoom'],
- 'attribution' => $tile_provider['geomaps_attribution']
- ];
- }
+ $tile_provider = getTileProviders()[CSettingsHelper::get(CSettingsHelper::GEOMAPS_TILE_PROVIDER)];
- return $config;
+ return [
+ 'tile_url' => $tile_provider['geomaps_tile_url'],
+ 'max_zoom' => $tile_provider['geomaps_max_zoom'],
+ 'attribution' => $tile_provider['geomaps_attribution']
+ ];
}
- protected function getUserProfileFilter(): array {
- return [
- 'severity' => CProfile::get('web.dashboard.widget.geomap.severity_filter', [], $this->widgetid)
+ /**
+ * Create an array of problem severity colors.
+ */
+ private static function getSeveritySettings(): array {
+ $severity_config = [
+ -1 => self::NO_PROBLEMS_MARKER_COLOR
];
+
+ for ($severity = TRIGGER_SEVERITY_NOT_CLASSIFIED; $severity < TRIGGER_SEVERITY_COUNT; $severity++) {
+ $severity_config[$severity] = '#'.CSeverityHelper::getColor($severity);
+ }
+
+ return $severity_config;
}
/**
* Convert array of hosts to valid GeoJSON (RFC7946) object.
- *
- * @static
- *
- * @param array $hosts
- *
- * @return array
*/
- protected static function convertToRFC7946(array $hosts) : array {
+ private static function convertToRFC7946(array $hosts) : array {
$geo_json = [];
+
foreach ($hosts as $host) {
$problems = array_filter($host['problems']);
$severities = array_keys($problems);
diff --git a/ui/js/widgets/class.widget.geomap.js b/ui/widgets/geomap/assets/js/class.widget.js
index 600093bc471..1d115d87f5a 100644
--- a/ui/js/widgets/class.widget.geomap.js
+++ b/ui/widgets/geomap/assets/js/class.widget.js
@@ -46,10 +46,23 @@ class CWidgetGeoMap extends CWidget {
}
_processUpdateResponse(response) {
- super._processUpdateResponse(response);
+ if (this._initial_load) {
+ super._processUpdateResponse(response);
+ }
+ else {
+ let message_box = this._content_body.querySelector('output');
+
+ if (message_box !== null) {
+ message_box.remove();
+ }
- if ('geomap' in response) {
- if ('config' in response.geomap) {
+ if (response.messages !== undefined) {
+ this._content_body.prepend(makeMessageBox('bad', response.messages)[0]);
+ }
+ }
+
+ if (response.geomap !== undefined) {
+ if (response.geomap.config !== undefined) {
this._initMap(response.geomap.config);
}
@@ -59,30 +72,10 @@ class CWidgetGeoMap extends CWidget {
this._initial_load = false;
}
- updateProperties({name, view_mode, fields, configuration}) {
+ updateProperties({name, view_mode, fields}) {
this._initial_load = true;
- super.updateProperties({name, view_mode, fields, configuration});
- }
-
- _setContents({name, body, messages, info, debug}) {
- this._setHeaderName(name);
-
- if (this._initial_load) {
- this._content_body.innerHTML = '';
- }
-
- if (messages !== undefined) {
- this._content_body.insertAdjacentHTML('beforeend', messages);
- }
-
- if (this._initial_load) {
- this._content_body.insertAdjacentHTML('beforeend', body);
- }
-
- if (debug !== undefined) {
- this._content_body.insertAdjacentHTML('beforeend', debug);
- }
+ super.updateProperties({name, view_mode, fields});
}
_addMarkers(hosts) {
diff --git a/ui/widgets/geomap/includes/WidgetForm.php b/ui/widgets/geomap/includes/WidgetForm.php
new file mode 100644
index 00000000000..83add4ae233
--- /dev/null
+++ b/ui/widgets/geomap/includes/WidgetForm.php
@@ -0,0 +1,60 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Geomap\Includes;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldLatLng,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldTags
+};
+
+/**
+ * Geomap widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags')
+ )
+ ->addField(
+ new CWidgetFieldLatLng('default_view', _('Initial view'))
+ );
+ }
+}
diff --git a/ui/widgets/geomap/manifest.json b/ui/widgets/geomap/manifest.json
new file mode 100644
index 00000000000..779a57b3b94
--- /dev/null
+++ b/ui/widgets/geomap/manifest.json
@@ -0,0 +1,20 @@
+{
+ "manifest_version": 2.0,
+ "id": "geomap",
+ "type": "widget",
+ "name": "Geomap",
+ "namespace": "Geomap",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "js_class": "CWidgetGeoMap"
+ },
+ "actions": {
+ "widget.geomap.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/widgets/geomap/views/widget.edit.php b/ui/widgets/geomap/views/widget.edit.php
new file mode 100644
index 00000000000..90f9a562fef
--- /dev/null
+++ b/ui/widgets/geomap/views/widget.edit.php
@@ -0,0 +1,48 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Geomap widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+(new CWidgetFormView($data))
+ ->addField($groupids)
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addField(
+ (new CWidgetFieldLatLngView($data['fields']['default_view']))->setPlaceholder('40.6892494,-74.0466891')
+ )
+ ->show();
diff --git a/ui/widgets/geomap/views/widget.view.php b/ui/widgets/geomap/views/widget.view.php
new file mode 100644
index 00000000000..5d8775d6b5c
--- /dev/null
+++ b/ui/widgets/geomap/views/widget.view.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Geomap widget view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetView($data))
+ ->addItem(
+ (new CDiv())->setId($data['unique_id'])
+ )
+ ->setVar('geomap', array_intersect_key($data, array_flip(['config', 'hosts'])))
+ ->show();
diff --git a/ui/widgets/graph/Widget.php b/ui/widgets/graph/Widget.php
new file mode 100644
index 00000000000..a0bdfbe9c52
--- /dev/null
+++ b/ui/widgets/graph/Widget.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Graph;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Graph (classic)');
+ }
+
+ public function getTranslationStrings(): array {
+ return [
+ 'class.widget.js' => [
+ 'Actions' => _s('Actions'),
+ 'Download image' => _s('Download image')
+ ]
+ ];
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetGraphView.php b/ui/widgets/graph/actions/WidgetView.php
index ea69a05caa7..e42e320df37 100644
--- a/ui/app/controllers/CControllerWidgetGraphView.php
+++ b/ui/widgets/graph/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,25 +19,34 @@
**/
-class CControllerWidgetGraphView extends CControllerWidget {
+namespace Widgets\Graph\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CGraphDraw,
+ CMacrosResolverHelper,
+ CRoleHelper,
+ CUrl,
+ CWebUser;
- $this->setType(WIDGET_GRAPH);
- $this->setValidationRules([
- 'name' => 'string',
+use Zabbix\Core\CWidget;
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'edit_mode' => 'in 0,1',
'dashboardid' => 'db dashboard.dashboardid',
- 'fields' => 'json',
'dynamic_hostid' => 'db hosts.hostid',
'content_width' => 'int32',
'content_height' => 'int32'
]);
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
+ protected function doAction(): void {
$edit_mode = (int) $this->getInput('edit_mode', 0);
$width = (int) $this->getInput('content_width', 100);
@@ -48,18 +57,20 @@ class CControllerWidgetGraphView extends CControllerWidget {
$profileIdx = 'web.dashboard.filter';
$profileIdx2 = $this->getInput('dashboardid', 0);
$is_resource_available = true;
- $header_name = $this->getDefaultName();
+ $header_name = $this->widget->getDefaultName();
- if ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH && $fields['graphid']) {
+ if ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH && $this->fields_values['graphid']) {
$resource_type = SCREEN_RESOURCE_GRAPH;
- $resourceid = reset($fields['graphid']);
+ $resourceid = reset($this->fields_values['graphid']);
$graph_dims = getGraphDims($resourceid);
$graph_dims['graphHeight'] = $height;
$graph_dims['width'] = $width;
}
- elseif ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH && $fields['itemid']) {
+ elseif ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH
+ && $this->fields_values['itemid']) {
+
$resource_type = SCREEN_RESOURCE_SIMPLE_GRAPH;
- $resourceid = $fields['itemid'][0];
+ $resourceid = $this->fields_values['itemid'][0];
$graph_dims = getGraphDims();
$graph_dims['graphHeight'] = $height;
$graph_dims['width'] = $width;
@@ -68,7 +79,7 @@ class CControllerWidgetGraphView extends CControllerWidget {
$resource_type = null;
$graph_dims = getGraphDims();
}
- $graph_dims['shiftYtop'] = CLineGraphDraw::DEFAULT_TOP_BOTTOM_PADDING;
+ $graph_dims['shiftYtop'] = CGraphDraw::DEFAULT_TOP_BOTTOM_PADDING;
$time_control_data = [
'id' => '',
@@ -88,13 +99,13 @@ class CControllerWidgetGraphView extends CControllerWidget {
'profileIdx2' => $profileIdx2
];
- $is_template_dashboard = ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD);
- $is_dynamic_item = ($is_template_dashboard || $fields['dynamic'] == WIDGET_DYNAMIC_ITEM);
+ $is_template_dashboard = $this->hasInput('templateid');
+ $is_dynamic_item = ($is_template_dashboard || $this->fields_values['dynamic'] == CWidget::DYNAMIC_ITEM);
// Replace graph item by particular host item if dynamic items are used.
if ($is_dynamic_item && $dynamic_hostid != 0 && $resourceid) {
// Find same simple-graph item in selected $dynamic_hostid host.
- if ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
+ if ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
$src_items = API::Item()->get([
'output' => ['key_'],
'itemids' => $resourceid,
@@ -120,7 +131,7 @@ class CControllerWidgetGraphView extends CControllerWidget {
}
}
// Find requested host and change graph details.
- elseif ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
+ elseif ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
// get host
$hosts = API::Host()->get([
'output' => ['hostid', 'host', 'name'],
@@ -200,7 +211,7 @@ class CControllerWidgetGraphView extends CControllerWidget {
if (!$resourceid) {
$is_resource_available = false;
}
- elseif ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
+ elseif ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
$items = API::Item()->get([
'output' => ['name', 'key_', 'delay', 'hostid'],
'selectHosts' => ['name'],
@@ -214,7 +225,7 @@ class CControllerWidgetGraphView extends CControllerWidget {
$is_resource_available = false;
}
}
- elseif ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
+ elseif ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
// get graph, used below
$graph = API::Graph()->get([
'output' => API_OUTPUT_EXTEND,
@@ -232,7 +243,7 @@ class CControllerWidgetGraphView extends CControllerWidget {
if ($is_resource_available) {
// Build graph action and data source links.
- if ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
+ if ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
if (!$edit_mode) {
$time_control_data['loadSBox'] = 1;
}
@@ -242,26 +253,26 @@ class CControllerWidgetGraphView extends CControllerWidget {
->setArgument('itemids', [$resourceid])
->setArgument('width', $width)
->setArgument('height', $height)
- ->setArgument('legend', $fields['show_legend']);
+ ->setArgument('legend', $this->fields_values['show_legend']);
}
else {
$graph_src = new CUrl('chart3.php');
}
$graph_src
- ->setArgument('from', '')
- ->setArgument('to', '');
+ ->setArgument('from')
+ ->setArgument('to');
$header_name = $is_template_dashboard
? $item['name']
: $item['hosts'][0]['name'].NAME_DELIMITER.$item['name'];
}
- elseif ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
+ elseif ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
$graph_src = '';
$prepend_host_name = $is_template_dashboard
? false
- : (count($graph['hosts']) == 1 || $is_dynamic_item && $dynamic_hostid != 0);
+ : count($graph['hosts']) == 1 || ($is_dynamic_item && $dynamic_hostid != 0);
$header_name = $prepend_host_name
? $graph['hosts'][0]['name'].NAME_DELIMITER.$graph['name']
@@ -320,9 +331,9 @@ class CControllerWidgetGraphView extends CControllerWidget {
$graph_src
->setArgument('width', $width)
->setArgument('height', $height)
- ->setArgument('legend', ($fields['show_legend'] && $graph['show_legend']) ? 1 : 0)
- ->setArgument('from', '')
- ->setArgument('to', '');
+ ->setArgument('legend', $this->fields_values['show_legend'] && $graph['show_legend'] ? 1 : 0)
+ ->setArgument('from')
+ ->setArgument('to');
}
$graph_src
@@ -340,7 +351,7 @@ class CControllerWidgetGraphView extends CControllerWidget {
$graph_url = null;
}
else {
- if ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
+ if ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH) {
$has_host_graph = $is_dynamic_item && $dynamic_hostid != 0
? (bool) API::Graph()->get([
'output' => [],
@@ -359,8 +370,8 @@ class CControllerWidgetGraphView extends CControllerWidget {
->setArgument('filter_name', $graph['name'])
->setArgument('filter_show', GRAPH_FILTER_HOST)
->setArgument('filter_set', '1')
- ->setArgument('from', '')
- ->setArgument('to', '')
+ ->setArgument('from')
+ ->setArgument('to')
: null;
}
else {
@@ -371,8 +382,8 @@ class CControllerWidgetGraphView extends CControllerWidget {
$graph_url = $this->checkAccess(CRoleHelper::UI_MONITORING_LATEST_DATA)
? (new CUrl('history.php'))
->setArgument('itemids', [$resourceid])
- ->setArgument('from', '')
- ->setArgument('to', '')
+ ->setArgument('from')
+ ->setArgument('to')
: null;
}
}
diff --git a/ui/js/widgets/class.widget.graph.js b/ui/widgets/graph/assets/js/class.widget.js
index 0222248600c..22f077b0979 100644
--- a/ui/js/widgets/class.widget.graph.js
+++ b/ui/widgets/graph/assets/js/class.widget.js
@@ -72,14 +72,14 @@ class CWidgetGraph extends CWidget {
}
}
- updateProperties({name, view_mode, fields, configuration}) {
+ updateProperties({name, view_mode, fields}) {
if (this._state === WIDGET_STATE_ACTIVE) {
this._stopUpdating(true);
}
this._is_graph_mode = false;
- super.updateProperties({name, view_mode, fields, configuration});
+ super.updateProperties({name, view_mode, fields});
}
setEditMode() {
@@ -229,4 +229,8 @@ class CWidgetGraph extends CWidget {
return menu;
}
+
+ _hasPadding() {
+ return true;
+ }
}
diff --git a/ui/widgets/graph/includes/WidgetForm.php b/ui/widgets/graph/includes/WidgetForm.php
new file mode 100644
index 00000000000..5b57cf414aa
--- /dev/null
+++ b/ui/widgets/graph/includes/WidgetForm.php
@@ -0,0 +1,84 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Graph\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldMultiSelectGraph,
+ CWidgetFieldMultiSelectItem,
+ CWidgetFieldRadioButtonList
+};
+
+/**
+ * Graph (classic) widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ $this->addField(
+ (new CWidgetFieldRadioButtonList('source_type', _('Source'), [
+ ZBX_WIDGET_FIELD_RESOURCE_GRAPH => _('Graph'),
+ ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH => _('Simple graph')
+ ]))
+ ->setDefault(ZBX_WIDGET_FIELD_RESOURCE_GRAPH)
+ ->setAction('ZABBIX.Dashboard.reloadWidgetProperties()')
+ );
+
+ if (array_key_exists('source_type', $this->values)
+ && $this->values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH) {
+
+ $field_item = (new CWidgetFieldMultiSelectItem('itemid', _('Item'), $this->templateid))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ ->setMultiple(false)
+ ->setFilterParameter('numeric', true);
+
+ if ($this->templateid === null) {
+ $field_item->setFilterParameter('with_simple_graph_items', true);
+ }
+
+ $this->addField($field_item);
+ }
+ else {
+ $this->addField(
+ (new CWidgetFieldMultiSelectGraph('graphid', _('Graph'), $this->templateid))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ ->setMultiple(false)
+ );
+ }
+
+ $this
+ ->addField(
+ (new CWidgetFieldCheckBox('show_legend', _('Show legend')))->setDefault(1)
+ )
+ ->addField($this->templateid === null
+ ? new CWidgetFieldCheckBox('dynamic', _('Enable host selection'))
+ : null
+ );
+
+ return $this;
+ }
+}
diff --git a/ui/widgets/graph/manifest.json b/ui/widgets/graph/manifest.json
new file mode 100644
index 00000000000..269ccf23bab
--- /dev/null
+++ b/ui/widgets/graph/manifest.json
@@ -0,0 +1,22 @@
+{
+ "manifest_version": 2.0,
+ "id": "graph",
+ "type": "widget",
+ "name": "Graph (classic)",
+ "namespace": "Graph",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "template_support": true,
+ "js_class": "CWidgetGraph",
+ "use_time_selector": true
+ },
+ "actions": {
+ "widget.graph.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/include/classes/widgets/views/widget.actionlog.form.view.php b/ui/widgets/graph/views/widget.edit.php
index 06591ee02d0..b88316c64df 100644
--- a/ui/include/classes/widgets/views/widget.actionlog.form.view.php
+++ b/ui/widgets/graph/views/widget.edit.php
@@ -20,35 +20,29 @@
/**
- * Action log widget form view.
+ * Graph (classic) widget form view.
*
* @var CView $this
* @var array $data
*/
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Sort entries by.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['sort_triggers']),
- new CFormField(CWidgetHelper::getSelect($fields['sort_triggers']))
-]);
-
-// Show lines.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['show_lines']),
- new CFormField(CWidgetHelper::getIntegerBox($fields['show_lines']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form
-];
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['source_type'])
+ )
+ ->addField(array_key_exists('graphid', $data['fields'])
+ ? new CWidgetFieldMultiSelectGraphView($data['fields']['graphid'], $data['captions']['ms']['graphs']['graphid'])
+ : null
+ )
+ ->addField(array_key_exists('itemid', $data['fields'])
+ ? new CWidgetFieldMultiSelectItemView($data['fields']['itemid'], $data['captions']['ms']['items']['itemid'])
+ : null
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_legend'])
+ )
+ ->addField(array_key_exists('dynamic', $data['fields'])
+ ? new CWidgetFieldCheckBoxView($data['fields']['dynamic'])
+ : null
+ )
+ ->show();
diff --git a/ui/widgets/graph/views/widget.view.php b/ui/widgets/graph/views/widget.view.php
new file mode 100644
index 00000000000..5b77fa37c54
--- /dev/null
+++ b/ui/widgets/graph/views/widget.view.php
@@ -0,0 +1,49 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Graph (classic) widget view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$view = new CWidgetView($data);
+
+if ($data['is_resource_available']) {
+ $view
+ ->addItem(
+ (new CDiv())
+ ->addClass('flickerfreescreen')
+ ->addItem(
+ (new CLink(null, $data['widget']['graph_url'] ?? 'javascript:void(0)'))
+ ->addClass(ZBX_STYLE_DASHBOARD_WIDGET_GRAPH_LINK)
+ )
+ )
+ ->setVar('async_data', $data['widget']);
+}
+else {
+ $view->addItem(
+ (new CTableInfo())->setNoDataMessage(_('No permissions to referred object or it does not exist!'))
+ );
+}
+
+$view->show();
diff --git a/ui/widgets/graphprototype/Widget.php b/ui/widgets/graphprototype/Widget.php
new file mode 100644
index 00000000000..4c21e63d00b
--- /dev/null
+++ b/ui/widgets/graphprototype/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\GraphPrototype;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Graph prototype');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetIteratorGraphPrototypeView.php b/ui/widgets/graphprototype/actions/WidgetView.php
index 367d8120a2a..556e573c0f2 100644
--- a/ui/app/controllers/CControllerWidgetIteratorGraphPrototypeView.php
+++ b/ui/widgets/graphprototype/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,28 +19,35 @@
**/
-class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetIterator {
+namespace Widgets\GraphPrototype\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ APP,
+ CControllerResponseData,
+ CControllerWidgetIterator,
+ CTableInfo;
- $this->setType(WIDGET_GRAPH_PROTOTYPE);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
+use Zabbix\Core\CWidget;
+
+class WidgetView extends CControllerWidgetIterator {
+
+ protected const GRAPH_WIDGET_ID = 'graph';
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'view_mode' => 'in '.implode(',', [ZBX_WIDGET_VIEW_MODE_NORMAL, ZBX_WIDGET_VIEW_MODE_HIDDEN_HEADER]),
'dynamic_hostid' => 'db hosts.hostid'
]);
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
-
- if ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH_PROTOTYPE) {
- $data = $this->doGraphPrototype($fields);
+ protected function doAction(): void {
+ if ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_GRAPH_PROTOTYPE) {
+ $data = $this->doGraphPrototype();
}
- elseif ($fields['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH_PROTOTYPE) {
- $data = $this->doSimpleGraphPrototype($fields);
+ elseif ($this->fields_values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH_PROTOTYPE) {
+ $data = $this->doSimpleGraphPrototype();
}
else {
error(_('Page received incorrect data'));
@@ -50,25 +57,23 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
$data['error']['messages'] = array_column($messages, 'message');
}
- $this->setResponse(new CControllerResponseData(['main_block' => json_encode($data)]));
+ $this->setResponse(new CControllerResponseData(['main_block' => json_encode($data, JSON_THROW_ON_ERROR)]));
}
/**
* Get graph prototype widget data for graph prototype source.
*
- * @param array $fields Widget form fields data
- *
* @return array Dashboard response data
*/
- protected function doGraphPrototype(array $fields) {
+ protected function doGraphPrototype(): array {
$options = [
'output' => ['graphid', 'name'],
'selectHosts' => ['hostid', 'name'],
'selectDiscoveryRule' => ['hostid']
];
- $is_template_dashboard = ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD);
- $is_dynamic_item = ($is_template_dashboard || $fields['dynamic'] == WIDGET_DYNAMIC_ITEM);
+ $is_template_dashboard = $this->hasInput('templateid');
+ $is_dynamic_item = ($is_template_dashboard || $this->fields_values['dynamic'] == CWidget::DYNAMIC_ITEM);
$dynamic_hostid = $this->getInput('dynamic_hostid', 0);
@@ -76,7 +81,7 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
// The key of the actual graph prototype selected on widget's edit form.
$graph_prototype = API::GraphPrototype()->get([
'output' => ['name'],
- 'graphids' => reset($fields['graphid'])
+ 'graphids' => reset($this->fields_values['graphid'])
]);
if ($graph_prototype) {
$graph_prototype = reset($graph_prototype);
@@ -91,7 +96,7 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
}
else {
// Just fetch the item prototype selected on widget's edit form.
- $options['graphids'] = reset($fields['graphid']);
+ $options['graphids'] = reset($this->fields_values['graphid']);
}
// Use this graph prototype as base for collecting created graphs.
@@ -121,7 +126,7 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
if ($graph['graphDiscovery']['parent_graphid'] === $graph_prototype['graphid']) {
$prepend_host_name = $is_template_dashboard
? false
- : (count($graph['hosts']) == 1 || $is_dynamic_item && $dynamic_hostid != 0);
+ : count($graph['hosts']) == 1 || ($is_dynamic_item && $dynamic_hostid != 0);
$graphs_collected[$graph['graphid']] = $prepend_host_name
? $graph['hosts'][0]['name'].NAME_DELIMITER.$graph['name']
@@ -140,21 +145,24 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
$children = [];
- foreach ($graphs_collected as $graphid => $name) {
- $child_fields = [
- 'source_type' => ZBX_WIDGET_FIELD_RESOURCE_GRAPH,
- 'graphid' => $graphid,
- 'show_legend' => $fields['show_legend']
- ];
-
- $children[] = [
- 'widgetid' => (string) $graphid,
- 'type' => WIDGET_GRAPH,
- 'name' => $name,
- 'fields' => $child_fields,
- 'configuration' => CWidgetConfig::getConfiguration(WIDGET_GRAPH, $fields, $this->getInput('view_mode')),
- 'defaults' => CWidgetConfig::getDefaults($this->getContext())[WIDGET_GRAPH]
- ];
+ $widget = APP::ModuleManager()->getModule(self::GRAPH_WIDGET_ID);
+
+ if ($widget !== null) {
+ foreach ($graphs_collected as $graphid => $name) {
+ $child_fields = [
+ 'source_type' => ZBX_WIDGET_FIELD_RESOURCE_GRAPH,
+ 'graphid' => $graphid,
+ 'show_legend' => $this->fields_values['show_legend']
+ ];
+
+ $children[] = [
+ 'widgetid' => (string) $graphid,
+ 'type' => self::GRAPH_WIDGET_ID,
+ 'name' => $name,
+ 'fields' => $child_fields,
+ 'defaults' => $widget->getDefaults()
+ ];
+ }
}
if ($this->hasInput('name')) {
@@ -179,20 +187,16 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
/**
* Get graph prototype widget data for simple graph prototype source.
- *
- * @param array $fields Widget form fields data
- *
- * @return array Dashboard response data
*/
- protected function doSimpleGraphPrototype(array $fields) {
+ protected function doSimpleGraphPrototype(): array {
$options = [
'output' => ['itemid', 'name'],
'selectHosts' => ['name'],
'selectDiscoveryRule' => ['hostid']
];
- $is_template_dashboard = ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD);
- $is_dynamic_item = ($is_template_dashboard || $fields['dynamic'] == WIDGET_DYNAMIC_ITEM);
+ $is_template_dashboard = $this->hasInput('templateid');
+ $is_dynamic_item = ($is_template_dashboard || $this->fields_values['dynamic'] == CWidget::DYNAMIC_ITEM);
$dynamic_hostid = $this->getInput('dynamic_hostid', 0);
@@ -200,7 +204,7 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
// The key of the actual item prototype selected on widget's edit form.
$item_prototype = API::ItemPrototype()->get([
'output' => ['key_'],
- 'itemids' => reset($fields['itemid'])
+ 'itemids' => reset($this->fields_values['itemid'])
]);
if ($item_prototype) {
$item_prototype = reset($item_prototype);
@@ -215,7 +219,7 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
}
else {
// Just fetch the item prototype selected on widget's edit form.
- $options['itemids'] = reset($fields['itemid']);
+ $options['itemids'] = reset($this->fields_values['itemid']);
}
// Use this item prototype as base for collecting created items.
@@ -262,21 +266,24 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
$children = [];
- foreach ($items_collected as $itemid => $name) {
- $child_fields = [
- 'source_type' => ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH,
- 'itemid' => $itemid,
- 'show_legend' => $fields['show_legend']
- ];
-
- $children[] = [
- 'widgetid' => (string) $itemid,
- 'type' => WIDGET_GRAPH,
- 'name' => $name,
- 'fields' => $child_fields,
- 'configuration' => CWidgetConfig::getConfiguration(WIDGET_GRAPH, $fields, $this->getInput('view_mode')),
- 'defaults' => CWidgetConfig::getDefaults($this->getContext())[WIDGET_GRAPH]
- ];
+ $widget = APP::ModuleManager()->getModule(self::GRAPH_WIDGET_ID);
+
+ if ($widget !== null) {
+ foreach ($items_collected as $itemid => $name) {
+ $child_fields = [
+ 'source_type' => ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH,
+ 'itemid' => $itemid,
+ 'show_legend' => $this->fields_values['show_legend']
+ ];
+
+ $children[] = [
+ 'widgetid' => (string) $itemid,
+ 'type' => self::GRAPH_WIDGET_ID,
+ 'name' => $name,
+ 'fields' => $child_fields,
+ 'defaults' => $widget->getDefaults()
+ ];
+ }
}
if ($this->hasInput('name')) {
@@ -297,13 +304,11 @@ class CControllerWidgetIteratorGraphPrototypeView extends CControllerWidgetItera
}
/**
- * Get graph prototype widget data for no permissions error.
- *
- * @return array Dashboard response data
+ * Get graph prototype widget data for no permission's error.
*/
- protected function inaccessibleError() {
+ protected function inaccessibleError(): array {
return [
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'body' => (new CTableInfo())
->setNoDataMessage(_('No permissions to referred object or it does not exist!'))
->toString()
diff --git a/ui/js/widgets/class.widget.graph-prototype.js b/ui/widgets/graphprototype/assets/js/class.widget.js
index 8d2e194b8aa..6cb0cd11537 100644
--- a/ui/js/widgets/class.widget.graph-prototype.js
+++ b/ui/widgets/graphprototype/assets/js/class.widget.js
@@ -23,4 +23,8 @@ class CWidgetGraphPrototype extends CWidgetIterator {
_updateWidget(widget) {
widget.resize();
}
+
+ _hasPadding() {
+ return false;
+ }
}
diff --git a/ui/widgets/graphprototype/includes/WidgetForm.php b/ui/widgets/graphprototype/includes/WidgetForm.php
new file mode 100644
index 00000000000..3107c113949
--- /dev/null
+++ b/ui/widgets/graphprototype/includes/WidgetForm.php
@@ -0,0 +1,102 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\GraphPrototype\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldIntegerBox,
+ CWidgetFieldMultiSelectGraphPrototype,
+ CWidgetFieldMultiSelectItemPrototype,
+ CWidgetFieldRadioButtonList
+};
+
+/**
+ * Graph prototype widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ private const DEFAULT_COLUMNS_COUNT = 2;
+ private const DEFAULT_ROWS_COUNT = 1;
+
+ public function addFields(): self {
+ $this->addField(
+ (new CWidgetFieldRadioButtonList('source_type', _('Source'), [
+ ZBX_WIDGET_FIELD_RESOURCE_GRAPH_PROTOTYPE => _('Graph prototype'),
+ ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH_PROTOTYPE => _('Simple graph prototype')
+ ]))
+ ->setDefault(ZBX_WIDGET_FIELD_RESOURCE_GRAPH_PROTOTYPE)
+ ->setAction('ZABBIX.Dashboard.reloadWidgetProperties()')
+ );
+
+ if (array_key_exists('source_type', $this->values)
+ && $this->values['source_type'] == ZBX_WIDGET_FIELD_RESOURCE_SIMPLE_GRAPH_PROTOTYPE) {
+
+ $field_item_prototype = (new CWidgetFieldMultiSelectItemPrototype('itemid', _('Item prototype'),
+ $this->templateid
+ ))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ ->setMultiple(false)
+ ->setFilterParameter('numeric', true);
+
+ if ($this->templateid === null) {
+ $field_item_prototype->setFilterParameter('with_simple_graph_item_prototypes', true);
+ }
+
+ $this->addField($field_item_prototype);
+ }
+ else {
+ $this->addField(
+ (new CWidgetFieldMultiSelectGraphPrototype('graphid', _('Graph prototype'), $this->templateid))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ ->setMultiple(false)
+ );
+ }
+
+ $this
+ ->addField(
+ (new CWidgetFieldCheckBox('show_legend', _('Show legend')))->setDefault(1)
+ )
+ ->addField($this->templateid === null
+ ? new CWidgetFieldCheckBox('dynamic', _('Enable host selection'))
+ : null
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('columns', _('Columns'), 1, DASHBOARD_MAX_COLUMNS))
+ ->setDefault(self::DEFAULT_COLUMNS_COUNT)
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('rows', _('Rows'), 1,
+ floor(DASHBOARD_WIDGET_MAX_ROWS / DASHBOARD_WIDGET_MIN_ROWS)
+ ))
+ ->setDefault(self::DEFAULT_ROWS_COUNT)
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ );
+
+ return $this;
+ }
+}
diff --git a/ui/widgets/graphprototype/manifest.json b/ui/widgets/graphprototype/manifest.json
new file mode 100644
index 00000000000..407b773ac6d
--- /dev/null
+++ b/ui/widgets/graphprototype/manifest.json
@@ -0,0 +1,28 @@
+{
+ "manifest_version": 2.0,
+ "id": "graphprototype",
+ "type": "widget",
+ "name": "Graph prototype",
+ "namespace": "GraphPrototype",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "template_support": true,
+ "size": {
+ "width": 16,
+ "height": 5
+ },
+ "js_class": "CWidgetGraphPrototype",
+ "use_time_selector": true
+ },
+ "actions": {
+ "widget.graphprototype.view": {
+ "class": "WidgetView",
+ "layout": "layout.json",
+ "view": null
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/widgets/graphprototype/views/widget.edit.php b/ui/widgets/graphprototype/views/widget.edit.php
new file mode 100644
index 00000000000..4f7bdafbdd1
--- /dev/null
+++ b/ui/widgets/graphprototype/views/widget.edit.php
@@ -0,0 +1,58 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Graph prototype widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['source_type'])
+ )
+ ->addField(array_key_exists('graphid', $data['fields'])
+ ? new CWidgetFieldMultiSelectGraphPrototypeView($data['fields']['graphid'],
+ $data['captions']['ms']['graph_prototypes']['graphid']
+ )
+ : null
+ )
+ ->addField(array_key_exists('itemid', $data['fields'])
+ ? new CWidgetFieldMultiSelectItemPrototypeView($data['fields']['itemid'],
+ $data['captions']['ms']['item_prototypes']['itemid']
+ )
+ : null
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_legend'])
+ )
+ ->addField(array_key_exists('dynamic', $data['fields'])
+ ? new CWidgetFieldCheckBoxView($data['fields']['dynamic'])
+ : null
+ )
+ ->addField(
+ new CWidgetFieldIntegerBoxView($data['fields']['columns'])
+ )
+ ->addField(
+ new CWidgetFieldIntegerBoxView($data['fields']['rows'])
+ )
+ ->show();
diff --git a/ui/widgets/hostavail/Widget.php b/ui/widgets/hostavail/Widget.php
new file mode 100644
index 00000000000..940838ff348
--- /dev/null
+++ b/ui/widgets/hostavail/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\HostAvail;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Host availability');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetHostAvailView.php b/ui/widgets/hostavail/actions/WidgetView.php
index db696075f0e..42c27b2dc53 100644
--- a/ui/app/controllers/CControllerWidgetHostAvailView.php
+++ b/ui/widgets/hostavail/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,29 +19,26 @@
**/
-class CControllerWidgetHostAvailView extends CControllerWidget {
+namespace Widgets\HostAvail\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CItemGeneral;
- $this->setType(WIDGET_HOST_AVAIL);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
+class WidgetView extends CControllerDashboardWidgetView {
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
-
- $interface_types = CItem::INTERFACE_TYPES_BY_PRIORITY;
+ protected function doAction(): void {
+ $interface_types = CItemGeneral::INTERFACE_TYPES_BY_PRIORITY;
// Sanitize non-existing interface types.
- $fields['interface_type'] = array_values(array_intersect($interface_types, $fields['interface_type']));
+ $this->fields_values['interface_type'] = array_values(
+ array_intersect($interface_types, $this->fields_values['interface_type'])
+ );
- $groupids = $fields['groupids'] ? getSubGroups($fields['groupids']) : null;
+ $groupids = $this->fields_values['groupids'] ? getSubGroups($this->fields_values['groupids']) : null;
- $hosts_types = $fields['interface_type'] ? $fields['interface_type'] : $interface_types;
+ $hosts_types = $this->fields_values['interface_type'] ?: $interface_types;
$hosts_total = array_fill_keys($interface_types, 0);
$hosts_count = array_fill_keys($interface_types, [
@@ -54,10 +51,11 @@ class CControllerWidgetHostAvailView extends CControllerWidget {
'output' => [],
'selectInterfaces' => ['type', 'available'],
'groupids' => $groupids,
- 'filter' => ($fields['maintenance'] == HOST_MAINTENANCE_STATUS_OFF)
+ 'filter' => $this->fields_values['maintenance'] == HOST_MAINTENANCE_STATUS_OFF
? ['status' => HOST_STATUS_MONITORED, 'maintenance_status' => HOST_MAINTENANCE_STATUS_OFF]
: ['status' => HOST_STATUS_MONITORED]
]);
+
$availability_priority = [INTERFACE_AVAILABLE_FALSE, INTERFACE_AVAILABLE_UNKNOWN, INTERFACE_AVAILABLE_TRUE];
foreach ($db_hosts as $host) {
@@ -78,8 +76,8 @@ class CControllerWidgetHostAvailView extends CControllerWidget {
}
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
- 'layout' => $fields['layout'],
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
+ 'layout' => $this->fields_values['layout'],
'hosts_types' => $hosts_types,
'hosts_count' => $hosts_count,
'hosts_total' => $hosts_total,
diff --git a/ui/widgets/hostavail/assets/js/class.widget.js b/ui/widgets/hostavail/assets/js/class.widget.js
new file mode 100644
index 00000000000..da3018177b7
--- /dev/null
+++ b/ui/widgets/hostavail/assets/js/class.widget.js
@@ -0,0 +1,27 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+class CWidgetHostAvail extends CWidget {
+
+ _hasPadding() {
+ return this._view_mode == ZBX_WIDGET_VIEW_MODE_NORMAL
+ && (this._fields.interface_type === undefined || this._fields.interface_type.length !== 1);
+ }
+}
diff --git a/ui/widgets/hostavail/includes/WidgetForm.php b/ui/widgets/hostavail/includes/WidgetForm.php
new file mode 100644
index 00000000000..9fb67d845b9
--- /dev/null
+++ b/ui/widgets/hostavail/includes/WidgetForm.php
@@ -0,0 +1,61 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\HostAvail\Includes;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldCheckBoxList,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldRadioButtonList
+};
+
+/**
+ * Host availability widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxList('interface_type', _('Interface type'), [
+ INTERFACE_TYPE_AGENT => _('Zabbix agent'),
+ INTERFACE_TYPE_SNMP => _('SNMP'),
+ INTERFACE_TYPE_JMX => _('JMX'),
+ INTERFACE_TYPE_IPMI => _('IPMI')
+ ])
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('layout', _('Layout'), [
+ STYLE_HORIZONTAL => _('Horizontal'),
+ STYLE_VERTICAL => _('Vertical')
+ ]))->setDefault(STYLE_HORIZONTAL)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('maintenance', _('Show hosts in maintenance'))
+ );
+ }
+}
diff --git a/ui/widgets/hostavail/manifest.json b/ui/widgets/hostavail/manifest.json
new file mode 100644
index 00000000000..5a0e18197cc
--- /dev/null
+++ b/ui/widgets/hostavail/manifest.json
@@ -0,0 +1,25 @@
+{
+ "manifest_version": 2.0,
+ "id": "hostavail",
+ "type": "widget",
+ "name": "Host availability",
+ "namespace": "HostAvail",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "js_class": "CWidgetHostAvail",
+ "size": {
+ "width": 6,
+ "height": 3
+ },
+ "refresh_rate": 900
+ },
+ "actions": {
+ "widget.hostavail.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/include/classes/widgets/views/widget.discovery.form.view.php b/ui/widgets/hostavail/views/widget.edit.php
index 830ec0dd161..61c853f1ecd 100644
--- a/ui/include/classes/widgets/views/widget.discovery.form.view.php
+++ b/ui/widgets/hostavail/views/widget.edit.php
@@ -20,23 +20,23 @@
/**
- * Discovery status widget form view.
+ * Host availability widget form view.
*
* @var CView $this
* @var array $data
*/
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form
-];
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'], $data['captions']['ms']['groups']['groupids'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxListView($data['fields']['interface_type'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['layout'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['maintenance'])
+ )
+ ->show();
diff --git a/ui/app/views/monitoring.widget.hostavail.view.php b/ui/widgets/hostavail/views/widget.view.php
index 94ca2a936c4..d85f1361486 100644
--- a/ui/app/views/monitoring.widget.hostavail.view.php
+++ b/ui/widgets/hostavail/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * Host availability widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -113,18 +115,6 @@ else {
}
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/item/Widget.php b/ui/widgets/item/Widget.php
new file mode 100644
index 00000000000..9a151d3b6f7
--- /dev/null
+++ b/ui/widgets/item/Widget.php
@@ -0,0 +1,55 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Item;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ // Form blocks.
+ public const SHOW_DESCRIPTION = 1;
+ public const SHOW_VALUE = 2;
+ public const SHOW_TIME = 3;
+ public const SHOW_CHANGE_INDICATOR = 4;
+
+ // Objects positions.
+ public const POSITION_LEFT = 0;
+ public const POSITION_CENTER = 1;
+ public const POSITION_RIGHT = 2;
+
+ public const POSITION_TOP = 0;
+ public const POSITION_MIDDLE = 1;
+ public const POSITION_BOTTOM = 2;
+
+ public const POSITION_BEFORE = 0;
+ public const POSITION_ABOVE = 1;
+ public const POSITION_AFTER = 2;
+ public const POSITION_BELOW = 3;
+
+ public const CHANGE_INDICATOR_UP = 1;
+ public const CHANGE_INDICATOR_DOWN = 2;
+ public const CHANGE_INDICATOR_UP_DOWN = 3;
+
+ public function getDefaultName(): string {
+ return _('Item value');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetItemView.php b/ui/widgets/item/actions/WidgetView.php
index 43b4632b8bc..2e12a94b87d 100644
--- a/ui/app/controllers/CControllerWidgetItemView.php
+++ b/ui/widgets/item/actions/WidgetView.php
@@ -19,29 +19,36 @@
**/
-class CControllerWidgetItemView extends CControllerWidget {
+namespace Widgets\Item\Actions;
- public const CHANGE_INDICATOR_UP = 1;
- public const CHANGE_INDICATOR_DOWN = 2;
- public const CHANGE_INDICATOR_UP_DOWN = 3;
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CMacrosResolverHelper,
+ CSettingsHelper,
+ CUrl,
+ CValueMapHelper,
+ Manager;
- public function __construct() {
- parent::__construct();
+use Widgets\Item\Widget;
- $this->setType(WIDGET_ITEM);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
+use Zabbix\Core\CWidget;
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'dynamic_hostid' => 'db hosts.hostid'
]);
}
- protected function doAction() {
- $name = $this->getDefaultName();
+ protected function doAction(): void {
+ $name = $this->widget->getDefaultName();
$cells = [];
$url = null;
$error = '';
- $fields = $this->getForm()->getFieldsData();
$history_period = timeUnitToSeconds(CSettingsHelper::get(CSettingsHelper::HISTORY_PERIOD));
$description = '';
$value = null;
@@ -50,15 +57,26 @@ class CControllerWidgetItemView extends CControllerWidget {
$units = '';
$decimals = null;
$last_value = null;
+
+ $options = [
+ 'output' => ['value_type'],
+ 'selectValueMap' => ['mappings'],
+ 'itemids' => $this->fields_values['itemid'],
+ 'webitems' => true,
+ 'preservekeys' => true
+ ];
+
+ $is_template_dashboard = $this->hasInput('templateid');
$is_dynamic = ($this->hasInput('dynamic_hostid')
- && ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- || $fields['dynamic'] == WIDGET_DYNAMIC_ITEM)
+ && ($is_template_dashboard || $this->fields_values['dynamic'] == CWidget::DYNAMIC_ITEM)
);
+ $tmp_items = [];
+
if ($is_dynamic) {
$tmp_items = API::Item()->get([
'output' => ['key_'],
- 'itemids' => $fields['itemid'],
+ 'itemids' => $this->fields_values['itemid'],
'webitems' => true
]);
@@ -75,17 +93,8 @@ class CControllerWidgetItemView extends CControllerWidget {
];
}
}
- else {
- $options = [
- 'output' => ['value_type'],
- 'selectValueMap' => ['mappings'],
- 'itemids' => $fields['itemid'],
- 'webitems' => true,
- 'preservekeys' => true
- ];
- }
- $show = array_flip($fields['show']);
+ $show = array_flip($this->fields_values['show']);
/*
* Select original item name in several cases: if user is in normal dashboards or in template dashboards when
@@ -93,25 +102,23 @@ class CControllerWidgetItemView extends CControllerWidget {
* overwritten. Host name can be attached to item name with delimiter when user is in normal dashboards.
*/
if ($this->getInput('name', '') === '') {
- if ($this->getContext() === CWidgetConfig::CONTEXT_DASHBOARD
- || $this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- && $this->hasInput('dynamic_hostid') && $tmp_items) {
+ if (!$is_template_dashboard || ($this->hasInput('dynamic_hostid') && $tmp_items)) {
$options['output'] = array_merge($options['output'], ['name']);
}
- if ($this->getContext() === CWidgetConfig::CONTEXT_DASHBOARD) {
+ if (!$is_template_dashboard) {
$options['selectHosts'] = ['name'];
}
}
// Add other fields in case current widget is set in dynamic mode, template dashboard or has a specified host.
- if ($is_dynamic && $tmp_items || !$is_dynamic) {
+ if (($is_dynamic && $tmp_items) || !$is_dynamic) {
// If description contains user macros, we need "itemid" and "hostid" to resolve them.
- if (array_key_exists(WIDGET_ITEM_SHOW_DESCRIPTION, $show)) {
+ if (array_key_exists(Widget::SHOW_DESCRIPTION, $show)) {
$options['output'] = array_merge($options['output'], ['itemid', 'hostid']);
}
- if (array_key_exists(WIDGET_ITEM_SHOW_VALUE, $show) && $fields['units_show'] == 1) {
+ if (array_key_exists(Widget::SHOW_VALUE, $show) && $this->fields_values['units_show'] == 1) {
$options['output'][] = 'units';
}
}
@@ -128,8 +135,8 @@ class CControllerWidgetItemView extends CControllerWidget {
else {
$items = API::Item()->get($options);
- if ($fields['itemid']) {
- $itemid = $fields['itemid'][0];
+ if ($this->fields_values['itemid']) {
+ $itemid = $this->fields_values['itemid'][0];
}
}
@@ -143,7 +150,7 @@ class CControllerWidgetItemView extends CControllerWidget {
$last_value = $history[$itemid][0]['value'];
// Time can be shown independently.
- if (array_key_exists(WIDGET_ITEM_SHOW_TIME, $show)) {
+ if (array_key_exists(Widget::SHOW_TIME, $show)) {
$time = date(ZBX_FULL_DATE_TIME, (int) $history[$itemid][0]['clock']);
}
@@ -151,17 +158,17 @@ class CControllerWidgetItemView extends CControllerWidget {
case ITEM_VALUE_TYPE_FLOAT:
case ITEM_VALUE_TYPE_UINT64:
// Override item units if needed.
- if (array_key_exists(WIDGET_ITEM_SHOW_VALUE, $show) && $fields['units_show'] == 1) {
- $units = ($fields['units'] === '')
+ if (array_key_exists(Widget::SHOW_VALUE, $show) && $this->fields_values['units_show'] == 1) {
+ $units = $this->fields_values['units'] === ''
? $items[$itemid]['units']
- : $fields['units'];
+ : $this->fields_values['units'];
}
// Apply unit conversion always because it will also convert values to scientific notation.
$raw_units = convertUnitsRaw([
'value' => $last_value,
'units' => $units,
- 'decimals' => $fields['decimal_places']
+ 'decimals' => $this->fields_values['decimal_places']
]);
// Get the converted value (this is not the final value).
$value = $raw_units['value'];
@@ -179,7 +186,7 @@ class CControllerWidgetItemView extends CControllerWidget {
* to 10 (maximum), the value will be converted to 0.0012340000.
*/
if ($raw_units['is_numeric']) {
- $value = self::convertNumeric($value, $fields['decimal_places'], $value_type);
+ $value = self::convertNumeric($value, $this->fields_values['decimal_places'], $value_type);
}
/*
@@ -202,12 +209,12 @@ class CControllerWidgetItemView extends CControllerWidget {
);
// Show of hide change indicator for mapped value.
- if (array_key_exists(WIDGET_ITEM_SHOW_CHANGE_INDICATOR, $show)) {
- $change_indicator = self::CHANGE_INDICATOR_UP_DOWN;
+ if (array_key_exists(Widget::SHOW_CHANGE_INDICATOR, $show)) {
+ $change_indicator = Widget::CHANGE_INDICATOR_UP_DOWN;
}
}
elseif (array_key_exists(1, $history[$itemid])
- && array_key_exists(WIDGET_ITEM_SHOW_CHANGE_INDICATOR, $show)) {
+ && array_key_exists(Widget::SHOW_CHANGE_INDICATOR, $show)) {
/*
* If there is no value mapping and there is more than one value, add up or down change
* indicator. Do not show change indicator if value is the same.
@@ -215,10 +222,10 @@ class CControllerWidgetItemView extends CControllerWidget {
$prev_value = $history[$itemid][1]['value'];
if ($last_value > $prev_value) {
- $change_indicator = self::CHANGE_INDICATOR_UP;
+ $change_indicator = Widget::CHANGE_INDICATOR_UP;
}
elseif ($last_value < $prev_value) {
- $change_indicator = self::CHANGE_INDICATOR_DOWN;
+ $change_indicator = Widget::CHANGE_INDICATOR_DOWN;
}
}
break;
@@ -234,7 +241,7 @@ class CControllerWidgetItemView extends CControllerWidget {
);
if ($mapping !== false) {
- // Currently it is same as in latest data with original value in parenthesis.
+ // Currently, it is same as in the latest data with original value in parentheses.
$value = $mapping.' ('.$value.')';
}
@@ -245,11 +252,11 @@ class CControllerWidgetItemView extends CControllerWidget {
$value = str_replace("\n", " ", $value);
if (array_key_exists(1, $history[$itemid])
- && array_key_exists(WIDGET_ITEM_SHOW_CHANGE_INDICATOR, $show)) {
+ && array_key_exists(Widget::SHOW_CHANGE_INDICATOR, $show)) {
$prev_value = $history[$itemid][1]['value'];
if ($last_value !== $prev_value) {
- $change_indicator = self::CHANGE_INDICATOR_UP_DOWN;
+ $change_indicator = Widget::CHANGE_INDICATOR_UP_DOWN;
}
}
break;
@@ -259,36 +266,32 @@ class CControllerWidgetItemView extends CControllerWidget {
$value_type = ITEM_VALUE_TYPE_TEXT;
// Since there is no value, we can still show time.
- if (array_key_exists(WIDGET_ITEM_SHOW_TIME, $show)) {
+ if (array_key_exists(Widget::SHOW_TIME, $show)) {
$time = date(ZBX_FULL_DATE_TIME);
}
}
if ($this->getInput('name', '') === '') {
- if ($this->getContext() === CWidgetConfig::CONTEXT_DASHBOARD
- || $this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- && $this->hasInput('dynamic_hostid')) {
+ if (!$is_template_dashboard || $this->hasInput('dynamic_hostid')) {
// Resolve original item name when user is in normal dashboards or template dashboards view mode.
$name = $items[$itemid]['name'];
}
- if ($this->getContext() === CWidgetConfig::CONTEXT_DASHBOARD) {
+ if (!$is_template_dashboard) {
$name = $items[$itemid]['hosts'][0]['name'].NAME_DELIMITER.$name;
}
}
/*
* It doesn't matter if item has value or not, description can be resolved separately if needed. If item
- * will have value it will resolve, otherwise it will not.
+ * will have value, it will resolve, otherwise it will not.
*/
- if (array_key_exists(WIDGET_ITEM_SHOW_DESCRIPTION, $show)) {
+ if (array_key_exists(Widget::SHOW_DESCRIPTION, $show)) {
// Overwrite item name with the custom description.
- $items[$itemid]['name'] = $fields['description'];
+ $items[$itemid]['name'] = $this->fields_values['description'];
// Do not resolve macros if using template dashboard. Template dashboards only have edit mode.
- if ($this->getContext() === CWidgetConfig::CONTEXT_DASHBOARD
- || $this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD
- && $this->hasInput('dynamic_hostid')) {
+ if (!$is_template_dashboard || $this->hasInput('dynamic_hostid')) {
$items = CMacrosResolverHelper::resolveWidgetItemNames($items);
}
@@ -296,7 +299,7 @@ class CControllerWidgetItemView extends CControllerWidget {
$description = $items[$itemid]['name'];
}
- $cells = self::arrangeByCells($fields, [
+ $cells = self::arrangeByCells($this->fields_values, [
'description' => $description,
'value_type' => $value_type,
'units' => $units,
@@ -322,10 +325,10 @@ class CControllerWidgetItemView extends CControllerWidget {
$error = _('No permissions to referred object or it does not exist!');
}
- $bg_color = $fields['bg_color'];
+ $bg_color = $this->fields_values['bg_color'];
if ($last_value !== null) {
- foreach ($fields['thresholds'] as $threshold) {
+ foreach ($this->fields_values['thresholds'] as $threshold) {
if ($threshold['threshold_value'] > $last_value) {
break;
}
@@ -356,7 +359,7 @@ class CControllerWidgetItemView extends CControllerWidget {
* @return string
*/
private static function convertNumeric(string $value, int $decimals, string $value_type): string {
- if ($value >= pow(10, ZBX_FLOAT_DIG)) {
+ if ($value >= (10 ** ZBX_FLOAT_DIG)) {
return sprintf('%.'.ZBX_FLOAT_DIG.'E', $value);
}
@@ -376,118 +379,118 @@ class CControllerWidgetItemView extends CControllerWidget {
*
* @static
*
- * @param array $fields Input fields from the form.
- * @param array $fields['show'] Flags to show description, value, time and change indicator.
- * @param int $fields['desc_v_pos'] Vertical position of the description.
- * @param int $fields['desc_h_pos'] Horizontal position of the description.
- * @param int $fields['desc_bold'] Font weight of the description (0 - normal, 1 - bold).
- * @param int $fields['desc_size'] Font size of the description.
- * @param string $fields['desc_color'] Font color of the description.
- * @param int $fields['value_v_pos'] Vertical position of the value.
- * @param int $fields['value_h_pos'] Horizontal position of the value.
- * @param int $fields['value_bold'] Font weight of the value (0 - normal, 1 - bold).
- * @param int $fields['value_size'] Font size of the value.
- * @param string $fields['value_color'] Font color of the value.
- * @param int $fields['units_show'] Display units or not (0 - hide, 1 - show).
- * @param int $fields['units_pos'] Position of the units.
- * @param int $fields['units_bold'] Font weight of the units (0 - normal, 1 - bold).
- * @param int $fields['units_size'] Font size of the units.
- * @param string $fields['units_color'] Font color of the units.
- * @param int $fields['decimal_size'] Font size of the fraction.
- * @param int $fields['time_v_pos'] Vertical position of the time.
- * @param int $fields['time_h_pos'] Horizontal position of the time.
- * @param int $fields['time_bold'] Font weight of the time (0 - normal, 1 - bold).
- * @param int $fields['time_size'] Font size of the time.
- * @param string $fields['time_color'] Font color of the time.
- * @param array $values Array of pre-processed data that needs to be displayed.
- * @param string $values['description'] Item description with all macros resolved.
- * @param string $values['value_type'] Calculated value type. It can be integer or text.
- * @param string $values['units'] Units of the item. Can be empty string if nothing to show.
- * @param string|null $values['value'] Value of the item or NULL if there is no value.
- * @param string|null $values['decimals'] Decimal places or NULL if there is no decimals to show.
- * @param int|null $values['change_indicator'] Change indicator type or NULL if indicator should not be shown.
- * @param string $values['time'] Time when item received the value or current time if no data.
- * @param array $values['items'] The original array of items.
- * @param string $values['itemid'] Item ID from the host.
+ * @param array $fields_values Input fields from the form.
+ * @param array $fields_values ['show'] Flags to show description, value, time and change indicator.
+ * @param int $fields_values ['desc_v_pos'] Vertical position of the description.
+ * @param int $fields_values ['desc_h_pos'] Horizontal position of the description.
+ * @param int $fields_values ['desc_bold'] Font weight of the description (0 - normal, 1 - bold).
+ * @param int $fields_values ['desc_size'] Font size of the description.
+ * @param string $fields_values ['desc_color'] Font color of the description.
+ * @param int $fields_values ['value_v_pos'] Vertical position of the value.
+ * @param int $fields_values ['value_h_pos'] Horizontal position of the value.
+ * @param int $fields_values ['value_bold'] Font weight of the value (0 - normal, 1 - bold).
+ * @param int $fields_values ['value_size'] Font size of the value.
+ * @param string $fields_values ['value_color'] Font color of the value.
+ * @param int $fields_values ['units_show'] Display units or not (0 - hide, 1 - show).
+ * @param int $fields_values ['units_pos'] Position of the units.
+ * @param int $fields_values ['units_bold'] Font weight of the units (0 - normal, 1 - bold).
+ * @param int $fields_values ['units_size'] Font size of the units.
+ * @param string $fields_values ['units_color'] Font color of the units.
+ * @param int $fields_values ['decimal_size'] Font size of the fraction.
+ * @param int $fields_values ['time_v_pos'] Vertical position of the time.
+ * @param int $fields_values ['time_h_pos'] Horizontal position of the time.
+ * @param int $fields_values ['time_bold'] Font weight of the time (0 - normal, 1 - bold).
+ * @param int $fields_values ['time_size'] Font size of the time.
+ * @param string $fields_values ['time_color'] Font color of the time.
+ * @param array $data Array of pre-processed data that needs to be displayed.
+ * @param string $data ['description'] Item description with all macros resolved.
+ * @param string $data ['value_type'] Calculated value type. It can be integer or text.
+ * @param string $data ['units'] Units of the item. Can be empty string if nothing to show.
+ * @param string|null $data ['value'] Value of the item or NULL if there is no value.
+ * @param string|null $data ['decimals'] Decimal places or NULL if there is no decimals to show.
+ * @param int|null $data ['change_indicator'] Change indicator type or NULL if indicator should not be shown.
+ * @param string $data ['time'] Time when item received the value or current time if no data.
+ * @param array $data ['items'] The original array of items.
+ * @param string $data ['itemid'] Item ID from the host.
*
* @return array
*/
- private static function arrangeByCells(array $fields, array $values): array {
+ private static function arrangeByCells(array $fields_values, array $data): array {
$cells = [];
- $show = array_flip($fields['show']);
+ $show = array_flip($fields_values['show']);
- if (array_key_exists(WIDGET_ITEM_SHOW_DESCRIPTION, $show)) {
- $cells[$fields['desc_v_pos']][$fields['desc_h_pos']] = [
+ if (array_key_exists(Widget::SHOW_DESCRIPTION, $show)) {
+ $cells[$fields_values['desc_v_pos']][$fields_values['desc_h_pos']] = [
'item_description' => [
- 'text' => $values['description'],
- 'font_size' => $fields['desc_size'],
- 'bold' => ($fields['desc_bold'] == 1),
- 'color' => $fields['desc_color']
+ 'text' => $data['description'],
+ 'font_size' => $fields_values['desc_size'],
+ 'bold' => ($fields_values['desc_bold'] == 1),
+ 'color' => $fields_values['desc_color']
]
];
}
- if (array_key_exists(WIDGET_ITEM_SHOW_VALUE, $show)) {
+ if (array_key_exists(Widget::SHOW_VALUE, $show)) {
$item_value_cell = [
- 'value_type' => $values['value_type']
+ 'value_type' => $data['value_type']
];
- if ($fields['units_show'] == 1 && $values['units'] !== '') {
+ if ($fields_values['units_show'] == 1 && $data['units'] !== '') {
$item_value_cell['parts']['units'] = [
- 'text' => $values['units'],
- 'font_size' => $fields['units_size'],
- 'bold' => ($fields['units_bold'] == 1),
- 'color' => $fields['units_color']
+ 'text' => $data['units'],
+ 'font_size' => $fields_values['units_size'],
+ 'bold' => ($fields_values['units_bold'] == 1),
+ 'color' => $fields_values['units_color']
];
- $item_value_cell['units_pos'] = $fields['units_pos'];
+ $item_value_cell['units_pos'] = $fields_values['units_pos'];
}
$item_value_cell['parts']['value'] = [
- 'text' => $values['value'],
- 'font_size' => $fields['value_size'],
- 'bold' => ($fields['value_bold'] == 1),
- 'color' => $fields['value_color']
+ 'text' => $data['value'],
+ 'font_size' => $fields_values['value_size'],
+ 'bold' => ($fields_values['value_bold'] == 1),
+ 'color' => $fields_values['value_color']
];
- if ($values['decimals'] !== null) {
+ if ($data['decimals'] !== null) {
$item_value_cell['parts']['decimals'] = [
- 'text' => $values['decimals'],
- 'font_size' => $fields['decimal_size'],
- 'bold' => ($fields['value_bold'] == 1),
- 'color' => $fields['value_color']
+ 'text' => $data['decimals'],
+ 'font_size' => $fields_values['decimal_size'],
+ 'bold' => ($fields_values['value_bold'] == 1),
+ 'color' => $fields_values['value_color']
];
}
- $cells[$fields['value_v_pos']][$fields['value_h_pos']] = [
+ $cells[$fields_values['value_v_pos']][$fields_values['value_h_pos']] = [
'item_value' => $item_value_cell
];
}
- if (array_key_exists(WIDGET_ITEM_SHOW_CHANGE_INDICATOR, $show) && $values['change_indicator'] !== null) {
+ if (array_key_exists(Widget::SHOW_CHANGE_INDICATOR, $show) && $data['change_indicator'] !== null) {
$colors = [
- self::CHANGE_INDICATOR_UP => $fields['up_color'],
- self::CHANGE_INDICATOR_DOWN => $fields['down_color'],
- self::CHANGE_INDICATOR_UP_DOWN => $fields['updown_color']
+ Widget::CHANGE_INDICATOR_UP => $fields_values['up_color'],
+ Widget::CHANGE_INDICATOR_DOWN => $fields_values['down_color'],
+ Widget::CHANGE_INDICATOR_UP_DOWN => $fields_values['updown_color']
];
// Change indicator can be displayed with or without value.
- $cells[$fields['value_v_pos']][$fields['value_h_pos']]['item_value']['parts']['change_indicator'] = [
- 'type' => $values['change_indicator'],
- 'font_size' => ($values['decimals'] !== null)
- ? max($fields['value_size'], $fields['decimal_size'])
- : $fields['value_size'],
- 'color' => $colors[$values['change_indicator']]
+ $cells[$fields_values['value_v_pos']][$fields_values['value_h_pos']]['item_value']['parts']['change_indicator'] = [
+ 'type' => $data['change_indicator'],
+ 'font_size' => ($data['decimals'] !== null)
+ ? max($fields_values['value_size'], $fields_values['decimal_size'])
+ : $fields_values['value_size'],
+ 'color' => $colors[$data['change_indicator']]
];
}
- if (array_key_exists(WIDGET_ITEM_SHOW_TIME, $show)) {
- $cells[$fields['time_v_pos']][$fields['time_h_pos']] = [
+ if (array_key_exists(Widget::SHOW_TIME, $show)) {
+ $cells[$fields_values['time_v_pos']][$fields_values['time_h_pos']] = [
'item_time' => [
- 'text' => $values['time'],
- 'font_size' => $fields['time_size'],
- 'bold' => ($fields['time_bold'] == 1),
- 'color' => $fields['time_color']
+ 'text' => $data['time'],
+ 'font_size' => $fields_values['time_size'],
+ 'bold' => ($fields_values['time_bold'] == 1),
+ 'color' => $fields_values['time_color']
]
];
}
diff --git a/ui/js/widgets/class.widget.item.js b/ui/widgets/item/assets/js/class.widget.js
index 46c488d5ed9..df49766ae7f 100644
--- a/ui/js/widgets/class.widget.item.js
+++ b/ui/widgets/item/assets/js/class.widget.js
@@ -47,4 +47,8 @@ class CWidgetItem extends CWidget {
this._resize_observer.disconnect();
}
+
+ _hasPadding() {
+ return false;
+ }
}
diff --git a/ui/widgets/item/includes/WidgetForm.php b/ui/widgets/item/includes/WidgetForm.php
new file mode 100644
index 00000000000..a897683828f
--- /dev/null
+++ b/ui/widgets/item/includes/WidgetForm.php
@@ -0,0 +1,247 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Item\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldCheckBoxList,
+ CWidgetFieldColor,
+ CWidgetFieldIntegerBox,
+ CWidgetFieldMultiSelectItem,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldSelect,
+ CWidgetFieldTextArea,
+ CWidgetFieldTextBox,
+ CWidgetFieldThresholds
+};
+
+use Widgets\Item\Widget;
+
+/**
+ * Single item widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ private const SIZE_PERCENT_MIN = 1;
+ private const SIZE_PERCENT_MAX = 100;
+
+ private const DEFAULT_DESCRIPTION_SIZE = 15;
+ private const DEFAULT_DECIMAL_SIZE = 35;
+ private const DEFAULT_VALUE_SIZE = 45;
+ private const DEFAULT_UNITS_SIZE = 35;
+ private const DEFAULT_TIME_SIZE = 15;
+
+ public function validate(bool $strict = false): array {
+ $errors = parent::validate($strict);
+
+ // Check if one of the objects (description, value or time) occupies same space.
+ $fields = [
+ ['show' => Widget::SHOW_DESCRIPTION, 'h_pos' => 'desc_h_pos', 'v_pos' => 'desc_v_pos'],
+ ['show' => Widget::SHOW_VALUE, 'h_pos' => 'value_h_pos', 'v_pos' => 'value_v_pos'],
+ ['show' => Widget::SHOW_TIME, 'h_pos' => 'time_h_pos', 'v_pos' => 'time_v_pos']
+ ];
+
+ $fields_count = count($fields);
+ $show = $this->getFieldValue('show');
+
+ for ($i = 0; $i < $fields_count - 1; $i++) {
+ if (!in_array($fields[$i]['show'], $show)) {
+ continue;
+ }
+
+ $i_h_pos = $this->getFieldValue($fields[$i]['h_pos']);
+ $i_v_pos = $this->getFieldValue($fields[$i]['v_pos']);
+
+ for ($j = $i + 1; $j < $fields_count; $j++) {
+ if (!in_array($fields[$j]['show'], $show)) {
+ continue;
+ }
+
+ $j_h_pos = $this->getFieldValue($fields[$j]['h_pos']);
+ $j_v_pos = $this->getFieldValue($fields[$j]['v_pos']);
+
+ if ($i_h_pos == $j_h_pos && $i_v_pos == $j_v_pos) {
+ $errors[] = _('Two or more fields cannot occupy same space.');
+ break 2;
+ }
+ }
+ }
+
+ return $errors;
+ }
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldMultiSelectItem('itemid', _('Item'), $this->templateid))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ ->setMultiple(false)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBoxList('show', _('Show'), [
+ Widget::SHOW_DESCRIPTION => _('Description'),
+ Widget::SHOW_VALUE => _('Value'),
+ Widget::SHOW_TIME => _('Time'),
+ Widget::SHOW_CHANGE_INDICATOR => _('Change indicator')
+ ]))
+ ->setDefault([Widget::SHOW_DESCRIPTION, Widget::SHOW_VALUE, Widget::SHOW_TIME,
+ Widget::SHOW_CHANGE_INDICATOR
+ ])
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('adv_conf', _('Advanced configuration'))
+ )
+ ->addField(
+ (new CWidgetFieldTextArea('description', _('Description')))
+ ->setDefault('{ITEM.NAME}')
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('desc_h_pos', _('Horizontal position'), [
+ Widget::POSITION_LEFT => _('Left'),
+ Widget::POSITION_CENTER => _('Center'),
+ Widget::POSITION_RIGHT => _('Right')
+ ]))->setDefault(Widget::POSITION_CENTER)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('desc_v_pos', _('Vertical position'), [
+ Widget::POSITION_TOP => _('Top'),
+ Widget::POSITION_MIDDLE => _('Middle'),
+ Widget::POSITION_BOTTOM => _('Bottom')
+ ]))->setDefault(Widget::POSITION_BOTTOM)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('desc_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_DESCRIPTION_SIZE)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('desc_bold', _('Bold'))
+ )
+ ->addField(
+ new CWidgetFieldColor('desc_color', _('Color'))
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('decimal_places', _('Decimal places'), 0, 10))->setDefault(2)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('decimal_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_DECIMAL_SIZE)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('value_h_pos', _('Horizontal position'), [
+ Widget::POSITION_LEFT => _('Left'),
+ Widget::POSITION_CENTER => _('Center'),
+ Widget::POSITION_RIGHT => _('Right')
+ ]))->setDefault(Widget::POSITION_CENTER)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('value_v_pos', _('Vertical position'), [
+ Widget::POSITION_TOP => _('Top'),
+ Widget::POSITION_MIDDLE => _('Middle'),
+ Widget::POSITION_BOTTOM => _('Bottom')
+ ]))->setDefault(Widget::POSITION_MIDDLE)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('value_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_VALUE_SIZE)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('value_bold', _('Bold')))->setDefault(1)
+ )
+ ->addField(
+ new CWidgetFieldColor('value_color', _('Color'))
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('units_show', _('Units')))->setDefault(1)
+ )
+ ->addField(
+ new CWidgetFieldTextBox('units', _('Units'))
+ )
+ ->addField(
+ (new CWidgetFieldSelect('units_pos', _('Position'), [
+ Widget::POSITION_BEFORE => _('Before value'),
+ Widget::POSITION_ABOVE => _('Above value'),
+ Widget::POSITION_AFTER => _('After value'),
+ Widget::POSITION_BELOW => _('Below value')
+ ]))->setDefault(Widget::POSITION_AFTER)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('units_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_UNITS_SIZE)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('units_bold', _('Bold')))->setDefault(1)
+ )
+ ->addField(
+ new CWidgetFieldColor('units_color', _('Color'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('time_h_pos', _('Horizontal position'), [
+ Widget::POSITION_LEFT => _('Left'),
+ Widget::POSITION_CENTER => _('Center'),
+ Widget::POSITION_RIGHT => _('Right')
+ ]))->setDefault(Widget::POSITION_CENTER)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('time_v_pos', _('Vertical position'), [
+ Widget::POSITION_TOP => _('Top'),
+ Widget::POSITION_MIDDLE => _('Middle'),
+ Widget::POSITION_BOTTOM => _('Bottom')
+ ]))->setDefault(Widget::POSITION_TOP)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('time_size', _('Size'), self::SIZE_PERCENT_MIN, self::SIZE_PERCENT_MAX))
+ ->setDefault(self::DEFAULT_TIME_SIZE)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('time_bold', _('Bold'))
+ )
+ ->addField(
+ new CWidgetFieldColor('time_color', _('Color'))
+ )
+ ->addField(
+ new CWidgetFieldColor('up_color', _('Change indicator'))
+ )
+ ->addField(
+ new CWidgetFieldColor('down_color', _('Change indicator'))
+ )
+ ->addField(
+ new CWidgetFieldColor('updown_color', _('Change indicator'))
+ )
+ ->addField(
+ new CWidgetFieldColor('bg_color', _('Background color'))
+ )
+ ->addField(
+ new CWidgetFieldThresholds('thresholds', _('Thresholds'))
+ )
+ ->addField($this->templateid === null
+ ? new CWidgetFieldCheckBox('dynamic', _('Enable host selection'))
+ : null
+ );
+ }
+}
diff --git a/ui/widgets/item/manifest.json b/ui/widgets/item/manifest.json
new file mode 100644
index 00000000000..76e019819b4
--- /dev/null
+++ b/ui/widgets/item/manifest.json
@@ -0,0 +1,25 @@
+{
+ "manifest_version": 2.0,
+ "id": "item",
+ "type": "widget",
+ "name": "Item value",
+ "namespace": "Item",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "template_support": true,
+ "size": {
+ "width": 4,
+ "height": 3
+ },
+ "js_class": "CWidgetItem"
+ },
+ "actions": {
+ "widget.item.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/include/classes/widgets/views/js/widget.item.form.view.js.php b/ui/widgets/item/views/widget.edit.js.php
index 4da14e1f08d..0988316ae8b 100644
--- a/ui/include/classes/widgets/views/js/widget.item.form.view.js.php
+++ b/ui/widgets/item/views/widget.edit.js.php
@@ -17,25 +17,28 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-?>
+use Widgets\Item\Widget;
+
+?>
+
window.widget_item_form = new class {
init({thresholds_colors}) {
- this.form = document.getElementById('widget-dialogue-form');
+ this._form = document.getElementById('widget-dialogue-form');
- this.show_description = document.getElementById(`show_${<?= WIDGET_ITEM_SHOW_DESCRIPTION ?>}`);
- this.show_value = document.getElementById(`show_${<?= WIDGET_ITEM_SHOW_VALUE ?>}`);
- this.show_time = document.getElementById(`show_${<?= WIDGET_ITEM_SHOW_TIME ?>}`);
- this.show_change_indicator = document.getElementById(`show_${<?= WIDGET_ITEM_SHOW_CHANGE_INDICATOR ?>}`);
+ this._show_description = document.getElementById(`show_${<?= Widget::SHOW_DESCRIPTION ?>}`);
+ this._show_value = document.getElementById(`show_${<?= Widget::SHOW_VALUE ?>}`);
+ this._show_time = document.getElementById(`show_${<?= Widget::SHOW_TIME ?>}`);
+ this._show_change_indicator = document.getElementById(`show_${<?= Widget::SHOW_CHANGE_INDICATOR ?>}`);
- this.advance_configuration = document.getElementById('adv_conf');
- this.units_show = document.getElementById('units_show');
+ this._advance_configuration = document.getElementById('adv_conf');
+ this._units_show = document.getElementById('units_show');
jQuery('#itemid').on('change', () => this.updateWarningIcon());
- for (const colorpicker of this.form.querySelectorAll('.<?= ZBX_STYLE_COLOR_PICKER ?> input')) {
+ for (const colorpicker of this._form.querySelectorAll('.<?= ZBX_STYLE_COLOR_PICKER ?> input')) {
$(colorpicker).colorpicker({
appendTo: ".overlay-dialogue-body",
use_default: !colorpicker.name.includes('thresholds'),
@@ -45,7 +48,7 @@ window.widget_item_form = new class {
});
}
- const show = [this.show_description, this.show_value, this.show_time, this.show_change_indicator];
+ const show = [this._show_description, this._show_value, this._show_time, this._show_change_indicator];
for (const checkbox of show) {
checkbox.addEventListener('change', (e) => {
@@ -58,86 +61,81 @@ window.widget_item_form = new class {
});
}
- for (const checkbox of [this.advance_configuration, this.units_show]) {
+ for (const checkbox of [this._advance_configuration, this._units_show]) {
checkbox.addEventListener('change', () => this.updateForm());
}
colorPalette.setThemeColors(thresholds_colors);
this.updateForm();
- this.updateWarningIcon();
}
updateForm() {
- const show_description_row = this.advance_configuration.checked && this.show_description.checked;
- const show_value_row = this.advance_configuration.checked && this.show_value.checked;
- const show_time_row = this.advance_configuration.checked && this.show_time.checked;
- const show_change_indicator_row = this.advance_configuration.checked && this.show_change_indicator.checked;
- const show_bg_color_row = this.advance_configuration.checked;
- const show_thresholds_row = this.advance_configuration.checked;
-
- for (const element of this.form.querySelectorAll('.js-row-description')) {
+ const show_description_row = this._advance_configuration.checked && this._show_description.checked;
+ const show_value_row = this._advance_configuration.checked && this._show_value.checked;
+ const show_time_row = this._advance_configuration.checked && this._show_time.checked;
+ const show_change_indicator_row = this._advance_configuration.checked && this._show_change_indicator.checked;
+ const show_bg_color_row = this._advance_configuration.checked;
+ const show_thresholds_row = this._advance_configuration.checked;
+
+ for (const element of this._form.querySelectorAll('.fields-group-description')) {
element.style.display = show_description_row ? '' : 'none';
- }
- for (const element of this.form.querySelectorAll('.js-row-description input, .js-row-description textarea')) {
- element.disabled = !show_description_row;
+
+ for (const input of element.querySelectorAll('input, textarea')) {
+ input.disabled = !show_description_row;
+ }
}
- for (const element of this.form.querySelectorAll('.js-row-value')) {
+ for (const element of this._form.querySelectorAll('.fields-group-value')) {
element.style.display = show_value_row ? '' : 'none';
- }
- for (const element of this.form.querySelectorAll('.js-row-value input')) {
- element.disabled = !show_value_row;
+
+ for (const input of element.querySelectorAll('input')) {
+ input.disabled = !show_value_row;
+ }
}
for(const element of document.querySelectorAll('#units, #units_pos, #units_size, #units_bold, #units_color')) {
- element.disabled = !show_value_row || !this.units_show.checked;
+ element.disabled = !show_value_row || !this._units_show.checked;
}
- for (const element of this.form.querySelectorAll('.js-row-time')) {
+ for (const element of this._form.querySelectorAll('.fields-group-time')) {
element.style.display = show_time_row ? '' : 'none';
- }
- for (const element of this.form.querySelectorAll('.js-row-time input')) {
- element.disabled = !show_time_row;
+
+ for (const input of element.querySelectorAll('input')) {
+ input.disabled = !show_time_row;
+ }
}
- for (const element of this.form.querySelectorAll('.js-row-change-indicator')) {
+ for (const element of this._form.querySelectorAll('.fields-group-change-indicator')) {
element.style.display = show_change_indicator_row ? '' : 'none';
- }
- for (const element of this.form.querySelectorAll('.js-row-change-indicator input')) {
- element.disabled = !show_change_indicator_row;
+
+ for (const input of element.querySelectorAll('input')) {
+ input.disabled = !show_change_indicator_row;
+ }
}
- for (const element of this.form.querySelectorAll('.js-row-bg-color')) {
+ for (const element of this._form.querySelectorAll('.js-row-bg-color')) {
element.style.display = show_bg_color_row ? '' : 'none';
- }
- for (const element of this.form.querySelectorAll('.js-row-bg-color input')) {
- element.disabled = !show_bg_color_row;
- }
- for (const element of this.form.querySelectorAll('.js-row-thresholds')) {
- element.style.display = show_thresholds_row ? '' : 'none';
+ for (const input of element.querySelectorAll('input')) {
+ input.disabled = !show_bg_color_row;
+ }
}
- for (const element of this.form.querySelectorAll('.js-row-thresholds input')) {
- element.disabled = !show_thresholds_row;
- }
- }
- setIndicatorColor(name, color) {
- const indicator_ids = {
- up_color: 'change-indicator-up',
- down_color: 'change-indicator-down',
- updown_color: 'change-indicator-updown'
- };
+ for (const element of this._form.querySelectorAll('.js-row-thresholds')) {
+ element.style.display = show_thresholds_row ? '' : 'none';
- document.getElementById(indicator_ids[name])
- .querySelector("polygon").style.fill = (color !== '') ? `#${color}` : '';
+ for (const input of element.querySelectorAll('input')) {
+ input.disabled = !show_thresholds_row;
+ }
+ }
}
updateWarningIcon() {
- document.getElementById('item-value-thresholds-warning').style.display = 'none';
-
+ const thresholds_warning = document.getElementById('item-value-thresholds-warning');
const ms_item_data = $('#itemid').multiSelect('getData');
+ thresholds_warning.style.display = 'none';
+
if (ms_item_data.length > 0) {
const curl = new Curl('jsrpc.php', false);
curl.setArgument('method', 'item_value_type.get');
@@ -150,10 +148,10 @@ window.widget_item_form = new class {
switch (response.result) {
case '<?= ITEM_VALUE_TYPE_FLOAT ?>':
case '<?= ITEM_VALUE_TYPE_UINT64 ?>':
- document.getElementById('item-value-thresholds-warning').style.display = 'none';
+ thresholds_warning.style.display = 'none';
break;
default:
- document.getElementById('item-value-thresholds-warning').style.display = '';
+ thresholds_warning.style.display = '';
}
})
.catch((exception) => {
@@ -161,4 +159,15 @@ window.widget_item_form = new class {
});
}
}
+
+ setIndicatorColor(name, color) {
+ const indicator_ids = {
+ up_color: 'change-indicator-up',
+ down_color: 'change-indicator-down',
+ updown_color: 'change-indicator-updown'
+ };
+
+ document.getElementById(indicator_ids[name])
+ .querySelector("polygon").style.fill = (color !== '') ? `#${color}` : '';
+ }
};
diff --git a/ui/widgets/item/views/widget.edit.php b/ui/widgets/item/views/widget.edit.php
new file mode 100644
index 00000000000..b68f26acae9
--- /dev/null
+++ b/ui/widgets/item/views/widget.edit.php
@@ -0,0 +1,237 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Item value widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+use Zabbix\Widgets\Fields\CWidgetFieldColumnsList;
+
+$form = new CWidgetFormView($data);
+
+$form
+ ->addField(
+ new CWidgetFieldMultiSelectItemView($data['fields']['itemid'], $data['captions']['ms']['items']['itemid'])
+ )
+ ->addField(
+ (new CWidgetFieldCheckBoxListView($data['fields']['show']))
+ ->addClass(ZBX_STYLE_GRID_COLUMNS)
+ ->addClass(ZBX_STYLE_GRID_COLUMNS_2)
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['adv_conf'])
+ )
+ ->addFieldsGroup([
+ _('Description'),
+ makeHelpIcon([
+ _('Supported macros:'),
+ (new CList([
+ '{HOST.*}',
+ '{ITEM.*}',
+ '{INVENTORY.*}',
+ _('User macros')
+ ]))->addClass(ZBX_STYLE_LIST_DASHED)
+ ])
+ ], getDescriptionFieldsGroupViews($form, $data['fields']),
+ 'fields-group-description'
+ )
+ ->addFieldsGroup(_('Value'), getValueFieldsGroupViews($form, $data['fields']),
+ 'fields-group-value'
+ )
+ ->addFieldsGroup(_('Time'), getTimeFieldsGroupViews($form, $data['fields']),
+ 'fields-group-time'
+ )
+ ->addFieldsGroup(_('Change indicator'), getChangeIndicatorFieldsGroupViews($form, $data['fields']),
+ 'fields-group-change-indicator'
+ )
+ ->addField(
+ new CWidgetFieldColorView($data['fields']['bg_color']),
+ 'js-row-bg-color'
+ )
+ ->addField(
+ (new CWidgetFieldThresholdsView($data['fields']['thresholds']))
+ ->setHint(
+ makeWarningIcon(_('This setting applies only to numeric data.'))->setId('item-value-thresholds-warning')
+ ),
+ 'js-row-thresholds'
+ )
+ ->addField(array_key_exists('dynamic', $data['fields'])
+ ? new CWidgetFieldCheckBoxView($data['fields']['dynamic'])
+ : null
+ )
+ ->includeJsFile('widget.edit.js.php')
+ ->addJavaScript('widget_item_form.init('.json_encode([
+ 'thresholds_colors' => CWidgetFieldColumnsList::THRESHOLDS_DEFAULT_COLOR_PALETTE
+ ], JSON_THROW_ON_ERROR).');')
+ ->show();
+
+function getDescriptionFieldsGroupViews(CWidgetFormView $form, array $fields): array {
+ $description = (new CWidgetFieldTextAreaView($fields['description']))
+ ->setAdaptiveWidth(ZBX_TEXTAREA_BIG_WIDTH - 38);
+ $desc_size = new CWidgetFieldIntegerBoxView($fields['desc_size']);
+ $desc_color = new CWidgetFieldColorView($fields['desc_color']);
+
+ return [
+ $form->makeCustomField($description, [
+ new CFormField(
+ $description->getView()->setAttribute('maxlength', DB::getFieldLength('widget_field', 'value_str'))
+ )
+ ]),
+
+ new CWidgetFieldRadioButtonListView($fields['desc_h_pos']),
+
+ $form->makeCustomField($desc_size, [
+ $desc_size->getLabel(),
+ (new CFormField([$desc_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ new CWidgetFieldRadioButtonListView($fields['desc_v_pos']),
+
+ new CWidgetFieldCheckBoxView($fields['desc_bold']),
+
+ $form->makeCustomField($desc_color, [
+ $desc_color->getLabel()->addClass('offset-3'),
+ new CFormField($desc_color->getView())
+ ])
+ ];
+}
+
+function getValueFieldsGroupViews(CWidgetFormView $form, array $fields): array {
+ $decimal_size = new CWidgetFieldIntegerBoxView($fields['decimal_size']);
+ $value_size = new CWidgetFieldIntegerBoxView($fields['value_size']);
+ $value_color = new CWidgetFieldColorView($fields['value_color']);
+ $units_show = new CWidgetFieldCheckBoxView($fields['units_show']);
+ $units = (new CWidgetFieldTextBoxView($fields['units']))->setAdaptiveWidth(ZBX_TEXTAREA_BIG_WIDTH);
+ $units_size = new CWidgetFieldIntegerBoxView($fields['units_size']);
+ $units_bold = new CWidgetFieldCheckBoxView($fields['units_bold']);
+ $units_color = new CWidgetFieldColorView($fields['units_color']);
+
+ return [
+ new CWidgetFieldIntegerBoxView($fields['decimal_places']),
+
+ $form->makeCustomField($decimal_size, [
+ $decimal_size->getLabel(),
+ (new CFormField([$decimal_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ new CTag('hr'),
+
+ new CWidgetFieldRadioButtonListView($fields['value_h_pos']),
+
+ $form->makeCustomField($value_size, [
+ $value_size->getLabel(),
+ (new CFormField([$value_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ new CWidgetFieldRadioButtonListView($fields['value_v_pos']),
+
+ new CWidgetFieldCheckBoxView($fields['value_bold']),
+
+ $form->makeCustomField($value_color, [
+ $value_color->getLabel()->addClass('offset-3'),
+ new CFormField($value_color->getView())
+ ]),
+
+ new CTag('hr'),
+
+ (new CDiv([
+ $units_show->getView(),
+ $units->getLabel()
+ ]))->addClass('units-show'),
+
+ (new CFormField(
+ $units->getView()
+ ))->addClass(CFormField::ZBX_STYLE_FORM_FIELD_FLUID),
+
+ (new CWidgetFieldSelectView($fields['units_pos']))
+ ->setHelpHint(_('Position is ignored for s, uptime and unixtime units.')),
+
+ $form->makeCustomField($units_size, [
+ $units_size->getLabel(),
+ (new CFormField([$units_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ $form->makeCustomField($units_bold, [
+ $units_bold->getLabel()->addClass('offset-3'),
+ new CFormField($units_bold->getView())
+ ]),
+
+ $form->makeCustomField($units_color, [
+ $units_color->getLabel()->addClass('offset-3'),
+ new CFormField($units_color->getView())
+ ])
+ ];
+}
+
+function getTimeFieldsGroupViews(CWidgetFormView $form, array $fields): array {
+ $time_size = new CWidgetFieldIntegerBoxView($fields['time_size']);
+ $time_color = new CWidgetFieldColorView($fields['time_color']);
+
+ return [
+ new CWidgetFieldRadioButtonListView($fields['time_h_pos']),
+
+ $form->makeCustomField($time_size, [
+ $time_size->getLabel(),
+ (new CFormField([$time_size->getView(), '%']))->addClass('field-size')
+ ]),
+
+ new CWidgetFieldRadioButtonListView($fields['time_v_pos']),
+
+ new CWidgetFieldCheckBoxView($fields['time_bold']),
+
+ $form->makeCustomField($time_color, [
+ $time_color->getLabel()->addClass('offset-3'),
+ new CFormField($time_color->getView())
+ ])
+ ];
+}
+
+function getChangeIndicatorFieldsGroupViews(CWidgetFormView $form, array $fields): array {
+ $up_color = new CWidgetFieldColorView($fields['up_color']);
+ $down_color = new CWidgetFieldColorView($fields['down_color']);
+ $updown_color = new CWidgetFieldColorView($fields['updown_color']);
+
+ return [
+ (new CSvgArrow(['up' => true, 'fill_color' => $fields['up_color']->getValue()]))
+ ->setId('change-indicator-up')
+ ->setSize(14, 20),
+ $form->makeCustomField($up_color, [
+ new CFormField($up_color->getView())
+ ]),
+
+ (new CSvgArrow(['down' => true, 'fill_color' => $fields['down_color']->getValue()]))
+ ->setId('change-indicator-down')
+ ->setSize(14, 20),
+ $form->makeCustomField($down_color, [
+ new CFormField($down_color->getView())
+ ]),
+
+ (new CSvgArrow(['up' => true, 'down' => true, 'fill_color' => $fields['updown_color']->getValue()]))
+ ->setId('change-indicator-updown')
+ ->setSize(14, 20),
+ $form->makeCustomField($updown_color, [
+ new CFormField($updown_color->getView())
+ ])
+ ];
+}
diff --git a/ui/app/views/monitoring.widget.item.view.php b/ui/widgets/item/views/widget.view.php
index 87c88a0efa7..9b5eb07c08b 100644
--- a/ui/app/views/monitoring.widget.item.view.php
+++ b/ui/widgets/item/views/widget.view.php
@@ -20,23 +20,27 @@
/**
+ * Item value widget view.
+ *
* @var CView $this
* @var array $data
*/
+use Widgets\Item\Widget;
+
if ($data['error'] !== '') {
$body = (new CTableInfo())->setNoDataMessage($data['error']);
}
else {
$classes_vertical = [
- WIDGET_ITEM_POS_TOP => 'top',
- WIDGET_ITEM_POS_MIDDLE => 'middle',
- WIDGET_ITEM_POS_BOTTOM => 'bottom'
+ Widget::POSITION_TOP => 'top',
+ Widget::POSITION_MIDDLE => 'middle',
+ Widget::POSITION_BOTTOM => 'bottom'
];
$classes_horizontal = [
- WIDGET_ITEM_POS_LEFT => 'left',
- WIDGET_ITEM_POS_CENTER => 'center',
- WIDGET_ITEM_POS_RIGHT => 'right'
+ Widget::POSITION_LEFT => 'left',
+ Widget::POSITION_CENTER => 'center',
+ Widget::POSITION_RIGHT => 'right'
];
$rows = [];
@@ -97,29 +101,18 @@ else {
$rows[] = new CDiv($cols);
}
- $body = (new CDiv(
+ $body = new CDiv(
new CLink($rows, $data['url'])
- ))->addClass('dashboard-widget-item');
-
- $body->addStyle('background-color: #'.$data['bg_color'].';');
-}
-
-$output = [
- 'name' => $data['name'],
- 'body' => $body->toString()
-];
+ );
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
+ if ($data['bg_color'] !== '') {
+ $body->addStyle('background-color: #'.$data['bg_color'].';');
+ }
}
-echo json_encode($output);
-
+(new CWidgetView($data))
+ ->addItem($body)
+ ->show();
/**
* Prepare content for value cell.
@@ -137,14 +130,14 @@ function drawValueCell(array $cell_data): array {
}
// Units ABOVE value.
- if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == WIDGET_ITEM_POS_ABOVE) {
+ if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == Widget::POSITION_ABOVE) {
$item_cell[] = $units_div;
}
$item_content_div = (new CDiv())->addClass('item-value-content');
// Units BEFORE value.
- if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == WIDGET_ITEM_POS_BEFORE) {
+ if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == Widget::POSITION_BEFORE) {
$item_content_div->addItem($units_div);
}
@@ -167,7 +160,7 @@ function drawValueCell(array $cell_data): array {
}
// Units AFTER value.
- if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == WIDGET_ITEM_POS_AFTER) {
+ if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == Widget::POSITION_AFTER) {
$item_content_div->addItem($units_div);
}
@@ -181,13 +174,13 @@ function drawValueCell(array $cell_data): array {
);
switch ($change_data['type']) {
- case CControllerWidgetItemView::CHANGE_INDICATOR_UP:
+ case Widget::CHANGE_INDICATOR_UP:
$arrow_data = ['up' => true, 'fill_color' => $change_data['color']];
break;
- case CControllerWidgetItemView::CHANGE_INDICATOR_DOWN:
+ case Widget::CHANGE_INDICATOR_DOWN:
$arrow_data = ['down' => true, 'fill_color' => $change_data['color']];
break;
- case CControllerWidgetItemView::CHANGE_INDICATOR_UP_DOWN:
+ case Widget::CHANGE_INDICATOR_UP_DOWN:
$arrow_data = ['up' => true, 'down' => true, 'fill_color' => $change_data['color']];
break;
}
@@ -197,7 +190,7 @@ function drawValueCell(array $cell_data): array {
}
// Units BELOW value.
- if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == WIDGET_ITEM_POS_BELOW) {
+ if (array_key_exists('units', $cell_data['parts']) && $cell_data['units_pos'] == Widget::POSITION_BELOW) {
$item_cell[] = $units_div;
}
diff --git a/ui/widgets/map/Widget.php b/ui/widgets/map/Widget.php
new file mode 100644
index 00000000000..ef9af2ca6dd
--- /dev/null
+++ b/ui/widgets/map/Widget.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Map;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public const SOURCETYPE_MAP = 1;
+ public const SOURCETYPE_FILTER = 2;
+
+ public function getDefaultName(): string {
+ return _('Map');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetMapView.php b/ui/widgets/map/actions/WidgetView.php
index 58e2504268a..454aeec6e34 100644
--- a/ui/app/controllers/CControllerWidgetMapView.php
+++ b/ui/widgets/map/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -18,27 +18,28 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
-class CControllerWidgetMapView extends CControllerWidget {
+namespace Widgets\Map\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CMapHelper;
- $this->setType(WIDGET_MAP);
- $this->setValidationRules([
- 'name' => 'string',
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'initial_load' => 'in 0,1',
- 'fields' => 'json',
'current_sysmapid' => 'db sysmaps.sysmapid',
'unique_id' => 'string',
'previous_maps' => 'array'
]);
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
- $sysmap_data = null;
+ protected function doAction(): void {
$previous_map = null;
$sysmapid = null;
$error = null;
@@ -60,11 +61,13 @@ class CControllerWidgetMapView extends CControllerWidget {
if ($this->hasInput('current_sysmapid')) {
$sysmapid = $this->getInput('current_sysmapid');
}
- elseif (array_key_exists('sysmapid', $fields)) {
- $sysmapid = $fields['sysmapid'];
+ elseif (array_key_exists('sysmapid', $this->fields_values)) {
+ $sysmapid = $this->fields_values['sysmapid'];
}
- $sysmap_data = CMapHelper::get(($sysmapid == null) ? [] : [$sysmapid], ['unique_id' => $this->getInput('unique_id')]);
+ $sysmap_data = CMapHelper::get($sysmapid == null ? [] : [$sysmapid],
+ ['unique_id' => $this->getInput('unique_id')]
+ );
if ($sysmapid === null || $sysmap_data['id'] < 0) {
$error = _('No permissions to referred object or it does not exist!');
@@ -79,14 +82,14 @@ class CControllerWidgetMapView extends CControllerWidget {
// Pass variables to view.
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'sysmap_data' => $sysmap_data ?: [],
'widget_settings' => [
'current_sysmapid' => $sysmapid,
- 'filter_widget_reference' => array_key_exists('filter_widget_reference', $fields)
- ? $fields['filter_widget_reference']
+ 'filter_widget_reference' => array_key_exists('filter_widget_reference', $this->fields_values)
+ ? $this->fields_values['filter_widget_reference']
: null,
- 'source_type' => $fields['source_type'],
+ 'source_type' => $this->fields_values['source_type'],
'previous_map' => $previous_map,
'initial_load' => $this->getInput('initial_load', 1),
'error' => $error
diff --git a/ui/js/widgets/class.widget.map.js b/ui/widgets/map/assets/js/class.widget.js
index 03c90e2b9e0..43f3a568b44 100644
--- a/ui/js/widgets/class.widget.map.js
+++ b/ui/widgets/map/assets/js/class.widget.js
@@ -18,19 +18,26 @@
**/
-const WIDGET_SYSMAP_SOURCETYPE_MAP = 1;
-const WIDGET_SYSMAP_SOURCETYPE_FILTER = 2;
+class CWidgetMap extends CWidget {
-const WIDGET_SYSMAP_EVENT_SUBMAP_SELECT = 'widget-sysmap-submap-select';
+ static SOURCETYPE_MAP = 1;
+ static SOURCETYPE_FILTER = 2;
-class CWidgetMap extends CWidget {
+ static EVENT_SUBMAP_SELECT = 'widget-map.submap-select';
+
+ static WIDGET_NAVTREE_EVENT_MARK = 'widget-navtree.mark';
+ static WIDGET_NAVTREE_EVENT_SELECT = 'widget-navtree.select';
+
+ static getForeignReferenceFields() {
+ return ['filter_widget_reference'];
+ }
_init() {
super._init();
this._map_svg = null;
- this._source_type = this._fields.source_type || WIDGET_SYSMAP_SOURCETYPE_MAP;
+ this._source_type = this._fields.source_type || CWidgetMap.SOURCETYPE_MAP;
this._filter_widget = null;
this._filter_itemid = null;
@@ -61,8 +68,8 @@ class CWidgetMap extends CWidget {
super._doDestroy();
if (this._filter_widget) {
- this._filter_widget.off(WIDGET_NAVTREE_EVENT_MARK, this._events.mark);
- this._filter_widget.off(WIDGET_NAVTREE_EVENT_SELECT, this._events.select);
+ this._filter_widget.off(CWidgetMap.WIDGET_NAVTREE_EVENT_MARK, this._events.mark);
+ this._filter_widget.off(CWidgetMap.WIDGET_NAVTREE_EVENT_SELECT, this._events.select);
}
}
@@ -70,18 +77,17 @@ class CWidgetMap extends CWidget {
super.announceWidgets(widgets);
if (this._filter_widget !== null) {
- this._filter_widget.off(WIDGET_NAVTREE_EVENT_MARK, this._events.mark);
- this._filter_widget.off(WIDGET_NAVTREE_EVENT_SELECT, this._events.select);
+ this._filter_widget.off(CWidgetMap.WIDGET_NAVTREE_EVENT_MARK, this._events.mark);
+ this._filter_widget.off(CWidgetMap.WIDGET_NAVTREE_EVENT_SELECT, this._events.select);
}
- if (this._source_type == WIDGET_SYSMAP_SOURCETYPE_FILTER) {
+ if (this._source_type == CWidgetMap.SOURCETYPE_FILTER) {
for (const widget of widgets) {
- if (widget instanceof CWidgetNavTree
- && widget._fields.reference === this._fields.filter_widget_reference) {
+ if (widget._fields.reference === this._fields.filter_widget_reference) {
this._filter_widget = widget;
- this._filter_widget.on(WIDGET_NAVTREE_EVENT_MARK, this._events.mark);
- this._filter_widget.on(WIDGET_NAVTREE_EVENT_SELECT, this._events.select);
+ this._filter_widget.on(CWidgetMap.WIDGET_NAVTREE_EVENT_MARK, this._events.mark);
+ this._filter_widget.on(CWidgetMap.WIDGET_NAVTREE_EVENT_SELECT, this._events.select);
}
}
}
@@ -90,7 +96,7 @@ class CWidgetMap extends CWidget {
_promiseUpdate() {
if (!this._has_contents || this._map_svg === null) {
if (this._sysmapid !== null
- || this._source_type == WIDGET_SYSMAP_SOURCETYPE_MAP
+ || this._source_type == CWidgetMap.SOURCETYPE_MAP
|| this._filter_widget === null) {
return super._promiseUpdate();
}
@@ -174,7 +180,7 @@ class CWidgetMap extends CWidget {
this._navigateToMap(item.sysmapid);
- this.fire(WIDGET_SYSMAP_EVENT_SUBMAP_SELECT, {
+ this.fire(CWidgetMap.EVENT_SUBMAP_SELECT, {
sysmapid: item.sysmapid,
parent_itemid: item.parent_itemid,
back: true
@@ -221,7 +227,7 @@ class CWidgetMap extends CWidget {
this._navigateToMap(sysmapid);
- this.fire(WIDGET_SYSMAP_EVENT_SUBMAP_SELECT, {
+ this.fire(CWidgetMap.EVENT_SUBMAP_SELECT, {
sysmapid,
parent_itemid: this._filter_itemid
});
@@ -247,4 +253,8 @@ class CWidgetMap extends CWidget {
this._startUpdating();
}
+
+ _hasPadding() {
+ return true;
+ }
}
diff --git a/ui/widgets/map/includes/WidgetForm.php b/ui/widgets/map/includes/WidgetForm.php
new file mode 100644
index 00000000000..25e20c8d112
--- /dev/null
+++ b/ui/widgets/map/includes/WidgetForm.php
@@ -0,0 +1,70 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Map\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldSelectResource,
+ CWidgetFieldWidgetSelect
+};
+
+use Widgets\Map\Widget;
+
+/**
+ * Map widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ private const WIDGET_NAV_TREE = 'navtree';
+
+ public function addFields(): self {
+ $this->addField(
+ (new CWidgetFieldRadioButtonList('source_type', _('Source type'), [
+ Widget::SOURCETYPE_MAP => _('Map'),
+ Widget::SOURCETYPE_FILTER => _('Map navigation tree')
+ ]))
+ ->setDefault(Widget::SOURCETYPE_MAP)
+ ->setAction('ZABBIX.Dashboard.reloadWidgetProperties()')
+ );
+
+ if (!array_key_exists('source_type', $this->values) || $this->values['source_type'] == Widget::SOURCETYPE_MAP) {
+ $this->addField(
+ (new CWidgetFieldSelectResource('sysmapid', _('Map')))
+ ->setResourceType(CWidgetFieldSelectResource::RESOURCE_TYPE_SYSMAP)
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ );
+ }
+ else {
+ $this->addField(
+ (new CWidgetFieldWidgetSelect('filter_widget_reference', _('Filter'), self::WIDGET_NAV_TREE))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ );
+ }
+
+ return $this;
+ }
+}
diff --git a/ui/include/classes/html/CDashboardWidgetMap.php b/ui/widgets/map/includes/WidgetMap.php
index 701f0d2bed3..1c77957b14c 100644
--- a/ui/include/classes/html/CDashboardWidgetMap.php
+++ b/ui/widgets/map/includes/WidgetMap.php
@@ -19,82 +19,72 @@
**/
+namespace Widgets\Map\Includes;
+
+use CDiv,
+ CLink,
+ CSpan,
+ CTableInfo;
+
+use Widgets\Map\Widget;
+
/**
* Dashboard Map widget class. Creates all widget specific JavaScript and HTML content for map widget's view.
*/
-class CDashboardWidgetMap extends CDiv {
+class WidgetMap extends CDiv
+{
/**
* Reference of linked map navigation tree widget.
- *
- * @var string
*/
- private $filter_widget_reference;
+ private ?string $filter_widget_reference;
/**
* Map that will be linked to 'go back to [previous map name]' link in dashboard map widget.
- *
- * @var array|null - array must contain at least integer value 'sysmapid' and string 'name'.
+ * Array must contain at least integer value 'sysmapid' and string 'name'.
*/
- private $previous_map;
+ private ?array $previous_map;
/**
* Response array of CMapHelper::get() that represents currently opened map.
- *
- * @var array|null
*/
- private $sysmap_data;
+ private array $sysmap_data;
/**
* Requested sysmapid.
- *
- * @var int
*/
- private $current_sysmapid;
+ private ?int $current_sysmapid;
/**
* The type of source of map widget.
- *
- * @var int - allowed values are WIDGET_SYSMAP_SOURCETYPE_MAP and WIDGET_SYSMAP_SOURCETYPE_FILTER.
+ * Allowed values are Widget::SOURCETYPE_MAP and Widget::SOURCETYPE_FILTER.
*/
- private $source_type;
+ private int $source_type;
/**
* Represents either this is initial or repeated load of map widget.
- *
- * @var int - allowed values are 0 and 1.
- */
- private $initial_load;
-
- /**
- * Unique ID of widget.
- *
- * @var string
+ * Allowed values are 0 and 1.
*/
- private $uniqueid;
+ private int $initial_load;
/**
* The error message displayed in map widget.
- *
- * @var string|null
*/
- private $error;
+ private ?string $error;
/**
* Class constructor.
*
- * @param array $sysmap_data An array of requested map in the form created by CMapHelper::get()
- * method.
- * @param array $widget_settings An array contains widget settings.
- * @param string|null $widget_settings['error'] A string of error message or null in case if error is
- * not detected.
- * @param int $widget_settings['current_sysmapid'] An integer of requested sysmapid.
- * @param string $widget_settings['filter_widget_reference'] A string of linked map navigation tree
- * reference.
- * @param int $widget_settings['source_type'] The type of source of map widget.
- * @param array|null $widget_settings['previous_map'] Sysmapid and name of map linked as previous.
- * @param int $widget_settings['initial_load'] Integer represents either this is initial load or
- * repeated.
+ * @param array $sysmap_data An array of requested map in the form created by CMapHelper::get() method.
+ * @param array $widget_settings An array contains widget settings.
+ * string|null $widget_settings['error'] A string of error message or null in case
+ * if error is not detected.
+ * int $widget_settings['current_sysmapid'] An integer of requested sysmapid.
+ * string $widget_settings['filter_widget_reference'] A string of linked map navigation tree reference.
+ * int $widget_settings['source_type'] The type of source of map widget.
+ * array|null $widget_settings['previous_map'] Sysmapid and name of map linked as previous.
+ * int $widget_settings['initial_load'] Integer represents either this is initial load
+ * or repeated.
*/
public function __construct(array $sysmap_data, array $widget_settings) {
parent::__construct();
@@ -110,10 +100,8 @@ class CDashboardWidgetMap extends CDiv {
/**
* A javascript that is used as widget's script_inline parameter.
- *
- * @return string
*/
- public function getScriptData() {
+ public function getScriptData(): array {
$map_data = [
'current_sysmapid' => null,
'filter_widget_reference' => null,
@@ -124,7 +112,7 @@ class CDashboardWidgetMap extends CDiv {
$map_data['current_sysmapid'] = $this->current_sysmapid;
}
- if ($this->source_type == WIDGET_SYSMAP_SOURCETYPE_FILTER
+ if ($this->source_type == Widget::SOURCETYPE_FILTER
&& $this->filter_widget_reference
&& $this->initial_load) {
$map_data['filter_widget_reference'] = $this->filter_widget_reference;
@@ -133,7 +121,7 @@ class CDashboardWidgetMap extends CDiv {
if ($this->sysmap_data && $this->error === null) {
$map_data['map_options'] = $this->sysmap_data;
}
- elseif ($this->error !== null && $this->source_type == WIDGET_SYSMAP_SOURCETYPE_FILTER) {
+ elseif ($this->error !== null && $this->source_type == Widget::SOURCETYPE_FILTER) {
$map_data['error_msg'] = (new CTableInfo())
->setNoDataMessage($this->error)
->toString();
@@ -142,12 +130,15 @@ class CDashboardWidgetMap extends CDiv {
return $map_data;
}
- /**
- * Build an object of HTML used in widget content.
- */
- private function build() {
+ public function toString($destroy = true): string {
+ $this->build();
+
+ return parent::toString($destroy);
+ }
+
+ private function build(): void {
$this->addClass(ZBX_STYLE_SYSMAP);
- $this->setId(uniqid());
+ $this->setId(uniqid('', true));
if ($this->error === null) {
if ($this->previous_map) {
@@ -157,39 +148,32 @@ class CDashboardWidgetMap extends CDiv {
(new CLink(
(new CSpan())
->addClass(ZBX_STYLE_BTN_BACK_MAP)
- ->addItem((new CDiv())->addClass(ZBX_STYLE_BTN_BACK_MAP_ICON))
- ->addItem((new CDiv())
- ->addClass(ZBX_STYLE_BTN_BACK_MAP_CONTENT)
- ->addItem(_s('Go back to %1$s', $this->previous_map['name']))
+ ->addItem(
+ (new CDiv())->addClass(ZBX_STYLE_BTN_BACK_MAP_ICON)
+ )
+ ->addItem(
+ (new CDiv())
+ ->addClass(ZBX_STYLE_BTN_BACK_MAP_CONTENT)
+ ->addItem(_s('Go back to %1$s', $this->previous_map['name']))
),
- '#'
+ '#'
))->addClass('js-previous-map')
);
$this->addItem($go_back_div);
}
- $map_div = (new CDiv((new CDiv($this->sysmap_data['aria_label']))->addClass(ZBX_STYLE_INLINE_SR_ONLY)))
- ->addClass('sysmap-widget-container');
+ $map_div = (new CDiv(
+ (new CDiv($this->sysmap_data['aria_label']))->addClass(ZBX_STYLE_INLINE_SR_ONLY))
+ )->addClass('sysmap-widget-container');
$this->addStyle('position:relative;');
$this->addItem($map_div);
}
- elseif ($this->source_type == WIDGET_SYSMAP_SOURCETYPE_MAP) {
- $this->addItem((new CTableInfo())->setNoDataMessage($this->error));
+ elseif ($this->source_type == Widget::SOURCETYPE_MAP) {
+ $this->addItem(
+ (new CTableInfo())->setNoDataMessage($this->error)
+ );
}
}
-
- /**
- * Gets string representation of widget HTML content.
- *
- * @param bool $destroy
- *
- * @return string
- */
- public function toString($destroy = true) {
- $this->build();
-
- return parent::toString($destroy);
- }
}
diff --git a/ui/widgets/map/manifest.json b/ui/widgets/map/manifest.json
new file mode 100644
index 00000000000..14254a92e2d
--- /dev/null
+++ b/ui/widgets/map/manifest.json
@@ -0,0 +1,25 @@
+{
+ "manifest_version": 2.0,
+ "id": "map",
+ "type": "widget",
+ "name": "Map",
+ "namespace": "Map",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "size": {
+ "width": 18,
+ "height": 5
+ },
+ "js_class": "CWidgetMap",
+ "refresh_rate": 900
+ },
+ "actions": {
+ "widget.map.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/app/views/monitoring.widget.geomap.view.php b/ui/widgets/map/views/widget.edit.php
index 84fa6e1ee17..7c88db3a6ed 100644
--- a/ui/app/views/monitoring.widget.geomap.view.php
+++ b/ui/widgets/map/views/widget.edit.php
@@ -20,26 +20,22 @@
/**
+ * Map widget form view.
+ *
* @var CView $this
* @var array $data
*/
-$output = [
- 'name' => $data['name'],
- 'body' =>
- (new CDiv())
- ->setId($data['unique_id'])
- ->toString(),
- 'geomap' => array_intersect_key($data, array_flip(['config', 'hosts']))
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['source_type'])
+ )
+ ->addField(array_key_exists('sysmapid', $data['fields'])
+ ? new CWidgetFieldSelectResourceView($data['fields']['sysmapid'], $data['captions']['simple'])
+ : null
+ )
+ ->addField(array_key_exists('filter_widget_reference', $data['fields'])
+ ? new CWidgetFieldWidgetSelectView($data['fields']['filter_widget_reference'])
+ : null
+ )
+ ->show();
diff --git a/ui/widgets/map/views/widget.view.php b/ui/widgets/map/views/widget.view.php
new file mode 100644
index 00000000000..d74b9f53755
--- /dev/null
+++ b/ui/widgets/map/views/widget.view.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Map widget view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+use Widgets\Map\Includes\WidgetMap;
+
+$item = new WidgetMap($data['sysmap_data'], $data['widget_settings']);
+
+(new CWidgetView($data))
+ ->addItem($item)
+ ->setVar('sysmap_data', $item->getScriptData())
+ ->show();
diff --git a/ui/widgets/navtree/Widget.php b/ui/widgets/navtree/Widget.php
new file mode 100644
index 00000000000..179902bcc61
--- /dev/null
+++ b/ui/widgets/navtree/Widget.php
@@ -0,0 +1,49 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\NavTree;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ // Max depth of navigation tree.
+ public const MAX_DEPTH = 10;
+
+ public function getDefaultName(): string {
+ return _('Map navigation tree');
+ }
+
+ public function getTranslationStrings(): array {
+ return [
+ 'class.widget.js' => [
+ 'Add' => _s('Add'),
+ 'Add child element' => _s('Add child elements'),
+ 'Add multiple maps' => _s('Add multiple maps'),
+ 'Apply' => _s('Apply'),
+ 'Cancel' => _s('Cancel'),
+ 'Edit' => _s('Edit'),
+ 'Edit tree element' => _s('Edit tree element'),
+ 'Remove' => _s('Remove')
+ ]
+ ];
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetNavTreeItemEdit.php b/ui/widgets/navtree/actions/NavTreeItemEdit.php
index 07ed735aafd..97a1e5e93a4 100644
--- a/ui/app/controllers/CControllerWidgetNavTreeItemEdit.php
+++ b/ui/widgets/navtree/actions/NavTreeItemEdit.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,17 +19,25 @@
**/
-class CControllerWidgetNavTreeItemEdit extends CController {
+namespace Widgets\NavTree\Actions;
- protected function init() {
+use API,
+ CController,
+ CControllerResponseData;
+
+use Widgets\NavTree\Widget;
+
+class NavTreeItemEdit extends CController {
+
+ protected function init(): void {
$this->disableSIDValidation();
}
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
'name' => 'required|string',
'sysmapid' => 'required|db sysmaps.sysmapid',
- 'depth' => 'required|ge 1|le '.WIDGET_NAVIGATION_TREE_MAX_DEPTH
+ 'depth' => 'required|ge 1|le '.Widget::MAX_DEPTH
];
$ret = $this->validateInput($fields);
@@ -40,18 +48,18 @@ class CControllerWidgetNavTreeItemEdit extends CController {
'error' => [
'messages' => array_column(get_and_clear_messages(), 'message')
]
- ])])
+ ], JSON_THROW_ON_ERROR)])
);
}
return $ret;
}
- protected function checkPermissions() {
- return ($this->getUserType() >= USER_TYPE_ZABBIX_USER);
+ protected function checkPermissions(): bool {
+ return $this->getUserType() >= USER_TYPE_ZABBIX_USER;
}
- protected function doAction() {
+ protected function doAction(): void {
$sysmapid = $this->getInput('sysmapid');
$sysmap = ['sysmapid' => $sysmapid, 'name' => ''];
diff --git a/ui/app/controllers/CControllerWidgetNavTreeItemUpdate.php b/ui/widgets/navtree/actions/NavTreeItemUpdate.php
index ef2e47417d4..0aa8ef74316 100644
--- a/ui/app/controllers/CControllerWidgetNavTreeItemUpdate.php
+++ b/ui/widgets/navtree/actions/NavTreeItemUpdate.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -18,20 +18,27 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
-class CControllerWidgetNavTreeItemUpdate extends CController {
+namespace Widgets\NavTree\Actions;
- protected function init() {
+use API,
+ CController,
+ CControllerResponseData;
+
+use Widgets\NavTree\Widget;
+
+class NavTreeItemUpdate extends CController {
+
+ protected function init(): void {
$this->disableSIDValidation();
}
- protected function checkInput() {
+ protected function checkInput(): bool {
$fields = [
'name' => 'required|string|not_empty',
'sysmapid' => 'db sysmaps.sysmapid',
'add_submaps' => 'in 0,1',
- 'depth' => 'ge 1|le '.WIDGET_NAVIGATION_TREE_MAX_DEPTH
+ 'depth' => 'ge 1|le '.Widget::MAX_DEPTH
];
$ret = $this->validateInput($fields);
@@ -42,18 +49,18 @@ class CControllerWidgetNavTreeItemUpdate extends CController {
'error' => [
'messages' => array_column(get_and_clear_messages(), 'message')
]
- ])])
+ ], JSON_THROW_ON_ERROR)])
);
}
return $ret;
}
- protected function checkPermissions() {
- return ($this->getUserType() >= USER_TYPE_ZABBIX_USER);
+ protected function checkPermissions(): bool {
+ return $this->getUserType() >= USER_TYPE_ZABBIX_USER;
}
- protected function doAction() {
+ protected function doAction(): void {
$sysmapid = $this->getInput('sysmapid', 0);
$add_submaps = (int) $this->getInput('add_submaps', 0);
$depth = (int) $this->getInput('depth', 1);
@@ -78,7 +85,7 @@ class CControllerWidgetNavTreeItemUpdate extends CController {
$sysmapids[$sysmapid] = true;
do {
- if ($depth++ > WIDGET_NAVIGATION_TREE_MAX_DEPTH) {
+ if ($depth++ > Widget::MAX_DEPTH) {
break;
}
@@ -121,6 +128,6 @@ class CControllerWidgetNavTreeItemUpdate extends CController {
'preservekeys' => true
])
: []
- ])]));
+ ], JSON_THROW_ON_ERROR)]));
}
}
diff --git a/ui/app/controllers/CControllerWidgetNavTreeView.php b/ui/widgets/navtree/actions/WidgetView.php
index a1b5a2412d2..706789994fc 100644
--- a/ui/app/controllers/CControllerWidgetNavTreeView.php
+++ b/ui/widgets/navtree/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,25 +19,111 @@
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
+namespace Widgets\NavTree\Actions;
-class CControllerWidgetNavTreeView extends CControllerWidget {
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CProfile,
+ CSeverityHelper;
- private $problems_per_severity_tpl;
+class WidgetView extends CControllerDashboardWidgetView {
- public function __construct() {
- parent::__construct();
+ private array $problems_per_severity_tpl;
- $this->setType(WIDGET_NAV_TREE);
- $this->setValidationRules([
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'name' => 'string',
- 'widgetid' => 'db widget.widgetid',
- 'initial_load' => 'in 0,1',
- 'fields' => 'json'
+ 'fields' => 'array'
]);
}
- protected function getNumberOfProblemsBySysmap(array $navtree_items = []) {
+ protected function doAction(): void {
+ // Get list of sysmapids.
+ $sysmapids = [];
+ $navtree_items = [];
+
+ foreach ($this->fields_values['navtree'] as $id => $navtree_item) {
+ $sysmapid = array_key_exists('sysmapid', $navtree_item) ? $navtree_item['sysmapid'] : 0;
+
+ if ($sysmapid != 0) {
+ $sysmapids[$sysmapid] = true;
+ }
+
+ $navtree_items[$id] = [
+ 'parent' => $navtree_item['parent'],
+ 'sysmapid' => $sysmapid,
+ 'child_sysmapids' => []
+ ];
+ }
+
+ // Propagate item mapids to all its parent items.
+ foreach ($navtree_items as $navtree_item) {
+ $parent = $navtree_item['parent'];
+
+ while (array_key_exists($parent, $navtree_items)) {
+ if ($navtree_item['sysmapid'] != 0) {
+ $navtree_items[$parent]['child_sysmapids'][$navtree_item['sysmapid']] = true;
+ }
+ $parent = $navtree_items[$parent]['parent'];
+ }
+ }
+
+ // Get severity levels and colors and select list of sysmapids to count problems per maps.
+ $this->problems_per_severity_tpl = [];
+ $severity_config = [];
+
+ $maps_accessible = $sysmapids
+ ? API::Map()->get([
+ 'output' => [],
+ 'sysmapids' => array_keys($sysmapids),
+ 'preservekeys' => true
+ ])
+ : [];
+
+ for ($severity = TRIGGER_SEVERITY_NOT_CLASSIFIED; $severity < TRIGGER_SEVERITY_COUNT; $severity++) {
+ $this->problems_per_severity_tpl[$severity] = 0;
+ $severity_config[$severity] = [
+ 'name' => CSeverityHelper::getName($severity),
+ 'style_class' => CSeverityHelper::getStatusStyle($severity)
+ ];
+ }
+
+ $widgetid = $this->getInput('widgetid', 0);
+ $navtree_item_selected = 0;
+ $navtree_items_opened = [];
+
+ if ($widgetid) {
+ $pattern = 'web.dashboard.widget.navtree.item-%.toggle';
+ $discard_from_start = strpos($pattern, '%');
+ $discard_from_end = strlen($pattern) - $discard_from_start - 1;
+
+ foreach (CProfile::findByIdxPattern($pattern, $widgetid) as $item_opened) {
+ $navtree_items_opened[] = substr($item_opened, $discard_from_start, -$discard_from_end);
+ }
+
+ $navtree_item_selected = CProfile::get('web.dashboard.widget.navtree.item.selected', 0, $widgetid);
+ }
+
+ $this->setResponse(new CControllerResponseData([
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
+ 'navtree' => $this->fields_values['navtree'],
+ 'navtree_item_selected' => $navtree_item_selected,
+ 'navtree_items_opened' => $navtree_items_opened,
+ 'problems' => $this->getNumberOfProblemsBySysmap($navtree_items),
+ 'show_unavailable' => $this->fields_values['show_unavailable'],
+ 'maps_accessible' => array_keys($maps_accessible),
+ 'severity_config' => $severity_config,
+ 'initial_load' => $this->getInput('initial_load', 0),
+ 'user' => [
+ 'debug_mode' => $this->getDebugMode()
+ ]
+ ]));
+ }
+
+ private function getNumberOfProblemsBySysmap(array $navtree_items = []): array {
$response = [];
$sysmapids = [];
@@ -124,7 +210,7 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
break;
case SYSMAP_ELEMENT_TYPE_TRIGGER:
- foreach (zbx_objectValues($selement['elements'], 'triggerid') as $triggerid) {
+ foreach (array_column($selement['elements'], 'triggerid') as $triggerid) {
$problems_per_trigger[$triggerid] = $this->problems_per_severity_tpl;
}
break;
@@ -153,7 +239,7 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
}
// Select lowest severity to reduce amount of data returned by API.
- $severity_min = min(zbx_objectValues($sysmaps, 'severity_min'));
+ $severity_min = min(array_column($sysmaps, 'severity_min'));
// Get triggers related to host groups.
if ($host_groups) {
@@ -240,10 +326,10 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
}
}
- // Count problems occurred in triggers which are related to links.
+ // Count problems occurred in triggers which are related to the links.
foreach ($map['links'] as $link) {
$uncounted_problem_triggers = array_diff_key(
- array_flip(zbx_objectValues($link['linktriggers'], 'triggerid')),
+ array_flip(array_column($link['linktriggers'], 'triggerid')),
$problems_counted
);
@@ -253,9 +339,9 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
// Remove problems which are less important than map's min-severity.
if ($map['severity_min'] > 0) {
- foreach ($problems_to_add as $sev => $probl) {
- if ($map['severity_min'] > $sev) {
- $problems_to_add[$sev] = 0;
+ foreach (array_keys($problems_to_add) as $severity) {
+ if ($map['severity_min'] > $severity) {
+ $problems_to_add[$severity] = 0;
}
}
}
@@ -280,9 +366,9 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
return $response;
}
- protected function getElementProblems(array $selement, array $problems_per_trigger, array $sysmaps,
+ private function getElementProblems(array $selement, array $problems_per_trigger, array $sysmaps,
array $submaps_relations, $severity_min = 0, array &$problems_counted = [], array $triggers_per_hosts = [],
- array $triggers_per_host_groups = []) {
+ array $triggers_per_host_groups = []): ?array {
$problems = null;
switch ($selement['elementtype']) {
@@ -306,7 +392,7 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
case SYSMAP_ELEMENT_TYPE_TRIGGER:
$problems = $this->problems_per_severity_tpl;
$uncounted_problem_triggers = array_diff_key(
- array_flip(zbx_objectValues($selement['elements'], 'triggerid')),
+ array_flip(array_column($selement['elements'], 'triggerid')),
$problems_counted
);
foreach ($uncounted_problem_triggers as $triggerid => $var) {
@@ -343,7 +429,7 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
// Recursively find all submaps in any depth and put them into an array.
$maps_to_process[$submap_element['sysmapid']] = false;
- while (array_filter($maps_to_process, function($item) {return !$item;})) {
+ while (array_filter($maps_to_process, static function($item) {return !$item;})) {
foreach ($maps_to_process as $linked_map => $val) {
$maps_to_process[$linked_map] = true;
@@ -381,7 +467,7 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
foreach ($sysmaps[$sysmapid]['links'] as $link) {
if ($link['permission'] >= PERM_READ) {
$uncounted_problem_triggers = array_diff_key(
- array_flip(zbx_objectValues($link['linktriggers'], 'triggerid')),
+ array_flip(array_column($link['linktriggers'], 'triggerid')),
$problems_counted
);
foreach ($uncounted_problem_triggers as $triggerid => $var) {
@@ -399,9 +485,9 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
// Remove problems which are less important than $severity_min.
if ($problems !== null && $severity_min > 0) {
- foreach ($problems as $sev => $probl) {
- if ($severity_min > $sev) {
- $problems[$sev] = 0;
+ foreach (array_keys($problems) as $severity) {
+ if ($severity_min > $severity) {
+ $problems[$severity] = 0;
}
}
}
@@ -409,91 +495,6 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
return $problems;
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
- $error = null;
-
- // Get list of sysmapids.
- $sysmapids = [];
- $navtree_items = [];
- foreach ($fields['navtree'] as $id => $navtree_item) {
- $sysmapid = array_key_exists('sysmapid', $navtree_item) ? $navtree_item['sysmapid'] : 0;
- if ($sysmapid != 0) {
- $sysmapids[$sysmapid] = true;
- }
-
- $navtree_items[$id] = [
- 'parent' => $navtree_item['parent'],
- 'sysmapid' => $sysmapid,
- 'child_sysmapids' => []
- ];
- }
-
- // Propagate item mapids to all its parent items.
- foreach ($navtree_items as $navtree_item) {
- $parent = $navtree_item['parent'];
-
- while (array_key_exists($parent, $navtree_items)) {
- if ($navtree_item['sysmapid'] != 0) {
- $navtree_items[$parent]['child_sysmapids'][$navtree_item['sysmapid']] = true;
- }
- $parent = $navtree_items[$parent]['parent'];
- }
- }
-
- // Get severity levels and colors and select list of sysmapids to count problems per maps.
- $this->problems_per_severity_tpl = [];
- $severity_config = [];
-
- $maps_accessible = $sysmapids
- ? API::Map()->get([
- 'output' => [],
- 'sysmapids' => array_keys($sysmapids),
- 'preservekeys' => true
- ])
- : [];
-
- for ($severity = TRIGGER_SEVERITY_NOT_CLASSIFIED; $severity < TRIGGER_SEVERITY_COUNT; $severity++) {
- $this->problems_per_severity_tpl[$severity] = 0;
- $severity_config[$severity] = [
- 'name' => CSeverityHelper::getName($severity),
- 'style_class' => CSeverityHelper::getStatusStyle($severity)
- ];
- }
-
- $widgetid = $this->getInput('widgetid', 0);
- $navtree_item_selected = 0;
- $navtree_items_opened = [];
-
- if ($widgetid) {
- $pattern = 'web.dashboard.widget.navtree.item-%.toggle';
- $discard_from_start = strpos($pattern, '%');
- $discard_from_end = strlen($pattern) - $discard_from_start - 1;
-
- foreach (CProfile::findByIdxPattern($pattern, $widgetid) as $item_opened) {
- $navtree_items_opened[] = substr($item_opened, $discard_from_start, -$discard_from_end);
- }
-
- $navtree_item_selected = CProfile::get('web.dashboard.widget.navtree.item.selected', 0, $widgetid);
- }
-
- $this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
- 'navtree' => $fields['navtree'],
- 'navtree_item_selected' => $navtree_item_selected,
- 'navtree_items_opened' => $navtree_items_opened,
- 'problems' => $this->getNumberOfProblemsBySysmap($navtree_items),
- 'show_unavailable' => $fields['show_unavailable'],
- 'maps_accessible' => array_keys($maps_accessible),
- 'severity_config' => $severity_config,
- 'initial_load' => $this->getInput('initial_load', 0),
- 'error' => $error,
- 'user' => [
- 'debug_mode' => $this->getDebugMode()
- ]
- ]));
- }
-
/**
* Function is used to sum problems in 2 arrays.
*
@@ -507,7 +508,7 @@ class CControllerWidgetNavTreeView extends CControllerWidget {
*
* @return array Array containing problems in both arrays summed.
*/
- protected static function sumArrayValues(array $a1, array $a2) {
+ private static function sumArrayValues(array $a1, array $a2): array {
foreach ($a1 as $key => &$value) {
$value += $a2[$key];
}
diff --git a/ui/js/widgets/class.widget.navtree.js b/ui/widgets/navtree/assets/js/class.widget.js
index b105ba36f69..7ff0f26e5be 100644
--- a/ui/js/widgets/class.widget.navtree.js
+++ b/ui/widgets/navtree/assets/js/class.widget.js
@@ -18,11 +18,17 @@
**/
-const WIDGET_NAVTREE_EVENT_MARK = 'widget-navtree-mark';
-const WIDGET_NAVTREE_EVENT_SELECT = 'widget-navtree-select';
-
class CWidgetNavTree extends CWidget {
+ static EVENT_MARK = 'widget-navtree.mark';
+ static EVENT_SELECT = 'widget-navtree.select';
+
+ static WIDGET_MAP_EVENT_SUBMAP_SELECT = 'widget-map.submap-select';
+
+ static hasReferenceField() {
+ return true;
+ }
+
_init() {
super._init();
@@ -66,7 +72,7 @@ class CWidgetNavTree extends CWidget {
this._maps = [];
for (const widget of widgets) {
- if (widget instanceof CWidgetMap && this._fields.reference === widget._fields.filter_widget_reference) {
+ if (this._fields.reference === widget._fields.filter_widget_reference) {
this._maps.push(widget);
}
}
@@ -228,7 +234,7 @@ class CWidgetNavTree extends CWidget {
[this._widgetid]
);
- this.fire(WIDGET_NAVTREE_EVENT_SELECT, {
+ this.fire(CWidgetNavTree.EVENT_SELECT, {
sysmapid: this._navtree[this._navtree_item_selected].sysmapid,
itemid: this._navtree_item_selected
});
@@ -280,7 +286,7 @@ class CWidgetNavTree extends CWidget {
sysmapid = this._navtree[this._navtree_item_selected].sysmapid;
}
- this.fire(WIDGET_NAVTREE_EVENT_SELECT, {sysmapid, itemid: this._navtree_item_selected});
+ this.fire(CWidgetNavTree.EVENT_SELECT, {sysmapid, itemid: this._navtree_item_selected});
}
}
@@ -312,7 +318,7 @@ class CWidgetNavTree extends CWidget {
if (!this._is_edit_mode) {
for (const widget of this._maps) {
- widget.on(WIDGET_SYSMAP_EVENT_SUBMAP_SELECT, this._events.selectSubmap);
+ widget.on(CWidgetNavTree.WIDGET_MAP_EVENT_SUBMAP_SELECT, this._events.selectSubmap);
}
}
}
@@ -345,7 +351,7 @@ class CWidgetNavTree extends CWidget {
if (!this._is_edit_mode) {
for (const widget of this._maps) {
- widget.off(WIDGET_SYSMAP_EVENT_SUBMAP_SELECT, this._events.selectSubmap);
+ widget.off(CWidgetNavTree.WIDGET_MAP_EVENT_SUBMAP_SELECT, this._events.selectSubmap);
}
}
}
@@ -741,7 +747,7 @@ class CWidgetNavTree extends CWidget {
updateUserProfile('web.dashboard.widget.navtree.item.selected', this._navtree_item_selected, [this._widgetid]);
- this.fire(WIDGET_NAVTREE_EVENT_MARK, {itemid: this._navtree_item_selected});
+ this.fire(CWidgetNavTree.EVENT_MARK, {itemid: this._navtree_item_selected});
return true;
}
diff --git a/ui/include/classes/html/CNavigationTree.php b/ui/widgets/navtree/includes/NavigationTree.php
index 0dfaad22216..559d00237d4 100644
--- a/ui/include/classes/html/CNavigationTree.php
+++ b/ui/widgets/navtree/includes/NavigationTree.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,26 +19,28 @@
**/
-class CNavigationTree extends CDiv {
+namespace Widgets\NavTree\Includes;
- private $error;
- private $data;
+use CDiv;
+
+use Widgets\NavTree\Widget;
+
+class NavigationTree extends CDiv
+{
+
+ private array $data;
public function __construct(array $data = []) {
parent::__construct();
$this->data = $data;
- $this->setId(uniqid());
- $this->addClass(ZBX_STYLE_NAVIGATIONTREE);
+ $this
+ ->setId(uniqid('', true))
+ ->addClass(ZBX_STYLE_NAVIGATIONTREE);
}
- public function setError($value) {
- $this->error = $value;
- return $this;
- }
-
- public function getScriptData() {
+ public function getScriptData(): array {
return [
'problems' => $this->data['problems'],
'severity_levels' => $this->data['severity_config'],
@@ -48,19 +50,17 @@ class CNavigationTree extends CDiv {
'maps_accessible' => array_map('strval', $this->data['maps_accessible']),
'show_unavailable' => $this->data['show_unavailable'],
'initial_load' => $this->data['initial_load'],
- 'max_depth' => WIDGET_NAVIGATION_TREE_MAX_DEPTH
+ 'max_depth' => Widget::MAX_DEPTH
];
}
- private function build() {
- if ($this->error !== null) {
- $this->addClass(ZBX_STYLE_DISABLED);
- }
-
- $this->addItem((new CDiv())->addClass('tree'));
+ private function build(): void {
+ $this->addItem(
+ (new CDiv())->addClass('tree')
+ );
}
- public function toString($destroy = true) {
+ public function toString($destroy = true): string {
$this->build();
return parent::toString($destroy);
diff --git a/ui/widgets/navtree/includes/WidgetForm.php b/ui/widgets/navtree/includes/WidgetForm.php
new file mode 100644
index 00000000000..8cdeb8d4257
--- /dev/null
+++ b/ui/widgets/navtree/includes/WidgetForm.php
@@ -0,0 +1,49 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\NavTree\Includes;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldNavTree,
+ CWidgetFieldReference
+};
+
+/**
+ * Map navigation widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldReference()
+ )
+ ->addField(
+ new CWidgetFieldNavTree('navtree')
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('show_unavailable', _('Show unavailable maps'))
+ );
+ }
+}
diff --git a/ui/widgets/navtree/manifest.json b/ui/widgets/navtree/manifest.json
new file mode 100644
index 00000000000..59bdf4d0e30
--- /dev/null
+++ b/ui/widgets/navtree/manifest.json
@@ -0,0 +1,34 @@
+{
+ "manifest_version": 2.0,
+ "id": "navtree",
+ "type": "widget",
+ "name": "Map navigation tree",
+ "namespace": "NavTree",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "actions": {
+ "widget.navtree.view": {
+ "class": "WidgetView"
+ },
+ "widget.navtree.item.edit": {
+ "class": "NavTreeItemEdit",
+ "view": "navtreeitem.edit",
+ "layout": "layout.json"
+ },
+ "widget.navtree.item.update": {
+ "class": "NavTreeItemUpdate",
+ "layout": "layout.json"
+ }
+ },
+ "widget": {
+ "size": {
+ "width": 6,
+ "height": 5
+ },
+ "js_class": "CWidgetNavTree",
+ "refresh_rate": 900
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/app/views/js/monitoring.widget.navtreeitem.edit.js.php b/ui/widgets/navtree/views/navtreeitem.edit.js.php
index fd68a9c09a0..8a2328db2ef 100644
--- a/ui/app/views/js/monitoring.widget.navtreeitem.edit.js.php
+++ b/ui/widgets/navtree/views/navtreeitem.edit.js.php
@@ -17,13 +17,9 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-
-
-/**
- * @var CView $this
- */
?>
+
window.navtreeitem_edit_popup = new class {
init() {
jQuery('#sysmapname').on('change', (e) => {
diff --git a/ui/app/views/monitoring.widget.navtreeitem.edit.php b/ui/widgets/navtree/views/navtreeitem.edit.php
index 3cadc71947b..9abfe7ced60 100644
--- a/ui/app/views/monitoring.widget.navtreeitem.edit.php
+++ b/ui/widgets/navtree/views/navtreeitem.edit.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,47 +20,63 @@
/**
+ * Map navigation tree item edit form view.
+ *
* @var CView $this
+ * @var array $data
*/
+use Widgets\NavTree\Widget;
+
$form = (new CForm('post'))
->cleanItems()
->setId('widget-dialogue-form')
->setName('widget_dialogue_form')
->addItem((new CInput('submit', 'submit'))->addStyle('display: none;'));
-$form_list = (new CFormList())
- ->addRow(
+$form_grid = (new CFormGrid())
+ ->addItem([
(new CLabel(_('Name'), 'name'))->setAsteriskMark(),
- (new CTextBox('name', $data['name']))
- ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
- ->setAttribute('autofocus', 'autofocus')
- ->setAriaRequired()
- )
- ->addRow(_('Linked map'), [
- new CVar('sysmapid', $data['sysmap']['sysmapid']),
- (new CTextBox('sysmapname', $data['sysmap']['name'], true))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH),
- (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
- (new CButton('select', _('Select')))->addClass(ZBX_STYLE_BTN_GREY)
+ new CFormField(
+ (new CTextBox('name', $data['name']))
+ ->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH)
+ ->setAttribute('autofocus', 'autofocus')
+ ->setAriaRequired()
+ )
+ ])
+ ->addItem([
+ new CLabel(_('Linked map')),
+ new CFormField([
+ new CVar('sysmapid', $data['sysmap']['sysmapid']),
+ (new CTextBox('sysmapname', $data['sysmap']['name'], true))->setWidth(ZBX_TEXTAREA_MEDIUM_WIDTH),
+ (new CDiv())->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
+ (new CButton('select', _('Select')))->addClass(ZBX_STYLE_BTN_GREY)
+ ])
]);
-if ($data['depth'] >= WIDGET_NAVIGATION_TREE_MAX_DEPTH) {
- $form_list->addRow(null, _('Cannot add submaps. Max depth reached.'));
+if ($data['depth'] >= Widget::MAX_DEPTH) {
+ $form_grid->addItem([
+ null,
+ new CFormField(_('Cannot add submaps. Max depth reached.'))
+ ]);
}
else {
- $form_list->addRow(null, [
- new CCheckBox('add_submaps', 1),
- new CLabel(_('Add submaps'), 'add_submaps')
+ $form_grid->addItem([
+ null,
+ new CFormField([
+ new CCheckBox('add_submaps', 1),
+ new CLabel(_('Add submaps'), 'add_submaps')
+ ])
]);
}
$form
- ->addItem($form_list)
+ ->addItem($form_grid)
->addItem((new CScriptTag('navtreeitem_edit_popup.init();'))->setOnDocumentReady());
$output = [
'body' => $form->toString(),
- 'script_inline' => $this->readJsFile('monitoring.widget.navtreeitem.edit.js.php')
+ 'script_inline' => $this->readJsFile('navtreeitem.edit.js.php', null, '')
];
if ($messages = get_and_clear_messages()) {
@@ -72,4 +88,4 @@ if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
$output['debug'] = CProfiler::getInstance()->make()->toString();
}
-echo json_encode($output);
+echo json_encode($output, JSON_THROW_ON_ERROR);
diff --git a/ui/widgets/navtree/views/widget.edit.php b/ui/widgets/navtree/views/widget.edit.php
new file mode 100644
index 00000000000..9523d90642d
--- /dev/null
+++ b/ui/widgets/navtree/views/widget.edit.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Map navigation tree widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+use Zabbix\Widgets\Fields\CWidgetFieldReference;
+
+$form = (new CWidgetFormView($data))
+ ->addFieldVar($data['fields'][CWidgetFieldReference::FIELD_NAME]);
+
+// Add dynamically created fields navtree.name.<N>, navtree.parent.<N>, navtree.order.<N> and navtree.sysmapid.<N>.
+foreach ($data['fields']['navtree']->getValue() as $i => $navtree_item) {
+ $form->addVar($data['fields']['navtree']->getName().'.name.'.$i, $navtree_item['name']);
+
+ if ($navtree_item['order'] != 1) {
+ $form->addVar($data['fields']['navtree']->getName().'.order.'.$i, $navtree_item['order']);
+ }
+
+ if ($navtree_item['parent'] != 0) {
+ $form->addVar($data['fields']['navtree']->getName().'.parent.'.$i, $navtree_item['parent']);
+ }
+
+ if (array_key_exists('sysmapid', $navtree_item)) {
+ $form->addVar($data['fields']['navtree']->getName().'.sysmapid.'.$i, $navtree_item['sysmapid']);
+ }
+}
+
+$form
+ ->addField(new CWidgetFieldCheckBoxView($data['fields']['show_unavailable']))
+ ->show();
diff --git a/ui/app/views/monitoring.widget.navtree.view.php b/ui/widgets/navtree/views/widget.view.php
index 3ec7643f991..ae0eefce964 100644
--- a/ui/app/views/monitoring.widget.navtree.view.php
+++ b/ui/widgets/navtree/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,10 +20,15 @@
/**
+ * Map navigation tree widget view.
+ *
* @var CView $this
+ * @var array $data
*/
-$item = new CNavigationTree([
+use Widgets\NavTree\Includes\NavigationTree;
+
+$item = new NavigationTree([
'problems' => $data['problems'],
'severity_config' => $data['severity_config'],
'initial_load' => $data['initial_load'],
@@ -34,23 +39,7 @@ $item = new CNavigationTree([
'show_unavailable' => $data['show_unavailable']
]);
-if ($data['error'] !== null) {
- $item->setError($data['error']);
-}
-
-$output = [
- 'name' => $data['name'],
- 'body' => $item->toString(),
- 'navtree_data' => $item->getScriptData()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($item)
+ ->setVar('navtree_data', $item->getScriptData())
+ ->show();
diff --git a/ui/widgets/plaintext/Widget.php b/ui/widgets/plaintext/Widget.php
new file mode 100644
index 00000000000..e5d5e71049b
--- /dev/null
+++ b/ui/widgets/plaintext/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\PlainText;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Plain text');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetPlainTextView.php b/ui/widgets/plaintext/actions/WidgetView.php
index 71b445664d2..3eb5972458a 100644
--- a/ui/app/controllers/CControllerWidgetPlainTextView.php
+++ b/ui/widgets/plaintext/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,45 +19,50 @@
**/
-/**
- * Class for Dashboard Plain-text widget view.
- */
-class CControllerWidgetPlainTextView extends CControllerWidget {
+namespace Widgets\PlainText\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CArrayHelper,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CJsScript,
+ CPre,
+ Manager;
- $this->setType(WIDGET_PLAIN_TEXT);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
+use Zabbix\Core\CWidget;
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'dynamic_hostid' => 'db hosts.hostid'
]);
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
+ protected function doAction(): void {
$error = null;
- $dynamic_widget_name = $this->getDefaultName();
+ $dynamic_widget_name = $this->widget->getDefaultName();
$same_host = true;
$items = [];
$histories = [];
// Editing template dashboard?
- if ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD && !$this->hasInput('dynamic_hostid')) {
+ if ($this->hasInput('templateid') && !$this->hasInput('dynamic_hostid')) {
$error = _('No data.');
}
else {
- $is_template_dashboard = ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD);
- $is_dynamic_item = ($is_template_dashboard || $fields['dynamic'] == WIDGET_DYNAMIC_ITEM);
+ $is_template_dashboard = $this->hasInput('templateid');
+ $is_dynamic_item = ($is_template_dashboard || $this->fields_values['dynamic'] == CWidget::DYNAMIC_ITEM);
- if ($fields['itemids']) {
+ if ($this->fields_values['itemids']) {
$items = API::Item()->get([
'output' => ['itemid', 'name', 'key_', 'value_type', 'units', 'valuemapid'],
'selectHosts' => ['name'],
'selectValueMap' => ['mappings'],
- 'itemids' => $fields['itemids'],
+ 'itemids' => $this->fields_values['itemids'],
'webitems' => true,
'preservekeys' => true
]);
@@ -83,14 +88,14 @@ class CControllerWidgetPlainTextView extends CControllerWidget {
$error = _('No permissions to referred object or it does not exist!');
}
else {
- $histories = Manager::History()->getLastValues($items, $fields['show_lines']);
+ $histories = Manager::History()->getLastValues($items, $this->fields_values['show_lines']);
if ($histories) {
- $histories = call_user_func_array('array_merge', $histories);
+ $histories = array_merge(...$histories);
foreach ($histories as &$history) {
$history['value'] = formatHistoryValue($history['value'], $items[$history['itemid']], false);
- $history['value'] = $fields['show_as_html']
+ $history['value'] = $this->fields_values['show_as_html']
? new CJsScript($history['value'])
: new CPre($history['value']);
}
@@ -133,9 +138,9 @@ class CControllerWidgetPlainTextView extends CControllerWidget {
'name' => $this->getInput('name', $dynamic_widget_name),
'items' => $items,
'histories' => $histories,
- 'style' => $fields['style'],
+ 'style' => $this->fields_values['style'],
'same_host' => $same_host,
- 'show_lines' => $fields['show_lines'],
+ 'show_lines' => $this->fields_values['show_lines'],
'error' => $error,
'user' => [
'debug_mode' => $this->getDebugMode()
diff --git a/ui/widgets/plaintext/includes/WidgetForm.php b/ui/widgets/plaintext/includes/WidgetForm.php
new file mode 100644
index 00000000000..ae1d9135e2a
--- /dev/null
+++ b/ui/widgets/plaintext/includes/WidgetForm.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\PlainText\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldIntegerBox,
+ CWidgetFieldMultiSelectItem,
+ CWidgetFieldRadioButtonList
+};
+
+/**
+ * Plain text widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldMultiSelectItem('itemids', _('Items'), $this->templateid))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('style', _('Items location'), [
+ STYLE_LEFT => _('Left'),
+ STYLE_TOP => _('Top')
+ ]))->setDefault(STYLE_LEFT)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('show_lines', _('Show lines'), ZBX_MIN_WIDGET_LINES,
+ ZBX_MAX_WIDGET_LINES
+ ))
+ ->setDefault(ZBX_DEFAULT_WIDGET_LINES)
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('show_as_html', _('Show text as HTML'))
+ )
+ ->addField($this->templateid === null
+ ? new CWidgetFieldCheckBox('dynamic', _('Enable host selection'))
+ : null
+ );
+ }
+}
diff --git a/ui/widgets/plaintext/manifest.json b/ui/widgets/plaintext/manifest.json
new file mode 100644
index 00000000000..35344bbdc8c
--- /dev/null
+++ b/ui/widgets/plaintext/manifest.json
@@ -0,0 +1,21 @@
+{
+ "manifest_version": 2.0,
+ "id": "plaintext",
+ "type": "widget",
+ "name": "Plain text",
+ "namespace": "PlainText",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "template_support": true,
+ "size": {
+ "width": 6,
+ "height": 3
+ }
+ },
+ "actions": {
+ "widget.plaintext.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/include/classes/widgets/views/widget.systeminfo.form.view.php b/ui/widgets/plaintext/views/widget.edit.php
index 83a7fc8d19f..2da1e13b652 100644
--- a/ui/include/classes/widgets/views/widget.systeminfo.form.view.php
+++ b/ui/widgets/plaintext/views/widget.edit.php
@@ -20,29 +20,27 @@
/**
- * System information widget form view.
+ * Plain text widget form view.
*
* @var CView $this
* @var array $data
*/
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-// Show.
-$form_grid->addItem([
- CWidgetHelper::getLabel($fields['info_type']),
- new CFormField(CWidgetHelper::getRadioButtonList($fields['info_type']))
-]);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form
-];
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldMultiSelectItemView($data['fields']['itemids'], $data['captions']['ms']['items']['itemids'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['style'])
+ )
+ ->addField(
+ new CWidgetFieldIntegerBoxView($data['fields']['show_lines'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_as_html'])
+ )
+ ->addField(array_key_exists('dynamic', $data['fields'])
+ ? new CWidgetFieldCheckBoxView($data['fields']['dynamic'])
+ : null
+ )
+ ->show();
diff --git a/ui/app/views/monitoring.widget.plaintext.view.php b/ui/widgets/plaintext/views/widget.view.php
index 6da0507002e..5ddea6ea7e0 100644
--- a/ui/app/views/monitoring.widget.plaintext.view.php
+++ b/ui/widgets/plaintext/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * Plain text widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -74,9 +76,10 @@ else {
}
else {
if (($history_item === null && $row_values)
- || $history_item !== null
- && (($clock != 0 && $history_item['clock'] != $clock)
- || array_key_exists($history_item['itemid'], $row_values))) {
+ || ($history_item !== null && (
+ ($clock != 0 && $history_item['clock'] != $clock)
+ || array_key_exists($history_item['itemid'], $row_values)))
+ ) {
$table_row = [
(new CCol(zbx_date2str(DATE_TIME_FORMAT_SECONDS, $clock)))->addClass(ZBX_STYLE_NOWRAP)
];
@@ -97,18 +100,6 @@ else {
} while ($history_item !== null && $table->getNumRows() < $data['show_lines']);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/problemhosts/Widget.php b/ui/widgets/problemhosts/Widget.php
new file mode 100644
index 00000000000..038bb9a766f
--- /dev/null
+++ b/ui/widgets/problemhosts/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\ProblemHosts;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Problem hosts');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetProblemHostsView.php b/ui/widgets/problemhosts/actions/WidgetView.php
index 5bbebf8efe1..63ff9ee9947 100644
--- a/ui/app/controllers/CControllerWidgetProblemHostsView.php
+++ b/ui/widgets/problemhosts/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,41 +19,35 @@
**/
-require_once dirname(__FILE__).'/../../include/blocks.inc.php';
+namespace Widgets\ProblemHosts\Actions;
-class CControllerWidgetProblemHostsView extends CControllerWidget {
+use API,
+ CArrayHelper,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CRoleHelper;
- public function __construct() {
- parent::__construct();
+class WidgetView extends CControllerDashboardWidgetView {
- $this->setType(WIDGET_PROBLEM_HOSTS);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
-
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
-
- $filter_groupids = $fields['groupids'] ? getSubGroups($fields['groupids']) : null;
- $filter_hostids = $fields['hostids'] ? $fields['hostids'] : null;
- $filter_problem = ($fields['problem'] !== '') ? $fields['problem'] : null;
- $filter_severities = $fields['severities']
- ? $fields['severities']
- : range(TRIGGER_SEVERITY_NOT_CLASSIFIED, TRIGGER_SEVERITY_COUNT - 1);
- $filter_show_suppressed = $fields['show_suppressed'];
- $filter_ext_ack = $fields['ext_ack'];
+ protected function doAction(): void {
+ $filter_groupids = $this->fields_values['groupids'] ? getSubGroups($this->fields_values['groupids']) : null;
+ $filter_hostids = $this->fields_values['hostids'] ?: null;
+ $filter_problem = $this->fields_values['problem'] !== '' ? $this->fields_values['problem'] : null;
+ $filter_severities = $this->fields_values['severities'] ?: range(TRIGGER_SEVERITY_NOT_CLASSIFIED,
+ TRIGGER_SEVERITY_COUNT - 1
+ );
+ $filter_show_suppressed = $this->fields_values['show_suppressed'];
+ $filter_ext_ack = $this->fields_values['ext_ack'];
- if ($fields['exclude_groupids']) {
- $exclude_groupids = getSubGroups($fields['exclude_groupids']);
+ if ($this->fields_values['exclude_groupids']) {
+ $exclude_groupids = getSubGroups($this->fields_values['exclude_groupids']);
if ($filter_hostids === null) {
// Get all groups if no selected groups defined.
if ($filter_groupids === null) {
$filter_groupids = array_keys(API::HostGroup()->get([
'output' => [],
- 'real_hosts' => true,
+ 'with_hosts' => true,
'preservekeys' => true
]));
}
@@ -143,8 +137,8 @@ class CControllerWidgetProblemHostsView extends CControllerWidget {
'name' => $filter_problem
],
'severities' => $filter_severities,
- 'evaltype' => $fields['evaltype'],
- 'tags' => $fields['tags'],
+ 'evaltype' => $this->fields_values['evaltype'],
+ 'tags' => $this->fields_values['tags'],
'acknowledged' => ($filter_ext_ack == EXTACK_OPTION_UNACK) ? false : null,
'suppressed' => ($filter_show_suppressed == ZBX_PROBLEM_SUPPRESSED_FALSE) ? false : null
]);
@@ -232,14 +226,14 @@ class CControllerWidgetProblemHostsView extends CControllerWidget {
// Pass results to view.
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'filter' => [
- 'hostids' => $fields['hostids'],
- 'problem' => $fields['problem'],
+ 'hostids' => $this->fields_values['hostids'],
+ 'problem' => $this->fields_values['problem'],
'severities' => $filter_severities,
- 'show_suppressed' => $fields['show_suppressed'],
- 'hide_empty_groups' => $fields['hide_empty_groups'],
- 'ext_ack' => $fields['ext_ack']
+ 'show_suppressed' => $this->fields_values['show_suppressed'],
+ 'hide_empty_groups' => $this->fields_values['hide_empty_groups'],
+ 'ext_ack' => $this->fields_values['ext_ack']
],
'hosts_data' => $hosts_data,
'groups' => $groups,
diff --git a/ui/widgets/problemhosts/includes/WidgetForm.php b/ui/widgets/problemhosts/includes/WidgetForm.php
new file mode 100644
index 00000000000..020df198807
--- /dev/null
+++ b/ui/widgets/problemhosts/includes/WidgetForm.php
@@ -0,0 +1,86 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\ProblemHosts\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldSeverities,
+ CWidgetFieldTags,
+ CWidgetFieldTextBox
+};
+
+/**
+ * Problem hosts widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('exclude_groupids', _('Exclude host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ new CWidgetFieldTextBox('problem', _('Problem'))
+ )
+ ->addField(
+ new CWidgetFieldSeverities('severities', _('Severity'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags')
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems'))
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('hide_empty_groups', _('Hide groups without problems'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('ext_ack', _('Problem display'), [
+ EXTACK_OPTION_ALL => _('All'),
+ EXTACK_OPTION_BOTH => _('Separated'),
+ EXTACK_OPTION_UNACK => _('Unacknowledged only')
+ ]))
+ ->setDefault(EXTACK_OPTION_ALL)
+ ->setFlags(CWidgetField::FLAG_ACKNOWLEDGES)
+ );
+ }
+}
diff --git a/ui/widgets/problemhosts/manifest.json b/ui/widgets/problemhosts/manifest.json
new file mode 100644
index 00000000000..3ec6c895b77
--- /dev/null
+++ b/ui/widgets/problemhosts/manifest.json
@@ -0,0 +1,14 @@
+{
+ "manifest_version": 2.0,
+ "id": "problemhosts",
+ "type": "widget",
+ "name": "Problem hosts",
+ "namespace": "ProblemHosts",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "actions": {
+ "widget.problemhosts.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/widgets/problemhosts/views/widget.edit.php b/ui/widgets/problemhosts/views/widget.edit.php
new file mode 100644
index 00000000000..3aefd30aeb9
--- /dev/null
+++ b/ui/widgets/problemhosts/views/widget.edit.php
@@ -0,0 +1,65 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Problem hosts widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+(new CWidgetFormView($data))
+ ->addField($groupids)
+ ->addField(
+ new CWidgetFieldMultiSelectGroupView($data['fields']['exclude_groupids'],
+ $data['captions']['ms']['groups']['exclude_groupids']
+ )
+ )
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldTextBoxView($data['fields']['problem'])
+ )
+ ->addField(
+ new CWidgetFieldSeveritiesView($data['fields']['severities'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_suppressed'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['hide_empty_groups'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['ext_ack'])
+ )
+ ->show();
diff --git a/ui/app/views/monitoring.widget.problemhosts.view.php b/ui/widgets/problemhosts/views/widget.view.php
index 6057af525a5..0489e1638ff 100644
--- a/ui/app/views/monitoring.widget.problemhosts.view.php
+++ b/ui/widgets/problemhosts/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * Problem hosts widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -39,7 +41,7 @@ $table = (new CTableInfo())
$url_group = $data['allowed_ui_problems']
? (new CUrl('zabbix.php'))
->setArgument('action', 'problem.view')
- ->setArgument('filter_name', '')
+ ->setArgument('filter_name')
->setArgument('show', TRIGGERS_OPTION_RECENT_PROBLEM)
->setArgument('hostids', $data['filter']['hostids'])
->setArgument('name', $data['filter']['problem'])
@@ -51,7 +53,7 @@ $url_group = $data['allowed_ui_problems']
$url_host = $data['allowed_ui_problems']
? (new CUrl('zabbix.php'))
->setArgument('action', 'problem.view')
- ->setArgument('filter_name', '')
+ ->setArgument('filter_name')
->setArgument('show', TRIGGERS_OPTION_RECENT_PROBLEM)
->setArgument('name', $data['filter']['problem'])
->setArgument('show_suppressed', ($data['filter']['show_suppressed'] == ZBX_PROBLEM_SUPPRESSED_TRUE)
@@ -125,7 +127,7 @@ foreach ($data['groups'] as $group) {
case EXTACK_OPTION_BOTH:
if ($group['hosts_problematic_count'] != 0) {
- $unack_span = ($last_unack_count !== null) ? [$last_unack_count, ' '._('of').' '] : null;
+ $unack_span = $last_unack_count !== null ? [$last_unack_count, ' '._('of').' '] : null;
$group_row[] = (new CCol([$unack_span, $problematic_count]))
->addClass(CSeverityHelper::getStyle((int) $group['highest_severity']));
}
@@ -151,18 +153,6 @@ foreach ($data['groups'] as $group) {
$table->addRow($group_row);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/problems/Widget.php b/ui/widgets/problems/Widget.php
new file mode 100644
index 00000000000..1eea9555573
--- /dev/null
+++ b/ui/widgets/problems/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Problems;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Problems');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetProblemsView.php b/ui/widgets/problems/actions/WidgetView.php
index ee71c1ce81d..a9b0d769579 100644
--- a/ui/app/controllers/CControllerWidgetProblemsView.php
+++ b/ui/widgets/problems/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,41 +19,45 @@
**/
-class CControllerWidgetProblemsView extends CControllerWidget {
+namespace Widgets\Problems\Actions;
- public function __construct() {
- parent::__construct();
+use CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CRoleHelper,
+ CScreenProblem,
+ CSettingsHelper;
- $this->setType(WIDGET_PROBLEMS);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'initial_load' => 'in 0,1'
]);
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
-
+ protected function doAction(): void {
$data = CScreenProblem::getData([
- 'show' => $fields['show'],
- 'groupids' => $fields['groupids'],
- 'exclude_groupids' => $fields['exclude_groupids'],
- 'hostids' => $fields['hostids'],
- 'name' => $fields['problem'],
- 'severities' => $fields['severities'],
- 'evaltype' => $fields['evaltype'],
- 'tags' => $fields['tags'],
- 'show_suppressed' => $fields['show_suppressed'],
- 'unacknowledged' => $fields['unacknowledged'],
- 'show_opdata' => $fields['show_opdata']
+ 'show' => $this->fields_values['show'],
+ 'groupids' => $this->fields_values['groupids'],
+ 'exclude_groupids' => $this->fields_values['exclude_groupids'],
+ 'hostids' => $this->fields_values['hostids'],
+ 'name' => $this->fields_values['problem'],
+ 'severities' => $this->fields_values['severities'],
+ 'evaltype' => $this->fields_values['evaltype'],
+ 'tags' => $this->fields_values['tags'],
+ 'show_suppressed' => $this->fields_values['show_suppressed'],
+ 'unacknowledged' => $this->fields_values['unacknowledged'],
+ 'show_opdata' => $this->fields_values['show_opdata']
]);
- list($sortfield, $sortorder) = self::getSorting($fields['sort_triggers']);
+
+ [$sortfield, $sortorder] = self::getSorting($this->fields_values['sort_triggers']);
$data = CScreenProblem::sortData($data, $sortfield, $sortorder);
- if (count($data['problems']) > $fields['show_lines']) {
+ if (count($data['problems']) > $this->fields_values['show_lines']) {
$info = _n('%1$d of %3$d%2$s problem is shown', '%1$d of %3$d%2$s problems are shown',
- min($fields['show_lines'], count($data['problems'])),
+ min($this->fields_values['show_lines'], count($data['problems'])),
(count($data['problems']) > CSettingsHelper::get(CSettingsHelper::SEARCH_LIMIT)) ? '+' : '',
min(CSettingsHelper::get(CSettingsHelper::SEARCH_LIMIT), count($data['problems']))
);
@@ -61,17 +65,18 @@ class CControllerWidgetProblemsView extends CControllerWidget {
else {
$info = '';
}
- $data['problems'] = array_slice($data['problems'], 0, $fields['show_lines'], true);
+ $data['problems'] = array_slice($data['problems'], 0, $this->fields_values['show_lines'], true);
$data = CScreenProblem::makeData($data, [
- 'show' => $fields['show'],
+ 'show' => $this->fields_values['show'],
'details' => 0,
- 'show_opdata' => $fields['show_opdata']
+ 'show_opdata' => $this->fields_values['show_opdata']
]);
- if ($fields['show_tags']) {
- $data['tags'] = makeTags($data['problems'], true, 'eventid', $fields['show_tags'], $fields['tags'], null,
- $fields['tag_name_format'], $fields['tag_priority']
+ if ($this->fields_values['show_tags']) {
+ $data['tags'] = makeTags($data['problems'], true, 'eventid', $this->fields_values['show_tags'],
+ $this->fields_values['tags'], null, $this->fields_values['tag_name_format'],
+ $this->fields_values['tag_priority']
);
}
@@ -80,17 +85,17 @@ class CControllerWidgetProblemsView extends CControllerWidget {
}
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'initial_load' => (bool) $this->getInput('initial_load', 0),
'fields' => [
- 'show' => $fields['show'],
- 'show_lines' => $fields['show_lines'],
- 'show_tags' => $fields['show_tags'],
- 'show_timeline' => $fields['show_timeline'],
- 'tags' => $fields['tags'],
- 'tag_name_format' => $fields['tag_name_format'],
- 'tag_priority' => $fields['tag_priority'],
- 'show_opdata' => $fields['show_opdata']
+ 'show' => $this->fields_values['show'],
+ 'show_lines' => $this->fields_values['show_lines'],
+ 'show_tags' => $this->fields_values['show_tags'],
+ 'show_timeline' => $this->fields_values['show_timeline'],
+ 'tags' => $this->fields_values['tags'],
+ 'tag_name_format' => $this->fields_values['tag_name_format'],
+ 'tag_priority' => $this->fields_values['tag_priority'],
+ 'show_opdata' => $this->fields_values['show_opdata']
],
'data' => $data,
'info' => $info,
@@ -113,17 +118,7 @@ class CControllerWidgetProblemsView extends CControllerWidget {
]));
}
- /**
- * Get sorting.
- *
- * @param int $sort_triggers
- *
- * @static
- *
- * @return array
- */
- private static function getSorting($sort_triggers)
- {
+ private static function getSorting(int $sort_triggers): array {
switch ($sort_triggers) {
case SCREEN_SORT_TRIGGERS_TIME_ASC:
return ['clock', ZBX_SORT_UP];
diff --git a/ui/js/widgets/class.widget.problems.js b/ui/widgets/problems/assets/js/class.widget.js
index 74f24f02da6..74f24f02da6 100644
--- a/ui/js/widgets/class.widget.problems.js
+++ b/ui/widgets/problems/assets/js/class.widget.js
diff --git a/ui/widgets/problems/includes/WidgetForm.php b/ui/widgets/problems/includes/WidgetForm.php
new file mode 100644
index 00000000000..74ef9ea6810
--- /dev/null
+++ b/ui/widgets/problems/includes/WidgetForm.php
@@ -0,0 +1,159 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Problems\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldIntegerBox,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldSelect,
+ CWidgetFieldSeverities,
+ CWidgetFieldTags,
+ CWidgetFieldTextBox
+};
+
+/**
+ * Problems widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ private bool $show_tags = false;
+
+ protected function normalizeValues(array $values): array {
+ $values = self::convertDottedKeys($values);
+
+ if (array_key_exists('show_tags', $values)) {
+ $this->show_tags = $values['show_tags'] !== SHOW_TAGS_NONE;
+ }
+
+ return $values;
+ }
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldRadioButtonList('show', _('Show'), [
+ TRIGGERS_OPTION_RECENT_PROBLEM => _('Recent problems'),
+ TRIGGERS_OPTION_IN_PROBLEM => _('Problems'),
+ TRIGGERS_OPTION_ALL => _('History')
+ ]))->setDefault(TRIGGERS_OPTION_RECENT_PROBLEM)
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('exclude_groupids', _('Exclude host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ new CWidgetFieldTextBox('problem', _('Problem'))
+ )
+ ->addField(
+ new CWidgetFieldSeverities('severities', _('Severity'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags')
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('show_tags', _('Show tags'), [
+ SHOW_TAGS_NONE => _('None'),
+ SHOW_TAGS_1 => SHOW_TAGS_1,
+ SHOW_TAGS_2 => SHOW_TAGS_2,
+ SHOW_TAGS_3 => SHOW_TAGS_3
+ ]))->setDefault(SHOW_TAGS_NONE)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('tag_name_format', _('Tag name'), [
+ TAG_NAME_FULL => _('Full'),
+ TAG_NAME_SHORTENED => _('Shortened'),
+ TAG_NAME_NONE => _('None')
+ ]))
+ ->setDefault(TAG_NAME_FULL)
+ ->setFlags($this->show_tags ? 0x00 : CWidgetField::FLAG_DISABLED)
+ )
+ ->addField(
+ (new CWidgetFieldTextBox('tag_priority', _('Tag display priority')))
+ ->setFlags($this->show_tags ? 0x00 : CWidgetField::FLAG_DISABLED)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('show_opdata', _('Show operational data'), [
+ OPERATIONAL_DATA_SHOW_NONE => _('None'),
+ OPERATIONAL_DATA_SHOW_SEPARATELY => _('Separately'),
+ OPERATIONAL_DATA_SHOW_WITH_PROBLEM => _('With problem name')
+ ]))->setDefault(OPERATIONAL_DATA_SHOW_NONE)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems'))
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('unacknowledged', _('Show unacknowledged only')))
+ ->setFlags(CWidgetField::FLAG_ACKNOWLEDGES)
+ )
+ ->addField(
+ (new CWidgetFieldSelect('sort_triggers', _('Sort entries by'), [
+ SCREEN_SORT_TRIGGERS_TIME_DESC => _('Time').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_TIME_ASC => _('Time').' ('._('ascending').')',
+ SCREEN_SORT_TRIGGERS_SEVERITY_DESC => _('Severity').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_SEVERITY_ASC => _('Severity').' ('._('ascending').')',
+ SCREEN_SORT_TRIGGERS_NAME_DESC => _('Problem').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_NAME_ASC => _('Problem').' ('._('ascending').')',
+ SCREEN_SORT_TRIGGERS_HOST_NAME_DESC => _('Host').' ('._('descending').')',
+ SCREEN_SORT_TRIGGERS_HOST_NAME_ASC => _('Host').' ('._('ascending').')'
+ ]))->setDefault(SCREEN_SORT_TRIGGERS_TIME_DESC)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('show_timeline', _('Show timeline')))
+ ->setDefault(ZBX_TIMELINE_ON)
+ ->setFlags(
+ !array_key_exists('sort_triggers', $this->values)
+ || !array_key_exists($this->values['sort_triggers'], [
+ SCREEN_SORT_TRIGGERS_TIME_DESC => true,
+ SCREEN_SORT_TRIGGERS_TIME_ASC => true
+ ])
+ ? CWidgetField::FLAG_DISABLED
+ : 0x00
+ )
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('show_lines', _('Show lines'), ZBX_MIN_WIDGET_LINES,
+ ZBX_MAX_WIDGET_LINES
+ ))
+ ->setDefault(ZBX_DEFAULT_WIDGET_LINES)
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ );
+ }
+}
diff --git a/ui/widgets/problems/manifest.json b/ui/widgets/problems/manifest.json
new file mode 100644
index 00000000000..cf2b53558e7
--- /dev/null
+++ b/ui/widgets/problems/manifest.json
@@ -0,0 +1,20 @@
+{
+ "manifest_version": 2.0,
+ "id": "problems",
+ "type": "widget",
+ "name": "Problems",
+ "namespace": "Problems",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "js_class": "CWidgetProblems"
+ },
+ "actions": {
+ "widget.problems.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/widgets/problems/views/widget.edit.js.php b/ui/widgets/problems/views/widget.edit.js.php
new file mode 100644
index 00000000000..08a310da9d9
--- /dev/null
+++ b/ui/widgets/problems/views/widget.edit.js.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+?>
+
+
+window.widget_problems_form = new class {
+
+ init({sort_with_enabled_show_timeline}) {
+ this._sort_with_enabled_show_timeline = sort_with_enabled_show_timeline;
+
+ this._show_tags = document.getElementById('show_tags');
+ this._show_tags.addEventListener('change', () => this.updateForm());
+
+ this._sort_triggers = document.getElementById('sort_triggers');
+ this._sort_triggers.addEventListener('change', () => this.updateForm());
+
+ this._show_timeline = document.getElementById('show_timeline');
+ this._show_timeline_value = this._show_timeline.checked;
+
+ this.updateForm();
+ }
+
+ updateForm() {
+ const show_tags = this._show_tags.querySelector('input:checked').value != <?= SHOW_TAGS_NONE ?>;
+
+ document.getElementById('tag_priority').disabled = !show_tags;
+
+ for (const radio of document.querySelectorAll('#tag_name_format input')) {
+ radio.disabled = !show_tags;
+ }
+
+ if (this._sort_with_enabled_show_timeline[this._sort_triggers.value]) {
+ this._show_timeline.disabled = false;
+ this._show_timeline.checked = this._show_timeline_value;
+ }
+ else {
+ this._show_timeline.disabled = true;
+ this._show_timeline_value = this._show_timeline.checked;
+ this._show_timeline.checked = false;
+ }
+ }
+};
diff --git a/ui/widgets/problems/views/widget.edit.php b/ui/widgets/problems/views/widget.edit.php
new file mode 100644
index 00000000000..d1f4ac6bacd
--- /dev/null
+++ b/ui/widgets/problems/views/widget.edit.php
@@ -0,0 +1,93 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Problems widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['show'])
+ )
+ ->addField($groupids)
+ ->addField(
+ new CWidgetFieldMultiSelectGroupView($data['fields']['exclude_groupids'],
+ $data['captions']['ms']['groups']['exclude_groupids']
+ )
+ )
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldTextBoxView($data['fields']['problem'])
+ )
+ ->addField(
+ new CWidgetFieldSeveritiesView($data['fields']['severities'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['show_tags'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['tag_name_format'])
+ )
+ ->addField(
+ (new CWidgetFieldTextBoxView($data['fields']['tag_priority']))->setPlaceholder(_('comma-separated list'))
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['show_opdata'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_suppressed'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['unacknowledged'])
+ )
+ ->addField(
+ new CWidgetFieldSelectView($data['fields']['sort_triggers'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_timeline'])
+ )
+ ->addField(
+ new CWidgetFieldIntegerBoxView($data['fields']['show_lines'])
+ )
+ ->includeJsFile('widget.edit.js.php')
+ ->addJavaScript('widget_problems_form.init('.json_encode([
+ 'sort_with_enabled_show_timeline' => [
+ SCREEN_SORT_TRIGGERS_TIME_DESC => true,
+ SCREEN_SORT_TRIGGERS_TIME_ASC => true
+ ]
+ ], JSON_THROW_ON_ERROR).');')
+ ->show();
diff --git a/ui/app/views/monitoring.widget.problems.view.php b/ui/widgets/problems/views/widget.view.php
index 6f2a1abd30c..e0ee472868c 100644
--- a/ui/app/views/monitoring.widget.problems.view.php
+++ b/ui/widgets/problems/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * Problems widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -29,8 +31,8 @@ $sort_div = (new CSpan())->addClass(($data['sortorder'] === ZBX_SORT_DOWN) ? ZBX
$url_details = $data['allowed_ui_problems']
? (new CUrl('tr_events.php'))
- ->setArgument('triggerid', '')
- ->setArgument('eventid', '')
+ ->setArgument('triggerid')
+ ->setArgument('eventid')
: null;
$show_timeline = ($data['sortfield'] === 'clock' && $data['fields']['show_timeline']);
@@ -133,6 +135,9 @@ foreach ($data['data']['problems'] as $eventid => $problem) {
$is_acknowledged = ($problem['acknowledged'] == EVENT_ACKNOWLEDGED);
+ $cell_r_clock = '';
+ $cell_status = '';
+
if ($show_recovery_data) {
if ($problem['r_eventid'] != 0) {
$cell_r_clock = ($problem['r_clock'] >= $today)
@@ -142,9 +147,6 @@ foreach ($data['data']['problems'] as $eventid => $problem) {
->addClass(ZBX_STYLE_NOWRAP)
->addClass(ZBX_STYLE_RIGHT);
}
- else {
- $cell_r_clock = '';
- }
$cell_status = new CSpan($value_str);
@@ -188,7 +190,7 @@ foreach ($data['data']['problems'] as $eventid => $problem) {
->setHint(_s('Unsuppressed by: %1$s', $user_unsuppressed));
}
elseif ($problem['suppression_data']) {
- $info_icons[] = makeSuppressedProblemIcon($problem['suppression_data'], false);
+ $info_icons[] = makeSuppressedProblemIcon($problem['suppression_data']);
}
elseif (isEventRecentlySuppressed($problem['acknowledges'], $suppression_action)) {
// Show blinking button if suppression was made but is not yet processed by server.
@@ -327,18 +329,6 @@ if ($data['info'] !== '') {
]);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/include/disk.h b/ui/widgets/problemsbysv/Widget.php
index e544863e612..0ae2847a0af 100644
--- a/include/disk.h
+++ b/ui/widgets/problemsbysv/Widget.php
@@ -1,3 +1,4 @@
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -17,15 +18,17 @@
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-#ifndef ZABBIX_DISK_H
-#define ZABBIX_DISK_H
-#include "config.h"
+namespace Widgets\ProblemsBySv;
-#if !defined(_WINDOWS) && !defined(__MINGW32__)
-# error "This module is only available for Windows OS"
-#endif
+use Zabbix\Core\CWidget;
-zbx_uint64_t get_cluster_size(const char *path, char **error);
+class Widget extends CWidget {
-#endif /* ZABBIX_DISK_H */
+ public const SHOW_GROUPS = 0;
+ public const SHOW_TOTALS = 1;
+
+ public function getDefaultName(): string {
+ return _('Problems by severity');
+ }
+}
diff --git a/ui/widgets/problemsbysv/actions/WidgetView.php b/ui/widgets/problemsbysv/actions/WidgetView.php
new file mode 100644
index 00000000000..ff2ab751808
--- /dev/null
+++ b/ui/widgets/problemsbysv/actions/WidgetView.php
@@ -0,0 +1,77 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\ProblemsBySv\Actions;
+
+use APP,
+ CControllerDashboardWidgetView,
+ CControllerResponseData;
+
+use Widgets\ProblemsBySv\Widget;
+
+require_once APP::getRootDir().'/include/blocks.inc.php';
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
+ 'initial_load' => 'in 0,1'
+ ]);
+ }
+
+ protected function doAction(): void {
+ $filter = [
+ 'groupids' => getSubGroups($this->fields_values['groupids']),
+ 'exclude_groupids' => getSubGroups($this->fields_values['exclude_groupids']),
+ 'hostids' => $this->fields_values['hostids'],
+ 'problem' => $this->fields_values['problem'],
+ 'severities' => $this->fields_values['severities'],
+ 'show_type' => $this->fields_values['show_type'],
+ 'layout' => $this->fields_values['layout'],
+ 'show_suppressed' => $this->fields_values['show_suppressed'],
+ 'hide_empty_groups' => $this->fields_values['hide_empty_groups'],
+ 'show_opdata' => $this->fields_values['show_opdata'],
+ 'ext_ack' => $this->fields_values['ext_ack'],
+ 'show_timeline' => $this->fields_values['show_timeline'],
+ 'evaltype' => $this->fields_values['evaltype'],
+ 'tags' => $this->fields_values['tags']
+ ];
+
+ $data = getSystemStatusData($filter);
+
+ if ($filter['show_type'] == Widget::SHOW_TOTALS) {
+ $data['groups'] = getSystemStatusTotals($data);
+ }
+
+ $this->setResponse(new CControllerResponseData([
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
+ 'initial_load' => (bool) $this->getInput('initial_load', 0),
+ 'data' => $data,
+ 'filter' => $filter,
+ 'user' => [
+ 'debug_mode' => $this->getDebugMode()
+ ],
+ 'allowed' => $data['allowed']
+ ]));
+ }
+}
diff --git a/ui/js/widgets/class.widget.problemsbysv.js b/ui/widgets/problemsbysv/assets/js/class.widget.js
index 8571443e8ba..5caedf36c9b 100644
--- a/ui/js/widgets/class.widget.problemsbysv.js
+++ b/ui/widgets/problemsbysv/assets/js/class.widget.js
@@ -20,6 +20,9 @@
class CWidgetProblemsBySv extends CWidget {
+ static SHOW_GROUPS = 0;
+ static SHOW_TOTALS = 1;
+
_registerEvents() {
super._registerEvents();
@@ -61,4 +64,9 @@ class CWidgetProblemsBySv extends CWidget {
$.unsubscribe('acknowledge.create', this._events.acknowledgeCreated);
}
+
+ _hasPadding() {
+ return this._view_mode == ZBX_WIDGET_VIEW_MODE_NORMAL
+ && this._fields.show_type != CWidgetProblemsBySv.SHOW_TOTALS;
+ }
}
diff --git a/ui/widgets/problemsbysv/includes/WidgetForm.php b/ui/widgets/problemsbysv/includes/WidgetForm.php
new file mode 100644
index 00000000000..39b39533711
--- /dev/null
+++ b/ui/widgets/problemsbysv/includes/WidgetForm.php
@@ -0,0 +1,123 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\ProblemsBySv\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldSeverities,
+ CWidgetFieldTags,
+ CWidgetFieldTextBox
+};
+
+use Widgets\ProblemsBySv\Widget;
+
+/**
+ * Problems by severity widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('exclude_groupids', _('Exclude host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ new CWidgetFieldTextBox('problem', _('Problem'))
+ )
+ ->addField(
+ new CWidgetFieldSeverities('severities', _('Severity'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags')
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('show_type', _('Show'), [
+ Widget::SHOW_GROUPS => _('Host groups'),
+ Widget::SHOW_TOTALS => _('Totals')
+ ]))->setDefault(Widget::SHOW_GROUPS)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('layout', _('Layout'), [
+ STYLE_HORIZONTAL => _('Horizontal'),
+ STYLE_VERTICAL => _('Vertical')
+ ]))
+ ->setDefault(STYLE_HORIZONTAL)
+ ->setFlags(
+ !array_key_exists('show_type', $this->values)
+ || !$this->values['show_type'] == Widget::SHOW_TOTALS
+ ? CWidgetField::FLAG_DISABLED
+ : 0x00
+ )
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('show_opdata', _('Show operational data'), [
+ OPERATIONAL_DATA_SHOW_NONE => _('None'),
+ OPERATIONAL_DATA_SHOW_SEPARATELY => _('Separately'),
+ OPERATIONAL_DATA_SHOW_WITH_PROBLEM => _('With problem name')
+ ]))->setDefault(OPERATIONAL_DATA_SHOW_NONE)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems'))
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('hide_empty_groups', _('Hide groups without problems')))
+ ->setFlags(
+ array_key_exists('show_type', $this->values)
+ && $this->values['show_type'] == Widget::SHOW_TOTALS
+ ? CWidgetField::FLAG_DISABLED
+ : 0x00
+ )
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('ext_ack', _('Problem display'), [
+ EXTACK_OPTION_ALL => _('All'),
+ EXTACK_OPTION_BOTH => _('Separated'),
+ EXTACK_OPTION_UNACK => _('Unacknowledged only')
+ ]))
+ ->setDefault(EXTACK_OPTION_ALL)
+ ->setFlags(CWidgetField::FLAG_ACKNOWLEDGES)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('show_timeline', _('Show timeline')))->setDefault(ZBX_TIMELINE_ON)
+ );
+ }
+}
diff --git a/ui/widgets/problemsbysv/manifest.json b/ui/widgets/problemsbysv/manifest.json
new file mode 100644
index 00000000000..a9f29a70faf
--- /dev/null
+++ b/ui/widgets/problemsbysv/manifest.json
@@ -0,0 +1,20 @@
+{
+ "manifest_version": 2.0,
+ "id": "problemsbysv",
+ "type": "widget",
+ "name": "Problems by severity",
+ "namespace": "ProblemsBySv",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "js_class": "CWidgetProblemsBySv"
+ },
+ "actions": {
+ "widget.problemsbysv.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/widgets/problemsbysv/views/widget.edit.js.php b/ui/widgets/problemsbysv/views/widget.edit.js.php
new file mode 100644
index 00000000000..add705553ac
--- /dev/null
+++ b/ui/widgets/problemsbysv/views/widget.edit.js.php
@@ -0,0 +1,44 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+use Widgets\ProblemsBySv\Widget;
+
+?>
+
+window.widget_problemsbysv_form = new class {
+
+ init() {
+ this._show_type = document.getElementById('show_type');
+ this._show_type.addEventListener('change', () => this.updateForm());
+
+ this.updateForm();
+ }
+
+ updateForm() {
+ const show_type_totals = this._show_type.querySelector('input:checked').value == <?= Widget::SHOW_TOTALS ?>;
+
+ document.getElementById('hide_empty_groups').disabled = show_type_totals;
+
+ for (const radio of document.querySelectorAll('#layout input')) {
+ radio.disabled = !show_type_totals;
+ }
+ }
+};
diff --git a/ui/widgets/problemsbysv/views/widget.edit.php b/ui/widgets/problemsbysv/views/widget.edit.php
new file mode 100644
index 00000000000..76f97532f26
--- /dev/null
+++ b/ui/widgets/problemsbysv/views/widget.edit.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Problems by severity widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+(new CWidgetFormView($data))
+ ->addField($groupids)
+ ->addField(
+ new CWidgetFieldMultiSelectGroupView($data['fields']['exclude_groupids'],
+ $data['captions']['ms']['groups']['exclude_groupids']
+ )
+ )
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldTextBoxView($data['fields']['problem'])
+ )
+ ->addField(
+ new CWidgetFieldSeveritiesView($data['fields']['severities'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['show_type'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['layout'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['show_opdata'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_suppressed'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['hide_empty_groups'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['ext_ack'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_timeline'])
+ )
+ ->includeJsFile('widget.edit.js.php')
+ ->addJavaScript('widget_problemsbysv_form.init();')
+ ->show();
diff --git a/ui/app/views/monitoring.widget.problemsbysv.view.php b/ui/widgets/problemsbysv/views/widget.view.php
index dbff193b4a6..5c1c01e1551 100644
--- a/ui/app/views/monitoring.widget.problemsbysv.view.php
+++ b/ui/widgets/problemsbysv/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,11 +20,15 @@
/**
+ * Problems by severity widget view.
+ *
* @var CView $this
* @var array $data
*/
-if ($data['filter']['show_type'] == WIDGET_PROBLEMS_BY_SV_SHOW_TOTALS) {
+use Widgets\ProblemsBySv\Widget;
+
+if ($data['filter']['show_type'] == Widget::SHOW_TOTALS) {
$table = makeSeverityTotals($data)
->addClass(ZBX_STYLE_BY_SEVERITY_WIDGET)
->addClass(ZBX_STYLE_TOTALS_LIST)
@@ -50,36 +54,22 @@ else {
? $data['filter']['hide_empty_groups']
: 0;
- $groupurl = (new CUrl('zabbix.php'))
+ $group_url = (new CUrl('zabbix.php'))
->setArgument('action', 'problem.view')
- ->setArgument('filter_name', '')
+ ->setArgument('filter_name')
->setArgument('show', TRIGGERS_OPTION_RECENT_PROBLEM)
- ->setArgument('hostids',
- array_key_exists('hostids', $data['filter']) ? $data['filter']['hostids'] : null
- )
+ ->setArgument('hostids', array_key_exists('hostids', $data['filter']) ? $data['filter']['hostids'] : null)
->setArgument('name', array_key_exists('problem', $data['filter']) ? $data['filter']['problem'] : null)
->setArgument('show_suppressed',
(array_key_exists('show_suppressed', $data['filter']) && $data['filter']['show_suppressed'] == 1) ? 1 : null
);
- $table = makeSeverityTable($data, $hide_empty_groups, $groupurl)
+ $table = makeSeverityTable($data, $hide_empty_groups, $group_url)
->addClass(ZBX_STYLE_BY_SEVERITY_WIDGET)
->setHeader($header)
->setHeadingColumn(0);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/slareport/Widget.php b/ui/widgets/slareport/Widget.php
new file mode 100644
index 00000000000..55156007717
--- /dev/null
+++ b/ui/widgets/slareport/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\SlaReport;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('SLA report');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetSlaReportView.php b/ui/widgets/slareport/actions/WidgetView.php
index 18abbac170a..5944ea060f2 100644
--- a/ui/app/controllers/CControllerWidgetSlaReportView.php
+++ b/ui/widgets/slareport/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,30 +19,28 @@
**/
-class CControllerWidgetSlaReportView extends CControllerWidget {
+namespace Widgets\SlaReport\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CParser,
+ CRangeTimeParser,
+ CRoleHelper,
+ CSettingsHelper,
+ CTimezoneHelper,
+ CWebUser,
+ DateTimeZone;
- $this->setType(WIDGET_SLA_REPORT);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
+class WidgetView extends CControllerDashboardWidgetView {
- /**
- * @throws APIException
- */
protected function doAction(): void {
- $fields = $this->getForm()->getFieldsData();
-
$data = [
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'has_access' => [
CRoleHelper::ACTIONS_MANAGE_SLA => $this->checkAccess(CRoleHelper::ACTIONS_MANAGE_SLA)
],
- 'has_serviceid' => (bool) $fields['serviceid'],
+ 'has_serviceid' => (bool) $this->fields_values['serviceid'],
'has_permissions_error' => false,
'rows_per_page' => CWebUser::$data['rows_per_page'],
'search_limit' => CSettingsHelper::get(CSettingsHelper::SEARCH_LIMIT),
@@ -51,10 +49,10 @@ class CControllerWidgetSlaReportView extends CControllerWidget {
]
];
- $db_slas = $fields['slaid']
+ $db_slas = $this->fields_values['slaid']
? API::Sla()->get([
'output' => ['slaid', 'name', 'period', 'slo', 'timezone', 'status'],
- 'slaids' => $fields['slaid']
+ 'slaids' => $this->fields_values['slaid']
])
: [];
@@ -64,7 +62,7 @@ class CControllerWidgetSlaReportView extends CControllerWidget {
if ($data['sla']['status'] == ZBX_SLA_STATUS_ENABLED) {
$data['services'] = API::Service()->get([
'output' => ['name'],
- 'serviceids' => $fields['serviceid'] ?: null,
+ 'serviceids' => $this->fields_values['serviceid'] ?: null,
'slaids' => $data['sla']['slaid'],
'sortfield' => 'name',
'sortorder' => ZBX_SORT_UP,
@@ -72,10 +70,10 @@ class CControllerWidgetSlaReportView extends CControllerWidget {
'preservekeys' => true
]);
- if ($fields['serviceid'] && !$data['services']) {
+ if ($this->fields_values['serviceid'] && !$data['services']) {
$service_accessible = API::Service()->get([
'output' => [],
- 'serviceids' => $fields['serviceid']
+ 'serviceids' => $this->fields_values['serviceid']
]);
if (!$service_accessible) {
@@ -91,8 +89,8 @@ class CControllerWidgetSlaReportView extends CControllerWidget {
$range_time_parser = new CRangeTimeParser();
- if ($fields['date_from'] !== ''
- && $range_time_parser->parse($fields['date_from']) == CParser::PARSE_SUCCESS) {
+ if ($this->fields_values['date_from'] !== ''
+ && $range_time_parser->parse($this->fields_values['date_from']) == CParser::PARSE_SUCCESS) {
$period_from = $range_time_parser->getDateTime(true, $timezone)->getTimestamp();
if ($period_from < 0 || $period_from > ZBX_MAX_DATE) {
@@ -105,8 +103,8 @@ class CControllerWidgetSlaReportView extends CControllerWidget {
$period_from = null;
}
- if ($fields['date_to'] !== ''
- && $range_time_parser->parse($fields['date_to']) == CParser::PARSE_SUCCESS) {
+ if ($this->fields_values['date_to'] !== ''
+ && $range_time_parser->parse($this->fields_values['date_to']) == CParser::PARSE_SUCCESS) {
$period_to = $range_time_parser->getDateTime(false, $timezone)->getTimestamp();
if ($period_to < 0 || $period_to > ZBX_MAX_DATE) {
@@ -122,7 +120,7 @@ class CControllerWidgetSlaReportView extends CControllerWidget {
$data['sli'] = API::Sla()->getSli([
'slaid' => $data['sla']['slaid'],
'serviceids' => array_slice(array_keys($data['services']), 0, $data['rows_per_page']),
- 'periods' => $fields['show_periods'] !== '' ? $fields['show_periods'] : null,
+ 'periods' => $this->fields_values['show_periods'] !== '' ? $this->fields_values['show_periods'] : null,
'period_from' => $period_from,
'period_to' => $period_to
]);
diff --git a/ui/widgets/slareport/includes/WidgetForm.php b/ui/widgets/slareport/includes/WidgetForm.php
new file mode 100644
index 00000000000..b36086ce6cd
--- /dev/null
+++ b/ui/widgets/slareport/includes/WidgetForm.php
@@ -0,0 +1,127 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\SlaReport\Includes;
+
+use API,
+ CAbsoluteTimeParser,
+ CParser,
+ CTimezoneHelper,
+ DateTimeZone;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldDatePicker,
+ CWidgetFieldIntegerBox,
+ CWidgetFieldMultiSelectService,
+ CWidgetFieldMultiSelectSla
+};
+
+/**
+ * SLA report widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function validate(bool $strict = false): array {
+ if ($errors = parent::validate($strict)) {
+ return $errors;
+ }
+
+ $errors = [];
+
+ $slaids = $this->getFieldValue('slaid');
+
+ $slas = $slaids
+ ? API::Sla()->get([
+ 'output' => ['timezone'],
+ 'slaids' => $slaids,
+ 'filter' => [
+ 'status' => ZBX_SLA_STATUS_ENABLED
+ ]
+ ])
+ : [];
+
+ $sla = $slas ? $slas[0] : null;
+
+ $timezone = new DateTimeZone($sla !== null && $sla['timezone'] !== ZBX_DEFAULT_TIMEZONE
+ ? $sla['timezone']
+ : CTimezoneHelper::getSystemTimezone()
+ );
+
+ $absolute_time_parser = new CAbsoluteTimeParser();
+
+ $period_from = null;
+
+ if ($absolute_time_parser->parse($this->getFieldValue('date_from')) == CParser::PARSE_SUCCESS) {
+ $period_from = $absolute_time_parser->getDateTime(true, $timezone)->getTimestamp();
+
+ if ($period_from < 0 || $period_from > ZBX_MAX_DATE) {
+ $period_from = null;
+
+ $errors[] = _s('Incorrect value for field "%1$s": %2$s.', _s('From'), _('a date is expected'));
+ }
+ }
+
+ $period_to = null;
+
+ if ($absolute_time_parser->parse($this->getFieldValue('date_to')) == CParser::PARSE_SUCCESS) {
+ $period_to = $absolute_time_parser->getDateTime(false, $timezone)->getTimestamp();
+
+ if ($period_to < 0 || $period_to > ZBX_MAX_DATE) {
+ $period_to = null;
+
+ $errors[] = _s('Incorrect value for field "%1$s": %2$s.', _s('To'), _('a date is expected'));
+ }
+ }
+
+ if ($period_from !== null && $period_to !== null && $period_to <= $period_from) {
+ $errors[] = _s('"%1$s" date must be less than "%2$s" date.', _('From'), _('To'));
+ }
+
+ return $errors;
+ }
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldMultiSelectSla('slaid', _('SLA')))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ ->setMultiple(false)
+ )
+ ->addField(
+ (new CWidgetFieldMultiSelectService('serviceid', _('Service')))->setMultiple(false)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('show_periods', _('Show periods'), 1, ZBX_SLA_MAX_REPORTING_PERIODS))
+ ->setDefault(ZBX_SLA_DEFAULT_REPORTING_PERIODS)
+ )
+ ->addField(
+ new CWidgetFieldDatePicker('date_from', _('From'), true)
+ )
+ ->addField(
+ new CWidgetFieldDatePicker('date_to', _('To'), true)
+ );
+ }
+}
diff --git a/ui/widgets/slareport/manifest.json b/ui/widgets/slareport/manifest.json
new file mode 100644
index 00000000000..88099d3b193
--- /dev/null
+++ b/ui/widgets/slareport/manifest.json
@@ -0,0 +1,17 @@
+{
+ "manifest_version": 2.0,
+ "id": "slareport",
+ "type": "widget",
+ "name": "SLA report",
+ "namespace": "SlaReport",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "refresh_rate": 0
+ },
+ "actions": {
+ "widget.slareport.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/include/classes/widgets/views/js/widget.slareport.form.view.js.php b/ui/widgets/slareport/views/widget.edit.js.php
index f1ace3f7ddb..647484b88ed 100644
--- a/ui/include/classes/widgets/views/js/widget.slareport.form.view.js.php
+++ b/ui/widgets/slareport/views/widget.edit.js.php
@@ -23,14 +23,14 @@
window.widget_slareport_form = new class {
init({serviceid_field_id}) {
- this.$service = jQuery(`#${serviceid_field_id}`);
- this.$service.multiSelect('getSelectButton').addEventListener('click', () => this.selectService());
+ this._$service = jQuery(`#${serviceid_field_id}`);
+ this._$service.multiSelect('getSelectButton').addEventListener('click', () => this.selectService());
}
selectService() {
const exclude_serviceids = [];
- for (const service of this.$service.multiSelect('getData')) {
+ for (const service of this._$service.multiSelect('getData')) {
exclude_serviceids.push(service.id);
}
@@ -47,7 +47,7 @@ window.widget_slareport_form = new class {
data.push({id: service.serviceid, name: service.name});
}
- this.$service.multiSelect('addData', data);
+ this._$service.multiSelect('addData', data);
});
}
};
diff --git a/ui/widgets/slareport/views/widget.edit.php b/ui/widgets/slareport/views/widget.edit.php
new file mode 100644
index 00000000000..700de0afe80
--- /dev/null
+++ b/ui/widgets/slareport/views/widget.edit.php
@@ -0,0 +1,55 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * SLA report widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldMultiSelectSlaView($data['fields']['slaid'], $data['captions']['ms']['slas']['slaid'])
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectServiceView($data['fields']['serviceid'],
+ $data['captions']['ms']['services']['serviceid']
+ )
+ )
+ ->addField(
+ new CWidgetFieldIntegerBoxView($data['fields']['show_periods'])
+ )
+ ->addField(
+ (new CWidgetFieldDatePickerView($data['fields']['date_from']))
+ ->setDateFormat(ZBX_DATE)
+ ->setPlaceholder(_('YYYY-MM-DD'))
+ )
+ ->addField(
+ (new CWidgetFieldDatePickerView($data['fields']['date_to']))
+ ->setDateFormat(ZBX_DATE)
+ ->setPlaceholder(_('YYYY-MM-DD'))
+ )
+ ->includeJsFile('widget.edit.js.php')
+ ->addJavaScript('widget_slareport_form.init('.json_encode([
+ 'serviceid_field_id' => $data['fields']['serviceid']->getName()
+ ], JSON_THROW_ON_ERROR).');')
+ ->show();
diff --git a/ui/app/views/monitoring.widget.slareport.view.php b/ui/widgets/slareport/views/widget.view.php
index 9c418f332b0..be524a6979e 100644
--- a/ui/app/views/monitoring.widget.slareport.view.php
+++ b/ui/widgets/slareport/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * SLA report widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -128,18 +130,6 @@ else {
}
}
-$output = [
- 'name' => $data['name'],
- 'body' => (new CDiv($report))->addClass('dashboard-widget-slareport')->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($report)
+ ->show();
diff --git a/ui/widgets/svggraph/Widget.php b/ui/widgets/svggraph/Widget.php
new file mode 100644
index 00000000000..a1c011df9c0
--- /dev/null
+++ b/ui/widgets/svggraph/Widget.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\SvgGraph;
+
+use Widgets\SvgGraph\Includes\WidgetForm;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Graph');
+ }
+
+ public function usesTimeSelector(array $fields_values): bool {
+ return !WidgetForm::hasOverrideTime($fields_values);
+ }
+
+ public function getTranslationStrings(): array {
+ return [
+ 'class.widget.js' => [
+ 'Actions' => _s('Actions'),
+ 'Download image' => _s('Download image')
+ ]
+ ];
+ }
+}
diff --git a/ui/widgets/svggraph/actions/WidgetView.php b/ui/widgets/svggraph/actions/WidgetView.php
new file mode 100644
index 00000000000..f0d0591ef3f
--- /dev/null
+++ b/ui/widgets/svggraph/actions/WidgetView.php
@@ -0,0 +1,195 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\SvgGraph\Actions;
+
+use CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CNumberParser,
+ CParser,
+ CRangeTimeParser,
+ CSvgGraphHelper;
+
+use Widgets\SvgGraph\Includes\WidgetForm;
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ private const GRAPH_WIDTH_MIN = 1;
+ private const GRAPH_WIDTH_MAX = 65535;
+ private const GRAPH_HEIGHT_MIN = 1;
+ private const GRAPH_HEIGHT_MAX = 65535;
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
+ 'edit_mode' => 'in 0,1',
+ 'content_width' => 'int32|ge '.self::GRAPH_WIDTH_MIN.'|le '.self::GRAPH_WIDTH_MAX,
+ 'content_height' => 'int32|ge '.self::GRAPH_HEIGHT_MIN.'|le '.self::GRAPH_HEIGHT_MAX,
+ 'preview' => 'in 1',
+ 'from' => 'string',
+ 'to' => 'string'
+ ]);
+ }
+
+ protected function doAction(): void {
+ $edit_mode = $this->getInput('edit_mode', 0);
+ $width = (int) $this->getInput('content_width', self::GRAPH_WIDTH_MIN);
+ $height = (int) $this->getInput('content_height', self::GRAPH_HEIGHT_MIN);
+ $preview = (bool) $this->getInput('preview', 0); // Configuration preview.
+
+ $dashboard_time = !WidgetForm::hasOverrideTime($this->fields_values);
+
+ if ($dashboard_time && !$preview) {
+ $from = $this->getInput('from');
+ $to = $this->getInput('to');
+ }
+ else {
+ $from = $this->fields_values['time_from'];
+ $to = $this->fields_values['time_to'];
+ }
+
+ $range_time_parser = new CRangeTimeParser();
+
+ $range_time_parser->parse($from);
+ $time_from = $range_time_parser->getDateTime(true)->getTimestamp();
+
+ $range_time_parser->parse($to);
+ $time_to = $range_time_parser->getDateTime(false)->getTimestamp();
+
+ $parser = new CNumberParser(['with_size_suffix' => true, 'with_time_suffix' => true]);
+
+ $percentile_left_value = $parser->parse($this->fields_values['percentile_left_value']) == CParser::PARSE_SUCCESS
+ ? $parser->calcValue()
+ : null;
+
+ $percentile_right_value = $parser->parse($this->fields_values['percentile_right_value']) == CParser::PARSE_SUCCESS
+ ? $parser->calcValue()
+ : null;
+
+ $lefty_min = $parser->parse($this->fields_values['lefty_min']) == CParser::PARSE_SUCCESS
+ ? $parser->calcValue()
+ : null;
+
+ $lefty_max = $parser->parse($this->fields_values['lefty_max']) == CParser::PARSE_SUCCESS
+ ? $parser->calcValue()
+ : null;
+
+ $righty_min = $parser->parse($this->fields_values['righty_min']) == CParser::PARSE_SUCCESS
+ ? $parser->calcValue()
+ : null;
+
+ $righty_max = $parser->parse($this->fields_values['righty_max']) == CParser::PARSE_SUCCESS
+ ? $parser->calcValue()
+ : null;
+
+ $graph_data = [
+ 'data_sets' => array_values($this->fields_values['ds']),
+ 'data_source' => $this->fields_values['source'],
+ 'dashboard_time' => $dashboard_time,
+ 'displaying' => [
+ 'show_simple_triggers' => $this->fields_values['simple_triggers'] == SVG_GRAPH_SIMPLE_TRIGGERS_ON,
+ 'show_working_time' => $this->fields_values['working_time'] == SVG_GRAPH_WORKING_TIME_ON,
+ 'show_percentile_left' => $this->fields_values['percentile_left'] == SVG_GRAPH_PERCENTILE_LEFT_ON,
+ 'percentile_left_value' => $percentile_left_value,
+ 'show_percentile_right' => $this->fields_values['percentile_right'] == SVG_GRAPH_PERCENTILE_RIGHT_ON,
+ 'percentile_right_value' => $percentile_right_value
+ ],
+ 'time_period' => [
+ 'time_from' => $time_from,
+ 'time_to' => $time_to
+ ],
+ 'axes' => [
+ 'show_left_y_axis' => $this->fields_values['lefty'] == SVG_GRAPH_AXIS_ON,
+ 'left_y_min' => $lefty_min,
+ 'left_y_max' => $lefty_max,
+ 'left_y_units' => $this->fields_values['lefty_units'] == SVG_GRAPH_AXIS_UNITS_STATIC
+ ? $this->fields_values['lefty_static_units']
+ : null,
+ 'show_right_y_axis' => $this->fields_values['righty'] == SVG_GRAPH_AXIS_ON,
+ 'right_y_min' => $righty_min,
+ 'right_y_max' => $righty_max,
+ 'right_y_units' => $this->fields_values['righty_units'] == SVG_GRAPH_AXIS_UNITS_STATIC
+ ? $this->fields_values['righty_static_units']
+ : null,
+ 'show_x_axis' => $this->fields_values['axisx'] == SVG_GRAPH_AXIS_ON
+ ],
+ 'legend' => [
+ 'show_legend' => $this->fields_values['legend'] == SVG_GRAPH_LEGEND_ON,
+ 'legend_columns' => $this->fields_values['legend_columns'],
+ 'legend_lines' => $this->fields_values['legend_lines'],
+ 'legend_statistic' => $this->fields_values['legend_statistic']
+ ],
+ 'problems' => [
+ 'show_problems' => $this->fields_values['show_problems'] == SVG_GRAPH_PROBLEMS_ON,
+ 'graph_item_problems' => $this->fields_values['graph_item_problems'] == SVG_GRAPH_SELECTED_ITEM_PROBLEMS,
+ 'problemhosts' => $this->fields_values['problemhosts'],
+ 'severities' => $this->fields_values['severities'],
+ 'problem_name' => $this->fields_values['problem_name'],
+ 'evaltype' => $this->fields_values['evaltype'],
+ 'tags' => $this->fields_values['tags']
+ ],
+ 'overrides' => array_values($this->fields_values['or'])
+ ];
+
+ $svg_options = CSvgGraphHelper::get($graph_data, $width, $height);
+ if ($svg_options['errors']) {
+ error($svg_options['errors']);
+ }
+
+ if (!$preview) {
+ $svg_options['data'] = zbx_array_merge($svg_options['data'], [
+ 'sbox' => $graph_data['dashboard_time'] && !$edit_mode,
+ 'show_problems' => $graph_data['problems']['show_problems'],
+ 'show_simple_triggers' => $graph_data['displaying']['show_simple_triggers'],
+ 'time_from' => $graph_data['time_period']['time_from'],
+ 'hint_max_rows' => ZBX_WIDGET_ROWS
+ ]);
+ }
+
+ $this->setResponse(new CControllerResponseData([
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
+ 'svg' => $svg_options['svg'].$svg_options['legend'],
+ 'svg_options' => $svg_options,
+ 'preview' => $preview,
+ 'info' => $this->makeWidgetInfo(),
+ 'user' => [
+ 'debug_mode' => $this->getDebugMode()
+ ]
+ ]));
+ }
+
+ /**
+ * Make widget specific info to show in widget's header.
+ */
+ private function makeWidgetInfo(): array {
+ $info = [];
+
+ if (WidgetForm::hasOverrideTime($this->fields_values)) {
+ $info[] = [
+ 'icon' => 'btn-info-clock',
+ 'hint' => relativeDateToText($this->fields_values['time_from'], $this->fields_values['time_to'])
+ ];
+ }
+
+ return $info;
+ }
+}
diff --git a/ui/js/widgets/class.widget.svggraph.js b/ui/widgets/svggraph/assets/js/class.widget.js
index 3f832b5cc45..02cb14f77ca 100644
--- a/ui/js/widgets/class.widget.svggraph.js
+++ b/ui/widgets/svggraph/assets/js/class.widget.js
@@ -154,4 +154,8 @@ class CWidgetSvgGraph extends CWidget {
return menu;
}
+
+ _hasPadding() {
+ return true;
+ }
}
diff --git a/ui/widgets/svggraph/includes/WidgetForm.php b/ui/widgets/svggraph/includes/WidgetForm.php
new file mode 100644
index 00000000000..27135b2e10c
--- /dev/null
+++ b/ui/widgets/svggraph/includes/WidgetForm.php
@@ -0,0 +1,470 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\SvgGraph\Includes;
+
+use CNumberParser,
+ CParser,
+ CRangeTimeParser,
+ CSettingsHelper;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldDatePicker,
+ CWidgetFieldGraphDataSet,
+ CWidgetFieldGraphOverride,
+ CWidgetFieldHostPatternSelect,
+ CWidgetFieldNumericBox,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldRangeControl,
+ CWidgetFieldSelect,
+ CWidgetFieldSeverities,
+ CWidgetFieldTags,
+ CWidgetFieldTextBox
+};
+
+/**
+ * Graph widget form view.
+ */
+class WidgetForm extends CWidgetForm {
+
+ private const PERCENTILE_MIN = 1;
+ private const PERCENTILE_MAX = 100;
+
+ private bool $percentile_left_on = false;
+ private bool $percentile_right_on = false;
+
+ private bool $graph_time_on = false;
+
+ private bool $lefty_on = true;
+ private bool $lefty_units_static = false;
+ private bool $righty_on = true;
+ private bool $righty_units_static = false;
+
+ private bool $legend_on = true;
+ private bool $legend_statistic_on = false;
+
+ private bool $problems_on = false;
+
+ public function validate(bool $strict = false): array {
+ $errors = parent::validate($strict);
+
+ $number_parser_w_suffix = new CNumberParser(['with_size_suffix' => true, 'with_time_suffix' => true]);
+ $number_parser_wo_suffix = new CNumberParser();
+
+ // Percentiles
+ if ($this->getFieldValue('percentile_left') == SVG_GRAPH_PERCENTILE_LEFT_ON) {
+ $percentile_left_value = $this->getFieldValue('percentile_left_value');
+
+ if ($percentile_left_value !== '') {
+ $percentile_left_value_calculated =
+ $number_parser_wo_suffix->parse($percentile_left_value) == CParser::PARSE_SUCCESS
+ ? $number_parser_wo_suffix->calcValue()
+ : null;
+
+ if ($percentile_left_value_calculated === null
+ || $percentile_left_value_calculated < self::PERCENTILE_MIN
+ || $percentile_left_value_calculated > self::PERCENTILE_MAX) {
+ $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Percentile line (left)'),
+ _s('value must be between "%1$s" and "%2$s"', self::PERCENTILE_MIN, self::PERCENTILE_MAX)
+ );
+ }
+ }
+ }
+
+ if ($this->getFieldValue('percentile_right') == SVG_GRAPH_PERCENTILE_RIGHT_ON) {
+ $percentile_right_value = $this->getFieldValue('percentile_right_value');
+
+ if ($percentile_right_value !== '') {
+ $percentile_right_value_calculated =
+ $number_parser_wo_suffix->parse($percentile_right_value) == CParser::PARSE_SUCCESS
+ ? $number_parser_wo_suffix->calcValue()
+ : null;
+
+ if ($percentile_right_value_calculated === null
+ || $percentile_right_value_calculated < self::PERCENTILE_MIN
+ || $percentile_right_value_calculated > self::PERCENTILE_MAX) {
+ $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Percentile line (right)'),
+ _s('value must be between "%1$s" and "%2$s"', self::PERCENTILE_MIN, self::PERCENTILE_MAX)
+ );
+ }
+ }
+ }
+
+ // Test graph custom time period.
+ if ($this->getFieldValue('graph_time') == SVG_GRAPH_CUSTOM_TIME_ON) {
+ $errors = array_merge($errors, self::validateTimeSelectorPeriod($this->getFieldValue('time_from'),
+ $this->getFieldValue('time_to')
+ ));
+ }
+
+ // Validate Min/Max values in Axes tab.
+ if ($this->getFieldValue('lefty') == SVG_GRAPH_AXIS_ON) {
+ $lefty_min = $number_parser_w_suffix->parse($this->getFieldValue('lefty_min')) == CParser::PARSE_SUCCESS
+ ? $number_parser_w_suffix->calcValue()
+ : null;
+
+ $lefty_max = $number_parser_w_suffix->parse($this->getFieldValue('lefty_max')) == CParser::PARSE_SUCCESS
+ ? $number_parser_w_suffix->calcValue()
+ : null;
+
+ if ($lefty_min !== null && $lefty_max !== null && $lefty_min >= $lefty_max) {
+ $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Left Y').'/'._('Max'),
+ _('Y axis MAX value must be greater than Y axis MIN value')
+ );
+ }
+ }
+
+ if ($this->getFieldValue('righty') == SVG_GRAPH_AXIS_ON) {
+ $righty_min = $number_parser_w_suffix->parse($this->getFieldValue('righty_min')) == CParser::PARSE_SUCCESS
+ ? $number_parser_w_suffix->calcValue()
+ : null;
+
+ $righty_max = $number_parser_w_suffix->parse($this->getFieldValue('righty_max')) == CParser::PARSE_SUCCESS
+ ? $number_parser_w_suffix->calcValue()
+ : null;
+
+ if ($righty_min !== null && $righty_max !== null && $righty_min >= $righty_max) {
+ $errors[] = _s('Invalid parameter "%1$s": %2$s.', _('Right Y').'/'._('Max'),
+ _('Y axis MAX value must be greater than Y axis MIN value')
+ );
+ }
+ }
+
+ return $errors;
+ }
+
+ protected function normalizeValues(array $values): array {
+ $values = parent::normalizeValues($values);
+
+ if (array_key_exists('percentile_left', $values)) {
+ $this->percentile_left_on = $values['percentile_left'] == SVG_GRAPH_PERCENTILE_LEFT_ON;
+ }
+
+ if (!$this->percentile_left_on) {
+ unset($values['percentile_left_value']);
+ }
+
+ if (array_key_exists('percentile_right', $values)) {
+ $this->percentile_right_on = $values['percentile_right'] == SVG_GRAPH_PERCENTILE_RIGHT_ON;
+ }
+
+ if (!$this->percentile_right_on) {
+ unset($values['percentile_right_value']);
+ }
+
+ if (array_key_exists('graph_time', $values)) {
+ $this->graph_time_on = $values['graph_time'] == SVG_GRAPH_CUSTOM_TIME_ON;
+ }
+
+ if (!$this->graph_time_on) {
+ unset($values['time_from'], $values['time_to']);
+ }
+
+ if (array_key_exists('lefty', $values)) {
+ $this->lefty_on = $values['lefty'] == SVG_GRAPH_AXIS_ON;
+ }
+
+ if (!$this->lefty_on) {
+ unset($values['lefty_min'], $values['lefty_max'], $values['lefty_units']);
+ }
+
+ if (array_key_exists('lefty_units', $values)) {
+ $this->lefty_units_static = $values['lefty_units'] == SVG_GRAPH_AXIS_UNITS_STATIC;
+ }
+
+ if (!$this->lefty_on || !$this->lefty_units_static) {
+ unset($values['lefty_static_units']);
+ }
+
+ if (array_key_exists('righty', $values)) {
+ $this->righty_on = $values['righty'] == SVG_GRAPH_AXIS_ON;
+ }
+
+ if (!$this->righty_on) {
+ unset($values['righty_min'], $values['righty_max'], $values['righty_units']);
+ }
+
+ if (array_key_exists('righty_units', $values)) {
+ $this->righty_units_static = $values['righty_units'] == SVG_GRAPH_AXIS_UNITS_STATIC;
+ }
+
+ if (!$this->righty_on || !$this->righty_units_static) {
+ unset($values['righty_static_units']);
+ }
+
+ if (array_key_exists('legend', $values)) {
+ $this->legend_on = $values['legend'] == SVG_GRAPH_LEGEND_ON;
+ }
+
+ if (array_key_exists('legend_statistic', $values)) {
+ $this->legend_statistic_on = $values['legend_statistic'] == SVG_GRAPH_LEGEND_STATISTIC_ON;
+ }
+
+ if (array_key_exists('show_problems', $values)) {
+ $this->problems_on = $values['show_problems'] == SVG_GRAPH_PROBLEMS_ON;
+ }
+
+ if (!$this->problems_on) {
+ unset($values['graph_item_problems'], $values['problemhosts'], $values['severities'],
+ $values['problem_name'], $values['evaltype'], $values['tags']
+ );
+ }
+
+ return $values;
+ }
+
+ public function addFields(): self {
+ return $this
+ ->initDataSetFields()
+ ->initDisplayingOptionsFields()
+ ->initTimePeriodFields()
+ ->initAxesFields()
+ ->initLegendFields()
+ ->initProblemsFields()
+ ->initOverridesFields();
+ }
+
+ private function initDataSetFields(): self {
+ return $this->addField(
+ (new CWidgetFieldGraphDataSet('ds', _('Data set')))->setFlags(CWidgetField::FLAG_NOT_EMPTY)
+ );
+ }
+
+ private function initDisplayingOptionsFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldRadioButtonList('source', _('History data selection'), [
+ SVG_GRAPH_DATA_SOURCE_AUTO => _x('Auto', 'history source selection method'),
+ SVG_GRAPH_DATA_SOURCE_HISTORY => _('History'),
+ SVG_GRAPH_DATA_SOURCE_TRENDS => _('Trends')
+ ]))->setDefault(SVG_GRAPH_DATA_SOURCE_AUTO)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('simple_triggers', _('Simple triggers'))
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('working_time', _('Working time'))
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('percentile_left', _('Percentile line (left)'))
+ )
+ ->addField(
+ (new CWidgetFieldTextBox('percentile_left_value', null))
+ ->setFlags(!$this->percentile_left_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('percentile_right', _('Percentile line (right)'))
+ )
+ ->addField(
+ (new CWidgetFieldTextBox('percentile_right_value', null))
+ ->setFlags(!$this->percentile_right_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ );
+ }
+
+ private function initTimePeriodFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldCheckBox('graph_time', _('Set custom time period'))
+ )
+ ->addField(
+ (new CWidgetFieldDatePicker('time_from', _('From')))
+ ->setDefault('now-1h')
+ ->setFlags($this->graph_time_on
+ ? CWidgetField::FLAG_NOT_EMPTY
+ : CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_DISABLED
+ )
+ )
+ ->addField(
+ (new CWidgetFieldDatePicker('time_to', _('To')))
+ ->setDefault('now')
+ ->setFlags($this->graph_time_on
+ ? CWidgetField::FLAG_NOT_EMPTY
+ : CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_DISABLED
+ )
+ );
+ }
+
+ private function initAxesFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldCheckBox('lefty', _('Left Y'), _('Show')))->setDefault(SVG_GRAPH_AXIS_ON)
+ )
+ ->addField(
+ (new CWidgetFieldNumericBox('lefty_min', _('Min')))
+ ->setFullName(_('Left Y').'/'._('Min'))
+ ->setFlags(!$this->lefty_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldNumericBox('lefty_max', _('Max')))
+ ->setFullName(_('Left Y').'/'._('Max'))
+ ->setFlags(!$this->lefty_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldSelect('lefty_units', _('Units'), [
+ SVG_GRAPH_AXIS_UNITS_AUTO => _x('Auto', 'history source selection method'),
+ SVG_GRAPH_AXIS_UNITS_STATIC => _x('Static', 'history source selection method')
+ ]))
+ ->setDefault(SVG_GRAPH_AXIS_UNITS_AUTO)
+ ->setFlags(!$this->lefty_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldTextBox('lefty_static_units'))
+ ->setFlags(!$this->lefty_on || !$this->lefty_units_static ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('righty', _('Right Y'), _('Show')))->setDefault(SVG_GRAPH_AXIS_ON)
+ )
+ ->addField(
+ (new CWidgetFieldNumericBox('righty_min', _('Min')))
+ ->setFullName(_('Right Y').'/'._('Min'))
+ ->setFlags(!$this->righty_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldNumericBox('righty_max', _('Max')))
+ ->setFullName(_('Right Y').'/'._('Max'))
+ ->setFlags(!$this->righty_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldSelect('righty_units', _('Units'), [
+ SVG_GRAPH_AXIS_UNITS_AUTO => _x('Auto', 'history source selection method'),
+ SVG_GRAPH_AXIS_UNITS_STATIC => _x('Static', 'history source selection method')
+ ]))
+ ->setDefault(SVG_GRAPH_AXIS_UNITS_AUTO)
+ ->setFlags(!$this->righty_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldTextBox('righty_static_units', null))
+ ->setFlags(!$this->righty_on || !$this->righty_units_static ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('axisx', _('X-Axis'), _('Show')))->setDefault(SVG_GRAPH_AXIS_ON)
+ );
+ }
+
+ private function initLegendFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldCheckBox('legend', _('Show legend')))->setDefault(SVG_GRAPH_LEGEND_ON)
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('legend_statistic', _('Display min/max/avg')))
+ ->setFlags(!$this->legend_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldRangeControl('legend_lines', _('Number of rows'),
+ SVG_GRAPH_LEGEND_LINES_MIN, SVG_GRAPH_LEGEND_LINES_MAX
+ ))
+ ->setDefault(SVG_GRAPH_LEGEND_LINES_MIN)
+ ->setFlags(!$this->legend_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldRangeControl('legend_columns', _('Number of columns'),
+ SVG_GRAPH_LEGEND_COLUMNS_MIN, SVG_GRAPH_LEGEND_COLUMNS_MAX
+ ))
+ ->setDefault(SVG_GRAPH_LEGEND_COLUMNS_MAX)
+ ->setFlags(!$this->legend_on || $this->legend_statistic_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ );
+ }
+
+ private function initProblemsFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldCheckBox('show_problems', _('Show problems'))
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('graph_item_problems', _('Selected items only')))
+ ->setDefault(SVG_GRAPH_SELECTED_ITEM_PROBLEMS)
+ ->setFlags(!$this->problems_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldHostPatternSelect('problemhosts', _('Problem hosts')))
+ ->setFlags(!$this->problems_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldSeverities('severities', _('Severity')))
+ ->setFlags(!$this->problems_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldTextBox('problem_name', _('Problem')))
+ ->setFlags(!$this->problems_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))
+ ->setDefault(TAG_EVAL_TYPE_AND_OR)
+ ->setFlags(!$this->problems_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ )
+ ->addField(
+ (new CWidgetFieldTags('tags'))->setFlags(!$this->problems_on ? CWidgetField::FLAG_DISABLED : 0x00)
+ );
+ }
+
+ private function initOverridesFields(): self {
+ return $this->addField(
+ (new CWidgetFieldGraphOverride('or', _('Overrides')))->setFlags(CWidgetField::FLAG_NOT_EMPTY)
+ );
+ }
+
+ /**
+ * Check if widget configuration is set to use overridden time.
+ */
+ public static function hasOverrideTime(array $fields_values): bool {
+ return array_key_exists('graph_time', $fields_values)
+ && $fields_values['graph_time'] == SVG_GRAPH_CUSTOM_TIME_ON;
+ }
+
+ private static function validateTimeSelectorPeriod(string $from, string $to): array {
+ $errors = [];
+ $ts = [];
+ $ts['now'] = time();
+ $range_time_parser = new CRangeTimeParser();
+
+ foreach (['from' => $from, 'to' => $to] as $field => $value) {
+ $range_time_parser->parse($value);
+ $ts[$field] = $range_time_parser->getDateTime($field === 'from')->getTimestamp();
+ }
+
+ $period = $ts['to'] - $ts['from'] + 1;
+ $range_time_parser->parse('now-'.CSettingsHelper::get(CSettingsHelper::MAX_PERIOD));
+ $max_period = 1 + $ts['now'] - $range_time_parser->getDateTime(true)->getTimestamp();
+
+ if ($period < ZBX_MIN_PERIOD) {
+ $errors[] = _n('Minimum time period to display is %1$s minute.',
+ 'Minimum time period to display is %1$s minutes.', (int) (ZBX_MIN_PERIOD / SEC_PER_MIN)
+ );
+ }
+ elseif ($period > $max_period) {
+ $errors[] = _n('Maximum time period to display is %1$s day.',
+ 'Maximum time period to display is %1$s days.', (int) round($max_period / SEC_PER_DAY)
+ );
+ }
+
+ return $errors;
+ }
+}
diff --git a/ui/widgets/svggraph/manifest.json b/ui/widgets/svggraph/manifest.json
new file mode 100644
index 00000000000..fb57b270647
--- /dev/null
+++ b/ui/widgets/svggraph/manifest.json
@@ -0,0 +1,20 @@
+{
+ "manifest_version": 2.0,
+ "id": "svggraph",
+ "type": "widget",
+ "name": "Graph",
+ "namespace": "SvgGraph",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "js_class": "CWidgetSvgGraph"
+ },
+ "actions": {
+ "widget.svggraph.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/include/classes/widgets/views/js/widget.svggraph.form.view.js.php b/ui/widgets/svggraph/views/widget.edit.js.php
index a1512cbcb4e..7764e8e40eb 100644
--- a/ui/include/classes/widgets/views/js/widget.svggraph.form.view.js.php
+++ b/ui/widgets/svggraph/views/widget.edit.js.php
@@ -17,21 +17,24 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-?>
+use Zabbix\Widgets\Fields\CWidgetFieldGraphDataSet;
+
+?>
+
window.widget_svggraph_form = new class {
constructor() {
this._dataset_index = 0;
}
- init({form_id, form_tabs_id, color_palette}) {
+ init({form_tabs_id, color_palette}) {
colorPalette.setThemeColors(color_palette);
this._$overlay_body = jQuery('.overlay-dialogue-body');
- this._form = document.getElementById(form_id);
- this._form_id = form_id;
+ this._form = document.getElementById('widget-dialogue-form');
+
this._dataset_wrapper = document.getElementById('data_sets');
@@ -119,8 +122,8 @@ window.widget_svggraph_form = new class {
}
if (e.target.classList.contains('js-click-expend')
- || e.target.classList.contains('color-picker-preview')
- || e.target.classList.contains('<?= ZBX_STYLE_BTN_GREY ?>')) {
+ || e.target.classList.contains('color-picker-preview')
+ || e.target.classList.contains('<?= ZBX_STYLE_BTN_GREY ?>')) {
jQuery('#data_sets').zbx_vertical_accordion('expandNth',
jQuery(e.target).closest('.<?= ZBX_STYLE_LIST_ACCORDION_ITEM ?>').index()
);
@@ -131,7 +134,7 @@ window.widget_svggraph_form = new class {
jQuery(window).trigger('resize');
const dataset = data.section[0];
- if (dataset.dataset.type == '<?= CWidgetHelper::DATASET_TYPE_SINGLE_ITEM ?>') {
+ if (dataset.dataset.type == '<?= CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM ?>') {
const message_block = dataset.querySelector('.no-items-message');
if (dataset.querySelectorAll('.single-item-table-row').length == 0) {
@@ -143,7 +146,7 @@ window.widget_svggraph_form = new class {
jQuery(window).trigger('resize');
const dataset = data.section[0];
- if (dataset.dataset.type == '<?= CWidgetHelper::DATASET_TYPE_SINGLE_ITEM ?>') {
+ if (dataset.dataset.type == '<?= CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM ?>') {
const message_block = dataset.querySelector('.no-items-message');
if (dataset.querySelectorAll('.single-item-table-row').length == 0) {
@@ -191,7 +194,7 @@ window.widget_svggraph_form = new class {
document
.getElementById('dataset-add')
.addEventListener('click', () => {
- this._addDataset(<?= CWidgetHelper::DATASET_TYPE_PATTERN_ITEM ?>);
+ this._addDataset(<?= CWidgetFieldGraphDataSet::DATASET_TYPE_PATTERN_ITEM ?>);
});
document
@@ -199,7 +202,7 @@ window.widget_svggraph_form = new class {
.addEventListener('click', this._addDatasetMenu);
window.addPopupValues = (list) => {
- if (!isset('object', list) || list.object != 'itemid') {
+ if (!isset('object', list) || list.object !== 'itemid') {
return false;
}
@@ -274,13 +277,13 @@ window.widget_svggraph_form = new class {
{
label: <?= json_encode(_('Item pattern')) ?>,
clickCallback: () => {
- widget_svggraph_form._addDataset(<?= CWidgetHelper::DATASET_TYPE_PATTERN_ITEM ?>);
+ widget_svggraph_form._addDataset(<?= CWidgetFieldGraphDataSet::DATASET_TYPE_PATTERN_ITEM ?>);
}
},
{
label: <?= json_encode(_('Item list')) ?>,
clickCallback: () => {
- widget_svggraph_form._addDataset(<?= CWidgetHelper::DATASET_TYPE_SINGLE_ITEM ?>);
+ widget_svggraph_form._addDataset(<?= CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM ?>);
}
}
]
@@ -311,7 +314,7 @@ window.widget_svggraph_form = new class {
_addDataset(type) {
jQuery(this._dataset_wrapper).zbx_vertical_accordion('collapseAll');
- const template = type == <?= CWidgetHelper::DATASET_TYPE_SINGLE_ITEM ?>
+ const template = type == <?= CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM ?>
? new Template(jQuery('#dataset-single-item-tmpl').html())
: new Template(jQuery('#dataset-pattern-item-tmpl').html());
@@ -325,7 +328,7 @@ window.widget_svggraph_form = new class {
this._dataset_wrapper.insertAdjacentHTML('beforeend', template.evaluate({
rowNum: this._dataset_index++,
- color: type == <?= CWidgetHelper::DATASET_TYPE_SINGLE_ITEM ?>
+ color: type == <?= CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM ?>
? ''
: colorPalette.getNextColor(used_colors)
}));
@@ -359,7 +362,7 @@ window.widget_svggraph_form = new class {
const cloned_dataset = this._getOpenedDataset();
- if (dataset.dataset.type == <?= CWidgetHelper::DATASET_TYPE_SINGLE_ITEM ?>) {
+ if (dataset.dataset.type == <?= CWidgetFieldGraphDataSet::DATASET_TYPE_SINGLE_ITEM ?>) {
for (const row of dataset.querySelectorAll('.single-item-table-row')) {
this._addSingleItem(
row.querySelector(`[name^='ds[${dataset.getAttribute('data-set')}][itemids]`).value,
@@ -456,7 +459,7 @@ window.widget_svggraph_form = new class {
srctbl: 'items',
srcfld1: 'itemid',
srcfld2: 'name',
- dstfrm: this._form_id,
+ dstfrm: this._form.id,
numeric: 1,
writeonly: 1,
multiselect: 1,
@@ -571,7 +574,7 @@ window.widget_svggraph_form = new class {
srctbl: 'items',
srcfld1: 'itemid',
srcfld2: 'name',
- dstfrm: widget_svggraph_form._form_id,
+ dstfrm: widget_svggraph_form._form.id,
dstfld1: `items_${dataset_index}_${i}_input`,
dstfld2: `items_${dataset_index}_${i}_name`,
numeric: 1,
@@ -783,7 +786,7 @@ window.widget_svggraph_form = new class {
form_fields.or[i] = jQuery.extend({'hosts': [], 'items': []}, form_fields.or[i]);
}
}
- data.fields = JSON.stringify(form_fields);
+ data.fields = form_fields;
if (preview_data.xhr) {
preview_data.xhr.abort();
diff --git a/ui/widgets/svggraph/views/widget.edit.php b/ui/widgets/svggraph/views/widget.edit.php
new file mode 100644
index 00000000000..6d253a7bf30
--- /dev/null
+++ b/ui/widgets/svggraph/views/widget.edit.php
@@ -0,0 +1,289 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Graph widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+use Zabbix\Widgets\Fields\CWidgetFieldGraphDataSet;
+
+$form = (new CWidgetFormView($data));
+
+$preview = (new CDiv())
+ ->addClass(ZBX_STYLE_SVG_GRAPH_PREVIEW)
+ ->addItem((new CDiv())->setId('svg-graph-preview'));
+
+$form_tabs = (new CTabView())
+ ->addTab('data_set', _('Data set'), getDatasetTab($form, $data['fields']),
+ TAB_INDICATOR_GRAPH_DATASET
+ )
+ ->addTab('displaying_options', _('Displaying options'), getDisplayOptionsTab($form, $data['fields']),
+ TAB_INDICATOR_GRAPH_DISPLAY_OPTIONS
+ )
+ ->addTab('time_period', _('Time period'), getTimePeriodTab($form, $data['fields']),
+ TAB_INDICATOR_GRAPH_TIME
+ )
+ ->addTab('axes', _('Axes'), getAxesTab($form, $data['fields']),
+ TAB_INDICATOR_GRAPH_AXES
+ )
+ ->addTab('legend_tab', _('Legend'), getLegendTab($form, $data['fields']),
+ TAB_INDICATOR_GRAPH_LEGEND
+ )
+ ->addTab('problems', _('Problems'), getProblemsTab($form, $data['fields']),
+ TAB_INDICATOR_GRAPH_PROBLEMS
+ )
+ ->addTab('overrides', _('Overrides'), getOverridesTab($form, $data['fields']),
+ TAB_INDICATOR_GRAPH_OVERRIDES
+ )
+ ->addClass('graph-widget-config-tabs')
+ ->setSelected(0);
+
+$form
+ ->addItem([$preview, $form_tabs])
+ ->addJavaScript($form_tabs->makeJavascript())
+ ->includeJsFile('widget.edit.js.php')
+ ->addJavaScript('widget_svggraph_form.init('.json_encode([
+ 'form_tabs_id' => $form_tabs->getId(),
+ 'color_palette' => CWidgetFieldGraphDataSet::DEFAULT_COLOR_PALETTE
+ ], JSON_THROW_ON_ERROR).');')
+ ->show();
+
+function getDatasetTab(CWidgetFormView $form, array $fields): CFormGrid {
+ $dataset = new CWidgetFieldGraphDataSetView($fields['ds']);
+
+ return new CFormGrid(
+ $form->makeCustomField($dataset, [
+ $dataset->getLabel(),
+ (new CFormField($dataset->getView()))->addClass(ZBX_STYLE_LIST_VERTICAL_ACCORDION),
+ (new CFormField($dataset->getFooterView()))->addClass(ZBX_STYLE_LIST_ACCORDION_FOOT)
+ ])
+ );
+}
+
+function getDisplayOptionsTab(CWidgetFormView $form, array $fields): CDiv {
+ $percentile_left = new CWidgetFieldCheckBoxView($fields['percentile_left']);
+ $percentile_left_value = (new CWidgetFieldTextBoxView($fields['percentile_left_value']))
+ ->setPlaceholder(_('value'))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
+
+ $percentile_right = new CWidgetFieldCheckBoxView($fields['percentile_right']);
+ $percentile_right_value = (new CWidgetFieldTextBoxView($fields['percentile_right_value']))
+ ->setPlaceholder(_('value'))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
+
+ return (new CDiv())
+ ->addClass(ZBX_STYLE_GRID_COLUMNS)
+ ->addClass(ZBX_STYLE_GRID_COLUMNS_2)
+ ->addItem(
+ new CFormGrid([
+ $form->makeCustomField(
+ new CWidgetFieldRadioButtonListView($fields['source'])
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['simple_triggers'])
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['working_time'])
+ )
+ ])
+ )
+ ->addItem(
+ new CFormGrid([
+ $form->makeCustomField($percentile_left, [
+ $percentile_left->getLabel(),
+ new CFormField([
+ $percentile_left->getView(),
+ $percentile_left_value->getView()
+ ])
+ ]),
+
+ $form->makeCustomField($percentile_right, [
+ $percentile_right->getLabel(),
+ new CFormField([
+ $percentile_right->getView(),
+ $percentile_right_value->getView()
+ ])
+ ])
+ ])
+ );
+}
+
+function getTimePeriodTab(CWidgetFormView $form, array $fields): CFormGrid {
+ return new CFormGrid([
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['graph_time'])
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldDatePickerView($fields['time_from']))
+ ->setDateFormat(ZBX_FULL_DATE_TIME)
+ ->setPlaceholder(_('YYYY-MM-DD hh:mm:ss'))
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldDatePickerView($fields['time_to']))
+ ->setDateFormat(ZBX_FULL_DATE_TIME)
+ ->setPlaceholder(_('YYYY-MM-DD hh:mm:ss'))
+ )
+ ]);
+}
+
+function getAxesTab(CWidgetFormView $form, array $fields): CDiv {
+ $lefty_units = new CWidgetFieldSelectView($fields['lefty_units']);
+ $lefty_static_units = (new CWidgetFieldTextBoxView($fields['lefty_static_units']))
+ ->setPlaceholder(_('value'))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
+
+ $righty_units = new CWidgetFieldSelectView($fields['righty_units']);
+ $righty_static_units = (new CWidgetFieldTextBoxView($fields['righty_static_units']))
+ ->setPlaceholder(_('value'))
+ ->setWidth(ZBX_TEXTAREA_TINY_WIDTH);
+
+ return (new CDiv())
+ ->addClass(ZBX_STYLE_GRID_COLUMNS)
+ ->addClass(ZBX_STYLE_GRID_COLUMNS_3)
+ ->addItem(
+ new CFormGrid([
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['lefty'])
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldNumericBoxView($fields['lefty_min']))->setPlaceholder(_('calculated'))
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldNumericBoxView($fields['lefty_max']))->setPlaceholder(_('calculated'))
+ ),
+
+ $form->makeCustomField($lefty_units, [
+ $lefty_units->getLabel(),
+ new CFormField([
+ $lefty_units->getView()->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
+ $lefty_static_units->getView()
+ ])
+ ])
+ ])
+ )
+ ->addItem(
+ new CFormGrid([
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['righty'])
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldNumericBoxView($fields['righty_min']))->setPlaceholder(_('calculated'))
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldNumericBoxView($fields['righty_max']))->setPlaceholder(_('calculated'))
+ ),
+
+ $form->makeCustomField($righty_units, [
+ $righty_units->getLabel(),
+ new CFormField([
+ $righty_units->getView()->addClass(ZBX_STYLE_FORM_INPUT_MARGIN),
+ $righty_static_units->getView()
+ ])
+ ])
+ ])
+ )
+ ->addItem(
+ new CFormGrid(
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['axisx'])
+ )
+ )
+ );
+}
+
+function getLegendTab(CWidgetFormView $form, array $fields): CDiv {
+ return (new CDiv())
+ ->addClass(ZBX_STYLE_GRID_COLUMNS)
+ ->addClass(ZBX_STYLE_GRID_COLUMNS_2)
+ ->addItem(
+ new CFormGrid([
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['legend'])
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['legend_statistic'])
+ )
+ ])
+ )
+ ->addItem(
+ new CFormGrid([
+ $form->makeCustomField(
+ new CWidgetFieldRangeControlView($fields['legend_lines'])
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldRangeControlView($fields['legend_columns'])
+ )
+ ])
+ );
+}
+
+function getProblemsTab(CWidgetFormView $form, array $fields): CFormGrid {
+ return new CFormGrid([
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['show_problems'])
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldCheckBoxView($fields['graph_item_problems'])
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldHostPatternSelectView($fields['problemhosts']))->setPlaceholder(_('host pattern'))
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldSeveritiesView($fields['severities'])
+ ),
+
+ $form->makeCustomField(
+ (new CWidgetFieldTextBoxView($fields['problem_name']))->setPlaceholder(_('problem pattern'))
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldRadioButtonListView($fields['evaltype'])
+ ),
+
+ $form->makeCustomField(
+ new CWidgetFieldTagsView($fields['tags'])
+ )
+ ]);
+}
+
+function getOverridesTab(CWidgetFormView $form, array $fields): CFormGrid {
+ return new CFormGrid(
+ $form->makeCustomField(
+ new CWidgetFieldGraphOverrideView($fields['or'])
+ )
+ );
+}
diff --git a/ui/include/classes/widgets/views/widget.favmaps.form.view.php b/ui/widgets/svggraph/views/widget.view.php
index 044ea1f4f57..cbf56edf763 100644
--- a/ui/include/classes/widgets/views/widget.favmaps.form.view.php
+++ b/ui/widgets/svggraph/views/widget.view.php
@@ -20,23 +20,20 @@
/**
- * Favorite maps widget form view.
+ * Graph widget view.
*
* @var CView $this
* @var array $data
*/
-$fields = $data['dialogue']['fields'];
+$view = (new CWidgetView($data))->addItem($data['svg']);
-$form = CWidgetHelper::createForm();
+if (!$data['preview']) {
+ $view->setVar('svg_options', $data['svg_options']);
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
+ if ($data['info'] !== null) {
+ $view->setVar('info', $data['info']);
+ }
+}
-$form->addItem($form_grid);
-
-return [
- 'form' => $form
-];
+$view->show();
diff --git a/ui/widgets/systeminfo/Widget.php b/ui/widgets/systeminfo/Widget.php
new file mode 100644
index 00000000000..42f863b77b2
--- /dev/null
+++ b/ui/widgets/systeminfo/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\SystemInfo;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('System information');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetSystemInfoView.php b/ui/widgets/systeminfo/actions/WidgetView.php
index f79b2b17557..e0763c4fc7d 100644
--- a/ui/app/controllers/CControllerWidgetSystemInfoView.php
+++ b/ui/widgets/systeminfo/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,27 +19,20 @@
**/
-require_once __DIR__.'/../../include/blocks.inc.php';
+namespace Widgets\SystemInfo\Actions;
-class CControllerWidgetSystemInfoView extends CControllerWidget {
+use CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CSystemInfoHelper,
+ CWebUser;
- public function __construct() {
- parent::__construct();
-
- $this->setType(WIDGET_SYSTEM_INFO);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
-
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
+class WidgetView extends CControllerDashboardWidgetView {
+ protected function doAction(): void {
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'system_info' => CSystemInfoHelper::getData(),
- 'info_type' => $fields['info_type'],
+ 'info_type' => $this->fields_values['info_type'],
'user_type' => CWebUser::getType(),
'user' => [
'debug_mode' => $this->getDebugMode()
diff --git a/ui/widgets/systeminfo/includes/WidgetForm.php b/ui/widgets/systeminfo/includes/WidgetForm.php
new file mode 100644
index 00000000000..27b92eec41d
--- /dev/null
+++ b/ui/widgets/systeminfo/includes/WidgetForm.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\SystemInfo\Includes;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\CWidgetFieldRadioButtonList;
+
+/**
+ * System information widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldRadioButtonList('info_type', _('Show'), [
+ ZBX_SYSTEM_INFO_SERVER_STATS => _('System stats'),
+ ZBX_SYSTEM_INFO_HAC_STATUS => _('High availability nodes')
+ ]))->setDefault(ZBX_SYSTEM_INFO_SERVER_STATS)
+ );
+ }
+}
diff --git a/ui/widgets/systeminfo/manifest.json b/ui/widgets/systeminfo/manifest.json
new file mode 100644
index 00000000000..6d295a82d4b
--- /dev/null
+++ b/ui/widgets/systeminfo/manifest.json
@@ -0,0 +1,17 @@
+{
+ "manifest_version": 2.0,
+ "id": "systeminfo",
+ "type": "widget",
+ "name": "System information",
+ "namespace": "SystemInfo",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "refresh_rate": 900
+ },
+ "actions": {
+ "widget.systeminfo.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/widgets/systeminfo/views/widget.edit.php b/ui/widgets/systeminfo/views/widget.edit.php
new file mode 100644
index 00000000000..1874ccb4fa1
--- /dev/null
+++ b/ui/widgets/systeminfo/views/widget.edit.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * System information widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['info_type'])
+ )
+ ->show();
diff --git a/ui/app/views/monitoring.widget.systeminfo.view.php b/ui/widgets/systeminfo/views/widget.view.php
index 37c71a2b995..021e95b5f70 100644
--- a/ui/app/views/monitoring.widget.systeminfo.view.php
+++ b/ui/widgets/systeminfo/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * System information widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -51,18 +53,6 @@ switch ($data['info_type']) {
$body = '';
}
-$output = [
- 'name' => $data['name'],
- 'body' => $body
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($body)
+ ->show();
diff --git a/ui/widgets/tophosts/Widget.php b/ui/widgets/tophosts/Widget.php
new file mode 100644
index 00000000000..14108f1c4dd
--- /dev/null
+++ b/ui/widgets/tophosts/Widget.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\TopHosts;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public const DEFAULT_FILL = '#97AAB3';
+
+ public const ORDER_TOP_N = 2;
+ public const ORDER_BOTTOM_N = 3;
+
+ public function getDefaultName(): string {
+ return _('Top hosts');
+ }
+}
diff --git a/ui/app/controllers/CControllerPopupTopHostsColumnEdit.php b/ui/widgets/tophosts/actions/ColumnEdit.php
index 5e67f74638f..6513a3dd2f1 100644
--- a/ui/app/controllers/CControllerPopupTopHostsColumnEdit.php
+++ b/ui/widgets/tophosts/actions/ColumnEdit.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2021 Zabbix SIA
@@ -19,46 +19,56 @@
**/
-class CControllerPopupTopHostsColumnEdit extends CController {
-
- protected $column_defaults = [
- 'name' => '',
- 'data' => CWidgetFieldColumnsList::DATA_ITEM_VALUE,
- 'item' => '',
- 'timeshift' => '',
- 'aggregate_function' => AGGREGATE_NONE,
- 'aggregate_interval' => '1h',
- 'display' => CWidgetFieldColumnsList::DISPLAY_AS_IS,
- 'history' => CWidgetFieldColumnsList::HISTORY_DATA_AUTO,
- 'min' => '',
- 'max' => '',
- 'base_color' => '',
- 'text' => '',
- 'thresholds' => []
+namespace Widgets\TopHosts\Actions;
+
+use CArrayHelper,
+ CController,
+ CControllerResponseData,
+ CNumberParser,
+ CParser;
+
+use Zabbix\Widgets\Fields\CWidgetFieldColumnsList;
+
+class ColumnEdit extends CController {
+
+ protected array $column_defaults = [
+ 'name' => '',
+ 'data' => CWidgetFieldColumnsList::DATA_ITEM_VALUE,
+ 'item' => '',
+ 'timeshift' => '',
+ 'aggregate_function' => AGGREGATE_NONE,
+ 'aggregate_interval' => '1h',
+ 'display' => CWidgetFieldColumnsList::DISPLAY_AS_IS,
+ 'history' => CWidgetFieldColumnsList::HISTORY_DATA_AUTO,
+ 'min' => '',
+ 'max' => '',
+ 'base_color' => '',
+ 'text' => '',
+ 'thresholds' => []
];
- protected function init() {
+ protected function init(): void {
$this->disableSIDValidation();
}
- protected function checkInput() {
+ protected function checkInput(): bool {
// Validation is done by CWidgetFieldColumnsList
$fields = [
- 'name' => 'string',
- 'data' => 'int32',
- 'item' => 'string',
- 'timeshift' => 'string',
- 'aggregate_function' => 'int32',
- 'aggregate_interval' => 'string',
- 'display' => 'int32',
- 'history' => 'int32',
- 'min' => 'string',
- 'max' => 'string',
- 'base_color' => 'string',
- 'thresholds' => 'array',
- 'text' => 'string',
- 'edit' => 'in 1',
- 'update' => 'in 1'
+ 'name' => 'string',
+ 'data' => 'int32',
+ 'item' => 'string',
+ 'timeshift' => 'string',
+ 'aggregate_function' => 'int32',
+ 'aggregate_interval' => 'string',
+ 'display' => 'int32',
+ 'history' => 'int32',
+ 'min' => 'string',
+ 'max' => 'string',
+ 'base_color' => 'string',
+ 'thresholds' => 'array',
+ 'text' => 'string',
+ 'edit' => 'in 1',
+ 'update' => 'in 1'
];
$ret = $this->validateInput($fields) && $this->validateFields($this->getInputAll());
@@ -69,7 +79,7 @@ class CControllerPopupTopHostsColumnEdit extends CController {
'error' => [
'messages' => array_column(get_and_clear_messages(), 'message')
]
- ])]))->disableView()
+ ], JSON_THROW_ON_ERROR)]))->disableView()
);
}
@@ -91,23 +101,23 @@ class CControllerPopupTopHostsColumnEdit extends CController {
return !$errors;
}
- protected function checkPermissions() {
+ protected function checkPermissions(): bool {
return true;
}
- protected function doAction() {
+ protected function doAction(): void {
$input = $this->getInputAll();
unset($input['update']);
if (!$this->hasInput('update')) {
$this->setResponse(new CControllerResponseData([
- 'action' => $this->getAction(),
- 'thresholds_colors' => CWidgetFieldColumnsList::THRESHOLDS_DEFAULT_COLOR_PALETTE,
- 'errors' => hasErrorMessages() ? getMessages() : null,
- 'user' => [
- 'debug_mode' => $this->getDebugMode()
- ]
- ] + $input + $this->column_defaults));
+ 'action' => $this->getAction(),
+ 'thresholds_colors' => CWidgetFieldColumnsList::THRESHOLDS_DEFAULT_COLOR_PALETTE,
+ 'errors' => hasErrorMessages() ? getMessages() : null,
+ 'user' => [
+ 'debug_mode' => $this->getDebugMode()
+ ]
+ ] + $input + $this->column_defaults));
return;
}
@@ -140,6 +150,8 @@ class CControllerPopupTopHostsColumnEdit extends CController {
}
}
- $this->setResponse((new CControllerResponseData(['main_block' => json_encode($input)]))->disableView());
+ $this->setResponse(
+ (new CControllerResponseData(['main_block' => json_encode($input, JSON_THROW_ON_ERROR)]))->disableView()
+ );
}
}
diff --git a/ui/app/controllers/CControllerWidgetTopHostsView.php b/ui/widgets/tophosts/actions/WidgetView.php
index 1eed40c3514..8c9596ba6ef 100644
--- a/ui/app/controllers/CControllerWidgetTopHostsView.php
+++ b/ui/widgets/tophosts/actions/WidgetView.php
@@ -19,51 +19,50 @@
**/
-class CControllerWidgetTopHostsView extends CControllerWidget {
+namespace Widgets\TopHosts\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CHousekeepingHelper,
+ CMacrosResolverHelper,
+ CNumberParser,
+ CParser,
+ CSettingsHelper,
+ Manager;
- $this->setType(WIDGET_TOP_HOSTS);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
+use Widgets\TopHosts\Widget;
+
+use Zabbix\Widgets\Fields\CWidgetFieldColumnsList;
+
+class WidgetView extends CControllerDashboardWidgetView {
- protected function doAction() {
+ protected function doAction(): void {
$data = [
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'user' => [
'debug_mode' => $this->getDebugMode()
]
];
- $data += self::getData($this->getForm()->getFieldsData());
+ $data += $this->getData();
$this->setResponse(new CControllerResponseData($data));
}
- /**
- * @param array $fields
- *
- * @throws Exception
- *
- * @return array
- */
- private static function getData(array $fields): array {
- $configuration = $fields['columns'];
+ private function getData(): array {
+ $configuration = $this->fields_values['columns'];
- $groupids = $fields['groupids'] ? getSubGroups($fields['groupids']) : null;
- $hostids = $fields['hostids'] ?: null;
+ $groupids = $this->fields_values['groupids'] ? getSubGroups($this->fields_values['groupids']) : null;
+ $hostids = $this->fields_values['hostids'] ?: null;
- if (array_key_exists('tags', $fields)) {
+ if (array_key_exists('tags', $this->fields_values)) {
$hosts = API::Host()->get([
'output' => ['name'],
'groupids' => $groupids,
'hostids' => $hostids,
- 'evaltype' => $fields['evaltype'],
- 'tags' => $fields['tags'],
+ 'evaltype' => $this->fields_values['evaltype'],
+ 'tags' => $this->fields_values['tags'],
'monitored_hosts' => true,
'preservekeys' => true
]);
@@ -76,7 +75,7 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
$time_now = time();
- $master_column = $configuration[$fields['column']];
+ $master_column = $configuration[$this->fields_values['column']];
$master_items_only_numeric_allowed = self::isNumericOnlyColumn($master_column);
$master_items = self::getItems($master_column['item'], $master_items_only_numeric_allowed, $groupids, $hostids);
@@ -95,7 +94,7 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
}
);
- if ($fields['order'] == CWidgetFormTopHosts::ORDER_TOPN) {
+ if ($this->fields_values['order'] == Widget::ORDER_TOP_N) {
if ($master_items_only_numeric_present) {
arsort($master_item_values, SORT_NUMERIC);
@@ -118,7 +117,7 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
}
}
- $master_item_values = array_slice($master_item_values, 0, $fields['count'], true);
+ $master_item_values = array_slice($master_item_values, 0, $this->fields_values['count'], true);
$master_items = array_intersect_key($master_items, $master_item_values);
$master_hostids = [];
@@ -158,7 +157,7 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
unset($threshold);
}
- if ($column_index == $fields['column']) {
+ if ($column_index == $this->fields_values['column']) {
$column_items = $master_items;
$column_item_values = $master_item_values;
@@ -174,7 +173,7 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
}
else {
$numeric_only = self::isNumericOnlyColumn($column);
- $column_items = !$calc_extremes || $column['min'] !== '' && $column['max'] !== ''
+ $column_items = !$calc_extremes || ($column['min'] !== '' && $column['max'] !== '')
? self::getItems($column['item'], $numeric_only, $groupids, array_keys($master_hostids))
: self::getItems($column['item'], $numeric_only, $groupids, $hostids);
@@ -269,25 +268,12 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
];
}
- /**
- * @param array $column
- *
- * @return bool
- */
private static function isNumericOnlyColumn(array $column): bool {
return $column['aggregate_function'] != AGGREGATE_NONE
|| $column['display'] != CWidgetFieldColumnsList::DISPLAY_AS_IS
|| array_key_exists('thresholds', $column);
}
- /**
- * @param string $name
- * @param bool $numeric_only
- * @param array|null $groupids
- * @param array|null $hostids
- *
- * @return array
- */
private static function getItems(string $name, bool $numeric_only, ?array $groupids, ?array $hostids): array {
$items = API::Item()->get([
'output' => ['itemid', 'hostid', 'key_', 'history', 'trends', 'value_type', 'units'],
@@ -318,13 +304,6 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
return $items;
}
- /**
- * @param array $items
- * @param array $column
- * @param int $time_now
- *
- * @return array
- */
private static function getItemValues(array $items, array $column, int $time_now): array {
static $history_period;
@@ -387,14 +366,6 @@ class CControllerWidgetTopHostsView extends CControllerWidget {
return $result;
}
- /**
- * @param array $items
- * @param int $time_from
- * @param int $time_now
- * @param int $data_source
- *
- * @return void
- */
private static function addDataSource(array &$items, int $time_from, int $time_now, int $data_source): void {
if ($data_source == CWidgetFieldColumnsList::HISTORY_DATA_HISTORY
|| $data_source == CWidgetFieldColumnsList::HISTORY_DATA_TRENDS) {
diff --git a/ui/widgets/tophosts/includes/WidgetForm.php b/ui/widgets/tophosts/includes/WidgetForm.php
new file mode 100644
index 00000000000..633f6152c68
--- /dev/null
+++ b/ui/widgets/tophosts/includes/WidgetForm.php
@@ -0,0 +1,139 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2021 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\TopHosts\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldColumnsList,
+ CWidgetFieldIntegerBox,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldSelect,
+ CWidgetFieldTags
+};
+
+use Widgets\TopHosts\Widget;
+
+/**
+ * Top hosts data widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ private const DEFAULT_HOSTS_COUNT = 10;
+ private const DEFAULT_ORDER_COLUMN = 0;
+
+ private array $field_column_values = [];
+
+ protected function normalizeValues(array $values): array {
+ $values = self::convertDottedKeys($values);
+
+ if (array_key_exists('columnsthresholds', $values)) {
+ foreach ($values['columnsthresholds'] as $column_index => $fields) {
+ $values['columns'][$column_index]['thresholds'] = [];
+
+ foreach ($fields as $field_key => $field_values) {
+ foreach ($field_values as $value_index => $value) {
+ $values['columns'][$column_index]['thresholds'][$value_index][$field_key] = $value;
+ }
+ }
+ }
+ }
+
+ // Apply sortable changes to data.
+ if (array_key_exists('sortorder', $values)) {
+ if (array_key_exists('column', $values) && array_key_exists('columns', $values['sortorder'])) {
+ // Fix selected column index when columns were sorted.
+ $values['column'] = array_search($values['column'], $values['sortorder']['columns'], true);
+ }
+
+ foreach ($values['sortorder'] as $key => $sortorder) {
+ if (!array_key_exists($key, $values)) {
+ continue;
+ }
+
+ $sorted = [];
+
+ foreach ($sortorder as $index) {
+ $sorted[] = $values[$key][$index];
+ }
+
+ $values[$key] = $sorted;
+ }
+ }
+
+ if (array_key_exists('columns', $values)) {
+ foreach ($values['columns'] as $key => $value) {
+ if ($value['data'] == CWidgetFieldColumnsList::DATA_ITEM_VALUE) {
+ $this->field_column_values[$key] = ($value['name'] === '') ? $value['item'] : $value['name'];
+ }
+ }
+ }
+
+ return $values;
+ }
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Host tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags', '')
+ )
+ ->addField(
+ (new CWidgetFieldColumnsList('columns', _('Columns')))->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('order', _('Order'), [
+ Widget::ORDER_TOP_N => _('Top N'),
+ Widget::ORDER_BOTTOM_N => _('Bottom N')
+ ]))->setDefault(Widget::ORDER_TOP_N)
+ )
+ ->addField(
+ (new CWidgetFieldSelect('column', _('Order column'), $this->field_column_values))
+ ->setDefault($this->field_column_values
+ ? self::DEFAULT_ORDER_COLUMN
+ : CWidgetFieldSelect::DEFAULT_VALUE
+ )
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField(
+ (new CWidgetFieldIntegerBox('count', _('Host count'), ZBX_MIN_WIDGET_LINES, ZBX_MAX_WIDGET_LINES))
+ ->setDefault(self::DEFAULT_HOSTS_COUNT)
+ ->setFlags(CWidgetField::FLAG_LABEL_ASTERISK)
+ );
+ }
+}
diff --git a/ui/widgets/tophosts/manifest.json b/ui/widgets/tophosts/manifest.json
new file mode 100644
index 00000000000..6c5a3588431
--- /dev/null
+++ b/ui/widgets/tophosts/manifest.json
@@ -0,0 +1,19 @@
+{
+ "manifest_version": 2.0,
+ "id": "tophosts",
+ "type": "widget",
+ "name": "Top hosts",
+ "namespace": "TopHosts",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "actions": {
+ "widget.tophosts.view": {
+ "class": "WidgetView"
+ },
+ "widget.tophosts.column.edit": {
+ "class": "ColumnEdit",
+ "view": "column.edit",
+ "layout": "layout.json"
+ }
+ }
+}
diff --git a/ui/app/views/js/popup.tophosts.column.edit.js.php b/ui/widgets/tophosts/views/column.edit.js.php
index d11bc9eaac8..d9adf48cebf 100644
--- a/ui/app/views/js/popup.tophosts.column.edit.js.php
+++ b/ui/widgets/tophosts/views/column.edit.js.php
@@ -17,9 +17,12 @@
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
-?>
+use Zabbix\Widgets\Fields\CWidgetFieldColumnsList;
+
+?>
+
window.tophosts_column_edit_form = new class {
init({form_name, thresholds, thresholds_colors}) {
diff --git a/ui/app/views/popup.tophosts.column.edit.php b/ui/widgets/tophosts/views/column.edit.php
index 10739a1f874..b0d1fc47c6b 100644
--- a/ui/app/views/popup.tophosts.column.edit.php
+++ b/ui/widgets/tophosts/views/column.edit.php
@@ -24,6 +24,8 @@
* @var array $data
*/
+use Zabbix\Widgets\Fields\CWidgetFieldColumnsList;
+
$form = (new CForm())
->setName('tophosts_column')
->addStyle('display: none;')
@@ -73,8 +75,8 @@ $form_grid->addItem([
(new CLabel(_('Text'), 'text'))->setAsteriskMark(),
new CFormField(
(new CTextBox('text', $data['text']))
- ->setAttribute('placeholder', _('Text, supports {INVENTORY.*}, {HOST.*} macros'))
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH)
+ ->setAttribute('placeholder', _('Text, supports {INVENTORY.*}, {HOST.*} macros'))
)
]);
@@ -108,8 +110,8 @@ $form_grid->addItem([
new CLabel(_('Time shift'), 'timeshift'),
new CFormField(
(new CTextBox('timeshift', $data['timeshift']))
- ->setAttribute('placeholder', _('none'))
->setWidth(ZBX_TEXTAREA_TINY_WIDTH)
+ ->setAttribute('placeholder', _('none'))
)
]);
@@ -159,7 +161,7 @@ $form_grid->addItem([
->addValue(_('As is'), CWidgetFieldColumnsList::DISPLAY_AS_IS)
->addValue(_('Bar'), CWidgetFieldColumnsList::DISPLAY_BAR)
->addValue(_('Indicators'), CWidgetFieldColumnsList::DISPLAY_INDICATORS)
- ->setModern(true)
+ ->setModern()
)
]);
@@ -176,7 +178,7 @@ $form_grid->addItem([
->addValue(_('Auto'), CWidgetFieldColumnsList::HISTORY_DATA_AUTO)
->addValue(_('History'), CWidgetFieldColumnsList::HISTORY_DATA_HISTORY)
->addValue(_('Trends'), CWidgetFieldColumnsList::HISTORY_DATA_TRENDS)
- ->setModern(true)
+ ->setModern()
)
]);
@@ -191,8 +193,8 @@ $form_grid->addItem([
new CLabel(_('Min'), 'min'),
new CFormField(
(new CTextBox('min', $data['min']))
- ->setAttribute('placeholder', _('calculated'))
->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
+ ->setAttribute('placeholder', _('calculated'))
)
]);
@@ -201,8 +203,8 @@ $form_grid->addItem([
new CLabel(_('Max'), 'max'),
new CFormField(
(new CTextBox('max', $data['max']))
- ->setAttribute('placeholder', _('calculated'))
->setWidth(ZBX_TEXTAREA_FILTER_SMALL_WIDTH)
+ ->setAttribute('placeholder', _('calculated'))
)
]);
@@ -230,7 +232,7 @@ $thresholds = (new CDiv(
->setWidth(ZBX_TEXTAREA_STANDARD_WIDTH);
$thresholds->addItem(
- (new CScriptTemplate('thresholds-row-tmpl'))
+ (new CTemplateTag('thresholds-row-tmpl'))
->addItem((new CRow([
(new CColor('thresholds[#{rowNum}][color]', '#{color}'))->appendColorPickerJs(false),
(new CTextBox('thresholds[#{rowNum}][threshold]', '#{threshold}', false))
@@ -255,16 +257,16 @@ $form
->addItem(
(new CScriptTag('
tophosts_column_edit_form.init('.json_encode([
- 'form_name' => $form->getName(),
- 'thresholds' => $data['thresholds'],
- 'thresholds_colors' => $data['thresholds_colors']
- ]).');
+ 'form_name' => $form->getName(),
+ 'thresholds' => $data['thresholds'],
+ 'thresholds_colors' => $data['thresholds_colors']
+ ], JSON_THROW_ON_ERROR).');
'))->setOnDocumentReady()
);
$output = [
'header' => array_key_exists('edit', $data) ? _('Update column') : _('New column'),
- 'script_inline' => implode('', $scripts).$this->readJsFile('popup.tophosts.column.edit.js.php'),
+ 'script_inline' => implode('', $scripts).$this->readJsFile('column.edit.js.php', null, ''),
'body' => $form->toString(),
'buttons' => [
[
@@ -281,4 +283,4 @@ if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
$output['debug'] = CProfiler::getInstance()->make()->toString();
}
-echo json_encode($output);
+echo json_encode($output, JSON_THROW_ON_ERROR);
diff --git a/ui/include/classes/widgets/views/js/widget.tophosts.form.view.js.php b/ui/widgets/tophosts/views/widget.edit.js.php
index ab39855b96e..5139a711209 100644
--- a/ui/include/classes/widgets/views/js/widget.tophosts.form.view.js.php
+++ b/ui/widgets/tophosts/views/widget.edit.js.php
@@ -22,8 +22,9 @@
window.widget_tophosts_form = new class {
- init(options) {
- this._form = document.getElementById(options.form_id);
+ init() {
+ this._form = document.getElementById('widget-dialogue-form');
+
this._list_columns = document.getElementById('list_columns');
this.initSortable(this._list_columns);
@@ -79,7 +80,7 @@ window.widget_tophosts_form = new class {
case 'add':
this._column_index = this._list_columns.querySelectorAll('tr').length;
- column_popup = PopUp('popup.tophosts.column.edit', {}).$dialogue[0];
+ column_popup = PopUp('widget.tophosts.column.edit', {}).$dialogue[0];
column_popup.addEventListener('dialogue.submit', (e) => this.updateColumns(e));
column_popup.addEventListener('overlay.close', this.removeColorpicker);
break;
@@ -89,7 +90,7 @@ window.widget_tophosts_form = new class {
this._column_index = target.closest('tr').querySelector('[name="sortorder[columns][]"]').value;
- column_popup = PopUp('popup.tophosts.column.edit',
+ column_popup = PopUp('widget.tophosts.column.edit',
{...form_fields.columns[this._column_index], edit: 1}).$dialogue[0];
column_popup.addEventListener('dialogue.submit', (e) => this.updateColumns(e));
column_popup.addEventListener('overlay.close', this.removeColorpicker);
@@ -142,7 +143,7 @@ window.widget_tophosts_form = new class {
ZABBIX.Dashboard.reloadWidgetProperties();
}
- // Need to remove function after subpopups auto close.
+ // Need to remove function after sub-popups auto close.
removeColorpicker() {
$('#color_picker').hide();
}
diff --git a/ui/widgets/tophosts/views/widget.edit.php b/ui/widgets/tophosts/views/widget.edit.php
new file mode 100644
index 00000000000..97d2f27ffab
--- /dev/null
+++ b/ui/widgets/tophosts/views/widget.edit.php
@@ -0,0 +1,85 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Top hosts widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldColumnsList,
+ CWidgetFieldSelect
+};
+
+$form = (new CWidgetFormView($data));
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+$form
+ ->addField($groupids)
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addItem(
+ getColumnsField($form, $data['fields']['columns'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['order'])
+ )
+ ->addItem(
+ getColumnField($form, $data['fields']['column'])
+ )
+ ->addField(
+ new CWidgetFieldIntegerBoxView($data['fields']['count'])
+ )
+ ->includeJsFile('widget.edit.js.php')
+ ->addJavaScript('widget_tophosts_form.init();')
+ ->show();
+
+function getColumnsField(CWidgetFormView $form, CWidgetFieldColumnsList $field): array {
+ $columns = new CWidgetFieldColumnsListView($field);
+
+ return $form->makeCustomField($columns, [
+ $columns->getLabel(),
+ (new CFormField($columns->getView()))->addClass(ZBX_STYLE_TABLE_FORMS_SEPARATOR)
+ ]);
+}
+
+function getColumnField(CWidgetFormView $form, CWidgetFieldSelect $field): array {
+ $column = new CWidgetFieldSelectView($field);
+
+ return $form->makeCustomField($column, [
+ $column->getLabel(),
+ (new CFormField($field->getValues() ? $column->getView() : _('Add item column')))
+ ->addClass($column->isDisabled() ? ZBX_STYLE_DISABLED : null)
+ ]);
+}
diff --git a/ui/app/views/monitoring.widget.tophosts.view.php b/ui/widgets/tophosts/views/widget.view.php
index d353b2522dc..463f3672bf5 100644
--- a/ui/app/views/monitoring.widget.tophosts.view.php
+++ b/ui/widgets/tophosts/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2021 Zabbix SIA
@@ -20,10 +20,16 @@
/**
+ * Top hosts widget view.
+ *
* @var CView $this
* @var array $data
*/
+use Widgets\TopHosts\Widget;
+
+use Zabbix\Widgets\Fields\CWidgetFieldColumnsList;
+
$header = [];
foreach ($data['configuration'] as $column_config) {
@@ -108,7 +114,7 @@ foreach ($data['rows'] as $columns) {
->setValue($column['value'])
->setAttribute('fill', $column_config['base_color'] !== ''
? '#'.$column_config['base_color']
- : ZBX_WIDGET_TOP_HOSTS_DEFAULT_FILL
+ : Widget::DEFAULT_FILL
)
->setAttribute('min', $column_config['min'])
->setAttribute('max', $column_config['max']);
@@ -142,20 +148,6 @@ foreach ($data['rows'] as $columns) {
$table->addRow($row);
}
-$output = [
- 'name' => $data['name'],
- 'body' => (new CDiv($table))
- ->addClass('dashboard-widget-tophosts')
- ->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();
diff --git a/ui/widgets/trigover/Widget.php b/ui/widgets/trigover/Widget.php
new file mode 100644
index 00000000000..a892ea2c087
--- /dev/null
+++ b/ui/widgets/trigover/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\TrigOver;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Trigger overview');
+ }
+}
diff --git a/ui/widgets/trigover/actions/WidgetView.php b/ui/widgets/trigover/actions/WidgetView.php
new file mode 100644
index 00000000000..064615dcf90
--- /dev/null
+++ b/ui/widgets/trigover/actions/WidgetView.php
@@ -0,0 +1,78 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\TrigOver\Actions;
+
+use CControllerDashboardWidgetView,
+ CControllerResponseData;
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
+ 'initial_load' => 'in 0,1'
+ ]);
+ }
+
+ protected function doAction(): void {
+ $data = [
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
+ 'initial_load' => (bool) $this->getInput('initial_load', 0),
+ 'style' => $this->fields_values['style'],
+ 'user' => [
+ 'debug_mode' => $this->getDebugMode()
+ ]
+ ];
+
+ $trigger_options = [
+ 'skipDependent' => ($this->fields_values['show'] == TRIGGERS_OPTION_ALL) ? null : true,
+ 'only_true' => $this->fields_values['show'] == TRIGGERS_OPTION_RECENT_PROBLEM ? true : null,
+ 'filter' => [
+ 'value' => $this->fields_values['show'] == TRIGGERS_OPTION_IN_PROBLEM ? TRIGGER_VALUE_TRUE : null
+ ]
+ ];
+
+ $problem_options = [
+ 'show_suppressed' => $this->fields_values['show_suppressed'],
+ 'show_recent' => $this->fields_values['show'] == TRIGGERS_OPTION_RECENT_PROBLEM ? true : null,
+ 'tags' => array_key_exists('tags', $this->fields_values) && $this->fields_values['tags']
+ ? $this->fields_values['tags']
+ : null,
+ 'evaltype' => array_key_exists('evaltype', $this->fields_values)
+ ? $this->fields_values['evaltype']
+ : TAG_EVAL_TYPE_AND_OR
+ ];
+
+ $host_options = [
+ 'hostids' => $this->fields_values['hostids'] ?: null
+ ];
+
+ [$data['db_hosts'], $data['db_triggers'], $data['dependencies'], $data['triggers_by_name'],
+ $data['hosts_by_name'], $data['exceeded_limit']
+ ] = getTriggersOverviewData(getSubGroups($this->fields_values['groupids']), $host_options, $trigger_options,
+ $problem_options
+ );
+
+ $this->setResponse(new CControllerResponseData($data));
+ }
+}
diff --git a/ui/js/widgets/class.widget.trigerover.js b/ui/widgets/trigover/assets/js/class.widget.js
index 3db90c588e9..3db90c588e9 100644
--- a/ui/js/widgets/class.widget.trigerover.js
+++ b/ui/widgets/trigover/assets/js/class.widget.js
diff --git a/ui/widgets/trigover/includes/WidgetForm.php b/ui/widgets/trigover/includes/WidgetForm.php
new file mode 100644
index 00000000000..a8fdde27a12
--- /dev/null
+++ b/ui/widgets/trigover/includes/WidgetForm.php
@@ -0,0 +1,73 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\TrigOver\Includes;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldTags
+};
+
+/**
+ * Trigger overview widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldRadioButtonList('show', _('Show'), [
+ TRIGGERS_OPTION_RECENT_PROBLEM => _('Recent problems'),
+ TRIGGERS_OPTION_IN_PROBLEM => _('Problems'),
+ TRIGGERS_OPTION_ALL => _('Any')
+ ]))->setDefault(TRIGGERS_OPTION_RECENT_PROBLEM)
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags')
+ )
+ ->addField(
+ new CWidgetFieldCheckBox('show_suppressed', _('Show suppressed problems'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('style', _('Hosts location'), [
+ STYLE_LEFT => _('Left'),
+ STYLE_TOP => _('Top')
+ ]))->setDefault(STYLE_LEFT)
+ );
+ }
+}
diff --git a/ui/widgets/trigover/manifest.json b/ui/widgets/trigover/manifest.json
new file mode 100644
index 00000000000..2d5d8790dfc
--- /dev/null
+++ b/ui/widgets/trigover/manifest.json
@@ -0,0 +1,20 @@
+{
+ "manifest_version": 2.0,
+ "id": "trigover",
+ "type": "widget",
+ "name": "Trigger overview",
+ "namespace": "TrigOver",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "js_class": "CWidgetTrigerOver"
+ },
+ "actions": {
+ "widget.trigover.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/app/partials/trigoverview.table.left.php b/ui/widgets/trigover/partials/table.left.php
index 58e34cea1bd..58e34cea1bd 100644
--- a/ui/app/partials/trigoverview.table.left.php
+++ b/ui/widgets/trigover/partials/table.left.php
diff --git a/ui/app/partials/trigoverview.table.top.php b/ui/widgets/trigover/partials/table.top.php
index 126d6b8ccb8..126d6b8ccb8 100644
--- a/ui/app/partials/trigoverview.table.top.php
+++ b/ui/widgets/trigover/partials/table.top.php
diff --git a/ui/widgets/trigover/views/widget.edit.php b/ui/widgets/trigover/views/widget.edit.php
new file mode 100644
index 00000000000..bc4354d2908
--- /dev/null
+++ b/ui/widgets/trigover/views/widget.edit.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Trigger overview widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['show'])
+ )
+ ->addField($groupids)
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['show_suppressed'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['style'])
+ )
+ ->show();
diff --git a/ui/widgets/trigover/views/widget.view.php b/ui/widgets/trigover/views/widget.view.php
new file mode 100644
index 00000000000..fa0322e0084
--- /dev/null
+++ b/ui/widgets/trigover/views/widget.view.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Trigger overview widget view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+(new CWidgetView($data))
+ ->addItem($data['style'] == STYLE_TOP
+ ? (new CPartial('table.top', $data))->getOutput()
+ : (new CPartial('table.left', $data))->getOutput()
+ )
+ ->show();
diff --git a/ui/widgets/url/Widget.php b/ui/widgets/url/Widget.php
new file mode 100644
index 00000000000..59d6459cd13
--- /dev/null
+++ b/ui/widgets/url/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Url;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('URL');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetUrlView.php b/ui/widgets/url/actions/WidgetView.php
index e09881d5dd1..0a3df77d9c7 100644
--- a/ui/app/controllers/CControllerWidgetUrlView.php
+++ b/ui/widgets/url/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,31 +19,37 @@
**/
-class CControllerWidgetUrlView extends CControllerWidget {
+namespace Widgets\Url\Actions;
- public function __construct() {
- parent::__construct();
+use CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CHtmlUrlValidator,
+ CMacrosResolverHelper,
+ CSettingsHelper;
- $this->setType(WIDGET_URL);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json',
+use Zabbix\Core\CWidget;
+
+class WidgetView extends CControllerDashboardWidgetView {
+
+ protected function init(): void {
+ parent::init();
+
+ $this->addValidationRules([
'dynamic_hostid' => 'db hosts.hostid'
]);
}
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
+ protected function doAction(): void {
$error = null;
- $is_template_dashboard = ($this->getContext() === CWidgetConfig::CONTEXT_TEMPLATE_DASHBOARD);
+ $is_template_dashboard = $this->hasInput('templateid');
// Editing template dashboard?
if ($is_template_dashboard && !$this->hasInput('dynamic_hostid')) {
$error = _('No data.');
}
else {
- $is_dynamic_item = ($is_template_dashboard || $fields['dynamic'] == WIDGET_DYNAMIC_ITEM);
+ $is_dynamic_item = ($is_template_dashboard || $this->fields_values['dynamic'] == CWidget::DYNAMIC_ITEM);
$dynamic_hostid = $this->getInput('dynamic_hostid', '0');
@@ -53,22 +59,24 @@ class CControllerWidgetUrlView extends CControllerWidget {
else {
$resolved_url = CMacrosResolverHelper::resolveWidgetURL([
'config' => $is_dynamic_item ? 'widgetURL' : 'widgetURLUser',
- 'url' => $fields['url'],
+ 'url' => $this->fields_values['url'],
'hostid' => $is_dynamic_item ? $dynamic_hostid : '0'
]);
- $fields['url'] = $resolved_url ? $resolved_url : $fields['url'];
+ if ($resolved_url) {
+ $this->fields_values['url'] = $resolved_url;
+ }
}
- if (!$error && !CHtmlUrlValidator::validate($fields['url'], ['allow_user_macro' => false])) {
- $error = _s('Provided URL "%1$s" is invalid.', $fields['url']);
+ if (!$error && !CHtmlUrlValidator::validate($this->fields_values['url'], ['allow_user_macro' => false])) {
+ $error = _s('Provided URL "%1$s" is invalid.', $this->fields_values['url']);
}
}
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'url' => [
- 'url' => $fields['url'],
+ 'url' => $this->fields_values['url'],
'error' => $error
],
'user' => [
diff --git a/ui/widgets/url/assets/js/class.widget.js b/ui/widgets/url/assets/js/class.widget.js
new file mode 100644
index 00000000000..2bbc25468ed
--- /dev/null
+++ b/ui/widgets/url/assets/js/class.widget.js
@@ -0,0 +1,26 @@
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+class CWidgetUrl extends CWidget {
+
+ _hasPadding() {
+ return false;
+ }
+}
diff --git a/ui/widgets/url/includes/WidgetForm.php b/ui/widgets/url/includes/WidgetForm.php
new file mode 100644
index 00000000000..5227ba8c6af
--- /dev/null
+++ b/ui/widgets/url/includes/WidgetForm.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Url\Includes;
+
+use Zabbix\Widgets\{
+ CWidgetField,
+ CWidgetForm
+};
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldUrl
+};
+
+/**
+ * URL widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ (new CWidgetFieldUrl('url', _('URL')))
+ ->setFlags(CWidgetField::FLAG_NOT_EMPTY | CWidgetField::FLAG_LABEL_ASTERISK)
+ )
+ ->addField($this->templateid === null
+ ? new CWidgetFieldCheckBox('dynamic', _('Enable host selection'))
+ : null
+ );
+ }
+}
diff --git a/ui/widgets/url/manifest.json b/ui/widgets/url/manifest.json
new file mode 100644
index 00000000000..59136ce0320
--- /dev/null
+++ b/ui/widgets/url/manifest.json
@@ -0,0 +1,22 @@
+{
+ "manifest_version": 2.0,
+ "id": "url",
+ "type": "widget",
+ "name": "URL",
+ "namespace": "Url",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "js_class": "CWidgetUrl",
+ "template_support": true,
+ "refresh_rate": 0
+ },
+ "actions": {
+ "widget.url.view": {
+ "class": "WidgetView"
+ }
+ },
+ "assets": {
+ "js": ["class.widget.js"]
+ }
+}
diff --git a/ui/include/classes/widgets/views/widget.favgraphs.form.view.php b/ui/widgets/url/views/widget.edit.php
index f2c89a24dae..acce744eedd 100644
--- a/ui/include/classes/widgets/views/widget.favgraphs.form.view.php
+++ b/ui/widgets/url/views/widget.edit.php
@@ -20,23 +20,18 @@
/**
- * Favorite graphs widget form view.
+ * URL widget form view.
*
* @var CView $this
* @var array $data
*/
-$fields = $data['dialogue']['fields'];
-
-$form = CWidgetHelper::createForm();
-
-$form_grid = CWidgetHelper::createFormGrid($data['dialogue']['name'], $data['dialogue']['type'],
- $data['dialogue']['view_mode'], $data['known_widget_types'],
- $data['templateid'] === null ? $fields['rf_rate'] : null
-);
-
-$form->addItem($form_grid);
-
-return [
- 'form' => $form
-];
+(new CWidgetFormView($data))
+ ->addField(
+ new CWidgetFieldUrlView($data['fields']['url'])
+ )
+ ->addField(array_key_exists('dynamic', $data['fields'])
+ ? new CWidgetFieldCheckBoxView($data['fields']['dynamic'])
+ : null
+ )
+ ->show();
diff --git a/ui/app/views/monitoring.widget.url.view.php b/ui/widgets/url/views/widget.view.php
index 6543fac574c..f9ad0e05158 100644
--- a/ui/app/views/monitoring.widget.url.view.php
+++ b/ui/widgets/url/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,7 +20,10 @@
/**
+ * URL widget form view.
+ *
* @var CView $this
+ * @var array $data
*/
if ($data['url']['error'] !== null) {
@@ -34,18 +37,6 @@ else {
}
}
-$output = [
- 'name' => $data['name'],
- 'body' => $item->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($item)
+ ->show();
diff --git a/ui/widgets/web/Widget.php b/ui/widgets/web/Widget.php
new file mode 100644
index 00000000000..2876651451b
--- /dev/null
+++ b/ui/widgets/web/Widget.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Web;
+
+use Zabbix\Core\CWidget;
+
+class Widget extends CWidget {
+
+ public function getDefaultName(): string {
+ return _('Web monitoring');
+ }
+}
diff --git a/ui/app/controllers/CControllerWidgetWebView.php b/ui/widgets/web/actions/WidgetView.php
index 2ba1f59accc..dc13e46a1df 100644
--- a/ui/app/controllers/CControllerWidgetWebView.php
+++ b/ui/widgets/web/actions/WidgetView.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -19,29 +19,28 @@
**/
-class CControllerWidgetWebView extends CControllerWidget {
+namespace Widgets\Web\Actions;
- public function __construct() {
- parent::__construct();
+use API,
+ CApiTagHelper,
+ CArrayHelper,
+ CControllerDashboardWidgetView,
+ CControllerResponseData,
+ CRoleHelper,
+ Manager;
- $this->setType(WIDGET_WEB);
- $this->setValidationRules([
- 'name' => 'string',
- 'fields' => 'json'
- ]);
- }
+class WidgetView extends CControllerDashboardWidgetView {
- protected function doAction() {
- $fields = $this->getForm()->getFieldsData();
+ protected function doAction(): void {
+ $filter_groupids = $this->fields_values['groupids'] ? getSubGroups($this->fields_values['groupids']) : null;
+ $filter_hostids = $this->fields_values['hostids'] ?: null;
+ $filter_maintenance = ($this->fields_values['maintenance'] == 0) ? 0 : null;
- $filter_groupids = $fields['groupids'] ? getSubGroups($fields['groupids']) : null;
- $filter_hostids = $fields['hostids'] ? $fields['hostids'] : null;
- $filter_maintenance = ($fields['maintenance'] == 0) ? 0 : null;
-
- if ($fields['exclude_groupids']) {
- $exclude_groupids = getSubGroups($fields['exclude_groupids']);
+ if ($this->fields_values['exclude_groupids']) {
+ $exclude_groupids = getSubGroups($this->fields_values['exclude_groupids']);
if ($filter_hostids === null) {
+
// Get all groups if no selected groups defined.
if ($filter_groupids === null) {
$filter_groupids = array_keys(API::HostGroup()->get([
@@ -98,11 +97,13 @@ class CControllerWidgetWebView extends CControllerWidget {
unset($group);
// Fetch links between HTTP tests and host groups.
- $where_tags = (array_key_exists('tags', $fields) && $fields['tags'])
- ? CApiTagHelper::addWhereCondition($fields['tags'], $fields['evaltype'], 'ht', 'httptest_tag', 'httptestid')
+ $where_tags = (array_key_exists('tags', $this->fields_values) && $this->fields_values['tags'])
+ ? CApiTagHelper::addWhereCondition($this->fields_values['tags'], $this->fields_values['evaltype'], 'ht',
+ 'httptest_tag', 'httptestid'
+ )
: '';
- $result = DbFetchArray(DBselect($s=
+ $result = DbFetchArray(DBselect(
'SELECT DISTINCT ht.httptestid,hg.groupid'.
' FROM httptest ht,hosts_groups hg'.
' WHERE ht.hostid=hg.hostid'.
@@ -113,7 +114,7 @@ class CControllerWidgetWebView extends CControllerWidget {
));
// Fetch HTTP test execution data.
- $httptest_data = Manager::HttpTest()->getLastData(zbx_objectValues($result, 'httptestid'));
+ $httptest_data = Manager::HttpTest()->getLastData(array_column($result, 'httptestid'));
foreach ($result as $row) {
$group = &$groups[$row['groupid']];
@@ -129,7 +130,7 @@ class CControllerWidgetWebView extends CControllerWidget {
}
$this->setResponse(new CControllerResponseData([
- 'name' => $this->getInput('name', $this->getDefaultName()),
+ 'name' => $this->getInput('name', $this->widget->getDefaultName()),
'groups' => $groups,
'user' => [
'debug_mode' => $this->getDebugMode()
diff --git a/ui/widgets/web/includes/WidgetForm.php b/ui/widgets/web/includes/WidgetForm.php
new file mode 100644
index 00000000000..66c5e4dc40b
--- /dev/null
+++ b/ui/widgets/web/includes/WidgetForm.php
@@ -0,0 +1,63 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+namespace Widgets\Web\Includes;
+
+use Zabbix\Widgets\CWidgetForm;
+
+use Zabbix\Widgets\Fields\{
+ CWidgetFieldCheckBox,
+ CWidgetFieldMultiSelectGroup,
+ CWidgetFieldMultiSelectHost,
+ CWidgetFieldRadioButtonList,
+ CWidgetFieldTags
+};
+
+/**
+ * Web monitoring widget form.
+ */
+class WidgetForm extends CWidgetForm {
+
+ public function addFields(): self {
+ return $this
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('groupids', _('Host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectGroup('exclude_groupids', _('Exclude host groups'))
+ )
+ ->addField(
+ new CWidgetFieldMultiSelectHost('hostids', _('Hosts'))
+ )
+ ->addField(
+ (new CWidgetFieldRadioButtonList('evaltype', _('Tags'), [
+ TAG_EVAL_TYPE_AND_OR => _('And/Or'),
+ TAG_EVAL_TYPE_OR => _('Or')
+ ]))->setDefault(TAG_EVAL_TYPE_AND_OR)
+ )
+ ->addField(
+ new CWidgetFieldTags('tags')
+ )
+ ->addField(
+ (new CWidgetFieldCheckBox('maintenance', _('Show hosts in maintenance')))->setDefault(1)
+ );
+ }
+}
diff --git a/ui/widgets/web/manifest.json b/ui/widgets/web/manifest.json
new file mode 100644
index 00000000000..590188825a3
--- /dev/null
+++ b/ui/widgets/web/manifest.json
@@ -0,0 +1,20 @@
+{
+ "manifest_version": 2.0,
+ "id": "web",
+ "type": "widget",
+ "name": "Web monitoring",
+ "namespace": "Web",
+ "version": "1.0",
+ "author": "Zabbix SIA",
+ "widget": {
+ "size": {
+ "width": 6,
+ "height": 3
+ }
+ },
+ "actions": {
+ "widget.web.view": {
+ "class": "WidgetView"
+ }
+ }
+}
diff --git a/ui/widgets/web/views/widget.edit.php b/ui/widgets/web/views/widget.edit.php
new file mode 100644
index 00000000000..f49a111499f
--- /dev/null
+++ b/ui/widgets/web/views/widget.edit.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types = 0);
+/*
+** Zabbix
+** Copyright (C) 2001-2022 Zabbix SIA
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+**/
+
+
+/**
+ * Web monitoring widget form view.
+ *
+ * @var CView $this
+ * @var array $data
+ */
+
+$groupids = new CWidgetFieldMultiSelectGroupView($data['fields']['groupids'],
+ $data['captions']['ms']['groups']['groupids']
+);
+
+(new CWidgetFormView($data))
+ ->addField($groupids)
+ ->addField(
+ new CWidgetFieldMultiSelectGroupView($data['fields']['exclude_groupids'],
+ $data['captions']['ms']['groups']['exclude_groupids']
+ )
+ )
+ ->addField(
+ (new CWidgetFieldMultiSelectHostView($data['fields']['hostids'], $data['captions']['ms']['hosts']['hostids']))
+ ->setFilterPreselect(['id' => $groupids->getId(), 'submit_as' => 'groupid'])
+ )
+ ->addField(
+ new CWidgetFieldRadioButtonListView($data['fields']['evaltype'])
+ )
+ ->addField(
+ new CWidgetFieldTagsView($data['fields']['tags'])
+ )
+ ->addField(
+ new CWidgetFieldCheckBoxView($data['fields']['maintenance'])
+ )
+ ->show();
diff --git a/ui/app/views/monitoring.widget.web.view.php b/ui/widgets/web/views/widget.view.php
index dd4297af86e..d9d00083f69 100644
--- a/ui/app/views/monitoring.widget.web.view.php
+++ b/ui/widgets/web/views/widget.view.php
@@ -1,4 +1,4 @@
-<?php
+<?php declare(strict_types = 0);
/*
** Zabbix
** Copyright (C) 2001-2022 Zabbix SIA
@@ -20,6 +20,8 @@
/**
+ * Web monitoring widget view.
+ *
* @var CView $this
* @var array $data
*/
@@ -53,24 +55,12 @@ foreach ($data['groups'] as $group) {
$table->addRow([
$group_name,
- ($group['ok'] != 0) ? (new CSpan($group['ok']))->addClass(ZBX_STYLE_GREEN) : '',
- ($group['failed'] != 0) ? (new CSpan($group['failed']))->addClass(ZBX_STYLE_RED) : '',
- ($group['unknown'] != 0) ? (new CSpan($group['unknown']))->addClass(ZBX_STYLE_GREY) : ''
+ $group['ok'] != 0 ? (new CSpan($group['ok']))->addClass(ZBX_STYLE_GREEN) : '',
+ $group['failed'] != 0 ? (new CSpan($group['failed']))->addClass(ZBX_STYLE_RED) : '',
+ $group['unknown'] != 0 ? (new CSpan($group['unknown']))->addClass(ZBX_STYLE_GREY) : ''
]);
}
-$output = [
- 'name' => $data['name'],
- 'body' => $table->toString()
-];
-
-if ($messages = get_and_clear_messages()) {
- $output['messages'] = array_column($messages, 'message');
-}
-
-if ($data['user']['debug_mode'] == GROUP_DEBUG_MODE_ENABLED) {
- CProfiler::getInstance()->stop();
- $output['debug'] = CProfiler::getInstance()->make()->toString();
-}
-
-echo json_encode($output);
+(new CWidgetView($data))
+ ->addItem($table)
+ ->show();